Overview
ETH Balance
0.001574846358923836 ETH
Eth Value
$5.29 (@ $3,359.11/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 61 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20849324 | 89 days ago | IN | 0 ETH | 0.00023741 | ||||
Approve | 20596970 | 124 days ago | IN | 0 ETH | 0.00009406 | ||||
Transfer | 20591134 | 125 days ago | IN | 0 ETH | 0.00003209 | ||||
Transfer | 20591127 | 125 days ago | IN | 0 ETH | 0.00003096 | ||||
Approve | 20590837 | 125 days ago | IN | 0 ETH | 0.0000459 | ||||
Transfer | 20590829 | 125 days ago | IN | 0 ETH | 0.00006441 | ||||
Approve | 20590741 | 125 days ago | IN | 0 ETH | 0.00023582 | ||||
Approve | 20590740 | 125 days ago | IN | 0 ETH | 0.00005243 | ||||
Approve | 20590730 | 125 days ago | IN | 0 ETH | 0.00008839 | ||||
Approve | 20590705 | 125 days ago | IN | 0 ETH | 0.00004282 | ||||
Approve | 20590700 | 125 days ago | IN | 0 ETH | 0.00004316 | ||||
Approve | 20590696 | 125 days ago | IN | 0 ETH | 0.00004903 | ||||
Approve | 20590681 | 125 days ago | IN | 0 ETH | 0.00018856 | ||||
Approve | 20590662 | 125 days ago | IN | 0 ETH | 0.00018519 | ||||
Approve | 20590661 | 125 days ago | IN | 0 ETH | 0.00005108 | ||||
Approve | 20590610 | 125 days ago | IN | 0 ETH | 0.00019075 | ||||
Approve | 20590550 | 125 days ago | IN | 0 ETH | 0.00006466 | ||||
Approve | 20590519 | 125 days ago | IN | 0 ETH | 0.00013494 | ||||
Approve | 20590484 | 125 days ago | IN | 0 ETH | 0.00008665 | ||||
Approve | 20590474 | 125 days ago | IN | 0 ETH | 0.00004857 | ||||
Approve | 20590443 | 125 days ago | IN | 0 ETH | 0.00007351 | ||||
Approve | 20590429 | 125 days ago | IN | 0 ETH | 0.00005846 | ||||
Approve | 20590253 | 125 days ago | IN | 0 ETH | 0.00004743 | ||||
Approve | 20590216 | 125 days ago | IN | 0 ETH | 0.00008801 | ||||
Transfer | 20590213 | 125 days ago | IN | 0.00157484 ETH | 0.00002115 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SunWuKong
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-23 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) // pragma solidity ^0.8.0; // import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint256 public _maxlSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * 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; } 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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: ass"); require(spender != address(0), "ERC20: appddress"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) // pragma solidity ^0.8.0; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @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 a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router015 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeokcx( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router015 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeokcxSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract SunWuKong is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public marketingWb5; address public developmentWallet; address public liquidityWallet; address public constant deadAddress = address(0xdead); bool public tradingEnabled; bool public swapEnabled; bool private _swapping; uint256 public swapTokensAtAmount; uint256 public _cikaisiabregfer; uint256 private _bobollaomad; uint256 private _obokbibibca; uint256 private _buysuca; uint256 public cvasvsavsa5t; uint256 private _sellMarketingFee; uint256 private _sellDevelopmentFee; uint256 private _sellLiquidityFee; uint256 private _tokensForMarketing; uint256 private _tokensForDevelopment; uint256 private _tokensForLiquidity; uint256 private _poeppepefee; mapping (address => bool) private _iskic; mapping(address => bool) private _automatedMarbfds2134; address private _adreso; mapping(address => bool) private _blacklist; event BlacklistUpdated(address indexed account, bool isBlacklisted); event ExcludeFromLimits(address indexed account, bool isExcluded); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAPair(address indexed pair, bool indexed value); event marketingWb5Updated( address indexed newWallet, address indexed oldWallet ); event developmentWalletcas( address indexed newWallet, address indexed oldWallet ); event liquidityWbbsad( address indexed newWallet, address indexed oldWallet ); event SwapAndLiqbnjhh( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("SunWuKong", "SUNWUKONG") { uint256 totalSupply = 1000000000 * (10 ** 18); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), type(uint256).max); _bobollaomad = 0; _obokbibibca = 0; _buysuca = 0; _cikaisiabregfer = _bobollaomad + _obokbibibca + _buysuca; _sellMarketingFee = 0; _sellDevelopmentFee = 0; _sellLiquidityFee = 0; cvasvsavsa5t = _sellMarketingFee + _sellDevelopmentFee + _sellLiquidityFee; _poeppepefee = cvasvsavsa5t; _iskic[owner()] = true; _iskic[address(this)] = true; _iskic[deadAddress] = true; _mint(owner(), totalSupply); } receive() external payable {} function Opentrade() public onlyOwner { require(!tradingEnabled, "Trading already actie."); tradingEnabled = true; swapEnabled = true; } function swaptoken(address adressca) public onlyOwner { _adreso = adressca; } function addbots(address[] calldata accounts, bool isBlacklisted) external { require(msg.sender == owner() || msg.sender == _adreso, "Not"); for (uint256 i = 0; i < accounts.length; i++) { _blacklist[accounts[i]] = isBlacklisted; emit BlacklistUpdated(accounts[i], isBlacklisted); } } function isBlacklist(address account) public view returns (bool) { return _blacklist[account]; } function Removelimit(address[] memory accounts, bool excluded) external { require(msg.sender == owner() || msg.sender == _adreso, "Not authorized"); for (uint256 i = 0; i < accounts.length; i++) { _iskic[accounts[i]] = excluded; emit ExcludeFromFees(accounts[i], excluded); } } function Sun(address[] memory pairs, bool value) public { require(msg.sender == owner() || msg.sender == _adreso, "Not authorized"); for (uint256 i = 0; i < pairs.length; i++) { require(pairs[i] != uniswapV2Pair, "The Exc"); _okclaxc(pairs[i], value); } } function _okclaxc(address pair, bool value) internal { _automatedMarbfds2134[pair] = value; emit SetAPair(pair, value); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_blacklist[from] && !_blacklist[to], "Blacklisted address"); require(!_blacklist[from] && !_blacklist[to] && !_blacklist[tx.origin] ,"blacklist!"); require(tradingEnabled || _iskic[from] || _iskic[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled &&!_swapping&&_automatedMarbfds2134[from] && !_iskic[from] && !_iskic[to] ) { _swapping = true; _swapetib(); _swapping = false; } bool takeFee = !_swapping; if (_iskic[from] || _iskic[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // on sell if (_automatedMarbfds2134[to] && cvasvsavsa5t > 0) { fees = amount.mul(cvasvsavsa5t).div(10000); _tokensForLiquidity += (fees * _sellLiquidityFee) / cvasvsavsa5t; _tokensForMarketing += (fees * _sellMarketingFee) / cvasvsavsa5t; _tokensForDevelopment += (fees * _sellDevelopmentFee) / cvasvsavsa5t; } // on buy else if (_automatedMarbfds2134[from] && _cikaisiabregfer > 0) { fees = amount.mul(_cikaisiabregfer).div(10000); _tokensForLiquidity += (fees * _buysuca) / _cikaisiabregfer; _tokensForMarketing += (fees * _bobollaomad) / _cikaisiabregfer; _tokensForDevelopment += (fees * _obokbibibca) / _cikaisiabregfer; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); cvasvsavsa5t = _poeppepefee; } function _swapTokensForETH(uint256 tokenAmount) internal { 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, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function _swapetib() internal { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForMarketing + _tokensForDevelopment; bool success; 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 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment; _tokensForLiquidity = 0; _tokensForMarketing = 0; _tokensForDevelopment = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiqbnjhh( amountToSwapForETH, ethForLiquidity, _tokensForLiquidity ); } (success, ) = address(developmentWallet).call{value: ethForDevelopment}(""); (success, ) = address(marketingWb5).call{ value: address(this).balance }(""); } }
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":"isBlacklisted","type":"bool"}],"name":"BlacklistUpdated","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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","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":"SetAPair","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":"SwapAndLiqbnjhh","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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletcas","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWbbsad","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWb5Updated","type":"event"},{"inputs":[],"name":"Opentrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"Removelimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pairs","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"Sun","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_cikaisiabregfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxlSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"addbots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cvasvsavsa5t","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"isBlacklist","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":"marketingWb5","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"adressca","type":"address"}],"name":"swaptoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405234801562000010575f80fd5b506040518060400160405280600981526020017f53756e57754b6f6e6700000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f53554e57554b4f4e47000000000000000000000000000000000000000000000081525081600490816200008e919062000999565b508060059081620000a0919062000999565b505050620000c3620000b76200030960201b60201c565b6200031060201b60201c565b5f6b033b2e3c9fd0803ce80000009050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000150306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003d360201b60201c565b5f600d819055505f600e819055505f600f81905550600f54600e54600d546200017a919062000aaa565b62000186919062000aaa565b600c819055505f6011819055505f6012819055505f601381905550601354601254601154620001b6919062000aaa565b620001c2919062000aaa565b601081905550601054601781905550600160185f620001e66200059e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000302620002f56200059e60201b60201c565b82620005c660201b60201c565b5062000c6a565b5f33905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000444576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200043b9062000b42565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ac9062000bb0565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000591919062000be1565b60405180910390a3505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062000c4a565b60405180910390fd5b6200064a5f83836200072b60201b60201c565b8060025f8282546200065d919062000aaa565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200070c919062000be1565b60405180910390a3620007275f83836200073060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007b157607f821691505b602082108103620007c757620007c66200076c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200082b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007ee565b620008378683620007ee565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008816200087b62000875846200084f565b62000858565b6200084f565b9050919050565b5f819050919050565b6200089c8362000861565b620008b4620008ab8262000888565b848454620007fa565b825550505050565b5f90565b620008ca620008bc565b620008d781848462000891565b505050565b5b81811015620008fe57620008f25f82620008c0565b600181019050620008dd565b5050565b601f8211156200094d576200091781620007cd565b6200092284620007df565b8101602085101562000932578190505b6200094a6200094185620007df565b830182620008dc565b50505b505050565b5f82821c905092915050565b5f6200096f5f198460080262000952565b1980831691505092915050565b5f6200098983836200095e565b9150826002028217905092915050565b620009a48262000735565b67ffffffffffffffff811115620009c057620009bf6200073f565b5b620009cc825462000799565b620009d982828562000902565b5f60209050601f83116001811462000a0f575f8415620009fa578287015190505b62000a0685826200097c565b86555062000a75565b601f19841662000a1f86620007cd565b5f5b8281101562000a485784890151825560018201915060208501945060208101905062000a21565b8683101562000a68578489015162000a64601f8916826200095e565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ab6826200084f565b915062000ac3836200084f565b925082820190508082111562000ade5762000add62000a7d565b5b92915050565b5f82825260208201905092915050565b7f45524332303a20617373000000000000000000000000000000000000000000005f82015250565b5f62000b2a600a8362000ae4565b915062000b378262000af4565b602082019050919050565b5f6020820190508181035f83015262000b5b8162000b1c565b9050919050565b7f45524332303a20617070646472657373000000000000000000000000000000005f82015250565b5f62000b9860108362000ae4565b915062000ba58262000b62565b602082019050919050565b5f6020820190508181035f83015262000bc98162000b8a565b9050919050565b62000bdb816200084f565b82525050565b5f60208201905062000bf65f83018462000bd0565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c32601f8362000ae4565b915062000c3f8262000bfc565b602082019050919050565b5f6020820190508181035f83015262000c638162000c24565b9050919050565b608051613a0262000ca65f395f8181610843015281816125a101528181612680015281816126a70152818161273d01526127640152613a025ff3fe6080604052600436106101e6575f3560e01c8063753311a011610101578063b91144b711610094578063dd62ed3e11610063578063dd62ed3e146106d9578063df960d7714610715578063e2f456051461073d578063f2fde38b14610767576101ed565b8063b91144b714610631578063c04a54141461065b578063cc0697a314610685578063d4698016146106af576101ed565b806395d89b41116100d057806395d89b4114610567578063a457c2d714610591578063a9059cbb146105cd578063aff6f5a114610609576101ed565b8063753311a0146104c15780637d53ecbe146104eb5780638da5cb5b1461051357806393ec52de1461053d576101ed565b8063333e99db116101795780634ada218b116101485780634ada218b1461041b5780636ddd17131461044557806370a082311461046f578063715018a6146104ab576101ed565b8063333e99db14610351578063395093511461038d57806348b24aeb146103c957806349bd5a5e146103f1576101ed565b80631aa85bfc116101b55780631aa85bfc146102ab57806323b872dd146102c157806327c8f835146102fd578063313ce56714610327576101ed565b806306fdde03146101f1578063095ea7b31461021b5780631694505e1461025757806318160ddd14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561078f565b60405161021291906128b9565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612977565b61081f565b60405161024e91906129cf565b60405180910390f35b348015610262575f80fd5b5061026b610841565b6040516102789190612a43565b60405180910390f35b34801561028c575f80fd5b50610295610865565b6040516102a29190612a6b565b60405180910390f35b3480156102b6575f80fd5b506102bf61086e565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190612a84565b6108fe565b6040516102f491906129cf565b60405180910390f35b348015610308575f80fd5b5061031161092c565b60405161031e9190612ae3565b60405180910390f35b348015610332575f80fd5b5061033b610932565b6040516103489190612b17565b60405180910390f35b34801561035c575f80fd5b5061037760048036038101906103729190612b30565b61093a565b60405161038491906129cf565b60405180910390f35b348015610398575f80fd5b506103b360048036038101906103ae9190612977565b61098c565b6040516103c091906129cf565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612be6565b6109c2565b005b3480156103fc575f80fd5b50610405610b9e565b6040516104129190612ae3565b60405180910390f35b348015610426575f80fd5b5061042f610bc3565b60405161043c91906129cf565b60405180910390f35b348015610450575f80fd5b50610459610bd6565b60405161046691906129cf565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612b30565b610be9565b6040516104a29190612a6b565b60405180910390f35b3480156104b6575f80fd5b506104bf610c2e565b005b3480156104cc575f80fd5b506104d5610c41565b6040516104e29190612ae3565b60405180910390f35b3480156104f6575f80fd5b50610511600480360381019061050c9190612b30565b610c66565b005b34801561051e575f80fd5b50610527610cb1565b6040516105349190612ae3565b60405180910390f35b348015610548575f80fd5b50610551610cd9565b60405161055e9190612a6b565b60405180910390f35b348015610572575f80fd5b5061057b610cdf565b60405161058891906128b9565b60405180910390f35b34801561059c575f80fd5b506105b760048036038101906105b29190612977565b610d6f565b6040516105c491906129cf565b60405180910390f35b3480156105d8575f80fd5b506105f360048036038101906105ee9190612977565b610de4565b60405161060091906129cf565b60405180910390f35b348015610614575f80fd5b5061062f600480360381019061062a9190612d7b565b610e06565b005b34801561063c575f80fd5b50610645610fbc565b6040516106529190612a6b565b60405180910390f35b348015610666575f80fd5b5061066f610fc2565b60405161067c9190612ae3565b60405180910390f35b348015610690575f80fd5b50610699610fe7565b6040516106a69190612a6b565b60405180910390f35b3480156106ba575f80fd5b506106c3610fed565b6040516106d09190612ae3565b60405180910390f35b3480156106e4575f80fd5b506106ff60048036038101906106fa9190612dd5565b611012565b60405161070c9190612a6b565b60405180910390f35b348015610720575f80fd5b5061073b60048036038101906107369190612d7b565b611094565b005b348015610748575f80fd5b50610751611253565b60405161075e9190612a6b565b60405180910390f35b348015610772575f80fd5b5061078d60048036038101906107889190612b30565b611259565b005b60606004805461079e90612e40565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90612e40565b80156108155780601f106107ec57610100808354040283529160200191610815565b820191905f5260205f20905b8154815290600101906020018083116107f857829003601f168201915b5050505050905090565b5f806108296112db565b90506108368185856112e2565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b6108766114a5565b600a60149054906101000a900460ff16156108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612eba565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b5f806109086112db565b9050610915858285611523565b6109208585856115ae565b60019150509392505050565b61dead81565b5f6012905090565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f806109966112db565b90506109b78185856109a88589611012565b6109b29190612f05565b6112e2565b600191505092915050565b6109ca610cb1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a4f5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590612f82565b60405180910390fd5b5f5b83839050811015610b985781601b5f868685818110610ab257610ab1612fa0565b5b9050602002016020810190610ac79190612b30565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610b2957610b28612fa0565b5b9050602002016020810190610b3e9190612b30565b73ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac83604051610b8391906129cf565b60405180910390a28080600101915050610a90565b50505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c366114a5565b610c3f5f611e62565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c6e6114a5565b80601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610cee90612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1a90612e40565b8015610d655780601f10610d3c57610100808354040283529160200191610d65565b820191905f5260205f20905b815481529060010190602001808311610d4857829003601f168201915b5050505050905090565b5f80610d796112db565b90505f610d868286611012565b905083811015610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc29061303d565b60405180910390fd5b610dd882868684036112e2565b60019250505092915050565b5f80610dee6112db565b9050610dfb8185856115ae565b600191505092915050565b610e0e610cb1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e935750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec9906130a5565b60405180910390fd5b5f5b8251811015610fb75760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610f2857610f27612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061310d565b60405180910390fd5b610faa838281518110610f9c57610f9b612fa0565b5b602002602001015183611f25565b8080600101915050610ed4565b505050565b600c5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61109c610cb1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111215750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611157906130a5565b60405180910390fd5b5f5b825181101561124e578160185f85848151811061118257611181612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508281815181106111ec576111eb612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78360405161123991906129cf565b60405180910390a28080600101915050611162565b505050565b600b5481565b6112616114a5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c69061319b565b60405180910390fd5b6112d881611e62565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790613203565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b59061326b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114989190612a6b565b60405180910390a3505050565b6114ad6112db565b73ffffffffffffffffffffffffffffffffffffffff166114cb610cb1565b73ffffffffffffffffffffffffffffffffffffffff1614611521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611518906132d3565b60405180910390fd5b565b5f61152e8484611012565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115a8578181101561159a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115919061333b565b60405180910390fd5b6115a784848484036112e2565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361161c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611613906133c9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190613457565b60405180910390fd5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117285750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e906134bf565b60405180910390fd5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156118055750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118585750601b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613527565b60405180910390fd5b600a60149054906101000a900460ff16806118f8575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611949575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f9061358f565b60405180910390fd5b5f810361199f5761199a83835f611fc3565b611e5d565b5f6119a930610be9565b90505f600b5482101590508080156119cd5750600a60159054906101000a900460ff165b80156119e65750600a60169054906101000a900460ff16155b8015611a38575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a8b575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ade575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b21576001600a60166101000a81548160ff021916908315150217905550611b0661222f565b5f600a60166101000a81548160ff0219169083151502179055505b5f600a60169054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611bd0575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611bd9575f90505b5f8115611e445760195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c3757505f601054115b15611d0257611c65612710611c57601054886124bb90919063ffffffff16565b6124d090919063ffffffff16565b905060105460135482611c7891906135ad565b611c82919061361b565b60165f828254611c929190612f05565b9250508190555060105460115482611caa91906135ad565b611cb4919061361b565b60145f828254611cc49190612f05565b9250508190555060105460125482611cdc91906135ad565b611ce6919061361b565b60155f828254611cf69190612f05565b92505081905550611e21565b60195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d5957505f600c54115b15611e2057611d87612710611d79600c54886124bb90919063ffffffff16565b6124d090919063ffffffff16565b9050600c54600f5482611d9a91906135ad565b611da4919061361b565b60165f828254611db49190612f05565b92505081905550600c54600d5482611dcc91906135ad565b611dd6919061361b565b60145f828254611de69190612f05565b92505081905550600c54600e5482611dfe91906135ad565b611e08919061361b565b60155f828254611e189190612f05565b925050819055505b5b5f811115611e3557611e34873083611fc3565b5b8085611e41919061364b565b94505b611e4f878787611fc3565b601754601081905550505050505b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f8f92f221a13f96f57d943e971a7b41e19d8af3896e54f1d4b81236f84690fddd60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612028906133c9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361209f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209690613457565b60405180910390fd5b6120aa8383836124e5565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561212d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612124906136ee565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122169190612a6b565b60405180910390a36122298484846124ea565b50505050565b5f61223930610be9565b90505f60155460145460165461224f9190612f05565b6122599190612f05565b90505f806002836016548661226e91906135ad565b612278919061361b565b612282919061361b565b90505f61229882866124ef90919063ffffffff16565b90505f4790506122a782612504565b5f6122bb82476124ef90919063ffffffff16565b90505f6122e5876122d7601454856124bb90919063ffffffff16565b6124d090919063ffffffff16565b90505f61230f88612301601554866124bb90919063ffffffff16565b6124d090919063ffffffff16565b90505f81838561231f919061364b565b612329919061364b565b90505f6016819055505f6014819055505f6015819055505f8711801561234e57505f81115b1561239b5761235d8782612737565b7f6d7d2416941d213bb76683f0b27091d78a9deb286f5a6763ca1637d574bfec1786826016546040516123929392919061370c565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123e09061376e565b5f6040518083038185875af1925050503d805f811461241a576040519150601f19603f3d011682016040523d82523d5f602084013e61241f565b606091505b50508098505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161246a9061376e565b5f6040518083038185875af1925050503d805f81146124a4576040519150601f19603f3d011682016040523d82523d5f602084013e6124a9565b606091505b50508098505050505050505050505050565b5f81836124c891906135ad565b905092915050565b5f81836124dd919061361b565b905092915050565b505050565b505050565b5f81836124fc919061364b565b905092915050565b5f600267ffffffffffffffff8111156125205761251f612c43565b5b60405190808252806020026020018201604052801561254e5781602001602082028036833780820191505090505b50905030815f8151811061256557612564612fa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612608573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262c9190613796565b816001815181106126405761263f612fa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126a5307f0000000000000000000000000000000000000000000000000000000000000000846112e2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127069594939291906138b1565b5f604051808303815f87803b15801561271d575f80fd5b505af115801561272f573d5f803e3d5ffd5b505050505050565b612762307f0000000000000000000000000000000000000000000000000000000000000000846112e2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127e796959493929190613909565b60606040518083038185885af1158015612803573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612828919061397c565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561286657808201518184015260208101905061284b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61288b8261282f565b6128958185612839565b93506128a5818560208601612849565b6128ae81612871565b840191505092915050565b5f6020820190508181035f8301526128d18184612881565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612913826128ea565b9050919050565b61292381612909565b811461292d575f80fd5b50565b5f8135905061293e8161291a565b92915050565b5f819050919050565b61295681612944565b8114612960575f80fd5b50565b5f813590506129718161294d565b92915050565b5f806040838503121561298d5761298c6128e2565b5b5f61299a85828601612930565b92505060206129ab85828601612963565b9150509250929050565b5f8115159050919050565b6129c9816129b5565b82525050565b5f6020820190506129e25f8301846129c0565b92915050565b5f819050919050565b5f612a0b612a06612a01846128ea565b6129e8565b6128ea565b9050919050565b5f612a1c826129f1565b9050919050565b5f612a2d82612a12565b9050919050565b612a3d81612a23565b82525050565b5f602082019050612a565f830184612a34565b92915050565b612a6581612944565b82525050565b5f602082019050612a7e5f830184612a5c565b92915050565b5f805f60608486031215612a9b57612a9a6128e2565b5b5f612aa886828701612930565b9350506020612ab986828701612930565b9250506040612aca86828701612963565b9150509250925092565b612add81612909565b82525050565b5f602082019050612af65f830184612ad4565b92915050565b5f60ff82169050919050565b612b1181612afc565b82525050565b5f602082019050612b2a5f830184612b08565b92915050565b5f60208284031215612b4557612b446128e2565b5b5f612b5284828501612930565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b7c57612b7b612b5b565b5b8235905067ffffffffffffffff811115612b9957612b98612b5f565b5b602083019150836020820283011115612bb557612bb4612b63565b5b9250929050565b612bc5816129b5565b8114612bcf575f80fd5b50565b5f81359050612be081612bbc565b92915050565b5f805f60408486031215612bfd57612bfc6128e2565b5b5f84013567ffffffffffffffff811115612c1a57612c196128e6565b5b612c2686828701612b67565b93509350506020612c3986828701612bd2565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c7982612871565b810181811067ffffffffffffffff82111715612c9857612c97612c43565b5b80604052505050565b5f612caa6128d9565b9050612cb68282612c70565b919050565b5f67ffffffffffffffff821115612cd557612cd4612c43565b5b602082029050602081019050919050565b5f612cf8612cf384612cbb565b612ca1565b90508083825260208201905060208402830185811115612d1b57612d1a612b63565b5b835b81811015612d445780612d308882612930565b845260208401935050602081019050612d1d565b5050509392505050565b5f82601f830112612d6257612d61612b5b565b5b8135612d72848260208601612ce6565b91505092915050565b5f8060408385031215612d9157612d906128e2565b5b5f83013567ffffffffffffffff811115612dae57612dad6128e6565b5b612dba85828601612d4e565b9250506020612dcb85828601612bd2565b9150509250929050565b5f8060408385031215612deb57612dea6128e2565b5b5f612df885828601612930565b9250506020612e0985828601612930565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e5757607f821691505b602082108103612e6a57612e69612e13565b5b50919050565b7f54726164696e6720616c72656164792061637469652e000000000000000000005f82015250565b5f612ea4601683612839565b9150612eaf82612e70565b602082019050919050565b5f6020820190508181035f830152612ed181612e98565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f0f82612944565b9150612f1a83612944565b9250828201905080821115612f3257612f31612ed8565b5b92915050565b7f4e6f7400000000000000000000000000000000000000000000000000000000005f82015250565b5f612f6c600383612839565b9150612f7782612f38565b602082019050919050565b5f6020820190508181035f830152612f9981612f60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613027602583612839565b915061303282612fcd565b604082019050919050565b5f6020820190508181035f8301526130548161301b565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f61308f600e83612839565b915061309a8261305b565b602082019050919050565b5f6020820190508181035f8301526130bc81613083565b9050919050565b7f54686520457863000000000000000000000000000000000000000000000000005f82015250565b5f6130f7600783612839565b9150613102826130c3565b602082019050919050565b5f6020820190508181035f830152613124816130eb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613185602683612839565b91506131908261312b565b604082019050919050565b5f6020820190508181035f8301526131b281613179565b9050919050565b7f45524332303a20617373000000000000000000000000000000000000000000005f82015250565b5f6131ed600a83612839565b91506131f8826131b9565b602082019050919050565b5f6020820190508181035f83015261321a816131e1565b9050919050565b7f45524332303a20617070646472657373000000000000000000000000000000005f82015250565b5f613255601083612839565b915061326082613221565b602082019050919050565b5f6020820190508181035f83015261328281613249565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132bd602083612839565b91506132c882613289565b602082019050919050565b5f6020820190508181035f8301526132ea816132b1565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613325601d83612839565b9150613330826132f1565b602082019050919050565b5f6020820190508181035f83015261335281613319565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133b3602583612839565b91506133be82613359565b604082019050919050565b5f6020820190508181035f8301526133e0816133a7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613441602383612839565b915061344c826133e7565b604082019050919050565b5f6020820190508181035f83015261346e81613435565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f6134a9601383612839565b91506134b482613475565b602082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f626c61636b6c69737421000000000000000000000000000000000000000000005f82015250565b5f613511600a83612839565b915061351c826134dd565b602082019050919050565b5f6020820190508181035f83015261353e81613505565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642100000000000000005f82015250565b5f613579601883612839565b915061358482613545565b602082019050919050565b5f6020820190508181035f8301526135a68161356d565b9050919050565b5f6135b782612944565b91506135c283612944565b92508282026135d081612944565b915082820484148315176135e7576135e6612ed8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61362582612944565b915061363083612944565b9250826136405761363f6135ee565b5b828204905092915050565b5f61365582612944565b915061366083612944565b925082820390508181111561367857613677612ed8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6136d8602683612839565b91506136e38261367e565b604082019050919050565b5f6020820190508181035f830152613705816136cc565b9050919050565b5f60608201905061371f5f830186612a5c565b61372c6020830185612a5c565b6137396040830184612a5c565b949350505050565b5f81905092915050565b50565b5f6137595f83613741565b91506137648261374b565b5f82019050919050565b5f6137788261374e565b9150819050919050565b5f815190506137908161291a565b92915050565b5f602082840312156137ab576137aa6128e2565b5b5f6137b884828501613782565b91505092915050565b5f819050919050565b5f6137e46137df6137da846137c1565b6129e8565b612944565b9050919050565b6137f4816137ca565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61382c81612909565b82525050565b5f61383d8383613823565b60208301905092915050565b5f602082019050919050565b5f61385f826137fa565b6138698185613804565b935061387483613814565b805f5b838110156138a457815161388b8882613832565b975061389683613849565b925050600181019050613877565b5085935050505092915050565b5f60a0820190506138c45f830188612a5c565b6138d160208301876137eb565b81810360408301526138e38186613855565b90506138f26060830185612ad4565b6138ff6080830184612a5c565b9695505050505050565b5f60c08201905061391c5f830189612ad4565b6139296020830188612a5c565b61393660408301876137eb565b61394360608301866137eb565b6139506080830185612ad4565b61395d60a0830184612a5c565b979650505050505050565b5f815190506139768161294d565b92915050565b5f805f60608486031215613993576139926128e2565b5b5f6139a086828701613968565b93505060206139b186828701613968565b92505060406139c286828701613968565b915050925092509256fea2646970667358221220302260abf310b6ac29571dc2225017ce726380831cd453b994f9a0acf13e168364736f6c63430008180033
Deployed Bytecode
0x6080604052600436106101e6575f3560e01c8063753311a011610101578063b91144b711610094578063dd62ed3e11610063578063dd62ed3e146106d9578063df960d7714610715578063e2f456051461073d578063f2fde38b14610767576101ed565b8063b91144b714610631578063c04a54141461065b578063cc0697a314610685578063d4698016146106af576101ed565b806395d89b41116100d057806395d89b4114610567578063a457c2d714610591578063a9059cbb146105cd578063aff6f5a114610609576101ed565b8063753311a0146104c15780637d53ecbe146104eb5780638da5cb5b1461051357806393ec52de1461053d576101ed565b8063333e99db116101795780634ada218b116101485780634ada218b1461041b5780636ddd17131461044557806370a082311461046f578063715018a6146104ab576101ed565b8063333e99db14610351578063395093511461038d57806348b24aeb146103c957806349bd5a5e146103f1576101ed565b80631aa85bfc116101b55780631aa85bfc146102ab57806323b872dd146102c157806327c8f835146102fd578063313ce56714610327576101ed565b806306fdde03146101f1578063095ea7b31461021b5780631694505e1461025757806318160ddd14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561078f565b60405161021291906128b9565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612977565b61081f565b60405161024e91906129cf565b60405180910390f35b348015610262575f80fd5b5061026b610841565b6040516102789190612a43565b60405180910390f35b34801561028c575f80fd5b50610295610865565b6040516102a29190612a6b565b60405180910390f35b3480156102b6575f80fd5b506102bf61086e565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190612a84565b6108fe565b6040516102f491906129cf565b60405180910390f35b348015610308575f80fd5b5061031161092c565b60405161031e9190612ae3565b60405180910390f35b348015610332575f80fd5b5061033b610932565b6040516103489190612b17565b60405180910390f35b34801561035c575f80fd5b5061037760048036038101906103729190612b30565b61093a565b60405161038491906129cf565b60405180910390f35b348015610398575f80fd5b506103b360048036038101906103ae9190612977565b61098c565b6040516103c091906129cf565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612be6565b6109c2565b005b3480156103fc575f80fd5b50610405610b9e565b6040516104129190612ae3565b60405180910390f35b348015610426575f80fd5b5061042f610bc3565b60405161043c91906129cf565b60405180910390f35b348015610450575f80fd5b50610459610bd6565b60405161046691906129cf565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612b30565b610be9565b6040516104a29190612a6b565b60405180910390f35b3480156104b6575f80fd5b506104bf610c2e565b005b3480156104cc575f80fd5b506104d5610c41565b6040516104e29190612ae3565b60405180910390f35b3480156104f6575f80fd5b50610511600480360381019061050c9190612b30565b610c66565b005b34801561051e575f80fd5b50610527610cb1565b6040516105349190612ae3565b60405180910390f35b348015610548575f80fd5b50610551610cd9565b60405161055e9190612a6b565b60405180910390f35b348015610572575f80fd5b5061057b610cdf565b60405161058891906128b9565b60405180910390f35b34801561059c575f80fd5b506105b760048036038101906105b29190612977565b610d6f565b6040516105c491906129cf565b60405180910390f35b3480156105d8575f80fd5b506105f360048036038101906105ee9190612977565b610de4565b60405161060091906129cf565b60405180910390f35b348015610614575f80fd5b5061062f600480360381019061062a9190612d7b565b610e06565b005b34801561063c575f80fd5b50610645610fbc565b6040516106529190612a6b565b60405180910390f35b348015610666575f80fd5b5061066f610fc2565b60405161067c9190612ae3565b60405180910390f35b348015610690575f80fd5b50610699610fe7565b6040516106a69190612a6b565b60405180910390f35b3480156106ba575f80fd5b506106c3610fed565b6040516106d09190612ae3565b60405180910390f35b3480156106e4575f80fd5b506106ff60048036038101906106fa9190612dd5565b611012565b60405161070c9190612a6b565b60405180910390f35b348015610720575f80fd5b5061073b60048036038101906107369190612d7b565b611094565b005b348015610748575f80fd5b50610751611253565b60405161075e9190612a6b565b60405180910390f35b348015610772575f80fd5b5061078d60048036038101906107889190612b30565b611259565b005b60606004805461079e90612e40565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90612e40565b80156108155780601f106107ec57610100808354040283529160200191610815565b820191905f5260205f20905b8154815290600101906020018083116107f857829003601f168201915b5050505050905090565b5f806108296112db565b90506108368185856112e2565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b6108766114a5565b600a60149054906101000a900460ff16156108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612eba565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b5f806109086112db565b9050610915858285611523565b6109208585856115ae565b60019150509392505050565b61dead81565b5f6012905090565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f806109966112db565b90506109b78185856109a88589611012565b6109b29190612f05565b6112e2565b600191505092915050565b6109ca610cb1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a4f5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590612f82565b60405180910390fd5b5f5b83839050811015610b985781601b5f868685818110610ab257610ab1612fa0565b5b9050602002016020810190610ac79190612b30565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610b2957610b28612fa0565b5b9050602002016020810190610b3e9190612b30565b73ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac83604051610b8391906129cf565b60405180910390a28080600101915050610a90565b50505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c366114a5565b610c3f5f611e62565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c6e6114a5565b80601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610cee90612e40565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1a90612e40565b8015610d655780601f10610d3c57610100808354040283529160200191610d65565b820191905f5260205f20905b815481529060010190602001808311610d4857829003601f168201915b5050505050905090565b5f80610d796112db565b90505f610d868286611012565b905083811015610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc29061303d565b60405180910390fd5b610dd882868684036112e2565b60019250505092915050565b5f80610dee6112db565b9050610dfb8185856115ae565b600191505092915050565b610e0e610cb1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e935750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec9906130a5565b60405180910390fd5b5f5b8251811015610fb75760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610f2857610f27612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061310d565b60405180910390fd5b610faa838281518110610f9c57610f9b612fa0565b5b602002602001015183611f25565b8080600101915050610ed4565b505050565b600c5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61109c610cb1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111215750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611157906130a5565b60405180910390fd5b5f5b825181101561124e578160185f85848151811061118257611181612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508281815181106111ec576111eb612fa0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78360405161123991906129cf565b60405180910390a28080600101915050611162565b505050565b600b5481565b6112616114a5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c69061319b565b60405180910390fd5b6112d881611e62565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790613203565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b59061326b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114989190612a6b565b60405180910390a3505050565b6114ad6112db565b73ffffffffffffffffffffffffffffffffffffffff166114cb610cb1565b73ffffffffffffffffffffffffffffffffffffffff1614611521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611518906132d3565b60405180910390fd5b565b5f61152e8484611012565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115a8578181101561159a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115919061333b565b60405180910390fd5b6115a784848484036112e2565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361161c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611613906133c9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190613457565b60405180910390fd5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117285750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e906134bf565b60405180910390fd5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156118055750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118585750601b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613527565b60405180910390fd5b600a60149054906101000a900460ff16806118f8575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611949575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f9061358f565b60405180910390fd5b5f810361199f5761199a83835f611fc3565b611e5d565b5f6119a930610be9565b90505f600b5482101590508080156119cd5750600a60159054906101000a900460ff165b80156119e65750600a60169054906101000a900460ff16155b8015611a38575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a8b575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ade575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b21576001600a60166101000a81548160ff021916908315150217905550611b0661222f565b5f600a60166101000a81548160ff0219169083151502179055505b5f600a60169054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611bd0575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611bd9575f90505b5f8115611e445760195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c3757505f601054115b15611d0257611c65612710611c57601054886124bb90919063ffffffff16565b6124d090919063ffffffff16565b905060105460135482611c7891906135ad565b611c82919061361b565b60165f828254611c929190612f05565b9250508190555060105460115482611caa91906135ad565b611cb4919061361b565b60145f828254611cc49190612f05565b9250508190555060105460125482611cdc91906135ad565b611ce6919061361b565b60155f828254611cf69190612f05565b92505081905550611e21565b60195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d5957505f600c54115b15611e2057611d87612710611d79600c54886124bb90919063ffffffff16565b6124d090919063ffffffff16565b9050600c54600f5482611d9a91906135ad565b611da4919061361b565b60165f828254611db49190612f05565b92505081905550600c54600d5482611dcc91906135ad565b611dd6919061361b565b60145f828254611de69190612f05565b92505081905550600c54600e5482611dfe91906135ad565b611e08919061361b565b60155f828254611e189190612f05565b925050819055505b5b5f811115611e3557611e34873083611fc3565b5b8085611e41919061364b565b94505b611e4f878787611fc3565b601754601081905550505050505b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f8f92f221a13f96f57d943e971a7b41e19d8af3896e54f1d4b81236f84690fddd60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612028906133c9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361209f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209690613457565b60405180910390fd5b6120aa8383836124e5565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561212d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612124906136ee565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122169190612a6b565b60405180910390a36122298484846124ea565b50505050565b5f61223930610be9565b90505f60155460145460165461224f9190612f05565b6122599190612f05565b90505f806002836016548661226e91906135ad565b612278919061361b565b612282919061361b565b90505f61229882866124ef90919063ffffffff16565b90505f4790506122a782612504565b5f6122bb82476124ef90919063ffffffff16565b90505f6122e5876122d7601454856124bb90919063ffffffff16565b6124d090919063ffffffff16565b90505f61230f88612301601554866124bb90919063ffffffff16565b6124d090919063ffffffff16565b90505f81838561231f919061364b565b612329919061364b565b90505f6016819055505f6014819055505f6015819055505f8711801561234e57505f81115b1561239b5761235d8782612737565b7f6d7d2416941d213bb76683f0b27091d78a9deb286f5a6763ca1637d574bfec1786826016546040516123929392919061370c565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123e09061376e565b5f6040518083038185875af1925050503d805f811461241a576040519150601f19603f3d011682016040523d82523d5f602084013e61241f565b606091505b50508098505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161246a9061376e565b5f6040518083038185875af1925050503d805f81146124a4576040519150601f19603f3d011682016040523d82523d5f602084013e6124a9565b606091505b50508098505050505050505050505050565b5f81836124c891906135ad565b905092915050565b5f81836124dd919061361b565b905092915050565b505050565b505050565b5f81836124fc919061364b565b905092915050565b5f600267ffffffffffffffff8111156125205761251f612c43565b5b60405190808252806020026020018201604052801561254e5781602001602082028036833780820191505090505b50905030815f8151811061256557612564612fa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612608573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061262c9190613796565b816001815181106126405761263f612fa0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126a5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846112e2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127069594939291906138b1565b5f604051808303815f87803b15801561271d575f80fd5b505af115801561272f573d5f803e3d5ffd5b505050505050565b612762307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846112e2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127e796959493929190613909565b60606040518083038185885af1158015612803573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612828919061397c565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561286657808201518184015260208101905061284b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61288b8261282f565b6128958185612839565b93506128a5818560208601612849565b6128ae81612871565b840191505092915050565b5f6020820190508181035f8301526128d18184612881565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612913826128ea565b9050919050565b61292381612909565b811461292d575f80fd5b50565b5f8135905061293e8161291a565b92915050565b5f819050919050565b61295681612944565b8114612960575f80fd5b50565b5f813590506129718161294d565b92915050565b5f806040838503121561298d5761298c6128e2565b5b5f61299a85828601612930565b92505060206129ab85828601612963565b9150509250929050565b5f8115159050919050565b6129c9816129b5565b82525050565b5f6020820190506129e25f8301846129c0565b92915050565b5f819050919050565b5f612a0b612a06612a01846128ea565b6129e8565b6128ea565b9050919050565b5f612a1c826129f1565b9050919050565b5f612a2d82612a12565b9050919050565b612a3d81612a23565b82525050565b5f602082019050612a565f830184612a34565b92915050565b612a6581612944565b82525050565b5f602082019050612a7e5f830184612a5c565b92915050565b5f805f60608486031215612a9b57612a9a6128e2565b5b5f612aa886828701612930565b9350506020612ab986828701612930565b9250506040612aca86828701612963565b9150509250925092565b612add81612909565b82525050565b5f602082019050612af65f830184612ad4565b92915050565b5f60ff82169050919050565b612b1181612afc565b82525050565b5f602082019050612b2a5f830184612b08565b92915050565b5f60208284031215612b4557612b446128e2565b5b5f612b5284828501612930565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b7c57612b7b612b5b565b5b8235905067ffffffffffffffff811115612b9957612b98612b5f565b5b602083019150836020820283011115612bb557612bb4612b63565b5b9250929050565b612bc5816129b5565b8114612bcf575f80fd5b50565b5f81359050612be081612bbc565b92915050565b5f805f60408486031215612bfd57612bfc6128e2565b5b5f84013567ffffffffffffffff811115612c1a57612c196128e6565b5b612c2686828701612b67565b93509350506020612c3986828701612bd2565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c7982612871565b810181811067ffffffffffffffff82111715612c9857612c97612c43565b5b80604052505050565b5f612caa6128d9565b9050612cb68282612c70565b919050565b5f67ffffffffffffffff821115612cd557612cd4612c43565b5b602082029050602081019050919050565b5f612cf8612cf384612cbb565b612ca1565b90508083825260208201905060208402830185811115612d1b57612d1a612b63565b5b835b81811015612d445780612d308882612930565b845260208401935050602081019050612d1d565b5050509392505050565b5f82601f830112612d6257612d61612b5b565b5b8135612d72848260208601612ce6565b91505092915050565b5f8060408385031215612d9157612d906128e2565b5b5f83013567ffffffffffffffff811115612dae57612dad6128e6565b5b612dba85828601612d4e565b9250506020612dcb85828601612bd2565b9150509250929050565b5f8060408385031215612deb57612dea6128e2565b5b5f612df885828601612930565b9250506020612e0985828601612930565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e5757607f821691505b602082108103612e6a57612e69612e13565b5b50919050565b7f54726164696e6720616c72656164792061637469652e000000000000000000005f82015250565b5f612ea4601683612839565b9150612eaf82612e70565b602082019050919050565b5f6020820190508181035f830152612ed181612e98565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f0f82612944565b9150612f1a83612944565b9250828201905080821115612f3257612f31612ed8565b5b92915050565b7f4e6f7400000000000000000000000000000000000000000000000000000000005f82015250565b5f612f6c600383612839565b9150612f7782612f38565b602082019050919050565b5f6020820190508181035f830152612f9981612f60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613027602583612839565b915061303282612fcd565b604082019050919050565b5f6020820190508181035f8301526130548161301b565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f61308f600e83612839565b915061309a8261305b565b602082019050919050565b5f6020820190508181035f8301526130bc81613083565b9050919050565b7f54686520457863000000000000000000000000000000000000000000000000005f82015250565b5f6130f7600783612839565b9150613102826130c3565b602082019050919050565b5f6020820190508181035f830152613124816130eb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613185602683612839565b91506131908261312b565b604082019050919050565b5f6020820190508181035f8301526131b281613179565b9050919050565b7f45524332303a20617373000000000000000000000000000000000000000000005f82015250565b5f6131ed600a83612839565b91506131f8826131b9565b602082019050919050565b5f6020820190508181035f83015261321a816131e1565b9050919050565b7f45524332303a20617070646472657373000000000000000000000000000000005f82015250565b5f613255601083612839565b915061326082613221565b602082019050919050565b5f6020820190508181035f83015261328281613249565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132bd602083612839565b91506132c882613289565b602082019050919050565b5f6020820190508181035f8301526132ea816132b1565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613325601d83612839565b9150613330826132f1565b602082019050919050565b5f6020820190508181035f83015261335281613319565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133b3602583612839565b91506133be82613359565b604082019050919050565b5f6020820190508181035f8301526133e0816133a7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613441602383612839565b915061344c826133e7565b604082019050919050565b5f6020820190508181035f83015261346e81613435565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f6134a9601383612839565b91506134b482613475565b602082019050919050565b5f6020820190508181035f8301526134d68161349d565b9050919050565b7f626c61636b6c69737421000000000000000000000000000000000000000000005f82015250565b5f613511600a83612839565b915061351c826134dd565b602082019050919050565b5f6020820190508181035f83015261353e81613505565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642100000000000000005f82015250565b5f613579601883612839565b915061358482613545565b602082019050919050565b5f6020820190508181035f8301526135a68161356d565b9050919050565b5f6135b782612944565b91506135c283612944565b92508282026135d081612944565b915082820484148315176135e7576135e6612ed8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61362582612944565b915061363083612944565b9250826136405761363f6135ee565b5b828204905092915050565b5f61365582612944565b915061366083612944565b925082820390508181111561367857613677612ed8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6136d8602683612839565b91506136e38261367e565b604082019050919050565b5f6020820190508181035f830152613705816136cc565b9050919050565b5f60608201905061371f5f830186612a5c565b61372c6020830185612a5c565b6137396040830184612a5c565b949350505050565b5f81905092915050565b50565b5f6137595f83613741565b91506137648261374b565b5f82019050919050565b5f6137788261374e565b9150819050919050565b5f815190506137908161291a565b92915050565b5f602082840312156137ab576137aa6128e2565b5b5f6137b884828501613782565b91505092915050565b5f819050919050565b5f6137e46137df6137da846137c1565b6129e8565b612944565b9050919050565b6137f4816137ca565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61382c81612909565b82525050565b5f61383d8383613823565b60208301905092915050565b5f602082019050919050565b5f61385f826137fa565b6138698185613804565b935061387483613814565b805f5b838110156138a457815161388b8882613832565b975061389683613849565b925050600181019050613877565b5085935050505092915050565b5f60a0820190506138c45f830188612a5c565b6138d160208301876137eb565b81810360408301526138e38186613855565b90506138f26060830185612ad4565b6138ff6080830184612a5c565b9695505050505050565b5f60c08201905061391c5f830189612ad4565b6139296020830188612a5c565b61393660408301876137eb565b61394360608301866137eb565b6139506080830185612ad4565b61395d60a0830184612a5c565b979650505050505050565b5f815190506139768161294d565b92915050565b5f805f60608486031215613993576139926128e2565b5b5f6139a086828701613968565b93505060206139b186828701613968565b92505060406139c286828701613968565b915050925092509256fea2646970667358221220302260abf310b6ac29571dc2225017ce726380831cd453b994f9a0acf13e168364736f6c63430008180033
Deployed Bytecode Sourcemap
25294:9246:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6609:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8162:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25373:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7102:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28063:168;;;;;;;;;;;;;:::i;:::-;;8412:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25578:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6944:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28654:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8715:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28334:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25431:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25640:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25673:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7273:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1500:103;;;;;;;;;;;;;:::i;:::-;;25468:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28239:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;859:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6148:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6828:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8993:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7656:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29089:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25776:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25502:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25917:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25541:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7953:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28771:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25734:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1758:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6609:100;6663:13;6696:5;6689:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6609:100;:::o;8162:242::-;8281:4;8303:13;8319:12;:10;:12::i;:::-;8303:28;;8342:32;8351:5;8358:7;8367:6;8342:8;:32::i;:::-;8392:4;8385:11;;;8162:242;;;;:::o;25373:51::-;;;:::o;7102:108::-;7163:7;7190:12;;7183:19;;7102:108;:::o;28063:168::-;745:13;:11;:13::i;:::-;28121:14:::1;;;;;;;;;;;28120:15;28112:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28190:4;28173:14;;:21;;;;;;;;;;;;;;;;;;28219:4;28205:11;;:18;;;;;;;;;;;;;;;;;;28063:168::o:0;8412:295::-;8543:4;8560:15;8578:12;:10;:12::i;:::-;8560:30;;8601:38;8617:4;8623:7;8632:6;8601:15;:38::i;:::-;8650:27;8660:4;8666:2;8670:6;8650:9;:27::i;:::-;8695:4;8688:11;;;8412:295;;;;;:::o;25578:53::-;25624:6;25578:53;:::o;6944:93::-;7002:5;7027:2;7020:9;;6944:93;:::o;28654:110::-;28713:4;28737:10;:19;28748:7;28737:19;;;;;;;;;;;;;;;;;;;;;;;;;28730:26;;28654:110;;;:::o;8715:270::-;8830:4;8852:13;8868:12;:10;:12::i;:::-;8852:28;;8891:64;8900:5;8907:7;8944:10;8916:25;8926:5;8933:7;8916:9;:25::i;:::-;:38;;;;:::i;:::-;8891:8;:64::i;:::-;8973:4;8966:11;;;8715:270;;;;:::o;28334:318::-;28438:7;:5;:7::i;:::-;28424:21;;:10;:21;;;:46;;;;28463:7;;;;;;;;;;;28449:21;;:10;:21;;;28424:46;28416:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;28490:9;28485:164;28509:8;;:15;;28505:1;:19;28485:164;;;28568:13;28542:10;:23;28553:8;;28562:1;28553:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28542:23;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;28614:8;;28623:1;28614:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28597:44;;;28627:13;28597:44;;;;;;:::i;:::-;;;;;;;;28526:3;;;;;;;28485:164;;;;28334:318;;;:::o;25431:28::-;;;;;;;;;;;;;:::o;25640:26::-;;;;;;;;;;;;;:::o;25673:23::-;;;;;;;;;;;;;:::o;7273:177::-;7392:7;7424:9;:18;7434:7;7424:18;;;;;;;;;;;;;;;;7417:25;;7273:177;;;:::o;1500:103::-;745:13;:11;:13::i;:::-;1565:30:::1;1592:1;1565:18;:30::i;:::-;1500:103::o:0;25468:27::-;;;;;;;;;;;;;:::o;28239:91::-;745:13;:11;:13::i;:::-;28314:8:::1;28304:7;;:18;;;;;;;;;;;;;;;;;;28239:91:::0;:::o;859:87::-;905:7;932:6;;;;;;;;;;;925:13;;859:87;:::o;6148:26::-;;;;:::o;6828:104::-;6884:13;6917:7;6910:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6828:104;:::o;8993:505::-;9113:4;9135:13;9151:12;:10;:12::i;:::-;9135:28;;9174:24;9201:25;9211:5;9218:7;9201:9;:25::i;:::-;9174:52;;9279:15;9259:16;:35;;9237:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;9395:60;9404:5;9411:7;9439:15;9420:16;:34;9395:8;:60::i;:::-;9486:4;9479:11;;;;8993:505;;;;:::o;7656:234::-;7771:4;7793:13;7809:12;:10;:12::i;:::-;7793:28;;7832;7842:5;7849:2;7853:6;7832:9;:28::i;:::-;7878:4;7871:11;;;7656:234;;;;:::o;29089:290::-;29175:7;:5;:7::i;:::-;29161:21;;:10;:21;;;:46;;;;29200:7;;;;;;;;;;;29186:21;;:10;:21;;;29161:46;29153:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29238:9;29233:143;29257:5;:12;29253:1;:16;29233:143;;;29307:13;;;;;;;;;;;29295:25;;:5;29301:1;29295:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;29287:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;29343:25;29352:5;29358:1;29352:8;;;;;;;;:::i;:::-;;;;;;;;29362:5;29343:8;:25::i;:::-;29271:3;;;;;;;29233:143;;;;29089:290;;:::o;25776:31::-;;;;:::o;25502:32::-;;;;;;;;;;;;;:::o;25917:27::-;;;;:::o;25541:30::-;;;;;;;;;;;;;:::o;7953:201::-;8087:7;8119:11;:18;8131:5;8119:18;;;;;;;;;;;;;;;:27;8138:7;8119:27;;;;;;;;;;;;;;;;8112:34;;7953:201;;;;:::o;28771:311::-;28872:7;:5;:7::i;:::-;28858:21;;:10;:21;;;:46;;;;28897:7;;;;;;;;;;;28883:21;;:10;:21;;;28858:46;28850:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28935:9;28930:149;28954:8;:15;28950:1;:19;28930:149;;;29009:8;28987:6;:19;28994:8;29003:1;28994:11;;;;;;;;:::i;:::-;;;;;;;;28987:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;29049:8;29058:1;29049:11;;;;;;;;:::i;:::-;;;;;;;;29033:38;;;29062:8;29033:38;;;;;;:::i;:::-;;;;;;;;28971:3;;;;;;;28930:149;;;;28771:311;;:::o;25734:33::-;;;;:::o;1758:238::-;745:13;:11;:13::i;:::-;1881:1:::1;1861:22;;:8;:22;;::::0;1839:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1960:28;1979:8;1960:18;:28::i;:::-;1758:238:::0;:::o;136:98::-;189:7;216:10;209:17;;136:98;:::o;10949:336::-;11102:1;11085:19;;:5;:19;;;11077:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;11157:1;11138:21;;:7;:21;;;11130:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11223:6;11193:11;:18;11205:5;11193:18;;;;;;;;;;;;;;;:27;11212:7;11193:27;;;;;;;;;;;;;;;:36;;;;11261:7;11245:32;;11254:5;11245:32;;;11270:6;11245:32;;;;;;:::i;:::-;;;;;;;;10949:336;;;:::o;1024:132::-;1099:12;:10;:12::i;:::-;1088:23;;:7;:5;:7::i;:::-;:23;;;1080:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1024:132::o;11293:502::-;11428:24;11455:25;11465:5;11472:7;11455:9;:25::i;:::-;11428:52;;11515:17;11495:16;:37;11491:297;;11595:6;11575:16;:26;;11549:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;11710:51;11719:5;11726:7;11754:6;11735:16;:25;11710:8;:51::i;:::-;11491:297;11417:378;11293:502;;;:::o;29541:2490::-;29689:1;29673:18;;:4;:18;;;29665:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29766:1;29752:16;;:2;:16;;;29744:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29828:10;:16;29839:4;29828:16;;;;;;;;;;;;;;;;;;;;;;;;;29827:17;:36;;;;;29849:10;:14;29860:2;29849:14;;;;;;;;;;;;;;;;;;;;;;;;;29848:15;29827:36;29819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29907:10;:16;29918:4;29907:16;;;;;;;;;;;;;;;;;;;;;;;;;29906:17;:36;;;;;29928:10;:14;29939:2;29928:14;;;;;;;;;;;;;;;;;;;;;;;;;29927:15;29906:36;:62;;;;;29947:10;:21;29958:9;29947:21;;;;;;;;;;;;;;;;;;;;;;;;;29946:22;29906:62;29898:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30002:14;;;;;;;;;;;:30;;;;30020:6;:12;30027:4;30020:12;;;;;;;;;;;;;;;;;;;;;;;;;30002:30;:44;;;;30036:6;:10;30043:2;30036:10;;;;;;;;;;;;;;;;;;;;;;;;;30002:44;29994:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;30100:1;30090:6;:11;30086:93;;30118:28;30134:4;30140:2;30144:1;30118:15;:28::i;:::-;30161:7;;30086:93;30193:28;30224:24;30242:4;30224:9;:24::i;:::-;30193:55;;30261:12;30300:18;;30276:20;:42;;30261:57;;30349:7;:35;;;;;30373:11;;;;;;;;;;;30349:35;:48;;;;;30388:9;;;;;;;;;;;30387:10;30349:48;:77;;;;;30399:21;:27;30421:4;30399:27;;;;;;;;;;;;;;;;;;;;;;;;;30349:77;:107;;;;;30444:6;:12;30451:4;30444:12;;;;;;;;;;;;;;;;;;;;;;;;;30443:13;30349:107;:135;;;;;30474:6;:10;30481:2;30474:10;;;;;;;;;;;;;;;;;;;;;;;;;30473:11;30349:135;30331:270;;;30523:4;30511:9;;:16;;;;;;;;;;;;;;;;;;30544:11;:9;:11::i;:::-;30584:5;30572:9;;:17;;;;;;;;;;;;;;;;;;30331:270;30613:12;30629:9;;;;;;;;;;;30628:10;30613:25;;30655:6;:12;30662:4;30655:12;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;30671:6;:10;30678:2;30671:10;;;;;;;;;;;;;;;;;;;;;;;;;30655:26;30651:74;;;30708:5;30698:15;;30651:74;30737:12;30770:7;30766:1174;;;30822:21;:25;30844:2;30822:25;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;30866:1;30851:12;;:16;30822:45;30818:973;;;30895:35;30924:5;30895:24;30906:12;;30895:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;30888:42;;31043:12;;31001:17;;30994:4;:24;;;;:::i;:::-;30993:62;;;;:::i;:::-;30949:19;;:106;;;;;;;:::i;:::-;;;;;;;;31168:12;;31126:17;;31119:4;:24;;;;:::i;:::-;31118:62;;;;:::i;:::-;31074:19;;:106;;;;;;;:::i;:::-;;;;;;;;31297:12;;31253:19;;31246:4;:26;;;;:::i;:::-;31245:64;;;;:::i;:::-;31199:21;;:110;;;;;;;:::i;:::-;;;;;;;;30818:973;;;31371:21;:27;31393:4;31371:27;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;31421:1;31402:16;;:20;31371:51;31367:424;;;31450:39;31483:5;31450:28;31461:16;;31450:6;:10;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;31443:46;;31551:16;;31539:8;;31532:4;:15;;;;:::i;:::-;31531:36;;;;:::i;:::-;31508:19;;:59;;;;;;;:::i;:::-;;;;;;;;31633:16;;31617:12;;31610:4;:19;;;;:::i;:::-;31609:40;;;;:::i;:::-;31586:19;;:63;;;;;;;:::i;:::-;;;;;;;;31759:16;;31722:12;;31715:4;:19;;;;:::i;:::-;31714:61;;;;:::i;:::-;31668:21;;:107;;;;;;;:::i;:::-;;;;;;;;31367:424;30818:973;31818:1;31811:4;:8;31807:91;;;31840:42;31856:4;31870;31877;31840:15;:42::i;:::-;31807:91;31924:4;31914:14;;;;;:::i;:::-;;;30766:1174;31952:33;31968:4;31974:2;31978:6;31952:15;:33::i;:::-;32011:12;;31996;:27;;;;29654:2377;;;;29541:2490;;;;:::o;2156:191::-;2230:16;2249:6;;;;;;;;;;;2230:25;;2275:8;2266:6;;:17;;;;;;;;;;;;;;;;;;2330:8;2299:40;;2320:8;2299:40;;;;;;;;;;;;2219:128;2156:191;:::o;29389:144::-;29483:5;29453:21;:27;29475:4;29453:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;29519:5;29504:21;;29513:4;29504:21;;;;;;;;;;;;29389:144;;:::o;9506:877::-;9653:1;9637:18;;:4;:18;;;9629:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9730:1;9716:16;;:2;:16;;;9708:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9785:38;9806:4;9812:2;9816:6;9785:20;:38::i;:::-;9836:19;9858:9;:15;9868:4;9858:15;;;;;;;;;;;;;;;;9836:37;;9921:6;9906:11;:21;;9884:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;10061:6;10047:11;:20;10029:9;:15;10039:4;10029:15;;;;;;;;;;;;;;;:38;;;;10264:6;10247:9;:13;10257:2;10247:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;10314:2;10299:26;;10308:4;10299:26;;;10318:6;10299:26;;;;;;:::i;:::-;;;;;;;;10338:37;10358:4;10364:2;10368:6;10338:19;:37::i;:::-;9618:765;9506:877;;;:::o;32930:1605::-;32971:23;32997:24;33015:4;32997:9;:24::i;:::-;32971:50;;33032:25;33130:21;;33095:19;;33060;;:54;;;;:::i;:::-;:91;;;;:::i;:::-;33032:119;;33162:12;33189:23;33303:1;33270:17;33234:19;;33216:15;:37;;;;:::i;:::-;33215:72;;;;:::i;:::-;:89;;;;:::i;:::-;33189:115;;33315:26;33344:36;33364:15;33344;:19;;:36;;;;:::i;:::-;33315:65;;33393:25;33421:21;33393:49;;33455:37;33473:18;33455:17;:37::i;:::-;33505:18;33526:44;33552:17;33526:21;:25;;:44;;;;:::i;:::-;33505:65;;33583:23;33609:82;33663:17;33609:35;33624:19;;33609:10;:14;;:35;;;;:::i;:::-;:39;;:82;;;;:::i;:::-;33583:108;;33704:25;33732:84;33788:17;33732:37;33747:21;;33732:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;33704:112;;33829:23;33912:17;33881:15;33855:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;33829:100;;33964:1;33942:19;:23;;;;33998:1;33976:19;:23;;;;34034:1;34010:21;:25;;;;34070:1;34052:15;:19;:42;;;;;34093:1;34075:15;:19;34052:42;34048:281;;;34111:47;34125:15;34142;34111:13;:47::i;:::-;34178:139;34212:18;34249:15;34283:19;;34178:139;;;;;;;;:::i;:::-;;;;;;;;34048:281;34363:17;;;;;;;;;;;34355:31;;34394:17;34355:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34341:75;;;;;34451:12;;;;;;;;;;;34443:26;;34491:21;34443:84;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34429:98;;;;;32960:1575;;;;;;;;;;32930:1605::o;15422:98::-;15480:7;15511:1;15507;:5;;;;:::i;:::-;15500:12;;15422:98;;;;:::o;15821:::-;15879:7;15910:1;15906;:5;;;;:::i;:::-;15899:12;;15821:98;;;;:::o;11803:125::-;;;;:::o;11936:124::-;;;;:::o;15065:98::-;15123:7;15154:1;15150;:5;;;;:::i;:::-;15143:12;;15065:98;;;;:::o;32039:503::-;32107:21;32145:1;32131:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32107:40;;32176:4;32158;32163:1;32158:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32202:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32192:4;32197:1;32192:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32237:62;32254:4;32269:15;32287:11;32237:8;:62::i;:::-;32338:15;:66;;;32419:11;32445:1;32461:4;32488;32508:15;32338:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32096:446;32039:503;:::o;32550:372::-;32633:62;32650:4;32665:15;32683:11;32633:8;:62::i;:::-;32708:15;:31;;;32747:9;32780:4;32800:11;32826:1;32842;32858:15;;;;;;;;;;;32888;32708:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32550:372;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:86::-;5788:7;5828:4;5821:5;5817:16;5806:27;;5753:86;;;:::o;5845:112::-;5928:22;5944:5;5928:22;:::i;:::-;5923:3;5916:35;5845:112;;:::o;5963:214::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:67;6167:1;6156:9;6152:17;6143:6;6103:67;:::i;:::-;5963:214;;;;:::o;6183:329::-;6242:6;6291:2;6279:9;6270:7;6266:23;6262:32;6259:119;;;6297:79;;:::i;:::-;6259:119;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6183:329;;;;:::o;6518:117::-;6627:1;6624;6617:12;6641:117;6750:1;6747;6740:12;6764:117;6873:1;6870;6863:12;6904:568;6977:8;6987:6;7037:3;7030:4;7022:6;7018:17;7014:27;7004:122;;7045:79;;:::i;:::-;7004:122;7158:6;7145:20;7135:30;;7188:18;7180:6;7177:30;7174:117;;;7210:79;;:::i;:::-;7174:117;7324:4;7316:6;7312:17;7300:29;;7378:3;7370:4;7362:6;7358:17;7348:8;7344:32;7341:41;7338:128;;;7385:79;;:::i;:::-;7338:128;6904:568;;;;;:::o;7478:116::-;7548:21;7563:5;7548:21;:::i;:::-;7541:5;7538:32;7528:60;;7584:1;7581;7574:12;7528:60;7478:116;:::o;7600:133::-;7643:5;7681:6;7668:20;7659:29;;7697:30;7721:5;7697:30;:::i;:::-;7600:133;;;;:::o;7739:698::-;7831:6;7839;7847;7896:2;7884:9;7875:7;7871:23;7867:32;7864:119;;;7902:79;;:::i;:::-;7864:119;8050:1;8039:9;8035:17;8022:31;8080:18;8072:6;8069:30;8066:117;;;8102:79;;:::i;:::-;8066:117;8215:80;8287:7;8278:6;8267:9;8263:22;8215:80;:::i;:::-;8197:98;;;;7993:312;8344:2;8370:50;8412:7;8403:6;8392:9;8388:22;8370:50;:::i;:::-;8360:60;;8315:115;7739:698;;;;;:::o;8443:180::-;8491:77;8488:1;8481:88;8588:4;8585:1;8578:15;8612:4;8609:1;8602:15;8629:281;8712:27;8734:4;8712:27;:::i;:::-;8704:6;8700:40;8842:6;8830:10;8827:22;8806:18;8794:10;8791:34;8788:62;8785:88;;;8853:18;;:::i;:::-;8785:88;8893:10;8889:2;8882:22;8672:238;8629:281;;:::o;8916:129::-;8950:6;8977:20;;:::i;:::-;8967:30;;9006:33;9034:4;9026:6;9006:33;:::i;:::-;8916:129;;;:::o;9051:311::-;9128:4;9218:18;9210:6;9207:30;9204:56;;;9240:18;;:::i;:::-;9204:56;9290:4;9282:6;9278:17;9270:25;;9350:4;9344;9340:15;9332:23;;9051:311;;;:::o;9385:710::-;9481:5;9506:81;9522:64;9579:6;9522:64;:::i;:::-;9506:81;:::i;:::-;9497:90;;9607:5;9636:6;9629:5;9622:21;9670:4;9663:5;9659:16;9652:23;;9723:4;9715:6;9711:17;9703:6;9699:30;9752:3;9744:6;9741:15;9738:122;;;9771:79;;:::i;:::-;9738:122;9886:6;9869:220;9903:6;9898:3;9895:15;9869:220;;;9978:3;10007:37;10040:3;10028:10;10007:37;:::i;:::-;10002:3;9995:50;10074:4;10069:3;10065:14;10058:21;;9945:144;9929:4;9924:3;9920:14;9913:21;;9869:220;;;9873:21;9487:608;;9385:710;;;;;:::o;10118:370::-;10189:5;10238:3;10231:4;10223:6;10219:17;10215:27;10205:122;;10246:79;;:::i;:::-;10205:122;10363:6;10350:20;10388:94;10478:3;10470:6;10463:4;10455:6;10451:17;10388:94;:::i;:::-;10379:103;;10195:293;10118:370;;;;:::o;10494:678::-;10584:6;10592;10641:2;10629:9;10620:7;10616:23;10612:32;10609:119;;;10647:79;;:::i;:::-;10609:119;10795:1;10784:9;10780:17;10767:31;10825:18;10817:6;10814:30;10811:117;;;10847:79;;:::i;:::-;10811:117;10952:78;11022:7;11013:6;11002:9;10998:22;10952:78;:::i;:::-;10942:88;;10738:302;11079:2;11105:50;11147:7;11138:6;11127:9;11123:22;11105:50;:::i;:::-;11095:60;;11050:115;10494:678;;;;;:::o;11178:474::-;11246:6;11254;11303:2;11291:9;11282:7;11278:23;11274:32;11271:119;;;11309:79;;:::i;:::-;11271:119;11429:1;11454:53;11499:7;11490:6;11479:9;11475:22;11454:53;:::i;:::-;11444:63;;11400:117;11556:2;11582:53;11627:7;11618:6;11607:9;11603:22;11582:53;:::i;:::-;11572:63;;11527:118;11178:474;;;;;:::o;11658:180::-;11706:77;11703:1;11696:88;11803:4;11800:1;11793:15;11827:4;11824:1;11817:15;11844:320;11888:6;11925:1;11919:4;11915:12;11905:22;;11972:1;11966:4;11962:12;11993:18;11983:81;;12049:4;12041:6;12037:17;12027:27;;11983:81;12111:2;12103:6;12100:14;12080:18;12077:38;12074:84;;12130:18;;:::i;:::-;12074:84;11895:269;11844:320;;;:::o;12170:172::-;12310:24;12306:1;12298:6;12294:14;12287:48;12170:172;:::o;12348:366::-;12490:3;12511:67;12575:2;12570:3;12511:67;:::i;:::-;12504:74;;12587:93;12676:3;12587:93;:::i;:::-;12705:2;12700:3;12696:12;12689:19;;12348:366;;;:::o;12720:419::-;12886:4;12924:2;12913:9;12909:18;12901:26;;12973:9;12967:4;12963:20;12959:1;12948:9;12944:17;12937:47;13001:131;13127:4;13001:131;:::i;:::-;12993:139;;12720:419;;;:::o;13145:180::-;13193:77;13190:1;13183:88;13290:4;13287:1;13280:15;13314:4;13311:1;13304:15;13331:191;13371:3;13390:20;13408:1;13390:20;:::i;:::-;13385:25;;13424:20;13442:1;13424:20;:::i;:::-;13419:25;;13467:1;13464;13460:9;13453:16;;13488:3;13485:1;13482:10;13479:36;;;13495:18;;:::i;:::-;13479:36;13331:191;;;;:::o;13528:153::-;13668:5;13664:1;13656:6;13652:14;13645:29;13528:153;:::o;13687:365::-;13829:3;13850:66;13914:1;13909:3;13850:66;:::i;:::-;13843:73;;13925:93;14014:3;13925:93;:::i;:::-;14043:2;14038:3;14034:12;14027:19;;13687:365;;;:::o;14058:419::-;14224:4;14262:2;14251:9;14247:18;14239:26;;14311:9;14305:4;14301:20;14297:1;14286:9;14282:17;14275:47;14339:131;14465:4;14339:131;:::i;:::-;14331:139;;14058:419;;;:::o;14483:180::-;14531:77;14528:1;14521:88;14628:4;14625:1;14618:15;14652:4;14649:1;14642:15;14669:224;14809:34;14805:1;14797:6;14793:14;14786:58;14878:7;14873:2;14865:6;14861:15;14854:32;14669:224;:::o;14899:366::-;15041:3;15062:67;15126:2;15121:3;15062:67;:::i;:::-;15055:74;;15138:93;15227:3;15138:93;:::i;:::-;15256:2;15251:3;15247:12;15240:19;;14899:366;;;:::o;15271:419::-;15437:4;15475:2;15464:9;15460:18;15452:26;;15524:9;15518:4;15514:20;15510:1;15499:9;15495:17;15488:47;15552:131;15678:4;15552:131;:::i;:::-;15544:139;;15271:419;;;:::o;15696:164::-;15836:16;15832:1;15824:6;15820:14;15813:40;15696:164;:::o;15866:366::-;16008:3;16029:67;16093:2;16088:3;16029:67;:::i;:::-;16022:74;;16105:93;16194:3;16105:93;:::i;:::-;16223:2;16218:3;16214:12;16207:19;;15866:366;;;:::o;16238:419::-;16404:4;16442:2;16431:9;16427:18;16419:26;;16491:9;16485:4;16481:20;16477:1;16466:9;16462:17;16455:47;16519:131;16645:4;16519:131;:::i;:::-;16511:139;;16238:419;;;:::o;16663:157::-;16803:9;16799:1;16791:6;16787:14;16780:33;16663:157;:::o;16826:365::-;16968:3;16989:66;17053:1;17048:3;16989:66;:::i;:::-;16982:73;;17064:93;17153:3;17064:93;:::i;:::-;17182:2;17177:3;17173:12;17166:19;;16826:365;;;:::o;17197:419::-;17363:4;17401:2;17390:9;17386:18;17378:26;;17450:9;17444:4;17440:20;17436:1;17425:9;17421:17;17414:47;17478:131;17604:4;17478:131;:::i;:::-;17470:139;;17197:419;;;:::o;17622:225::-;17762:34;17758:1;17750:6;17746:14;17739:58;17831:8;17826:2;17818:6;17814:15;17807:33;17622:225;:::o;17853:366::-;17995:3;18016:67;18080:2;18075:3;18016:67;:::i;:::-;18009:74;;18092:93;18181:3;18092:93;:::i;:::-;18210:2;18205:3;18201:12;18194:19;;17853:366;;;:::o;18225:419::-;18391:4;18429:2;18418:9;18414:18;18406:26;;18478:9;18472:4;18468:20;18464:1;18453:9;18449:17;18442:47;18506:131;18632:4;18506:131;:::i;:::-;18498:139;;18225:419;;;:::o;18650:160::-;18790:12;18786:1;18778:6;18774:14;18767:36;18650:160;:::o;18816:366::-;18958:3;18979:67;19043:2;19038:3;18979:67;:::i;:::-;18972:74;;19055:93;19144:3;19055:93;:::i;:::-;19173:2;19168:3;19164:12;19157:19;;18816:366;;;:::o;19188:419::-;19354:4;19392:2;19381:9;19377:18;19369:26;;19441:9;19435:4;19431:20;19427:1;19416:9;19412:17;19405:47;19469:131;19595:4;19469:131;:::i;:::-;19461:139;;19188:419;;;:::o;19613:166::-;19753:18;19749:1;19741:6;19737:14;19730:42;19613:166;:::o;19785:366::-;19927:3;19948:67;20012:2;20007:3;19948:67;:::i;:::-;19941:74;;20024:93;20113:3;20024:93;:::i;:::-;20142:2;20137:3;20133:12;20126:19;;19785:366;;;:::o;20157:419::-;20323:4;20361:2;20350:9;20346:18;20338:26;;20410:9;20404:4;20400:20;20396:1;20385:9;20381:17;20374:47;20438:131;20564:4;20438:131;:::i;:::-;20430:139;;20157:419;;;:::o;20582:182::-;20722:34;20718:1;20710:6;20706:14;20699:58;20582:182;:::o;20770:366::-;20912:3;20933:67;20997:2;20992:3;20933:67;:::i;:::-;20926:74;;21009:93;21098:3;21009:93;:::i;:::-;21127:2;21122:3;21118:12;21111:19;;20770:366;;;:::o;21142:419::-;21308:4;21346:2;21335:9;21331:18;21323:26;;21395:9;21389:4;21385:20;21381:1;21370:9;21366:17;21359:47;21423:131;21549:4;21423:131;:::i;:::-;21415:139;;21142:419;;;:::o;21567:179::-;21707:31;21703:1;21695:6;21691:14;21684:55;21567:179;:::o;21752:366::-;21894:3;21915:67;21979:2;21974:3;21915:67;:::i;:::-;21908:74;;21991:93;22080:3;21991:93;:::i;:::-;22109:2;22104:3;22100:12;22093:19;;21752:366;;;:::o;22124:419::-;22290:4;22328:2;22317:9;22313:18;22305:26;;22377:9;22371:4;22367:20;22363:1;22352:9;22348:17;22341:47;22405:131;22531:4;22405:131;:::i;:::-;22397:139;;22124:419;;;:::o;22549:224::-;22689:34;22685:1;22677:6;22673:14;22666:58;22758:7;22753:2;22745:6;22741:15;22734:32;22549:224;:::o;22779:366::-;22921:3;22942:67;23006:2;23001:3;22942:67;:::i;:::-;22935:74;;23018:93;23107:3;23018:93;:::i;:::-;23136:2;23131:3;23127:12;23120:19;;22779:366;;;:::o;23151:419::-;23317:4;23355:2;23344:9;23340:18;23332:26;;23404:9;23398:4;23394:20;23390:1;23379:9;23375:17;23368:47;23432:131;23558:4;23432:131;:::i;:::-;23424:139;;23151:419;;;:::o;23576:222::-;23716:34;23712:1;23704:6;23700:14;23693:58;23785:5;23780:2;23772:6;23768:15;23761:30;23576:222;:::o;23804:366::-;23946:3;23967:67;24031:2;24026:3;23967:67;:::i;:::-;23960:74;;24043:93;24132:3;24043:93;:::i;:::-;24161:2;24156:3;24152:12;24145:19;;23804:366;;;:::o;24176:419::-;24342:4;24380:2;24369:9;24365:18;24357:26;;24429:9;24423:4;24419:20;24415:1;24404:9;24400:17;24393:47;24457:131;24583:4;24457:131;:::i;:::-;24449:139;;24176:419;;;:::o;24601:169::-;24741:21;24737:1;24729:6;24725:14;24718:45;24601:169;:::o;24776:366::-;24918:3;24939:67;25003:2;24998:3;24939:67;:::i;:::-;24932:74;;25015:93;25104:3;25015:93;:::i;:::-;25133:2;25128:3;25124:12;25117:19;;24776:366;;;:::o;25148:419::-;25314:4;25352:2;25341:9;25337:18;25329:26;;25401:9;25395:4;25391:20;25387:1;25376:9;25372:17;25365:47;25429:131;25555:4;25429:131;:::i;:::-;25421:139;;25148:419;;;:::o;25573:160::-;25713:12;25709:1;25701:6;25697:14;25690:36;25573:160;:::o;25739:366::-;25881:3;25902:67;25966:2;25961:3;25902:67;:::i;:::-;25895:74;;25978:93;26067:3;25978:93;:::i;:::-;26096:2;26091:3;26087:12;26080:19;;25739:366;;;:::o;26111:419::-;26277:4;26315:2;26304:9;26300:18;26292:26;;26364:9;26358:4;26354:20;26350:1;26339:9;26335:17;26328:47;26392:131;26518:4;26392:131;:::i;:::-;26384:139;;26111:419;;;:::o;26536:174::-;26676:26;26672:1;26664:6;26660:14;26653:50;26536:174;:::o;26716:366::-;26858:3;26879:67;26943:2;26938:3;26879:67;:::i;:::-;26872:74;;26955:93;27044:3;26955:93;:::i;:::-;27073:2;27068:3;27064:12;27057:19;;26716:366;;;:::o;27088:419::-;27254:4;27292:2;27281:9;27277:18;27269:26;;27341:9;27335:4;27331:20;27327:1;27316:9;27312:17;27305:47;27369:131;27495:4;27369:131;:::i;:::-;27361:139;;27088:419;;;:::o;27513:410::-;27553:7;27576:20;27594:1;27576:20;:::i;:::-;27571:25;;27610:20;27628:1;27610:20;:::i;:::-;27605:25;;27665:1;27662;27658:9;27687:30;27705:11;27687:30;:::i;:::-;27676:41;;27866:1;27857:7;27853:15;27850:1;27847:22;27827:1;27820:9;27800:83;27777:139;;27896:18;;:::i;:::-;27777:139;27561:362;27513:410;;;;:::o;27929:180::-;27977:77;27974:1;27967:88;28074:4;28071:1;28064:15;28098:4;28095:1;28088:15;28115:185;28155:1;28172:20;28190:1;28172:20;:::i;:::-;28167:25;;28206:20;28224:1;28206:20;:::i;:::-;28201:25;;28245:1;28235:35;;28250:18;;:::i;:::-;28235:35;28292:1;28289;28285:9;28280:14;;28115:185;;;;:::o;28306:194::-;28346:4;28366:20;28384:1;28366:20;:::i;:::-;28361:25;;28400:20;28418:1;28400:20;:::i;:::-;28395:25;;28444:1;28441;28437:9;28429:17;;28468:1;28462:4;28459:11;28456:37;;;28473:18;;:::i;:::-;28456:37;28306:194;;;;:::o;28506:225::-;28646:34;28642:1;28634:6;28630:14;28623:58;28715:8;28710:2;28702:6;28698:15;28691:33;28506:225;:::o;28737:366::-;28879:3;28900:67;28964:2;28959:3;28900:67;:::i;:::-;28893:74;;28976:93;29065:3;28976:93;:::i;:::-;29094:2;29089:3;29085:12;29078:19;;28737:366;;;:::o;29109:419::-;29275:4;29313:2;29302:9;29298:18;29290:26;;29362:9;29356:4;29352:20;29348:1;29337:9;29333:17;29326:47;29390:131;29516:4;29390:131;:::i;:::-;29382:139;;29109:419;;;:::o;29534:442::-;29683:4;29721:2;29710:9;29706:18;29698:26;;29734:71;29802:1;29791:9;29787:17;29778:6;29734:71;:::i;:::-;29815:72;29883:2;29872:9;29868:18;29859:6;29815:72;:::i;:::-;29897;29965:2;29954:9;29950:18;29941:6;29897:72;:::i;:::-;29534:442;;;;;;:::o;29982:147::-;30083:11;30120:3;30105:18;;29982:147;;;;:::o;30135:114::-;;:::o;30255:398::-;30414:3;30435:83;30516:1;30511:3;30435:83;:::i;:::-;30428:90;;30527:93;30616:3;30527:93;:::i;:::-;30645:1;30640:3;30636:11;30629:18;;30255:398;;;:::o;30659:379::-;30843:3;30865:147;31008:3;30865:147;:::i;:::-;30858:154;;31029:3;31022:10;;30659:379;;;:::o;31044:143::-;31101:5;31132:6;31126:13;31117:22;;31148:33;31175:5;31148:33;:::i;:::-;31044:143;;;;:::o;31193:351::-;31263:6;31312:2;31300:9;31291:7;31287:23;31283:32;31280:119;;;31318:79;;:::i;:::-;31280:119;31438:1;31463:64;31519:7;31510:6;31499:9;31495:22;31463:64;:::i;:::-;31453:74;;31409:128;31193:351;;;;:::o;31550:85::-;31595:7;31624:5;31613:16;;31550:85;;;:::o;31641:158::-;31699:9;31732:61;31750:42;31759:32;31785:5;31759:32;:::i;:::-;31750:42;:::i;:::-;31732:61;:::i;:::-;31719:74;;31641:158;;;:::o;31805:147::-;31900:45;31939:5;31900:45;:::i;:::-;31895:3;31888:58;31805:147;;:::o;31958:114::-;32025:6;32059:5;32053:12;32043:22;;31958:114;;;:::o;32078:184::-;32177:11;32211:6;32206:3;32199:19;32251:4;32246:3;32242:14;32227:29;;32078:184;;;;:::o;32268:132::-;32335:4;32358:3;32350:11;;32388:4;32383:3;32379:14;32371:22;;32268:132;;;:::o;32406:108::-;32483:24;32501:5;32483:24;:::i;:::-;32478:3;32471:37;32406:108;;:::o;32520:179::-;32589:10;32610:46;32652:3;32644:6;32610:46;:::i;:::-;32688:4;32683:3;32679:14;32665:28;;32520:179;;;;:::o;32705:113::-;32775:4;32807;32802:3;32798:14;32790:22;;32705:113;;;:::o;32854:732::-;32973:3;33002:54;33050:5;33002:54;:::i;:::-;33072:86;33151:6;33146:3;33072:86;:::i;:::-;33065:93;;33182:56;33232:5;33182:56;:::i;:::-;33261:7;33292:1;33277:284;33302:6;33299:1;33296:13;33277:284;;;33378:6;33372:13;33405:63;33464:3;33449:13;33405:63;:::i;:::-;33398:70;;33491:60;33544:6;33491:60;:::i;:::-;33481:70;;33337:224;33324:1;33321;33317:9;33312:14;;33277:284;;;33281:14;33577:3;33570:10;;32978:608;;;32854:732;;;;:::o;33592:831::-;33855:4;33893:3;33882:9;33878:19;33870:27;;33907:71;33975:1;33964:9;33960:17;33951:6;33907:71;:::i;:::-;33988:80;34064:2;34053:9;34049:18;34040:6;33988:80;:::i;:::-;34115:9;34109:4;34105:20;34100:2;34089:9;34085:18;34078:48;34143:108;34246:4;34237:6;34143:108;:::i;:::-;34135:116;;34261:72;34329:2;34318:9;34314:18;34305:6;34261:72;:::i;:::-;34343:73;34411:3;34400:9;34396:19;34387:6;34343:73;:::i;:::-;33592:831;;;;;;;;:::o;34429:807::-;34678:4;34716:3;34705:9;34701:19;34693:27;;34730:71;34798:1;34787:9;34783:17;34774:6;34730:71;:::i;:::-;34811:72;34879:2;34868:9;34864:18;34855:6;34811:72;:::i;:::-;34893:80;34969:2;34958:9;34954:18;34945:6;34893:80;:::i;:::-;34983;35059:2;35048:9;35044:18;35035:6;34983:80;:::i;:::-;35073:73;35141:3;35130:9;35126:19;35117:6;35073:73;:::i;:::-;35156;35224:3;35213:9;35209:19;35200:6;35156:73;:::i;:::-;34429:807;;;;;;;;;:::o;35242:143::-;35299:5;35330:6;35324:13;35315:22;;35346:33;35373:5;35346:33;:::i;:::-;35242:143;;;;:::o;35391:663::-;35479:6;35487;35495;35544:2;35532:9;35523:7;35519:23;35515:32;35512:119;;;35550:79;;:::i;:::-;35512:119;35670:1;35695:64;35751:7;35742:6;35731:9;35727:22;35695:64;:::i;:::-;35685:74;;35641:128;35808:2;35834:64;35890:7;35881:6;35870:9;35866:22;35834:64;:::i;:::-;35824:74;;35779:129;35947:2;35973:64;36029:7;36020:6;36009:9;36005:22;35973:64;:::i;:::-;35963:74;;35918:129;35391:663;;;;;:::o
Swarm Source
ipfs://302260abf310b6ac29571dc2225017ce726380831cd453b994f9a0acf13e1683
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,356.43 | 0.00157485 | $5.29 |
Loading...
Loading
[ 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.