BscScan - Sponsored slots available. Book your slot here!
BEP-20
Source Code
Overview
Max Total Supply
987,609,643,366,377.591746ANTF
Holders
28,284
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
712,279,442.663058972402563714 ANTFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
AntfToken
Compiler Version
v0.8.1+commit.df193b15
Contract Source Code (Solidity)
/**
*Submitted for verification at BscScan.com on 2021-06-15
*/
pragma solidity ^0.8.0;
/*
GMEB
*/
// SPDX-License-Identifier: MIT
/**
* @dev Interface of the ERC20 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 Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
/*
* @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 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 view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin guidelines: functions revert instead
* of returning `false` on failure. This behavior is nonetheless conventional
* and does not conflict with the expectations of ERC20 applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor (string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(address sender, address recipient, uint256 amount) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be to transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}
contract Tax {
event SetBurnRatio(uint _newBurnRatio);
event SetLiquidRatio(uint _newLiquidRatio);
event SetCharityRatio(uint _newCharityRatio);
event SetCharityAddress(address _newCharityAddress);
event SetMinAutoLiquid(uint _newMinAutoLiquid);
uint private _burnRatio;
uint private _liquidRatio;
uint private _charityRatio;
uint constant denominator = 10000;
uint private _minAutoLiquid;
address private _charityAddress;
uint internal _totalTax;
function _setBurnRatio(
uint _newBurnRatio
)
internal
{
_burnRatio = _newBurnRatio;
emit SetBurnRatio(_newBurnRatio);
}
function _setLiquidRatio(
uint _newLiquidRatio
)
internal
{
_liquidRatio = _newLiquidRatio;
emit SetLiquidRatio(_newLiquidRatio);
}
function _setCharityRatio(
uint _newCharityRatio
)
internal
{
_charityRatio = _newCharityRatio;
emit SetCharityRatio(_newCharityRatio);
}
function _setCharityAddress(
address _newCharityAddress
)
internal
{
_charityAddress = _newCharityAddress;
emit SetCharityAddress(_newCharityAddress);
}
function _setMinAutoLiquid(
uint _newMinAutoLiquid
)
internal
{
_minAutoLiquid = _newMinAutoLiquid;
emit SetMinAutoLiquid(_newMinAutoLiquid);
}
function burnRatio()
public
view
returns(uint)
{
return _burnRatio;
}
function liquidRatio()
public
view
returns(uint)
{
return _liquidRatio;
}
function charityRatio()
public
view
returns(uint)
{
return _charityRatio;
}
function charityAddress()
public
view
returns(address)
{
return _charityAddress;
}
function minAutoLiquid()
public
view
returns(uint)
{
return _minAutoLiquid;
}
function getFeeAmounts(
uint _amount
)
public
view
returns(uint burnA, uint taxA)
{
uint tmp = _amount / denominator;
burnA = tmp * _burnRatio;
taxA = tmp * (_liquidRatio + _charityRatio);
}
function _splitLiquidCharityFromTax(
uint _maxAmount
)
internal
returns(uint liquidA, uint charityA)
{
uint _amount = _maxAmount > _totalTax ? _totalTax : _maxAmount;
uint tmp = _amount / (_liquidRatio + _charityRatio);
liquidA = tmp * _liquidRatio;
charityA = _amount - liquidA;
// reset
_totalTax -= _amount;
}
}
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
contract Sale {
using SafeMath for uint;
event SetPrice(uint _newPrice);
event SetSaleAmount(uint _oldSaleAmount, uint _newSaleAmount);
event SetSaleOwner(address payable _newSaleOwner);
event Buy(uint _tokenAmount);
uint private _price;
uint private _saleAmount;
address payable private _saleOwner;
function _setPrice(
uint _newPrice
)
internal
{
_price = _newPrice;
emit SetPrice(_newPrice);
}
function _setSaleAmount(
uint _newSaleAmount
)
internal
{
emit SetSaleAmount(_saleAmount, _newSaleAmount);
_saleAmount = _newSaleAmount;
}
function _setSaleOwner(
address payable _newSaleOwner
)
internal
{
_saleOwner = _newSaleOwner;
emit SetSaleOwner(_newSaleOwner);
}
function _saleStop()
internal
{
_setSaleAmount(0);
}
function _buy(
uint value
)
internal
returns(uint)
{
uint tokenAmount = value.mul(1 ether).div(_price);
_saleAmount = _saleAmount.sub(tokenAmount);
emit Buy(tokenAmount);
_saleOwner.transfer(value);
return tokenAmount;
}
function saleOwner()
public
view
returns(address payable)
{
return _saleOwner;
}
function price()
public
view
returns(uint)
{
return _price;
}
function saleAmount()
public
view
returns(uint)
{
return _saleAmount;
}
}
contract Referral {
event AddRef(address _address, address _ref);
event SetRefPercents(uint _newF1Percent, uint _newF2Percent, uint _newF3Percent);
mapping(address => address) private _refOf;
uint private _f1Percent;
uint private _f2Percent;
uint private _f3Percent;
function _setRefPercents(
uint _newF1Percent,
uint _newF2Percent,
uint _newF3Percent
)
internal
{
_f1Percent = _newF1Percent;
_f2Percent = _newF2Percent;
_f3Percent = _newF3Percent;
emit SetRefPercents(_newF1Percent, _newF2Percent, _newF3Percent);
}
function _addRef(
address _address,
address _ref
)
internal
{
if (_refOf[_address] == address(0x0) && _address != _ref) {
_refOf[_address] = _ref;
emit AddRef(_address, _ref);
}
}
function refOf(
address _address
)
public
view
returns(address)
{
return _refOf[_address];
}
function f1Percent()
public
view
returns(uint)
{
return _f1Percent;
}
function f2Percent()
public
view
returns(uint)
{
return _f2Percent;
}
function f3Percent()
public
view
returns(uint)
{
return _f3Percent;
}
}
contract Claim {
modifier onlyNotClaimed(address _claimer) {
require(!_isClaimed[_claimer], "already claimed!");
_;
}
mapping(address => bool) private _isClaimed;
uint private _claimCost;
uint private _claimAmount;
uint private _refClaimAmount;
bool private _isClaimStopped;
function _stopClaim()
internal
{
_isClaimStopped = true;
}
function _startClaim()
internal
{
_isClaimStopped = false;
}
function _setClaimCost(
uint _newClaimCost
)
internal
{
_claimCost = _newClaimCost;
}
function _setClaimAmount(
uint _newClaimAmount
)
internal
{
_claimAmount = _newClaimAmount;
}
function _setRefClaimAmount(
uint _newRefClaimAmount
)
internal
{
_refClaimAmount = _newRefClaimAmount;
}
function _claim(
address _claimer
)
internal
onlyNotClaimed(_claimer)
returns(uint, uint)
{
require(!_isClaimStopped, "Claimming programm has been stopped!");
_isClaimed[_claimer] = true;
if (_claimCost > 0) {
require(msg.value >= _claimCost, "claim cost a bit bnb!");
}
return (_claimAmount, _refClaimAmount);
}
function isClaimed(
address _claimer
)
public
view
returns(bool)
{
return _isClaimed[_claimer];
}
function isClaimStopped()
public
view
returns(bool)
{
return _isClaimStopped;
}
function claimCost()
public
view
returns(uint)
{
return _claimCost;
}
function claimAmount()
public
view
returns(uint)
{
return _claimAmount;
}
function refClaimAmount()
public
view
returns(uint)
{
return _refClaimAmount;
}
}
contract Admin {
modifier onlyAdmin() {
require(msg.sender == _admin, "is not admin!");
_;
}
address private _admin;
constructor (
address _initAdmin
)
{
_admin = _initAdmin;
}
function setAdmin(
address _newAdmin
)
public
onlyAdmin
{
_admin = _newAdmin;
}
function admin()
public
view
returns(address)
{
return _admin;
}
}
contract Whitelist {
event AddToWhitelist(address _address);
event RemoveFromWhitelist(address _address);
mapping(address => bool) private _isWhitelisted;
function _addToWhitelist(
address _address
)
internal
{
if (_isWhitelisted[_address]) {
return;
}
_isWhitelisted[_address] = true;
emit AddToWhitelist(_address);
}
function _removeFromWhitelist(
address _address
)
internal
{
if (!_isWhitelisted[_address]) {
return;
}
_isWhitelisted[_address] = false;
emit RemoveFromWhitelist(_address);
}
function isWhitelisted(
address _address
)
public
view
returns(bool)
{
return _isWhitelisted[_address];
}
}
contract Settings is Admin, Tax, Sale, Referral, Claim, Whitelist {
constructor (
address _initAdmin
)
Admin(_initAdmin)
{
}
/*
REFERRAL
*/
function setRefPercents(
uint _newF1Percent,
uint _newF2Percent,
uint _newF3Percent
)
public
onlyAdmin
{
_setRefPercents(_newF1Percent, _newF2Percent, _newF3Percent);
}
/*
SALE
*/
function setPrice(
uint _newPrice
)
public
onlyAdmin
{
_setPrice(_newPrice);
}
function setSaleAmount(
uint _newSaleAmount
)
public
onlyAdmin
{
_setSaleAmount(_newSaleAmount);
}
function setSaleOwner(
address payable _newSaleOwner
)
public
onlyAdmin
{
_setSaleOwner(_newSaleOwner);
}
function saleStop()
public
onlyAdmin
{
_saleStop();
}
/*
TAX
*/
function setBurnRatio(
uint _newBurnRatio
)
public
onlyAdmin
{
_setBurnRatio(_newBurnRatio);
}
function setLiquidRatio(
uint _newLiquidRatio
)
public
onlyAdmin
{
_setLiquidRatio(_newLiquidRatio);
}
function setCharityRatio(
uint _newCharityRatio
)
public
onlyAdmin
{
_setCharityRatio(_newCharityRatio);
}
function setCharityAddress(
address _newCharityAddress
)
public
onlyAdmin
{
_setCharityAddress(_newCharityAddress);
}
function setMinAutoLiquid(
uint _newMinAutoLiquid
)
public
onlyAdmin
{
_setMinAutoLiquid(_newMinAutoLiquid);
}
/*
WHITELIST
*/
function addToWhitelist(
address _address
)
public
onlyAdmin
{
_addToWhitelist(_address);
}
function removeFromWhitelist(
address _address
)
public
onlyAdmin
{
_removeFromWhitelist(_address);
}
/*
CLAIM
*/
function setClaimCost(
uint _newClaimCost
)
public
onlyAdmin
{
_setClaimCost(_newClaimCost);
}
function setClaimAmount(
uint _newClaimAmount
)
public
onlyAdmin
{
_setClaimAmount(_newClaimAmount);
}
function setRefClaimAmount(
uint _newRefClaimAmount
)
public
onlyAdmin
{
_setRefClaimAmount(_newRefClaimAmount);
}
function stopClaim()
public
onlyAdmin
{
_stopClaim();
}
function startClaim()
public
onlyAdmin
{
_startClaim();
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract AntfToken is ERC20, Settings {
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
address constant public uniswapV2FactoryAddr = address(0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73);
address constant public uniswapV2RouterAddr = address(0x10ED43C718714eb63d5aA57B78B54704E256024E);
address constant public WBNBAddr = address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address constant private ZERO_ADDRESS = address(0x0);
uint private _lastAutoSwapLiquidBlock;
constructor (string memory name, string memory symbol, address _initAdmin)
ERC20(name, symbol)
Settings(_initAdmin)
{
uniswapV2Router = IUniswapV2Router02(uniswapV2RouterAddr);
// Create a uniswap pair for this new token
address _uniswapV2Pair = IUniswapV2Factory(uniswapV2FactoryAddr)
.createPair(address(this), WBNBAddr);
uniswapV2Pair = _uniswapV2Pair;
_addToWhitelist(address(this));
uint initTotal = 1e6 * 1e9 ether;
uint initContractBalance = 275000 * 1e9 ether;
_mint(address(this), initContractBalance);
_mint(_initAdmin, initTotal - initContractBalance);
// Init
_setSaleAmount(initTotal);
_setMinAutoLiquid(totalSupply() * 5 / 10000);
_setSaleOwner(payable(0x5eD06B57A82dDdf9A5328e5035253EDb247d65ff));
_setCharityAddress(payable(0xDf2dF79841a1cc0eddA5fd20C5a2fd67406d6cBf));
// denominator = 10000
_setBurnRatio(200);
_setLiquidRatio(300);
_setCharityRatio(300);
_setClaimAmount(100 * 1e6 ether);
_setRefClaimAmount(50 * 1e6 ether);
// 1 bnb = 300 bil tokens
uint oneBnb = 320 * 1e9;
_setPrice(1 ether / oneBnb);
_setRefPercents(30, 15, 5);
}
receive() external payable {}
function _autoSwapAndLiquify(address _from) internal {
if (_totalTax >= minAutoLiquid() && _from != uniswapV2Pair) {
if (block.number != _lastAutoSwapLiquidBlock) {
_lastAutoSwapLiquidBlock = block.number;
swapAndLiquify();
}
}
}
function swapAndLiquify() public {
(uint liquidA, uint charityA) = _splitLiquidCharityFromTax(minAutoLiquid());
swapTokensForEth(charityA, charityAddress());
// split the contract balance into halves
uint256 half = liquidA / 2;
uint256 otherHalf = liquidA - half;
// swap tokens for ETH
uint initCoinBalance = address(this).balance;
swapTokensForEth(half, address(this)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered
// how much ETH did we just swap into?
uint256 addedCoinBalance = address(this).balance - initCoinBalance;
// add liquidity to uniswap
addLiquidity(otherHalf, addedCoinBalance, charityAddress());
emit SwapAndLiquify(half, addedCoinBalance, otherHalf);
}
function swapTokensForEth(uint256 tokenAmount, address to) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
to,
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount, address lpOwner) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
lpOwner,
block.timestamp
);
}
function _tax(
address sender,
address recipient,
uint amount
)
internal
returns(uint)
{
if (isWhitelisted(sender) || isWhitelisted(recipient)) {
return amount;
}
(uint burnA, uint taxA) = getFeeAmounts(amount);
_burn(sender, burnA);
_transfer(sender, address(this), taxA);
_totalTax += taxA;
require(taxA + burnA < amount, "invalid tax amount");
return amount - taxA - burnA;
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_autoSwapAndLiquify(_msgSender());
uint afterTaxAmount = _tax(_msgSender(), recipient, amount);
_transfer(_msgSender(), recipient, afterTaxAmount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
_autoSwapAndLiquify(sender);
uint afterTaxAmount = _tax(sender, recipient, amount);
_transfer(sender, recipient, afterTaxAmount);
uint256 currentAllowance = allowance(sender, _msgSender());
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
/*
Sale
*/
function buy(
address _ref
)
public
payable
{
uint tokenAmount = _buy(msg.value);
_transfer(address(this), _msgSender(), tokenAmount);
_addRef(_msgSender(), _ref);
address f1 = refOf(_msgSender());
// stop if F1 not found
if (f1 == ZERO_ADDRESS) {
return;
}
uint onePercent = tokenAmount / 100;
_transfer(address(this), f1, onePercent * f1Percent());
address f2 = refOf(f1);
// stop if F2 not found
if (f2 == ZERO_ADDRESS) {
return;
}
_transfer(address(this), f2, onePercent * f2Percent());
address f3 = refOf(f2);
// stop if F3 not found
if (f3 == ZERO_ADDRESS) {
return;
}
_transfer(address(this), f3, onePercent * f3Percent());
}
/*
CLAIM
*/
function claim(
address _ref
)
public
payable
{
require(tx.origin == msg.sender, "spammer go away!");
(uint claimAmount, uint refClaimAmount) = _claim(msg.sender);
_transfer(address(this), _msgSender(), claimAmount);
_transfer(address(this), _ref, refClaimAmount);
}
/*
SaleOwner
*/
function withdraw(
uint _amount
)
public
onlyAdmin
{
_transfer(address(this), saleOwner(), _amount);
require(balanceOf(address(this)) >= _totalTax, "withdraw too much!");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_initAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"address","name":"_ref","type":"address"}],"name":"AddRef","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"AddToWhitelist","type":"event"},{"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":false,"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"RemoveFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newBurnRatio","type":"uint256"}],"name":"SetBurnRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newCharityAddress","type":"address"}],"name":"SetCharityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newCharityRatio","type":"uint256"}],"name":"SetCharityRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newLiquidRatio","type":"uint256"}],"name":"SetLiquidRatio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newMinAutoLiquid","type":"uint256"}],"name":"SetMinAutoLiquid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"SetPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newF1Percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newF2Percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newF3Percent","type":"uint256"}],"name":"SetRefPercents","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_oldSaleAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newSaleAmount","type":"uint256"}],"name":"SetSaleAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address payable","name":"_newSaleOwner","type":"address"}],"name":"SetSaleOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"WBNBAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"burnRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ref","type":"address"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ref","type":"address"}],"name":"claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"f1Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"f2Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"f3Percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getFeeAmounts","outputs":[{"internalType":"uint256","name":"burnA","type":"uint256"},{"internalType":"uint256","name":"taxA","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isClaimStopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_claimer","type":"address"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAutoLiquid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refClaimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"refOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBurnRatio","type":"uint256"}],"name":"setBurnRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCharityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCharityRatio","type":"uint256"}],"name":"setCharityRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newClaimAmount","type":"uint256"}],"name":"setClaimAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newClaimCost","type":"uint256"}],"name":"setClaimCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLiquidRatio","type":"uint256"}],"name":"setLiquidRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinAutoLiquid","type":"uint256"}],"name":"setMinAutoLiquid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRefClaimAmount","type":"uint256"}],"name":"setRefClaimAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newF1Percent","type":"uint256"},{"internalType":"uint256","name":"_newF2Percent","type":"uint256"},{"internalType":"uint256","name":"_newF3Percent","type":"uint256"}],"name":"setRefPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSaleAmount","type":"uint256"}],"name":"setSaleAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newSaleOwner","type":"address"}],"name":"setSaleOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2FactoryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2RouterAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c06040523480156200001157600080fd5b5060405162005aea38038062005aea833981810160405281019062000037919062000a78565b8080848481600390805190602001906200005392919062000913565b5080600490805190602001906200006c92919062000913565b50505080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050507310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600073ca143ce32fe78f1f7019d7d551a6402fc5350c7373ffffffffffffffffffffffffffffffffffffffff1663c9c653963073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6040518363ffffffff1660e01b81526004016200016492919062000b94565b602060405180830381600087803b1580156200017f57600080fd5b505af115801562000194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ba919062000a4c565b90508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200020430620003b660201b60201c565b60006d314dc6448d9338c15b0a00000000905060006d0d8efcec73bbaf9b92a2c000000090506200023c3082620004a460201b60201c565b6200025b8482846200024f919062000dd0565b620004a460201b60201c565b6200026c826200060960201b60201c565b620002a96127106005620002856200065060201b60201c565b62000291919062000d6f565b6200029d919062000d37565b6200065a60201b60201c565b620002ce735ed06b57a82dddf9a5328e5035253edb247d65ff6200069d60201b60201c565b620002f373df2df79841a1cc0edda5fd20c5a2fd67406d6cbf6200071a60201b60201c565b6200030560c86200079760201b60201c565b6200031861012c620007da60201b60201c565b6200032b61012c6200081d60201b60201c565b620003476a52b7d2dcc80cd2e40000006200086060201b60201c565b620003636a295be96e640669720000006200086a60201b60201c565b6000644a817c800090506200039381670de0b6b3a764000062000387919062000d37565b6200087460201b60201c565b620003a9601e600f6005620008b760201b60201c565b505050505050506200100f565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156200040f57620004a1565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405162000498919062000b5a565b60405180910390a15b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200050e9062000bc1565b60405180910390fd5b6200052b600083836200090e60201b60201c565b80600260008282546200053f919062000cda565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000596919062000cda565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005fd919062000be3565b60405180910390a35050565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d54826040516200063e92919062000c00565b60405180910390a180600d8190555050565b6000600254905090565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd8160405162000692919062000be3565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd816040516200070f919062000b77565b60405180910390a150565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516200078c919062000b5a565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051620007cf919062000be3565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c28160405162000812919062000be3565b60405180910390a150565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405162000855919062000be3565b60405180910390a150565b8060158190555050565b8060168190555050565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051620008ac919062000be3565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051620009019392919062000c2d565b60405180910390a1505050565b505050565b828054620009219062000e93565b90600052602060002090601f01602090048101928262000945576000855562000991565b82601f106200096057805160ff191683800117855562000991565b8280016001018555821562000991579182015b828111156200099057825182559160200191906001019062000973565b5b509050620009a09190620009a4565b5090565b5b80821115620009bf576000816000905550600101620009a5565b5090565b6000620009da620009d48462000c93565b62000c6a565b905082815260208101848484011115620009f357600080fd5b62000a0084828562000e5d565b509392505050565b60008151905062000a198162000ff5565b92915050565b600082601f83011262000a3157600080fd5b815162000a43848260208601620009c3565b91505092915050565b60006020828403121562000a5f57600080fd5b600062000a6f8482850162000a08565b91505092915050565b60008060006060848603121562000a8e57600080fd5b600084015167ffffffffffffffff81111562000aa957600080fd5b62000ab78682870162000a1f565b935050602084015167ffffffffffffffff81111562000ad557600080fd5b62000ae38682870162000a1f565b925050604062000af68682870162000a08565b9150509250925092565b62000b0b8162000e1f565b82525050565b62000b1c8162000e0b565b82525050565b600062000b31601f8362000cc9565b915062000b3e8262000fcc565b602082019050919050565b62000b548162000e53565b82525050565b600060208201905062000b71600083018462000b11565b92915050565b600060208201905062000b8e600083018462000b00565b92915050565b600060408201905062000bab600083018562000b11565b62000bba602083018462000b11565b9392505050565b6000602082019050818103600083015262000bdc8162000b22565b9050919050565b600060208201905062000bfa600083018462000b49565b92915050565b600060408201905062000c17600083018562000b49565b62000c26602083018462000b49565b9392505050565b600060608201905062000c44600083018662000b49565b62000c53602083018562000b49565b62000c62604083018462000b49565b949350505050565b600062000c7662000c89565b905062000c84828262000ec9565b919050565b6000604051905090565b600067ffffffffffffffff82111562000cb15762000cb062000f8c565b5b62000cbc8262000fbb565b9050602081019050919050565b600082825260208201905092915050565b600062000ce78262000e53565b915062000cf48362000e53565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d2c5762000d2b62000eff565b5b828201905092915050565b600062000d448262000e53565b915062000d518362000e53565b92508262000d645762000d6362000f2e565b5b828204905092915050565b600062000d7c8262000e53565b915062000d898362000e53565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dc55762000dc462000eff565b5b828202905092915050565b600062000ddd8262000e53565b915062000dea8362000e53565b92508282101562000e005762000dff62000eff565b5b828203905092915050565b600062000e188262000e33565b9050919050565b600062000e2c8262000e33565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000e7d57808201518184015260208101905062000e60565b8381111562000e8d576000848401525b50505050565b6000600282049050600182168062000eac57607f821691505b6020821081141562000ec35762000ec262000f5d565b5b50919050565b62000ed48262000fbb565b810181811067ffffffffffffffff8211171562000ef65762000ef562000f8c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620010008162000e0b565b81146200100c57600080fd5b50565b60805160601c60a05160601c614a8562001065600039600081816113950152612ada015260008181610eea015281816130640152818161317a015281816131a10152818161323e01526132650152614a856000f3fe6080604052600436106103855760003560e01c806391b7f5ed116101d1578063bbf1746111610102578063e43252d7116100a0578063f088d5471161006f578063f088d54714610cff578063f851a44014610d1b578063ff142f9714610d46578063ff6c9bc914610d715761038c565b8063e43252d714610c6b578063e7847a4b14610c94578063e7cbbe7314610cbf578063ecbfc07714610ce85761038c565b8063cedfe42f116100dc578063cedfe42f14610bad578063d4e66bef14610bd8578063dd62ed3e14610c03578063e416d63214610c405761038c565b8063bbf1746114610b1a578063c6c28fd014610b45578063cea2085114610b825761038c565b8063a6cee3ae1161016f578063b1c7ef0c11610149578063b1c7ef0c14610a86578063b29ad50a14610aaf578063b3890faf14610ac6578063bbe15f8214610af15761038c565b8063a6cee3ae146109f5578063a9059cbb14610a1e578063afcf2fc414610a5b5761038c565b80639a18553b116101ab5780639a18553b146109395780639a2bcd2714610964578063a035b1fe1461098d578063a457c2d7146109b85761038c565b806391b7f5ed146108bc5780639370131f146108e557806395d89b411461090e5761038c565b80633af32abf116102b657806370a0823111610254578063882f414d11610223578063882f414d146108005780638aae995a1461082b5780638ab1d681146108565780638cc080251461087f5761038c565b806370a0823114610758578063729d5591146107955780638078059c146107be578063830953ab146107d55761038c565b8063510db7ca11610290578063510db7ca1461069d5780635192c82c146106db5780635294d01114610706578063704b6c021461072f5761038c565b80633af32abf1461060c5780634974c1db1461064957806349bd5a5e146106725761038c565b80631a7140631161032357806323b872dd116102fd57806323b872dd1461053e5780632e1a7d4d1461057b578063313ce567146105a457806339509351146105cf5761038c565b80631a714063146104ce5780631e83409a146104f7578063216eff87146105135761038c565b80630c9be46d1161035f5780630c9be46d146104245780630fb8184b1461044d5780631694505e1461047857806318160ddd146104a35761038c565b806306fdde03146103915780630880f58b146103bc578063095ea7b3146103e75761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610d88565b6040516103b39190613fe2565b60405180910390f35b3480156103c857600080fd5b506103d1610e1a565b6040516103de9190614204565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190613a92565b610e24565b60405161041b9190613fac565b60405180910390f35b34801561043057600080fd5b5061044b6004803603810190610446919061398c565b610e42565b005b34801561045957600080fd5b50610462610ede565b60405161046f9190614204565b60405180910390f35b34801561048457600080fd5b5061048d610ee8565b60405161049a9190613fc7565b60405180910390f35b3480156104af57600080fd5b506104b8610f0c565b6040516104c59190614204565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613ace565b610f16565b005b610511600480360381019061050c919061398c565b610fb2565b005b34801561051f57600080fd5b50610528611052565b6040516105359190614204565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613a43565b61105c565b6040516105729190613fac565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190613ace565b6110fa565b005b3480156105b057600080fd5b506105b96111ec565b6040516105c691906142d9565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f19190613a92565b6111f5565b6040516106039190613fac565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061398c565b6112a1565b6040516106409190613fac565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613ace565b6112f7565b005b34801561067e57600080fd5b50610687611393565b6040516106949190613eec565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190613ace565b6113b7565b6040516106d2929190614279565b60405180910390f35b3480156106e757600080fd5b506106f06113ff565b6040516106fd9190614204565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906139de565b611409565b005b34801561073b57600080fd5b506107566004803603810190610751919061398c565b6114a5565b005b34801561076457600080fd5b5061077f600480360381019061077a919061398c565b611579565b60405161078c9190614204565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613af7565b6115c1565b005b3480156107ca57600080fd5b506107d3611661565b005b3480156107e157600080fd5b506107ea6116fb565b6040516107f79190614204565b60405180910390f35b34801561080c57600080fd5b50610815611705565b6040516108229190614204565b60405180910390f35b34801561083757600080fd5b5061084061170f565b60405161084d9190614204565b60405180910390f35b34801561086257600080fd5b5061087d6004803603810190610878919061398c565b611719565b005b34801561088b57600080fd5b506108a660048036038101906108a1919061398c565b6117b5565b6040516108b39190613fac565b60405180910390f35b3480156108c857600080fd5b506108e360048036038101906108de9190613ace565b61180b565b005b3480156108f157600080fd5b5061090c60048036038101906109079190613ace565b6118a7565b005b34801561091a57600080fd5b50610923611943565b6040516109309190613fe2565b60405180910390f35b34801561094557600080fd5b5061094e6119d5565b60405161095b9190614204565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190613ace565b6119df565b005b34801561099957600080fd5b506109a2611a7b565b6040516109af9190614204565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190613a92565b611a85565b6040516109ec9190613fac565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190613ace565b611b70565b005b348015610a2a57600080fd5b50610a456004803603810190610a409190613a92565b611c0c565b604051610a529190613fac565b60405180910390f35b348015610a6757600080fd5b50610a70611c51565b604051610a7d9190613eec565b60405180910390f35b348015610a9257600080fd5b50610aad6004803603810190610aa89190613ace565b611c7b565b005b348015610abb57600080fd5b50610ac4611d17565b005b348015610ad257600080fd5b50610adb611dd4565b604051610ae89190613f07565b60405180910390f35b348015610afd57600080fd5b50610b186004803603810190610b139190613ace565b611dfe565b005b348015610b2657600080fd5b50610b2f611e9a565b604051610b3c9190614204565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061398c565b611ea4565b604051610b799190613eec565b60405180910390f35b348015610b8e57600080fd5b50610b97611f0d565b604051610ba49190613eec565b60405180910390f35b348015610bb957600080fd5b50610bc2611f25565b604051610bcf9190613eec565b60405180910390f35b348015610be457600080fd5b50610bed611f3d565b604051610bfa9190613fac565b60405180910390f35b348015610c0f57600080fd5b50610c2a6004803603810190610c259190613a07565b611f54565b604051610c379190614204565b60405180910390f35b348015610c4c57600080fd5b50610c55611fdb565b604051610c629190614204565b60405180910390f35b348015610c7757600080fd5b50610c926004803603810190610c8d919061398c565b611fe5565b005b348015610ca057600080fd5b50610ca9612081565b604051610cb69190614204565b60405180910390f35b348015610ccb57600080fd5b50610ce66004803603810190610ce19190613ace565b61208b565b005b348015610cf457600080fd5b50610cfd612127565b005b610d196004803603810190610d14919061398c565b6121c1565b005b348015610d2757600080fd5b50610d30612349565b604051610d3d9190613eec565b60405180910390f35b348015610d5257600080fd5b50610d5b612373565b604051610d689190613eec565b60405180910390f35b348015610d7d57600080fd5b50610d8661238b565b005b606060038054610d979061452e565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc39061452e565b8015610e105780601f10610de557610100808354040283529160200191610e10565b820191906000526020600020905b815481529060010190602001808311610df357829003601f168201915b5050505050905090565b6000601154905090565b6000610e38610e31612425565b848461242d565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec9906140c4565b60405180910390fd5b610edb816125f8565b50565b6000601454905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906140c4565b60405180910390fd5b610faf81612673565b50565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790614124565b60405180910390fd5b60008061102c336126b4565b915091506110423061103c612425565b8461284e565b61104d30848361284e565b505050565b6000600854905090565b600061106784612ac4565b6000611074858585612b4b565b905061108185858361284e565b60006110948661108f612425565b611f54565b9050838110156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090614104565b60405180910390fd5b6110ed866110e5612425565b86840361242d565b6001925050509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906140c4565b60405180910390fd5b61119c30611196611dd4565b8361284e565b600b546111a830611579565b10156111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090614044565b60405180910390fd5b50565b60006012905090565b6000611297611202612425565b848460016000611210612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112929190614349565b61242d565b6001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906140c4565b60405180910390fd5b61139081612c21565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000612710846113ca919061439f565b9050600654816113da91906143d0565b92506008546007546113ec9190614349565b816113f791906143d0565b915050915091565b6000600654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611499576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611490906140c4565b60405180910390fd5b6114a281612c62565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906140c4565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906140c4565b60405180910390fd5b61165c838383612cdd565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e8906140c4565b60405180910390fd5b6116f9612d32565b565b6000601554905090565b6000600954905090565b6000600d54905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906140c4565b60405180910390fd5b6117b281612d3e565b50565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461189b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611892906140c4565b60405180910390fd5b6118a481612e27565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906140c4565b60405180910390fd5b61194081612e68565b50565b6060600480546119529061452e565b80601f016020809104026020016040519081016040528092919081815260200182805461197e9061452e565b80156119cb5780601f106119a0576101008083540402835291602001916119cb565b820191906000526020600020905b8154815290600101906020018083116119ae57829003601f168201915b5050505050905090565b6000601054905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a66906140c4565b60405180910390fd5b611a7881612ea9565b50565b6000600c54905090565b60008060016000611a94612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b48906141e4565b60405180910390fd5b611b65611b5c612425565b8585840361242d565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906140c4565b60405180910390fd5b611c0981612eee565b50565b6000611c1e611c19612425565b612ac4565b6000611c32611c2b612425565b8585612b4b565b9050611c46611c3f612425565b858361284e565b600191505092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d02906140c4565b60405180910390fd5b611d1481612ef8565b50565b600080611d2a611d25611705565b612f02565b91509150611d3f81611d3a611c51565b612f79565b6000600283611d4e919061439f565b905060008184611d5e919061442a565b90506000479050611d6f8330612f79565b60008147611d7d919061442a565b9050611d918382611d8c611c51565b613238565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611dc4939291906142a2565b60405180910390a1505050505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e85906140c4565b60405180910390fd5b611e9781613322565b50565b6000601254905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b7310ed43c718714eb63d5aa57b78b54704e256024e81565b73bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b6000601760009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140c4565b60405180910390fd5b61207e8161332c565b50565b6000600754905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612112906140c4565b60405180910390fd5b61212481613416565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ae906140c4565b60405180910390fd5b6121bf613457565b565b60006121cc34613474565b90506121e0306121da612425565b8361284e565b6121f16121eb612425565b8361356c565b60006122036121fe612425565b611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612241575050612346565b6000606483612250919061439f565b905061226f308361225f6119d5565b8461226a91906143d0565b61284e565b600061227a83611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ba5750505050612346565b6122d730826122c7610e1a565b856122d291906143d0565b61284e565b60006122e282611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612323575050505050612346565b6123403082612330611e9a565b8661233b91906143d0565b61284e565b50505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73ca143ce32fe78f1f7019d7d551a6402fc5350c7381565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612412906140c4565b60405180910390fd5b6124236136f4565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561249d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612494906141a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561250d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250490614084565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125eb9190614204565b60405180910390a3505050565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516126689190613eec565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c2816040516126a99190614204565b60405180910390a150565b60008082601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614024565b60405180910390fd5b601760009054906101000a900460ff1615612795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278c906140e4565b60405180910390fd5b6001601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601454111561283e5760145434101561283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614164565b60405180910390fd5b5b6015546016549250925050915091565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561292e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292590614004565b60405180910390fd5b612939838383613711565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b6906140a4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a529190614349565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab69190614204565b60405180910390a350505050565b612acc611705565b600b5410158015612b2957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15612b48576019544314612b475743601981905550612b46611d17565b5b5b50565b6000612b56846112a1565b80612b665750612b65836112a1565b5b15612b7357819050612c1a565b600080612b7f846113b7565b91509150612b8d8683613716565b612b9886308361284e565b80600b6000828254612baa9190614349565b92505081905550838282612bbe9190614349565b10612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf5906141c4565b60405180910390fd5b818185612c0b919061442a565b612c15919061442a565b925050505b9392505050565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd81604051612c579190614204565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd81604051612cd29190613f07565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051612d25939291906142a2565b60405180910390a1505050565b612d3c6000612ea9565b565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d9457612e24565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c281604051612e1b9190613eec565b60405180910390a15b50565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051612e5d9190614204565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051612e9e9190614204565b60405180910390a150565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d5482604051612edc929190614279565b60405180910390a180600d8190555050565b8060168190555050565b8060158190555050565b6000806000600b548411612f165783612f1a565b600b545b90506000600854600754612f2e9190614349565b82612f39919061439f565b905060075481612f4991906143d0565b93508382612f57919061442a565b925081600b6000828254612f6b919061442a565b925050819055505050915091565b6000600267ffffffffffffffff811115612fbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612fea5781602001602082028036833780820191505090505b5090503081600081518110613028577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c857600080fd5b505afa1580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310091906139b5565b8160018151811061313a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061319f307f00000000000000000000000000000000000000000000000000000000000000008561242d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b815260040161320195949392919061421f565b600060405180830381600087803b15801561321b57600080fd5b505af115801561322f573d6000803e3d6000fd5b50505050505050565b613263307f00000000000000000000000000000000000000000000000000000000000000008561242d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b81526004016132c896959493929190613f4b565b6060604051808303818588803b1580156132e157600080fd5b505af11580156132f5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061331a9190613b46565b505050505050565b8060148190555050565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561338357613413565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405161340a9190613eec565b60405180910390a15b50565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405161344c9190614204565b60405180910390a150565b6000601760006101000a81548160ff021916908315150217905550565b6000806134a6600c54613498670de0b6b3a7640000866138e190919063ffffffff16565b6138f790919063ffffffff16565b90506134bd81600d5461390d90919063ffffffff16565b600d819055507f3e32821836f4caf5b64b2c8c6b460049a9797526960d31502f7575b8da39d5ae816040516134f29190614204565b60405180910390a1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613562573d6000803e3d6000fd5b5080915050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561363357508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156136f05780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4b5a65160b65ceef3b5428df4099f8a83aa7b36ca454012f42958b372510d9f782826040516136e7929190613f22565b60405180910390a15b5050565b6001601760006101000a81548160ff021916908315150217905550565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d90614144565b60405180910390fd5b61379282600083613711565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380f90614064565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461386f919061442a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138d49190614204565b60405180910390a3505050565b600081836138ef91906143d0565b905092915050565b60008183613905919061439f565b905092915050565b6000818361391b919061442a565b905092915050565b60008135905061393281614a0a565b92915050565b60008151905061394781614a0a565b92915050565b60008135905061395c81614a21565b92915050565b60008135905061397181614a38565b92915050565b60008151905061398681614a38565b92915050565b60006020828403121561399e57600080fd5b60006139ac84828501613923565b91505092915050565b6000602082840312156139c757600080fd5b60006139d584828501613938565b91505092915050565b6000602082840312156139f057600080fd5b60006139fe8482850161394d565b91505092915050565b60008060408385031215613a1a57600080fd5b6000613a2885828601613923565b9250506020613a3985828601613923565b9150509250929050565b600080600060608486031215613a5857600080fd5b6000613a6686828701613923565b9350506020613a7786828701613923565b9250506040613a8886828701613962565b9150509250925092565b60008060408385031215613aa557600080fd5b6000613ab385828601613923565b9250506020613ac485828601613962565b9150509250929050565b600060208284031215613ae057600080fd5b6000613aee84828501613962565b91505092915050565b600080600060608486031215613b0c57600080fd5b6000613b1a86828701613962565b9350506020613b2b86828701613962565b9250506040613b3c86828701613962565b9150509250925092565b600080600060608486031215613b5b57600080fd5b6000613b6986828701613977565b9350506020613b7a86828701613977565b9250506040613b8b86828701613977565b9150509250925092565b6000613ba18383613bbc565b60208301905092915050565b613bb681614470565b82525050565b613bc58161445e565b82525050565b613bd48161445e565b82525050565b6000613be582614304565b613bef8185614327565b9350613bfa836142f4565b8060005b83811015613c2b578151613c128882613b95565b9750613c1d8361431a565b925050600181019050613bfe565b5085935050505092915050565b613c4181614482565b82525050565b613c50816144c5565b82525050565b613c5f816144e9565b82525050565b6000613c708261430f565b613c7a8185614338565b9350613c8a8185602086016144fb565b613c93816145ed565b840191505092915050565b6000613cab602383614338565b9150613cb6826145fe565b604082019050919050565b6000613cce601083614338565b9150613cd98261464d565b602082019050919050565b6000613cf1601283614338565b9150613cfc82614676565b602082019050919050565b6000613d14602283614338565b9150613d1f8261469f565b604082019050919050565b6000613d37602283614338565b9150613d42826146ee565b604082019050919050565b6000613d5a602683614338565b9150613d658261473d565b604082019050919050565b6000613d7d600d83614338565b9150613d888261478c565b602082019050919050565b6000613da0602483614338565b9150613dab826147b5565b604082019050919050565b6000613dc3602883614338565b9150613dce82614804565b604082019050919050565b6000613de6601083614338565b9150613df182614853565b602082019050919050565b6000613e09602183614338565b9150613e148261487c565b604082019050919050565b6000613e2c601583614338565b9150613e37826148cb565b602082019050919050565b6000613e4f602583614338565b9150613e5a826148f4565b604082019050919050565b6000613e72602483614338565b9150613e7d82614943565b604082019050919050565b6000613e95601283614338565b9150613ea082614992565b602082019050919050565b6000613eb8602583614338565b9150613ec3826149bb565b604082019050919050565b613ed7816144ae565b82525050565b613ee6816144b8565b82525050565b6000602082019050613f016000830184613bcb565b92915050565b6000602082019050613f1c6000830184613bad565b92915050565b6000604082019050613f376000830185613bcb565b613f446020830184613bcb565b9392505050565b600060c082019050613f606000830189613bcb565b613f6d6020830188613ece565b613f7a6040830187613c56565b613f876060830186613c56565b613f946080830185613bcb565b613fa160a0830184613ece565b979650505050505050565b6000602082019050613fc16000830184613c38565b92915050565b6000602082019050613fdc6000830184613c47565b92915050565b60006020820190508181036000830152613ffc8184613c65565b905092915050565b6000602082019050818103600083015261401d81613c9e565b9050919050565b6000602082019050818103600083015261403d81613cc1565b9050919050565b6000602082019050818103600083015261405d81613ce4565b9050919050565b6000602082019050818103600083015261407d81613d07565b9050919050565b6000602082019050818103600083015261409d81613d2a565b9050919050565b600060208201905081810360008301526140bd81613d4d565b9050919050565b600060208201905081810360008301526140dd81613d70565b9050919050565b600060208201905081810360008301526140fd81613d93565b9050919050565b6000602082019050818103600083015261411d81613db6565b9050919050565b6000602082019050818103600083015261413d81613dd9565b9050919050565b6000602082019050818103600083015261415d81613dfc565b9050919050565b6000602082019050818103600083015261417d81613e1f565b9050919050565b6000602082019050818103600083015261419d81613e42565b9050919050565b600060208201905081810360008301526141bd81613e65565b9050919050565b600060208201905081810360008301526141dd81613e88565b9050919050565b600060208201905081810360008301526141fd81613eab565b9050919050565b60006020820190506142196000830184613ece565b92915050565b600060a0820190506142346000830188613ece565b6142416020830187613c56565b81810360408301526142538186613bda565b90506142626060830185613bcb565b61426f6080830184613ece565b9695505050505050565b600060408201905061428e6000830185613ece565b61429b6020830184613ece565b9392505050565b60006060820190506142b76000830186613ece565b6142c46020830185613ece565b6142d16040830184613ece565b949350505050565b60006020820190506142ee6000830184613edd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614354826144ae565b915061435f836144ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561439457614393614560565b5b828201905092915050565b60006143aa826144ae565b91506143b5836144ae565b9250826143c5576143c461458f565b5b828204905092915050565b60006143db826144ae565b91506143e6836144ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561441f5761441e614560565b5b828202905092915050565b6000614435826144ae565b9150614440836144ae565b92508282101561445357614452614560565b5b828203905092915050565b60006144698261448e565b9050919050565b600061447b8261448e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006144d0826144d7565b9050919050565b60006144e28261448e565b9050919050565b60006144f4826144ae565b9050919050565b60005b838110156145195780820151818401526020810190506144fe565b83811115614528576000848401525b50505050565b6000600282049050600182168061454657607f821691505b6020821081141561455a576145596145be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f616c726561647920636c61696d65642100000000000000000000000000000000600082015250565b7f776974686472617720746f6f206d756368210000000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f6973206e6f742061646d696e2100000000000000000000000000000000000000600082015250565b7f436c61696d6d696e672070726f6772616d6d20686173206265656e2073746f7060008201527f7065642100000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f7370616d6d657220676f20617761792100000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f636c61696d20636f737420612062697420626e62210000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f696e76616c69642074617820616d6f756e740000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b614a138161445e565b8114614a1e57600080fd5b50565b614a2a81614470565b8114614a3557600080fd5b50565b614a41816144ae565b8114614a4c57600080fd5b5056fea2646970667358221220f5c1bde7e1b6f46e87a68bea4e907c191b30de116efa334fdb6eac6b96c6704a64736f6c63430008010033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7000000000000000000000000000000000000000000000000000000000000000c616e74732e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414e544600000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106103855760003560e01c806391b7f5ed116101d1578063bbf1746111610102578063e43252d7116100a0578063f088d5471161006f578063f088d54714610cff578063f851a44014610d1b578063ff142f9714610d46578063ff6c9bc914610d715761038c565b8063e43252d714610c6b578063e7847a4b14610c94578063e7cbbe7314610cbf578063ecbfc07714610ce85761038c565b8063cedfe42f116100dc578063cedfe42f14610bad578063d4e66bef14610bd8578063dd62ed3e14610c03578063e416d63214610c405761038c565b8063bbf1746114610b1a578063c6c28fd014610b45578063cea2085114610b825761038c565b8063a6cee3ae1161016f578063b1c7ef0c11610149578063b1c7ef0c14610a86578063b29ad50a14610aaf578063b3890faf14610ac6578063bbe15f8214610af15761038c565b8063a6cee3ae146109f5578063a9059cbb14610a1e578063afcf2fc414610a5b5761038c565b80639a18553b116101ab5780639a18553b146109395780639a2bcd2714610964578063a035b1fe1461098d578063a457c2d7146109b85761038c565b806391b7f5ed146108bc5780639370131f146108e557806395d89b411461090e5761038c565b80633af32abf116102b657806370a0823111610254578063882f414d11610223578063882f414d146108005780638aae995a1461082b5780638ab1d681146108565780638cc080251461087f5761038c565b806370a0823114610758578063729d5591146107955780638078059c146107be578063830953ab146107d55761038c565b8063510db7ca11610290578063510db7ca1461069d5780635192c82c146106db5780635294d01114610706578063704b6c021461072f5761038c565b80633af32abf1461060c5780634974c1db1461064957806349bd5a5e146106725761038c565b80631a7140631161032357806323b872dd116102fd57806323b872dd1461053e5780632e1a7d4d1461057b578063313ce567146105a457806339509351146105cf5761038c565b80631a714063146104ce5780631e83409a146104f7578063216eff87146105135761038c565b80630c9be46d1161035f5780630c9be46d146104245780630fb8184b1461044d5780631694505e1461047857806318160ddd146104a35761038c565b806306fdde03146103915780630880f58b146103bc578063095ea7b3146103e75761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610d88565b6040516103b39190613fe2565b60405180910390f35b3480156103c857600080fd5b506103d1610e1a565b6040516103de9190614204565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190613a92565b610e24565b60405161041b9190613fac565b60405180910390f35b34801561043057600080fd5b5061044b6004803603810190610446919061398c565b610e42565b005b34801561045957600080fd5b50610462610ede565b60405161046f9190614204565b60405180910390f35b34801561048457600080fd5b5061048d610ee8565b60405161049a9190613fc7565b60405180910390f35b3480156104af57600080fd5b506104b8610f0c565b6040516104c59190614204565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613ace565b610f16565b005b610511600480360381019061050c919061398c565b610fb2565b005b34801561051f57600080fd5b50610528611052565b6040516105359190614204565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613a43565b61105c565b6040516105729190613fac565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d9190613ace565b6110fa565b005b3480156105b057600080fd5b506105b96111ec565b6040516105c691906142d9565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f19190613a92565b6111f5565b6040516106039190613fac565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061398c565b6112a1565b6040516106409190613fac565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190613ace565b6112f7565b005b34801561067e57600080fd5b50610687611393565b6040516106949190613eec565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190613ace565b6113b7565b6040516106d2929190614279565b60405180910390f35b3480156106e757600080fd5b506106f06113ff565b6040516106fd9190614204565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906139de565b611409565b005b34801561073b57600080fd5b506107566004803603810190610751919061398c565b6114a5565b005b34801561076457600080fd5b5061077f600480360381019061077a919061398c565b611579565b60405161078c9190614204565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613af7565b6115c1565b005b3480156107ca57600080fd5b506107d3611661565b005b3480156107e157600080fd5b506107ea6116fb565b6040516107f79190614204565b60405180910390f35b34801561080c57600080fd5b50610815611705565b6040516108229190614204565b60405180910390f35b34801561083757600080fd5b5061084061170f565b60405161084d9190614204565b60405180910390f35b34801561086257600080fd5b5061087d6004803603810190610878919061398c565b611719565b005b34801561088b57600080fd5b506108a660048036038101906108a1919061398c565b6117b5565b6040516108b39190613fac565b60405180910390f35b3480156108c857600080fd5b506108e360048036038101906108de9190613ace565b61180b565b005b3480156108f157600080fd5b5061090c60048036038101906109079190613ace565b6118a7565b005b34801561091a57600080fd5b50610923611943565b6040516109309190613fe2565b60405180910390f35b34801561094557600080fd5b5061094e6119d5565b60405161095b9190614204565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190613ace565b6119df565b005b34801561099957600080fd5b506109a2611a7b565b6040516109af9190614204565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190613a92565b611a85565b6040516109ec9190613fac565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190613ace565b611b70565b005b348015610a2a57600080fd5b50610a456004803603810190610a409190613a92565b611c0c565b604051610a529190613fac565b60405180910390f35b348015610a6757600080fd5b50610a70611c51565b604051610a7d9190613eec565b60405180910390f35b348015610a9257600080fd5b50610aad6004803603810190610aa89190613ace565b611c7b565b005b348015610abb57600080fd5b50610ac4611d17565b005b348015610ad257600080fd5b50610adb611dd4565b604051610ae89190613f07565b60405180910390f35b348015610afd57600080fd5b50610b186004803603810190610b139190613ace565b611dfe565b005b348015610b2657600080fd5b50610b2f611e9a565b604051610b3c9190614204565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061398c565b611ea4565b604051610b799190613eec565b60405180910390f35b348015610b8e57600080fd5b50610b97611f0d565b604051610ba49190613eec565b60405180910390f35b348015610bb957600080fd5b50610bc2611f25565b604051610bcf9190613eec565b60405180910390f35b348015610be457600080fd5b50610bed611f3d565b604051610bfa9190613fac565b60405180910390f35b348015610c0f57600080fd5b50610c2a6004803603810190610c259190613a07565b611f54565b604051610c379190614204565b60405180910390f35b348015610c4c57600080fd5b50610c55611fdb565b604051610c629190614204565b60405180910390f35b348015610c7757600080fd5b50610c926004803603810190610c8d919061398c565b611fe5565b005b348015610ca057600080fd5b50610ca9612081565b604051610cb69190614204565b60405180910390f35b348015610ccb57600080fd5b50610ce66004803603810190610ce19190613ace565b61208b565b005b348015610cf457600080fd5b50610cfd612127565b005b610d196004803603810190610d14919061398c565b6121c1565b005b348015610d2757600080fd5b50610d30612349565b604051610d3d9190613eec565b60405180910390f35b348015610d5257600080fd5b50610d5b612373565b604051610d689190613eec565b60405180910390f35b348015610d7d57600080fd5b50610d8661238b565b005b606060038054610d979061452e565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc39061452e565b8015610e105780601f10610de557610100808354040283529160200191610e10565b820191906000526020600020905b815481529060010190602001808311610df357829003601f168201915b5050505050905090565b6000601154905090565b6000610e38610e31612425565b848461242d565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec9906140c4565b60405180910390fd5b610edb816125f8565b50565b6000601454905090565b7f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e81565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906140c4565b60405180910390fd5b610faf81612673565b50565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790614124565b60405180910390fd5b60008061102c336126b4565b915091506110423061103c612425565b8461284e565b61104d30848361284e565b505050565b6000600854905090565b600061106784612ac4565b6000611074858585612b4b565b905061108185858361284e565b60006110948661108f612425565b611f54565b9050838110156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090614104565b60405180910390fd5b6110ed866110e5612425565b86840361242d565b6001925050509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611181906140c4565b60405180910390fd5b61119c30611196611dd4565b8361284e565b600b546111a830611579565b10156111e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e090614044565b60405180910390fd5b50565b60006012905090565b6000611297611202612425565b848460016000611210612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112929190614349565b61242d565b6001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e906140c4565b60405180910390fd5b61139081612c21565b50565b7f0000000000000000000000001fa86b51e923501142d54a68ceba8eae219d18fa81565b6000806000612710846113ca919061439f565b9050600654816113da91906143d0565b92506008546007546113ec9190614349565b816113f791906143d0565b915050915091565b6000600654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611499576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611490906140c4565b60405180910390fd5b6114a281612c62565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906140c4565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906140c4565b60405180910390fd5b61165c838383612cdd565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e8906140c4565b60405180910390fd5b6116f9612d32565b565b6000601554905090565b6000600954905090565b6000600d54905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a0906140c4565b60405180910390fd5b6117b281612d3e565b50565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461189b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611892906140c4565b60405180910390fd5b6118a481612e27565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906140c4565b60405180910390fd5b61194081612e68565b50565b6060600480546119529061452e565b80601f016020809104026020016040519081016040528092919081815260200182805461197e9061452e565b80156119cb5780601f106119a0576101008083540402835291602001916119cb565b820191906000526020600020905b8154815290600101906020018083116119ae57829003601f168201915b5050505050905090565b6000601054905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a66906140c4565b60405180910390fd5b611a7881612ea9565b50565b6000600c54905090565b60008060016000611a94612425565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b48906141e4565b60405180910390fd5b611b65611b5c612425565b8585840361242d565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906140c4565b60405180910390fd5b611c0981612eee565b50565b6000611c1e611c19612425565b612ac4565b6000611c32611c2b612425565b8585612b4b565b9050611c46611c3f612425565b858361284e565b600191505092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d02906140c4565b60405180910390fd5b611d1481612ef8565b50565b600080611d2a611d25611705565b612f02565b91509150611d3f81611d3a611c51565b612f79565b6000600283611d4e919061439f565b905060008184611d5e919061442a565b90506000479050611d6f8330612f79565b60008147611d7d919061442a565b9050611d918382611d8c611c51565b613238565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051611dc4939291906142a2565b60405180910390a1505050505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e85906140c4565b60405180910390fd5b611e9781613322565b50565b6000601254905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b7310ed43c718714eb63d5aa57b78b54704e256024e81565b73bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b6000601760009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601654905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140c4565b60405180910390fd5b61207e8161332c565b50565b6000600754905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612112906140c4565b60405180910390fd5b61212481613416565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ae906140c4565b60405180910390fd5b6121bf613457565b565b60006121cc34613474565b90506121e0306121da612425565b8361284e565b6121f16121eb612425565b8361356c565b60006122036121fe612425565b611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612241575050612346565b6000606483612250919061439f565b905061226f308361225f6119d5565b8461226a91906143d0565b61284e565b600061227a83611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122ba5750505050612346565b6122d730826122c7610e1a565b856122d291906143d0565b61284e565b60006122e282611ea4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612323575050505050612346565b6123403082612330611e9a565b8661233b91906143d0565b61284e565b50505050505b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73ca143ce32fe78f1f7019d7d551a6402fc5350c7381565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461241b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612412906140c4565b60405180910390fd5b6124236136f4565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561249d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612494906141a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561250d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250490614084565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125eb9190614204565b60405180910390a3505050565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa3de4742668f41ee43041a21d2a1cdd8348a6b4ae41987eaf3402a5ae21c8cd6816040516126689190613eec565b60405180910390a150565b806007819055507ffee64ab17673c538d2a7798285ed1d9c5fa63efbe47296d459255767739eb0c2816040516126a99190614204565b60405180910390a150565b60008082601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614024565b60405180910390fd5b601760009054906101000a900460ff1615612795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278c906140e4565b60405180910390fd5b6001601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601454111561283e5760145434101561283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614164565b60405180910390fd5b5b6015546016549250925050915091565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614184565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561292e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292590614004565b60405180910390fd5b612939838383613711565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b6906140a4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a529190614349565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab69190614204565b60405180910390a350505050565b612acc611705565b600b5410158015612b2957507f0000000000000000000000001fa86b51e923501142d54a68ceba8eae219d18fa73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15612b48576019544314612b475743601981905550612b46611d17565b5b5b50565b6000612b56846112a1565b80612b665750612b65836112a1565b5b15612b7357819050612c1a565b600080612b7f846113b7565b91509150612b8d8683613716565b612b9886308361284e565b80600b6000828254612baa9190614349565b92505081905550838282612bbe9190614349565b10612bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf5906141c4565b60405180910390fd5b818185612c0b919061442a565b612c15919061442a565b925050505b9392505050565b806009819055507f814da52c2803bbf49342e6e3a256441afba633c0e3467251ba8edd7d5db895bd81604051612c579190614204565b60405180910390a150565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc41c806c3ab6c35aa6e24d6c8edd4d1a527d9164320544cb18e04380ddbeebbd81604051612cd29190613f07565b60405180910390a150565b8260108190555081601181905550806012819055507f839c6a0692c8b75cc2c5d9a0f328cd1f012e6feaa015cf52ba1207db8a123366838383604051612d25939291906142a2565b60405180910390a1505050565b612d3c6000612ea9565b565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d9457612e24565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c281604051612e1b9190613eec565b60405180910390a15b50565b80600c819055507f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b181604051612e5d9190614204565b60405180910390a150565b806006819055507f561c0c1e2f06c2d7203866f82e9c9b966ed0ac193b3b5edc3ef2c0906242310081604051612e9e9190614204565b60405180910390a150565b7f41ded198f60708206d4071dc5d4e97c70f3bce95c01b648cf719ad73fc2d72ce600d5482604051612edc929190614279565b60405180910390a180600d8190555050565b8060168190555050565b8060158190555050565b6000806000600b548411612f165783612f1a565b600b545b90506000600854600754612f2e9190614349565b82612f39919061439f565b905060075481612f4991906143d0565b93508382612f57919061442a565b925081600b6000828254612f6b919061442a565b925050819055505050915091565b6000600267ffffffffffffffff811115612fbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612fea5781602001602082028036833780820191505090505b5090503081600081518110613028577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c857600080fd5b505afa1580156130dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310091906139b5565b8160018151811061313a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061319f307f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e8561242d565b7f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b815260040161320195949392919061421f565b600060405180830381600087803b15801561321b57600080fd5b505af115801561322f573d6000803e3d6000fd5b50505050505050565b613263307f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e8561242d565b7f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b81526004016132c896959493929190613f4b565b6060604051808303818588803b1580156132e157600080fd5b505af11580156132f5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061331a9190613b46565b505050505050565b8060148190555050565b601860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561338357613413565b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c78160405161340a9190613eec565b60405180910390a15b50565b806008819055507f77ca53d3f987532ecd233e8127f5ccc041862242af39151b85470ddff7506cf78160405161344c9190614204565b60405180910390a150565b6000601760006101000a81548160ff021916908315150217905550565b6000806134a6600c54613498670de0b6b3a7640000866138e190919063ffffffff16565b6138f790919063ffffffff16565b90506134bd81600d5461390d90919063ffffffff16565b600d819055507f3e32821836f4caf5b64b2c8c6b460049a9797526960d31502f7575b8da39d5ae816040516134f29190614204565b60405180910390a1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613562573d6000803e3d6000fd5b5080915050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561363357508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156136f05780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4b5a65160b65ceef3b5428df4099f8a83aa7b36ca454012f42958b372510d9f782826040516136e7929190613f22565b60405180910390a15b5050565b6001601760006101000a81548160ff021916908315150217905550565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377d90614144565b60405180910390fd5b61379282600083613711565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380f90614064565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461386f919061442a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138d49190614204565b60405180910390a3505050565b600081836138ef91906143d0565b905092915050565b60008183613905919061439f565b905092915050565b6000818361391b919061442a565b905092915050565b60008135905061393281614a0a565b92915050565b60008151905061394781614a0a565b92915050565b60008135905061395c81614a21565b92915050565b60008135905061397181614a38565b92915050565b60008151905061398681614a38565b92915050565b60006020828403121561399e57600080fd5b60006139ac84828501613923565b91505092915050565b6000602082840312156139c757600080fd5b60006139d584828501613938565b91505092915050565b6000602082840312156139f057600080fd5b60006139fe8482850161394d565b91505092915050565b60008060408385031215613a1a57600080fd5b6000613a2885828601613923565b9250506020613a3985828601613923565b9150509250929050565b600080600060608486031215613a5857600080fd5b6000613a6686828701613923565b9350506020613a7786828701613923565b9250506040613a8886828701613962565b9150509250925092565b60008060408385031215613aa557600080fd5b6000613ab385828601613923565b9250506020613ac485828601613962565b9150509250929050565b600060208284031215613ae057600080fd5b6000613aee84828501613962565b91505092915050565b600080600060608486031215613b0c57600080fd5b6000613b1a86828701613962565b9350506020613b2b86828701613962565b9250506040613b3c86828701613962565b9150509250925092565b600080600060608486031215613b5b57600080fd5b6000613b6986828701613977565b9350506020613b7a86828701613977565b9250506040613b8b86828701613977565b9150509250925092565b6000613ba18383613bbc565b60208301905092915050565b613bb681614470565b82525050565b613bc58161445e565b82525050565b613bd48161445e565b82525050565b6000613be582614304565b613bef8185614327565b9350613bfa836142f4565b8060005b83811015613c2b578151613c128882613b95565b9750613c1d8361431a565b925050600181019050613bfe565b5085935050505092915050565b613c4181614482565b82525050565b613c50816144c5565b82525050565b613c5f816144e9565b82525050565b6000613c708261430f565b613c7a8185614338565b9350613c8a8185602086016144fb565b613c93816145ed565b840191505092915050565b6000613cab602383614338565b9150613cb6826145fe565b604082019050919050565b6000613cce601083614338565b9150613cd98261464d565b602082019050919050565b6000613cf1601283614338565b9150613cfc82614676565b602082019050919050565b6000613d14602283614338565b9150613d1f8261469f565b604082019050919050565b6000613d37602283614338565b9150613d42826146ee565b604082019050919050565b6000613d5a602683614338565b9150613d658261473d565b604082019050919050565b6000613d7d600d83614338565b9150613d888261478c565b602082019050919050565b6000613da0602483614338565b9150613dab826147b5565b604082019050919050565b6000613dc3602883614338565b9150613dce82614804565b604082019050919050565b6000613de6601083614338565b9150613df182614853565b602082019050919050565b6000613e09602183614338565b9150613e148261487c565b604082019050919050565b6000613e2c601583614338565b9150613e37826148cb565b602082019050919050565b6000613e4f602583614338565b9150613e5a826148f4565b604082019050919050565b6000613e72602483614338565b9150613e7d82614943565b604082019050919050565b6000613e95601283614338565b9150613ea082614992565b602082019050919050565b6000613eb8602583614338565b9150613ec3826149bb565b604082019050919050565b613ed7816144ae565b82525050565b613ee6816144b8565b82525050565b6000602082019050613f016000830184613bcb565b92915050565b6000602082019050613f1c6000830184613bad565b92915050565b6000604082019050613f376000830185613bcb565b613f446020830184613bcb565b9392505050565b600060c082019050613f606000830189613bcb565b613f6d6020830188613ece565b613f7a6040830187613c56565b613f876060830186613c56565b613f946080830185613bcb565b613fa160a0830184613ece565b979650505050505050565b6000602082019050613fc16000830184613c38565b92915050565b6000602082019050613fdc6000830184613c47565b92915050565b60006020820190508181036000830152613ffc8184613c65565b905092915050565b6000602082019050818103600083015261401d81613c9e565b9050919050565b6000602082019050818103600083015261403d81613cc1565b9050919050565b6000602082019050818103600083015261405d81613ce4565b9050919050565b6000602082019050818103600083015261407d81613d07565b9050919050565b6000602082019050818103600083015261409d81613d2a565b9050919050565b600060208201905081810360008301526140bd81613d4d565b9050919050565b600060208201905081810360008301526140dd81613d70565b9050919050565b600060208201905081810360008301526140fd81613d93565b9050919050565b6000602082019050818103600083015261411d81613db6565b9050919050565b6000602082019050818103600083015261413d81613dd9565b9050919050565b6000602082019050818103600083015261415d81613dfc565b9050919050565b6000602082019050818103600083015261417d81613e1f565b9050919050565b6000602082019050818103600083015261419d81613e42565b9050919050565b600060208201905081810360008301526141bd81613e65565b9050919050565b600060208201905081810360008301526141dd81613e88565b9050919050565b600060208201905081810360008301526141fd81613eab565b9050919050565b60006020820190506142196000830184613ece565b92915050565b600060a0820190506142346000830188613ece565b6142416020830187613c56565b81810360408301526142538186613bda565b90506142626060830185613bcb565b61426f6080830184613ece565b9695505050505050565b600060408201905061428e6000830185613ece565b61429b6020830184613ece565b9392505050565b60006060820190506142b76000830186613ece565b6142c46020830185613ece565b6142d16040830184613ece565b949350505050565b60006020820190506142ee6000830184613edd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614354826144ae565b915061435f836144ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561439457614393614560565b5b828201905092915050565b60006143aa826144ae565b91506143b5836144ae565b9250826143c5576143c461458f565b5b828204905092915050565b60006143db826144ae565b91506143e6836144ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561441f5761441e614560565b5b828202905092915050565b6000614435826144ae565b9150614440836144ae565b92508282101561445357614452614560565b5b828203905092915050565b60006144698261448e565b9050919050565b600061447b8261448e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006144d0826144d7565b9050919050565b60006144e28261448e565b9050919050565b60006144f4826144ae565b9050919050565b60005b838110156145195780820151818401526020810190506144fe565b83811115614528576000848401525b50505050565b6000600282049050600182168061454657607f821691505b6020821081141561455a576145596145be565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f616c726561647920636c61696d65642100000000000000000000000000000000600082015250565b7f776974686472617720746f6f206d756368210000000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f6973206e6f742061646d696e2100000000000000000000000000000000000000600082015250565b7f436c61696d6d696e672070726f6772616d6d20686173206265656e2073746f7060008201527f7065642100000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f7370616d6d657220676f20617761792100000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f636c61696d20636f737420612062697420626e62210000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f696e76616c69642074617820616d6f756e740000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b614a138161445e565b8114614a1e57600080fd5b50565b614a2a81614470565b8114614a3557600080fd5b50565b614a41816144ae565b8114614a4c57600080fd5b5056fea2646970667358221220f5c1bde7e1b6f46e87a68bea4e907c191b30de116efa334fdb6eac6b96c6704a64736f6c63430008010033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7000000000000000000000000000000000000000000000000000000000000000c616e74732e66696e616e636500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004414e544600000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): ants.finance
Arg [1] : symbol (string): ANTF
Arg [2] : _initAdmin (address): 0xB8AB670d6F527DD70785320292142d85fA7E0da7
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000b8ab670d6f527dd70785320292142d85fa7e0da7
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [4] : 616e74732e66696e616e63650000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 414e544600000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
35052:7362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6203:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27615:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8370:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32873:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29553:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35536:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7323:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32547:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41790:344;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16881:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40253:566;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42179:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7165:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9888:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31150:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33049:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35594:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17277:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16631:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32101:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30196:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7494:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31530:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32265:90;;;;;;;;;;;;;:::i;:::-;;29676:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17146:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26281:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33405:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29255:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31807:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32394:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6422:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27492:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31944:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26166:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10606:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33910:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39946:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17010:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33749:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37438:831;;;;;;;;;;;;;:::i;:::-;;26032:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33596:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27738:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27332:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35337:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35441:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29420:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8072:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29803:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33255:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16754:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32708:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34183:94;;;;;;;;;;;;;:::i;:::-;;40859:890;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30334:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35232:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34083:92;;;;;;;;;;;;;:::i;:::-;;6203:100;6257:13;6290:5;6283:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6203:100;:::o;27615:115::-;27683:4;27712:10;;27705:17;;27615:115;:::o;8370:169::-;8453:4;8470:39;8479:12;:10;:12::i;:::-;8493:7;8502:6;8470:8;:39::i;:::-;8527:4;8520:11;;8370:169;;;;:::o;32873:168::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32995:38:::1;33014:18;32995;:38::i;:::-;32873:168:::0;:::o;29553:115::-;29621:4;29650:10;;29643:17;;29553:115;:::o;35536:51::-;;;:::o;7323:108::-;7384:7;7411:12;;7404:19;;7323:108;:::o;32547:153::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32660:32:::1;32676:15;32660;:32::i;:::-;32547:153:::0;:::o;41790:344::-;41905:10;41892:23;;:9;:23;;;41884:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;41948:16;41966:19;41989:18;41996:10;41989:6;:18::i;:::-;41947:60;;;;42018:51;42036:4;42043:12;:10;:12::i;:::-;42057:11;42018:9;:51::i;:::-;42080:46;42098:4;42105;42111:14;42080:9;:46::i;:::-;41790:344;;;:::o;16881:121::-;16952:4;16981:13;;16974:20;;16881:121;:::o;40253:566::-;40359:4;40376:27;40396:6;40376:19;:27::i;:::-;40414:19;40436:31;40441:6;40449:9;40460:6;40436:4;:31::i;:::-;40414:53;;40478:44;40488:6;40496:9;40507:14;40478:9;:44::i;:::-;40535:24;40562:31;40572:6;40580:12;:10;:12::i;:::-;40562:9;:31::i;:::-;40535:58;;40632:6;40612:16;:26;;40604:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;40719:57;40728:6;40736:12;:10;:12::i;:::-;40769:6;40750:16;:25;40719:8;:57::i;:::-;40807:4;40800:11;;;;40253:566;;;;;:::o;42179:232::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;42278::::1;42296:4;42303:11;:9;:11::i;:::-;42316:7;42278:9;:46::i;:::-;42371:9;;42343:24;42361:4;42343:9;:24::i;:::-;:37;;42335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42179:232:::0;:::o;7165:93::-;7223:5;7248:2;7241:9;;7165:93;:::o;9888:215::-;9976:4;9993:80;10002:12;:10;:12::i;:::-;10016:7;10062:10;10025:11;:25;10037:12;:10;:12::i;:::-;10025:25;;;;;;;;;;;;;;;:34;10051:7;10025:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9993:8;:80::i;:::-;10091:4;10084:11;;9888:215;;;;:::o;31150:165::-;31254:4;31283:14;:24;31298:8;31283:24;;;;;;;;;;;;;;;;;;;;;;;;;31276:31;;31150:165;;;:::o;33049:161::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33166:36:::1;33184:17;33166;:36::i;:::-;33049:161:::0;:::o;35594:38::-;;;:::o;17277:268::-;17377:10;17389:9;17416:8;15532:5;17427:7;:21;;;;:::i;:::-;17416:32;;17473:10;;17467:3;:16;;;;:::i;:::-;17459:24;;17523:13;;17508:12;;:28;;;;:::i;:::-;17501:3;:36;;;;:::i;:::-;17494:43;;17277:268;;;;:::o;16631:115::-;16699:4;16728:10;;16721:17;;16631:115;:::o;32101:156::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32221:28:::1;32235:13;32221;:28::i;:::-;32101:156:::0;:::o;30196:130::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;30309:9:::1;30300:6;;:18;;;;;;;;;;;;;;;;;;30196:130:::0;:::o;7494:127::-;7568:7;7595:9;:18;7605:7;7595:18;;;;;;;;;;;;;;;;7588:25;;7494:127;;;:::o;31530:237::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31699:60:::1;31715:13;31730;31745;31699:15;:60::i;:::-;31530:237:::0;;;:::o;32265:90::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32336:11:::1;:9;:11::i;:::-;32265:90::o:0;29676:119::-;29746:4;29775:12;;29768:19;;29676:119;:::o;17146:123::-;17218:4;17247:14;;17240:21;;17146:123;:::o;26281:117::-;26350:4;26379:11;;26372:18;;26281:117;:::o;33405:152::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33519:30:::1;33540:8;33519:20;:30::i;:::-;33405:152:::0;:::o;29255:157::-;29355:4;29384:10;:20;29395:8;29384:20;;;;;;;;;;;;;;;;;;;;;;;;;29377:27;;29255:157;;;:::o;31807:129::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;31908:20:::1;31918:9;31908;:20::i;:::-;31807:129:::0;:::o;32394:145::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32503:28:::1;32517:13;32503;:28::i;:::-;32394:145:::0;:::o;6422:104::-;6478:13;6511:7;6504:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:104;:::o;27492:115::-;27560:4;27589:10;;27582:17;;27492:115;:::o;31944:149::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32055:30:::1;32070:14;32055;:30::i;:::-;31944:149:::0;:::o;26166:107::-;26230:4;26259:6;;26252:13;;26166:107;:::o;10606:413::-;10699:4;10716:24;10743:11;:25;10755:12;:10;:12::i;:::-;10743:25;;;;;;;;;;;;;;;:34;10769:7;10743:34;;;;;;;;;;;;;;;;10716:61;;10816:15;10796:16;:35;;10788:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10909:67;10918:12;:10;:12::i;:::-;10932:7;10960:15;10941:16;:34;10909:8;:67::i;:::-;11007:4;11000:11;;;10606:413;;;;:::o;33910:165::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34029:38:::1;34048:18;34029;:38::i;:::-;33910:165:::0;:::o;39946:299::-;40032:4;40049:33;40069:12;:10;:12::i;:::-;40049:19;:33::i;:::-;40093:19;40115:37;40120:12;:10;:12::i;:::-;40134:9;40145:6;40115:4;:37::i;:::-;40093:59;;40163:50;40173:12;:10;:12::i;:::-;40187:9;40198:14;40163:9;:50::i;:::-;40233:4;40226:11;;;39946:299;;;;:::o;17010:128::-;17083:7;17115:15;;;;;;;;;;;17108:22;;17010:128;:::o;33749:153::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33862:32:::1;33878:15;33862;:32::i;:::-;33749:153:::0;:::o;37438:831::-;37483:12;37497:13;37514:43;37541:15;:13;:15::i;:::-;37514:26;:43::i;:::-;37482:75;;;;37568:44;37585:8;37595:16;:14;:16::i;:::-;37568;:44::i;:::-;37674:12;37699:1;37689:7;:11;;;;:::i;:::-;37674:26;;37711:17;37741:4;37731:7;:14;;;;:::i;:::-;37711:34;;37788:20;37811:21;37788:44;;37843:37;37860:4;37874;37843:16;:37::i;:::-;38011:24;38062:15;38038:21;:39;;;;:::i;:::-;38011:66;;38127:59;38140:9;38151:16;38169;:14;:16::i;:::-;38127:12;:59::i;:::-;38212:49;38227:4;38233:16;38251:9;38212:49;;;;;;;;:::i;:::-;;;;;;;;37438:831;;;;;;:::o;26032:126::-;26100:15;26140:10;;;;;;;;;;;26133:17;;26032:126;:::o;33596:145::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33705:28:::1;33719:13;33705;:28::i;:::-;33596:145:::0;:::o;27738:115::-;27806:4;27835:10;;27828:17;;27738:115;:::o;27332:152::-;27428:7;27460:6;:16;27467:8;27460:16;;;;;;;;;;;;;;;;;;;;;;;;;27453:23;;27332:152;;;:::o;35337:97::-;35391:42;35337:97;:::o;35441:86::-;35484:42;35441:86;:::o;29420:125::-;29493:4;29522:15;;;;;;;;;;;29515:22;;29420:125;:::o;8072:151::-;8161:7;8188:11;:18;8200:5;8188:18;;;;;;;;;;;;;;;:27;8207:7;8188:27;;;;;;;;;;;;;;;;8181:34;;8072:151;;;;:::o;29803:125::-;29876:4;29905:15;;29898:22;;29803:125;:::o;33255:142::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;33364:25:::1;33380:8;33364:15;:25::i;:::-;33255:142:::0;:::o;16754:119::-;16824:4;16853:12;;16846:19;;16754:119;:::o;32708:157::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32823:34:::1;32840:16;32823;:34::i;:::-;32708:157:::0;:::o;34183:94::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34256:13:::1;:11;:13::i;:::-;34183:94::o:0;40859:890::-;40951:16;40970:15;40975:9;40970:4;:15::i;:::-;40951:34;;40996:51;41014:4;41021:12;:10;:12::i;:::-;41035:11;40996:9;:51::i;:::-;41058:27;41066:12;:10;:12::i;:::-;41080:4;41058:7;:27::i;:::-;41098:10;41111:19;41117:12;:10;:12::i;:::-;41111:5;:19::i;:::-;41098:32;;35689:3;41178:18;;:2;:18;;;41174:57;;;41213:7;;;;41174:57;41241:15;41273:3;41259:11;:17;;;;:::i;:::-;41241:35;;41287:54;41305:4;41312:2;41329:11;:9;:11::i;:::-;41316:10;:24;;;;:::i;:::-;41287:9;:54::i;:::-;41354:10;41367:9;41373:2;41367:5;:9::i;:::-;41354:22;;35689:3;41424:18;;:2;:18;;;41420:57;;;41459:7;;;;;;41420:57;41487:54;41505:4;41512:2;41529:11;:9;:11::i;:::-;41516:10;:24;;;;:::i;:::-;41487:9;:54::i;:::-;41554:10;41567:9;41573:2;41567:5;:9::i;:::-;41554:22;;35689:3;41624:18;;:2;:18;;;41620:57;;;41659:7;;;;;;;41620:57;41687:54;41705:4;41712:2;41729:11;:9;:11::i;:::-;41716:10;:24;;;;:::i;:::-;41687:9;:54::i;:::-;40859:890;;;;;;;:::o;30334:110::-;30398:7;30430:6;;;;;;;;;;;30423:13;;30334:110;:::o;35232:98::-;35287:42;35232:98;:::o;34083:92::-;30013:6;;;;;;;;;;;29999:20;;:10;:20;;;29991:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;34155:12:::1;:10;:12::i;:::-;34083:92::o:0;3882:98::-;3935:7;3962:10;3955:17;;3882:98;:::o;14075:346::-;14194:1;14177:19;;:5;:19;;;;14169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14275:1;14256:21;;:7;:21;;;;14248:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14359:6;14329:11;:18;14341:5;14329:18;;;;;;;;;;;;;;;:27;14348:7;14329:27;;;;;;;;;;;;;;;:36;;;;14397:7;14381:32;;14390:5;14381:32;;;14406:6;14381:32;;;;;;:::i;:::-;;;;;;;;14075:346;;;:::o;16218:203::-;16342:18;16324:15;;:36;;;;;;;;;;;;;;;;;;16376:37;16394:18;16376:37;;;;;;:::i;:::-;;;;;;;;16218:203;:::o;15832:182::-;15944:15;15929:12;:30;;;;15975:31;15990:15;15975:31;;;;;;:::i;:::-;;;;;;;;15832:182;:::o;28826:421::-;28945:4;28951;28918:8;27946:10;:20;27957:8;27946:20;;;;;;;;;;;;;;;;;;;;;;;;;27945:21;27937:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28982:15:::1;;;;;;;;;;;28981:16;28973:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29072:4;29049:10;:20;29060:8;29049:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;29104:1;29091:10;;:14;29087:104;;;29143:10;;29130:9;:23;;29122:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;29087:104;29209:12;;29223:15;;29201:38;;;;28826:421:::0;;;;:::o;11509:640::-;11633:1;11615:20;;:6;:20;;;;11607:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11717:1;11696:23;;:9;:23;;;;11688:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11772:47;11793:6;11801:9;11812:6;11772:20;:47::i;:::-;11832:21;11856:9;:17;11866:6;11856:17;;;;;;;;;;;;;;;;11832:41;;11909:6;11892:13;:23;;11884:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12030:6;12014:13;:22;11994:9;:17;12004:6;11994:17;;;;;;;;;;;;;;;:42;;;;12082:6;12058:9;:20;12068:9;12058:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12123:9;12106:35;;12115:6;12106:35;;;12134:6;12106:35;;;;;;:::i;:::-;;;;;;;;11509:640;;;;:::o;37118:312::-;37199:15;:13;:15::i;:::-;37186:9;;:28;;:54;;;;;37227:13;37218:22;;:5;:22;;;;37186:54;37182:241;;;37277:24;;37261:12;:40;37257:155;;37349:12;37322:24;:39;;;;37380:16;:14;:16::i;:::-;37257:155;37182:241;37118:312;:::o;39413:525::-;39544:4;39570:21;39584:6;39570:13;:21::i;:::-;:49;;;;39595:24;39609:9;39595:13;:24::i;:::-;39570:49;39566:95;;;39643:6;39636:13;;;;39566:95;39672:10;39684:9;39697:21;39711:6;39697:13;:21::i;:::-;39671:47;;;;39729:20;39735:6;39743:5;39729;:20::i;:::-;39760:38;39770:6;39786:4;39793;39760:9;:38::i;:::-;39822:4;39809:9;;:17;;;;;;;:::i;:::-;;;;;;;;39862:6;39854:5;39847:4;:12;;;;:::i;:::-;:21;39839:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;39925:5;39918:4;39909:6;:13;;;;:::i;:::-;:21;;;;:::i;:::-;39902:28;;;;39413:525;;;;;;:::o;16429:194::-;16547:17;16530:14;:34;;;;16580:35;16597:17;16580:35;;;;;;:::i;:::-;;;;;;;;16429:194;:::o;25440:181::-;25557:13;25544:10;;:26;;;;;;;;;;;;;;;;;;25586:27;25599:13;25586:27;;;;;;:::i;:::-;;;;;;;;25440:181;:::o;26715:336::-;26881:13;26868:10;:26;;;;26918:13;26905:10;:26;;;;26955:13;26942:10;:26;;;;26984:59;26999:13;27014;27029;26984:59;;;;;;;;:::i;:::-;;;;;;;;26715:336;;;:::o;25629:80::-;25684:17;25699:1;25684:14;:17::i;:::-;25629:80::o;30885:257::-;30988:14;:24;31003:8;30988:24;;;;;;;;;;;;;;;;;;;;;;;;;30983:64;;31029:7;;30983:64;31084:5;31057:14;:24;31072:8;31057:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;31105:29;31125:8;31105:29;;;;;;:::i;:::-;;;;;;;;30885:257;;:::o;25089:146::-;25183:9;25174:6;:18;;;;25208:19;25217:9;25208:19;;;;;;:::i;:::-;;;;;;;;25089:146;:::o;15654:170::-;15760:13;15747:10;:26;;;;15789:27;15802:13;15789:27;;;;;;:::i;:::-;;;;;;;;15654:170;:::o;25243:189::-;25343:42;25357:11;;25370:14;25343:42;;;;;;;:::i;:::-;;;;;;;;25410:14;25396:11;:28;;;;25243:189;:::o;28671:147::-;28792:18;28774:15;:36;;;;28671:147;:::o;28528:135::-;28640:15;28625:12;:30;;;;28528:135;:::o;17553:408::-;17657:12;17671:13;17702:12;17730:9;;17717:10;:22;:47;;17754:10;17717:47;;;17742:9;;17717:47;17702:62;;17775:8;17812:13;;17797:12;;:28;;;;:::i;:::-;17786:7;:40;;;;:::i;:::-;17775:51;;17853:12;;17847:3;:18;;;;:::i;:::-;17837:28;;17897:7;17887;:17;;;;:::i;:::-;17876:28;;17946:7;17933:9;;:20;;;;;;;:::i;:::-;;;;;;;;17553:408;;;;;:::o;38277:590::-;38415:21;38453:1;38439:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38415:40;;38484:4;38466;38471:1;38466:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;38510:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38500:4;38505:1;38500:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;38545:62;38562:4;38577:15;38595:11;38545:8;:62::i;:::-;38646:15;:66;;;38727:11;38753:1;38797:4;38816:2;38833:15;38646:213;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38277:590;;;:::o;38875:530::-;39040:62;39057:4;39072:15;39090:11;39040:8;:62::i;:::-;39145:15;:31;;;39184:9;39217:4;39237:11;39263:1;39306;39349:7;39371:15;39145:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38875:530;;;:::o;28393:127::-;28499:13;28486:10;:26;;;;28393:127;:::o;30632:245::-;30729:14;:24;30744:8;30729:24;;;;;;;;;;;;;;;;;;;;;;;;;30725:63;;;30770:7;;30725:63;30825:4;30798:14;:24;30813:8;30798:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;30845:24;30860:8;30845:24;;;;;;:::i;:::-;;;;;;;;30632:245;;:::o;16022:188::-;16137:16;16121:13;:32;;;;16169:33;16185:16;16169:33;;;;;;:::i;:::-;;;;;;;;16022:188;:::o;28297:88::-;28372:5;28354:15;;:23;;;;;;;;;;;;;;;;;;28297:88::o;25717:307::-;25794:4;25816:16;25835:30;25858:6;;25835:18;25845:7;25835:5;:9;;:18;;;;:::i;:::-;:22;;:30;;;;:::i;:::-;25816:49;;25890:28;25906:11;25890;;:15;;:28;;;;:::i;:::-;25876:11;:42;;;;25934:16;25938:11;25934:16;;;;;;:::i;:::-;;;;;;;;25961:10;;;;;;;;;;;:19;;:26;25981:5;25961:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26005:11;25998:18;;;25717:307;;;:::o;27059:265::-;27199:3;27171:32;;:6;:16;27178:8;27171:16;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:52;;;;;27219:4;27207:16;;:8;:16;;;;27171:52;27167:150;;;27259:4;27240:6;:16;27247:8;27240:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;27283:22;27290:8;27300:4;27283:22;;;;;;;:::i;:::-;;;;;;;;27167:150;27059:265;;:::o;28203:86::-;28277:4;28259:15;;:22;;;;;;;;;;;;;;;;;;28203:86::o;15024:92::-;;;;:::o;13107:530::-;13210:1;13191:21;;:7;:21;;;;13183:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13263:49;13284:7;13301:1;13305:6;13263:20;:49::i;:::-;13325:22;13350:9;:18;13360:7;13350:18;;;;;;;;;;;;;;;;13325:43;;13405:6;13387:14;:24;;13379:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13524:6;13507:14;:23;13486:9;:18;13496:7;13486:18;;;;;;;;;;;;;;;:44;;;;13568:6;13552:12;;:22;;;;;;;:::i;:::-;;;;;;;;13618:1;13592:37;;13601:7;13592:37;;;13622:6;13592:37;;;;;;:::i;:::-;;;;;;;;13107:530;;;:::o;21407:98::-;21465:7;21496:1;21492;:5;;;;:::i;:::-;21485:12;;21407:98;;;;:::o;21806:::-;21864:7;21895:1;21891;:5;;;;:::i;:::-;21884:12;;21806:98;;;;:::o;21050:::-;21108:7;21139:1;21135;:5;;;;:::i;:::-;21128:12;;21050:98;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:139::-;;546:6;533:20;524:29;;562:33;589:5;562:33;:::i;:::-;514:87;;;;:::o;607:143::-;;695:6;689:13;680:22;;711:33;738:5;711:33;:::i;:::-;670:80;;;;:::o;756:262::-;;864:2;852:9;843:7;839:23;835:32;832:2;;;880:1;877;870:12;832:2;923:1;948:53;993:7;984:6;973:9;969:22;948:53;:::i;:::-;938:63;;894:117;822:196;;;;:::o;1024:284::-;;1143:2;1131:9;1122:7;1118:23;1114:32;1111:2;;;1159:1;1156;1149:12;1111:2;1202:1;1227:64;1283:7;1274:6;1263:9;1259:22;1227:64;:::i;:::-;1217:74;;1173:128;1101:207;;;;:::o;1314:278::-;;1430:2;1418:9;1409:7;1405:23;1401:32;1398:2;;;1446:1;1443;1436:12;1398:2;1489:1;1514:61;1567:7;1558:6;1547:9;1543:22;1514:61;:::i;:::-;1504:71;;1460:125;1388:204;;;;:::o;1598:407::-;;;1723:2;1711:9;1702:7;1698:23;1694:32;1691:2;;;1739:1;1736;1729:12;1691:2;1782:1;1807:53;1852:7;1843:6;1832:9;1828:22;1807:53;:::i;:::-;1797:63;;1753:117;1909:2;1935:53;1980:7;1971:6;1960:9;1956:22;1935:53;:::i;:::-;1925:63;;1880:118;1681:324;;;;;:::o;2011:552::-;;;;2153:2;2141:9;2132:7;2128:23;2124:32;2121:2;;;2169:1;2166;2159:12;2121:2;2212:1;2237:53;2282:7;2273:6;2262:9;2258:22;2237:53;:::i;:::-;2227:63;;2183:117;2339:2;2365:53;2410:7;2401:6;2390:9;2386:22;2365:53;:::i;:::-;2355:63;;2310:118;2467:2;2493:53;2538:7;2529:6;2518:9;2514:22;2493:53;:::i;:::-;2483:63;;2438:118;2111:452;;;;;:::o;2569:407::-;;;2694:2;2682:9;2673:7;2669:23;2665:32;2662:2;;;2710:1;2707;2700:12;2662:2;2753:1;2778:53;2823:7;2814:6;2803:9;2799:22;2778:53;:::i;:::-;2768:63;;2724:117;2880:2;2906:53;2951:7;2942:6;2931:9;2927:22;2906:53;:::i;:::-;2896:63;;2851:118;2652:324;;;;;:::o;2982:262::-;;3090:2;3078:9;3069:7;3065:23;3061:32;3058:2;;;3106:1;3103;3096:12;3058:2;3149:1;3174:53;3219:7;3210:6;3199:9;3195:22;3174:53;:::i;:::-;3164:63;;3120:117;3048:196;;;;:::o;3250:552::-;;;;3392:2;3380:9;3371:7;3367:23;3363:32;3360:2;;;3408:1;3405;3398:12;3360:2;3451:1;3476:53;3521:7;3512:6;3501:9;3497:22;3476:53;:::i;:::-;3466:63;;3422:117;3578:2;3604:53;3649:7;3640:6;3629:9;3625:22;3604:53;:::i;:::-;3594:63;;3549:118;3706:2;3732:53;3777:7;3768:6;3757:9;3753:22;3732:53;:::i;:::-;3722:63;;3677:118;3350:452;;;;;:::o;3808:596::-;;;;3961:2;3949:9;3940:7;3936:23;3932:32;3929:2;;;3977:1;3974;3967:12;3929:2;4020:1;4045:64;4101:7;4092:6;4081:9;4077:22;4045:64;:::i;:::-;4035:74;;3991:128;4158:2;4184:64;4240:7;4231:6;4220:9;4216:22;4184:64;:::i;:::-;4174:74;;4129:129;4297:2;4323:64;4379:7;4370:6;4359:9;4355:22;4323:64;:::i;:::-;4313:74;;4268:129;3919:485;;;;;:::o;4410:179::-;;4500:46;4542:3;4534:6;4500:46;:::i;:::-;4578:4;4573:3;4569:14;4555:28;;4490:99;;;;:::o;4595:142::-;4698:32;4724:5;4698:32;:::i;:::-;4693:3;4686:45;4676:61;;:::o;4743:108::-;4820:24;4838:5;4820:24;:::i;:::-;4815:3;4808:37;4798:53;;:::o;4857:118::-;4944:24;4962:5;4944:24;:::i;:::-;4939:3;4932:37;4922:53;;:::o;5011:732::-;;5159:54;5207:5;5159:54;:::i;:::-;5229:86;5308:6;5303:3;5229:86;:::i;:::-;5222:93;;5339:56;5389:5;5339:56;:::i;:::-;5418:7;5449:1;5434:284;5459:6;5456:1;5453:13;5434:284;;;5535:6;5529:13;5562:63;5621:3;5606:13;5562:63;:::i;:::-;5555:70;;5648:60;5701:6;5648:60;:::i;:::-;5638:70;;5494:224;5481:1;5478;5474:9;5469:14;;5434:284;;;5438:14;5734:3;5727:10;;5135:608;;;;;;;:::o;5749:109::-;5830:21;5845:5;5830:21;:::i;:::-;5825:3;5818:34;5808:50;;:::o;5864:185::-;5978:64;6036:5;5978:64;:::i;:::-;5973:3;5966:77;5956:93;;:::o;6055:147::-;6150:45;6189:5;6150:45;:::i;:::-;6145:3;6138:58;6128:74;;:::o;6208:364::-;;6324:39;6357:5;6324:39;:::i;:::-;6379:71;6443:6;6438:3;6379:71;:::i;:::-;6372:78;;6459:52;6504:6;6499:3;6492:4;6485:5;6481:16;6459:52;:::i;:::-;6536:29;6558:6;6536:29;:::i;:::-;6531:3;6527:39;6520:46;;6300:272;;;;;:::o;6578:366::-;;6741:67;6805:2;6800:3;6741:67;:::i;:::-;6734:74;;6817:93;6906:3;6817:93;:::i;:::-;6935:2;6930:3;6926:12;6919:19;;6724:220;;;:::o;6950:366::-;;7113:67;7177:2;7172:3;7113:67;:::i;:::-;7106:74;;7189:93;7278:3;7189:93;:::i;:::-;7307:2;7302:3;7298:12;7291:19;;7096:220;;;:::o;7322:366::-;;7485:67;7549:2;7544:3;7485:67;:::i;:::-;7478:74;;7561:93;7650:3;7561:93;:::i;:::-;7679:2;7674:3;7670:12;7663:19;;7468:220;;;:::o;7694:366::-;;7857:67;7921:2;7916:3;7857:67;:::i;:::-;7850:74;;7933:93;8022:3;7933:93;:::i;:::-;8051:2;8046:3;8042:12;8035:19;;7840:220;;;:::o;8066:366::-;;8229:67;8293:2;8288:3;8229:67;:::i;:::-;8222:74;;8305:93;8394:3;8305:93;:::i;:::-;8423:2;8418:3;8414:12;8407:19;;8212:220;;;:::o;8438:366::-;;8601:67;8665:2;8660:3;8601:67;:::i;:::-;8594:74;;8677:93;8766:3;8677:93;:::i;:::-;8795:2;8790:3;8786:12;8779:19;;8584:220;;;:::o;8810:366::-;;8973:67;9037:2;9032:3;8973:67;:::i;:::-;8966:74;;9049:93;9138:3;9049:93;:::i;:::-;9167:2;9162:3;9158:12;9151:19;;8956:220;;;:::o;9182:366::-;;9345:67;9409:2;9404:3;9345:67;:::i;:::-;9338:74;;9421:93;9510:3;9421:93;:::i;:::-;9539:2;9534:3;9530:12;9523:19;;9328:220;;;:::o;9554:366::-;;9717:67;9781:2;9776:3;9717:67;:::i;:::-;9710:74;;9793:93;9882:3;9793:93;:::i;:::-;9911:2;9906:3;9902:12;9895:19;;9700:220;;;:::o;9926:366::-;;10089:67;10153:2;10148:3;10089:67;:::i;:::-;10082:74;;10165:93;10254:3;10165:93;:::i;:::-;10283:2;10278:3;10274:12;10267:19;;10072:220;;;:::o;10298:366::-;;10461:67;10525:2;10520:3;10461:67;:::i;:::-;10454:74;;10537:93;10626:3;10537:93;:::i;:::-;10655:2;10650:3;10646:12;10639:19;;10444:220;;;:::o;10670:366::-;;10833:67;10897:2;10892:3;10833:67;:::i;:::-;10826:74;;10909:93;10998:3;10909:93;:::i;:::-;11027:2;11022:3;11018:12;11011:19;;10816:220;;;:::o;11042:366::-;;11205:67;11269:2;11264:3;11205:67;:::i;:::-;11198:74;;11281:93;11370:3;11281:93;:::i;:::-;11399:2;11394:3;11390:12;11383:19;;11188:220;;;:::o;11414:366::-;;11577:67;11641:2;11636:3;11577:67;:::i;:::-;11570:74;;11653:93;11742:3;11653:93;:::i;:::-;11771:2;11766:3;11762:12;11755:19;;11560:220;;;:::o;11786:366::-;;11949:67;12013:2;12008:3;11949:67;:::i;:::-;11942:74;;12025:93;12114:3;12025:93;:::i;:::-;12143:2;12138:3;12134:12;12127:19;;11932:220;;;:::o;12158:366::-;;12321:67;12385:2;12380:3;12321:67;:::i;:::-;12314:74;;12397:93;12486:3;12397:93;:::i;:::-;12515:2;12510:3;12506:12;12499:19;;12304:220;;;:::o;12530:118::-;12617:24;12635:5;12617:24;:::i;:::-;12612:3;12605:37;12595:53;;:::o;12654:112::-;12737:22;12753:5;12737:22;:::i;:::-;12732:3;12725:35;12715:51;;:::o;12772:222::-;;12903:2;12892:9;12888:18;12880:26;;12916:71;12984:1;12973:9;12969:17;12960:6;12916:71;:::i;:::-;12870:124;;;;:::o;13000:254::-;;13147:2;13136:9;13132:18;13124:26;;13160:87;13244:1;13233:9;13229:17;13220:6;13160:87;:::i;:::-;13114:140;;;;:::o;13260:332::-;;13419:2;13408:9;13404:18;13396:26;;13432:71;13500:1;13489:9;13485:17;13476:6;13432:71;:::i;:::-;13513:72;13581:2;13570:9;13566:18;13557:6;13513:72;:::i;:::-;13386:206;;;;;:::o;13598:807::-;;13885:3;13874:9;13870:19;13862:27;;13899:71;13967:1;13956:9;13952:17;13943:6;13899:71;:::i;:::-;13980:72;14048:2;14037:9;14033:18;14024:6;13980:72;:::i;:::-;14062:80;14138:2;14127:9;14123:18;14114:6;14062:80;:::i;:::-;14152;14228:2;14217:9;14213:18;14204:6;14152:80;:::i;:::-;14242:73;14310:3;14299:9;14295:19;14286:6;14242:73;:::i;:::-;14325;14393:3;14382:9;14378:19;14369:6;14325:73;:::i;:::-;13852:553;;;;;;;;;:::o;14411:210::-;;14536:2;14525:9;14521:18;14513:26;;14549:65;14611:1;14600:9;14596:17;14587:6;14549:65;:::i;:::-;14503:118;;;;:::o;14627:276::-;;14785:2;14774:9;14770:18;14762:26;;14798:98;14893:1;14882:9;14878:17;14869:6;14798:98;:::i;:::-;14752:151;;;;:::o;14909:313::-;;15060:2;15049:9;15045:18;15037:26;;15109:9;15103:4;15099:20;15095:1;15084:9;15080:17;15073:47;15137:78;15210:4;15201:6;15137:78;:::i;:::-;15129:86;;15027:195;;;;:::o;15228:419::-;;15432:2;15421:9;15417:18;15409:26;;15481:9;15475:4;15471:20;15467:1;15456:9;15452:17;15445:47;15509:131;15635:4;15509:131;:::i;:::-;15501:139;;15399:248;;;:::o;15653:419::-;;15857:2;15846:9;15842:18;15834:26;;15906:9;15900:4;15896:20;15892:1;15881:9;15877:17;15870:47;15934:131;16060:4;15934:131;:::i;:::-;15926:139;;15824:248;;;:::o;16078:419::-;;16282:2;16271:9;16267:18;16259:26;;16331:9;16325:4;16321:20;16317:1;16306:9;16302:17;16295:47;16359:131;16485:4;16359:131;:::i;:::-;16351:139;;16249:248;;;:::o;16503:419::-;;16707:2;16696:9;16692:18;16684:26;;16756:9;16750:4;16746:20;16742:1;16731:9;16727:17;16720:47;16784:131;16910:4;16784:131;:::i;:::-;16776:139;;16674:248;;;:::o;16928:419::-;;17132:2;17121:9;17117:18;17109:26;;17181:9;17175:4;17171:20;17167:1;17156:9;17152:17;17145:47;17209:131;17335:4;17209:131;:::i;:::-;17201:139;;17099:248;;;:::o;17353:419::-;;17557:2;17546:9;17542:18;17534:26;;17606:9;17600:4;17596:20;17592:1;17581:9;17577:17;17570:47;17634:131;17760:4;17634:131;:::i;:::-;17626:139;;17524:248;;;:::o;17778:419::-;;17982:2;17971:9;17967:18;17959:26;;18031:9;18025:4;18021:20;18017:1;18006:9;18002:17;17995:47;18059:131;18185:4;18059:131;:::i;:::-;18051:139;;17949:248;;;:::o;18203:419::-;;18407:2;18396:9;18392:18;18384:26;;18456:9;18450:4;18446:20;18442:1;18431:9;18427:17;18420:47;18484:131;18610:4;18484:131;:::i;:::-;18476:139;;18374:248;;;:::o;18628:419::-;;18832:2;18821:9;18817:18;18809:26;;18881:9;18875:4;18871:20;18867:1;18856:9;18852:17;18845:47;18909:131;19035:4;18909:131;:::i;:::-;18901:139;;18799:248;;;:::o;19053:419::-;;19257:2;19246:9;19242:18;19234:26;;19306:9;19300:4;19296:20;19292:1;19281:9;19277:17;19270:47;19334:131;19460:4;19334:131;:::i;:::-;19326:139;;19224:248;;;:::o;19478:419::-;;19682:2;19671:9;19667:18;19659:26;;19731:9;19725:4;19721:20;19717:1;19706:9;19702:17;19695:47;19759:131;19885:4;19759:131;:::i;:::-;19751:139;;19649:248;;;:::o;19903:419::-;;20107:2;20096:9;20092:18;20084:26;;20156:9;20150:4;20146:20;20142:1;20131:9;20127:17;20120:47;20184:131;20310:4;20184:131;:::i;:::-;20176:139;;20074:248;;;:::o;20328:419::-;;20532:2;20521:9;20517:18;20509:26;;20581:9;20575:4;20571:20;20567:1;20556:9;20552:17;20545:47;20609:131;20735:4;20609:131;:::i;:::-;20601:139;;20499:248;;;:::o;20753:419::-;;20957:2;20946:9;20942:18;20934:26;;21006:9;21000:4;20996:20;20992:1;20981:9;20977:17;20970:47;21034:131;21160:4;21034:131;:::i;:::-;21026:139;;20924:248;;;:::o;21178:419::-;;21382:2;21371:9;21367:18;21359:26;;21431:9;21425:4;21421:20;21417:1;21406:9;21402:17;21395:47;21459:131;21585:4;21459:131;:::i;:::-;21451:139;;21349:248;;;:::o;21603:419::-;;21807:2;21796:9;21792:18;21784:26;;21856:9;21850:4;21846:20;21842:1;21831:9;21827:17;21820:47;21884:131;22010:4;21884:131;:::i;:::-;21876:139;;21774:248;;;:::o;22028:222::-;;22159:2;22148:9;22144:18;22136:26;;22172:71;22240:1;22229:9;22225:17;22216:6;22172:71;:::i;:::-;22126:124;;;;:::o;22256:831::-;;22557:3;22546:9;22542:19;22534:27;;22571:71;22639:1;22628:9;22624:17;22615:6;22571:71;:::i;:::-;22652:80;22728:2;22717:9;22713:18;22704:6;22652:80;:::i;:::-;22779:9;22773:4;22769:20;22764:2;22753:9;22749:18;22742:48;22807:108;22910:4;22901:6;22807:108;:::i;:::-;22799:116;;22925:72;22993:2;22982:9;22978:18;22969:6;22925:72;:::i;:::-;23007:73;23075:3;23064:9;23060:19;23051:6;23007:73;:::i;:::-;22524:563;;;;;;;;:::o;23093:332::-;;23252:2;23241:9;23237:18;23229:26;;23265:71;23333:1;23322:9;23318:17;23309:6;23265:71;:::i;:::-;23346:72;23414:2;23403:9;23399:18;23390:6;23346:72;:::i;:::-;23219:206;;;;;:::o;23431:442::-;;23618:2;23607:9;23603:18;23595:26;;23631:71;23699:1;23688:9;23684:17;23675:6;23631:71;:::i;:::-;23712:72;23780:2;23769:9;23765:18;23756:6;23712:72;:::i;:::-;23794;23862:2;23851:9;23847:18;23838:6;23794:72;:::i;:::-;23585:288;;;;;;:::o;23879:214::-;;24006:2;23995:9;23991:18;23983:26;;24019:67;24083:1;24072:9;24068:17;24059:6;24019:67;:::i;:::-;23973:120;;;;:::o;24099:132::-;;24189:3;24181:11;;24219:4;24214:3;24210:14;24202:22;;24171:60;;;:::o;24237:114::-;;24338:5;24332:12;24322:22;;24311:40;;;:::o;24357:99::-;;24443:5;24437:12;24427:22;;24416:40;;;:::o;24462:113::-;;24564:4;24559:3;24555:14;24547:22;;24537:38;;;:::o;24581:184::-;;24714:6;24709:3;24702:19;24754:4;24749:3;24745:14;24730:29;;24692:73;;;;:::o;24771:169::-;;24889:6;24884:3;24877:19;24929:4;24924:3;24920:14;24905:29;;24867:73;;;;:::o;24946:305::-;;25005:20;25023:1;25005:20;:::i;:::-;25000:25;;25039:20;25057:1;25039:20;:::i;:::-;25034:25;;25193:1;25125:66;25121:74;25118:1;25115:81;25112:2;;;25199:18;;:::i;:::-;25112:2;25243:1;25240;25236:9;25229:16;;24990:261;;;;:::o;25257:185::-;;25314:20;25332:1;25314:20;:::i;:::-;25309:25;;25348:20;25366:1;25348:20;:::i;:::-;25343:25;;25387:1;25377:2;;25392:18;;:::i;:::-;25377:2;25434:1;25431;25427:9;25422:14;;25299:143;;;;:::o;25448:348::-;;25511:20;25529:1;25511:20;:::i;:::-;25506:25;;25545:20;25563:1;25545:20;:::i;:::-;25540:25;;25733:1;25665:66;25661:74;25658:1;25655:81;25650:1;25643:9;25636:17;25632:105;25629:2;;;25740:18;;:::i;:::-;25629:2;25788:1;25785;25781:9;25770:20;;25496:300;;;;:::o;25802:191::-;;25862:20;25880:1;25862:20;:::i;:::-;25857:25;;25896:20;25914:1;25896:20;:::i;:::-;25891:25;;25935:1;25932;25929:8;25926:2;;;25940:18;;:::i;:::-;25926:2;25985:1;25982;25978:9;25970:17;;25847:146;;;;:::o;25999:96::-;;26065:24;26083:5;26065:24;:::i;:::-;26054:35;;26044:51;;;:::o;26101:104::-;;26175:24;26193:5;26175:24;:::i;:::-;26164:35;;26154:51;;;:::o;26211:90::-;;26288:5;26281:13;26274:21;26263:32;;26253:48;;;:::o;26307:126::-;;26384:42;26377:5;26373:54;26362:65;;26352:81;;;:::o;26439:77::-;;26505:5;26494:16;;26484:32;;;:::o;26522:86::-;;26597:4;26590:5;26586:16;26575:27;;26565:43;;;:::o;26614:180::-;;26724:64;26782:5;26724:64;:::i;:::-;26711:77;;26701:93;;;:::o;26800:140::-;;26910:24;26928:5;26910:24;:::i;:::-;26897:37;;26887:53;;;:::o;26946:121::-;;27037:24;27055:5;27037:24;:::i;:::-;27024:37;;27014:53;;;:::o;27073:307::-;27141:1;27151:113;27165:6;27162:1;27159:13;27151:113;;;27250:1;27245:3;27241:11;27235:18;27231:1;27226:3;27222:11;27215:39;27187:2;27184:1;27180:10;27175:15;;27151:113;;;27282:6;27279:1;27276:13;27273:2;;;27362:1;27353:6;27348:3;27344:16;27337:27;27273:2;27122:258;;;;:::o;27386:320::-;;27467:1;27461:4;27457:12;27447:22;;27514:1;27508:4;27504:12;27535:18;27525:2;;27591:4;27583:6;27579:17;27569:27;;27525:2;27653;27645:6;27642:14;27622:18;27619:38;27616:2;;;27672:18;;:::i;:::-;27616:2;27437:269;;;;:::o;27712:180::-;27760:77;27757:1;27750:88;27857:4;27854:1;27847:15;27881:4;27878:1;27871:15;27898:180;27946:77;27943:1;27936:88;28043:4;28040:1;28033:15;28067:4;28064:1;28057:15;28084:180;28132:77;28129:1;28122:88;28229:4;28226:1;28219:15;28253:4;28250:1;28243:15;28270:102;;28362:2;28358:7;28353:2;28346:5;28342:14;28338:28;28328:38;;28318:54;;;:::o;28378:222::-;28518:34;28514:1;28506:6;28502:14;28495:58;28587:5;28582:2;28574:6;28570:15;28563:30;28484:116;:::o;28606:166::-;28746:18;28742:1;28734:6;28730:14;28723:42;28712:60;:::o;28778:168::-;28918:20;28914:1;28906:6;28902:14;28895:44;28884:62;:::o;28952:221::-;29092:34;29088:1;29080:6;29076:14;29069:58;29161:4;29156:2;29148:6;29144:15;29137:29;29058:115;:::o;29179:221::-;29319:34;29315:1;29307:6;29303:14;29296:58;29388:4;29383:2;29375:6;29371:15;29364:29;29285:115;:::o;29406:225::-;29546:34;29542:1;29534:6;29530:14;29523:58;29615:8;29610:2;29602:6;29598:15;29591:33;29512:119;:::o;29637:163::-;29777:15;29773:1;29765:6;29761:14;29754:39;29743:57;:::o;29806:223::-;29946:34;29942:1;29934:6;29930:14;29923:58;30015:6;30010:2;30002:6;29998:15;29991:31;29912:117;:::o;30035:227::-;30175:34;30171:1;30163:6;30159:14;30152:58;30244:10;30239:2;30231:6;30227:15;30220:35;30141:121;:::o;30268:166::-;30408:18;30404:1;30396:6;30392:14;30385:42;30374:60;:::o;30440:220::-;30580:34;30576:1;30568:6;30564:14;30557:58;30649:3;30644:2;30636:6;30632:15;30625:28;30546:114;:::o;30666:171::-;30806:23;30802:1;30794:6;30790:14;30783:47;30772:65;:::o;30843:224::-;30983:34;30979:1;30971:6;30967:14;30960:58;31052:7;31047:2;31039:6;31035:15;31028:32;30949:118;:::o;31073:223::-;31213:34;31209:1;31201:6;31197:14;31190:58;31282:6;31277:2;31269:6;31265:15;31258:31;31179:117;:::o;31302:168::-;31442:20;31438:1;31430:6;31426:14;31419:44;31408:62;:::o;31476:224::-;31616:34;31612:1;31604:6;31600:14;31593:58;31685:7;31680:2;31672:6;31668:15;31661:32;31582:118;:::o;31706:122::-;31779:24;31797:5;31779:24;:::i;:::-;31772:5;31769:35;31759:2;;31818:1;31815;31808:12;31759:2;31749:79;:::o;31834:138::-;31915:32;31941:5;31915:32;:::i;:::-;31908:5;31905:43;31895:2;;31962:1;31959;31952:12;31895:2;31885:87;:::o;31978:122::-;32051:24;32069:5;32051:24;:::i;:::-;32044:5;32041:35;32031:2;;32090:1;32087;32080:12;32031:2;32021:79;:::o
Swarm Source
ipfs://f5c1bde7e1b6f46e87a68bea4e907c191b30de116efa334fdb6eac6b96c6704a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)