More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
KEN_Token
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-25 */ pragma solidity 0.8.4; // SPDX-License-Identifier: MIT /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal virtual view returns (address) { return msg.sender; } function _msgData() internal virtual view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Interface of the BEP20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-block.timestamp/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}( data ); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface Token { function transfer(address, uint256) external returns (bool); } contract KEN_Token is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "Kisu Inu Ken"; string private _symbol = "KEN"; uint8 private _decimals = 18; mapping(address => uint256) internal _reflectionBalance; mapping(address => uint256) internal _tokenBalance; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private constant MAX = ~uint256(0); uint256 internal _tokenTotal = 1000000 *10**18; uint256 internal _reflectionTotal = (MAX - (MAX % _tokenTotal)); mapping(address => bool) isExcludedFromFee; mapping(address => bool) internal _isExcluded; address[] internal _excluded; uint256 public _taxFee = 0; uint256 public _charityFee = 999999; uint256 public _taxFeeTotal; uint256 public _charityFeeTotal; address public charityAddress = address(this); event RewardsDistributed(uint256 amount); constructor() { isExcludedFromFee[_msgSender()] = true; isExcludedFromFee[address(this)] = true; _reflectionBalance[_msgSender()] = _reflectionTotal; emit Transfer(address(0), _msgSender(), _tokenTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public override view returns (uint256) { return _tokenTotal; } function balanceOf(address account) public override view returns (uint256) { if (_isExcluded[account]) return _tokenBalance[account]; return tokenFromReflection(_reflectionBalance[account]); } function transfer(address recipient, uint256 amount) public override virtual returns (bool) { _transfer(_msgSender(),recipient,amount); return true; } function allowance(address owner, address spender) public override view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override virtual returns (bool) { _transfer(sender,recipient,amount); _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub( amount,"ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function reflectionFromToken(uint256 tokenAmount, bool deductTransferFee) public view returns (uint256) { require(tokenAmount <= _tokenTotal, "Amount must be less than supply"); if (!deductTransferFee) { return tokenAmount.mul(_getReflectionRate()); } else { return tokenAmount.sub(tokenAmount.mul(_taxFee).div(10000)).mul( _getReflectionRate() ); } } function tokenFromReflection(uint256 reflectionAmount) public view returns (uint256) { require(reflectionAmount <= _reflectionTotal, "Amount must be less than total reflections"); uint256 currentRate = _getReflectionRate(); return reflectionAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,"AntiBot: Uniswap router cannot be excluded."); require(account != address(this), 'AntiBot: The contract it self cannot be excluded'); require(!_isExcluded[account], "AntiBot: Account is already excluded"); if (_reflectionBalance[account] > 0) { _tokenBalance[account] = tokenFromReflection( _reflectionBalance[account] ); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "AntiBot: Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tokenBalance[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 transferAmount = amount; uint256 rate = _getReflectionRate(); if(!isExcludedFromFee[sender] && !isExcludedFromFee[recipient]){ transferAmount = collectFee(sender,amount,rate); } //@dev Transfer reflection _reflectionBalance[sender] = _reflectionBalance[sender].sub(amount.mul(rate)); _reflectionBalance[recipient] = _reflectionBalance[recipient].add(transferAmount.mul(rate)); //@dev If any account belongs to the excludedAccount transfer token if (_isExcluded[sender]) { _tokenBalance[sender] = _tokenBalance[sender].sub(amount); } if (_isExcluded[recipient]) { _tokenBalance[recipient] = _tokenBalance[recipient].add(transferAmount); } emit Transfer(sender, recipient, transferAmount); } function collectFee(address account, uint256 amount, uint256 rate) private returns (uint256) { uint256 transferAmount = amount; uint256 charityFee = amount.mul(_charityFee).div(1000000); //@dev charity fee if(_charityFee != 0){ transferAmount = transferAmount.sub(charityFee); _reflectionBalance[charityAddress] = _reflectionBalance[charityAddress].add(charityFee.mul(rate)); _charityFeeTotal = _charityFeeTotal.add(charityFee); emit Transfer(account,charityAddress,charityFee); } return transferAmount; } function _getReflectionRate() private view returns (uint256) { uint256 reflectionSupply = _reflectionTotal; uint256 tokenSupply = _tokenTotal; for (uint256 i = 0; i < _excluded.length; i++) { if ( _reflectionBalance[_excluded[i]] > reflectionSupply || _tokenBalance[_excluded[i]] > tokenSupply ) return _reflectionTotal.div(_tokenTotal); reflectionSupply = reflectionSupply.sub( _reflectionBalance[_excluded[i]] ); tokenSupply = tokenSupply.sub(_tokenBalance[_excluded[i]]); } if (reflectionSupply < _reflectionTotal.div(_tokenTotal)) return _reflectionTotal.div(_tokenTotal); return reflectionSupply.div(tokenSupply); } function setExcludedFromFee(address account, bool excluded) public onlyOwner { isExcludedFromFee[account] = excluded; } function setTaxFee(uint256 fee) public onlyOwner { _taxFee = fee; } function setCharityFee(uint256 fee) public onlyOwner { _charityFee = fee; } // function to allow admin to transfer ETH from this contract function TransferETH(address payable recipient, uint256 amount) public onlyOwner { recipient.transfer(amount); } // function to allow admin to transfer ERC20 tokens from this contract function transferAnyERC20Tokens(address _tokenAddress, address _to, uint256 _amount) public onlyOwner { Token(_tokenAddress).transfer(_to, _amount); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityAddress","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setCharityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflectionAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600c81526020017f4b69737520496e75204b656e0000000000000000000000000000000000000000815250600190805190602001906200005192919062000394565b506040518060400160405280600381526020017f4b454e0000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000394565b506012600360006101000a81548160ff021916908360ff16021790555069d3c21bcecceda1000000600755600754600019620000dc9190620004ed565b600019620000eb919062000472565b6008556000600c55620f423f600d5530601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200014857600080fd5b5060006200015b6200038c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506001600960006200020f6200038c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060085460046000620002cf6200038c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200031d6200038c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200037e919062000455565b60405180910390a3620005b2565b600033905090565b828054620003a290620004b7565b90600052602060002090601f016020900481019282620003c6576000855562000412565b82601f10620003e157805160ff191683800117855562000412565b8280016001018555821562000412579182015b8281111562000411578251825591602001919060010190620003f4565b5b50905062000421919062000425565b5090565b5b808211156200044057600081600090555060010162000426565b5090565b6200044f81620004ad565b82525050565b60006020820190506200046c600083018462000444565b92915050565b60006200047f82620004ad565b91506200048c83620004ad565b925082821015620004a257620004a162000525565b5b828203905092915050565b6000819050919050565b60006002820490506001821680620004d057607f821691505b60208210811415620004e757620004e662000583565b5b50919050565b6000620004fa82620004ad565b91506200050783620004ad565b9250826200051a576200051962000554565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613ba280620005c26000396000f3fe6080604052600436106101c65760003560e01c80636a395ccb116100f7578063afcf2fc411610095578063f2cc0c1811610064578063f2cc0c181461069d578063f2fde38b146106c6578063f84354f1146106ef578063fd69c21514610718576101cd565b8063afcf2fc4146105cf578063c4081a4c146105fa578063cba0e99614610623578063dd62ed3e14610660576101cd565b80638da5cb5b116100d15780638da5cb5b146104ff57806395d89b411461052a578063a457c2d714610555578063a9059cbb14610592576101cd565b80636a395ccb1461048257806370a08231146104ab578063715018a6146104e8576101cd565b8063355bc60b116101645780633b124fe71161013e5780633b124fe7146103c657806340f8007a146103f15780634549b0391461041c5780636612e66f14610459576101cd565b8063355bc60b1461033357806335837f9e1461035e5780633950935114610389576101cd565b806320c7c596116101a057806320c7c5961461026557806323b872dd1461028e5780632d838119146102cb578063313ce56714610308576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610741565b6040516101f49190613178565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612dcd565b6107d3565b604051610231919061315d565b60405180910390f35b34801561024657600080fd5b5061024f6107f1565b60405161025c919061337a565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190612e32565b6107fb565b005b34801561029a57600080fd5b506102b560048036038101906102b09190612d42565b61089a565b6040516102c2919061315d565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190612e32565b610973565b6040516102ff919061337a565b60405180910390f35b34801561031457600080fd5b5061031d6109e1565b60405161032a9190613395565b60405180910390f35b34801561033f57600080fd5b506103486109f8565b604051610355919061337a565b60405180910390f35b34801561036a57600080fd5b506103736109fe565b604051610380919061337a565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190612dcd565b610a04565b6040516103bd919061315d565b60405180910390f35b3480156103d257600080fd5b506103db610ab7565b6040516103e8919061337a565b60405180910390f35b3480156103fd57600080fd5b50610406610abd565b604051610413919061337a565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612e5b565b610ac3565b604051610450919061337a565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b9190612d91565b610b8d565b005b34801561048e57600080fd5b506104a960048036038101906104a49190612d42565b610c7d565b005b3480156104b757600080fd5b506104d260048036038101906104cd9190612ca1565b610da5565b6040516104df919061337a565b60405180910390f35b3480156104f457600080fd5b506104fd610e90565b005b34801561050b57600080fd5b50610514610fe3565b6040516105219190613119565b60405180910390f35b34801561053657600080fd5b5061053f61100c565b60405161054c9190613178565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190612dcd565b61109e565b604051610589919061315d565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190612dcd565b61116b565b6040516105c6919061315d565b60405180910390f35b3480156105db57600080fd5b506105e4611189565b6040516105f19190613119565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612e32565b6111af565b005b34801561062f57600080fd5b5061064a60048036038101906106459190612ca1565b61124e565b604051610657919061315d565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190612d06565b6112a4565b604051610694919061337a565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190612ca1565b61132b565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190612ca1565b6116d1565b005b3480156106fb57600080fd5b5061071660048036038101906107119190612ca1565b611893565b005b34801561072457600080fd5b5061073f600480360381019061073a9190612cca565b611c7a565b005b6060600180546107509061357b565b80601f016020809104026020016040519081016040528092919081815260200182805461077c9061357b565b80156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b5050505050905090565b60006107e76107e0611d5a565b8484611d62565b6001905092915050565b6000600754905090565b610803611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108879061329a565b60405180910390fd5b80600d8190555050565b60006108a7848484611f2d565b610968846108b3611d5a565b61096385604051806060016040528060288152602001613b2060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610919611d5a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a29092919063ffffffff16565b611d62565b600190509392505050565b60006008548211156109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b1906131ba565b60405180910390fd5b60006109c4612506565b90506109d9818461287b90919063ffffffff16565b915050919050565b6000600360009054906101000a900460ff16905090565b600e5481565b600f5481565b6000610aad610a11611d5a565b84610aa88560066000610a22611d5a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c590919063ffffffff16565b611d62565b6001905092915050565b600c5481565b600d5481565b6000600754831115610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b019061325a565b60405180910390fd5b81610b3057610b29610b1a612506565b8461292390919063ffffffff16565b9050610b87565b610b84610b3b612506565b610b76610b67612710610b59600c548961292390919063ffffffff16565b61287b90919063ffffffff16565b8661299e90919063ffffffff16565b61292390919063ffffffff16565b90505b92915050565b610b95611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c199061329a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610c85611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d099061329a565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610d4d929190613134565b602060405180830381600087803b158015610d6757600080fd5b505af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f9190612e09565b50505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e4057600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610e8b565b610e88600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610973565b90505b919050565b610e98611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c9061329a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461101b9061357b565b80601f01602080910402602001604051908101604052809291908181526020018280546110479061357b565b80156110945780601f1061106957610100808354040283529160200191611094565b820191906000526020600020905b81548152906001019060200180831161107757829003601f168201915b5050505050905090565b60006111616110ab611d5a565b8461115c85604051806060016040528060258152602001613b4860259139600660006110d5611d5a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a29092919063ffffffff16565b611d62565b6001905092915050565b600061117f611178611d5a565b8484611f2d565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111b7611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b9061329a565b60405180910390fd5b80600c8190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611333611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b79061329a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906132fa565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a9906132da565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561153f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115369061335a565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611613576115cf600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610973565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116d9611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061329a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd906131da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61189b611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f9061329a565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab9061323a565b60405180910390fd5b60005b600b80549050811015611c76578173ffffffffffffffffffffffffffffffffffffffff16600b8281548110611a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c6357600b6001600b80549050611a7091906134ad565b81548110611aa7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8281548110611b0c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b805480611c29577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611c76565b8080611c6e906135ad565b9150506119b7565b5050565b611c82611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d069061329a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d55573d6000803e3d6000fd5b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc99061333a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e39906131fa565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f20919061337a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f949061331a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561200d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120049061319a565b60405180910390fd5b60008111612050576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612047906132ba565b60405180910390fd5b6000819050600061205f612506565b9050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121055750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612118576121158584836129e8565b91505b61217c61212e828561292390919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299e90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122236121d5828461292390919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c590919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561234e5761230a83600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299e90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612436576123f282600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612493919061337a565b60405180910390a35050505050565b60008383111582906124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e19190613178565b60405180910390fd5b50600083856124f991906134ad565b9050809150509392505050565b60008060085490506000600754905060005b600b80549050811015612821578260046000600b8481548110612564577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061267857508160056000600b8481548110612610577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561269e5761269460075460085461287b90919063ffffffff16565b9350505050612878565b61275460046000600b84815481106126df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461299e90919063ffffffff16565b925061280c60056000600b8481548110612797577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361299e90919063ffffffff16565b91508080612819906135ad565b915050612518565b5061283960075460085461287b90919063ffffffff16565b8210156128605761285760075460085461287b90919063ffffffff16565b92505050612878565b612873818361287b90919063ffffffff16565b925050505b90565b60006128bd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd5565b905092915050565b60008082846128d491906133cc565b905083811015612919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129109061321a565b60405180910390fd5b8091505092915050565b6000808314156129365760009050612998565b600082846129449190613453565b90508284826129539190613422565b14612993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298a9061327a565b60405180910390fd5b809150505b92915050565b60006129e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a2565b905092915050565b6000808390506000612a1a620f4240612a0c600d548861292390919063ffffffff16565b61287b90919063ffffffff16565b90506000600d5414612bc957612a39818361299e90919063ffffffff16565b9150612ac1612a51858361292390919063ffffffff16565b60046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c590919063ffffffff16565b60046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b3b81600f546128c590919063ffffffff16565b600f81905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bc0919061337a565b60405180910390a35b81925050509392505050565b60008083118290612c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c139190613178565b60405180910390fd5b5060008385612c2b9190613422565b9050809150509392505050565b600081359050612c4781613ac3565b92915050565b600081359050612c5c81613ada565b92915050565b600081359050612c7181613af1565b92915050565b600081519050612c8681613af1565b92915050565b600081359050612c9b81613b08565b92915050565b600060208284031215612cb357600080fd5b6000612cc184828501612c38565b91505092915050565b60008060408385031215612cdd57600080fd5b6000612ceb85828601612c4d565b9250506020612cfc85828601612c8c565b9150509250929050565b60008060408385031215612d1957600080fd5b6000612d2785828601612c38565b9250506020612d3885828601612c38565b9150509250929050565b600080600060608486031215612d5757600080fd5b6000612d6586828701612c38565b9350506020612d7686828701612c38565b9250506040612d8786828701612c8c565b9150509250925092565b60008060408385031215612da457600080fd5b6000612db285828601612c38565b9250506020612dc385828601612c62565b9150509250929050565b60008060408385031215612de057600080fd5b6000612dee85828601612c38565b9250506020612dff85828601612c8c565b9150509250929050565b600060208284031215612e1b57600080fd5b6000612e2984828501612c77565b91505092915050565b600060208284031215612e4457600080fd5b6000612e5284828501612c8c565b91505092915050565b60008060408385031215612e6e57600080fd5b6000612e7c85828601612c8c565b9250506020612e8d85828601612c62565b9150509250929050565b612ea0816134e1565b82525050565b612eaf81613505565b82525050565b6000612ec0826133b0565b612eca81856133bb565b9350612eda818560208601613548565b612ee381613683565b840191505092915050565b6000612efb6023836133bb565b9150612f0682613694565b604082019050919050565b6000612f1e602a836133bb565b9150612f29826136e3565b604082019050919050565b6000612f416026836133bb565b9150612f4c82613732565b604082019050919050565b6000612f646022836133bb565b9150612f6f82613781565b604082019050919050565b6000612f87601b836133bb565b9150612f92826137d0565b602082019050919050565b6000612faa6024836133bb565b9150612fb5826137f9565b604082019050919050565b6000612fcd601f836133bb565b9150612fd882613848565b602082019050919050565b6000612ff06021836133bb565b9150612ffb82613871565b604082019050919050565b60006130136020836133bb565b915061301e826138c0565b602082019050919050565b60006130366029836133bb565b9150613041826138e9565b604082019050919050565b60006130596030836133bb565b915061306482613938565b604082019050919050565b600061307c602b836133bb565b915061308782613987565b604082019050919050565b600061309f6025836133bb565b91506130aa826139d6565b604082019050919050565b60006130c26024836133bb565b91506130cd82613a25565b604082019050919050565b60006130e56024836133bb565b91506130f082613a74565b604082019050919050565b61310481613531565b82525050565b6131138161353b565b82525050565b600060208201905061312e6000830184612e97565b92915050565b60006040820190506131496000830185612e97565b61315660208301846130fb565b9392505050565b60006020820190506131726000830184612ea6565b92915050565b600060208201905081810360008301526131928184612eb5565b905092915050565b600060208201905081810360008301526131b381612eee565b9050919050565b600060208201905081810360008301526131d381612f11565b9050919050565b600060208201905081810360008301526131f381612f34565b9050919050565b6000602082019050818103600083015261321381612f57565b9050919050565b6000602082019050818103600083015261323381612f7a565b9050919050565b6000602082019050818103600083015261325381612f9d565b9050919050565b6000602082019050818103600083015261327381612fc0565b9050919050565b6000602082019050818103600083015261329381612fe3565b9050919050565b600060208201905081810360008301526132b381613006565b9050919050565b600060208201905081810360008301526132d381613029565b9050919050565b600060208201905081810360008301526132f38161304c565b9050919050565b600060208201905081810360008301526133138161306f565b9050919050565b6000602082019050818103600083015261333381613092565b9050919050565b60006020820190508181036000830152613353816130b5565b9050919050565b60006020820190508181036000830152613373816130d8565b9050919050565b600060208201905061338f60008301846130fb565b92915050565b60006020820190506133aa600083018461310a565b92915050565b600081519050919050565b600082825260208201905092915050565b60006133d782613531565b91506133e283613531565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613417576134166135f6565b5b828201905092915050565b600061342d82613531565b915061343883613531565b92508261344857613447613625565b5b828204905092915050565b600061345e82613531565b915061346983613531565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134a2576134a16135f6565b5b828202905092915050565b60006134b882613531565b91506134c383613531565b9250828210156134d6576134d56135f6565b5b828203905092915050565b60006134ec82613511565b9050919050565b60006134fe82613511565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561356657808201518184015260208101905061354b565b83811115613575576000848401525b50505050565b6000600282049050600182168061359357607f821691505b602082108114156135a7576135a6613654565b5b50919050565b60006135b882613531565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135eb576135ea6135f6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416e7469426f743a204163636f756e7420697320616c726561647920696e636c60008201527f7564656400000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f416e7469426f743a2054686520636f6e74726163742069742073656c6620636160008201527f6e6e6f74206265206578636c7564656400000000000000000000000000000000602082015250565b7f416e7469426f743a20556e697377617020726f757465722063616e6e6f74206260008201527f65206578636c756465642e000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416e7469426f743a204163636f756e7420697320616c7265616479206578636c60008201527f7564656400000000000000000000000000000000000000000000000000000000602082015250565b613acc816134e1565b8114613ad757600080fd5b50565b613ae3816134f3565b8114613aee57600080fd5b50565b613afa81613505565b8114613b0557600080fd5b50565b613b1181613531565b8114613b1c57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bae70bee78ba875a158b2c526cc3a87542e4b1e656e3f854524c210cf2e734fa64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101c65760003560e01c80636a395ccb116100f7578063afcf2fc411610095578063f2cc0c1811610064578063f2cc0c181461069d578063f2fde38b146106c6578063f84354f1146106ef578063fd69c21514610718576101cd565b8063afcf2fc4146105cf578063c4081a4c146105fa578063cba0e99614610623578063dd62ed3e14610660576101cd565b80638da5cb5b116100d15780638da5cb5b146104ff57806395d89b411461052a578063a457c2d714610555578063a9059cbb14610592576101cd565b80636a395ccb1461048257806370a08231146104ab578063715018a6146104e8576101cd565b8063355bc60b116101645780633b124fe71161013e5780633b124fe7146103c657806340f8007a146103f15780634549b0391461041c5780636612e66f14610459576101cd565b8063355bc60b1461033357806335837f9e1461035e5780633950935114610389576101cd565b806320c7c596116101a057806320c7c5961461026557806323b872dd1461028e5780632d838119146102cb578063313ce56714610308576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610741565b6040516101f49190613178565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612dcd565b6107d3565b604051610231919061315d565b60405180910390f35b34801561024657600080fd5b5061024f6107f1565b60405161025c919061337a565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190612e32565b6107fb565b005b34801561029a57600080fd5b506102b560048036038101906102b09190612d42565b61089a565b6040516102c2919061315d565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190612e32565b610973565b6040516102ff919061337a565b60405180910390f35b34801561031457600080fd5b5061031d6109e1565b60405161032a9190613395565b60405180910390f35b34801561033f57600080fd5b506103486109f8565b604051610355919061337a565b60405180910390f35b34801561036a57600080fd5b506103736109fe565b604051610380919061337a565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190612dcd565b610a04565b6040516103bd919061315d565b60405180910390f35b3480156103d257600080fd5b506103db610ab7565b6040516103e8919061337a565b60405180910390f35b3480156103fd57600080fd5b50610406610abd565b604051610413919061337a565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612e5b565b610ac3565b604051610450919061337a565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b9190612d91565b610b8d565b005b34801561048e57600080fd5b506104a960048036038101906104a49190612d42565b610c7d565b005b3480156104b757600080fd5b506104d260048036038101906104cd9190612ca1565b610da5565b6040516104df919061337a565b60405180910390f35b3480156104f457600080fd5b506104fd610e90565b005b34801561050b57600080fd5b50610514610fe3565b6040516105219190613119565b60405180910390f35b34801561053657600080fd5b5061053f61100c565b60405161054c9190613178565b60405180910390f35b34801561056157600080fd5b5061057c60048036038101906105779190612dcd565b61109e565b604051610589919061315d565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190612dcd565b61116b565b6040516105c6919061315d565b60405180910390f35b3480156105db57600080fd5b506105e4611189565b6040516105f19190613119565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612e32565b6111af565b005b34801561062f57600080fd5b5061064a60048036038101906106459190612ca1565b61124e565b604051610657919061315d565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190612d06565b6112a4565b604051610694919061337a565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190612ca1565b61132b565b005b3480156106d257600080fd5b506106ed60048036038101906106e89190612ca1565b6116d1565b005b3480156106fb57600080fd5b5061071660048036038101906107119190612ca1565b611893565b005b34801561072457600080fd5b5061073f600480360381019061073a9190612cca565b611c7a565b005b6060600180546107509061357b565b80601f016020809104026020016040519081016040528092919081815260200182805461077c9061357b565b80156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b5050505050905090565b60006107e76107e0611d5a565b8484611d62565b6001905092915050565b6000600754905090565b610803611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108879061329a565b60405180910390fd5b80600d8190555050565b60006108a7848484611f2d565b610968846108b3611d5a565b61096385604051806060016040528060288152602001613b2060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610919611d5a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a29092919063ffffffff16565b611d62565b600190509392505050565b60006008548211156109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b1906131ba565b60405180910390fd5b60006109c4612506565b90506109d9818461287b90919063ffffffff16565b915050919050565b6000600360009054906101000a900460ff16905090565b600e5481565b600f5481565b6000610aad610a11611d5a565b84610aa88560066000610a22611d5a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c590919063ffffffff16565b611d62565b6001905092915050565b600c5481565b600d5481565b6000600754831115610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b019061325a565b60405180910390fd5b81610b3057610b29610b1a612506565b8461292390919063ffffffff16565b9050610b87565b610b84610b3b612506565b610b76610b67612710610b59600c548961292390919063ffffffff16565b61287b90919063ffffffff16565b8661299e90919063ffffffff16565b61292390919063ffffffff16565b90505b92915050565b610b95611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c199061329a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610c85611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d099061329a565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610d4d929190613134565b602060405180830381600087803b158015610d6757600080fd5b505af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f9190612e09565b50505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e4057600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610e8b565b610e88600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610973565b90505b919050565b610e98611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c9061329a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461101b9061357b565b80601f01602080910402602001604051908101604052809291908181526020018280546110479061357b565b80156110945780601f1061106957610100808354040283529160200191611094565b820191906000526020600020905b81548152906001019060200180831161107757829003601f168201915b5050505050905090565b60006111616110ab611d5a565b8461115c85604051806060016040528060258152602001613b4860259139600660006110d5611d5a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a29092919063ffffffff16565b611d62565b6001905092915050565b600061117f611178611d5a565b8484611f2d565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111b7611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b9061329a565b60405180910390fd5b80600c8190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611333611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b79061329a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906132fa565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a9906132da565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561153f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115369061335a565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611613576115cf600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610973565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116d9611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061329a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd906131da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61189b611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f9061329a565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab9061323a565b60405180910390fd5b60005b600b80549050811015611c76578173ffffffffffffffffffffffffffffffffffffffff16600b8281548110611a15577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c6357600b6001600b80549050611a7091906134ad565b81548110611aa7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8281548110611b0c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b805480611c29577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611c76565b8080611c6e906135ad565b9150506119b7565b5050565b611c82611d5a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d069061329a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d55573d6000803e3d6000fd5b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc99061333a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e39906131fa565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f20919061337a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f949061331a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561200d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120049061319a565b60405180910390fd5b60008111612050576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612047906132ba565b60405180910390fd5b6000819050600061205f612506565b9050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121055750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612118576121158584836129e8565b91505b61217c61212e828561292390919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299e90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122236121d5828461292390919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c590919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561234e5761230a83600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299e90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612436576123f282600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612493919061337a565b60405180910390a35050505050565b60008383111582906124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e19190613178565b60405180910390fd5b50600083856124f991906134ad565b9050809150509392505050565b60008060085490506000600754905060005b600b80549050811015612821578260046000600b8481548110612564577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061267857508160056000600b8481548110612610577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561269e5761269460075460085461287b90919063ffffffff16565b9350505050612878565b61275460046000600b84815481106126df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461299e90919063ffffffff16565b925061280c60056000600b8481548110612797577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361299e90919063ffffffff16565b91508080612819906135ad565b915050612518565b5061283960075460085461287b90919063ffffffff16565b8210156128605761285760075460085461287b90919063ffffffff16565b92505050612878565b612873818361287b90919063ffffffff16565b925050505b90565b60006128bd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd5565b905092915050565b60008082846128d491906133cc565b905083811015612919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129109061321a565b60405180910390fd5b8091505092915050565b6000808314156129365760009050612998565b600082846129449190613453565b90508284826129539190613422565b14612993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298a9061327a565b60405180910390fd5b809150505b92915050565b60006129e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a2565b905092915050565b6000808390506000612a1a620f4240612a0c600d548861292390919063ffffffff16565b61287b90919063ffffffff16565b90506000600d5414612bc957612a39818361299e90919063ffffffff16565b9150612ac1612a51858361292390919063ffffffff16565b60046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c590919063ffffffff16565b60046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b3b81600f546128c590919063ffffffff16565b600f81905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bc0919061337a565b60405180910390a35b81925050509392505050565b60008083118290612c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c139190613178565b60405180910390fd5b5060008385612c2b9190613422565b9050809150509392505050565b600081359050612c4781613ac3565b92915050565b600081359050612c5c81613ada565b92915050565b600081359050612c7181613af1565b92915050565b600081519050612c8681613af1565b92915050565b600081359050612c9b81613b08565b92915050565b600060208284031215612cb357600080fd5b6000612cc184828501612c38565b91505092915050565b60008060408385031215612cdd57600080fd5b6000612ceb85828601612c4d565b9250506020612cfc85828601612c8c565b9150509250929050565b60008060408385031215612d1957600080fd5b6000612d2785828601612c38565b9250506020612d3885828601612c38565b9150509250929050565b600080600060608486031215612d5757600080fd5b6000612d6586828701612c38565b9350506020612d7686828701612c38565b9250506040612d8786828701612c8c565b9150509250925092565b60008060408385031215612da457600080fd5b6000612db285828601612c38565b9250506020612dc385828601612c62565b9150509250929050565b60008060408385031215612de057600080fd5b6000612dee85828601612c38565b9250506020612dff85828601612c8c565b9150509250929050565b600060208284031215612e1b57600080fd5b6000612e2984828501612c77565b91505092915050565b600060208284031215612e4457600080fd5b6000612e5284828501612c8c565b91505092915050565b60008060408385031215612e6e57600080fd5b6000612e7c85828601612c8c565b9250506020612e8d85828601612c62565b9150509250929050565b612ea0816134e1565b82525050565b612eaf81613505565b82525050565b6000612ec0826133b0565b612eca81856133bb565b9350612eda818560208601613548565b612ee381613683565b840191505092915050565b6000612efb6023836133bb565b9150612f0682613694565b604082019050919050565b6000612f1e602a836133bb565b9150612f29826136e3565b604082019050919050565b6000612f416026836133bb565b9150612f4c82613732565b604082019050919050565b6000612f646022836133bb565b9150612f6f82613781565b604082019050919050565b6000612f87601b836133bb565b9150612f92826137d0565b602082019050919050565b6000612faa6024836133bb565b9150612fb5826137f9565b604082019050919050565b6000612fcd601f836133bb565b9150612fd882613848565b602082019050919050565b6000612ff06021836133bb565b9150612ffb82613871565b604082019050919050565b60006130136020836133bb565b915061301e826138c0565b602082019050919050565b60006130366029836133bb565b9150613041826138e9565b604082019050919050565b60006130596030836133bb565b915061306482613938565b604082019050919050565b600061307c602b836133bb565b915061308782613987565b604082019050919050565b600061309f6025836133bb565b91506130aa826139d6565b604082019050919050565b60006130c26024836133bb565b91506130cd82613a25565b604082019050919050565b60006130e56024836133bb565b91506130f082613a74565b604082019050919050565b61310481613531565b82525050565b6131138161353b565b82525050565b600060208201905061312e6000830184612e97565b92915050565b60006040820190506131496000830185612e97565b61315660208301846130fb565b9392505050565b60006020820190506131726000830184612ea6565b92915050565b600060208201905081810360008301526131928184612eb5565b905092915050565b600060208201905081810360008301526131b381612eee565b9050919050565b600060208201905081810360008301526131d381612f11565b9050919050565b600060208201905081810360008301526131f381612f34565b9050919050565b6000602082019050818103600083015261321381612f57565b9050919050565b6000602082019050818103600083015261323381612f7a565b9050919050565b6000602082019050818103600083015261325381612f9d565b9050919050565b6000602082019050818103600083015261327381612fc0565b9050919050565b6000602082019050818103600083015261329381612fe3565b9050919050565b600060208201905081810360008301526132b381613006565b9050919050565b600060208201905081810360008301526132d381613029565b9050919050565b600060208201905081810360008301526132f38161304c565b9050919050565b600060208201905081810360008301526133138161306f565b9050919050565b6000602082019050818103600083015261333381613092565b9050919050565b60006020820190508181036000830152613353816130b5565b9050919050565b60006020820190508181036000830152613373816130d8565b9050919050565b600060208201905061338f60008301846130fb565b92915050565b60006020820190506133aa600083018461310a565b92915050565b600081519050919050565b600082825260208201905092915050565b60006133d782613531565b91506133e283613531565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613417576134166135f6565b5b828201905092915050565b600061342d82613531565b915061343883613531565b92508261344857613447613625565b5b828204905092915050565b600061345e82613531565b915061346983613531565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134a2576134a16135f6565b5b828202905092915050565b60006134b882613531565b91506134c383613531565b9250828210156134d6576134d56135f6565b5b828203905092915050565b60006134ec82613511565b9050919050565b60006134fe82613511565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561356657808201518184015260208101905061354b565b83811115613575576000848401525b50505050565b6000600282049050600182168061359357607f821691505b602082108114156135a7576135a6613654565b5b50919050565b60006135b882613531565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135eb576135ea6135f6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416e7469426f743a204163636f756e7420697320616c726561647920696e636c60008201527f7564656400000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f416e7469426f743a2054686520636f6e74726163742069742073656c6620636160008201527f6e6e6f74206265206578636c7564656400000000000000000000000000000000602082015250565b7f416e7469426f743a20556e697377617020726f757465722063616e6e6f74206260008201527f65206578636c756465642e000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416e7469426f743a204163636f756e7420697320616c7265616479206578636c60008201527f7564656400000000000000000000000000000000000000000000000000000000602082015250565b613acc816134e1565b8114613ad757600080fd5b50565b613ae3816134f3565b8114613aee57600080fd5b50565b613afa81613505565b8114613b0557600080fd5b50565b613b1181613531565b8114613b1c57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bae70bee78ba875a158b2c526cc3a87542e4b1e656e3f854524c210cf2e734fa64736f6c63430008040033
Deployed Bytecode Sourcemap
18141:9136:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19440:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20378:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19717:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26687:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20547:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21991:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19626:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18981:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19015:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20889:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18900:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18933:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21510:473;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26449:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27069:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19824:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17460:148;;;;;;;;;;;;;:::i;:::-;;16818:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19531:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21115:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20047:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19059:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26594:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21392:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20227:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22298:617;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17763:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22923:493;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26855:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19440:83;19477:13;19510:5;19503:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19440:83;:::o;20378:161::-;20453:4;20470:39;20479:12;:10;:12::i;:::-;20493:7;20502:6;20470:8;:39::i;:::-;20527:4;20520:11;;20378:161;;;;:::o;19717:99::-;19770:7;19797:11;;19790:18;;19717:99;:::o;26687:89::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26765:3:::1;26751:11;:17;;;;26687:89:::0;:::o;20547:334::-;20653:4;20670:34;20680:6;20687:9;20697:6;20670:9;:34::i;:::-;20732:119;20741:6;20748:12;:10;:12::i;:::-;20761:89;20800:6;20761:89;;;;;;;;;;;;;;;;;:11;:19;20773:6;20761:19;;;;;;;;;;;;;;;:33;20781:12;:10;:12::i;:::-;20761:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20732:8;:119::i;:::-;20869:4;20862:11;;20547:334;;;;;:::o;21991:299::-;22067:7;22115:16;;22095;:36;;22087:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;22189:19;22211:20;:18;:20::i;:::-;22189:42;;22249:33;22270:11;22249:16;:20;;:33;;;;:::i;:::-;22242:40;;;21991:299;;;:::o;19626:83::-;19667:5;19692:9;;;;;;;;;;;19685:16;;19626:83;:::o;18981:27::-;;;;:::o;19015:31::-;;;;:::o;20889:218::-;20977:4;20994:83;21003:12;:10;:12::i;:::-;21017:7;21026:50;21065:10;21026:11;:25;21038:12;:10;:12::i;:::-;21026:25;;;;;;;;;;;;;;;:34;21052:7;21026:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20994:8;:83::i;:::-;21095:4;21088:11;;20889:218;;;;:::o;18900:26::-;;;;:::o;18933:35::-;;;;:::o;21510:473::-;21605:7;21648:11;;21633;:26;;21625:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21711:17;21706:270;;21752:37;21768:20;:18;:20::i;:::-;21752:11;:15;;:37;;;;:::i;:::-;21745:44;;;;21706:270;21846:118;21925:20;:18;:20::i;:::-;21846:52;21862:35;21891:5;21862:24;21878:7;;21862:11;:15;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;21846:11;:15;;:52;;;;:::i;:::-;:56;;:118;;;;:::i;:::-;21822:142;;21510:473;;;;;:::o;26449:133::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26566:8:::1;26537:17;:26;26555:7;26537:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;26449:133:::0;;:::o;27069:164::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27188:13:::1;27182:29;;;27212:3;27217:7;27182:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27069:164:::0;;;:::o;19824:215::-;19890:7;19914:11;:20;19926:7;19914:20;;;;;;;;;;;;;;;;;;;;;;;;;19910:55;;;19943:13;:22;19957:7;19943:22;;;;;;;;;;;;;;;;19936:29;;;;19910:55;19983:48;20003:18;:27;20022:7;20003:27;;;;;;;;;;;;;;;;19983:19;:48::i;:::-;19976:55;;19824:215;;;;:::o;17460:148::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17567:1:::1;17530:40;;17551:6;::::0;::::1;;;;;;;;17530:40;;;;;;;;;;;;17598:1;17581:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17460:148::o:0;16818:79::-;16856:7;16883:6;;;;;;;;;;;16876:13;;16818:79;:::o;19531:87::-;19570:13;19603:7;19596:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19531:87;:::o;21115:269::-;21208:4;21225:129;21234:12;:10;:12::i;:::-;21248:7;21257:96;21296:15;21257:96;;;;;;;;;;;;;;;;;:11;:25;21269:12;:10;:12::i;:::-;21257:25;;;;;;;;;;;;;;;:34;21283:7;21257:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;21225:8;:129::i;:::-;21372:4;21365:11;;21115:269;;;;:::o;20047:172::-;20133:4;20149:40;20159:12;:10;:12::i;:::-;20172:9;20182:6;20149:9;:40::i;:::-;20207:4;20200:11;;20047:172;;;;:::o;19059:45::-;;;;;;;;;;;;;:::o;26594:81::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26664:3:::1;26654:7;:13;;;;26594:81:::0;:::o;21392:110::-;21450:4;21474:11;:20;21486:7;21474:20;;;;;;;;;;;;;;;;;;;;;;;;;21467:27;;21392:110;;;:::o;20227:143::-;20308:7;20335:11;:18;20347:5;20335:18;;;;;;;;;;;;;;;:27;20354:7;20335:27;;;;;;;;;;;;;;;;20328:34;;20227:143;;;;:::o;22298:617::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22390:42:::1;22379:53;;:7;:53;;;;22371:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;22517:4;22498:24;;:7;:24;;;;22490:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;22595:11;:20;22607:7;22595:20;;;;;;;;;;;;;;;;;;;;;;;;;22594:21;22586:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22701:1;22671:18;:27;22690:7;22671:27;;;;;;;;;;;;;;;;:31;22667:169;;;22744:80;22782:18;:27;22801:7;22782:27;;;;;;;;;;;;;;;;22744:19;:80::i;:::-;22719:13;:22;22733:7;22719:22;;;;;;;;;;;;;;;:105;;;;22667:169;22869:4;22846:11;:20;22858:7;22846:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22884:9;22899:7;22884:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22298:617:::0;:::o;17763:281::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17886:1:::1;17866:22;;:8;:22;;;;17844:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;17999:8;17970:38;;17991:6;::::0;::::1;;;;;;;;17970:38;;;;;;;;;;;;18028:8;18019:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;17763:281:::0;:::o;22923:493::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23004:11:::1;:20;23016:7;23004:20;;;;;;;;;;;;;;;;;;;;;;;;;22996:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23081:9;23076:333;23100:9;:16;;;;23096:1;:20;23076:333;;;23158:7;23142:23;;:9;23152:1;23142:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;23138:260;;;23201:9;23230:1;23211:9;:16;;;;:20;;;;:::i;:::-;23201:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23186:9;23196:1;23186:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23276:1;23251:13;:22;23265:7;23251:22;;;;;;;;;;;;;;;:26;;;;23319:5;23296:11;:20;23308:7;23296:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23343:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23377:5;;23138:260;23118:3;;;;;:::i;:::-;;;;23076:333;;;;22923:493:::0;:::o;26855:126::-;17040:12;:10;:12::i;:::-;17030:22;;:6;;;;;;;;;;:22;;;17022:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26947:9:::1;:18;;:26;26966:6;26947:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26855:126:::0;;:::o;604:98::-;657:7;684:10;677:17;;604:98;:::o;23424:337::-;23534:1;23517:19;;:5;:19;;;;23509:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23615:1;23596:21;;:7;:21;;;;23588:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23699:6;23669:11;:18;23681:5;23669:18;;;;;;;;;;;;;;;:27;23688:7;23669:27;;;;;;;;;;;;;;;:36;;;;23737:7;23721:32;;23730:5;23721:32;;;23746:6;23721:32;;;;;;:::i;:::-;;;;;;;;23424:337;;;:::o;23769:1194::-;23884:1;23866:20;;:6;:20;;;;23858:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23968:1;23947:23;;:9;:23;;;;23939:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24038:1;24029:6;:10;24021:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24106:22;24131:6;24106:31;;24148:12;24163:20;:18;:20::i;:::-;24148:35;;24200:17;:25;24218:6;24200:25;;;;;;;;;;;;;;;;;;;;;;;;;24199:26;:59;;;;;24230:17;:28;24248:9;24230:28;;;;;;;;;;;;;;;;;;;;;;;;;24229:29;24199:59;24196:137;;;24291:30;24302:6;24309;24316:4;24291:10;:30::i;:::-;24274:47;;24196:137;24410:48;24441:16;24452:4;24441:6;:10;;:16;;;;:::i;:::-;24410:18;:26;24429:6;24410:26;;;;;;;;;;;;;;;;:30;;:48;;;;:::i;:::-;24381:18;:26;24400:6;24381:26;;;;;;;;;;;;;;;:77;;;;24501:59;24535:24;24554:4;24535:14;:18;;:24;;;;:::i;:::-;24501:18;:29;24520:9;24501:29;;;;;;;;;;;;;;;;:33;;:59;;;;:::i;:::-;24469:18;:29;24488:9;24469:29;;;;;;;;;;;;;;;:91;;;;24654:11;:19;24666:6;24654:19;;;;;;;;;;;;;;;;;;;;;;;;;24650:109;;;24714:33;24740:6;24714:13;:21;24728:6;24714:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;24690:13;:21;24704:6;24690:21;;;;;;;;;;;;;;;:57;;;;24650:109;24773:11;:22;24785:9;24773:22;;;;;;;;;;;;;;;;;;;;;;;;;24769:126;;;24839:44;24868:14;24839:13;:24;24853:9;24839:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;24812:13;:24;24826:9;24812:24;;;;;;;;;;;;;;;:71;;;;24769:126;24929:9;24912:43;;24921:6;24912:43;;;24940:14;24912:43;;;;;;:::i;:::-;;;;;;;;23769:1194;;;;;:::o;5519:226::-;5639:7;5672:1;5667;:6;;5675:12;5659:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5699:9;5715:1;5711;:5;;;;:::i;:::-;5699:17;;5736:1;5729:8;;;5519:226;;;;;:::o;25629:808::-;25681:7;25701:24;25728:16;;25701:43;;25755:19;25777:11;;25755:33;;25804:9;25799:458;25823:9;:16;;;;25819:1;:20;25799:458;;;25918:16;25883:18;:32;25902:9;25912:1;25902:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25883:32;;;;;;;;;;;;;;;;:51;:113;;;;25985:11;25955:13;:27;25969:9;25979:1;25969:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25955:27;;;;;;;;;;;;;;;;:41;25883:113;25861:191;;;26019:33;26040:11;;26019:16;;:20;;:33;;;;:::i;:::-;26012:40;;;;;;;25861:191;26086:86;26125:18;:32;26144:9;26154:1;26144:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26125:32;;;;;;;;;;;;;;;;26086:16;:20;;:86;;;;:::i;:::-;26067:105;;26201:44;26217:13;:27;26231:9;26241:1;26231:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26217:27;;;;;;;;;;;;;;;;26201:11;:15;;:44;;;;:::i;:::-;26187:58;;25841:3;;;;;:::i;:::-;;;;25799:458;;;;26290:33;26311:11;;26290:16;;:20;;:33;;;;:::i;:::-;26271:16;:52;26267:111;;;26345:33;26366:11;;26345:16;;:20;;:33;;;;:::i;:::-;26338:40;;;;;;26267:111;26396:33;26417:11;26396:16;:20;;:33;;;;:::i;:::-;26389:40;;;;25629:808;;:::o;6951:132::-;7009:7;7036:39;7040:1;7043;7036:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7029:46;;6951:132;;;;:::o;4616:181::-;4674:7;4694:9;4710:1;4706;:5;;;;:::i;:::-;4694:17;;4735:1;4730;:6;;4722:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4788:1;4781:8;;;4616:181;;;;:::o;6004:471::-;6062:7;6312:1;6307;:6;6303:47;;;6337:1;6330:8;;;;6303:47;6362:9;6378:1;6374;:5;;;;:::i;:::-;6362:17;;6407:1;6402;6398;:5;;;;:::i;:::-;:10;6390:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6466:1;6459:8;;;6004:471;;;;;:::o;5080:136::-;5138:7;5165:43;5169:1;5172;5165:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5158:50;;5080:136;;;;:::o;24975:646::-;25059:7;25089:22;25114:6;25089:31;;25131:18;25152:36;25180:7;25152:23;25163:11;;25152:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;25131:57;;25255:1;25240:11;;:16;25237:335;;25289:30;25308:10;25289:14;:18;;:30;;;;:::i;:::-;25272:47;;25371:60;25410:20;25425:4;25410:10;:14;;:20;;;;:::i;:::-;25371:18;:34;25390:14;;;;;;;;;;;25371:34;;;;;;;;;;;;;;;;:38;;:60;;;;:::i;:::-;25334:18;:34;25353:14;;;;;;;;;;;25334:34;;;;;;;;;;;;;;;:97;;;;25465:32;25486:10;25465:16;;:20;;:32;;;;:::i;:::-;25446:16;:51;;;;25534:14;;;;;;;;;;;25517:43;;25526:7;25517:43;;;25549:10;25517:43;;;;;;:::i;:::-;;;;;;;;25237:335;25599:14;25592:21;;;;24975:646;;;;;:::o;7579:312::-;7699:7;7731:1;7727;:5;7734:12;7719:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7758:9;7774:1;7770;:5;;;;:::i;:::-;7758:17;;7882:1;7875:8;;;7579:312;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:137::-;506:5;537:6;531:13;522:22;;553:30;577:5;553:30;:::i;:::-;512:77;;;;:::o;595:139::-;641:5;679:6;666:20;657:29;;695:33;722:5;695:33;:::i;:::-;647:87;;;;:::o;740:262::-;799:6;848:2;836:9;827:7;823:23;819:32;816:2;;;864:1;861;854:12;816:2;907:1;932:53;977:7;968:6;957:9;953:22;932:53;:::i;:::-;922:63;;878:117;806:196;;;;:::o;1008:423::-;1084:6;1092;1141:2;1129:9;1120:7;1116:23;1112:32;1109:2;;;1157:1;1154;1147:12;1109:2;1200:1;1225:61;1278:7;1269:6;1258:9;1254:22;1225:61;:::i;:::-;1215:71;;1171:125;1335:2;1361:53;1406:7;1397:6;1386:9;1382:22;1361:53;:::i;:::-;1351:63;;1306:118;1099:332;;;;;:::o;1437:407::-;1505:6;1513;1562:2;1550:9;1541:7;1537:23;1533:32;1530:2;;;1578:1;1575;1568:12;1530:2;1621:1;1646:53;1691:7;1682:6;1671:9;1667:22;1646:53;:::i;:::-;1636:63;;1592:117;1748:2;1774:53;1819:7;1810:6;1799:9;1795:22;1774:53;:::i;:::-;1764:63;;1719:118;1520:324;;;;;:::o;1850:552::-;1927:6;1935;1943;1992:2;1980:9;1971:7;1967:23;1963:32;1960:2;;;2008:1;2005;1998:12;1960:2;2051:1;2076:53;2121:7;2112:6;2101:9;2097:22;2076:53;:::i;:::-;2066:63;;2022:117;2178:2;2204:53;2249:7;2240:6;2229:9;2225:22;2204:53;:::i;:::-;2194:63;;2149:118;2306:2;2332:53;2377:7;2368:6;2357:9;2353:22;2332:53;:::i;:::-;2322:63;;2277:118;1950:452;;;;;:::o;2408:401::-;2473:6;2481;2530:2;2518:9;2509:7;2505:23;2501:32;2498:2;;;2546:1;2543;2536:12;2498:2;2589:1;2614:53;2659:7;2650:6;2639:9;2635:22;2614:53;:::i;:::-;2604:63;;2560:117;2716:2;2742:50;2784:7;2775:6;2764:9;2760:22;2742:50;:::i;:::-;2732:60;;2687:115;2488:321;;;;;:::o;2815:407::-;2883:6;2891;2940:2;2928:9;2919:7;2915:23;2911:32;2908:2;;;2956:1;2953;2946:12;2908:2;2999:1;3024:53;3069:7;3060:6;3049:9;3045:22;3024:53;:::i;:::-;3014:63;;2970:117;3126:2;3152:53;3197:7;3188:6;3177:9;3173:22;3152:53;:::i;:::-;3142:63;;3097:118;2898:324;;;;;:::o;3228:278::-;3295:6;3344:2;3332:9;3323:7;3319:23;3315:32;3312:2;;;3360:1;3357;3350:12;3312:2;3403:1;3428:61;3481:7;3472:6;3461:9;3457:22;3428:61;:::i;:::-;3418:71;;3374:125;3302:204;;;;:::o;3512:262::-;3571:6;3620:2;3608:9;3599:7;3595:23;3591:32;3588:2;;;3636:1;3633;3626:12;3588:2;3679:1;3704:53;3749:7;3740:6;3729:9;3725:22;3704:53;:::i;:::-;3694:63;;3650:117;3578:196;;;;:::o;3780:401::-;3845:6;3853;3902:2;3890:9;3881:7;3877:23;3873:32;3870:2;;;3918:1;3915;3908:12;3870:2;3961:1;3986:53;4031:7;4022:6;4011:9;4007:22;3986:53;:::i;:::-;3976:63;;3932:117;4088:2;4114:50;4156:7;4147:6;4136:9;4132:22;4114:50;:::i;:::-;4104:60;;4059:115;3860:321;;;;;:::o;4187:118::-;4274:24;4292:5;4274:24;:::i;:::-;4269:3;4262:37;4252:53;;:::o;4311:109::-;4392:21;4407:5;4392:21;:::i;:::-;4387:3;4380:34;4370:50;;:::o;4426:364::-;4514:3;4542:39;4575:5;4542:39;:::i;:::-;4597:71;4661:6;4656:3;4597:71;:::i;:::-;4590:78;;4677:52;4722:6;4717:3;4710:4;4703:5;4699:16;4677:52;:::i;:::-;4754:29;4776:6;4754:29;:::i;:::-;4749:3;4745:39;4738:46;;4518:272;;;;;:::o;4796:366::-;4938:3;4959:67;5023:2;5018:3;4959:67;:::i;:::-;4952:74;;5035:93;5124:3;5035:93;:::i;:::-;5153:2;5148:3;5144:12;5137:19;;4942:220;;;:::o;5168:366::-;5310:3;5331:67;5395:2;5390:3;5331:67;:::i;:::-;5324:74;;5407:93;5496:3;5407:93;:::i;:::-;5525:2;5520:3;5516:12;5509:19;;5314:220;;;:::o;5540:366::-;5682:3;5703:67;5767:2;5762:3;5703:67;:::i;:::-;5696:74;;5779:93;5868:3;5779:93;:::i;:::-;5897:2;5892:3;5888:12;5881:19;;5686:220;;;:::o;5912:366::-;6054:3;6075:67;6139:2;6134:3;6075:67;:::i;:::-;6068:74;;6151:93;6240:3;6151:93;:::i;:::-;6269:2;6264:3;6260:12;6253:19;;6058:220;;;:::o;6284:366::-;6426:3;6447:67;6511:2;6506:3;6447:67;:::i;:::-;6440:74;;6523:93;6612:3;6523:93;:::i;:::-;6641:2;6636:3;6632:12;6625:19;;6430:220;;;:::o;6656:366::-;6798:3;6819:67;6883:2;6878:3;6819:67;:::i;:::-;6812:74;;6895:93;6984:3;6895:93;:::i;:::-;7013:2;7008:3;7004:12;6997:19;;6802:220;;;:::o;7028:366::-;7170:3;7191:67;7255:2;7250:3;7191:67;:::i;:::-;7184:74;;7267:93;7356:3;7267:93;:::i;:::-;7385:2;7380:3;7376:12;7369:19;;7174:220;;;:::o;7400:366::-;7542:3;7563:67;7627:2;7622:3;7563:67;:::i;:::-;7556:74;;7639:93;7728:3;7639:93;:::i;:::-;7757:2;7752:3;7748:12;7741:19;;7546:220;;;:::o;7772:366::-;7914:3;7935:67;7999:2;7994:3;7935:67;:::i;:::-;7928:74;;8011:93;8100:3;8011:93;:::i;:::-;8129:2;8124:3;8120:12;8113:19;;7918:220;;;:::o;8144:366::-;8286:3;8307:67;8371:2;8366:3;8307:67;:::i;:::-;8300:74;;8383:93;8472:3;8383:93;:::i;:::-;8501:2;8496:3;8492:12;8485:19;;8290:220;;;:::o;8516:366::-;8658:3;8679:67;8743:2;8738:3;8679:67;:::i;:::-;8672:74;;8755:93;8844:3;8755:93;:::i;:::-;8873:2;8868:3;8864:12;8857:19;;8662:220;;;:::o;8888:366::-;9030:3;9051:67;9115:2;9110:3;9051:67;:::i;:::-;9044:74;;9127:93;9216:3;9127:93;:::i;:::-;9245:2;9240:3;9236:12;9229:19;;9034:220;;;:::o;9260:366::-;9402:3;9423:67;9487:2;9482:3;9423:67;:::i;:::-;9416:74;;9499:93;9588:3;9499:93;:::i;:::-;9617:2;9612:3;9608:12;9601:19;;9406:220;;;:::o;9632:366::-;9774:3;9795:67;9859:2;9854:3;9795:67;:::i;:::-;9788:74;;9871:93;9960:3;9871:93;:::i;:::-;9989:2;9984:3;9980:12;9973:19;;9778:220;;;:::o;10004:366::-;10146:3;10167:67;10231:2;10226:3;10167:67;:::i;:::-;10160:74;;10243:93;10332:3;10243:93;:::i;:::-;10361:2;10356:3;10352:12;10345:19;;10150:220;;;:::o;10376:118::-;10463:24;10481:5;10463:24;:::i;:::-;10458:3;10451:37;10441:53;;:::o;10500:112::-;10583:22;10599:5;10583:22;:::i;:::-;10578:3;10571:35;10561:51;;:::o;10618:222::-;10711:4;10749:2;10738:9;10734:18;10726:26;;10762:71;10830:1;10819:9;10815:17;10806:6;10762:71;:::i;:::-;10716:124;;;;:::o;10846:332::-;10967:4;11005:2;10994:9;10990:18;10982:26;;11018:71;11086:1;11075:9;11071:17;11062:6;11018:71;:::i;:::-;11099:72;11167:2;11156:9;11152:18;11143:6;11099:72;:::i;:::-;10972:206;;;;;:::o;11184:210::-;11271:4;11309:2;11298:9;11294:18;11286:26;;11322:65;11384:1;11373:9;11369:17;11360:6;11322:65;:::i;:::-;11276:118;;;;:::o;11400:313::-;11513:4;11551:2;11540:9;11536:18;11528:26;;11600:9;11594:4;11590:20;11586:1;11575:9;11571:17;11564:47;11628:78;11701:4;11692:6;11628:78;:::i;:::-;11620:86;;11518:195;;;;:::o;11719:419::-;11885:4;11923:2;11912:9;11908:18;11900:26;;11972:9;11966:4;11962:20;11958:1;11947:9;11943:17;11936:47;12000:131;12126:4;12000:131;:::i;:::-;11992:139;;11890:248;;;:::o;12144:419::-;12310:4;12348:2;12337:9;12333:18;12325:26;;12397:9;12391:4;12387:20;12383:1;12372:9;12368:17;12361:47;12425:131;12551:4;12425:131;:::i;:::-;12417:139;;12315:248;;;:::o;12569:419::-;12735:4;12773:2;12762:9;12758:18;12750:26;;12822:9;12816:4;12812:20;12808:1;12797:9;12793:17;12786:47;12850:131;12976:4;12850:131;:::i;:::-;12842:139;;12740:248;;;:::o;12994:419::-;13160:4;13198:2;13187:9;13183:18;13175:26;;13247:9;13241:4;13237:20;13233:1;13222:9;13218:17;13211:47;13275:131;13401:4;13275:131;:::i;:::-;13267:139;;13165:248;;;:::o;13419:419::-;13585:4;13623:2;13612:9;13608:18;13600:26;;13672:9;13666:4;13662:20;13658:1;13647:9;13643:17;13636:47;13700:131;13826:4;13700:131;:::i;:::-;13692:139;;13590:248;;;:::o;13844:419::-;14010:4;14048:2;14037:9;14033:18;14025:26;;14097:9;14091:4;14087:20;14083:1;14072:9;14068:17;14061:47;14125:131;14251:4;14125:131;:::i;:::-;14117:139;;14015:248;;;:::o;14269:419::-;14435:4;14473:2;14462:9;14458:18;14450:26;;14522:9;14516:4;14512:20;14508:1;14497:9;14493:17;14486:47;14550:131;14676:4;14550:131;:::i;:::-;14542:139;;14440:248;;;:::o;14694:419::-;14860:4;14898:2;14887:9;14883:18;14875:26;;14947:9;14941:4;14937:20;14933:1;14922:9;14918:17;14911:47;14975:131;15101:4;14975:131;:::i;:::-;14967:139;;14865:248;;;:::o;15119:419::-;15285:4;15323:2;15312:9;15308:18;15300:26;;15372:9;15366:4;15362:20;15358:1;15347:9;15343:17;15336:47;15400:131;15526:4;15400:131;:::i;:::-;15392:139;;15290:248;;;:::o;15544:419::-;15710:4;15748:2;15737:9;15733:18;15725:26;;15797:9;15791:4;15787:20;15783:1;15772:9;15768:17;15761:47;15825:131;15951:4;15825:131;:::i;:::-;15817:139;;15715:248;;;:::o;15969:419::-;16135:4;16173:2;16162:9;16158:18;16150:26;;16222:9;16216:4;16212:20;16208:1;16197:9;16193:17;16186:47;16250:131;16376:4;16250:131;:::i;:::-;16242:139;;16140:248;;;:::o;16394:419::-;16560:4;16598:2;16587:9;16583:18;16575:26;;16647:9;16641:4;16637:20;16633:1;16622:9;16618:17;16611:47;16675:131;16801:4;16675:131;:::i;:::-;16667:139;;16565:248;;;:::o;16819:419::-;16985:4;17023:2;17012:9;17008:18;17000:26;;17072:9;17066:4;17062:20;17058:1;17047:9;17043:17;17036:47;17100:131;17226:4;17100:131;:::i;:::-;17092:139;;16990:248;;;:::o;17244:419::-;17410:4;17448:2;17437:9;17433:18;17425:26;;17497:9;17491:4;17487:20;17483:1;17472:9;17468:17;17461:47;17525:131;17651:4;17525:131;:::i;:::-;17517:139;;17415:248;;;:::o;17669:419::-;17835:4;17873:2;17862:9;17858:18;17850:26;;17922:9;17916:4;17912:20;17908:1;17897:9;17893:17;17886:47;17950:131;18076:4;17950:131;:::i;:::-;17942:139;;17840:248;;;:::o;18094:222::-;18187:4;18225:2;18214:9;18210:18;18202:26;;18238:71;18306:1;18295:9;18291:17;18282:6;18238:71;:::i;:::-;18192:124;;;;:::o;18322:214::-;18411:4;18449:2;18438:9;18434:18;18426:26;;18462:67;18526:1;18515:9;18511:17;18502:6;18462:67;:::i;:::-;18416:120;;;;:::o;18542:99::-;18594:6;18628:5;18622:12;18612:22;;18601:40;;;:::o;18647:169::-;18731:11;18765:6;18760:3;18753:19;18805:4;18800:3;18796:14;18781:29;;18743:73;;;;:::o;18822:305::-;18862:3;18881:20;18899:1;18881:20;:::i;:::-;18876:25;;18915:20;18933:1;18915:20;:::i;:::-;18910:25;;19069:1;19001:66;18997:74;18994:1;18991:81;18988:2;;;19075:18;;:::i;:::-;18988:2;19119:1;19116;19112:9;19105:16;;18866:261;;;;:::o;19133:185::-;19173:1;19190:20;19208:1;19190:20;:::i;:::-;19185:25;;19224:20;19242:1;19224:20;:::i;:::-;19219:25;;19263:1;19253:2;;19268:18;;:::i;:::-;19253:2;19310:1;19307;19303:9;19298:14;;19175:143;;;;:::o;19324:348::-;19364:7;19387:20;19405:1;19387:20;:::i;:::-;19382:25;;19421:20;19439:1;19421:20;:::i;:::-;19416:25;;19609:1;19541:66;19537:74;19534:1;19531:81;19526:1;19519:9;19512:17;19508:105;19505:2;;;19616:18;;:::i;:::-;19505:2;19664:1;19661;19657:9;19646:20;;19372:300;;;;:::o;19678:191::-;19718:4;19738:20;19756:1;19738:20;:::i;:::-;19733:25;;19772:20;19790:1;19772:20;:::i;:::-;19767:25;;19811:1;19808;19805:8;19802:2;;;19816:18;;:::i;:::-;19802:2;19861:1;19858;19854:9;19846:17;;19723:146;;;;:::o;19875:96::-;19912:7;19941:24;19959:5;19941:24;:::i;:::-;19930:35;;19920:51;;;:::o;19977:104::-;20022:7;20051:24;20069:5;20051:24;:::i;:::-;20040:35;;20030:51;;;:::o;20087:90::-;20121:7;20164:5;20157:13;20150:21;20139:32;;20129:48;;;:::o;20183:126::-;20220:7;20260:42;20253:5;20249:54;20238:65;;20228:81;;;:::o;20315:77::-;20352:7;20381:5;20370:16;;20360:32;;;:::o;20398:86::-;20433:7;20473:4;20466:5;20462:16;20451:27;;20441:43;;;:::o;20490:307::-;20558:1;20568:113;20582:6;20579:1;20576:13;20568:113;;;20667:1;20662:3;20658:11;20652:18;20648:1;20643:3;20639:11;20632:39;20604:2;20601:1;20597:10;20592:15;;20568:113;;;20699:6;20696:1;20693:13;20690:2;;;20779:1;20770:6;20765:3;20761:16;20754:27;20690:2;20539:258;;;;:::o;20803:320::-;20847:6;20884:1;20878:4;20874:12;20864:22;;20931:1;20925:4;20921:12;20952:18;20942:2;;21008:4;21000:6;20996:17;20986:27;;20942:2;21070;21062:6;21059:14;21039:18;21036:38;21033:2;;;21089:18;;:::i;:::-;21033:2;20854:269;;;;:::o;21129:233::-;21168:3;21191:24;21209:5;21191:24;:::i;:::-;21182:33;;21237:66;21230:5;21227:77;21224:2;;;21307:18;;:::i;:::-;21224:2;21354:1;21347:5;21343:13;21336:20;;21172:190;;;:::o;21368:180::-;21416:77;21413:1;21406:88;21513:4;21510:1;21503:15;21537:4;21534:1;21527:15;21554:180;21602:77;21599:1;21592:88;21699:4;21696:1;21689:15;21723:4;21720:1;21713:15;21740:180;21788:77;21785:1;21778:88;21885:4;21882:1;21875:15;21909:4;21906:1;21899:15;21926:102;21967:6;22018:2;22014:7;22009:2;22002:5;21998:14;21994:28;21984:38;;21974:54;;;:::o;22034:222::-;22174:34;22170:1;22162:6;22158:14;22151:58;22243:5;22238:2;22230:6;22226:15;22219:30;22140:116;:::o;22262:229::-;22402:34;22398:1;22390:6;22386:14;22379:58;22471:12;22466:2;22458:6;22454:15;22447:37;22368:123;:::o;22497:225::-;22637:34;22633:1;22625:6;22621:14;22614:58;22706:8;22701:2;22693:6;22689:15;22682:33;22603:119;:::o;22728:221::-;22868:34;22864:1;22856:6;22852:14;22845:58;22937:4;22932:2;22924:6;22920:15;22913:29;22834:115;:::o;22955:177::-;23095:29;23091:1;23083:6;23079:14;23072:53;23061:71;:::o;23138:223::-;23278:34;23274:1;23266:6;23262:14;23255:58;23347:6;23342:2;23334:6;23330:15;23323:31;23244:117;:::o;23367:181::-;23507:33;23503:1;23495:6;23491:14;23484:57;23473:75;:::o;23554:220::-;23694:34;23690:1;23682:6;23678:14;23671:58;23763:3;23758:2;23750:6;23746:15;23739:28;23660:114;:::o;23780:182::-;23920:34;23916:1;23908:6;23904:14;23897:58;23886:76;:::o;23968:228::-;24108:34;24104:1;24096:6;24092:14;24085:58;24177:11;24172:2;24164:6;24160:15;24153:36;24074:122;:::o;24202:235::-;24342:34;24338:1;24330:6;24326:14;24319:58;24411:18;24406:2;24398:6;24394:15;24387:43;24308:129;:::o;24443:230::-;24583:34;24579:1;24571:6;24567:14;24560:58;24652:13;24647:2;24639:6;24635:15;24628:38;24549:124;:::o;24679:224::-;24819:34;24815:1;24807:6;24803:14;24796:58;24888:7;24883:2;24875:6;24871:15;24864:32;24785:118;:::o;24909:223::-;25049:34;25045:1;25037:6;25033:14;25026:58;25118:6;25113:2;25105:6;25101:15;25094:31;25015:117;:::o;25138:223::-;25278:34;25274:1;25266:6;25262:14;25255:58;25347:6;25342:2;25334:6;25330:15;25323:31;25244:117;:::o;25367:122::-;25440:24;25458:5;25440:24;:::i;:::-;25433:5;25430:35;25420:2;;25479:1;25476;25469:12;25420:2;25410:79;:::o;25495:138::-;25576:32;25602:5;25576:32;:::i;:::-;25569:5;25566:43;25556:2;;25623:1;25620;25613:12;25556:2;25546:87;:::o;25639:116::-;25709:21;25724:5;25709:21;:::i;:::-;25702:5;25699:32;25689:2;;25745:1;25742;25735:12;25689:2;25679:76;:::o;25761:122::-;25834:24;25852:5;25834:24;:::i;:::-;25827:5;25824:35;25814:2;;25873:1;25870;25863:12;25814:2;25804:79;:::o
Swarm Source
ipfs://bae70bee78ba875a158b2c526cc3a87542e4b1e656e3f854524c210cf2e734fa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.