ETH Price: $3,357.66 (+0.30%)

Contract

0xeBe8b87b93f946cb80b067987A96A838a147cAF0
 

Overview

ETH Balance

0.054611929850781514 ETH

Eth Value

$183.37 (@ $3,357.66/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212288582024-11-20 12:09:472 days ago1732104587IN
0xeBe8b87b...8a147cAF0
0 ETH0.0006231913.40377574
Approve212266672024-11-20 4:49:113 days ago1732078151IN
0xeBe8b87b...8a147cAF0
0 ETH0.0005216911.22071905
Approve212184222024-11-19 1:14:594 days ago1731978899IN
0xeBe8b87b...8a147cAF0
0 ETH0.0005609612.143584
Approve212048422024-11-17 3:48:476 days ago1731815327IN
0xeBe8b87b...8a147cAF0
0 ETH0.0004891910.521737
Approve211727252024-11-12 16:14:1110 days ago1731428051IN
0xeBe8b87b...8a147cAF0
0 ETH0.0017717138.36370477
Approve211276632024-11-06 9:17:4717 days ago1730884667IN
0xeBe8b87b...8a147cAF0
0 ETH0.0008134217.58612733
Approve210414842024-10-25 8:38:2329 days ago1729845503IN
0xeBe8b87b...8a147cAF0
0 ETH0.000220519.08587732
Approve210065472024-10-20 11:39:1134 days ago1729424351IN
0xeBe8b87b...8a147cAF0
0 ETH0.000347847.52037805
Approve209798872024-10-16 18:22:5937 days ago1729102979IN
0xeBe8b87b...8a147cAF0
0 ETH0.0008201617.64019242
Approve209640622024-10-14 13:20:2339 days ago1728912023IN
0xeBe8b87b...8a147cAF0
0 ETH0.0007367930.35821955
Approve209627892024-10-14 9:02:4740 days ago1728896567IN
0xeBe8b87b...8a147cAF0
0 ETH0.0005002810.81886495
Approve209579202024-10-13 16:43:4740 days ago1728837827IN
0xeBe8b87b...8a147cAF0
0 ETH0.0007052115.16792696
Approve209458052024-10-11 23:58:4742 days ago1728691127IN
0xeBe8b87b...8a147cAF0
0 ETH0.0005063510.8906576
Approve209370732024-10-10 18:41:4743 days ago1728585707IN
0xeBe8b87b...8a147cAF0
0 ETH0.0007497916.12680771
Approve209150842024-10-07 17:09:4746 days ago1728320987IN
0xeBe8b87b...8a147cAF0
0 ETH0.0015395733.07077902
Approve207924072024-09-20 14:30:2363 days ago1726842623IN
0xeBe8b87b...8a147cAF0
0 ETH0.001803338.7856786
Approve207220932024-09-10 18:47:2373 days ago1725994043IN
0xeBe8b87b...8a147cAF0
0 ETH0.000313086.76888409
Approve207089062024-09-08 22:34:5975 days ago1725834899IN
0xeBe8b87b...8a147cAF0
0 ETH0.000215754.64052691
Approve206420682024-08-30 14:43:5984 days ago1725029039IN
0xeBe8b87b...8a147cAF0
0 ETH0.000053582.20786292
Approve206265932024-08-28 10:49:2387 days ago1724842163IN
0xeBe8b87b...8a147cAF0
0 ETH0.00005451.17839211
Approve206011362024-08-24 21:27:3590 days ago1724534855IN
0xeBe8b87b...8a147cAF0
0 ETH0.000042040.90916935
Transfer206007662024-08-24 20:12:5990 days ago1724530379IN
0xeBe8b87b...8a147cAF0
0 ETH0.000081790.86673885
Approve205917162024-08-23 13:52:3591 days ago1724421155IN
0xeBe8b87b...8a147cAF0
0 ETH0.000084581.82912617
Approve205853532024-08-22 16:31:1192 days ago1724344271IN
0xeBe8b87b...8a147cAF0
0 ETH0.000124442.69042633
Transfer205720612024-08-20 19:56:4794 days ago1724183807IN
0xeBe8b87b...8a147cAF0
0 ETH0.000102261.03129226
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
211276632024-11-06 9:17:4717 days ago1730884667
0xeBe8b87b...8a147cAF0
0.02212139 ETH
211276632024-11-06 9:17:4717 days ago1730884667
0xeBe8b87b...8a147cAF0
0.02457932 ETH
200533652024-06-09 9:26:47167 days ago1717925207
0xeBe8b87b...8a147cAF0
0.06965001 ETH
200533652024-06-09 9:26:47167 days ago1717925207
0xeBe8b87b...8a147cAF0
0.0773889 ETH
198765262024-05-15 16:18:35191 days ago1715789915
0xeBe8b87b...8a147cAF0
0.06930763 ETH
198765262024-05-15 16:18:35191 days ago1715789915
0xeBe8b87b...8a147cAF0
0.07700848 ETH
196456222024-04-13 8:59:59224 days ago1712998799
0xeBe8b87b...8a147cAF0
0.06082603 ETH
196456222024-04-13 8:59:59224 days ago1712998799
0xeBe8b87b...8a147cAF0
0.06758448 ETH
195616462024-04-01 14:42:59235 days ago1711982579
0xeBe8b87b...8a147cAF0
0.06242195 ETH
195616462024-04-01 14:42:59235 days ago1711982579
0xeBe8b87b...8a147cAF0
0.06935773 ETH
195467802024-03-30 12:30:47237 days ago1711801847
0xeBe8b87b...8a147cAF0
0.0552516 ETH
195467802024-03-30 12:30:47237 days ago1711801847
0xeBe8b87b...8a147cAF0
0.06139067 ETH
195465412024-03-30 11:42:35238 days ago1711798955
0xeBe8b87b...8a147cAF0
0.0552516 ETH
195465412024-03-30 11:42:35238 days ago1711798955
0xeBe8b87b...8a147cAF0
0.06139067 ETH
194399512024-03-15 11:08:47253 days ago1710500927
0xeBe8b87b...8a147cAF0
0.06236187 ETH
194399512024-03-15 11:08:47253 days ago1710500927
0xeBe8b87b...8a147cAF0
0.06929097 ETH
194101702024-03-11 6:49:47257 days ago1710139787
0xeBe8b87b...8a147cAF0
0.06363642 ETH
194101702024-03-11 6:49:47257 days ago1710139787
0xeBe8b87b...8a147cAF0
0.07070713 ETH
194080992024-03-10 23:53:11257 days ago1710114791
0xeBe8b87b...8a147cAF0
0.0386639 ETH
194080992024-03-10 23:53:11257 days ago1710114791
0xeBe8b87b...8a147cAF0
0.04295988 ETH
193961642024-03-09 7:51:47259 days ago1709970707
0xeBe8b87b...8a147cAF0
0.0207628 ETH
193961642024-03-09 7:51:47259 days ago1709970707
0xeBe8b87b...8a147cAF0
0.02306977 ETH
193936322024-03-08 23:21:11259 days ago1709940071
0xeBe8b87b...8a147cAF0
0.0165572 ETH
193936322024-03-08 23:21:11259 days ago1709940071
0xeBe8b87b...8a147cAF0
0.01839689 ETH
174873682023-06-15 19:31:23526 days ago1686857483
0xeBe8b87b...8a147cAF0
0.00443808 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pug

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-01
*/

/* 

TG
https://t.me/pugethtoken

Twitter
https://twitter.com/PugETHToken

Website
https://pugeth.com/

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣠⢤⣀⣀⡀⠀⠀⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣠⠖⠉⠙⡖⢊⢉⡴⢀⠜⠁⡔⠀⡀⠈⣉⢍⠁⠀⠈⠙⠲⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣠⢾⣷⡤⠀⣰⠟⣫⠋⢀⠊⢀⠀⠳⡀⢣⡀⢹⡈⢧⣴⣶⡄⠘⢦⡀⠙⠲⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣠⠔⢋⣠⣾⡟⠤⠚⠡⠚⠁⠀⢸⠀⢸⡀⠙⠻⠄⠑⠆⠑⢌⠻⣿⣿⣄⠀⠹⣆⢰⣄⠈⢹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢀⠞⢁⡴⣻⣿⡟⠀⠀⠤⠤⠤⣀⠀⢸⠄⢨⣀⣠⠤⣄⡀⠀⠀⠀⠀⠙⠻⣿⣆⠀⢹⣿⣿⣦⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢾⣠⡾⣽⣿⡟⢀⣠⣤⡶⠀⢳⡈⠃⠀⠀⠘⠉⡴⠀⣬⣉⠙⠲⢄⠀⠀⠀⠈⢻⣆⢸⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠈⢻⢳⣿⣿⡀⠀⠾⢿⣿⣆⡾⠗⠒⠛⠓⠶⣾⡇⢰⣶⣿⣿⣦⣀⡀⠀⠀⠀⣰⣿⣆⢻⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣼⣿⣿⣿⣿⣿⣿⣿⠿⠋⣀⣴⣶⣶⣶⣤⡈⠻⣾⣟⡥⣛⣿⣷⣝⢶⡄⢰⣿⣿⣿⣦⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣿⣿⠟⠘⣷⣙⠛⢃⣤⣾⣿⣃⡄⢠⣤⢹⣿⣦⡀⠉⠈⣿⣿⠿⢛⣼⢣⠈⢿⢻⡇⢻⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⣿⠇⢘⣫⣿⣤⢉⣹⠀⣋⠉⣈⠉⢿⣦⣈⣿⣿⣿⣿⠃⢸⠄⢸⢸⡇⠀⢻⣆⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠸⣿⠀⢀⣀⣻⠁⠀⣸⠈⠁⣴⣮⢍⠛⠿⣧⠘⣿⡟⠋⢀⠎⠀⠉⣸⠀⠀⠀⢹⡿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⣷⠴⢋⣍⣠⡴⠚⠛⠳⢤⣈⠑⠦⣀⠀⠘⢷⡝⠷⢀⠞⢀⢤⣰⠃⠀⠀⢠⣿⠃⡏⠙⢲⣄⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠸⣶⣿⣿⠟⠀⠀⢠⡀⠀⠙⠷⣦⣌⡉⠀⢀⡷⠀⢀⡴⢁⠞⠁⠀⢀⣴⡟⠁⠀⠁⠀⢀⣿⣆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⠻⡟⠳⣤⡼⠟⠻⠦⣀⣦⡀⠙⣿⣿⣿⢟⡠⢊⡠⠋⠀⣠⣶⠟⠁⠀⠀⢀⣠⣶⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢳⣶⣖⣢⡤⢖⣀⣀⠤⠛⢉⣀⡥⠖⢉⣠⣴⠟⠋⠀⠀⠀⣠⣴⣿⣿⠿⠟⣻⣿⣿⣿⣷⣦⣀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⡟⠛⠟⢋⣩⣴⠶⠚⠉⠁⣠⡶⠟⠉⠀⠀⠀⢀⣤⣾⡿⠟⠉⠀⣠⣾⣿⠿⠿⠿⠿⢿⣿⣦⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣇⡀⠐⠟⠋⠁⠀⢀⡴⠛⠁⠀⠀⠀⠀⢀⣴⣿⠟⠉⠀⠀⢀⡾⠛⠉⠀⠀⠀⠀⠀⠀⠀⠉⠃
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠔⠋⠀⠀⠀⠀⠀⠔⠁⠀⠀⠀⠀⠀⠀⣠⡿⠋⠀⠀⠀⠀⡰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡆⠀⣀⠴⠂⠀⠀⠀⠀⠀⠀⠀⠀⢠⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣧⣀⠀⠀⠀⠀⠀⠀⢀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⡀⠀⠀⣀⣤⠾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

*/


// SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.20;

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}



abstract contract Context {
    
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}

contract Pug is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "Pug";
    string constant _symbol = "PUG ";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(1).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(1).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    
    mapping (address => bool) isFeeexempt;
    mapping (address => bool) isTxLimitexempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 3;
    uint256 private devFee          = 0;
    uint256 private teamFee         = 1; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = teamFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellmultiplier = 800;
    uint256 buymultiplier = 500;
    uint256 transfertax = 800; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;
    
    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 


    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 60 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeexempt[msg.sender] = true;
        isFeeexempt[devFeeReceiver] = true;
            
        isTxLimitexempt[msg.sender] = true;
        isTxLimitexempt[pair] = true;
        isTxLimitexempt[devFeeReceiver] = true;
        isTxLimitexempt[marketingFeeReceiver] = true;
        isTxLimitexempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x9D8FBeC2aA1EF4cFB322aF7d96496555086f6027;
        devFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

  
    function removelimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
    }
      
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
          }
        
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitexempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
      
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeexempt[sender] || isFeeexempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitexempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeexempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = transfertax;

        if(recipient == pair) {
            percent = sellmultiplier;
        } else if(sender == pair) {
            percent = buymultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

  
    function manualSend() external { 
    payable(autoLiquidityReceiver).transfer(address(this).balance);
        
    }
  
    function clearForeignToken(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setMultipliers(uint256 _issell, uint256 _isbuy, uint256 _wallet) external onlyOwner {
        sellmultiplier = _issell;
        buymultiplier = _isbuy;
        transfertax = _wallet;    
          
    }

     function setMaxHolding(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function setMaxTransaction(uint256 maxTXPercent) external onlyOwner {
         require(maxTXPercent >= 1); 
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

    function openTrading() public onlyOwner {
        TradingOpen = true;     
        
    }

     function setBacking(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    
               
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    
    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function updateWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function configSwapback(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
       
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }



event AutoLiquify(uint256 amountETH, uint256 amountTokens);


}

Contract Security Audit

Contract ABI

[{"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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"configSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removelimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setBacking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_issell","type":"uint256"},{"internalType":"uint256","name":"_isbuy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006a1565b6200004290633b9aca00620006b1565b600581905562000063906064906200005c9060016200047e565b9062000511565b6006556005546200007e906064906200005c9060016200047e565b6007556001600c556003600d555f600e556001600f555f601055601054600e54600c54600d54600f54620000b39190620006cb565b620000bf9190620006cb565b620000cb9190620006cb565b620000d79190620006cb565b6011556064601281905561032060138190556101f4601455601555601e601b55601c55601f805461ffff60a01b1916600160a81b1790556005546103e8906200012290603c620006b1565b6200012e9190620006e1565b6020553480156200013d575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000220919062000701565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200027d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000701565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000318919062000701565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055305f818152600960209081526040808320601d548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b1687528487208054831684179055968652838620805490911690911790556016805487168217905584548616739d8fbec2aa1ef4cfb322af7d96496555086f60271790945585548516841790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000776565b5f825f036200048f57505f6200050b565b5f6200049c8385620006b1565b905082620004ab8583620006e1565b14620005085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200050883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055a60201b60201c565b5f81836200057d5760405162461bcd60e51b8152600401620004ff919062000729565b505f6200058b8486620006e1565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005e857815f1904821115620005cc57620005cc62000594565b80851615620005da57918102915b93841c9390800290620005ad565b509250929050565b5f8262000600575060016200050b565b816200060e57505f6200050b565b8160018114620006275760028114620006325762000652565b60019150506200050b565b60ff84111562000646576200064662000594565b50506001821b6200050b565b5060208310610133831016604e8410600b841016171562000677575081810a6200050b565b620006838383620005a8565b805f190482111562000699576200069962000594565b029392505050565b5f6200050860ff841683620005f0565b80820281158282048414176200050b576200050b62000594565b808201808211156200050b576200050b62000594565b5f82620006fc57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000712575f80fd5b81516001600160a01b038116811462000508575f80fd5b5f6020808352835180828501525f5b81811015620007565785810183015185820160400152820162000738565b505f604082860101526040601f19601f8301168501019250505092915050565b611e5a80620007845f395ff3fe608060405260043610610215575f3560e01c806386f6c3c11161011e578063c9567bf9116100a8578063f0a9e3651161006d578063f0a9e3651461062d578063f2fde38b1461064c578063f42938901461066b578063f887ea401461067f578063fd5ea1de1461069e575f80fd5b8063c9567bf914610578578063cc798a5c1461058c578063d51ed1c8146105ab578063dd62ed3e146105ca578063e33624ab1461060e575f80fd5b80639bc7c8c0116100ee5780639bc7c8c0146104de578063a8aa1b31146104fd578063a9059cbb1461051c578063ab5a18871461053b578063b2bdfa7b1461055a575f80fd5b806386f6c3c114610447578063893d20e8146104665780638da5cb5b1461049657806395d89b41146104b2575f80fd5b8063313ce5671161019f5780636ddd17131161016f5780636ddd1713146103b557806370a08231146103d5578063715018a61461040957806378109e541461041d5780637d1db4a514610432575f80fd5b8063313ce56714610346578063571ac8b0146103615780635e4ae81b146103805780636ce46bc314610396575f80fd5b80631161ae39116101e55780631161ae39146102cb57806318160ddd146102ea5780631df4ccfc146102fe57806323b872dd146103135780632b112e4914610332575f80fd5b80630445b6671461022057806306fdde031461024857806308fd3d051461027c578063095ea7b3146102ac575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560205481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b5060408051808201909152600381526250756760e81b60208201525b60405161023f9190611a45565b348015610287575f80fd5b50601f5461029c90600160a01b900460ff1681565b604051901515815260200161023f565b3480156102b7575f80fd5b5061029c6102c6366004611aab565b6106bd565b3480156102d6575f80fd5b5061029c6102e5366004611ad3565b610729565b3480156102f5575f80fd5b50600554610235565b348015610309575f80fd5b5061023560115481565b34801561031e575f80fd5b5061029c61032d366004611af3565b61073c565b34801561033d575f80fd5b506102356107fa565b348015610351575f80fd5b506040516009815260200161023f565b34801561036c575f80fd5b5061029c61037b366004611b2c565b61084a565b34801561038b575f80fd5b50610394610856565b005b3480156103a1575f80fd5b506103946103b0366004611b45565b610895565b3480156103c0575f80fd5b50601f5461029c90600160a81b900460ff1681565b3480156103e0575f80fd5b506102356103ef366004611b2c565b6001600160a01b03165f9081526008602052604090205490565b348015610414575f80fd5b506103946108cc565b348015610428575f80fd5b5061023560075481565b34801561043d575f80fd5b5061023560065481565b348015610452575f80fd5b50610394610461366004611b6e565b61093d565b348015610471575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104a1575f80fd5b505f546001600160a01b031661047e565b3480156104bd575f80fd5b506040805180820190915260048152630282aa3960e51b602082015261026f565b3480156104e9575f80fd5b506103946104f8366004611bad565b610a02565b348015610508575f80fd5b50601f5461047e906001600160a01b031681565b348015610527575f80fd5b5061029c610536366004611aab565b610a59565b348015610546575f80fd5b50610394610555366004611bad565b610a65565b348015610565575f80fd5b505f5461047e906001600160a01b031681565b348015610583575f80fd5b50610394610abc565b348015610597575f80fd5b506103946105a6366004611ad3565b610afa565b3480156105b6575f80fd5b506102356105c5366004611bad565b610b2e565b3480156105d5575f80fd5b506102356105e4366004611bc4565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610619575f80fd5b50610394610628366004611c02565b610b73565b348015610638575f80fd5b5061029c610647366004611aab565b610bbe565b348015610657575f80fd5b50610394610666366004611b2c565b610ca3565b348015610676575f80fd5b50610394610d8a565b34801561068a575f80fd5b50601d5461047e906001600160a01b031681565b3480156106a9575f80fd5b506103946106b8366004611c1e565b610dc3565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107179086815260200190565b60405180910390a35060015b92915050565b5f8261073483610b2e565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146107e5576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546107c1918490610e4b565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6107f0848484610e83565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610845906003546001600160a01b03165f9081526008602052604090205461083f90600554906111dd565b906111dd565b905090565b5f610723825f196106bd565b5f546001600160a01b031633146108885760405162461bcd60e51b815260040161087f90611c7f565b60405180910390fd5b6005546006819055600755565b5f546001600160a01b031633146108be5760405162461bcd60e51b815260040161087f90611c7f565b601392909255601455601555565b5f546001600160a01b031633146108f55760405162461bcd60e51b815260040161087f90611c7f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109665760405162461bcd60e51b815260040161087f90611c7f565b600c869055600f859055600d849055600e839055601082905561099782610991858188818c8c61121e565b9061121e565b60115560128190556109aa600582611cc8565b601154106109fa5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161087f565b505050505050565b5f546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161087f90611c7f565b6001811015610a38575f80fd5b6103e881600554610a499190611ce7565b610a539190611cc8565b60075550565b5f6107f3338484610e83565b5f546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161087f90611c7f565b6001811015610a9b575f80fd5b6103e881600554610aac9190611ce7565b610ab69190611cc8565b60065550565b5f546001600160a01b03163314610ae55760405162461bcd60e51b815260040161087f90611c7f565b601f805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b235760405162461bcd60e51b815260040161087f90611c7f565b601b91909155601c55565b5f610723610b3a6107fa565b601f546001600160a01b03165f90815260086020526040902054610b6d90610b66906002905b9061127c565b859061127c565b906112fa565b5f546001600160a01b03163314610b9c5760405162461bcd60e51b815260040161087f90611c7f565b601f8054921515600160a81b0260ff60a81b1990931692909217909155602055565b5f815f03610c2f576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c9190611cfe565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c7f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f39190611d15565b5f546001600160a01b03163314610ccc5760405162461bcd60e51b815260040161087f90611c7f565b6001600160a01b038116610d315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610dc0573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610dec5760405162461bcd60e51b815260040161087f90611c7f565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f8184841115610e6e5760405162461bcd60e51b815260040161087f9190611a45565b505f610e7a8486611d30565b95945050505050565b6021545f9060ff1615610ea257610e9b84848461133b565b90506107f3565b6001600160a01b0384165f9081526001602052604090205460ff16158015610ee257506001600160a01b0383165f9081526001602052604090205460ff16155b15610f3757601f54600160a01b900460ff16610f375760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161087f565b6001600160a01b0384165f9081526001602052604090205460ff16158015610f6857506001600160a01b0383163014155b8015610f8257506003546001600160a01b03848116911614155b8015610f9c5750601f546001600160a01b03848116911614155b8015610fb65750601a546001600160a01b03848116911614155b8015610fd057506017546001600160a01b03848116911614155b8015610ff457506001600160a01b0383165f908152600b602052604090205460ff16155b15611094576001600160a01b0383165f9081526008602052604090205460075461101e8483611d43565b11156110925760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161087f565b505b61109e848361140b565b6110a6611477565b156110b3576110b36114cd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260089091529190912054611104918490610e4b565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061114f57506001600160a01b0384165f908152600a602052604090205460ff165b6111635761115e858486611895565b611165565b825b6001600160a01b0385165f9081526008602052604090205490915061118a908261121e565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020611e05833981519152906111ca9085815260200190565b60405180910390a3506001949350505050565b5f6107f383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e4b565b5f8061122a8385611d43565b9050838110156107f35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161087f565b5f825f0361128b57505f610723565b5f6112968385611ce7565b9050826112a38583611cc8565b146107f35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161087f565b5f6107f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a19565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461138b918490610e4b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546113b9908361121e565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020611e05833981519152906113f99086815260200190565b60405180910390a35060019392505050565b6006548111158061143357506001600160a01b0382165f908152600b602052604090205460ff165b6114735760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161087f565b5050565b601f545f906001600160a01b03163314801590611497575060215460ff16155b80156114ac5750601f54600160a81b900460ff165b801561084557505060208054305f9081526008909252604090912054101590565b6021805460ff19166001179055601b54601c545f916114eb91610729565b6114f757600c546114f9565b5f5b90505f61151c6002610b6d601154610b6d8660205461127c90919063ffffffff16565b90505f611534826020546111dd90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061156c5761156c611d56565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061159d5761159d611d56565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906115e69086905f90879030904290600401611d6a565b5f604051808303815f87803b1580156115fd575f80fd5b505af115801561160f573d5f803e3d5ffd5b505050505f61162782476111dd90919063ffffffff16565b90505f6116416116388860026112fa565b601154906111dd565b90505f6116556002610b6d8481878d61127c565b90505f61167183610b6d600d548761127c90919063ffffffff16565b90505f61168d84610b6d600f548861127c90919063ffffffff16565b90505f6116a985610b6d600e548961127c90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146116f8576040519150601f19603f3d011682016040523d82523d5f602084013e6116fd565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f811461174a576040519150601f19603f3d011682016040523d82523d5f602084013e61174f565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f811461179c576040519150601f19603f3d011682016040523d82523d5f602084013e6117a1565b606091505b505f9250508b15905061187d57601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af115801561181b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118409190611dd9565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506021805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b03908116908416036118ba57506013546118d5565b601f546001600160a01b03908116908616036118d557506014545b5f61190160125460646118e89190611ce7565b610b6d84610b606011548a61127c90919063ffffffff16565b90505f61191f601154610b6d6010548561127c90919063ffffffff16565b90505f61192c83836111dd565b305f90815260086020526040902054909150611948908261121e565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611975908361121e565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020611e05833981519152910160405180910390a38115611a03576005546119cd90836111dd565b6005556004546040518381526001600160a01b03918216918a16905f80516020611e058339815191529060200160405180910390a35b611a0d87846111dd565b98975050505050505050565b5f8183611a395760405162461bcd60e51b815260040161087f9190611a45565b505f610e7a8486611cc8565b5f6020808352835180828501525f5b81811015611a7057858101830151858201604001528201611a54565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611aa6575f80fd5b919050565b5f8060408385031215611abc575f80fd5b611ac583611a90565b946020939093013593505050565b5f8060408385031215611ae4575f80fd5b50508035926020909101359150565b5f805f60608486031215611b05575f80fd5b611b0e84611a90565b9250611b1c60208501611a90565b9150604084013590509250925092565b5f60208284031215611b3c575f80fd5b6107f382611a90565b5f805f60608486031215611b57575f80fd5b505081359360208301359350604090920135919050565b5f805f805f8060c08789031215611b83575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611bbd575f80fd5b5035919050565b5f8060408385031215611bd5575f80fd5b611bde83611a90565b9150611bec60208401611a90565b90509250929050565b8015158114610dc0575f80fd5b5f8060408385031215611c13575f80fd5b8235611ac581611bf5565b5f805f805f60a08688031215611c32575f80fd5b611c3b86611a90565b9450611c4960208701611a90565b9350611c5760408701611a90565b9250611c6560608701611a90565b9150611c7360808701611a90565b90509295509295909350565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611ce257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761072357610723611cb4565b5f60208284031215611d0e575f80fd5b5051919050565b5f60208284031215611d25575f80fd5b81516107f381611bf5565b8181038181111561072357610723611cb4565b8082018082111561072357610723611cb4565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611db85784516001600160a01b031683529383019391830191600101611d93565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611deb575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122058f50d47b644da8b5ea866ef5f5c331f28e108f7f26d52acb2096d811187923c64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610215575f3560e01c806386f6c3c11161011e578063c9567bf9116100a8578063f0a9e3651161006d578063f0a9e3651461062d578063f2fde38b1461064c578063f42938901461066b578063f887ea401461067f578063fd5ea1de1461069e575f80fd5b8063c9567bf914610578578063cc798a5c1461058c578063d51ed1c8146105ab578063dd62ed3e146105ca578063e33624ab1461060e575f80fd5b80639bc7c8c0116100ee5780639bc7c8c0146104de578063a8aa1b31146104fd578063a9059cbb1461051c578063ab5a18871461053b578063b2bdfa7b1461055a575f80fd5b806386f6c3c114610447578063893d20e8146104665780638da5cb5b1461049657806395d89b41146104b2575f80fd5b8063313ce5671161019f5780636ddd17131161016f5780636ddd1713146103b557806370a08231146103d5578063715018a61461040957806378109e541461041d5780637d1db4a514610432575f80fd5b8063313ce56714610346578063571ac8b0146103615780635e4ae81b146103805780636ce46bc314610396575f80fd5b80631161ae39116101e55780631161ae39146102cb57806318160ddd146102ea5780631df4ccfc146102fe57806323b872dd146103135780632b112e4914610332575f80fd5b80630445b6671461022057806306fdde031461024857806308fd3d051461027c578063095ea7b3146102ac575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560205481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b5060408051808201909152600381526250756760e81b60208201525b60405161023f9190611a45565b348015610287575f80fd5b50601f5461029c90600160a01b900460ff1681565b604051901515815260200161023f565b3480156102b7575f80fd5b5061029c6102c6366004611aab565b6106bd565b3480156102d6575f80fd5b5061029c6102e5366004611ad3565b610729565b3480156102f5575f80fd5b50600554610235565b348015610309575f80fd5b5061023560115481565b34801561031e575f80fd5b5061029c61032d366004611af3565b61073c565b34801561033d575f80fd5b506102356107fa565b348015610351575f80fd5b506040516009815260200161023f565b34801561036c575f80fd5b5061029c61037b366004611b2c565b61084a565b34801561038b575f80fd5b50610394610856565b005b3480156103a1575f80fd5b506103946103b0366004611b45565b610895565b3480156103c0575f80fd5b50601f5461029c90600160a81b900460ff1681565b3480156103e0575f80fd5b506102356103ef366004611b2c565b6001600160a01b03165f9081526008602052604090205490565b348015610414575f80fd5b506103946108cc565b348015610428575f80fd5b5061023560075481565b34801561043d575f80fd5b5061023560065481565b348015610452575f80fd5b50610394610461366004611b6e565b61093d565b348015610471575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104a1575f80fd5b505f546001600160a01b031661047e565b3480156104bd575f80fd5b506040805180820190915260048152630282aa3960e51b602082015261026f565b3480156104e9575f80fd5b506103946104f8366004611bad565b610a02565b348015610508575f80fd5b50601f5461047e906001600160a01b031681565b348015610527575f80fd5b5061029c610536366004611aab565b610a59565b348015610546575f80fd5b50610394610555366004611bad565b610a65565b348015610565575f80fd5b505f5461047e906001600160a01b031681565b348015610583575f80fd5b50610394610abc565b348015610597575f80fd5b506103946105a6366004611ad3565b610afa565b3480156105b6575f80fd5b506102356105c5366004611bad565b610b2e565b3480156105d5575f80fd5b506102356105e4366004611bc4565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610619575f80fd5b50610394610628366004611c02565b610b73565b348015610638575f80fd5b5061029c610647366004611aab565b610bbe565b348015610657575f80fd5b50610394610666366004611b2c565b610ca3565b348015610676575f80fd5b50610394610d8a565b34801561068a575f80fd5b50601d5461047e906001600160a01b031681565b3480156106a9575f80fd5b506103946106b8366004611c1e565b610dc3565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107179086815260200190565b60405180910390a35060015b92915050565b5f8261073483610b2e565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146107e5576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546107c1918490610e4b565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6107f0848484610e83565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610845906003546001600160a01b03165f9081526008602052604090205461083f90600554906111dd565b906111dd565b905090565b5f610723825f196106bd565b5f546001600160a01b031633146108885760405162461bcd60e51b815260040161087f90611c7f565b60405180910390fd5b6005546006819055600755565b5f546001600160a01b031633146108be5760405162461bcd60e51b815260040161087f90611c7f565b601392909255601455601555565b5f546001600160a01b031633146108f55760405162461bcd60e51b815260040161087f90611c7f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109665760405162461bcd60e51b815260040161087f90611c7f565b600c869055600f859055600d849055600e839055601082905561099782610991858188818c8c61121e565b9061121e565b60115560128190556109aa600582611cc8565b601154106109fa5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161087f565b505050505050565b5f546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161087f90611c7f565b6001811015610a38575f80fd5b6103e881600554610a499190611ce7565b610a539190611cc8565b60075550565b5f6107f3338484610e83565b5f546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161087f90611c7f565b6001811015610a9b575f80fd5b6103e881600554610aac9190611ce7565b610ab69190611cc8565b60065550565b5f546001600160a01b03163314610ae55760405162461bcd60e51b815260040161087f90611c7f565b601f805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b235760405162461bcd60e51b815260040161087f90611c7f565b601b91909155601c55565b5f610723610b3a6107fa565b601f546001600160a01b03165f90815260086020526040902054610b6d90610b66906002905b9061127c565b859061127c565b906112fa565b5f546001600160a01b03163314610b9c5760405162461bcd60e51b815260040161087f90611c7f565b601f8054921515600160a81b0260ff60a81b1990931692909217909155602055565b5f815f03610c2f576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c9190611cfe565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610c7f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f39190611d15565b5f546001600160a01b03163314610ccc5760405162461bcd60e51b815260040161087f90611c7f565b6001600160a01b038116610d315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610dc0573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610dec5760405162461bcd60e51b815260040161087f90611c7f565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b5f8184841115610e6e5760405162461bcd60e51b815260040161087f9190611a45565b505f610e7a8486611d30565b95945050505050565b6021545f9060ff1615610ea257610e9b84848461133b565b90506107f3565b6001600160a01b0384165f9081526001602052604090205460ff16158015610ee257506001600160a01b0383165f9081526001602052604090205460ff16155b15610f3757601f54600160a01b900460ff16610f375760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161087f565b6001600160a01b0384165f9081526001602052604090205460ff16158015610f6857506001600160a01b0383163014155b8015610f8257506003546001600160a01b03848116911614155b8015610f9c5750601f546001600160a01b03848116911614155b8015610fb65750601a546001600160a01b03848116911614155b8015610fd057506017546001600160a01b03848116911614155b8015610ff457506001600160a01b0383165f908152600b602052604090205460ff16155b15611094576001600160a01b0383165f9081526008602052604090205460075461101e8483611d43565b11156110925760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161087f565b505b61109e848361140b565b6110a6611477565b156110b3576110b36114cd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260089091529190912054611104918490610e4b565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061114f57506001600160a01b0384165f908152600a602052604090205460ff165b6111635761115e858486611895565b611165565b825b6001600160a01b0385165f9081526008602052604090205490915061118a908261121e565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020611e05833981519152906111ca9085815260200190565b60405180910390a3506001949350505050565b5f6107f383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e4b565b5f8061122a8385611d43565b9050838110156107f35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161087f565b5f825f0361128b57505f610723565b5f6112968385611ce7565b9050826112a38583611cc8565b146107f35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161087f565b5f6107f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a19565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461138b918490610e4b565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546113b9908361121e565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020611e05833981519152906113f99086815260200190565b60405180910390a35060019392505050565b6006548111158061143357506001600160a01b0382165f908152600b602052604090205460ff165b6114735760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161087f565b5050565b601f545f906001600160a01b03163314801590611497575060215460ff16155b80156114ac5750601f54600160a81b900460ff165b801561084557505060208054305f9081526008909252604090912054101590565b6021805460ff19166001179055601b54601c545f916114eb91610729565b6114f757600c546114f9565b5f5b90505f61151c6002610b6d601154610b6d8660205461127c90919063ffffffff16565b90505f611534826020546111dd90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061156c5761156c611d56565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061159d5761159d611d56565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906115e69086905f90879030904290600401611d6a565b5f604051808303815f87803b1580156115fd575f80fd5b505af115801561160f573d5f803e3d5ffd5b505050505f61162782476111dd90919063ffffffff16565b90505f6116416116388860026112fa565b601154906111dd565b90505f6116556002610b6d8481878d61127c565b90505f61167183610b6d600d548761127c90919063ffffffff16565b90505f61168d84610b6d600f548861127c90919063ffffffff16565b90505f6116a985610b6d600e548961127c90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146116f8576040519150601f19603f3d011682016040523d82523d5f602084013e6116fd565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f811461174a576040519150601f19603f3d011682016040523d82523d5f602084013e61174f565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f811461179c576040519150601f19603f3d011682016040523d82523d5f602084013e6117a1565b606091505b505f9250508b15905061187d57601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af115801561181b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118409190611dd9565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506021805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b03908116908416036118ba57506013546118d5565b601f546001600160a01b03908116908616036118d557506014545b5f61190160125460646118e89190611ce7565b610b6d84610b606011548a61127c90919063ffffffff16565b90505f61191f601154610b6d6010548561127c90919063ffffffff16565b90505f61192c83836111dd565b305f90815260086020526040902054909150611948908261121e565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611975908361121e565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020611e05833981519152910160405180910390a38115611a03576005546119cd90836111dd565b6005556004546040518381526001600160a01b03918216918a16905f80516020611e058339815191529060200160405180910390a35b611a0d87846111dd565b98975050505050505050565b5f8183611a395760405162461bcd60e51b815260040161087f9190611a45565b505f610e7a8486611cc8565b5f6020808352835180828501525f5b81811015611a7057858101830151858201604001528201611a54565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611aa6575f80fd5b919050565b5f8060408385031215611abc575f80fd5b611ac583611a90565b946020939093013593505050565b5f8060408385031215611ae4575f80fd5b50508035926020909101359150565b5f805f60608486031215611b05575f80fd5b611b0e84611a90565b9250611b1c60208501611a90565b9150604084013590509250925092565b5f60208284031215611b3c575f80fd5b6107f382611a90565b5f805f60608486031215611b57575f80fd5b505081359360208301359350604090920135919050565b5f805f805f8060c08789031215611b83575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f60208284031215611bbd575f80fd5b5035919050565b5f8060408385031215611bd5575f80fd5b611bde83611a90565b9150611bec60208401611a90565b90509250929050565b8015158114610dc0575f80fd5b5f8060408385031215611c13575f80fd5b8235611ac581611bf5565b5f805f805f60a08688031215611c32575f80fd5b611c3b86611a90565b9450611c4960208701611a90565b9350611c5760408701611a90565b9250611c6560608701611a90565b9150611c7360808701611a90565b90509295509295909350565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611ce257634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761072357610723611cb4565b5f60208284031215611d0e575f80fd5b5051919050565b5f60208284031215611d25575f80fd5b81516107f381611bf5565b8181038181111561072357610723611cb4565b8082018082111561072357610723611cb4565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611db85784516001600160a01b031683529383019391830191600101611d93565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611deb575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122058f50d47b644da8b5ea866ef5f5c331f28e108f7f26d52acb2096d811187923c64736f6c63430008140033

Deployed Bytecode Sourcemap

8905:12697:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10587:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;10587:55:0;;;;;;;;12089:80;;;;;;;;;;-1:-1:-1;12161:5:0;;;;;;;;;;;;-1:-1:-1;;;12161:5:0;;;;12089:80;;;;;;;:::i;10507:31::-;;;;;;;;;;-1:-1:-1;10507:31:0;;;;-1:-1:-1;;;10507:31:0;;;;;;;;;914:14:1;;907:22;889:41;;877:2;862:18;10507:31:0;749:187:1;12511:216:0;;;;;;;;;;-1:-1:-1;12511:216:0;;;;;:::i;:::-;;:::i;21378:150::-;;;;;;;;;;-1:-1:-1;21378:150:0;;;;;:::i;:::-;;:::i;11819:88::-;;;;;;;;;;-1:-1:-1;11892:12:0;;11819:88;;9868:90;;;;;;;;;;;;;;;;13029:370;;;;;;;;;;-1:-1:-1;13029:370:0;;;;;:::i;:::-;;:::i;21053:142::-;;;;;;;;;;;;;:::i;11913:80::-;;;;;;;;;;-1:-1:-1;11913:80:0;;9235:1;2106:36:1;;2094:2;2079:18;11913:80:0;1964:184:1;12735:122:0;;;;;;;;;;-1:-1:-1;12735:122:0;;;;;:::i;:::-;;:::i;13411:139::-;;;;;;;;;;;;;:::i;:::-;;17079:217;;;;;;;;;;-1:-1:-1;17079:217:0;;;;;:::i;:::-;;:::i;10550:30::-;;;;;;;;;;-1:-1:-1;10550:30:0;;;;-1:-1:-1;;;10550:30:0;;;;;;12259:105;;;;;;;;;;-1:-1:-1;12259:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12343:18:0;12325:7;12343:18;;;:9;:18;;;;;;;12259:105;6962:148;;;;;;;;;;;;;:::i;9372:61::-;;;;;;;;;;;;;;;;9307:58;;;;;;;;;;;;;;;;19885:552;;;;;;;;;;-1:-1:-1;19885:552:0;;;;;:::i;:::-;;:::i;12175:78::-;;;;;;;;;;-1:-1:-1;12227:7:0;6813:6;-1:-1:-1;;;;;6813:6:0;12175:78;;;-1:-1:-1;;;;;3357:32:1;;;3339:51;;3327:2;3312:18;12175:78:0;3193:203:1;6748:79:0;;;;;;;;;;-1:-1:-1;6786:7:0;6813:6;-1:-1:-1;;;;;6813:6:0;6748:79;;11999:84;;;;;;;;;;-1:-1:-1;12073:7:0;;;;;;;;;;;;-1:-1:-1;;;12073:7:0;;;;11999:84;;17305:201;;;;;;;;;;-1:-1:-1;17305:201:0;;;;;:::i;:::-;;:::i;10475:19::-;;;;;;;;;;-1:-1:-1;10475:19:0;;;;-1:-1:-1;;;;;10475:19:0;;;12865:156;;;;;;;;;;-1:-1:-1;12865:156:0;;;;;:::i;:::-;;:::i;17514:178::-;;;;;;;;;;-1:-1:-1;17514:178:0;;;;;:::i;:::-;;:::i;6368:21::-;;;;;;;;;;-1:-1:-1;6368:21:0;;;;-1:-1:-1;;;;;6368:21:0;;;17700:92;;;;;;;;;;;;;:::i;17801:174::-;;;;;;;;;;-1:-1:-1;17801:174:0;;;;;:::i;:::-;;:::i;21203:167::-;;;;;;;;;;-1:-1:-1;21203:167:0;;;;;:::i;:::-;;:::i;12370:133::-;;;;;;;;;;-1:-1:-1;12370:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12472:19:0;;;12454:7;12472:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12370:133;20888:150;;;;;;;;;;-1:-1:-1;20888:150:0;;;;;:::i;:::-;;:::i;16787:284::-;;;;;;;;;;-1:-1:-1;16787:284:0;;;;;:::i;:::-;;:::i;7118:244::-;;;;;;;;;;-1:-1:-1;7118:244:0;;;;;:::i;:::-;;:::i;16658:119::-;;;;;;;;;;;;;:::i;10405:24::-;;;;;;;;;;-1:-1:-1;10405:24:0;;;;-1:-1:-1;;;;;10405:24:0;;;20445:435;;;;;;;;;;-1:-1:-1;20445:435:0;;;;;:::i;:::-;;:::i;12511:216::-;12615:10;12586:4;12603:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12603:32:0;;;;;;;;;;:41;;;12660:37;12586:4;;12603:32;;12660:37;;;;12638:6;160:25:1;;148:2;133:18;;14:177;12660:37:0;;;;;;;;-1:-1:-1;12715:4:0;12511:216;;;;;:::o;21378:150::-;21458:4;21514:6;21482:29;21502:8;21482:19;:29::i;:::-;:38;;21378:150;-1:-1:-1;;;21378:150:0:o;13029:370::-;-1:-1:-1;;;;;13149:19:0;;13129:4;13149:19;;;:11;:19;;;;;;;;13169:10;13149:31;;;;;;;;-1:-1:-1;;13149:52:0;13146:186;;13251:69;;;;;;;;;;;-1:-1:-1;;;13251:69:0;;;;;;;;-1:-1:-1;;;;;13251:19:0;;-1:-1:-1;13251:19:0;;;:11;:19;;;;;13271:10;13251:31;;;;;;;;;;:69;;13287:6;;13251:35;:69::i;:::-;-1:-1:-1;;;;;13217:19:0;;;;;;:11;:19;;;;;;;;13237:10;13217:31;;;;;;;:103;13146:186;13351:40;13365:6;13373:9;13384:6;13351:13;:40::i;:::-;13344:47;;13029:370;;;;;;:::o;21053:142::-;21181:4;;-1:-1:-1;;;;;21181:4:0;21106:7;12343:18;;;:9;:18;;;;;;21133:54;;21160:4;;-1:-1:-1;;;;;21160:4:0;12325:7;12343:18;;;:9;:18;;;;;;21133:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;21126:61;;21053:142;:::o;12735:122::-;12790:4;12814:35;12822:7;-1:-1:-1;;12814:7:0;:35::i;13411:139::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;;;;;;;;;13485:12:::1;::::0;13470::::1;:27:::0;;;13512:15:::1;:30:::0;13411:139::o;17079:217::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17183:14:::1;:24:::0;;;;17218:13:::1;:22:::0;17251:11:::1;:21:::0;17079:217::o;6962:148::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;7069:1:::1;7053:6:::0;;7032:40:::1;::::0;-1:-1:-1;;;;;7053:6:0;;::::1;::::0;7032:40:::1;::::0;7069:1;;7032:40:::1;7100:1;7083:19:::0;;-1:-1:-1;;;;;;7083:19:0::1;::::0;;6962:148::o;19885:552::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;20056:12:::1;:28:::0;;;20095:7:::1;:18:::0;;;20124:12:::1;:28:::0;;;20163:6:::1;:16:::0;;;20190:7:::1;:18:::0;;;20230:73:::1;20200:8:::0;20230:59:::1;20172:7:::0;20230:59;20139:13;20230:59;20071:13;20105:8;20230:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:73::-;20219:8;:84:::0;20314:14:::1;:32:::0;;;20376:18:::1;20393:1;20331:15:::0;20376:18:::1;:::i;:::-;20365:8;;:29;20357:71;;;::::0;-1:-1:-1;;;20357:71:0;;5920:2:1;20357:71:0::1;::::0;::::1;5902:21:1::0;5959:2;5939:18;;;5932:30;5998:31;5978:18;;;5971:59;6047:18;;20357:71:0::1;5718:353:1::0;20357:71:0::1;19885:552:::0;;;;;;:::o;17305:201::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17409:1:::1;17391:14;:19;;17383:28;;;::::0;::::1;;17476:4;17457:14;17442:12;;:29;;;;:::i;:::-;17441:39;;;;:::i;:::-;17423:15;:57:::0;-1:-1:-1;17305:201:0:o;12865:156::-;12945:4;12969:44;12983:10;12995:9;13006:6;12969:13;:44::i;17514:178::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17618:1:::1;17602:12;:17;;17594:26;;;::::0;::::1;;17680:4;17663:12;17648;;:27;;;;:::i;:::-;17647:37;;;;:::i;:::-;17632:12;:52:::0;-1:-1:-1;17514:178:0:o;17700:92::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17751:11:::1;:18:::0;;-1:-1:-1;;;;17751:18:0::1;-1:-1:-1::0;;;17751:18:0::1;::::0;;17700:92::o;17801:174::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;17890:15:::1;:25:::0;;;;17926:26:::1;:41:::0;17801:174::o;21203:167::-;21271:7;21298:64;21339:22;:20;:22::i;:::-;21321:4;;-1:-1:-1;;;;;21321:4:0;12325:7;12343:18;;;:9;:18;;;;;;21298:36;;21311:22;;21331:1;;21311:15;:19;;:22::i;:::-;21298:8;;:12;:36::i;:::-;:40;;:64::i;20888:150::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;20974:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;20974:22:0::1;-1:-1:-1::0;;;;20974:22:0;;::::1;::::0;;;::::1;::::0;;;21007:13:::1;:23:::0;20888:150::o;16787:284::-;16868:4;16895:6;16905:1;16895:11;16892:95;;16931:44;;-1:-1:-1;;;16931:44:0;;16969:4;16931:44;;;3339:51:1;-1:-1:-1;;;;;16931:29:0;;;;;3312:18:1;;16931:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16922:53;;16892:95;17033:21;;17004:59;;-1:-1:-1;;;17004:59:0;;-1:-1:-1;;;;;17033:21:0;;;17004:59;;;6612:51:1;6679:18;;;6672:34;;;17004:28:0;;;;;;6585:18:1;;17004:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7118:244::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7207:22:0;::::1;7199:73;;;::::0;-1:-1:-1;;;7199:73:0;;7169:2:1;7199:73:0::1;::::0;::::1;7151:21:1::0;7208:2;7188:18;;;7181:30;7247:34;7227:18;;;7220:62;-1:-1:-1;;;7298:18:1;;;7291:36;7344:19;;7199:73:0::1;6967:402:1::0;7199:73:0::1;7309:6;::::0;;7288:38:::1;::::0;-1:-1:-1;;;;;7288:38:0;;::::1;::::0;7309:6;::::1;::::0;7288:38:::1;::::0;::::1;7337:6;:17:::0;;-1:-1:-1;;;;;;7337:17:0::1;-1:-1:-1::0;;;;;7337:17:0;;;::::1;::::0;;;::::1;::::0;;7118:244::o;16658:119::-;16705:21;;16697:62;;-1:-1:-1;;;;;16705:21:0;;;;16737;16697:62;;;;;16705:21;16697:62;16705:21;16697:62;16737:21;16705;16697:62;;;;;;;;;;;;;;;;;;;;;16658:119::o;20445:435::-;6875:6;;-1:-1:-1;;;;;6875:6:0;6185:10;6875:22;6867:67;;;;-1:-1:-1;;;6867:67:0;;;;;;;:::i;:::-;20638:21:::1;:46:::0;;-1:-1:-1;;;;;;20638:46:0;;::::1;-1:-1:-1::0;;;;;20638:46:0;;::::1;;::::0;;;20695:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20750:14:::1;:32:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20793:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;20838:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;20445:435::o;5258:192::-;5344:7;5380:12;5372:6;;;;5364:29;;;;-1:-1:-1;;;5364:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5404:9:0;5416:5;5420:1;5416;:5;:::i;:::-;5404:17;5258:192;-1:-1:-1;;;;;5258:192:0:o;13564:1243::-;13676:6;;13656:4;;13676:6;;13673:63;;;13692:41;13707:6;13715:9;13726:6;13692:14;:41::i;:::-;13685:48;;;;13673:63;-1:-1:-1;;;;;13752:22:0;;;;;;:14;:22;;;;;;;;13751:23;:53;;;;-1:-1:-1;;;;;;13779:25:0;;;;;;:14;:25;;;;;;;;13778:26;13751:53;13748:139;;;13828:11;;-1:-1:-1;;;13828:11:0;;;;13820:43;;;;-1:-1:-1;;;13820:43:0;;7709:2:1;13820:43:0;;;7691:21:1;7748:2;7728:18;;;7721:30;-1:-1:-1;;;7767:18:1;;;7760:50;7827:18;;13820:43:0;7507:344:1;13820:43:0;-1:-1:-1;;;;;13929:22:0;;;;;;:14;:22;;;;;;;;13928:23;:53;;;;-1:-1:-1;;;;;;13955:26:0;;13976:4;13955:26;;13928:53;:84;;;;-1:-1:-1;14007:4:0;;-1:-1:-1;;;;;13986:26:0;;;14007:4;;13986:26;;13928:84;:105;;;;-1:-1:-1;14029:4:0;;-1:-1:-1;;;;;14016:17:0;;;14029:4;;14016:17;;13928:105;:137;;;;-1:-1:-1;14050:15:0;;-1:-1:-1;;;;;14037:28:0;;;14050:15;;14037:28;;13928:137;:174;;;;-1:-1:-1;14082:20:0;;-1:-1:-1;;;;;14069:33:0;;;14082:20;;14069:33;;13928:174;:205;;;;-1:-1:-1;;;;;;14107:26:0;;;;;;:15;:26;;;;;;;;14106:27;13928:205;13924:397;;;-1:-1:-1;;;;;12343:18:0;;14149;12343;;;:9;:18;;;;;;14238:15;;14214:19;14227:6;12343:18;14214:19;:::i;:::-;14213:40;;14205:114;;;;-1:-1:-1;;;14205:114:0;;8188:2:1;14205:114:0;;;8170:21:1;8227:2;8207:18;;;8200:30;8266:34;8246:18;;;8239:62;8337:32;8317:18;;;8310:60;8387:19;;14205:114:0;7986:426:1;14205:114:0;14134:187;13924:397;14343:28;14356:6;14364;14343:12;:28::i;:::-;14388:16;:14;:16::i;:::-;14385:35;;;14407:10;:8;:10::i;:::-;14458:53;;;;;;;;;;;-1:-1:-1;;;14458:53:0;;;;;;;;-1:-1:-1;;;;;14458:17:0;;-1:-1:-1;14458:17:0;;;:9;:17;;;;;;;;:53;;14480:6;;14458:21;:53::i;:::-;-1:-1:-1;;;;;14438:17:0;;;;;;:9;:17;;;;;;;;:73;;;;14550:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;14573:22:0;;;;;;:11;:22;;;;;;;;14550:45;14549:93;;14608:34;14616:6;14624;14632:9;14608:7;:34::i;:::-;14549:93;;;14599:6;14549:93;-1:-1:-1;;;;;14676:20:0;;;;;;:9;:20;;;;;;14524:118;;-1:-1:-1;14676:40:0;;14524:118;14676:24;:40::i;:::-;-1:-1:-1;;;;;14653:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14734:43;;;;;;-1:-1:-1;;;;;;;;;;;14734:43:0;;;14762:14;160:25:1;;148:2;133:18;;14:177;14734:43:0;;;;;;;;-1:-1:-1;14795:4:0;;13564:1243;-1:-1:-1;;;;13564:1243:0:o;5116:136::-;5174:7;5201:43;5205:1;5208;5201:43;;;;;;;;;;;;;;;;;:3;:43::i;4929:181::-;4987:7;;5019:5;5023:1;5019;:5;:::i;:::-;5007:17;;5048:1;5043;:6;;5035:46;;;;-1:-1:-1;;;5035:46:0;;8619:2:1;5035:46:0;;;8601:21:1;8658:2;8638:18;;;8631:30;8697:29;8677:18;;;8670:57;8744:18;;5035:46:0;8417:351:1;5456:250:0;5514:7;5538:1;5543;5538:6;5534:47;;-1:-1:-1;5568:1:0;5561:8;;5534:47;5593:9;5605:5;5609:1;5605;:5;:::i;:::-;5593:17;-1:-1:-1;5638:1:0;5629:5;5633:1;5593:17;5629:5;:::i;:::-;:10;5621:56;;;;-1:-1:-1;;;5621:56:0;;8975:2:1;5621:56:0;;;8957:21:1;9014:2;8994:18;;;8987:30;9053:34;9033:18;;;9026:62;-1:-1:-1;;;9104:18:1;;;9097:31;9145:19;;5621:56:0;8773:397:1;5712:132:0;5770:7;5797:39;5801:1;5804;5797:39;;;;;;;;;;;;;;;;;:3;:39::i;14819:330::-;14949:53;;;;;;;;;;;-1:-1:-1;;;14949:53:0;;;;;;;;-1:-1:-1;;;;;14949:17:0;;14912:4;14949:17;;;:9;:17;;;;;;;:53;;14971:6;;14949:21;:53::i;:::-;-1:-1:-1;;;;;14929:17:0;;;;;;;:9;:17;;;;;;:73;;;;15036:20;;;;;;;:32;;15061:6;15036:24;:32::i;:::-;-1:-1:-1;;;;;15013:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15084:35;;;;;;-1:-1:-1;;;;;;;;;;;15084:35:0;;;15112:6;160:25:1;;148:2;133:18;;14:177;15084:35:0;;;;;;;;-1:-1:-1;15137:4:0;14819:330;;;;;:::o;15157:166::-;15254:12;;15244:6;:22;;:49;;;-1:-1:-1;;;;;;15270:23:0;;;;;;:15;:23;;;;;;;;15244:49;15236:79;;;;-1:-1:-1;;;15236:79:0;;9377:2:1;15236:79:0;;;9359:21:1;9416:2;9396:18;;;9389:30;-1:-1:-1;;;9435:18:1;;;9428:47;9492:18;;15236:79:0;9175:341:1;15236:79:0;15157:166;;:::o;16449:197::-;16536:4;;16498;;-1:-1:-1;;;;;16536:4:0;16522:10;:18;;;;:38;;-1:-1:-1;16554:6:0;;;;16553:7;16522:38;:62;;;;-1:-1:-1;16573:11:0;;-1:-1:-1;;;16573:11:0;;;;16522:62;:116;;;;-1:-1:-1;;16625:13:0;;;16615:4;16597:24;;;;:9;:24;;;;;;;;:41;;;16449:197::o;18010:1861::-;10690:6;:13;;-1:-1:-1;;10690:13:0;10699:4;10690:13;;;18105:15:::1;::::0;18122:26:::1;::::0;10690:6;;18089:60:::1;::::0;:15:::1;:60::i;:::-;:79;;18156:12;;18089:79;;;18152:1;18089:79;18059:109;;18179:23;18205:59;18262:1;18205:52;18248:8;;18205:38;18223:19;18205:13;;:17;;:38;;;;:::i;:59::-;18179:85;;18275:20;18298:34;18316:15;18298:13;;:17;;:34;;;;:::i;:::-;18369:16;::::0;;18383:1:::1;18369:16:::0;;;;;::::1;::::0;;18275:57;;-1:-1:-1;18345:21:0::1;::::0;18369:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18369:16:0::1;18345:40;;18414:4;18396;18401:1;18396:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18396:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18440:4:::1;::::0;18430:7;;18440:4;::::1;::::0;18430;;18440;;18430:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;18430:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;18515:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18515:188:0;;18481:21:::1;::::0;18515:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18587:12;;18457:21:::1;::::0;18630:4;;18657::::1;::::0;18677:15:::1;::::0;18515:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18716:17;18736:40;18762:13;18736:21;:25;;:40;;;;:::i;:::-;18716:60:::0;-1:-1:-1;18789:19:0::1;18811:40;18824:26;:19:::0;18848:1:::1;18824:23;:26::i;:::-;18811:8;::::0;;:12:::1;:40::i;:::-;18789:62:::0;-1:-1:-1;18872:26:0::1;18901:58;18957:1;18901:51;18789:62:::0;18901:51;:9;18915:19;18901:13:::1;:34::i;:58::-;18872:87;;18970:26;18999:44;19031:11;18999:27;19013:12;;18999:9;:13;;:27;;;;:::i;:44::-;18970:73;;19054:21;19078:39;19105:11;19078:22;19092:7;;19078:9;:13;;:22;;;;:::i;:39::-;19054:63;;19128:20;19151:38;19177:11;19151:21;19165:6;;19151:9;:13;;:21;;;;:::i;:38::-;19231:20;::::0;19223:65:::1;::::0;19128:61;;-1:-1:-1;19203:15:0::1;::::0;-1:-1:-1;;;;;19231:20:0;;::::1;::::0;19265:18;;19203:15;19223:65;19203:15;19223:65;19265:18;19231:20;19223:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19323:14:0::1;::::0;19315:53:::1;::::0;19202:86;;-1:-1:-1;;;;;;19323:14:0::1;::::0;19351:12;;19315:53:::1;::::0;;;19351:12;19323:14;19315:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19403:15:0::1;::::0;19395:55:::1;::::0;19299:69;;-1:-1:-1;;;;;;19403:15:0::1;::::0;19432:13;;19395:55:::1;::::0;;;19432:13;19403:15;19395:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19484:5:0::1;::::0;-1:-1:-1;;19505:19:0;;;-1:-1:-1;19502:362:0::1;;19540:6;::::0;19714:21:::1;::::0;19540:244:::1;::::0;-1:-1:-1;;;19540:244:0;;19616:4:::1;19540:244;::::0;::::1;11321:34:1::0;11371:18;;;11364:34;;;19540:6:0::1;11414:18:1::0;;;11407:34;;;11457:18;;;11450:34;-1:-1:-1;;;;;19714:21:0;;::::1;11500:19:1::0;;;11493:44;19754:15:0::1;11553:19:1::0;;;11546:35;19540:6:0;::::1;::::0;:22:::1;::::0;19570:18;;11255:19:1;;19540:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19804:48:0::1;::::0;;12077:25:1;;;12133:2;12118:18;;12111:34;;;19804:48:0::1;::::0;-1:-1:-1;12050:18:1;19804:48:0::1;;;;;;;19502:362;-1:-1:-1::0;;10708:6:0;:14;;-1:-1:-1;;10708:14:0;;;-1:-1:-1;;;;;;;;;;18010:1861:0:o;15453:988::-;15587:11;;15627:4;;15539:7;;15587:11;-1:-1:-1;;;;;15627:4:0;;;15614:17;;;;15611:148;;-1:-1:-1;15658:14:0;;15611:148;;;15703:4;;-1:-1:-1;;;;;15703:4:0;;;15693:14;;;;15690:69;;-1:-1:-1;15734:13:0;;15690:69;15771:17;15791:59;15829:14;;15846:3;15829:20;;;;:::i;:::-;15791:33;15816:7;15791:20;15802:8;;15791:6;:10;;:20;;;;:::i;:59::-;15771:79;;15861:18;15882:36;15909:8;;15882:22;15896:7;;15882:9;:13;;:22;;;;:::i;:36::-;15861:57;-1:-1:-1;15929:22:0;15954:25;:9;15861:57;15954:13;:25::i;:::-;16037:4;16019:24;;;;:9;:24;;;;;;15929:50;;-1:-1:-1;16019:44:0;;15929:50;16019:28;:44::i;:::-;16010:4;15992:24;;;;:9;:24;;;;;;:71;;;;16113:15;;-1:-1:-1;;;;;16113:15:0;16103:26;;;;:42;;16134:10;16103:30;:42::i;:::-;16084:15;;-1:-1:-1;;;;;16084:15:0;;;16074:26;;;;:9;:26;;;;;;;;;:71;;;;16161:47;160:25:1;;;16186:4:0;;16161:47;;;;-1:-1:-1;;;;;;;;;;;16161:47:0;133:18:1;16161:47:0;;;;;;;16242:14;;16239:154;;16287:12;;:28;;16304:10;16287:16;:28::i;:::-;16272:12;:43;16352:4;;16335:34;;160:25:1;;;-1:-1:-1;;;;;16352:4:0;;;;16335:34;;;-1:-1:-1;;;;;;;;;;;16335:34:0;148:2:1;133:18;16335:34:0;;;;;;;16239:154;16412:21;:6;16423:9;16412:10;:21::i;:::-;16405:28;15453:988;-1:-1:-1;;;;;;;;15453:988:0:o;5850:189::-;5936:7;5971:12;5964:5;5956:28;;;;-1:-1:-1;;;5956:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5995:9:0;6007:5;6011:1;6007;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;941:173::-;1009:20;;-1:-1:-1;;;;;1058:31:1;;1048:42;;1038:70;;1104:1;1101;1094:12;1038:70;941:173;;;:::o;1119:254::-;1187:6;1195;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1287:29;1306:9;1287:29;:::i;:::-;1277:39;1363:2;1348:18;;;;1335:32;;-1:-1:-1;;;1119:254:1:o;1378:248::-;1446:6;1454;1507:2;1495:9;1486:7;1482:23;1478:32;1475:52;;;1523:1;1520;1513:12;1475:52;-1:-1:-1;;1546:23:1;;;1616:2;1601:18;;;1588:32;;-1:-1:-1;1378:248:1:o;1631:328::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1816:29;1835:9;1816:29;:::i;:::-;1806:39;;1864:38;1898:2;1887:9;1883:18;1864:38;:::i;:::-;1854:48;;1949:2;1938:9;1934:18;1921:32;1911:42;;1631:328;;;;;:::o;2153:186::-;2212:6;2265:2;2253:9;2244:7;2240:23;2236:32;2233:52;;;2281:1;2278;2271:12;2233:52;2304:29;2323:9;2304:29;:::i;2344:316::-;2421:6;2429;2437;2490:2;2478:9;2469:7;2465:23;2461:32;2458:52;;;2506:1;2503;2496:12;2458:52;-1:-1:-1;;2529:23:1;;;2599:2;2584:18;;2571:32;;-1:-1:-1;2650:2:1;2635:18;;;2622:32;;2344:316;-1:-1:-1;2344:316:1:o;2665:523::-;2769:6;2777;2785;2793;2801;2809;2862:3;2850:9;2841:7;2837:23;2833:33;2830:53;;;2879:1;2876;2869:12;2830:53;-1:-1:-1;;2902:23:1;;;2972:2;2957:18;;2944:32;;-1:-1:-1;3023:2:1;3008:18;;2995:32;;3074:2;3059:18;;3046:32;;-1:-1:-1;3125:3:1;3110:19;;3097:33;;-1:-1:-1;3177:3:1;3162:19;3149:33;;-1:-1:-1;2665:523:1;-1:-1:-1;2665:523:1:o;3401:180::-;3460:6;3513:2;3501:9;3492:7;3488:23;3484:32;3481:52;;;3529:1;3526;3519:12;3481:52;-1:-1:-1;3552:23:1;;3401:180;-1:-1:-1;3401:180:1:o;3586:260::-;3654:6;3662;3715:2;3703:9;3694:7;3690:23;3686:32;3683:52;;;3731:1;3728;3721:12;3683:52;3754:29;3773:9;3754:29;:::i;:::-;3744:39;;3802:38;3836:2;3825:9;3821:18;3802:38;:::i;:::-;3792:48;;3586:260;;;;;:::o;3851:118::-;3937:5;3930:13;3923:21;3916:5;3913:32;3903:60;;3959:1;3956;3949:12;3974:309;4039:6;4047;4100:2;4088:9;4079:7;4075:23;4071:32;4068:52;;;4116:1;4113;4106:12;4068:52;4155:9;4142:23;4174:28;4196:5;4174:28;:::i;4514:484::-;4609:6;4617;4625;4633;4641;4694:3;4682:9;4673:7;4669:23;4665:33;4662:53;;;4711:1;4708;4701:12;4662:53;4734:29;4753:9;4734:29;:::i;:::-;4724:39;;4782:38;4816:2;4805:9;4801:18;4782:38;:::i;:::-;4772:48;;4839:38;4873:2;4862:9;4858:18;4839:38;:::i;:::-;4829:48;;4896:38;4930:2;4919:9;4915:18;4896:38;:::i;:::-;4886:48;;4953:39;4987:3;4976:9;4972:19;4953:39;:::i;:::-;4943:49;;4514:484;;;;;;;;:::o;5003:356::-;5205:2;5187:21;;;5224:18;;;5217:30;5283:34;5278:2;5263:18;;5256:62;5350:2;5335:18;;5003:356::o;5364:127::-;5425:10;5420:3;5416:20;5413:1;5406:31;5456:4;5453:1;5446:15;5480:4;5477:1;5470:15;5496:217;5536:1;5562;5552:132;;5606:10;5601:3;5597:20;5594:1;5587:31;5641:4;5638:1;5631:15;5669:4;5666:1;5659:15;5552:132;-1:-1:-1;5698:9:1;;5496:217::o;6076:168::-;6149:9;;;6180;;6197:15;;;6191:22;;6177:37;6167:71;;6218:18;;:::i;6249:184::-;6319:6;6372:2;6360:9;6351:7;6347:23;6343:32;6340:52;;;6388:1;6385;6378:12;6340:52;-1:-1:-1;6411:16:1;;6249:184;-1:-1:-1;6249:184:1:o;6717:245::-;6784:6;6837:2;6825:9;6816:7;6812:23;6808:32;6805:52;;;6853:1;6850;6843:12;6805:52;6885:9;6879:16;6904:28;6926:5;6904:28;:::i;7374:128::-;7441:9;;;7462:11;;;7459:37;;;7476:18;;:::i;7856:125::-;7921:9;;;7942:10;;;7939:36;;;7955:18;;:::i;9653:127::-;9714:10;9709:3;9705:20;9702:1;9695:31;9745:4;9742:1;9735:15;9769:4;9766:1;9759:15;9785:980;10047:4;10095:3;10084:9;10080:19;10126:6;10115:9;10108:25;10152:2;10190:6;10185:2;10174:9;10170:18;10163:34;10233:3;10228:2;10217:9;10213:18;10206:31;10257:6;10292;10286:13;10323:6;10315;10308:22;10361:3;10350:9;10346:19;10339:26;;10400:2;10392:6;10388:15;10374:29;;10421:1;10431:195;10445:6;10442:1;10439:13;10431:195;;;10510:13;;-1:-1:-1;;;;;10506:39:1;10494:52;;10601:15;;;;10566:12;;;;10542:1;10460:9;10431:195;;;-1:-1:-1;;;;;;;10682:32:1;;;;10677:2;10662:18;;10655:60;-1:-1:-1;;;10746:3:1;10731:19;10724:35;10643:3;9785:980;-1:-1:-1;;;9785:980:1:o;11592:306::-;11680:6;11688;11696;11749:2;11737:9;11728:7;11724:23;11720:32;11717:52;;;11765:1;11762;11755:12;11717:52;11794:9;11788:16;11778:26;;11844:2;11833:9;11829:18;11823:25;11813:35;;11888:2;11877:9;11873:18;11867:25;11857:35;;11592:306;;;;;:::o

Swarm Source

ipfs://58f50d47b644da8b5ea866ef5f5c331f28e108f7f26d52acb2096d811187923c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.