ETH Price: $3,508.11 (+2.75%)
Gas: 4 Gwei

Token

Hawk Tuah (HAWK2)
 

Overview

Max Total Supply

1,000,000,000 HAWK2

Holders

55

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HAWK

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-21
*/

// SPDX-License-Identifier: MIT

/*

https://hawktuah.wtf/

https://x.com/HawkTuahEth

https://t.me/hawktuaheth

*/
  
  pragma solidity ^0.8.26;

  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 IERC20 {
      function totalSupply() external view returns (uint256);
      function balanceOf(address account) external view returns (uint256);
      function transfer(address to, 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 from,
          address to,
          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);
  }

  interface IERC20Metadata is IERC20 {
      function name() external view returns (string memory);
      function symbol() external view returns (string memory);
      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;

      constructor(string memory name_, string memory symbol_) {
          _name = name_;
          _symbol = symbol_;
      }

      function name() public view virtual override returns (string memory) {return _name;}
      function symbol() public view virtual override returns (string memory) {return _symbol;}
      function decimals() public view virtual override returns (uint8) {return 18;}
      function totalSupply() public view virtual override returns (uint256) {return _totalSupply;}
      function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}

      function transfer(address to, uint256 amount) public virtual override returns (bool) {
          address owner = _msgSender();
          _transfer(owner, to, amount);
          return true;
      }

      function allowance(address owner, address spender) public view virtual override returns (uint256) {
          return _allowances[owner][spender];
      }

      function approve(address spender, uint256 amount) public virtual override returns (bool) {
          address owner = _msgSender();
          _approve(owner, spender, amount);
          return true;
      }

      function transferFrom(
          address from,
          address to,
          uint256 amount
      ) public virtual override returns (bool) {
          address spender = _msgSender();
          _spendAllowance(from, spender, amount);
          _transfer(from, to, amount);
          return true;
      }

      function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
          address owner = _msgSender();
          _approve(owner, spender, _allowances[owner][spender] + addedValue);
          return true;
      }

      function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
          address owner = _msgSender();
          uint256 currentAllowance = _allowances[owner][spender];
          require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
          unchecked {
              _approve(owner, spender, currentAllowance - subtractedValue);
          }

          return true;
      }

      function _transfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {
          require(from != address(0), "ERC20: transfer from the zero address");
          require(to != address(0), "ERC20: transfer to the zero address");

          _beforeTokenTransfer(from, to, amount);

          uint256 fromBalance = _balances[from];
          require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
          unchecked {
              _balances[from] = fromBalance - amount;
          }
          _balances[to] += amount;

          emit Transfer(from, to, amount);

          _afterTokenTransfer(from, to, amount);
      }

      function _mint(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: mint to the zero address");

          _beforeTokenTransfer(address(0), account, amount);

          _totalSupply += amount;
          _balances[account] += amount;
          emit Transfer(address(0), account, amount);

          _afterTokenTransfer(address(0), account, amount);
      }

      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);
      }

      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);
      }

      function _spendAllowance(
          address owner,
          address spender,
          uint256 amount
      ) internal virtual {
          uint256 currentAllowance = allowance(owner, spender);
          if (currentAllowance != type(uint256).max) {
              require(currentAllowance >= amount, "ERC20: insufficient allowance");
              unchecked {
                  _approve(owner, spender, currentAllowance - amount);
              }
          }
      }

      function _beforeTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}

      function _afterTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}
  }

  abstract contract Ownable is Context {
      address private _owner;

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

      constructor() {
          _transferOwnership(_msgSender());
      }

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

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

      function renounceOwnership() public virtual onlyOwner {
          _transferOwnership(address(0));
      }

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

      function _transferOwnership(address newOwner) internal virtual {
          address oldOwner = _owner;
          _owner = newOwner;
          emit OwnershipTransferred(oldOwner, newOwner);
      }
  }

  library SafeMath {
      function add(uint256 a, uint256 b) internal pure returns (uint256) {
          return a + b;
      }

      function sub(uint256 a, uint256 b) internal pure returns (uint256) {
          return a - b;
      }

      function mul(uint256 a, uint256 b) internal pure returns (uint256) {
          return a * b;
      }

      function div(uint256 a, uint256 b) internal pure returns (uint256) {
          return a / b;
      }

      function sub(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b <= a, errorMessage);
              return a - b;
          }
      }

      function div(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b > 0, errorMessage);
              return a / b;
          }
      }
  }

  interface IUniswapV2Factory {
      function createPair(address tokenA, address tokenB) external returns (address pair);
      function getPair(address tokenA, address tokenB) external view returns (address pair);
  }

  interface IUniswapV2Router02 {
      function factory() external pure returns (address);
      function WETH() external pure returns (address);
          function addLiquidityETH(
          address token,
          uint amountTokenDesired,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
      function swapExactTokensForETHSupportingFeeOnTransferTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external;
  }

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

    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniPair;
    address public immutable feeAddr;

    uint256 public maxSwapSize;
    uint256 public maxHoldings;
    uint256 public feeThresholdAmount;
    uint256 private _swapMaxMultiplier = 3;
    uint256 private _swapMinDivisor = 7;
    mapping(uint256 => uint256) private _swapBlocks;

    uint256 public buyFee;
    uint256 public sellFee;

    bool private _inSwap;
    mapping (address => bool) private _excludedLimits;
    mapping (address => bool) public blacklisted;

    event FeeSwap(uint256 indexed value);

    constructor() ERC20("Hawk Tuah", "HAWK2") payable {
        uint256 totalSupply = 1000000000 * 1e18;

        uint256 caSupply = totalSupply.mul(5).div(100);

        maxSwapSize = totalSupply.mul(30).div(1000);
        maxHoldings = totalSupply.mul(30).div(1000);
        feeThresholdAmount = totalSupply.mul(5).div(1000);

        feeAddr = 0x614b75fC33Af174Ba4B23d77C7118434E54ac567;

        buyFee = 25;
        sellFee = 25;

        _excludedLimits[feeAddr] = true;
        _excludedLimits[msg.sender] = true;
        _excludedLimits[tx.origin] = true;
        _excludedLimits[address(this)] = true;
        _excludedLimits[address(0xdead)] = true;

        _mint(address(this), caSupply);

        _mint(tx.origin, totalSupply.sub(caSupply));

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');
        require(!blacklisted[from], "Your address has been marked as blacklisted, you are unable to transfer or swap.");

        bool excluded = _excludedLimits[from] || _excludedLimits[to];
        require(uniPair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniPair;
        bool isBuy = from == uniPair;

        if ((isBuy || isSell) && maxSwapSize > 0 && !excluded)
            require(amount <= maxSwapSize, "Swap value exceeds max swap amount, try again with less swap value.");

        if (!isSell && maxHoldings > 0 && !excluded)
            require(balanceOf(to) + amount <= maxHoldings, "Balance exceeds max holdings amount, consider using a second wallet.");

        if (
          balanceOf(address(this)) >= feeThresholdAmount &&
          !_inSwap &&
          isSell &&
          !excluded && shouldSwapBack(amount)
        ) {
            _inSwap = true;
            _swapTokenFee();
            _inSwap = false;
        }

        uint256 fee = isBuy ? buyFee : sellFee;

        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function shouldSwapBack(uint256 amount) private returns (bool) {
        return amount >= (_swapMinDivisor == 0 ? 0 : feeThresholdAmount / _swapMinDivisor) && _swapBlocks[block.number]++ < 2;
      }

    function _swapTokenFee() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) return;
        if (contractBalance > feeThresholdAmount) contractBalance = feeThresholdAmount;

        uint256 initETHBal = address(this).balance;

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

        _approve(address(this), address(_router), contractBalance);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethFee = address(this).balance.sub(initETHBal);
        uint256 splitFee = ethFee.mul(5).div(100);

        ethFee = ethFee.sub(splitFee);
        payable(feeAddr).transfer(ethFee);
        payable(0x614b75fC33Af174Ba4B23d77C7118434E54ac567).transfer(splitFee);

        emit FeeSwap(splitFee);
    }

    function enableTrade() external onlyOwner {
        uniPair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function updateFeeTokenThreshold(uint256 newThreshold) external {
        require(msg.sender == feeAddr || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeThresholdAmount = newThreshold;
    }

    function setNewFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        buyFee = newBuyFee;
        sellFee = newSellFee;
    }

    function disableLimits() external onlyOwner {
        maxHoldings = 0;
        maxSwapSize = 0;
    }

    function disableHoldingLimit() external onlyOwner {
        maxHoldings = 0;
    }

    function disableSwapTxLimit() external onlyOwner {
        maxSwapSize = 0;
    }

    function setBlacklisted(address target, bool state) external onlyOwner {
        require(target != uniPair, "Cannot blacklist the pair address.");
        blacklisted[target] = state;
    }

    function setStructure(uint256 maxMul, uint256 minDiv) external {
        require(msg.sender == feeAddr || msg.sender == owner());
        require(maxMul <= 4 && minDiv != 0);
        _swapMaxMultiplier = maxMul;
        _swapMinDivisor = minDiv;
    }

    function transferStuckETH() external  {
        require(msg.sender == feeAddr || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function transferStuckERC20(IERC20 token) external  {
      require(msg.sender == feeAddr || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }

    receive() external payable {}
  }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","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":"disableHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSwapTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeThresholdAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setNewFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMul","type":"uint256"},{"internalType":"uint256","name":"minDiv","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"contract IERC20","name":"token","type":"address"}],"name":"transferStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6003600a8190556007600b55600960a090815268090c2eed640a8eac2d60bb1b60c052610120604052600560e0908152642420aba59960d91b61010052909161004883826103a6565b50600461005582826103a6565b50505061006e6100696101ab60201b60201c565b6101af565b6b033b2e3c9fd0803ce80000005f610092606461008c846005610200565b90610214565b90506100a56103e861008c84601e610200565b6007556100b96103e861008c84601e610200565b6008556100cd6103e861008c846005610200565b60095573614b75fc33af174ba4b23d77c7118434e54ac5676080526019600d819055600e5560106020527fad576b5fc1b262a5bc075a685ab297d0a8af386351c143d2aae3015d41b284c88054600160ff199182168117909255335f90815260408082208054841685179055328252808220805484168517905530808352908220805484168517905561dead9091527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b6980549092169092179055610191908261021f565b6101a43261019f84846102ff565b61021f565b50506104d0565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f61020b8284610474565b90505b92915050565b5f61020b828461048b565b6001600160a01b0382166102795760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f82825461028a91906104aa565b90915550506001600160a01b0382165f90815260208190526040812080548392906102b69084906104aa565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b5f61020b82846104bd565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061033757607f821691505b60208210810361035557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561030a57805f5260205f20601f840160051c810160208510156103805750805b601f840160051c820191505b8181101561039f575f815560010161038c565b5050505050565b81516001600160401b038111156103bf576103bf61030f565b6103d3816103cd8454610323565b8461035b565b6020601f821160018114610405575f83156103ee5750848201515b5f19600385901b1c1916600184901b17845561039f565b5f84815260208120601f198516915b828110156104345787850151825560209485019460019092019101610414565b508482101561045157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761020e5761020e610460565b5f826104a557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561020e5761020e610460565b8181038181111561020e5761020e610460565b608051611e6761050b5f395f8181610353015281816108410152818161097701528181610c7401528181610d78015261186a0152611e675ff3fe6080604052600436106101dd575f3560e01c806370a08231116100fd578063d01dd6d211610092578063e54f4faa11610062578063e54f4faa1461056d578063f2fde38b14610582578063f442d3fb146105a1578063f928364c146105c0575f80fd5b8063d01dd6d2146104bd578063d18afa85146104dc578063dbac26e9146104fb578063dd62ed3e14610529575f80fd5b8063a457c2d7116100cd578063a457c2d71461044b578063a9059cbb1461046a578063ac3c457314610489578063baccf5cf1461049e575f80fd5b806370a08231146103d2578063715018a6146104065780638da5cb5b1461041a57806395d89b4114610437575f80fd5b806332972e4611610173578063470624021161014357806347062402146103755780634f28cac21461038a5780635564ad711461039f57806362aaff3a146103b3575f80fd5b806332972e46146102d857806337efc0c91461030f578063395093511461032357806339e7fddc14610342575f80fd5b80631fac6a3b116101ae5780631fac6a3b1461027557806323b872dd146102895780632b14ca56146102a8578063313ce567146102bd575f80fd5b806299d386146101e857806306fdde03146101fe578063095ea7b31461022857806318160ddd14610257575f80fd5b366101e457005b5f80fd5b3480156101f3575f80fd5b506101fc6105d4565b005b348015610209575f80fd5b5061021261078d565b60405161021f9190611af8565b60405180910390f35b348015610233575f80fd5b50610247610242366004611b41565b61081d565b604051901515815260200161021f565b348015610262575f80fd5b506002545b60405190815260200161021f565b348015610280575f80fd5b506101fc610836565b348015610294575f80fd5b506102476102a3366004611b6b565b6108ab565b3480156102b3575f80fd5b50610267600e5481565b3480156102c8575f80fd5b506040516012815260200161021f565b3480156102e3575f80fd5b506006546102f7906001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b34801561031a575f80fd5b506101fc6108ce565b34801561032e575f80fd5b5061024761033d366004611b41565b6108fe565b34801561034d575f80fd5b506102f77f000000000000000000000000000000000000000000000000000000000000000081565b348015610380575f80fd5b50610267600d5481565b348015610395575f80fd5b5061026760075481565b3480156103aa575f80fd5b506101fc61093c565b3480156103be575f80fd5b506101fc6103cd366004611ba9565b61096c565b3480156103dd575f80fd5b506102676103ec366004611ba9565b6001600160a01b03165f9081526020819052604090205490565b348015610411575f80fd5b506101fc610a95565b348015610425575f80fd5b506005546001600160a01b03166102f7565b348015610442575f80fd5b50610212610aca565b348015610456575f80fd5b50610247610465366004611b41565b610ad9565b348015610475575f80fd5b50610247610484366004611b41565b610b6a565b348015610494575f80fd5b5061026760095481565b3480156104a9575f80fd5b506101fc6104b8366004611bc4565b610b77565b3480156104c8575f80fd5b506101fc6104d7366004611bf1565b610bac565b3480156104e7575f80fd5b506101fc6104f6366004611bc4565b610c69565b348015610506575f80fd5b50610247610515366004611ba9565b60116020525f908152604090205460ff1681565b348015610534575f80fd5b50610267610543366004611c28565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610578575f80fd5b5061026760085481565b34801561058d575f80fd5b506101fc61059c366004611ba9565b610cd5565b3480156105ac575f80fd5b506101fc6105bb366004611c54565b610d6d565b3480156105cb575f80fd5b506101fc610ed1565b6005546001600160a01b031633146106075760405162461bcd60e51b81526004016105fe90611c6b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610657573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067b9190611ca0565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fe9190611ca0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076b9190611ca0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60606003805461079c90611cbb565b80601f01602080910402602001604051908101604052809291908181526020018280546107c890611cbb565b80156108135780601f106107ea57610100808354040283529160200191610813565b820191905f5260205f20905b8154815290600101906020018083116107f657829003601f168201915b5050505050905090565b5f3361082a818585610f06565b60019150505b92915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061087757506005546001600160a01b031633145b61087f575f80fd5b60405133904780156108fc02915f818181858888f193505050501580156108a8573d5f803e3d5ffd5b50565b5f336108b8858285611029565b6108c38585856110b9565b506001949350505050565b6005546001600160a01b031633146108f85760405162461bcd60e51b81526004016105fe90611c6b565b5f600755565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919061082a9082908690610937908790611d07565b610f06565b6005546001600160a01b031633146109665760405162461bcd60e51b81526004016105fe90611c6b565b5f600855565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806109ad57506005546001600160a01b031633145b6109b5575f80fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a259190611d1a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610a6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611d31565b5050565b6005546001600160a01b03163314610abf5760405162461bcd60e51b81526004016105fe90611c6b565b610ac85f6115b2565b565b60606004805461079c90611cbb565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919083811015610b5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105fe565b6108c38286868403610f06565b5f3361082a8185856110b9565b6005546001600160a01b03163314610ba15760405162461bcd60e51b81526004016105fe90611c6b565b600d91909155600e55565b6005546001600160a01b03163314610bd65760405162461bcd60e51b81526004016105fe90611c6b565b6006546001600160a01b0390811690831603610c3f5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420626c61636b6c69737420746865207061697220616464726573604482015261399760f11b60648201526084016105fe565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610caa57506005546001600160a01b031633145b610cb2575f80fd5b60048211158015610cc257508015155b610cca575f80fd5b600a91909155600b55565b6005546001600160a01b03163314610cff5760405162461bcd60e51b81526004016105fe90611c6b565b6001600160a01b038116610d645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105fe565b6108a8816115b2565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610dae57506005546001600160a01b031633145b610db6575f80fd5b610dd7620186a0610dd16001610dcb60025490565b90611603565b90611615565b811015610e4c5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e000000000000000060648201526084016105fe565b610e5f6064610dd16002610dcb60025490565b811115610ecc5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b60648201526084016105fe565b600955565b6005546001600160a01b03163314610efb5760405162461bcd60e51b81526004016105fe90611c6b565b5f6008819055600755565b6001600160a01b038316610f685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fe565b6001600160a01b038216610fc95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fe565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146110b357818110156110a65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105fe565b6110b38484848403610f06565b50505050565b6001600160a01b0383166111235760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b60648201526084016105fe565b6001600160a01b03821661118b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b60648201526084016105fe565b5f81116111ed5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b60648201526084016105fe565b6001600160a01b0383165f9081526011602052604090205460ff16156112945760405162461bcd60e51b815260206004820152605060248201527f596f7572206164647265737320686173206265656e206d61726b65642061732060448201527f626c61636b6c69737465642c20796f752061726520756e61626c6520746f207460648201526f3930b739b332b91037b91039bbb0b81760811b608482015260a4016105fe565b6001600160a01b0383165f9081526010602052604081205460ff16806112d157506001600160a01b0383165f9081526010602052604090205460ff165b6006549091506001600160a01b03161515806112ea5750805b6113365760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e0060448201526064016105fe565b6006546001600160a01b0390811684821681149186161480806113565750815b801561136357505f600754115b801561136d575082155b156113f6576007548411156113f65760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a4016105fe565b8115801561140557505f600854115b801561140f575082155b156114c25760085484611436876001600160a01b03165f9081526020819052604090205490565b6114409190611d07565b11156114c25760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a4016105fe565b600954305f90815260208190526040902054101580156114e55750600f5460ff16155b80156114ee5750815b80156114f8575082155b8015611508575061150884611620565b1561152d57600f805460ff19166001179055611522611675565b600f805460ff191690555b5f8161153b57600e5461153f565b600d545b9050801561159e57831580156115585750600f5460ff16155b8015611568575081806115685750825b1561159e575f61157d6064610dd18885611603565b9050801561159057611590883083611921565b61159a8682611aed565b9550505b6115a9878787611921565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f61160e8284611d4c565b9392505050565b5f61160e8284611d63565b5f600b545f1461163f57600b5460095461163a9190611d63565b611641565b5f5b82101580156108305750435f908152600c60205260408120805460029290919061166a83611d82565b919050551092915050565b305f908152602081905260408120549081900361168f5750565b60095481111561169e57506009545b60408051600280825260608201835247925f92919060208301908036833701905050905030815f815181106116d5576116d5611d9a565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611745573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117699190611ca0565b8160018151811061177c5761177c611d9a565b60200260200101906001600160a01b031690816001600160a01b0316815250506117bb30737a250d5630b4cf539739df2c5dacb4c659f2488d85610f06565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117fa9086905f90869030904290600401611dae565b5f604051808303815f87803b158015611811575f80fd5b505af1158015611823573d5f803e3d5ffd5b505050505f61183b8347611aed90919063ffffffff16565b90505f61184e6064610dd1846005611603565b905061185a8282611aed565b6040519092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083156108fc029084905f818181858888f193505050501580156118b0573d5f803e3d5ffd5b5060405173614b75fc33af174ba4b23d77c7118434e54ac5679082156108fc029083905f818181858888f193505050501580156118ef573d5f803e3d5ffd5b5060405181907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b87905f90a25050505050565b6001600160a01b0383166119855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105fe565b6001600160a01b0382166119e75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105fe565b6001600160a01b0383165f9081526020819052604090205481811015611a5e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105fe565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611a94908490611d07565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ae091815260200190565b60405180910390a36110b3565b5f61160e8284611e1e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146108a8575f80fd5b5f8060408385031215611b52575f80fd5b8235611b5d81611b2d565b946020939093013593505050565b5f805f60608486031215611b7d575f80fd5b8335611b8881611b2d565b92506020840135611b9881611b2d565b929592945050506040919091013590565b5f60208284031215611bb9575f80fd5b813561160e81611b2d565b5f8060408385031215611bd5575f80fd5b50508035926020909101359150565b80151581146108a8575f80fd5b5f8060408385031215611c02575f80fd5b8235611c0d81611b2d565b91506020830135611c1d81611be4565b809150509250929050565b5f8060408385031215611c39575f80fd5b8235611c4481611b2d565b91506020830135611c1d81611b2d565b5f60208284031215611c64575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611cb0575f80fd5b815161160e81611b2d565b600181811c90821680611ccf57607f821691505b602082108103611ced57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561083057610830611cf3565b5f60208284031215611d2a575f80fd5b5051919050565b5f60208284031215611d41575f80fd5b815161160e81611be4565b808202811582820484141761083057610830611cf3565b5f82611d7d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60018201611d9357611d93611cf3565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dfe5783516001600160a01b0316835260209384019390920191600101611dd7565b50506001600160a01b039590951660608401525050608001529392505050565b8181038181111561083057610830611cf356fea2646970667358221220f99c6098fb3e0e554da351446c57c54221be6be9fc83f1abbac83aa1aa14da6564736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101dd575f3560e01c806370a08231116100fd578063d01dd6d211610092578063e54f4faa11610062578063e54f4faa1461056d578063f2fde38b14610582578063f442d3fb146105a1578063f928364c146105c0575f80fd5b8063d01dd6d2146104bd578063d18afa85146104dc578063dbac26e9146104fb578063dd62ed3e14610529575f80fd5b8063a457c2d7116100cd578063a457c2d71461044b578063a9059cbb1461046a578063ac3c457314610489578063baccf5cf1461049e575f80fd5b806370a08231146103d2578063715018a6146104065780638da5cb5b1461041a57806395d89b4114610437575f80fd5b806332972e4611610173578063470624021161014357806347062402146103755780634f28cac21461038a5780635564ad711461039f57806362aaff3a146103b3575f80fd5b806332972e46146102d857806337efc0c91461030f578063395093511461032357806339e7fddc14610342575f80fd5b80631fac6a3b116101ae5780631fac6a3b1461027557806323b872dd146102895780632b14ca56146102a8578063313ce567146102bd575f80fd5b806299d386146101e857806306fdde03146101fe578063095ea7b31461022857806318160ddd14610257575f80fd5b366101e457005b5f80fd5b3480156101f3575f80fd5b506101fc6105d4565b005b348015610209575f80fd5b5061021261078d565b60405161021f9190611af8565b60405180910390f35b348015610233575f80fd5b50610247610242366004611b41565b61081d565b604051901515815260200161021f565b348015610262575f80fd5b506002545b60405190815260200161021f565b348015610280575f80fd5b506101fc610836565b348015610294575f80fd5b506102476102a3366004611b6b565b6108ab565b3480156102b3575f80fd5b50610267600e5481565b3480156102c8575f80fd5b506040516012815260200161021f565b3480156102e3575f80fd5b506006546102f7906001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b34801561031a575f80fd5b506101fc6108ce565b34801561032e575f80fd5b5061024761033d366004611b41565b6108fe565b34801561034d575f80fd5b506102f77f000000000000000000000000614b75fc33af174ba4b23d77c7118434e54ac56781565b348015610380575f80fd5b50610267600d5481565b348015610395575f80fd5b5061026760075481565b3480156103aa575f80fd5b506101fc61093c565b3480156103be575f80fd5b506101fc6103cd366004611ba9565b61096c565b3480156103dd575f80fd5b506102676103ec366004611ba9565b6001600160a01b03165f9081526020819052604090205490565b348015610411575f80fd5b506101fc610a95565b348015610425575f80fd5b506005546001600160a01b03166102f7565b348015610442575f80fd5b50610212610aca565b348015610456575f80fd5b50610247610465366004611b41565b610ad9565b348015610475575f80fd5b50610247610484366004611b41565b610b6a565b348015610494575f80fd5b5061026760095481565b3480156104a9575f80fd5b506101fc6104b8366004611bc4565b610b77565b3480156104c8575f80fd5b506101fc6104d7366004611bf1565b610bac565b3480156104e7575f80fd5b506101fc6104f6366004611bc4565b610c69565b348015610506575f80fd5b50610247610515366004611ba9565b60116020525f908152604090205460ff1681565b348015610534575f80fd5b50610267610543366004611c28565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610578575f80fd5b5061026760085481565b34801561058d575f80fd5b506101fc61059c366004611ba9565b610cd5565b3480156105ac575f80fd5b506101fc6105bb366004611c54565b610d6d565b3480156105cb575f80fd5b506101fc610ed1565b6005546001600160a01b031633146106075760405162461bcd60e51b81526004016105fe90611c6b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610657573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067b9190611ca0565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fe9190611ca0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076b9190611ca0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60606003805461079c90611cbb565b80601f01602080910402602001604051908101604052809291908181526020018280546107c890611cbb565b80156108135780601f106107ea57610100808354040283529160200191610813565b820191905f5260205f20905b8154815290600101906020018083116107f657829003601f168201915b5050505050905090565b5f3361082a818585610f06565b60019150505b92915050565b336001600160a01b037f000000000000000000000000614b75fc33af174ba4b23d77c7118434e54ac56716148061087757506005546001600160a01b031633145b61087f575f80fd5b60405133904780156108fc02915f818181858888f193505050501580156108a8573d5f803e3d5ffd5b50565b5f336108b8858285611029565b6108c38585856110b9565b506001949350505050565b6005546001600160a01b031633146108f85760405162461bcd60e51b81526004016105fe90611c6b565b5f600755565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919061082a9082908690610937908790611d07565b610f06565b6005546001600160a01b031633146109665760405162461bcd60e51b81526004016105fe90611c6b565b5f600855565b336001600160a01b037f000000000000000000000000614b75fc33af174ba4b23d77c7118434e54ac5671614806109ad57506005546001600160a01b031633145b6109b5575f80fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a259190611d1a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610a6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611d31565b5050565b6005546001600160a01b03163314610abf5760405162461bcd60e51b81526004016105fe90611c6b565b610ac85f6115b2565b565b60606004805461079c90611cbb565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919083811015610b5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105fe565b6108c38286868403610f06565b5f3361082a8185856110b9565b6005546001600160a01b03163314610ba15760405162461bcd60e51b81526004016105fe90611c6b565b600d91909155600e55565b6005546001600160a01b03163314610bd65760405162461bcd60e51b81526004016105fe90611c6b565b6006546001600160a01b0390811690831603610c3f5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420626c61636b6c69737420746865207061697220616464726573604482015261399760f11b60648201526084016105fe565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b336001600160a01b037f000000000000000000000000614b75fc33af174ba4b23d77c7118434e54ac567161480610caa57506005546001600160a01b031633145b610cb2575f80fd5b60048211158015610cc257508015155b610cca575f80fd5b600a91909155600b55565b6005546001600160a01b03163314610cff5760405162461bcd60e51b81526004016105fe90611c6b565b6001600160a01b038116610d645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105fe565b6108a8816115b2565b336001600160a01b037f000000000000000000000000614b75fc33af174ba4b23d77c7118434e54ac567161480610dae57506005546001600160a01b031633145b610db6575f80fd5b610dd7620186a0610dd16001610dcb60025490565b90611603565b90611615565b811015610e4c5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e000000000000000060648201526084016105fe565b610e5f6064610dd16002610dcb60025490565b811115610ecc5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b60648201526084016105fe565b600955565b6005546001600160a01b03163314610efb5760405162461bcd60e51b81526004016105fe90611c6b565b5f6008819055600755565b6001600160a01b038316610f685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fe565b6001600160a01b038216610fc95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fe565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146110b357818110156110a65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105fe565b6110b38484848403610f06565b50505050565b6001600160a01b0383166111235760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b60648201526084016105fe565b6001600160a01b03821661118b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b60648201526084016105fe565b5f81116111ed5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b60648201526084016105fe565b6001600160a01b0383165f9081526011602052604090205460ff16156112945760405162461bcd60e51b815260206004820152605060248201527f596f7572206164647265737320686173206265656e206d61726b65642061732060448201527f626c61636b6c69737465642c20796f752061726520756e61626c6520746f207460648201526f3930b739b332b91037b91039bbb0b81760811b608482015260a4016105fe565b6001600160a01b0383165f9081526010602052604081205460ff16806112d157506001600160a01b0383165f9081526010602052604090205460ff165b6006549091506001600160a01b03161515806112ea5750805b6113365760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e0060448201526064016105fe565b6006546001600160a01b0390811684821681149186161480806113565750815b801561136357505f600754115b801561136d575082155b156113f6576007548411156113f65760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a4016105fe565b8115801561140557505f600854115b801561140f575082155b156114c25760085484611436876001600160a01b03165f9081526020819052604090205490565b6114409190611d07565b11156114c25760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a4016105fe565b600954305f90815260208190526040902054101580156114e55750600f5460ff16155b80156114ee5750815b80156114f8575082155b8015611508575061150884611620565b1561152d57600f805460ff19166001179055611522611675565b600f805460ff191690555b5f8161153b57600e5461153f565b600d545b9050801561159e57831580156115585750600f5460ff16155b8015611568575081806115685750825b1561159e575f61157d6064610dd18885611603565b9050801561159057611590883083611921565b61159a8682611aed565b9550505b6115a9878787611921565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f61160e8284611d4c565b9392505050565b5f61160e8284611d63565b5f600b545f1461163f57600b5460095461163a9190611d63565b611641565b5f5b82101580156108305750435f908152600c60205260408120805460029290919061166a83611d82565b919050551092915050565b305f908152602081905260408120549081900361168f5750565b60095481111561169e57506009545b60408051600280825260608201835247925f92919060208301908036833701905050905030815f815181106116d5576116d5611d9a565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611745573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117699190611ca0565b8160018151811061177c5761177c611d9a565b60200260200101906001600160a01b031690816001600160a01b0316815250506117bb30737a250d5630b4cf539739df2c5dacb4c659f2488d85610f06565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117fa9086905f90869030904290600401611dae565b5f604051808303815f87803b158015611811575f80fd5b505af1158015611823573d5f803e3d5ffd5b505050505f61183b8347611aed90919063ffffffff16565b90505f61184e6064610dd1846005611603565b905061185a8282611aed565b6040519092506001600160a01b037f000000000000000000000000614b75fc33af174ba4b23d77c7118434e54ac567169083156108fc029084905f818181858888f193505050501580156118b0573d5f803e3d5ffd5b5060405173614b75fc33af174ba4b23d77c7118434e54ac5679082156108fc029083905f818181858888f193505050501580156118ef573d5f803e3d5ffd5b5060405181907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b87905f90a25050505050565b6001600160a01b0383166119855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105fe565b6001600160a01b0382166119e75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105fe565b6001600160a01b0383165f9081526020819052604090205481811015611a5e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105fe565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611a94908490611d07565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ae091815260200190565b60405180910390a36110b3565b5f61160e8284611e1e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146108a8575f80fd5b5f8060408385031215611b52575f80fd5b8235611b5d81611b2d565b946020939093013593505050565b5f805f60608486031215611b7d575f80fd5b8335611b8881611b2d565b92506020840135611b9881611b2d565b929592945050506040919091013590565b5f60208284031215611bb9575f80fd5b813561160e81611b2d565b5f8060408385031215611bd5575f80fd5b50508035926020909101359150565b80151581146108a8575f80fd5b5f8060408385031215611c02575f80fd5b8235611c0d81611b2d565b91506020830135611c1d81611be4565b809150509250929050565b5f8060408385031215611c39575f80fd5b8235611c4481611b2d565b91506020830135611c1d81611b2d565b5f60208284031215611c64575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611cb0575f80fd5b815161160e81611b2d565b600181811c90821680611ccf57607f821691505b602082108103611ced57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561083057610830611cf3565b5f60208284031215611d2a575f80fd5b5051919050565b5f60208284031215611d41575f80fd5b815161160e81611be4565b808202811582820484141761083057610830611cf3565b5f82611d7d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60018201611d9357611d93611cf3565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dfe5783516001600160a01b0316835260209384019390920191600101611dd7565b50506001600160a01b039590951660608401525050608001529392505050565b8181038181111561083057610830611cf356fea2646970667358221220f99c6098fb3e0e554da351446c57c54221be6be9fc83f1abbac83aa1aa14da6564736f6c634300081a0033

Deployed Bytecode Sourcemap

9825:6487:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14388:146;;;;;;;;;;;;;:::i;:::-;;1806:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2676:209;;;;;;;;;;-1:-1:-1;2676:209:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;2676:209:0;945:187:1;2079:92:0;;;;;;;;;;-1:-1:-1;2157:12:0;;2079:92;;;1283:25:1;;;1271:2;1256:18;2079:92:0;1137:177:1;15895:174:0;;;;;;;;;;;;;:::i;2895:313::-;;;;;;;;;;-1:-1:-1;2895:313:0;;;;;:::i;:::-;;:::i;10363:22::-;;;;;;;;;;;;;;;;1994:77;;;;;;;;;;-1:-1:-1;1994:77:0;;2067:2;1974:36:1;;1962:2;1947:18;1994:77:0;1832:184:1;10016:22:0;;;;;;;;;;-1:-1:-1;10016:22:0;;;;-1:-1:-1;;;;;10016:22:0;;;;;;-1:-1:-1;;;;;2185:32:1;;;2167:51;;2155:2;2140:18;10016:22:0;2021:203:1;15340:83:0;;;;;;;;;;;;;:::i;3218:248::-;;;;;;;;;;-1:-1:-1;3218:248:0;;;;;:::i;:::-;;:::i;10045:32::-;;;;;;;;;;;;;;;10335:21;;;;;;;;;;;;;;;;10086:26;;;;;;;;;;;;;;;;15248:84;;;;;;;;;;;;;:::i;16077:193::-;;;;;;;;;;-1:-1:-1;16077:193:0;;;;;:::i;:::-;;:::i;2179:111::-;;;;;;;;;;-1:-1:-1;2179:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;2270:18:0;2253:7;2270:18;;;;;;;;;;;;2179:111;7369:107;;;;;;;;;;;;;:::i;7132:91::-;;;;;;;;;;-1:-1:-1;7207:6:0;;-1:-1:-1;;;;;7207:6:0;7132:91;;1898:88;;;;;;;;;;;;;:::i;3476:454::-;;;;;;;;;;-1:-1:-1;3476:454:0;;;;;:::i;:::-;;:::i;2300:201::-;;;;;;;;;;-1:-1:-1;2300:201:0;;;;;:::i;:::-;;:::i;10152:33::-;;;;;;;;;;;;;;;;14982:146;;;;;;;;;;-1:-1:-1;14982:146:0;;;;;:::i;:::-;;:::i;15431:192::-;;;;;;;;;;-1:-1:-1;15431:192:0;;;;;:::i;:::-;;:::i;15631:256::-;;;;;;;;;;-1:-1:-1;15631:256:0;;;;;:::i;:::-;;:::i;10477:44::-;;;;;;;;;;-1:-1:-1;10477:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2511:155;;;;;;;;;;-1:-1:-1;2511:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;2629:18:0;;;2600:7;2629:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2511:155;10119:26;;;;;;;;;;;;;;;;7486:207;;;;;;;;;;-1:-1:-1;7486:207:0;;;;;:::i;:::-;;:::i;14542:432::-;;;;;;;;;;-1:-1:-1;14542:432:0;;;;;:::i;:::-;;:::i;15136:104::-;;;;;;;;;;;;;:::i;14388:146::-;7207:6;;-1:-1:-1;;;;;7207:6:0;280:10;7275:23;7267:68;;;;-1:-1:-1;;;7267:68:0;;;;;;;:::i;:::-;;;;;;;;;9964:42:::1;-1:-1:-1::0;;;;;14469:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14451:44:0::1;;14504:4;9964:42;-1:-1:-1::0;;;;;14511:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14451:75;::::0;-1:-1:-1;;;;;;14451:75:0::1;::::0;;;;;;-1:-1:-1;;;;;5040:32:1;;;14451:75:0::1;::::0;::::1;5022:51:1::0;5109:32;;5089:18;;;5082:60;4995:18;;14451:75:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14441:7;:85:::0;;-1:-1:-1;;;;;;14441:85:0::1;-1:-1:-1::0;;;;;14441:85:0;;;::::1;::::0;;;::::1;::::0;;14388:146::o;1806:84::-;1860:13;1883:5;1876:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1806:84;:::o;2676:209::-;2759:4;280:10;2819:32;280:10;2835:7;2844:6;2819:8;:32::i;:::-;2871:4;2864:11;;;2676:209;;;;;:::o;15895:174::-;15952:10;-1:-1:-1;;;;;15966:7:0;15952:21;;;:46;;-1:-1:-1;7207:6:0;;-1:-1:-1;;;;;7207:6:0;15977:10;:21;15952:46;15944:55;;;;;;16010:51;;16018:10;;16039:21;16010:51;;;;;;;;;16039:21;16018:10;16010:51;;;;;;;;;;;;;;;;;;;;;15895:174::o;2895:313::-;3034:4;280:10;3096:38;3112:4;280:10;3127:6;3096:15;:38::i;:::-;3147:27;3157:4;3163:2;3167:6;3147:9;:27::i;:::-;-1:-1:-1;3194:4:0;;2895:313;-1:-1:-1;;;;2895:313:0:o;15340:83::-;7207:6;;-1:-1:-1;;;;;7207:6:0;280:10;7275:23;7267:68;;;;-1:-1:-1;;;7267:68:0;;;;;;;:::i;:::-;15414:1:::1;15400:11;:15:::0;15340:83::o;3218:248::-;280:10;3306:4;3391:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3391:27:0;;;;;;;;;;3306:4;;280:10;3366:66;;280:10;;3391:27;;:40;;3421:10;;3391:40;:::i;:::-;3366:8;:66::i;15248:84::-;7207:6;;-1:-1:-1;;;;;7207:6:0;280:10;7275:23;7267:68;;;;-1:-1:-1;;;7267:68:0;;;;;;;:::i;:::-;15323:1:::1;15309:11;:15:::0;15248:84::o;16077:193::-;16146:10;-1:-1:-1;;;;;16160:7:0;16146:21;;;:46;;-1:-1:-1;7207:6:0;;-1:-1:-1;;;;;7207:6:0;16171:10;:21;16146:46;16138:55;;;;;;16231:30;;-1:-1:-1;;;16231:30:0;;16255:4;16231:30;;;2167:51:1;-1:-1:-1;;;;;16204:14:0;;;;;16219:10;;16204:14;;16231:15;;2140:18:1;;16231:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16204:58;;-1:-1:-1;;;;;;16204:58:0;;;;;;;-1:-1:-1;;;;;6181:32:1;;;16204:58:0;;;6163:51:1;6230:18;;;6223:34;6136:18;;16204:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16077:193;:::o;7369:107::-;7207:6;;-1:-1:-1;;;;;7207:6:0;280:10;7275:23;7267:68;;;;-1:-1:-1;;;7267:68:0;;;;;;;:::i;:::-;7436:30:::1;7463:1;7436:18;:30::i;:::-;7369:107::o:0;1898:88::-;1954:13;1977:7;1970:14;;;;;:::i;3476:454::-;280:10;3569:4;3656:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3656:27:0;;;;;;;;;;3569:4;;280:10;3704:35;;;;3696:85;;;;-1:-1:-1;;;3696:85:0;;6720:2:1;3696:85:0;;;6702:21:1;6759:2;6739:18;;;6732:30;6798:34;6778:18;;;6771:62;-1:-1:-1;;;6849:18:1;;;6842:35;6894:19;;3696:85:0;6518:401:1;3696:85:0;3821:60;3830:5;3837:7;3865:15;3846:16;:34;3821:8;:60::i;2300:201::-;2379:4;280:10;2439:28;280:10;2456:2;2460:6;2439:9;:28::i;14982:146::-;7207:6;;-1:-1:-1;;;;;7207:6:0;280:10;7275:23;7267:68;;;;-1:-1:-1;;;7267:68:0;;;;;;;:::i;:::-;15071:6:::1;:18:::0;;;;15100:7:::1;:20:::0;14982:146::o;15431:192::-;7207:6;;-1:-1:-1;;;;;7207:6:0;280:10;7275:23;7267:68;;;;-1:-1:-1;;;7267:68:0;;;;;;;:::i;:::-;15531:7:::1;::::0;-1:-1:-1;;;;;15531:7:0;;::::1;15521:17:::0;;::::1;::::0;15513:64:::1;;;::::0;-1:-1:-1;;;15513:64:0;;7126:2:1;15513:64:0::1;::::0;::::1;7108:21:1::0;7165:2;7145:18;;;7138:30;7204:34;7184:18;;;7177:62;-1:-1:-1;;;7255:18:1;;;7248:32;7297:19;;15513:64:0::1;6924:398:1::0;15513:64:0::1;-1:-1:-1::0;;;;;15588:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:27;;-1:-1:-1;;15588:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15431:192::o;15631:256::-;15713:10;-1:-1:-1;;;;;15727:7:0;15713:21;;;:46;;-1:-1:-1;7207:6:0;;-1:-1:-1;;;;;7207:6:0;15738:10;:21;15713:46;15705:55;;;;;;15789:1;15779:6;:11;;:26;;;;-1:-1:-1;15794:11:0;;;15779:26;15771:35;;;;;;15817:18;:27;;;;15855:15;:24;15631:256::o;7486:207::-;7207:6;;-1:-1:-1;;;;;7207:6:0;280:10;7275:23;7267:68;;;;-1:-1:-1;;;7267:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7577:22:0;::::1;7569:73;;;::::0;-1:-1:-1;;;7569:73:0;;7529:2:1;7569:73:0::1;::::0;::::1;7511:21:1::0;7568:2;7548:18;;;7541:30;7607:34;7587:18;;;7580:62;-1:-1:-1;;;7658:18:1;;;7651:36;7704:19;;7569:73:0::1;7327:402:1::0;7569:73:0::1;7655:28;7674:8;7655:18;:28::i;14542:432::-:0;14625:10;-1:-1:-1;;;;;14639:7:0;14625:21;;;:46;;-1:-1:-1;7207:6:0;;-1:-1:-1;;;;;7207:6:0;14650:10;:21;14625:46;14617:55;;;;;;14707:32;14732:6;14707:20;14725:1;14707:13;2157:12;;;2079:92;14707:13;:17;;:20::i;:::-;:24;;:32::i;:::-;14691:12;:48;;14683:117;;;;-1:-1:-1;;;14683:117:0;;7936:2:1;14683:117:0;;;7918:21:1;7975:2;7955:18;;;7948:30;8014:34;7994:18;;;7987:62;8085:26;8065:18;;;8058:54;8129:19;;14683:117:0;7734:420:1;14683:117:0;14835:29;14860:3;14835:20;14853:1;14835:13;2157:12;;;2079:92;14835:29;14819:12;:45;;14811:111;;;;-1:-1:-1;;;14811:111:0;;8361:2:1;14811:111:0;;;8343:21:1;8400:2;8380:18;;;8373:30;8439:34;8419:18;;;8412:62;-1:-1:-1;;;8490:18:1;;;8483:51;8551:19;;14811:111:0;8159:417:1;14811:111:0;14933:18;:33;14542:432::o;15136:104::-;7207:6;;-1:-1:-1;;;;;7207:6:0;280:10;7275:23;7267:68;;;;-1:-1:-1;;;7267:68:0;;;;;;;:::i;:::-;15205:1:::1;15191:11;:15:::0;;;15217:11:::1;:15:::0;15136:104::o;5699:398::-;-1:-1:-1;;;;;5845:19:0;;5837:68;;;;-1:-1:-1;;;5837:68:0;;8783:2:1;5837:68:0;;;8765:21:1;8822:2;8802:18;;;8795:30;8861:34;8841:18;;;8834:62;-1:-1:-1;;;8912:18:1;;;8905:34;8956:19;;5837:68:0;8581:400:1;5837:68:0;-1:-1:-1;;;;;5926:21:0;;5918:68;;;;-1:-1:-1;;;5918:68:0;;9188:2:1;5918:68:0;;;9170:21:1;9227:2;9207:18;;;9200:30;9266:34;9246:18;;;9239:62;-1:-1:-1;;;9317:18:1;;;9310:32;9359:19;;5918:68:0;8986:398:1;5918:68:0;-1:-1:-1;;;;;6001:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6055:32;;1283:25:1;;;6055:32:0;;1256:18:1;6055:32:0;;;;;;;5699:398;;;:::o;6107:477::-;-1:-1:-1;;;;;2629:18:0;;;6252:24;2629:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6321:37:0;;6317:258;;6405:6;6385:16;:26;;6377:68;;;;-1:-1:-1;;;6377:68:0;;9591:2:1;6377:68:0;;;9573:21:1;9630:2;9610:18;;;9603:30;9669:31;9649:18;;;9642:59;9718:18;;6377:68:0;9389:353:1;6377:68:0;6493:51;6502:5;6509:7;6537:6;6518:16;:25;6493:8;:51::i;:::-;6239:345;6107:477;;;:::o;11364:1791::-;-1:-1:-1;;;;;11496:18:0;;11488:74;;;;-1:-1:-1;;;11488:74:0;;9949:2:1;11488:74:0;;;9931:21:1;9988:2;9968:18;;;9961:30;10027:34;10007:18;;;10000:62;-1:-1:-1;;;10078:18:1;;;10071:41;10129:19;;11488:74:0;9747:407:1;11488:74:0;-1:-1:-1;;;;;11581:16:0;;11573:70;;;;-1:-1:-1;;;11573:70:0;;10361:2:1;11573:70:0;;;10343:21:1;10400:2;10380:18;;;10373:30;10439:34;10419:18;;;10412:62;-1:-1:-1;;;10490:18:1;;;10483:39;10539:19;;11573:70:0;10159:405:1;11573:70:0;11671:1;11662:6;:10;11654:65;;;;-1:-1:-1;;;11654:65:0;;10771:2:1;11654:65:0;;;10753:21:1;10810:2;10790:18;;;10783:30;10849:34;10829:18;;;10822:62;-1:-1:-1;;;10900:18:1;;;10893:40;10950:19;;11654:65:0;10569:406:1;11654:65:0;-1:-1:-1;;;;;11739:17:0;;;;;;:11;:17;;;;;;;;11738:18;11730:111;;;;-1:-1:-1;;;11730:111:0;;11182:2:1;11730:111:0;;;11164:21:1;11221:2;11201:18;;;11194:30;11260:34;11240:18;;;11233:62;11331:34;11311:18;;;11304:62;-1:-1:-1;;;11382:19:1;;;11375:47;11439:19;;11730:111:0;10980:484:1;11730:111:0;-1:-1:-1;;;;;11870:21:0;;11854:13;11870:21;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;11895:19:0;;;;;;:15;:19;;;;;;;;11870:44;11933:7;;11854:60;;-1:-1:-1;;;;;;11933:7:0;:21;;;:33;;;11958:8;11933:33;11925:77;;;;-1:-1:-1;;;11925:77:0;;11671:2:1;11925:77:0;;;11653:21:1;11710:2;11690:18;;;11683:30;11749:33;11729:18;;;11722:61;11800:18;;11925:77:0;11469:355:1;11925:77:0;12035:7;;-1:-1:-1;;;;;12035:7:0;;;12029:13;;;;;;12066:15;;;;;12099;;;12108:6;12099:15;12098:36;;;;;12133:1;12119:11;;:15;12098:36;:49;;;;;12139:8;12138:9;12098:49;12094:169;;;12180:11;;12170:6;:21;;12162:101;;;;-1:-1:-1;;;12162:101:0;;12031:2:1;12162:101:0;;;12013:21:1;12070:2;12050:18;;;12043:30;12109:34;12089:18;;;12082:62;12180:34;12160:18;;;12153:62;-1:-1:-1;;;12231:19:1;;;12224:34;12275:19;;12162:101:0;11829:471:1;12162:101:0;12281:6;12280:7;:26;;;;;12305:1;12291:11;;:15;12280:26;:39;;;;;12311:8;12310:9;12280:39;12276:176;;;12368:11;;12358:6;12342:13;12352:2;-1:-1:-1;;;;;2270:18:0;2253:7;2270:18;;;;;;;;;;;;2179:111;12342:13;:22;;;;:::i;:::-;:37;;12334:118;;;;-1:-1:-1;;;12334:118:0;;12507:2:1;12334:118:0;;;12489:21:1;12546:2;12526:18;;;12519:30;;;12585:34;12565:18;;;12558:62;12656:34;12636:18;;;12629:62;-1:-1:-1;;;12707:19:1;;;12700:35;12752:19;;12334:118:0;12305:472:1;12334:118:0;12509:18;;12499:4;2253:7;2270:18;;;;;;;;;;;12481:46;;:69;;;;-1:-1:-1;12543:7:0;;;;12542:8;12481:69;:90;;;;;12565:6;12481:90;:114;;;;;12587:8;12586:9;12481:114;:140;;;;;12599:22;12614:6;12599:14;:22::i;:::-;12465:269;;;12648:7;:14;;-1:-1:-1;;12648:14:0;12658:4;12648:14;;;12677:15;:13;:15::i;:::-;12707:7;:15;;-1:-1:-1;;12707:15:0;;;12465:269;12746:11;12760:5;:24;;12777:7;;12760:24;;;12768:6;;12760:24;12746:38;-1:-1:-1;12801:7:0;;12797:305;;12830:8;12829:9;:21;;;;-1:-1:-1;12843:7:0;;;;12842:8;12829:21;:42;;;;;12855:5;:15;;;;12864:6;12855:15;12825:266;;;12892:12;12907:24;12927:3;12907:15;:6;12918:3;12907:10;:15::i;:24::-;12892:39;-1:-1:-1;12956:8:0;;12952:77;;12987:42;13003:4;13017;13024;12987:15;:42::i;:::-;13059:16;:6;13070:4;13059:10;:16::i;:::-;13050:25;;12873:218;12825:266;13114:33;13130:4;13136:2;13140:6;13114:15;:33::i;:::-;11477:1678;;;;11364:1791;;;:::o;7703:199::-;7798:6;;;-1:-1:-1;;;;;7817:17:0;;;-1:-1:-1;;;;;;7817:17:0;;;;;;;7852:40;;7798:6;;;7817:17;7798:6;;7852:40;;7779:16;;7852:40;7766:136;7703:199;:::o;8163:102::-;8221:7;8250:5;8254:1;8250;:5;:::i;:::-;8243:12;8163:102;-1:-1:-1;;;8163:102:0:o;8275:::-;8333:7;8362:5;8366:1;8362;:5;:::i;13163:201::-;13220:4;13255:15;;13274:1;13255:20;:63;;13303:15;;13282:18;;:36;;;;:::i;:::-;13255:63;;;13278:1;13255:63;13244:6;:75;;:110;;;;-1:-1:-1;13335:12:0;13323:25;;;;:11;:25;;;;;:27;;13353:1;;13323:27;;:25;:27;;;:::i;:::-;;;;;:31;13237:117;13163:201;-1:-1:-1;;13163:201:0:o;13372:1008::-;13460:4;13416:23;2270:18;;;;;;;;;;;;13481:20;;;13477:33;;13503:7;13372:1008::o;13477:33::-;13542:18;;13524:15;:36;13520:78;;;-1:-1:-1;13580:18:0;;13520:78;13690:16;;;13704:1;13690:16;;;;;;;;13632:21;;13611:18;;13690:16;13704:1;13690:16;;;;;;;;;;-1:-1:-1;13690:16:0;13666:40;;13735:4;13717;13722:1;13717:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13717:23:0;;;-1:-1:-1;;;;;13717:23:0;;;;;9964:42;-1:-1:-1;;;;;13761:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13751:4;13756:1;13751:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;13751:24:0;;;-1:-1:-1;;;;;13751:24:0;;;;;13788:58;13805:4;9964:42;13830:15;13788:8;:58::i;:::-;13859:192;;-1:-1:-1;;;13859:192:0;;9964:42;;13859:58;;:192;;13932:15;;13962:1;;13978:4;;14005;;14025:15;;13859:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14064:14;14081:37;14107:10;14081:21;:25;;:37;;;;:::i;:::-;14064:54;-1:-1:-1;14129:16:0;14148:22;14166:3;14148:13;14064:54;14159:1;14148:10;:13::i;:22::-;14129:41;-1:-1:-1;14192:20:0;:6;14129:41;14192:10;:20::i;:::-;14223:33;;14183:29;;-1:-1:-1;;;;;;14231:7:0;14223:25;;:33;;;;;14183:29;;14223:33;;;;14183:29;14223:25;:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14267:70:0;;14275:42;;14267:70;;;;;14328:8;;14267:70;;;;14328:8;14275:42;14267:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14355:17:0;;14363:8;;14355:17;;;;;13405:975;;;;;13372:1008::o;3940:703::-;-1:-1:-1;;;;;4081:18:0;;4073:68;;;;-1:-1:-1;;;4073:68:0;;14747:2:1;4073:68:0;;;14729:21:1;14786:2;14766:18;;;14759:30;14825:34;14805:18;;;14798:62;-1:-1:-1;;;14876:18:1;;;14869:35;14921:19;;4073:68:0;14545:401:1;4073:68:0;-1:-1:-1;;;;;4162:16:0;;4154:64;;;;-1:-1:-1;;;4154:64:0;;15153:2:1;4154:64:0;;;15135:21:1;15192:2;15172:18;;;15165:30;15231:34;15211:18;;;15204:62;-1:-1:-1;;;15282:18:1;;;15275:33;15325:19;;4154:64:0;14951:399:1;4154:64:0;-1:-1:-1;;;;;4308:15:0;;4286:19;4308:15;;;;;;;;;;;4344:21;;;;4336:72;;;;-1:-1:-1;;;4336:72:0;;15557:2:1;4336:72:0;;;15539:21:1;15596:2;15576:18;;;15569:30;15635:34;15615:18;;;15608:62;-1:-1:-1;;;15686:18:1;;;15679:36;15732:19;;4336:72:0;15355:402:1;4336:72:0;-1:-1:-1;;;;;4448:15:0;;;:9;:15;;;;;;;;;;;4466:20;;;4448:38;;4512:13;;;;;;;;:23;;4480:6;;4448:9;4512:23;;4480:6;;4512:23;:::i;:::-;;;;;;;;4570:2;-1:-1:-1;;;;;4555:26:0;4564:4;-1:-1:-1;;;;;4555:26:0;;4574:6;4555:26;;;;1283:25:1;;1271:2;1256:18;;1137:177;4555:26:0;;;;;;;;4596:37;6594:133;8051:102;8109:7;8138:5;8142:1;8138;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:508::-;1396:6;1404;1412;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;1520:9;1507:23;1539:31;1564:5;1539:31;:::i;:::-;1589:5;-1:-1:-1;1646:2:1;1631:18;;1618:32;1659:33;1618:32;1659:33;:::i;:::-;1319:508;;1711:7;;-1:-1:-1;;;1791:2:1;1776:18;;;;1763:32;;1319:508::o;2229:260::-;2301:6;2354:2;2342:9;2333:7;2329:23;2325:32;2322:52;;;2370:1;2367;2360:12;2322:52;2409:9;2396:23;2428:31;2453:5;2428:31;:::i;2746:346::-;2814:6;2822;2875:2;2863:9;2854:7;2850:23;2846:32;2843:52;;;2891:1;2888;2881:12;2843:52;-1:-1:-1;;2936:23:1;;;3056:2;3041:18;;;3028:32;;-1:-1:-1;2746:346:1:o;3097:118::-;3183:5;3176:13;3169:21;3162:5;3159:32;3149:60;;3205:1;3202;3195:12;3220:382;3285:6;3293;3346:2;3334:9;3325:7;3321:23;3317:32;3314:52;;;3362:1;3359;3352:12;3314:52;3401:9;3388:23;3420:31;3445:5;3420:31;:::i;:::-;3470:5;-1:-1:-1;3527:2:1;3512:18;;3499:32;3540:30;3499:32;3540:30;:::i;:::-;3589:7;3579:17;;;3220:382;;;;;:::o;3607:388::-;3675:6;3683;3736:2;3724:9;3715:7;3711:23;3707:32;3704:52;;;3752:1;3749;3742:12;3704:52;3791:9;3778:23;3810:31;3835:5;3810:31;:::i;:::-;3860:5;-1:-1:-1;3917:2:1;3902:18;;3889:32;3930:33;3889:32;3930:33;:::i;4000:226::-;4059:6;4112:2;4100:9;4091:7;4087:23;4083:32;4080:52;;;4128:1;4125;4118:12;4080:52;-1:-1:-1;4173:23:1;;4000:226;-1:-1:-1;4000:226:1:o;4231:356::-;4433:2;4415:21;;;4452:18;;;4445:30;4511:34;4506:2;4491:18;;4484:62;4578:2;4563:18;;4231:356::o;4592:251::-;4662:6;4715:2;4703:9;4694:7;4690:23;4686:32;4683:52;;;4731:1;4728;4721:12;4683:52;4763:9;4757:16;4782:31;4807:5;4782:31;:::i;5153:380::-;5232:1;5228:12;;;;5275;;;5296:61;;5350:4;5342:6;5338:17;5328:27;;5296:61;5403:2;5395:6;5392:14;5372:18;5369:38;5366:161;;5449:10;5444:3;5440:20;5437:1;5430:31;5484:4;5481:1;5474:15;5512:4;5509:1;5502:15;5366:161;;5153:380;;;:::o;5538:127::-;5599:10;5594:3;5590:20;5587:1;5580:31;5630:4;5627:1;5620:15;5654:4;5651:1;5644:15;5670:125;5735:9;;;5756:10;;;5753:36;;;5769:18;;:::i;5800:184::-;5870:6;5923:2;5911:9;5902:7;5898:23;5894:32;5891:52;;;5939:1;5936;5929:12;5891:52;-1:-1:-1;5962:16:1;;5800:184;-1:-1:-1;5800:184:1:o;6268:245::-;6335:6;6388:2;6376:9;6367:7;6363:23;6359:32;6356:52;;;6404:1;6401;6394:12;6356:52;6436:9;6430:16;6455:28;6477:5;6455:28;:::i;12782:168::-;12855:9;;;12886;;12903:15;;;12897:22;;12883:37;12873:71;;12924:18;;:::i;12955:217::-;12995:1;13021;13011:132;;13065:10;13060:3;13056:20;13053:1;13046:31;13100:4;13097:1;13090:15;13128:4;13125:1;13118:15;13011:132;-1:-1:-1;13157:9:1;;12955:217::o;13177:135::-;13216:3;13237:17;;;13234:43;;13257:18;;:::i;:::-;-1:-1:-1;13304:1:1;13293:13;;13177:135::o;13449:127::-;13510:10;13505:3;13501:20;13498:1;13491:31;13541:4;13538:1;13531:15;13565:4;13562:1;13555:15;13581:959;13843:4;13891:3;13880:9;13876:19;13922:6;13911:9;13904:25;13965:6;13960:2;13949:9;13945:18;13938:34;14008:3;14003:2;13992:9;13988:18;13981:31;14032:6;14067;14061:13;14098:6;14090;14083:22;14136:3;14125:9;14121:19;14114:26;;14175:2;14167:6;14163:15;14149:29;;14196:1;14206:195;14220:6;14217:1;14214:13;14206:195;;;14285:13;;-1:-1:-1;;;;;14281:39:1;14269:52;;14350:2;14376:15;;;;14341:12;;;;14317:1;14235:9;14206:195;;;-1:-1:-1;;;;;;;14457:32:1;;;;14452:2;14437:18;;14430:60;-1:-1:-1;;14521:3:1;14506:19;14499:35;14418:3;13581:959;-1:-1:-1;;;13581:959:1:o;15762:128::-;15829:9;;;15850:11;;;15847:37;;;15864:18;;:::i

Swarm Source

ipfs://f99c6098fb3e0e554da351446c57c54221be6be9fc83f1abbac83aa1aa14da65
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.