Overview
Max Total Supply
49,578,701.820916598711637591 TORR
Holders
897
Market
Price
$0.00 @ 0.000000 BTT
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
TORR
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at bttcscan.com on 2023-01-31 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; 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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @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) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, 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) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This 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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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); _afterTokenTransfer(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); _afterTokenTransfer(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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @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 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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } interface IReferral { /** * @dev Record referral. */ function recordReferralfromLobby( address user, address referrer, uint256 amount, uint256 day ) external; /** * @dev Record referral commission. */ function recordReferralCommissionfromLobby( address referrer, uint256 commission, uint256 day ) external; /** * @dev Get the referrer address that referred the user. */ function getReferrer(address user) external view returns (address); } interface LotteryInterface { function newBuy_hCe(uint256 _amount, address _address) external; function drawRaffle_YlX() external returns (address); } contract TORR is ERC20, ReentrancyGuard, Ownable { event UserEnterLobby(address indexed addr, uint256 timestamp, uint256 entryAmountEth, uint256 day); event UserCollectAuctionTokens(address indexed addr, uint256 timestamp, uint256 day, uint256 tokenAmount, uint256 referreeBonus); event RefferrerBonusPaid(address indexed referrerAddress, address indexed reffereeAddress, uint256 timestamp, uint256 referrerBonus, uint256 referreeBonus); event DailyAuctionEnd(uint256 timestamp, uint256 day, uint256 ethTotal, uint256 tokenTotal); /** Taxs */ address public dev_addr = 0x27D74069B4d7F2b9EeB35D2F6826738fe3EDE423; address public Team_addr = 0xF7888d52D1e76f7a62cF1296B592019d909E2f1E; address public Vault_addr = 0x06952B65096aD3833BB8C6E6A4F0808C9d00a330; address public Lottery_addr; /* Gets called once a day and withdraws 10% fees from every day's lobby entry */ uint256 public dev_percentage = 3; uint256 public Team_percentage = 2; uint256 public Vault_percentage = 14; uint256 public Lottery_percent = 1; /* last amount of auction pool that are minted daily to be distributed between lobby participants which starts from 1 mil */ uint256 public lastAuctionTokens = 100000 * 1e18; /* Ref bonuses, referrer is the person who refered referre is person who got referred, includes 1 decimal so 25 = 2.5% */ uint256 public referrer_bonus = 20; uint256 public referree_bonus = 10; uint256 public currentDay; uint256 public usersCount; uint256 public overall_collectedTokens; uint256 public overall_lobbyEntry; /* lobby memebrs data */ struct userAuctionEntry { uint256 totalDeposits; uint256 day; bool hasCollected; address referrer; } /* new map for every entry (users are allowed to enter multiple times a day) */ mapping(address => mapping(uint256 => userAuctionEntry)) public mapUserAuctionEntry; mapping(uint256 => uint256) public usersCountDaily; /** Total BTT deposited for the day */ mapping(uint256 => uint256) public auctionDeposits; /** Total tokens minted for the day */ mapping(uint256 => uint256) public auctionTokens; /** The percent to reduce the total tokens by each day 5 = 0.5% */ uint256 public dailyTokenReductionPercent = 5; // Record the contract launch time & current day uint256 public LAUNCH_TIME; /** External Contracts */ LotteryInterface public _lotteryContract; IReferral public _ReferralContract; address public _stakingContract; constructor() ERC20('infiniTORR', 'TORR') {} receive() external payable {} /** @dev is called when we're ready to start the auction @param _lotteryAddr address of the lottery contract @param _stakingAddr address of the staking contract @param _refAddr address of the ref contract */ function startAuction( address _lotteryAddr, address _stakingAddr, address _refAddr // address _VaultAddr ) external payable onlyOwner { require(LAUNCH_TIME == 0); _mint(msg.sender, 40000000 * 1e18); LAUNCH_TIME = block.timestamp; _lotteryContract = LotteryInterface(_lotteryAddr); _stakingContract = _stakingAddr; _ReferralContract = IReferral(_refAddr); Lottery_addr = _lotteryAddr; currentDay = calcDay(); } function updateContracts( address _lotteryAddr, address _stakingAddr, address _refAddr, address _VaultAddr ) external payable onlyOwner { _lotteryContract = LotteryInterface(_lotteryAddr); _stakingContract = _stakingAddr; _ReferralContract = IReferral(_refAddr); Vault_addr = _VaultAddr; Lottery_addr = _lotteryAddr; } /** @dev update the bonus paid out to affiliates. 20 = 2% @param _referrer the percent going to the referrer @param _referree the percentage going to the referee */ function updateReferrerBonus(uint256 _referrer, uint256 _referree) external payable onlyOwner { require((_referrer <= 50 && _referree <= 50), 'Over max values'); require((_referrer != 0 && _referree != 0), 'Cant be zero'); referrer_bonus = _referrer; referree_bonus = _referree; } /** @dev Calculate the current day based off the auction start time */ function calcDay() public view returns (uint256) { if (LAUNCH_TIME == 0) return 0; return (block.timestamp - LAUNCH_TIME) / 1 days; } function doDailyUpdate_Vkx() public { uint256 _nextDay = calcDay(); uint256 _currentDay = currentDay; if (_currentDay != _nextDay) { uint256 _taxShare; uint256 _divsShare; if (_nextDay > 1) { _taxShare = (address(this).balance * tax()) / 100; _divsShare = address(this).balance - _taxShare; (bool success, ) = address(_stakingContract).call{ value: _divsShare }(abi.encodeWithSignature('receiveDivs_Ch6()')); require(success,'unable to receiveDivs_Ch6'); } if (_taxShare != 0) { flushTaxes(_taxShare); } (bool success2, ) = address(_stakingContract).call(abi.encodeWithSignature('flushTaxes_4it()')); require(success2,'unable to flushTaxes_4it'); // Only mint new tokens when we have deposits for that day if (auctionDeposits[currentDay] != 0) { _mintDailyAuctionTokens(_currentDay); } if (Lottery_percent != 0) { (success2, ) = address(_lotteryContract).call(abi.encodeWithSignature('drawRaffle_YlX()')); require(success2); } emit DailyAuctionEnd(block.timestamp, currentDay, auctionDeposits[currentDay], auctionTokens[currentDay]); currentDay = _nextDay; } } /** @dev The total of all the taxs */ function tax() public view returns (uint256) { return Lottery_percent + dev_percentage + Team_percentage + Vault_percentage; } /** @dev Send all the taxs to the correct wallets @param _amount total BTT to distro */ function flushTaxes(uint256 _amount) public { uint256 _devTax; uint256 _totalTax = tax(); uint256 _TeamTax = (_amount * Team_percentage) / _totalTax; uint256 _VaultTax = (_amount * Vault_percentage) / _totalTax; uint256 _LottoTax = (_amount * Lottery_percent) / _totalTax; if (_amount>(_TeamTax + _VaultTax + _LottoTax)) { _devTax = _amount - (_TeamTax + _VaultTax + _LottoTax); } else { _devTax = 0; } (bool sent,) = dev_addr.call{value: _devTax}(""); require(sent, "Failed to send Ether1"); ( sent,) = Team_addr.call{value: _TeamTax}(""); require(sent, "Failed to send Ether2"); ( sent,) = Vault_addr.call{value: _VaultTax}(""); require(sent, "Failed to send Ether3"); ( sent,) = Lottery_addr.call{value:_LottoTax}(""); require(sent, "Failed to send Ether4"); } /** @dev Send all the taxs to the correct wallets for day 0 only @param _amount total BTT to distribute */ function flushTaxesDay0(uint256 _amount) internal { uint256 _devTax; uint256 _TeamTax = ((_amount * 10) / 100); uint256 _VaultTax = ((_amount * 75) / 100); if (_amount>(_TeamTax + _VaultTax)) { _devTax = _amount - (_TeamTax + _VaultTax); } else { _devTax = 0; } (bool sent,) = dev_addr.call{value: _devTax}(""); require(sent, "Failed to send Ether11"); ( sent,) = Team_addr.call{value: _TeamTax}(""); require(sent, "Failed to send Ether12"); ( sent,) = Vault_addr.call{value: _VaultTax}(""); require(sent, "Failed to send Ether13"); } /** @dev UPdate the taxes, can't be greater than current taxes @param _dev the dev tax @param _Team the Team tax @param _Vault the Vault tax @param _lottery biggest buy comp tax */ function updateTaxes( uint256 _dev, uint256 _Team, uint256 _Vault, uint256 _lottery ) external onlyOwner { dev_percentage = _dev; Team_percentage = _Team; Vault_percentage = _Vault; Lottery_percent = _lottery; } /** @dev Update the Team wallet address */ function updateTeamAddress(address adr) external payable onlyOwner { Team_addr = adr; } /** @dev Update the dev wallet address */ function updateDevAddress(address adr) external payable onlyOwner { dev_addr = adr; } /** @dev update the Vault wallet address */ function updateVaultAddress(address adr) external payable onlyOwner { Vault_addr = adr; } function mintBonus(address to, uint256 amount) external { require(msg.sender == address(_stakingContract)); _mint(to, amount); } /** @dev Mint the auction tokens for the day @param _day the day to mint the tokens for */ function _mintDailyAuctionTokens(uint256 _day) internal { uint256 _nextAuctionTokens; if (_day == 0) { _nextAuctionTokens = 100000 * 1e18; } else { _nextAuctionTokens = todayAuctionTokens(); } _mint(address(this), _nextAuctionTokens); auctionTokens[_day] = _nextAuctionTokens; lastAuctionTokens = _nextAuctionTokens; } function todayAuctionTokens() public view returns (uint256) { return lastAuctionTokens - ((lastAuctionTokens * dailyTokenReductionPercent) / 1000); } /** * @dev entering the auction lobby for the current day * @param referrerAddr address of referring user (optional; 0x0 for no referrer) */ function EnterLobby_B4Y(address referrerAddr) external payable { require((LAUNCH_TIME != 0 && msg.value != 0)); require(calcDay() < 120, 'lobby over'); doDailyUpdate_Vkx(); uint256 _currentDay = currentDay; auctionDeposits[_currentDay] += msg.value; overall_lobbyEntry += msg.value; if (mapUserAuctionEntry[msg.sender][_currentDay].totalDeposits == 0) { usersCount++; usersCountDaily[currentDay]++; } mapUserAuctionEntry[msg.sender][_currentDay] = userAuctionEntry({ totalDeposits: mapUserAuctionEntry[msg.sender][_currentDay].totalDeposits + msg.value, day: _currentDay, hasCollected: false, referrer: (referrerAddr != msg.sender) ? referrerAddr : address(0) }); if (referrerAddr != msg.sender) { _ReferralContract.recordReferralfromLobby(msg.sender, referrerAddr, msg.value, _currentDay); } if (_currentDay == 0) { flushTaxesDay0(msg.value); } if (Lottery_percent != 0) { _lotteryContract.newBuy_hCe(msg.value, msg.sender); } emit UserEnterLobby(msg.sender, block.timestamp, msg.value, _currentDay); } /** * @dev External function for leaving the lobby / collecting the tokens * @param targetDay Target day of lobby to collect */ function ExitLobby_418w(uint256 targetDay) external nonReentrant { doDailyUpdate_Vkx(); require(mapUserAuctionEntry[msg.sender][targetDay].hasCollected == false); require(targetDay < currentDay, 'cant collect tokens for current active day'); uint256 _tokensToPay = _clcTokenValue(msg.sender, targetDay); mapUserAuctionEntry[msg.sender][targetDay].hasCollected = true; _transfer(address(this), msg.sender, _tokensToPay); address _referrerAddress = mapUserAuctionEntry[msg.sender][targetDay].referrer; uint256 _referreeBonus; if (_referrerAddress != address(0)) { /* there is a referrer, pay their % ref bonus of tokens */ uint256 _reffererBonus = (_tokensToPay * referrer_bonus) / 1000; _referreeBonus = (_tokensToPay * referree_bonus) / 1000; _ReferralContract.recordReferralCommissionfromLobby(_referrerAddress, _reffererBonus, targetDay); _mint(_referrerAddress, _reffererBonus); _mint(msg.sender, _referreeBonus); emit RefferrerBonusPaid(_referrerAddress, msg.sender, block.timestamp, _reffererBonus, _referreeBonus); } overall_collectedTokens += _tokensToPay; emit UserCollectAuctionTokens(msg.sender, block.timestamp, targetDay, _tokensToPay, _referreeBonus); } /** * @dev Calculating user's share from lobby based on their & of deposits for the day * @param _Day The lobby day */ function _clcTokenValue(address _address, uint256 _Day) public view returns (uint256) { uint256 _tokenValue; uint256 _entryDay = mapUserAuctionEntry[_address][_Day].day; if (auctionTokens[_entryDay] == 0) return 0; _tokenValue = (auctionTokens[_entryDay] * mapUserAuctionEntry[_address][_Day].totalDeposits) / auctionDeposits[_entryDay]; return _tokenValue; } /** @dev change the % reduction of the daily tokens minted @param _val the new percent val 3% = 30 */ function updateDailyReductionPercent(uint256 _val) external payable onlyOwner { // must be >= 1% and <= 6% require((_val >= 10 && _val <= 60)); dailyTokenReductionPercent = _val; } function getStatsNew() external view returns (uint256[5] memory amounts) { return amounts = [calcDay(), usersCount, overall_lobbyEntry, todayAuctionTokens(), overall_collectedTokens]; } function getStatsLoop(uint256 _day) external view returns ( uint256 yourDeposit, uint256 totalDeposits, uint256 youReceive, bool claimedis ) { yourDeposit = mapUserAuctionEntry[msg.sender][_day].totalDeposits; totalDeposits = auctionDeposits[_day]; youReceive = _clcTokenValue(msg.sender, _day); claimedis = mapUserAuctionEntry[msg.sender][_day].hasCollected; } function getStatsLoops( uint256 _day, uint256 numb, address account ) external view returns ( uint256[10] memory yourDeposits, uint256[10] memory totalDeposits, uint256[10] memory youReceives, bool[10] memory claimedis ) { for (uint256 i = 0; i < numb; ) { yourDeposits[i] = mapUserAuctionEntry[account][_day + i].totalDeposits; totalDeposits[i] = auctionDeposits[_day + i]; youReceives[i] = _clcTokenValue(account, _day + i); claimedis[i] = mapUserAuctionEntry[account][_day + i].hasCollected; unchecked { ++i; } } return (yourDeposits, totalDeposits, youReceives, claimedis); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"day","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenTotal","type":"uint256"}],"name":"DailyAuctionEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"reffereeAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referrerBonus","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referreeBonus","type":"uint256"}],"name":"RefferrerBonusPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"day","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referreeBonus","type":"uint256"}],"name":"UserCollectAuctionTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"entryAmountEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"day","type":"uint256"}],"name":"UserEnterLobby","type":"event"},{"inputs":[{"internalType":"address","name":"referrerAddr","type":"address"}],"name":"EnterLobby_B4Y","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"targetDay","type":"uint256"}],"name":"ExitLobby_418w","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LAUNCH_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Lottery_addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Lottery_percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Team_addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Team_percentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Vault_addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Vault_percentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ReferralContract","outputs":[{"internalType":"contract IReferral","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_Day","type":"uint256"}],"name":"_clcTokenValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lotteryContract","outputs":[{"internalType":"contract LotteryInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingContract","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":"uint256","name":"","type":"uint256"}],"name":"auctionDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"auctionTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calcDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyTokenReductionPercent","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":"dev_addr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dev_percentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"doDailyUpdate_Vkx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"flushTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"getStatsLoop","outputs":[{"internalType":"uint256","name":"yourDeposit","type":"uint256"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"youReceive","type":"uint256"},{"internalType":"bool","name":"claimedis","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_day","type":"uint256"},{"internalType":"uint256","name":"numb","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"getStatsLoops","outputs":[{"internalType":"uint256[10]","name":"yourDeposits","type":"uint256[10]"},{"internalType":"uint256[10]","name":"totalDeposits","type":"uint256[10]"},{"internalType":"uint256[10]","name":"youReceives","type":"uint256[10]"},{"internalType":"bool[10]","name":"claimedis","type":"bool[10]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStatsNew","outputs":[{"internalType":"uint256[5]","name":"amounts","type":"uint256[5]"}],"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":"lastAuctionTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"mapUserAuctionEntry","outputs":[{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"day","type":"uint256"},{"internalType":"bool","name":"hasCollected","type":"bool"},{"internalType":"address","name":"referrer","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overall_collectedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overall_lobbyEntry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referree_bonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referrer_bonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lotteryAddr","type":"address"},{"internalType":"address","name":"_stakingAddr","type":"address"},{"internalType":"address","name":"_refAddr","type":"address"}],"name":"startAuction","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"todayAuctionTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lotteryAddr","type":"address"},{"internalType":"address","name":"_stakingAddr","type":"address"},{"internalType":"address","name":"_refAddr","type":"address"},{"internalType":"address","name":"_VaultAddr","type":"address"}],"name":"updateContracts","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_val","type":"uint256"}],"name":"updateDailyReductionPercent","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"updateDevAddress","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_referrer","type":"uint256"},{"internalType":"uint256","name":"_referree","type":"uint256"}],"name":"updateReferrerBonus","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_Team","type":"uint256"},{"internalType":"uint256","name":"_Vault","type":"uint256"},{"internalType":"uint256","name":"_lottery","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"updateTeamAddress","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"updateVaultAddress","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"usersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"usersCountDaily","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600780546001600160a01b03199081167327d74069b4d7f2b9eeb35d2f6826738fe3ede4231790915560088054821673f7888d52d1e76f7a62cf1296b592019d909e2f1e179055600980549091167306952b65096ad3833bb8c6e6a4f0808c9d00a3301790556003600b556002600c55600e600d8190556001905569152d02c7e14af6800000600f556014601055600a6011556005601a55348015620000a957600080fd5b506040518060400160405280600a81526020016934b73334b734aa27a92960b11b815250604051806040016040528060048152602001632a27a92960e11b8152508160039081620000fb91906200021a565b5060046200010a82826200021a565b50506001600555506200011d3362000123565b620002e6565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a057607f821691505b602082108103620001c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021557600081815260208120601f850160051c81016020861015620001f05750805b601f850160051c820191505b818110156200021157828155600101620001fc565b5050505b505050565b81516001600160401b0381111562000236576200023662000175565b6200024e816200024784546200018b565b84620001c7565b602080601f8311600181146200028657600084156200026d5750858301515b600019600386901b1c1916600185901b17855562000211565b600085815260208120601f198616915b82811015620002b75788860151825594840194600190910190840162000296565b5085821015620002d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612abd80620002f66000396000f3fe60806040526004361061037f5760003560e01c806370a08231116101d1578063a9e1506a11610102578063d575538e116100a0578063e5c2e9db1161006f578063e5c2e9db14610a2e578063eddc94b014610a44578063f2fde38b14610a5a578063fd876afa14610a7a57600080fd5b8063d575538e146109ac578063d9a7c61d146109cc578063dd62ed3e146109ec578063e3eb542414610a0c57600080fd5b8063b0de5e29116100dc578063b0de5e2914610936578063bba2505814610956578063d2de2f8514610983578063d41d3b511461099657600080fd5b8063a9e1506a146108e0578063adda68ee14610900578063ae4636901461092057600080fd5b8063949cd1531161016f57806399c8d5561161014957806399c8d55614610875578063a41d17701461088a578063a457c2d7146108a0578063a9059cbb146108c057600080fd5b8063949cd1531461082d578063953790b11461084d57806395d89b411461086057600080fd5b806386971f5c116101ab57806386971f5c146107c45780638da5cb5b146107d957806392db28ae146107f757806394573ce31461080d57600080fd5b806370a0823114610766578063715018a61461079c57806385033762146107b157600080fd5b806323b872dd116102b657806346980138116102545780636572ca0c116102235780636572ca0c146106e65780636ba13a82146106fb5780636d6013d8146107115780636fede7f71461072457600080fd5b806346980138146106845780634edcc1d11461069a57806359ce7808146106b05780635c9302c9146106d057600080fd5b8063313ce56711610290578063313ce5671461061c57806339509351146106385780633c6890bc146106585780633caadc601461066e57600080fd5b806323b872dd14610553578063251e00a9146105735780632520fc941461059357600080fd5b8063095ea7b3116103235780631074cf90116102fd5780631074cf90146104e857806313c4f745146104fb57806314eb76ac1461052b57806318160ddd1461053e57600080fd5b8063095ea7b3146104855780630a578139146104b55780630b751279146104d557600080fd5b8063022466b51161035f578063022466b5146103d557806302d8325c146103fe57806306fdde0314610436578063072831661461045857600080fd5b806154411461038b578061ec2c146103a2578061fa85146103b557600080fd5b3661038657005b600080fd5b34801561039757600080fd5b506103a0610aa7565b005b6103a06103b0366004612696565b610de6565b3480156103c157600080fd5b506103a06103d03660046126b8565b6110eb565b3480156103e157600080fd5b506103eb601b5481565b6040519081526020015b60405180910390f35b34801561040a57600080fd5b5060075461041e906001600160a01b031681565b6040516001600160a01b0390911681526020016103f5565b34801561044257600080fd5b5061044b6113c8565b6040516103f591906126f5565b34801561046457600080fd5b506103eb6104733660046126b8565b60176020526000908152604090205481565b34801561049157600080fd5b506104a56104a0366004612728565b61145a565b60405190151581526020016103f5565b3480156104c157600080fd5b50601c5461041e906001600160a01b031681565b6103a06104e3366004612752565b611474565b6103a06104f63660046126b8565b6114d9565b34801561050757600080fd5b5061051b6105163660046127a6565b611501565b6040516103f594939291906127fe565b6103a0610539366004612696565b611641565b34801561054a57600080fd5b506002546103eb565b34801561055f57600080fd5b506104a561056e36600461285f565b61166b565b34801561057f57600080fd5b506103a061058e3660046126b8565b61168f565b34801561059f57600080fd5b506105ed6105ae366004612728565b601660209081526000928352604080842090915290825290208054600182015460029092015490919060ff81169061010090046001600160a01b031684565b604080519485526020850193909352901515918301919091526001600160a01b031660608201526080016103f5565b34801561062857600080fd5b50604051601281526020016103f5565b34801561064457600080fd5b506104a5610653366004612728565b6119b5565b34801561066457600080fd5b506103eb600b5481565b34801561067a57600080fd5b506103eb60105481565b34801561069057600080fd5b506103eb601a5481565b3480156106a657600080fd5b506103eb600c5481565b3480156106bc57600080fd5b5060085461041e906001600160a01b031681565b3480156106dc57600080fd5b506103eb60125481565b3480156106f257600080fd5b506103eb6119d7565b34801561070757600080fd5b506103eb60135481565b6103a061071f36600461289b565b611a0a565b34801561073057600080fd5b5061074461073f3660046126b8565b611ab6565b60408051948552602085019390935291830152151560608201526080016103f5565b34801561077257600080fd5b506103eb610781366004612696565b6001600160a01b031660009081526020819052604090205490565b3480156107a857600080fd5b506103a0611b18565b6103a06107bf366004612696565b611b2c565b3480156107d057600080fd5b506103eb611b56565b3480156107e557600080fd5b506006546001600160a01b031661041e565b34801561080357600080fd5b506103eb600f5481565b34801561081957600080fd5b5060095461041e906001600160a01b031681565b34801561083957600080fd5b50600a5461041e906001600160a01b031681565b6103a061085b3660046128bd565b611b82565b34801561086c57600080fd5b5061044b611c09565b34801561088157600080fd5b506103eb611c18565b34801561089657600080fd5b506103eb60155481565b3480156108ac57600080fd5b506104a56108bb366004612728565b611c44565b3480156108cc57600080fd5b506104a56108db366004612728565b611cbf565b3480156108ec57600080fd5b506103eb6108fb366004612728565b611ccd565b34801561090c57600080fd5b506103a061091b3660046128f7565b611d69565b34801561092c57600080fd5b506103eb600e5481565b34801561094257600080fd5b50601e5461041e906001600160a01b031681565b34801561096257600080fd5b506103eb6109713660046126b8565b60186020526000908152604090205481565b6103a0610991366004612696565b611d85565b3480156109a257600080fd5b506103eb600d5481565b3480156109b857600080fd5b50601d5461041e906001600160a01b031681565b3480156109d857600080fd5b506103a06109e7366004612728565b611daf565b3480156109f857600080fd5b506103eb610a07366004612929565b611dd0565b348015610a1857600080fd5b50610a21611dfb565b6040516103f5919061295c565b348015610a3a57600080fd5b506103eb60145481565b348015610a5057600080fd5b506103eb60115481565b348015610a6657600080fd5b506103a0610a75366004612696565b611e43565b348015610a8657600080fd5b506103eb610a953660046126b8565b60196020526000908152604090205481565b6000610ab16119d7565b601254909150808214610de2576000806001841115610bd6576064610ad4611c18565b610ade90476129a3565b610ae891906129ba565b9150610af482476129dc565b601e5460408051600481526024810182526020810180516001600160e01b031661953d60e01b17905290519293506000926001600160a01b03909216918491610b3c916129ef565b60006040518083038185875af1925050503d8060008114610b79576040519150601f19603f3d011682016040523d82523d6000602084013e610b7e565b606091505b5050905080610bd45760405162461bcd60e51b815260206004820152601960248201527f756e61626c6520746f2072656365697665446976735f4368360000000000000060448201526064015b60405180910390fd5b505b8115610be557610be58261168f565b601e5460408051600481526024810182526020810180516001600160e01b031661fcf760e01b17905290516000926001600160a01b031691610c26916129ef565b6000604051808303816000865af19150503d8060008114610c63576040519150601f19603f3d011682016040523d82523d6000602084013e610c68565b606091505b5050905080610cb95760405162461bcd60e51b815260206004820152601860248201527f756e61626c6520746f20666c75736854617865735f34697400000000000000006044820152606401610bcb565b60125460009081526018602052604090205415610cd957610cd984611ebc565b600e5415610d7457601c5460408051600481526024810182526020810180516001600160e01b0316614bdd60e11b17905290516001600160a01b0390921691610d2291906129ef565b6000604051808303816000865af19150503d8060008114610d5f576040519150601f19603f3d011682016040523d82523d6000602084013e610d64565b606091505b50508091505080610d7457600080fd5b60125460008181526018602090815260408083205460198352928190205481514281529283019490945281019190915260608101919091527f0be4882f030414524b83ee82af238b9827e4e39c50d4cb6422a9d0e2d996fb8a9060800160405180910390a150505060128290555b5050565b601b5415801590610df657503415155b610dff57600080fd5b6078610e096119d7565b10610e435760405162461bcd60e51b815260206004820152600a6024820152693637b1313c9037bb32b960b11b6044820152606401610bcb565b610e4b610aa7565b60125460008181526018602052604081208054349290610e6c908490612a0b565b925050819055503460156000828254610e859190612a0b565b90915550503360009081526016602090815260408083208484529091528120549003610ee35760138054906000610ebb83612a1e565b90915550506012546000908152601760205260408120805491610edd83612a1e565b91905055505b6040805160808101825233600090815260166020908152838220858352905291909120548190610f14903490612a0b565b81526020810183905260006040820152606001336001600160a01b03851603610f3e576000610f40565b835b6001600160a01b03908116909152336000818152601660209081526040808320878452825291829020855181559085015160018201559084015160029091018054606090950151841661010002610100600160a81b0319921515929092166001600160a81b0319909516949094171790925583161461102c57601d5460405163805071a360e01b81523360048201526001600160a01b038481166024830152346044830152606482018490529091169063805071a390608401600060405180830381600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050505b8060000361103d5761103d34611f03565b600e54156110a557601c5460405161015960e21b81523460048201523360248201526001600160a01b039091169061056490604401600060405180830381600087803b15801561108c57600080fd5b505af11580156110a0573d6000803e3d6000fd5b505050505b6040805142815234602082015290810182905233907fc802e5dc8768739311e1483418763549b70644b0cbb843d53dadee5c4d5c80019060600160405180910390a25050565b60026005540361113d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bcb565b600260055561114a610aa7565b33600090815260166020908152604080832084845290915290206002015460ff161561117557600080fd5b60125481106111d95760405162461bcd60e51b815260206004820152602a60248201527f63616e7420636f6c6c65637420746f6b656e7320666f722063757272656e74206044820152696163746976652064617960b01b6064820152608401610bcb565b60006111e53383611ccd565b3360008181526016602090815260408083208784529091529020600201805460ff1916600117905590915061121c9030908361214a565b33600090815260166020908152604080832085845290915281206002015461010090046001600160a01b031690811561135c5760006103e86010548561126291906129a3565b61126c91906129ba565b90506103e86011548561127f91906129a3565b61128991906129ba565b601d546040516322e9035960e11b81526001600160a01b03868116600483015260248201859052604482018990529294509116906345d206b290606401600060405180830381600087803b1580156112e057600080fd5b505af11580156112f4573d6000803e3d6000fd5b50505050611302838261231a565b61130c338361231a565b604080514281526020810183905290810183905233906001600160a01b038516907f604e6c3132d526cad681a258d011b5ccf924aa66a17b42146b6ef7725420e0d79060600160405180910390a3505b826014600082825461136e9190612a0b565b909155505060408051428152602081018690529081018490526060810182905233907f8a7b8febc0146b91cff26d62c886d30510313a3b3990d15cfffeed4bf0c2b76a9060800160405180910390a2505060016005555050565b6060600380546113d790612a37565b80601f016020809104026020016040519081016040528092919081815260200182805461140390612a37565b80156114505780601f1061142557610100808354040283529160200191611450565b820191906000526020600020905b81548152906001019060200180831161143357829003601f168201915b5050505050905090565b6000336114688185856123f9565b60019150505b92915050565b61147c61251d565b601c80546001600160a01b03199081166001600160a01b03968716908117909255601e8054821695871695909517909455601d80548516938616939093179092556009805484169190941617909255600a80549091169091179055565b6114e161251d565b600a81101580156114f35750603c8111155b6114fc57600080fd5b601a55565b61150961263d565b61151161263d565b61151961263d565b61152161263d565b60005b86811015611637576001600160a01b03861660009081526016602052604081209061154f838b612a0b565b8152602001908152602001600020600001548582600a811061157357611573612a71565b602002015260186000611586838b612a0b565b8152602001908152602001600020548482600a81106115a7576115a7612a71565b60200201526115ba866108fb838b612a0b565b8382600a81106115cc576115cc612a71565b602090810291909101919091526001600160a01b0387166000908152601690915260408120906115fc838b612a0b565b815260208101919091526040016000206002015460ff168282600a811061162557611625612a71565b91151560209092020152600101611524565b5093509350935093565b61164961251d565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600033611679858285612577565b61168485858561214a565b506001949350505050565b60008061169a611c18565b9050600081600c54856116ad91906129a3565b6116b791906129ba565b9050600082600d54866116ca91906129a3565b6116d491906129ba565b9050600083600e54876116e791906129a3565b6116f191906129ba565b9050806116fe8385612a0b565b6117089190612a0b565b861115611735578061171a8385612a0b565b6117249190612a0b565b61172e90876129dc565b945061173a565b600094505b6007546040516000916001600160a01b03169087908381818185875af1925050503d8060008114611787576040519150601f19603f3d011682016040523d82523d6000602084013e61178c565b606091505b50509050806117d55760405162461bcd60e51b81526020600482015260156024820152744661696c656420746f2073656e642045746865723160581b6044820152606401610bcb565b6008546040516001600160a01b03909116908590600081818185875af1925050503d8060008114611822576040519150601f19603f3d011682016040523d82523d6000602084013e611827565b606091505b505080915050806118725760405162461bcd60e51b81526020600482015260156024820152742330b4b632b2103a379039b2b7321022ba3432b91960591b6044820152606401610bcb565b6009546040516001600160a01b03909116908490600081818185875af1925050503d80600081146118bf576040519150601f19603f3d011682016040523d82523d6000602084013e6118c4565b606091505b5050809150508061190f5760405162461bcd60e51b81526020600482015260156024820152744661696c656420746f2073656e642045746865723360581b6044820152606401610bcb565b600a546040516001600160a01b03909116908390600081818185875af1925050503d806000811461195c576040519150601f19603f3d011682016040523d82523d6000602084013e611961565b606091505b505080915050806119ac5760405162461bcd60e51b815260206004820152601560248201527411985a5b1959081d1bc81cd95b9908115d1a195c8d605a1b6044820152606401610bcb565b50505050505050565b6000336114688185856119c88383611dd0565b6119d29190612a0b565b6123f9565b6000601b546000036119e95750600090565b62015180601b54426119fb91906129dc565b611a0591906129ba565b905090565b611a1261251d565b60328211158015611a24575060328111155b611a625760405162461bcd60e51b815260206004820152600f60248201526e4f766572206d61782076616c75657360881b6044820152606401610bcb565b8115801590611a7057508015155b611aab5760405162461bcd60e51b815260206004820152600c60248201526b43616e74206265207a65726f60a01b6044820152606401610bcb565b601091909155601155565b336000818152601660209081526040808320858452825280832054601890925282205490929091908190611aea9086611ccd565b3360009081526016602090815260408083209883529790529590952060020154939592949360ff1692915050565b611b2061251d565b611b2a60006125eb565b565b611b3461251d565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006103e8601a54600f54611b6b91906129a3565b611b7591906129ba565b600f54611a0591906129dc565b611b8a61251d565b601b5415611b9757600080fd5b611bac336a211654585005212800000061231a565b42601b55601c80546001600160a01b038086166001600160a01b03199283168117909355601e8054868316908416179055601d8054918516918316919091179055600a80549091169091179055611c016119d7565b601255505050565b6060600480546113d790612a37565b6000600d54600c54600b54600e54611c309190612a0b565b611c3a9190612a0b565b611a059190612a0b565b60003381611c528286611dd0565b905083811015611cb25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bcb565b61168482868684036123f9565b60003361146881858561214a565b6001600160a01b038216600090815260166020908152604080832084845282528083206001015480845260199092528220548291908203611d135760009250505061146e565b6000818152601860209081526040808320546001600160a01b0389168452601683528184208885528352818420548585526019909352922054611d5691906129a3565b611d6091906129ba565b95945050505050565b611d7161251d565b600b93909355600c91909155600d55600e55565b611d8d61251d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b601e546001600160a01b03163314611dc657600080fd5b610de2828261231a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611e0361265c565b6040518060a00160405280611e166119d7565b815260200160135481526020016015548152602001611e33611b56565b8152602001601454815250905090565b611e4b61251d565b6001600160a01b038116611eb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bcb565b611eb9816125eb565b50565b600081600003611ed7575069152d02c7e14af6800000611ee2565b611edf611b56565b90505b611eec308261231a565b600091825260196020526040909120819055600f55565b6000806064611f1384600a6129a3565b611f1d91906129ba565b905060006064611f2e85604b6129a3565b611f3891906129ba565b9050611f448183612a0b565b841115611f6657611f558183612a0b565b611f5f90856129dc565b9250611f6b565b600092505b6007546040516000916001600160a01b03169085908381818185875af1925050503d8060008114611fb8576040519150601f19603f3d011682016040523d82523d6000602084013e611fbd565b606091505b50509050806120075760405162461bcd60e51b81526020600482015260166024820152754661696c656420746f2073656e64204574686572313160501b6044820152606401610bcb565b6008546040516001600160a01b03909116908490600081818185875af1925050503d8060008114612054576040519150601f19603f3d011682016040523d82523d6000602084013e612059565b606091505b505080915050806120a55760405162461bcd60e51b81526020600482015260166024820152752330b4b632b2103a379039b2b7321022ba3432b9189960511b6044820152606401610bcb565b6009546040516001600160a01b03909116908390600081818185875af1925050503d80600081146120f2576040519150601f19603f3d011682016040523d82523d6000602084013e6120f7565b606091505b505080915050806121435760405162461bcd60e51b81526020600482015260166024820152754661696c656420746f2073656e64204574686572313360501b6044820152606401610bcb565b5050505050565b6001600160a01b0383166121ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bcb565b6001600160a01b0382166122105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bcb565b6001600160a01b038316600090815260208190526040902054818110156122885760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bcb565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906122bf908490612a0b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161230b91815260200190565b60405180910390a35b50505050565b6001600160a01b0382166123705760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bcb565b80600260008282546123829190612a0b565b90915550506001600160a01b038216600090815260208190526040812080548392906123af908490612a0b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03831661245b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bcb565b6001600160a01b0382166124bc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bcb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6006546001600160a01b03163314611b2a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bcb565b60006125838484611dd0565b9050600019811461231457818110156125de5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bcb565b61231484848484036123f9565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051806101400160405280600a906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b038116811461269157600080fd5b919050565b6000602082840312156126a857600080fd5b6126b18261267a565b9392505050565b6000602082840312156126ca57600080fd5b5035919050565b60005b838110156126ec5781810151838201526020016126d4565b50506000910152565b60208152600082518060208401526127148160408501602087016126d1565b601f01601f19169190910160400192915050565b6000806040838503121561273b57600080fd5b6127448361267a565b946020939093013593505050565b6000806000806080858703121561276857600080fd5b6127718561267a565b935061277f6020860161267a565b925061278d6040860161267a565b915061279b6060860161267a565b905092959194509250565b6000806000606084860312156127bb57600080fd5b83359250602084013591506127d26040850161267a565b90509250925092565b8060005b600a8110156123145781518452602093840193909101906001016127df565b610500810161280d82876127db565b61281b6101408301866127db565b6128296102808301856127db565b6103c082018360005b600a8110156128535781511515835260209283019290910190600101612832565b50505095945050505050565b60008060006060848603121561287457600080fd5b61287d8461267a565b925061288b6020850161267a565b9150604084013590509250925092565b600080604083850312156128ae57600080fd5b50508035926020909101359150565b6000806000606084860312156128d257600080fd5b6128db8461267a565b92506128e96020850161267a565b91506127d26040850161267a565b6000806000806080858703121561290d57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561293c57600080fd5b6129458361267a565b91506129536020840161267a565b90509250929050565b60a08101818360005b6005811015612984578151835260209283019290910190600101612965565b50505092915050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761146e5761146e61298d565b6000826129d757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561146e5761146e61298d565b60008251612a018184602087016126d1565b9190910192915050565b8082018082111561146e5761146e61298d565b600060018201612a3057612a3061298d565b5060010190565b600181811c90821680612a4b57607f821691505b602082108103612a6b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220700f2d97bcd0df427526061b3b431dc287fe2849934ab8607465469deccc725f64736f6c63430008110033
Deployed Bytecode
0x60806040526004361061037f5760003560e01c806370a08231116101d1578063a9e1506a11610102578063d575538e116100a0578063e5c2e9db1161006f578063e5c2e9db14610a2e578063eddc94b014610a44578063f2fde38b14610a5a578063fd876afa14610a7a57600080fd5b8063d575538e146109ac578063d9a7c61d146109cc578063dd62ed3e146109ec578063e3eb542414610a0c57600080fd5b8063b0de5e29116100dc578063b0de5e2914610936578063bba2505814610956578063d2de2f8514610983578063d41d3b511461099657600080fd5b8063a9e1506a146108e0578063adda68ee14610900578063ae4636901461092057600080fd5b8063949cd1531161016f57806399c8d5561161014957806399c8d55614610875578063a41d17701461088a578063a457c2d7146108a0578063a9059cbb146108c057600080fd5b8063949cd1531461082d578063953790b11461084d57806395d89b411461086057600080fd5b806386971f5c116101ab57806386971f5c146107c45780638da5cb5b146107d957806392db28ae146107f757806394573ce31461080d57600080fd5b806370a0823114610766578063715018a61461079c57806385033762146107b157600080fd5b806323b872dd116102b657806346980138116102545780636572ca0c116102235780636572ca0c146106e65780636ba13a82146106fb5780636d6013d8146107115780636fede7f71461072457600080fd5b806346980138146106845780634edcc1d11461069a57806359ce7808146106b05780635c9302c9146106d057600080fd5b8063313ce56711610290578063313ce5671461061c57806339509351146106385780633c6890bc146106585780633caadc601461066e57600080fd5b806323b872dd14610553578063251e00a9146105735780632520fc941461059357600080fd5b8063095ea7b3116103235780631074cf90116102fd5780631074cf90146104e857806313c4f745146104fb57806314eb76ac1461052b57806318160ddd1461053e57600080fd5b8063095ea7b3146104855780630a578139146104b55780630b751279146104d557600080fd5b8063022466b51161035f578063022466b5146103d557806302d8325c146103fe57806306fdde0314610436578063072831661461045857600080fd5b806154411461038b578061ec2c146103a2578061fa85146103b557600080fd5b3661038657005b600080fd5b34801561039757600080fd5b506103a0610aa7565b005b6103a06103b0366004612696565b610de6565b3480156103c157600080fd5b506103a06103d03660046126b8565b6110eb565b3480156103e157600080fd5b506103eb601b5481565b6040519081526020015b60405180910390f35b34801561040a57600080fd5b5060075461041e906001600160a01b031681565b6040516001600160a01b0390911681526020016103f5565b34801561044257600080fd5b5061044b6113c8565b6040516103f591906126f5565b34801561046457600080fd5b506103eb6104733660046126b8565b60176020526000908152604090205481565b34801561049157600080fd5b506104a56104a0366004612728565b61145a565b60405190151581526020016103f5565b3480156104c157600080fd5b50601c5461041e906001600160a01b031681565b6103a06104e3366004612752565b611474565b6103a06104f63660046126b8565b6114d9565b34801561050757600080fd5b5061051b6105163660046127a6565b611501565b6040516103f594939291906127fe565b6103a0610539366004612696565b611641565b34801561054a57600080fd5b506002546103eb565b34801561055f57600080fd5b506104a561056e36600461285f565b61166b565b34801561057f57600080fd5b506103a061058e3660046126b8565b61168f565b34801561059f57600080fd5b506105ed6105ae366004612728565b601660209081526000928352604080842090915290825290208054600182015460029092015490919060ff81169061010090046001600160a01b031684565b604080519485526020850193909352901515918301919091526001600160a01b031660608201526080016103f5565b34801561062857600080fd5b50604051601281526020016103f5565b34801561064457600080fd5b506104a5610653366004612728565b6119b5565b34801561066457600080fd5b506103eb600b5481565b34801561067a57600080fd5b506103eb60105481565b34801561069057600080fd5b506103eb601a5481565b3480156106a657600080fd5b506103eb600c5481565b3480156106bc57600080fd5b5060085461041e906001600160a01b031681565b3480156106dc57600080fd5b506103eb60125481565b3480156106f257600080fd5b506103eb6119d7565b34801561070757600080fd5b506103eb60135481565b6103a061071f36600461289b565b611a0a565b34801561073057600080fd5b5061074461073f3660046126b8565b611ab6565b60408051948552602085019390935291830152151560608201526080016103f5565b34801561077257600080fd5b506103eb610781366004612696565b6001600160a01b031660009081526020819052604090205490565b3480156107a857600080fd5b506103a0611b18565b6103a06107bf366004612696565b611b2c565b3480156107d057600080fd5b506103eb611b56565b3480156107e557600080fd5b506006546001600160a01b031661041e565b34801561080357600080fd5b506103eb600f5481565b34801561081957600080fd5b5060095461041e906001600160a01b031681565b34801561083957600080fd5b50600a5461041e906001600160a01b031681565b6103a061085b3660046128bd565b611b82565b34801561086c57600080fd5b5061044b611c09565b34801561088157600080fd5b506103eb611c18565b34801561089657600080fd5b506103eb60155481565b3480156108ac57600080fd5b506104a56108bb366004612728565b611c44565b3480156108cc57600080fd5b506104a56108db366004612728565b611cbf565b3480156108ec57600080fd5b506103eb6108fb366004612728565b611ccd565b34801561090c57600080fd5b506103a061091b3660046128f7565b611d69565b34801561092c57600080fd5b506103eb600e5481565b34801561094257600080fd5b50601e5461041e906001600160a01b031681565b34801561096257600080fd5b506103eb6109713660046126b8565b60186020526000908152604090205481565b6103a0610991366004612696565b611d85565b3480156109a257600080fd5b506103eb600d5481565b3480156109b857600080fd5b50601d5461041e906001600160a01b031681565b3480156109d857600080fd5b506103a06109e7366004612728565b611daf565b3480156109f857600080fd5b506103eb610a07366004612929565b611dd0565b348015610a1857600080fd5b50610a21611dfb565b6040516103f5919061295c565b348015610a3a57600080fd5b506103eb60145481565b348015610a5057600080fd5b506103eb60115481565b348015610a6657600080fd5b506103a0610a75366004612696565b611e43565b348015610a8657600080fd5b506103eb610a953660046126b8565b60196020526000908152604090205481565b6000610ab16119d7565b601254909150808214610de2576000806001841115610bd6576064610ad4611c18565b610ade90476129a3565b610ae891906129ba565b9150610af482476129dc565b601e5460408051600481526024810182526020810180516001600160e01b031661953d60e01b17905290519293506000926001600160a01b03909216918491610b3c916129ef565b60006040518083038185875af1925050503d8060008114610b79576040519150601f19603f3d011682016040523d82523d6000602084013e610b7e565b606091505b5050905080610bd45760405162461bcd60e51b815260206004820152601960248201527f756e61626c6520746f2072656365697665446976735f4368360000000000000060448201526064015b60405180910390fd5b505b8115610be557610be58261168f565b601e5460408051600481526024810182526020810180516001600160e01b031661fcf760e01b17905290516000926001600160a01b031691610c26916129ef565b6000604051808303816000865af19150503d8060008114610c63576040519150601f19603f3d011682016040523d82523d6000602084013e610c68565b606091505b5050905080610cb95760405162461bcd60e51b815260206004820152601860248201527f756e61626c6520746f20666c75736854617865735f34697400000000000000006044820152606401610bcb565b60125460009081526018602052604090205415610cd957610cd984611ebc565b600e5415610d7457601c5460408051600481526024810182526020810180516001600160e01b0316614bdd60e11b17905290516001600160a01b0390921691610d2291906129ef565b6000604051808303816000865af19150503d8060008114610d5f576040519150601f19603f3d011682016040523d82523d6000602084013e610d64565b606091505b50508091505080610d7457600080fd5b60125460008181526018602090815260408083205460198352928190205481514281529283019490945281019190915260608101919091527f0be4882f030414524b83ee82af238b9827e4e39c50d4cb6422a9d0e2d996fb8a9060800160405180910390a150505060128290555b5050565b601b5415801590610df657503415155b610dff57600080fd5b6078610e096119d7565b10610e435760405162461bcd60e51b815260206004820152600a6024820152693637b1313c9037bb32b960b11b6044820152606401610bcb565b610e4b610aa7565b60125460008181526018602052604081208054349290610e6c908490612a0b565b925050819055503460156000828254610e859190612a0b565b90915550503360009081526016602090815260408083208484529091528120549003610ee35760138054906000610ebb83612a1e565b90915550506012546000908152601760205260408120805491610edd83612a1e565b91905055505b6040805160808101825233600090815260166020908152838220858352905291909120548190610f14903490612a0b565b81526020810183905260006040820152606001336001600160a01b03851603610f3e576000610f40565b835b6001600160a01b03908116909152336000818152601660209081526040808320878452825291829020855181559085015160018201559084015160029091018054606090950151841661010002610100600160a81b0319921515929092166001600160a81b0319909516949094171790925583161461102c57601d5460405163805071a360e01b81523360048201526001600160a01b038481166024830152346044830152606482018490529091169063805071a390608401600060405180830381600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050505b8060000361103d5761103d34611f03565b600e54156110a557601c5460405161015960e21b81523460048201523360248201526001600160a01b039091169061056490604401600060405180830381600087803b15801561108c57600080fd5b505af11580156110a0573d6000803e3d6000fd5b505050505b6040805142815234602082015290810182905233907fc802e5dc8768739311e1483418763549b70644b0cbb843d53dadee5c4d5c80019060600160405180910390a25050565b60026005540361113d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bcb565b600260055561114a610aa7565b33600090815260166020908152604080832084845290915290206002015460ff161561117557600080fd5b60125481106111d95760405162461bcd60e51b815260206004820152602a60248201527f63616e7420636f6c6c65637420746f6b656e7320666f722063757272656e74206044820152696163746976652064617960b01b6064820152608401610bcb565b60006111e53383611ccd565b3360008181526016602090815260408083208784529091529020600201805460ff1916600117905590915061121c9030908361214a565b33600090815260166020908152604080832085845290915281206002015461010090046001600160a01b031690811561135c5760006103e86010548561126291906129a3565b61126c91906129ba565b90506103e86011548561127f91906129a3565b61128991906129ba565b601d546040516322e9035960e11b81526001600160a01b03868116600483015260248201859052604482018990529294509116906345d206b290606401600060405180830381600087803b1580156112e057600080fd5b505af11580156112f4573d6000803e3d6000fd5b50505050611302838261231a565b61130c338361231a565b604080514281526020810183905290810183905233906001600160a01b038516907f604e6c3132d526cad681a258d011b5ccf924aa66a17b42146b6ef7725420e0d79060600160405180910390a3505b826014600082825461136e9190612a0b565b909155505060408051428152602081018690529081018490526060810182905233907f8a7b8febc0146b91cff26d62c886d30510313a3b3990d15cfffeed4bf0c2b76a9060800160405180910390a2505060016005555050565b6060600380546113d790612a37565b80601f016020809104026020016040519081016040528092919081815260200182805461140390612a37565b80156114505780601f1061142557610100808354040283529160200191611450565b820191906000526020600020905b81548152906001019060200180831161143357829003601f168201915b5050505050905090565b6000336114688185856123f9565b60019150505b92915050565b61147c61251d565b601c80546001600160a01b03199081166001600160a01b03968716908117909255601e8054821695871695909517909455601d80548516938616939093179092556009805484169190941617909255600a80549091169091179055565b6114e161251d565b600a81101580156114f35750603c8111155b6114fc57600080fd5b601a55565b61150961263d565b61151161263d565b61151961263d565b61152161263d565b60005b86811015611637576001600160a01b03861660009081526016602052604081209061154f838b612a0b565b8152602001908152602001600020600001548582600a811061157357611573612a71565b602002015260186000611586838b612a0b565b8152602001908152602001600020548482600a81106115a7576115a7612a71565b60200201526115ba866108fb838b612a0b565b8382600a81106115cc576115cc612a71565b602090810291909101919091526001600160a01b0387166000908152601690915260408120906115fc838b612a0b565b815260208101919091526040016000206002015460ff168282600a811061162557611625612a71565b91151560209092020152600101611524565b5093509350935093565b61164961251d565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600033611679858285612577565b61168485858561214a565b506001949350505050565b60008061169a611c18565b9050600081600c54856116ad91906129a3565b6116b791906129ba565b9050600082600d54866116ca91906129a3565b6116d491906129ba565b9050600083600e54876116e791906129a3565b6116f191906129ba565b9050806116fe8385612a0b565b6117089190612a0b565b861115611735578061171a8385612a0b565b6117249190612a0b565b61172e90876129dc565b945061173a565b600094505b6007546040516000916001600160a01b03169087908381818185875af1925050503d8060008114611787576040519150601f19603f3d011682016040523d82523d6000602084013e61178c565b606091505b50509050806117d55760405162461bcd60e51b81526020600482015260156024820152744661696c656420746f2073656e642045746865723160581b6044820152606401610bcb565b6008546040516001600160a01b03909116908590600081818185875af1925050503d8060008114611822576040519150601f19603f3d011682016040523d82523d6000602084013e611827565b606091505b505080915050806118725760405162461bcd60e51b81526020600482015260156024820152742330b4b632b2103a379039b2b7321022ba3432b91960591b6044820152606401610bcb565b6009546040516001600160a01b03909116908490600081818185875af1925050503d80600081146118bf576040519150601f19603f3d011682016040523d82523d6000602084013e6118c4565b606091505b5050809150508061190f5760405162461bcd60e51b81526020600482015260156024820152744661696c656420746f2073656e642045746865723360581b6044820152606401610bcb565b600a546040516001600160a01b03909116908390600081818185875af1925050503d806000811461195c576040519150601f19603f3d011682016040523d82523d6000602084013e611961565b606091505b505080915050806119ac5760405162461bcd60e51b815260206004820152601560248201527411985a5b1959081d1bc81cd95b9908115d1a195c8d605a1b6044820152606401610bcb565b50505050505050565b6000336114688185856119c88383611dd0565b6119d29190612a0b565b6123f9565b6000601b546000036119e95750600090565b62015180601b54426119fb91906129dc565b611a0591906129ba565b905090565b611a1261251d565b60328211158015611a24575060328111155b611a625760405162461bcd60e51b815260206004820152600f60248201526e4f766572206d61782076616c75657360881b6044820152606401610bcb565b8115801590611a7057508015155b611aab5760405162461bcd60e51b815260206004820152600c60248201526b43616e74206265207a65726f60a01b6044820152606401610bcb565b601091909155601155565b336000818152601660209081526040808320858452825280832054601890925282205490929091908190611aea9086611ccd565b3360009081526016602090815260408083209883529790529590952060020154939592949360ff1692915050565b611b2061251d565b611b2a60006125eb565b565b611b3461251d565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006103e8601a54600f54611b6b91906129a3565b611b7591906129ba565b600f54611a0591906129dc565b611b8a61251d565b601b5415611b9757600080fd5b611bac336a211654585005212800000061231a565b42601b55601c80546001600160a01b038086166001600160a01b03199283168117909355601e8054868316908416179055601d8054918516918316919091179055600a80549091169091179055611c016119d7565b601255505050565b6060600480546113d790612a37565b6000600d54600c54600b54600e54611c309190612a0b565b611c3a9190612a0b565b611a059190612a0b565b60003381611c528286611dd0565b905083811015611cb25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bcb565b61168482868684036123f9565b60003361146881858561214a565b6001600160a01b038216600090815260166020908152604080832084845282528083206001015480845260199092528220548291908203611d135760009250505061146e565b6000818152601860209081526040808320546001600160a01b0389168452601683528184208885528352818420548585526019909352922054611d5691906129a3565b611d6091906129ba565b95945050505050565b611d7161251d565b600b93909355600c91909155600d55600e55565b611d8d61251d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b601e546001600160a01b03163314611dc657600080fd5b610de2828261231a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611e0361265c565b6040518060a00160405280611e166119d7565b815260200160135481526020016015548152602001611e33611b56565b8152602001601454815250905090565b611e4b61251d565b6001600160a01b038116611eb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bcb565b611eb9816125eb565b50565b600081600003611ed7575069152d02c7e14af6800000611ee2565b611edf611b56565b90505b611eec308261231a565b600091825260196020526040909120819055600f55565b6000806064611f1384600a6129a3565b611f1d91906129ba565b905060006064611f2e85604b6129a3565b611f3891906129ba565b9050611f448183612a0b565b841115611f6657611f558183612a0b565b611f5f90856129dc565b9250611f6b565b600092505b6007546040516000916001600160a01b03169085908381818185875af1925050503d8060008114611fb8576040519150601f19603f3d011682016040523d82523d6000602084013e611fbd565b606091505b50509050806120075760405162461bcd60e51b81526020600482015260166024820152754661696c656420746f2073656e64204574686572313160501b6044820152606401610bcb565b6008546040516001600160a01b03909116908490600081818185875af1925050503d8060008114612054576040519150601f19603f3d011682016040523d82523d6000602084013e612059565b606091505b505080915050806120a55760405162461bcd60e51b81526020600482015260166024820152752330b4b632b2103a379039b2b7321022ba3432b9189960511b6044820152606401610bcb565b6009546040516001600160a01b03909116908390600081818185875af1925050503d80600081146120f2576040519150601f19603f3d011682016040523d82523d6000602084013e6120f7565b606091505b505080915050806121435760405162461bcd60e51b81526020600482015260166024820152754661696c656420746f2073656e64204574686572313360501b6044820152606401610bcb565b5050505050565b6001600160a01b0383166121ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bcb565b6001600160a01b0382166122105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bcb565b6001600160a01b038316600090815260208190526040902054818110156122885760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bcb565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906122bf908490612a0b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161230b91815260200190565b60405180910390a35b50505050565b6001600160a01b0382166123705760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bcb565b80600260008282546123829190612a0b565b90915550506001600160a01b038216600090815260208190526040812080548392906123af908490612a0b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03831661245b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bcb565b6001600160a01b0382166124bc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bcb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6006546001600160a01b03163314611b2a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bcb565b60006125838484611dd0565b9050600019811461231457818110156125de5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bcb565b61231484848484036123f9565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051806101400160405280600a906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b038116811461269157600080fd5b919050565b6000602082840312156126a857600080fd5b6126b18261267a565b9392505050565b6000602082840312156126ca57600080fd5b5035919050565b60005b838110156126ec5781810151838201526020016126d4565b50506000910152565b60208152600082518060208401526127148160408501602087016126d1565b601f01601f19169190910160400192915050565b6000806040838503121561273b57600080fd5b6127448361267a565b946020939093013593505050565b6000806000806080858703121561276857600080fd5b6127718561267a565b935061277f6020860161267a565b925061278d6040860161267a565b915061279b6060860161267a565b905092959194509250565b6000806000606084860312156127bb57600080fd5b83359250602084013591506127d26040850161267a565b90509250925092565b8060005b600a8110156123145781518452602093840193909101906001016127df565b610500810161280d82876127db565b61281b6101408301866127db565b6128296102808301856127db565b6103c082018360005b600a8110156128535781511515835260209283019290910190600101612832565b50505095945050505050565b60008060006060848603121561287457600080fd5b61287d8461267a565b925061288b6020850161267a565b9150604084013590509250925092565b600080604083850312156128ae57600080fd5b50508035926020909101359150565b6000806000606084860312156128d257600080fd5b6128db8461267a565b92506128e96020850161267a565b91506127d26040850161267a565b6000806000806080858703121561290d57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561293c57600080fd5b6129458361267a565b91506129536020840161267a565b90509250929050565b60a08101818360005b6005811015612984578151835260209283019290910190600101612965565b50505092915050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761146e5761146e61298d565b6000826129d757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561146e5761146e61298d565b60008251612a018184602087016126d1565b9190910192915050565b8082018082111561146e5761146e61298d565b600060018201612a3057612a3061298d565b5060010190565b600181811c90821680612a4b57607f821691505b602082108103612a6b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220700f2d97bcd0df427526061b3b431dc287fe2849934ab8607465469deccc725f64736f6c63430008110033
Deployed Bytecode Sourcemap
19493:14438:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23930:1277;;;;;;;;;;;;;:::i;:::-;;29097:1168;;;;;;:::i;:::-;;:::i;30414:1296::-;;;;;;;;;;-1:-1:-1;30414:1296:0;;;;;:::i;:::-;;:::i;21840:26::-;;;;;;;;;;;;;;;;;;;714:25:1;;;702:2;687:18;21840:26:0;;;;;;;;20056:68;;;;;;;;;;-1:-1:-1;20056:68:0;;;;-1:-1:-1;;;;;20056:68:0;;;;;;-1:-1:-1;;;;;914:32:1;;;896:51;;884:2;869:18;20056:68:0;750:203:1;4152:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21415:50::-;;;;;;;;;;-1:-1:-1;21415:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;6503:201;;;;;;;;;;-1:-1:-1;6503:201:0;;;;;:::i;:::-;;:::i;:::-;;;2038:14:1;;2031:22;2013:41;;2001:2;1986:18;6503:201:0;1873:187:1;21902:40:0;;;;;;;;;;-1:-1:-1;21902:40:0;;;;-1:-1:-1;;;;;21902:40:0;;;22825:369;;;;;;:::i;:::-;;:::i;32367:198::-;;;;;;:::i;:::-;;:::i;33211:717::-;;;;;;;;;;-1:-1:-1;33211:717:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;27724:95::-;;;;;;:::i;:::-;;:::i;5272:108::-;;;;;;;;;;-1:-1:-1;5360:12:0;;5272:108;;7284:295;;;;;;;;;;-1:-1:-1;7284:295:0;;;;;:::i;:::-;;:::i;25516:909::-;;;;;;;;;;-1:-1:-1;25516:909:0;;;;;:::i;:::-;;:::i;21327:83::-;;;;;;;;;;-1:-1:-1;21327:83:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21327:83:0;;;;;;;4848:25:1;;;4904:2;4889:18;;4882:34;;;;4959:14;;4952:22;4932:18;;;4925:50;;;;-1:-1:-1;;;;;5011:32:1;5006:2;4991:18;;4984:60;4835:3;4820:19;21327:83:0;4623:427:1;5114:93:0;;;;;;;;;;-1:-1:-1;5114:93:0;;5197:2;:36:1;;5185:2;5170:18;5114:93:0;5055:184:1;7988:238:0;;;;;;;;;;-1:-1:-1;7988:238:0;;;;;:::i;:::-;;:::i;20396:33::-;;;;;;;;;;;;;;;;20864:34;;;;;;;;;;;;;;;;21736:45;;;;;;;;;;;;;;;;20434:34;;;;;;;;;;;;;;;;20129:69;;;;;;;;;;-1:-1:-1;20129:69:0;;;;-1:-1:-1;;;;;20129:69:0;;;20944:25;;;;;;;;;;;;;;;;23778:146;;;;;;;;;;;;;:::i;20974:25::-;;;;;;;;;;;;;;;;23386:303;;;;;;:::i;:::-;;:::i;32770:435::-;;;;;;;;;;-1:-1:-1;32770:435:0;;;;;:::i;:::-;;:::i;:::-;;;;5722:25:1;;;5778:2;5763:18;;5756:34;;;;5806:18;;;5799:34;5876:14;5869:22;5864:2;5849:18;;5842:50;5709:3;5694:19;32770:435:0;5497:401:1;5443:127:0;;;;;;;;;;-1:-1:-1;5443:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5544:18:0;5517:7;5544:18;;;;;;;;;;;;5443:127;16156:103;;;;;;;;;;;;;:::i;27884:93::-;;;;;;:::i;:::-;;:::i;28779:157::-;;;;;;;;;;;;;:::i;15508:87::-;;;;;;;;;;-1:-1:-1;15581:6:0;;-1:-1:-1;;;;;15581:6:0;15508:87;;20683:48;;;;;;;;;;;;;;;;20203:70;;;;;;;;;;-1:-1:-1;20203:70:0;;;;-1:-1:-1;;;;;20203:70:0;;;20278:27;;;;;;;;;;-1:-1:-1;20278:27:0;;;;-1:-1:-1;;;;;20278:27:0;;;22344:475;;;;;;:::i;:::-;;:::i;4371:104::-;;;;;;;;;;;;;:::i;25262:134::-;;;;;;;;;;;;;:::i;21047:33::-;;;;;;;;;;;;;;;;8729:436;;;;;;;;;;-1:-1:-1;8729:436:0;;;;;:::i;:::-;;:::i;5776:193::-;;;;;;;;;;-1:-1:-1;5776:193:0;;;;;:::i;:::-;;:::i;31850:393::-;;;;;;;;;;-1:-1:-1;31850:393:0;;;;;:::i;:::-;;:::i;27400:258::-;;;;;;;;;;-1:-1:-1;27400:258:0;;;;;:::i;:::-;;:::i;20514:34::-;;;;;;;;;;;;;;;;21986:31;;;;;;;;;;-1:-1:-1;21986:31:0;;;;-1:-1:-1;;;;;21986:31:0;;;21512:50;;;;;;;;;;-1:-1:-1;21512:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;28044:97;;;;;;:::i;:::-;;:::i;20473:36::-;;;;;;;;;;;;;;;;21947:34;;;;;;;;;;-1:-1:-1;21947:34:0;;;;-1:-1:-1;;;;;21947:34:0;;;28147:141;;;;;;;;;;-1:-1:-1;28147:141:0;;;;;:::i;:::-;;:::i;6032:151::-;;;;;;;;;;-1:-1:-1;6032:151:0;;;;;:::i;:::-;;:::i;32571:193::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21004:38::-;;;;;;;;;;;;;;;;20903:34;;;;;;;;;;;;;;;;16414:201;;;;;;;;;;-1:-1:-1;16414:201:0;;;;;:::i;:::-;;:::i;21611:48::-;;;;;;;;;;-1:-1:-1;21611:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;23930:1277;23973:16;23992:9;:7;:9::i;:::-;24031:10;;23973:28;;-1:-1:-1;24056:23:0;;;24052:1150;;24090:17;24116:18;24160:1;24149:8;:12;24145:327;;;24220:3;24211:5;:3;:5::i;:::-;24187:29;;:21;:29;:::i;:::-;24186:37;;;;:::i;:::-;24174:49;-1:-1:-1;24247:33:0;24174:49;24247:21;:33;:::i;:::-;24318:16;;24362:44;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24362:44:0;-1:-1:-1;;;24362:44:0;;;24310:97;;24234:46;;-1:-1:-1;24292:12:0;;-1:-1:-1;;;;;24318:16:0;;;;24234:46;;24310:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24291:116;;;24426:7;24418:44;;;;-1:-1:-1;;;24418:44:0;;8776:2:1;24418:44:0;;;8758:21:1;8815:2;8795:18;;;8788:30;8854:27;8834:18;;;8827:55;8899:18;;24418:44:0;;;;;;;;;24163:309;24145:327;24486:14;;24482:62;;24513:21;24524:9;24513:10;:21::i;:::-;24580:16;;24603:43;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24603:43:0;-1:-1:-1;;;24603:43:0;;;24572:75;;24553:13;;-1:-1:-1;;;;;24580:16:0;;24572:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24552:95;;;24664:8;24656:44;;;;-1:-1:-1;;;24656:44:0;;9130:2:1;24656:44:0;;;9112:21:1;9169:2;9149:18;;;9142:30;9208:26;9188:18;;;9181:54;9252:18;;24656:44:0;8928:348:1;24656:44:0;24797:10;;24781:27;;;;:15;:27;;;;;;:32;24777:95;;24826:36;24850:11;24826:23;:36::i;:::-;24886:15;;:20;24882:165;;24942:16;;24965:43;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24965:43:0;-1:-1:-1;;;24965:43:0;;;24934:75;;-1:-1:-1;;;;;24942:16:0;;;;24934:75;;24965:43;24934:75;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24919:90;;;;;25028:8;25020:17;;;;;;25095:10;;25107:27;;;;:15;:27;;;;;;;;;25136:13;:25;;;;;;;25062:100;;25078:15;9512:25:1;;9553:18;;;9546:34;;;;9596:18;;9589:34;;;;9654:2;9639:18;;9632:34;;;;25062:100:0;;9499:3:1;9484:19;25062:100:0;;;;;;;-1:-1:-1;;;25171:10:0;:21;;;24052:1150;23966:1241;;23930:1277::o;29097:1168::-;29176:11;;:16;;;;:34;;-1:-1:-1;29196:9:0;:14;;29176:34;29167:45;;;;;;29239:3;29227:9;:7;:9::i;:::-;:15;29219:38;;;;-1:-1:-1;;;29219:38:0;;9879:2:1;29219:38:0;;;9861:21:1;9918:2;9898:18;;;9891:30;-1:-1:-1;;;9937:18:1;;;9930:40;9987:18;;29219:38:0;9677:334:1;29219:38:0;29264:19;:17;:19::i;:::-;29312:10;;29290:19;29331:28;;;:15;:28;;;;;:41;;29363:9;;29290:19;29331:41;;29363:9;;29331:41;:::i;:::-;;;;;;;;29401:9;29379:18;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;29443:10:0;29423:31;;;;:19;:31;;;;;;;;:44;;;;;;;;:58;:63;;29419:136;;29497:10;:12;;;:10;:12;;;:::i;:::-;;;;-1:-1:-1;;29534:10:0;;29518:27;;;;:15;:27;;;;;:29;;;;;;:::i;:::-;;;;;;29419:136;29610:247;;;;;;;;29671:10;-1:-1:-1;29651:31:0;;;:19;:31;;;;;;;:44;;;;;;;;;:58;29610:247;;29651:70;;29712:9;;29651:70;:::i;:::-;29610:247;;;;;;;;-1:-1:-1;29610:247:0;;;;;;29810:10;-1:-1:-1;;;;;29794:26:0;;;29793:56;;29847:1;29793:56;;;29824:12;29793:56;-1:-1:-1;;;;;29610:247:0;;;;;;29583:10;29563:31;;;;:19;:31;;;;;;;;:44;;;;;;;;;:294;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29563:294:0;;;;;;;-1:-1:-1;;;;;;29563:294:0;;;;;;;;;;;29870:26;;;29866:140;;29907:17;;:91;;-1:-1:-1;;;29907:91:0;;29949:10;29907:91;;;10555:34:1;-1:-1:-1;;;;;10625:15:1;;;10605:18;;;10598:43;29975:9:0;10657:18:1;;;10650:34;10700:18;;;10693:34;;;29907:17:0;;;;:41;;10489:19:1;;29907:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29866:140;30018:11;30033:1;30018:16;30014:64;;30045:25;30060:9;30045:14;:25::i;:::-;30090:15;;:20;30086:93;;30121:16;;:50;;-1:-1:-1;;;30121:50:0;;30149:9;30121:50;;;10912:25:1;30160:10:0;10953:18:1;;;10946:60;-1:-1:-1;;;;;30121:16:0;;;;:27;;10885:18:1;;30121:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30086:93;30192:67;;;30219:15;11219:25:1;;30236:9:0;11275:2:1;11260:18;;11253:34;11303:18;;;11296:34;;;30207:10:0;;30192:67;;11207:2:1;11192:18;30192:67:0;;;;;;;29160:1105;29097:1168;:::o;30414:1296::-;17857:1;18455:7;;:19;18447:63;;;;-1:-1:-1;;;18447:63:0;;11543:2:1;18447:63:0;;;11525:21:1;11582:2;11562:18;;;11555:30;11621:33;11601:18;;;11594:61;11672:18;;18447:63:0;11341:355:1;18447:63:0;17857:1;18588:7;:18;30486:19:::1;:17;:19::i;:::-;30540:10;30520:31;::::0;;;:19:::1;:31;::::0;;;;;;;:42;;;;;;;;:55:::1;;::::0;::::1;;:64;30512:73;;;::::0;::::1;;30612:10;;30600:9;:22;30592:77;;;::::0;-1:-1:-1;;;30592:77:0;;11903:2:1;30592:77:0::1;::::0;::::1;11885:21:1::0;11942:2;11922:18;;;11915:30;11981:34;11961:18;;;11954:62;-1:-1:-1;;;12032:18:1;;;12025:40;12082:19;;30592:77:0::1;11701:406:1::0;30592:77:0::1;30678:20;30701:37;30716:10;30728:9;30701:14;:37::i;:::-;30767:10;30747:31;::::0;;;:19:::1;:31;::::0;;;;;;;:42;;;;;;;;:55:::1;;:62:::0;;-1:-1:-1;;30747:62:0::1;30805:4;30747:62;::::0;;30678:60;;-1:-1:-1;30816:50:0::1;::::0;30834:4:::1;::::0;30678:60;30816:9:::1;:50::i;:::-;30922:10;30875:24;30902:31:::0;;;:19:::1;:31;::::0;;;;;;;:42;;;;;;;;:51:::1;;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;30902:51:0::1;::::0;30995:30;;30991:558:::1;;31102:22;31161:4;31143:14;;31128:12;:29;;;;:::i;:::-;31127:38;;;;:::i;:::-;31102:63;;31225:4;31207:14;;31192:12;:29;;;;:::i;:::-;31191:38;;;;:::i;:::-;31240:17;::::0;:96:::1;::::0;-1:-1:-1;;;31240:96:0;;-1:-1:-1;;;;;12332:32:1;;;31240:96:0::1;::::0;::::1;12314:51:1::0;12381:18;;;12374:34;;;12424:18;;;12417:34;;;31174:55:0;;-1:-1:-1;31240:17:0;::::1;::::0;:51:::1;::::0;12287:18:1;;31240:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31347:39;31353:16;31371:14;31347:5;:39::i;:::-;31395:33;31401:10;31413:14;31395:5;:33::i;:::-;31444:97;::::0;;31493:15:::1;11219:25:1::0;;11275:2;11260:18;;11253:34;;;11303:18;;;11296:34;;;31481:10:0::1;::::0;-1:-1:-1;;;;;31444:97:0;::::1;::::0;::::1;::::0;11207:2:1;11192:18;31444:97:0::1;;;;;;;31027:522;30991:558;31584:12;31557:23;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;31610:94:0::1;::::0;;31647:15:::1;9512:25:1::0;;9568:2;9553:18;;9546:34;;;9596:18;;;9589:34;;;9654:2;9639:18;;9632:34;;;31635:10:0::1;::::0;31610:94:::1;::::0;9499:3:1;9484:19;31610:94:0::1;;;;;;;-1:-1:-1::0;;17813:1:0;18767:7;:22;-1:-1:-1;;30414:1296:0:o;4152:100::-;4206:13;4239:5;4232:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4152:100;:::o;6503:201::-;6586:4;2814:10;6642:32;2814:10;6658:7;6667:6;6642:8;:32::i;:::-;6692:4;6685:11;;;6503:201;;;;;:::o;22825:369::-;15394:13;:11;:13::i;:::-;22991:16:::1;:49:::0;;-1:-1:-1;;;;;;22991:49:0;;::::1;-1:-1:-1::0;;;;;22991:49:0;;::::1;::::0;;::::1;::::0;;;23047:16:::1;:31:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;23085:17:::1;:39:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;23131:10:::1;:23:::0;;;::::1;::::0;;;::::1;;::::0;;;23161:12:::1;:27:::0;;;;::::1;::::0;;::::1;::::0;;22825:369::o;32367:198::-;15394:13;:11;:13::i;:::-;32501:2:::1;32493:4;:10;;:24;;;;;32515:2;32507:4;:10;;32493:24;32484:35;;;::::0;::::1;;32526:26;:33:::0;32367:198::o;33211:717::-;33345:31;;:::i;:::-;33385:32;;:::i;:::-;33426:30;;:::i;:::-;33465:25;;:::i;:::-;33513:9;33508:348;33532:4;33528:1;:8;33508:348;;;-1:-1:-1;;;;;33567:28:0;;;;;;:19;:28;;;;;;33596:8;33603:1;33596:4;:8;:::i;:::-;33567:38;;;;;;;;;;;:52;;;33549:12;33562:1;33549:15;;;;;;;:::i;:::-;;;;:70;33647:15;:25;33663:8;33670:1;33663:4;:8;:::i;:::-;33647:25;;;;;;;;;;;;33628:13;33642:1;33628:16;;;;;;;:::i;:::-;;;;:44;33698:33;33713:7;33722:8;33729:1;33722:4;:8;:::i;33698:33::-;33681:11;33693:1;33681:14;;;;;;;:::i;:::-;;;;;;;;;:50;;;;-1:-1:-1;;;;;33755:28:0;;;;;;:19;:28;;;;;;;33784:8;33791:1;33784:4;:8;:::i;:::-;33755:38;;;;;;;;;;;-1:-1:-1;33755:38:0;:51;;;;;33740:9;33750:1;33740:12;;;;;;;:::i;:::-;:66;;;:12;;;;;:66;33836:3;;33508:348;;;;33211:717;;;;;;;:::o;27724:95::-;15394:13;:11;:13::i;:::-;27798:9:::1;:15:::0;;-1:-1:-1;;;;;;27798:15:0::1;-1:-1:-1::0;;;;;27798:15:0;;;::::1;::::0;;;::::1;::::0;;27724:95::o;7284:295::-;7415:4;2814:10;7473:38;7489:4;2814:10;7504:6;7473:15;:38::i;:::-;7522:27;7532:4;7538:2;7542:6;7522:9;:27::i;:::-;-1:-1:-1;7567:4:0;;7284:295;-1:-1:-1;;;;7284:295:0:o;25516:909::-;25567:15;25589:17;25609:5;:3;:5::i;:::-;25589:25;;25621:16;25670:9;25651:15;;25641:7;:25;;;;:::i;:::-;25640:39;;;;:::i;:::-;25621:58;;25686:17;25737:9;25717:16;;25707:7;:26;;;;:::i;:::-;25706:40;;;;:::i;:::-;25686:60;;25753:17;25803:9;25784:15;;25774:7;:25;;;;:::i;:::-;25773:39;;;;:::i;:::-;25753:59;-1:-1:-1;25753:59:0;25834:20;25845:9;25834:8;:20;:::i;:::-;:32;;;;:::i;:::-;25825:7;:42;25821:162;;;25923:9;25900:20;25911:9;25900:8;:20;:::i;:::-;:32;;;;:::i;:::-;25889:44;;:7;:44;:::i;:::-;25879:54;;25821:162;;;25971:1;25961:11;;25821:162;26008:8;;:33;;25994:9;;-1:-1:-1;;;;;26008:8:0;;26029:7;;25994:9;26008:33;25994:9;26008:33;26029:7;26008:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25993:48;;;26060:4;26052:38;;;;-1:-1:-1;;;26052:38:0;;13391:2:1;26052:38:0;;;13373:21:1;13430:2;13410:18;;;13403:30;-1:-1:-1;;;13449:18:1;;;13442:51;13510:18;;26052:38:0;13189:345:1;26052:38:0;26114:9;;:35;;-1:-1:-1;;;;;26114:9:0;;;;26136:8;;26114:35;;;;26136:8;26114:9;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26103:46;;;;;26168:4;26160:38;;;;-1:-1:-1;;;26160:38:0;;13741:2:1;26160:38:0;;;13723:21:1;13780:2;13760:18;;;13753:30;-1:-1:-1;;;13799:18:1;;;13792:51;13860:18;;26160:38:0;13539:345:1;26160:38:0;26222:10;;:37;;-1:-1:-1;;;;;26222:10:0;;;;26245:9;;26222:37;;;;26245:9;26222:10;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26211:48;;;;;26278:4;26270:38;;;;-1:-1:-1;;;26270:38:0;;14091:2:1;26270:38:0;;;14073:21:1;14130:2;14110:18;;;14103:30;-1:-1:-1;;;14149:18:1;;;14142:51;14210:18;;26270:38:0;13889:345:1;26270:38:0;26332:12;;:38;;-1:-1:-1;;;;;26332:12:0;;;;26356:9;;26332:38;;;;26356:9;26332:12;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26321:49;;;;;26389:4;26381:38;;;;-1:-1:-1;;;26381:38:0;;14441:2:1;26381:38:0;;;14423:21:1;14480:2;14460:18;;;14453:30;-1:-1:-1;;;14499:18:1;;;14492:51;14560:18;;26381:38:0;14239:345:1;26381:38:0;25560:865;;;;;;25516:909;:::o;7988:238::-;8076:4;2814:10;8132:64;2814:10;8148:7;8185:10;8157:25;2814:10;8148:7;8157:9;:25::i;:::-;:38;;;;:::i;:::-;8132:8;:64::i;23778:146::-;23818:7;23838:11;;23853:1;23838:16;23834:30;;-1:-1:-1;23863:1:0;;23778:146::o;23834:30::-;23912:6;23897:11;;23879:15;:29;;;;:::i;:::-;23878:40;;;;:::i;:::-;23871:47;;23778:146;:::o;23386:303::-;15394:13;:11;:13::i;:::-;23509:2:::1;23496:9;:15;;:34;;;;;23528:2;23515:9;:15;;23496:34;23487:64;;;::::0;-1:-1:-1;;;23487:64:0;;14791:2:1;23487:64:0::1;::::0;::::1;14773:21:1::0;14830:2;14810:18;;;14803:30;-1:-1:-1;;;14849:18:1;;;14842:45;14904:18;;23487:64:0::1;14589:339:1::0;23487:64:0::1;23567:14:::0;;;::::1;::::0;:32:::1;;-1:-1:-1::0;23585:14:0;;::::1;23567:32;23558:59;;;::::0;-1:-1:-1;;;23558:59:0;;15135:2:1;23558:59:0::1;::::0;::::1;15117:21:1::0;15174:2;15154:18;;;15147:30;-1:-1:-1;;;15193:18:1;;;15186:42;15245:18;;23558:59:0::1;14933:336:1::0;23558:59:0::1;23624:14;:26:::0;;;;23657:14:::1;:26:::0;23386:303::o;32770:435::-;33003:10;32852:19;32983:31;;;:19;:31;;;;;;;;:37;;;;;;;;:51;33057:15;:21;;;;;;32983:51;;33057:21;;32852:19;;;33098:32;;33015:4;33098:14;:32::i;:::-;33169:10;33149:31;;;;:19;:31;;;;;;;;:37;;;;;;;;;;:50;;;32770:435;;;;33085:45;33149:50;;;32770:435;-1:-1:-1;;32770:435:0:o;16156:103::-;15394:13;:11;:13::i;:::-;16221:30:::1;16248:1;16221:18;:30::i;:::-;16156:103::o:0;27884:93::-;15394:13;:11;:13::i;:::-;27957:8:::1;:14:::0;;-1:-1:-1;;;;;;27957:14:0::1;-1:-1:-1::0;;;;;27957:14:0;;;::::1;::::0;;;::::1;::::0;;27884:93::o;28779:157::-;28830:7;28925:4;28895:26;;28875:17;;:46;;;;:::i;:::-;28874:55;;;;:::i;:::-;28853:17;;:77;;;;:::i;22344:475::-;15394:13;:11;:13::i;:::-;22516:11:::1;::::0;:16;22508:25:::1;;;::::0;::::1;;22540:34;22546:10;22558:15;22540:5;:34::i;:::-;22595:15;22581:11;:29:::0;22617:16:::1;:49:::0;;-1:-1:-1;;;;;22617:49:0;;::::1;-1:-1:-1::0;;;;;;22617:49:0;;::::1;::::0;::::1;::::0;;;22673:16:::1;:31:::0;;;;::::1;::::0;;::::1;;::::0;;22711:17:::1;:39:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;22757:12:::1;:27:::0;;;;::::1;::::0;;::::1;::::0;;22804:9:::1;:7;:9::i;:::-;22791:10;:22:::0;-1:-1:-1;;;22344:475:0:o;4371:104::-;4427:13;4460:7;4453:14;;;;;:::i;25262:134::-;25298:7;25374:16;;25356:15;;25339:14;;25321:15;;:32;;;;:::i;:::-;:50;;;;:::i;:::-;:69;;;;:::i;8729:436::-;8822:4;2814:10;8822:4;8905:25;2814:10;8922:7;8905:9;:25::i;:::-;8878:52;;8969:15;8949:16;:35;;8941:85;;;;-1:-1:-1;;;8941:85:0;;15476:2:1;8941:85:0;;;15458:21:1;15515:2;15495:18;;;15488:30;15554:34;15534:18;;;15527:62;-1:-1:-1;;;15605:18:1;;;15598:35;15650:19;;8941:85:0;15274:401:1;8941:85:0;9062:60;9071:5;9078:7;9106:15;9087:16;:34;9062:8;:60::i;5776:193::-;5855:4;2814:10;5911:28;2814:10;5928:2;5932:6;5911:9;:28::i;31850:393::-;-1:-1:-1;;;;;31989:29:0;;31927:7;31989:29;;;:19;:29;;;;;;;;:35;;;;;;;;:39;;;32041:24;;;:13;:24;;;;;;31927:7;;31989:39;32041:29;;32037:43;;32079:1;32072:8;;;;;;32037:43;32184:26;;;;:15;:26;;;;;;;;;-1:-1:-1;;;;;32131:29:0;;;;:19;:29;;;;;:35;;;;;;;;:49;32104:24;;;:13;:24;;;;;;:76;;32131:49;32104:76;:::i;:::-;32103:107;;;;:::i;:::-;32089:121;31850:393;-1:-1:-1;;;;;31850:393:0:o;27400:258::-;15394:13;:11;:13::i;:::-;27536:14:::1;:21:::0;;;;27564:15:::1;:23:::0;;;;27594:16:::1;:25:::0;27626:15:::1;:26:::0;27400:258::o;28044:97::-;15394:13;:11;:13::i;:::-;28119:10:::1;:16:::0;;-1:-1:-1;;;;;;28119:16:0::1;-1:-1:-1::0;;;;;28119:16:0;;;::::1;::::0;;;::::1;::::0;;28044:97::o;28147:141::-;28240:16;;-1:-1:-1;;;;;28240:16:0;28218:10;:39;28210:48;;;;;;28265:17;28271:2;28275:6;28265:5;:17::i;6032:151::-;-1:-1:-1;;;;;6148:18:0;;;6121:7;6148:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6032:151::o;32571:193::-;32617:25;;:::i;:::-;32658:100;;;;;;;;32669:9;:7;:9::i;:::-;32658:100;;;;32680:10;;32658:100;;;;32692:18;;32658:100;;;;32712:20;:18;:20::i;:::-;32658:100;;;;32734:23;;32658:100;;;;;32571:193;:::o;16414:201::-;15394:13;:11;:13::i;:::-;-1:-1:-1;;;;;16503:22:0;::::1;16495:73;;;::::0;-1:-1:-1;;;16495:73:0;;15882:2:1;16495:73:0::1;::::0;::::1;15864:21:1::0;15921:2;15901:18;;;15894:30;15960:34;15940:18;;;15933:62;-1:-1:-1;;;16011:18:1;;;16004:36;16057:19;;16495:73:0::1;15680:402:1::0;16495:73:0::1;16579:28;16598:8;16579:18;:28::i;:::-;16414:201:::0;:::o;28402:371::-;28465:26;28502:4;28510:1;28502:9;28498:131;;-1:-1:-1;28543:13:0;28498:131;;;28600:20;:18;:20::i;:::-;28579:41;;28498:131;28635:40;28649:4;28656:18;28635:5;:40::i;:::-;28682:19;;;;:13;:19;;;;;;:40;;;28729:17;:38;28402:371::o;26555:626::-;26612:15;;26671:3;26655:12;:7;26665:2;26655:12;:::i;:::-;26654:20;;;;:::i;:::-;26634:41;-1:-1:-1;26682:17:0;26720:3;26704:12;:7;26714:2;26704:12;:::i;:::-;26703:20;;;;:::i;:::-;26682:42;-1:-1:-1;26747:20:0;26682:42;26747:8;:20;:::i;:::-;26738:7;:30;26734:135;;;26798:20;26809:9;26798:8;:20;:::i;:::-;26787:32;;:7;:32;:::i;:::-;26777:42;;26734:135;;;26857:1;26847:11;;26734:135;26890:8;;:33;;26876:9;;-1:-1:-1;;;;;26890:8:0;;26911:7;;26876:9;26890:33;26876:9;26890:33;26911:7;26890:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26875:48;;;26938:4;26930:39;;;;-1:-1:-1;;;26930:39:0;;16289:2:1;26930:39:0;;;16271:21:1;16328:2;16308:18;;;16301:30;-1:-1:-1;;;16347:18:1;;;16340:52;16409:18;;26930:39:0;16087:346:1;26930:39:0;26989:9;;:35;;-1:-1:-1;;;;;26989:9:0;;;;27011:8;;26989:35;;;;27011:8;26989:9;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26978:46;;;;;27039:4;27031:39;;;;-1:-1:-1;;;27031:39:0;;16640:2:1;27031:39:0;;;16622:21:1;16679:2;16659:18;;;16652:30;-1:-1:-1;;;16698:18:1;;;16691:52;16760:18;;27031:39:0;16438:346:1;27031:39:0;27090:10;;:37;;-1:-1:-1;;;;;27090:10:0;;;;27113:9;;27090:37;;;;27113:9;27090:10;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27079:48;;;;;27142:4;27134:39;;;;-1:-1:-1;;;27134:39:0;;16991:2:1;27134:39:0;;;16973:21:1;17030:2;17010:18;;;17003:30;-1:-1:-1;;;17049:18:1;;;17042:52;17111:18;;27134:39:0;16789:346:1;27134:39:0;26605:576;;;;26555:626;:::o;9635:671::-;-1:-1:-1;;;;;9766:18:0;;9758:68;;;;-1:-1:-1;;;9758:68:0;;17342:2:1;9758:68:0;;;17324:21:1;17381:2;17361:18;;;17354:30;17420:34;17400:18;;;17393:62;-1:-1:-1;;;17471:18:1;;;17464:35;17516:19;;9758:68:0;17140:401:1;9758:68:0;-1:-1:-1;;;;;9845:16:0;;9837:64;;;;-1:-1:-1;;;9837:64:0;;17748:2:1;9837:64:0;;;17730:21:1;17787:2;17767:18;;;17760:30;17826:34;17806:18;;;17799:62;-1:-1:-1;;;17877:18:1;;;17870:33;17920:19;;9837:64:0;17546:399:1;9837:64:0;-1:-1:-1;;;;;9987:15:0;;9965:19;9987:15;;;;;;;;;;;10021:21;;;;10013:72;;;;-1:-1:-1;;;10013:72:0;;18152:2:1;10013:72:0;;;18134:21:1;18191:2;18171:18;;;18164:30;18230:34;18210:18;;;18203:62;-1:-1:-1;;;18281:18:1;;;18274:36;18327:19;;10013:72:0;17950:402:1;10013:72:0;-1:-1:-1;;;;;10121:15:0;;;:9;:15;;;;;;;;;;;10139:20;;;10121:38;;10181:13;;;;;;;;:23;;10153:6;;10121:9;10181:23;;10153:6;;10181:23;:::i;:::-;;;;;;;;10237:2;-1:-1:-1;;;;;10222:26:0;10231:4;-1:-1:-1;;;;;10222:26:0;;10241:6;10222:26;;;;714:25:1;;702:2;687:18;;568:177;10222:26:0;;;;;;;;10261:37;9747:559;9635:671;;;:::o;10593:399::-;-1:-1:-1;;;;;10677:21:0;;10669:65;;;;-1:-1:-1;;;10669:65:0;;18559:2:1;10669:65:0;;;18541:21:1;18598:2;18578:18;;;18571:30;18637:33;18617:18;;;18610:61;18688:18;;10669:65:0;18357:355:1;10669:65:0;10825:6;10809:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;10842:18:0;;:9;:18;;;;;;;;;;:28;;10864:6;;10842:9;:28;;10864:6;;10842:28;:::i;:::-;;;;-1:-1:-1;;10886:37:0;;714:25:1;;;-1:-1:-1;;;;;10886:37:0;;;10903:1;;10886:37;;702:2:1;687:18;10886:37:0;;;;;;;23966:1241;;23930:1277::o;12354:380::-;-1:-1:-1;;;;;12490:19:0;;12482:68;;;;-1:-1:-1;;;12482:68:0;;18919:2:1;12482:68:0;;;18901:21:1;18958:2;18938:18;;;18931:30;18997:34;18977:18;;;18970:62;-1:-1:-1;;;19048:18:1;;;19041:34;19092:19;;12482:68:0;18717:400:1;12482:68:0;-1:-1:-1;;;;;12569:21:0;;12561:68;;;;-1:-1:-1;;;12561:68:0;;19324:2:1;12561:68:0;;;19306:21:1;19363:2;19343:18;;;19336:30;19402:34;19382:18;;;19375:62;-1:-1:-1;;;19453:18:1;;;19446:32;19495:19;;12561:68:0;19122:398:1;12561:68:0;-1:-1:-1;;;;;12642:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12694:32;;714:25:1;;;12694:32:0;;687:18:1;12694:32:0;;;;;;;12354:380;;;:::o;15673:132::-;15581:6;;-1:-1:-1;;;;;15581:6:0;2814:10;15737:23;15729:68;;;;-1:-1:-1;;;15729:68:0;;19727:2:1;15729:68:0;;;19709:21:1;;;19746:18;;;19739:30;19805:34;19785:18;;;19778:62;19857:18;;15729:68:0;19525:356:1;13025:453:0;13160:24;13187:25;13197:5;13204:7;13187:9;:25::i;:::-;13160:52;;-1:-1:-1;;13227:16:0;:37;13223:248;;13309:6;13289:16;:26;;13281:68;;;;-1:-1:-1;;;13281:68:0;;20088:2:1;13281:68:0;;;20070:21:1;20127:2;20107:18;;;20100:30;20166:31;20146:18;;;20139:59;20215:18;;13281:68:0;19886:353:1;13281:68:0;13393:51;13402:5;13409:7;13437:6;13418:16;:25;13393:8;:51::i;16775:191::-;16868:6;;;-1:-1:-1;;;;;16885:17:0;;;-1:-1:-1;;;;;;16885:17:0;;;;;;;16918:40;;16868:6;;;16885:17;16868:6;;16918:40;;16849:16;;16918:40;16838:128;16775:191;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:180::-;442:6;495:2;483:9;474:7;470:23;466:32;463:52;;;511:1;508;501:12;463:52;-1:-1:-1;534:23:1;;383:180;-1:-1:-1;383:180:1:o;958:250::-;1043:1;1053:113;1067:6;1064:1;1061:13;1053:113;;;1143:11;;;1137:18;1124:11;;;1117:39;1089:2;1082:10;1053:113;;;-1:-1:-1;;1200:1:1;1182:16;;1175:27;958:250::o;1213:396::-;1362:2;1351:9;1344:21;1325:4;1394:6;1388:13;1437:6;1432:2;1421:9;1417:18;1410:34;1453:79;1525:6;1520:2;1509:9;1505:18;1500:2;1492:6;1488:15;1453:79;:::i;:::-;1593:2;1572:15;-1:-1:-1;;1568:29:1;1553:45;;;;1600:2;1549:54;;1213:396;-1:-1:-1;;1213:396:1:o;1614:254::-;1682:6;1690;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;1782:29;1801:9;1782:29;:::i;:::-;1772:39;1858:2;1843:18;;;;1830:32;;-1:-1:-1;;;1614:254:1:o;2297:409::-;2383:6;2391;2399;2407;2460:3;2448:9;2439:7;2435:23;2431:33;2428:53;;;2477:1;2474;2467:12;2428:53;2500:29;2519:9;2500:29;:::i;:::-;2490:39;;2548:38;2582:2;2571:9;2567:18;2548:38;:::i;:::-;2538:48;;2605:38;2639:2;2628:9;2624:18;2605:38;:::i;:::-;2595:48;;2662:38;2696:2;2685:9;2681:18;2662:38;:::i;:::-;2652:48;;2297:409;;;;;;;:::o;2711:322::-;2788:6;2796;2804;2857:2;2845:9;2836:7;2832:23;2828:32;2825:52;;;2873:1;2870;2863:12;2825:52;2909:9;2896:23;2886:33;;2966:2;2955:9;2951:18;2938:32;2928:42;;2989:38;3023:2;3012:9;3008:18;2989:38;:::i;:::-;2979:48;;2711:322;;;;;:::o;3038:326::-;3131:5;3154:1;3164:194;3178:4;3175:1;3172:11;3164:194;;;3237:13;;3225:26;;3274:4;3298:12;;;;3333:15;;;;3198:1;3191:9;3164:194;;3369:916;3773:4;3758:20;;3787:43;3762:9;3812:6;3787:43;:::i;:::-;3839:53;3887:3;3876:9;3872:19;3864:6;3839:53;:::i;:::-;3901;3949:3;3938:9;3934:19;3926:6;3901:53;:::i;:::-;3989:3;3978:9;3974:19;4035:6;4059:1;4069:210;4083:4;4080:1;4077:11;4069:210;;;4156:13;;4149:21;4142:29;4130:42;;4195:4;4219:12;;;;4254:15;;;;4103:1;4096:9;4069:210;;;4073:3;;;3369:916;;;;;;;:::o;4290:328::-;4367:6;4375;4383;4436:2;4424:9;4415:7;4411:23;4407:32;4404:52;;;4452:1;4449;4442:12;4404:52;4475:29;4494:9;4475:29;:::i;:::-;4465:39;;4523:38;4557:2;4546:9;4542:18;4523:38;:::i;:::-;4513:48;;4608:2;4597:9;4593:18;4580:32;4570:42;;4290:328;;;;;:::o;5244:248::-;5312:6;5320;5373:2;5361:9;5352:7;5348:23;5344:32;5341:52;;;5389:1;5386;5379:12;5341:52;-1:-1:-1;;5412:23:1;;;5482:2;5467:18;;;5454:32;;-1:-1:-1;5244:248:1:o;5903:334::-;5980:6;5988;5996;6049:2;6037:9;6028:7;6024:23;6020:32;6017:52;;;6065:1;6062;6055:12;6017:52;6088:29;6107:9;6088:29;:::i;:::-;6078:39;;6136:38;6170:2;6159:9;6155:18;6136:38;:::i;:::-;6126:48;;6193:38;6227:2;6216:9;6212:18;6193:38;:::i;6242:385::-;6328:6;6336;6344;6352;6405:3;6393:9;6384:7;6380:23;6376:33;6373:53;;;6422:1;6419;6412:12;6373:53;-1:-1:-1;;6445:23:1;;;6515:2;6500:18;;6487:32;;-1:-1:-1;6566:2:1;6551:18;;6538:32;;6617:2;6602:18;6589:32;;-1:-1:-1;6242:385:1;-1:-1:-1;6242:385:1:o;6857:260::-;6925:6;6933;6986:2;6974:9;6965:7;6961:23;6957:32;6954:52;;;7002:1;6999;6992:12;6954:52;7025:29;7044:9;7025:29;:::i;:::-;7015:39;;7073:38;7107:2;7096:9;7092:18;7073:38;:::i;:::-;7063:48;;6857:260;;;;;:::o;7122:495::-;7302:3;7287:19;;7291:9;7383:6;7260:4;7417:194;7431:4;7428:1;7425:11;7417:194;;;7490:13;;7478:26;;7527:4;7551:12;;;;7586:15;;;;7451:1;7444:9;7417:194;;;7421:3;;;7122:495;;;;:::o;7622:127::-;7683:10;7678:3;7674:20;7671:1;7664:31;7714:4;7711:1;7704:15;7738:4;7735:1;7728:15;7754:168;7827:9;;;7858;;7875:15;;;7869:22;;7855:37;7845:71;;7896:18;;:::i;7927:217::-;7967:1;7993;7983:132;;8037:10;8032:3;8028:20;8025:1;8018:31;8072:4;8069:1;8062:15;8100:4;8097:1;8090:15;7983:132;-1:-1:-1;8129:9:1;;7927:217::o;8149:128::-;8216:9;;;8237:11;;;8234:37;;;8251:18;;:::i;8282:287::-;8411:3;8449:6;8443:13;8465:66;8524:6;8519:3;8512:4;8504:6;8500:17;8465:66;:::i;:::-;8547:16;;;;;8282:287;-1:-1:-1;;8282:287:1:o;10016:125::-;10081:9;;;10102:10;;;10099:36;;;10115:18;;:::i;10146:135::-;10185:3;10206:17;;;10203:43;;10226:18;;:::i;:::-;-1:-1:-1;10273:1:1;10262:13;;10146:135::o;12462:380::-;12541:1;12537:12;;;;12584;;;12605:61;;12659:4;12651:6;12647:17;12637:27;;12605:61;12712:2;12704:6;12701:14;12681:18;12678:38;12675:161;;12758:10;12753:3;12749:20;12746:1;12739:31;12793:4;12790:1;12783:15;12821:4;12818:1;12811:15;12675:161;;12462:380;;;:::o;12847:127::-;12908:10;12903:3;12899:20;12896:1;12889:31;12939:4;12936:1;12929:15;12963:4;12960:1;12953:15
Swarm Source
ipfs://700f2d97bcd0df427526061b3b431dc287fe2849934ab8607465469deccc725f
[ 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.