Contract 0x66aAA2cC3Ce7551bE9D73bD0d892746A112eA9E2

 
 
Txn Hash
Method
Block
From
To
Value
0xc017a074306fad8b492e92e217885a5757c20803e9ebf20edb5feef49db8dcdaApprove156577722022-10-02 3:28:4768 days 7 hrs ago0x8bf06eb666f62d75559bec21d4afd3fbd3b1dfa3 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.000121295
0x1e73ca2e56f02ca2ebdefd5c189dba5971703afddaf3a9f69e2cca8d5844a96dApprove155983292022-09-23 20:07:1176 days 14 hrs ago0x8c2e6df53dbaf7ef6ce1fbea77d10e185656d03f IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00034635 7.44156366
0x5a6d11d55d5d8b1a27bc59beede70b3509b0bce3b4db1612fe7234429d3a8f96Approve155975172022-09-23 17:24:3576 days 17 hrs ago0x8c2e6df53dbaf7ef6ce1fbea77d10e185656d03f IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.0009308620
0xb5907753723a496260e86962ef2e430e73ec7e603bb12d7b954a8b9cf050ad64Approve155807602022-09-21 9:04:4779 days 1 hr ago0xb1c7f006fc3da5252a28f5fcddca4e7a6d944272 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00010666 2.29166461
0x9fa195c55768931b1f9454540b44a3c61abe7b85b432a47b436e65574e89fee8Approve155672012022-09-19 11:14:5980 days 23 hrs ago0xe17512afcbce3f2bf50542aa819ef728b4eea218 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00019121 4.1082727
0x9218fad6173a5795e6b0ea398ec02477f5c4ecfece343df132e85e7549742edbApprove155670752022-09-19 10:49:3580 days 23 hrs ago0x5c8da5c50bae1856d03aba6a05758ad8f3c3759f IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00019184 4.12188555
0xf0d6cf1bce79aed62dbea9db92fdcdf62591829266f988b843a01ff0590de98fApprove155602902022-09-18 11:59:1181 days 22 hrs agoENS Name reyherphoto.eth IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00020391 4.38130899
0xcc1283593534f138b738543d02eb5aa94ea0609574567263a26e7b3c5c16aba9Approve155537592022-09-17 14:00:4782 days 20 hrs ago0x416a63b1b502017a28de9d56b8dbf461417b3224 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00028227 6.06485841
0x3b110bb1a622bd0c062664a173fe3a80dcbb78944bde61a29d3487b4ccc1b1c3Approve155498572022-09-17 0:52:4783 days 9 hrs ago0x5215a8f363fc98d7967534799d54088ad8c8ddc3 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00021271 4.5701989
0x007abdf906751f2ebd1cdbab7c19ac719a1b098056c56b3408ad2d8bd5eb83a3Approve155469252022-09-16 14:59:5983 days 19 hrs ago0x507bb483a134d2b9b3f4a184b9ca32268036760c IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00049584 10.65338053
0x0728c306d8c5e1c0fac2f2e863d3ee680378c43d3bd358efd46caf1633039813Approve155467352022-09-16 14:21:3583 days 20 hrs agoENS Name *🤡🤡🤡666.eth IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00078639 16.89616873
0xc6d4d1e20690fb1847f51b96c30ca3e7d2101f9689d4f26b8941e72e3c1c66f2Approve155466412022-09-16 14:02:2383 days 20 hrs ago0x53270c6d366d826726c507ffad56cd992b5e365e IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00135589 29.13201712
0x0eb5c27db73e4f0b970899c3c285603cdd6acef0cbffab2bae93a2b71fe26806Approve155456412022-09-16 10:39:2383 days 23 hrs ago0x81f070189b29176f6c1b1a8f069362d58640aaab IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00030484 6.54980474
0x94bfda4642ced24377ae017ec3aaaffeb2e88d7c324c66a5bc7adff2e48cb4ccApprove155446312022-09-16 7:13:5984 days 3 hrs ago0xc2d2e9fe3246a671b18496a40cf9305392a189df IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00027925 6
0x80e714630a8c1df9bb79112ddab8fbc303141f6920d729d49b0dd2c6094df04aApprove155445452022-09-16 6:55:3584 days 3 hrs ago0x4b92a9982d236db1bf86bccf6b9b486c27ab830e IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00033542 7.20676963
0x780e93c3ef8d322b0a4a873ef2ac69236ce1694b3d2a30fae374f95bccb0e566Approve155444922022-09-16 6:44:2384 days 3 hrs ago0x8e6ae2df89239b87d81a9706227d29e0f50771ac IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00021197 4.55428348
0xb2426ddf1514e1bfee8d5cd36d539b93e7e80c6103095bea8617bdff1db98a50Approve155431212022-09-16 2:06:3584 days 8 hrs ago0x7e9ad2adef17028db0ca07d2afd5d42ce424fc91 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00087622 18.82617391
0x7da4e4be090ce11a559b110d95a2689a3b8ed323b44b17ac28155d7523663394Approve155430872022-09-16 1:59:3584 days 8 hrs ago0x218497ad97886ad4c0bc8af4cc484508245dd8f2 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00032587
0x7a9f7e0c5f53477976df9dadb8400945ef6b32421c4cf6416c27c10e614dd187Approve155425332022-09-16 0:05:5984 days 10 hrs ago0x4e286c73c5b708bb4c8a28e37844f8615ace7b60 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00048479 10.41616561
0xfacbdc8898b4090a8d558904e34ca6d15e88bb0f150c4320419143283c23a1bbApprove155422532022-09-15 23:08:1184 days 11 hrs ago0x45ce528081d4189e2437ed6d705b6e9a6a3dd058 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00037314 8.01716665
0x9d3c004fb9c0236559f4ec8b42b44f80dd9c8240d02cf9158ba097a91119e69bApprove155421922022-09-15 22:55:4784 days 11 hrs ago0xb30f2b803179778177cc3ec6f25cbfbd95a07623 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.0006233 13.39207237
0xa9625f28627f42151c9dfd2602cc0698e688a1262392192989efb717e039f11fApprove155415202022-09-15 20:39:2384 days 13 hrs ago0x3c95f6ea79f133e2096b72c612190883a1677441 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.000505 10.85036577
0x4b725731465c82d848f6272de75eea740b34dc5acdd3885fca5ab24d872e39e1Approve155415032022-09-15 20:35:4784 days 13 hrs ago0x68eb623a3987a92a7cb428a197339a9b24f191c3 IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00056271 12.09028171
0xbc6f7bebfa1f754aa66b1c7f2dcd0ecaa30606547d6ac23f2c961cb41bd08cecApprove155412972022-09-15 19:54:1184 days 14 hrs ago0xbf30b9caeae5fea072e725441245140793366f7f IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.0005184 11.13809801
0xaff9be615eacb85946afe9cd018a466cf83f1498725cf13b04951d83cdeea47cApprove155409552022-09-15 18:45:1184 days 15 hrs ago0x602f51dcbeda58dc247fe73f1800d3e4fc2115bb IN  0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20 Ether0.00054841 11.7830642
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x456b8cab425644e16df8925a9849ffb4a8dc95851e8ce92eb0f65c0b78254fde155361012022-09-15 1:19:1385 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.13531197 Ether
0x456b8cab425644e16df8925a9849ffb4a8dc95851e8ce92eb0f65c0b78254fde155361012022-09-15 1:19:1385 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.13531197 Ether
0x10ada30b9775c4f82dbb065023eb6cff4fd1265382c89588b2da7a8a02440211155360942022-09-15 1:18:0285 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.00974655 Ether
0x10ada30b9775c4f82dbb065023eb6cff4fd1265382c89588b2da7a8a02440211155360942022-09-15 1:18:0285 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.00974655 Ether
0xa76b33807c530fbe252574f277eb2c0a4b5d5978d23494186e36e4aecc04c1a5155360922022-09-15 1:17:4585 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.00545907 Ether
0xa76b33807c530fbe252574f277eb2c0a4b5d5978d23494186e36e4aecc04c1a5155360922022-09-15 1:17:4585 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.00545907 Ether
0xde36d033af0b8fabdb3ef822fad5b6f7d420d1564e8c097e147317cd5cc1bb9d155360912022-09-15 1:17:3985 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.00570805 Ether
0xde36d033af0b8fabdb3ef822fad5b6f7d420d1564e8c097e147317cd5cc1bb9d155360912022-09-15 1:17:3985 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.00570805 Ether
0x1048577356b49186e570556ec02f68c469493989d84ca11d96dce2bc75a2e969155360912022-09-15 1:17:3985 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.0055826 Ether
0x1048577356b49186e570556ec02f68c469493989d84ca11d96dce2bc75a2e969155360912022-09-15 1:17:3985 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.0055826 Ether
0x7423dd7a80e85f17d4c2f9d2976c47d12c7363976af992491fc12d0759e99abb155360912022-09-15 1:17:3985 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.07154163 Ether
0x7423dd7a80e85f17d4c2f9d2976c47d12c7363976af992491fc12d0759e99abb155360912022-09-15 1:17:3985 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.07154163 Ether
0x323946e42065049c21ccb81ef017b35846f29de2768bd8b14e0e135e8494e38c155360882022-09-15 1:15:0885 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.10029565 Ether
0x323946e42065049c21ccb81ef017b35846f29de2768bd8b14e0e135e8494e38c155360882022-09-15 1:15:0885 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.10029565 Ether
0x122f8b5a9c6a882f853f4a2dc80bd198ce2308d8b48da2f154ffb404f3c79909155360872022-09-15 1:15:0085 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.09995544 Ether
0x122f8b5a9c6a882f853f4a2dc80bd198ce2308d8b48da2f154ffb404f3c79909155360872022-09-15 1:15:0085 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.09995544 Ether
0xff92c463cf52741bd77e1f228c508427ae132f8274d6a3f03118528f0669dc6b155360812022-09-15 1:13:5885 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.04485399 Ether
0xff92c463cf52741bd77e1f228c508427ae132f8274d6a3f03118528f0669dc6b155360812022-09-15 1:13:5885 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.04485399 Ether
0xaa9c001a470450714668ffb7a26e0ba68407af52f1b8409b2d8200ed564f0e13155360812022-09-15 1:13:5885 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.00460556 Ether
0xaa9c001a470450714668ffb7a26e0ba68407af52f1b8409b2d8200ed564f0e13155360812022-09-15 1:13:5885 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.00460556 Ether
0xaea14cc3d9772d3efced8a29cbff6a7b5de66b246b21ed787f86b5053cd507fb155360812022-09-15 1:13:5885 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.11670838 Ether
0xaea14cc3d9772d3efced8a29cbff6a7b5de66b246b21ed787f86b5053cd507fb155360812022-09-15 1:13:5885 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.11670838 Ether
0x95f198381a90c912b7400151d547bba44ed62f3cd2edbbe29d73cbe83a5876f7155360802022-09-15 1:13:4385 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.06668689 Ether
0x95f198381a90c912b7400151d547bba44ed62f3cd2edbbe29d73cbe83a5876f7155360802022-09-15 1:13:4385 days 9 hrs ago Uniswap V2: Router 2 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20.06668689 Ether
0xab6795941052a9acf4d993be826812e696c944776c8b67339676c34f0d68b138155360802022-09-15 1:13:4385 days 9 hrs ago 0x66aaa2cc3ce7551be9d73bd0d892746a112ea9e20xbdf95ec99a37f10f65d63cce6f2bae4130a1b5140.00716867 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KENISHI

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-15
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
contract ERC20Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "ERC20Ownable: 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), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    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 mod(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;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}
interface IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }
    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint256);
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

contract KENISHI is Context, IERC20, ERC20Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private constant tokenName = "KENISHI";
    string private constant tokenSymbol = "KENISHI";
    uint8 private constant tokenDecimal = 18;
    uint256 private constant tokenSupply = 100e12 * 10**tokenDecimal;

    mapping(address => mapping(address => uint256)) private tokenAllowances;
    mapping(address => uint256) private tokenBalance;
    mapping(address => bool) private isContractsExcluded;
    mapping(address => bool) private isMaxWalletExcluded;
    mapping(address => bool) private isTaxExcluded;
    mapping(address => bool) public isSniper;
    mapping(address => bool) public isBot;

    address payable liquidityAddress;
    address payable marketingAddress;
    address payable devAddress;
    address dead = address(0xdead);
    address public uniV2Pair;
    IUniswapV2Router02 public uniV2Router;
    address public uniV3Router;
    
    uint256 private maxWallet;
    uint256 private minTaxSwap;
    uint256 private marketingTokens;
    uint256 private liquidityTokens;
	uint256 private totalBurnedTokens;

    uint256 private marketingTax;
    uint256 private liquidityTax;
    uint256 private divForSplitTax;
    uint256 private taxBuyMarketing;
    uint256 private taxBuyLiquidity;
    uint256 private taxSellMarketing;
    uint256 private taxSellTreasury;
    uint256 private taxSellLiquidity;

    uint256 public activeTradingBlock;
    uint256 public sniperPenaltyEnd;

    bool public limitsOn = false;
    bool public maxWalletOn = false;
    bool public live = false;
    bool public contractBlocker = false;
    bool inSwapAndLiquify;
    bool private swapAndLiquifyStatus = false;
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor() payable {
        tokenBalance[address(this)] = tokenSupply;
        maxWallet = tokenSupply.mul(4).div(100);
        minTaxSwap = tokenSupply.mul(5).div(10000);

        marketingAddress = payable(0xBDF95Ec99A37F10F65d63Cce6f2bAe4130a1b514);
        devAddress = payable(0xBDF95Ec99A37F10F65d63Cce6f2bAe4130a1b514);

        liquidityAddress = payable(owner()); //LEAVE AS OWNER

        taxBuyMarketing = 20;
        taxBuyLiquidity = 0;
        taxSellMarketing = 20;
        taxSellLiquidity = 0;

        isContractsExcluded[address(this)] = true;
        isTaxExcluded[owner()] = true;
        isTaxExcluded[dead] = true;
        isTaxExcluded[address(this)] = true;
        isTaxExcluded[marketingAddress] = true;
        isTaxExcluded[liquidityAddress] = true;
        isMaxWalletExcluded[address(this)] = true;
        isMaxWalletExcluded[owner()] = true;
        isMaxWalletExcluded[marketingAddress] = true;
        isMaxWalletExcluded[liquidityAddress] = true;
        isMaxWalletExcluded[dead] = true;
        
        emit Transfer(address(0), address(this), tokenSupply);
    }
    receive() external payable {}
    function name() external pure override returns (string memory) {
        return tokenName;
    }
    function symbol() external pure override returns (string memory) {
        return tokenSymbol;
    }
    function decimals() external pure override returns (uint8) {
        return tokenDecimal;
    }
    function totalSupply() external pure override returns (uint256) {
        return tokenSupply;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return tokenBalance[account];
    }
    function allowance(address owner, address spender) external view override returns (uint256) {
        return tokenAllowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        require(_msgSender() != address(0), "ERC20: Can not approve from zero address");
        require(spender != address(0), "ERC20: Can not approve to zero address");
        tokenAllowances[_msgSender()][spender] = amount;
        emit Approval(_msgSender(), spender, amount);
        return true;
    }
    function internalApprove(address owner,address spender,uint256 amount) internal {
        require(owner != address(0), "ERC20: Can not approve from zero address");
        require(spender != address(0), "ERC20: Can not approve to zero address");
        tokenAllowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        internalTransfer(_msgSender(), recipient, amount);
        return true;
    }
    function transferFrom(address sender,address recipient,uint256 amount) external override returns (bool) {
        internalTransfer(sender, recipient, amount);
        internalApprove(sender,_msgSender(),
        tokenAllowances[sender][_msgSender()].sub(amount, "ERC20: Can not transfer. Amount exceeds allowance"));
        return true;
    }
    function AirDrop(address[] memory wallets, uint256[] memory percent) external onlyOwner{
        require(wallets.length < 100, "Can only airdrop 100 wallets per txn due to gas limits");
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = tokenSupply.mul(percent[i]).div(100);
            internalTransfer(_msgSender(), wallet, amount);
        }
    }
    function GoLive() external onlyOwner returns (bool){
        require(!live, "ERC20: Trades already Live!");
        activeTradingBlock = block.number;
        sniperPenaltyEnd = block.timestamp.add(2 days);
        IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniV2Router = _uniV2Router;
        uniV3Router = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45;
        isContractsExcluded[address(uniV2Router)] = true;
        isContractsExcluded[address(uniV3Router)] = true;
        isMaxWalletExcluded[address(uniV2Router)] = true;
        internalApprove(address(this), address(uniV2Router), tokenSupply);
        uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).createPair(address(this), _uniV2Router.WETH());
        isContractsExcluded[address(uniV2Pair)] = true;
        isMaxWalletExcluded[address(uniV2Pair)] = true;
        require(address(this).balance > 0, "ERC20: Must have ETH on contract to Go Live!");
        addLiquidity(balanceOf(address(this)), address(this).balance);
        launchSetLiquidityAddress(dead);
        maxWalletOn = true;
        swapAndLiquifyStatus = true;
        limitsOn = true;
        live = true;
        return true;
    }
    function internalTransfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: Transfer amount must be greater than zero");
        require(!isBot[from], "ERC20: Can not transfer from BOT");
        if(!live){
            require(isTaxExcluded[from] || isTaxExcluded[to], "ERC20: Trading Is Not Live!");
        }
        if (maxWalletOn == true && ! isMaxWalletExcluded[to]) {
            require(balanceOf(to).add(amount) <= maxWallet, "ERC20: Max amount of tokens for wallet reached");
        }
        if(limitsOn){
            if (from != owner() && to != owner() && to != address(0) && to != dead && to != uniV2Pair) {
                for (uint x = 0; x < 1; x++) {
                    if(block.number == activeTradingBlock.add(x)) {
                        isSniper[to] = true;
                    }
                }
            }
        }
        if(contractBlocker) {
            require(
                !isContract(to) && isContractsExcluded[from] ||
                !isContract(from) && isContractsExcluded[to] || 
                isContract(from) && isContractsExcluded[to] || 
                isContract(to) && isContractsExcluded[from]
                );
        }
        uint256 totalTokensToSwap = liquidityTokens.add(marketingTokens);
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= minTaxSwap;
        if (!inSwapAndLiquify && swapAndLiquifyStatus && balanceOf(uniV2Pair) > 0 && totalTokensToSwap > 0 && !isTaxExcluded[to] && !isTaxExcluded[from] && to == uniV2Pair && overMinimumTokenBalance) {
            taxTokenSwap();
            }
        if (isTaxExcluded[from] || isTaxExcluded[to]) {
            marketingTax = 0;
            liquidityTax = 0;
            divForSplitTax = marketingTax.add(liquidityTax);
        } else {
            if (from == uniV2Pair) {
                marketingTax = taxBuyMarketing;
                liquidityTax = taxBuyLiquidity;
                divForSplitTax = taxBuyMarketing.add(taxBuyLiquidity);
            }else if (to == uniV2Pair) {
                marketingTax = taxSellMarketing;
                liquidityTax = taxSellLiquidity;
                divForSplitTax = taxSellMarketing.add(taxSellLiquidity);
                if(isSniper[from] && sniperPenaltyEnd >= block.timestamp){
                    marketingTax = 85;
                    liquidityTax = 10;
                    divForSplitTax = marketingTax.add(liquidityTax);
                }
            }else {
                require(!isSniper[from] || sniperPenaltyEnd <= block.timestamp, "ERC20: Snipers can not transfer till penalty time is over");
                marketingTax = 0;
                liquidityTax = 0;
            }
        }
        tokenTransfer(from, to, amount);
    }
    function taxTokenSwap() internal lockTheSwap {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = marketingTokens.add(liquidityTokens);
        uint256 swapLiquidityTokens = liquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(swapLiquidityTokens);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForETH(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForMarketing = ethBalance.mul(marketingTokens).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance.sub(ethForMarketing);
        marketingTokens = 0;
        liquidityTokens = 0;
        (bool success,) = address(marketingAddress).call{value: ethForMarketing}("");
        if(ethForLiquidity != 0 && swapLiquidityTokens != 0) {
            addLiquidity(swapLiquidityTokens, ethForLiquidity);
        }
        if(address(this).balance > 5 * 1e17){
            (success,) = address(devAddress).call{value: address(this).balance}("");
        }
    }
    function swapTokensForETH(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniV2Router.WETH();
        internalApprove(address(this), address(uniV2Router), tokenAmount);
        uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        internalApprove(address(this), address(uniV2Router), tokenAmount);
        uniV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityAddress,
            block.timestamp
        );
    }
    function calculateTax(uint256 amount) internal view returns (uint256) {
        return amount.mul(marketingTax.add(liquidityTax)).div(100);
    }
    function splitTaxTokens(uint256 taxTokens) internal {
        marketingTokens += taxTokens.mul(marketingTax).div(divForSplitTax);
        liquidityTokens += taxTokens.mul(liquidityTax).div(divForSplitTax);
    }
    function tokenTransfer(address sender,address recipient,uint256 amount) internal {
        if(divForSplitTax != 0){
            uint256 taxTokens = calculateTax(amount);
            uint256 transferTokens = amount.sub(taxTokens);
            splitTaxTokens(taxTokens);
            tokenBalance[sender] -= amount;
            tokenBalance[recipient] += transferTokens;
            tokenBalance[address(this)] += taxTokens;
            emit Transfer(sender, recipient, transferTokens);
        }else{
            tokenBalance[sender] -= amount;
            tokenBalance[recipient] += amount;
            emit Transfer(sender, recipient, amount);
        }
    }
    function launchSetLiquidityAddress(address LPAddress) internal {
        liquidityAddress = payable(LPAddress);
        isTaxExcluded[liquidityAddress] = true;
    }
    function isContract(address account) public view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }
    function addRemoveContract(address account, bool trueORfalse) external onlyOwner {
        isContractsExcluded[account] = trueORfalse;
    }
    function isExcludedContract(address account) public view returns (bool) {
        return isContractsExcluded[account];
    }
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(owner()).call{value: address(this).balance}("");
    }
    function withdrawStuckTokens(uint256 percent) external onlyOwner {
        internalTransfer(address(this), owner(), tokenSupply*percent/100);
    }
    function manualBurnTokensFromLP(uint256 percent) external onlyOwner returns (bool){
        require(percent <= 10, "ERC20: May not nuke more than 10% of tokens in LP");
        uint256 liquidityPairBalance = this.balanceOf(uniV2Pair);
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10**2);
        if (amountToBurn > 0){
            internalTransfer(uniV2Pair, dead, amountToBurn);
        }
        totalBurnedTokens = balanceOf(dead);
        require(totalBurnedTokens <= tokenSupply * 50 / 10**2, "ERC20: Can not burn more then 50% of supply");
        IUniswapV2Pair pair = IUniswapV2Pair(uniV2Pair);
        pair.sync();
        return true;
    }
    function manualSwapTax() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        require(contractBalance >= tokenSupply.mul(5).div(10000), "ERC20: Can only swap back if more than 0.05% of tokens stuck on contract");
        taxTokenSwap();
    }
    function addBot(address account) external onlyOwner {
        require(!isBot[account], "ERC20: Account already added");
        isBot[account] = true;
    }
	function removeBot(address account) external onlyOwner {
        require(isBot[account], "ERC20: Account is not bot");
        isBot[account] = false;
    }
	function removeSniper(address account) external onlyOwner {
        require(isSniper[account], "ERC20: Account is not sniper");
        isSniper[account] = false;
    }
    function setExcludedContractAccount(address account, bool trueORfalse) external onlyOwner {
        isContractsExcluded[address(account)] = trueORfalse;
    }
    function setExcludedFromTax(address account, bool trueORfalse) external onlyOwner {
        isTaxExcluded[address(account)] = trueORfalse;
    }
    function setExcludedFromMaxWallet(address account, bool trueORfalse) external onlyOwner {
        isMaxWalletExcluded[address(account)] = trueORfalse;
    }
    function setMaxWalletAmount(uint256 percent, uint256 divider) external onlyOwner {
        maxWallet = tokenSupply.mul(percent).div(divider);
        require(maxWallet <=tokenSupply.mul(4).div(100), "ERC20: Can not set max wallet more than 4%");
    }
    function setStatusLimits(bool trueORfalse) external onlyOwner {
        limitsOn = trueORfalse;
    }
    function setStatusMaxWallet(bool trueORfalse) external onlyOwner {
       maxWalletOn = trueORfalse;
    }
    function setStatusContractBlocker(bool trueORfalse) external onlyOwner {
        contractBlocker = trueORfalse;
    }
    function setSwapAndLiquifyStatus(bool trueORfalse) external onlyOwner {
        swapAndLiquifyStatus = trueORfalse;
    }
    function setTaxes(uint256 buyMarketingTax, uint256 buyLiquidityTax, uint256 sellMarketingTax, uint256 sellLiquidityTax) external onlyOwner {
        taxBuyMarketing = buyMarketingTax;
        taxBuyLiquidity = buyLiquidityTax;
        taxSellMarketing = sellMarketingTax;
        taxSellLiquidity = sellLiquidityTax;
    }
    function viewTaxes() public view returns(uint256 marketingBuy, uint256 liquidityBuy, uint256 marketingSell, uint256 liquiditySell) {
        return(taxBuyMarketing,taxBuyLiquidity,taxSellMarketing,taxSellLiquidity);
    }
}

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":"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":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"percent","type":"uint256[]"}],"name":"AirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GoLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activeTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"addRemoveContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBlocker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnTokensFromLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedContractAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divider","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusContractBlocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setSwapAndLiquifyStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperPenaltyEnd","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV3Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTaxes","outputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b80546001600160a01b03191661dead179055601e805465ff00ffffffff191690556000620000313390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000896012600a62000403565b6200009b90655af3107a400062000414565b30600090815260026020526040902055620000ff6064620000eb6004620000c56012600a62000403565b620000d790655af3107a400062000414565b620002cb60201b62001a3a1790919060201c565b620002e260201b62001a4d1790919060201c565b600f556200011d612710620000eb6005620000c56012600a62000403565b6010556009805473bdf95ec99a37f10f65d63cce6f2bae4130a1b5146001600160a01b03199182168117909255600a80549091169091179055620001696000546001600160a01b031690565b600880546001600160a01b0319166001600160a01b039283161781556014601781905560006018819055601991909155601b81905530808252600360209081526040808420805460ff199081166001908117909255855488168652600584528286208054821683179055600b80548916875283872080548316841790558587528387208054831684179055600980548a168852848820805484168517905588548a1688528488208054841685179055868852600490955283872080548316841790558654891687528387208054831684179055935488168652828620805482168317905595548716855281852080548716821790559154909516835293822080549093169093179091557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002a26012600a62000403565b620002b490655af3107a400062000414565b60405190815260200160405180910390a362000459565b6000620002d9828462000414565b90505b92915050565b6000620002d9828462000436565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003475781600019048211156200032b576200032b620002f0565b808516156200033957918102915b93841c93908002906200030b565b509250929050565b6000826200036057506001620002dc565b816200036f57506000620002dc565b81600181146200038857600281146200039357620003b3565b6001915050620002dc565b60ff841115620003a757620003a7620002f0565b50506001821b620002dc565b5060208310610133831016604e8410600b8410161715620003d8575081810a620002dc565b620003e4838362000306565b8060001904821115620003fb57620003fb620002f0565b029392505050565b6000620002d960ff8416836200034f565b6000816000190483118215151615620004315762000431620002f0565b500290565b6000826200045457634e487b7160e01b600052601260045260246000fd5b500490565b612ffe80620004696000396000f3fe6080604052600436106102765760003560e01c80637817be6c1161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107af578063f0c0cf87146107cf578063f2fde38b146107e5578063f35900d014610805578063f5648a4f14610825578063ffecf5161461083a57600080fd5b8063a73f9b58146106fe578063a9059cbb14610713578063c2ed286b14610733578063dd62ed3e14610753578063e4252ddf14610624578063ea090d971461079957600080fd5b8063957aa58c11610113578063957aa58c14610644578063958c2e521461066457806395d89b411461028257806396c9b44214610684578063a12a7d61146106a5578063a20d9615146106c557600080fd5b80637817be6c146105a65780638bcea939146105c65780638c714f80146105e65780638da5cb5b1461060657806391c09d1e1461062457600080fd5b80633b4e935a116101e85780635fafa589116101ac5780635fafa589146104da5780635fecd9261461051257806370a0823114610532578063715018a614610552578063745d032f1461056757806375d0cc431461058657600080fd5b80633b4e935a146104355780633bbac5791461044a578063412201041461047a57806351524e5b1461049a5780635e6710de146104ba57600080fd5b806318160ddd1161023a57806318160ddd1461037a578063186d260d1461039d5780631c42047a146103bf57806323b872dd146103d9578063313ce567146103f957806333251a0b1461041557600080fd5b806306fdde0314610282578063095ea7b3146102c15780630f3a325f146102f157806311abf53714610321578063162790551461035a57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5060408051808201825260078152664b454e4953484960c81b602082015290516102b891906128b3565b60405180910390f35b3480156102cd57600080fd5b506102e16102dc36600461291d565b61085a565b60405190151581526020016102b8565b3480156102fd57600080fd5b506102e161030c366004612949565b60066020526000908152604090205460ff1681565b34801561032d57600080fd5b50601754601854601954601b546040805194855260208501939093529183015260608201526080016102b8565b34801561036657600080fd5b506102e1610375366004612949565b61090d565b34801561038657600080fd5b5061038f610949565b6040519081526020016102b8565b3480156103a957600080fd5b506103bd6103b8366004612976565b61096c565b005b3480156103cb57600080fd5b50601e546102e19060ff1681565b3480156103e557600080fd5b506102e16103f4366004612991565b6109a9565b34801561040557600080fd5b50604051601281526020016102b8565b34801561042157600080fd5b506103bd610430366004612949565b610a12565b34801561044157600080fd5b506102e1610ac5565b34801561045657600080fd5b506102e1610465366004612949565b60076020526000908152604090205460ff1681565b34801561048657600080fd5b506103bd6104953660046129d2565b610eeb565b3480156104a657600080fd5b506103bd6104b5366004612add565b610f40565b3480156104c657600080fd5b506103bd6104d5366004612b9f565b611079565b3480156104e657600080fd5b50600e546104fa906001600160a01b031681565b6040516001600160a01b0390911681526020016102b8565b34801561051e57600080fd5b506103bd61052d366004612949565b6110f4565b34801561053e57600080fd5b5061038f61054d366004612949565b6111a7565b34801561055e57600080fd5b506103bd6111c2565b34801561057357600080fd5b50601e546102e190610100900460ff1681565b34801561059257600080fd5b506103bd6105a1366004612976565b611236565b3480156105b257600080fd5b506102e16105c1366004612b9f565b61127e565b3480156105d257600080fd5b50600c546104fa906001600160a01b031681565b3480156105f257600080fd5b506103bd610601366004612976565b6114e9565b34801561061257600080fd5b506000546001600160a01b03166104fa565b34801561063057600080fd5b506103bd61063f3660046129d2565b61152d565b34801561065057600080fd5b50601e546102e19062010000900460ff1681565b34801561067057600080fd5b50600d546104fa906001600160a01b031681565b34801561069057600080fd5b50601e546102e1906301000000900460ff1681565b3480156106b157600080fd5b506103bd6106c0366004612bb8565b611582565b3480156106d157600080fd5b506102e16106e0366004612949565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561070a57600080fd5b506103bd6115c0565b34801561071f57600080fd5b506102e161072e36600461291d565b61169c565b34801561073f57600080fd5b506103bd61074e3660046129d2565b6116b2565b34801561075f57600080fd5b5061038f61076e366004612bea565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107a557600080fd5b5061038f601c5481565b3480156107bb57600080fd5b506103bd6107ca366004612976565b611707565b3480156107db57600080fd5b5061038f601d5481565b3480156107f157600080fd5b506103bd610800366004612949565b611753565b34801561081157600080fd5b506103bd610820366004612c23565b611842565b34801561083157600080fd5b506103bd611901565b34801561084657600080fd5b506103bd610855366004612949565b611983565b6000336108825760405162461bcd60e51b815260040161087990612c45565b60405180910390fd5b6001600160a01b0383166108a85760405162461bcd60e51b815260040161087990612c8d565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061094157508115155b949350505050565b60006109576012600a612dcd565b61096790655af3107a4000612ddc565b905090565b6000546001600160a01b031633146109965760405162461bcd60e51b815260040161087990612dfb565b601e805460ff1916911515919091179055565b60006109b6848484611a59565b610a088433610a0385604051806060016040528060318152602001612f98603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121c8565b6121f4565b5060019392505050565b6000546001600160a01b03163314610a3c5760405162461bcd60e51b815260040161087990612dfb565b6001600160a01b03811660009081526006602052604090205460ff16610aa45760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e69706572000000006044820152606401610879565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610af05760405162461bcd60e51b815260040161087990612dfb565b601e5462010000900460ff1615610b495760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c6976652100000000006044820152606401610879565b43601c55610b5a426202a3006122a2565b601d55600d80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600e80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610c573082610c476012600a612dcd565b610a0390655af3107a4000612ddc565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9057600080fd5b505afa158015610ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc89190612e40565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1057600080fd5b505afa158015610d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d489190612e40565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610d9057600080fd5b505af1158015610da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc89190612e40565b600c80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610e815760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b6064820152608401610879565b610e93610e8d306111a7565b476122ae565b600b54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff191660011790555050601e805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610f155760405162461bcd60e51b815260040161087990612dfb565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f6a5760405162461bcd60e51b815260040161087990612dfb565b6064825110610fda5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610879565b60005b8251811015611074576000838281518110610ffa57610ffa612e5d565b602002602001015190506000611052606461104c86868151811061102057611020612e5d565b60200260200101516012600a6110369190612dcd565b61104690655af3107a4000612ddc565b90611a3a565b90611a4d565b905061105f338383611a59565b5050808061106c90612e73565b915050610fdd565b505050565b6000546001600160a01b031633146110a35760405162461bcd60e51b815260040161087990612dfb565b6110f1306110b96000546001600160a01b031690565b6064846110c86012600a612dcd565b6110d890655af3107a4000612ddc565b6110e29190612ddc565b6110ec9190612e8e565b611a59565b50565b6000546001600160a01b0316331461111e5760405162461bcd60e51b815260040161087990612dfb565b6001600160a01b03811660009081526007602052604090205460ff166111865760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f74000000000000006044820152606401610879565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b031633146111ec5760405162461bcd60e51b815260040161087990612dfb565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112605760405162461bcd60e51b815260040161087990612dfb565b601e805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b031633146112a95760405162461bcd60e51b815260040161087990612dfb565b600a8211156113145760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b6064820152608401610879565b600c546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b15801561135a57600080fd5b505afa15801561136e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113929190612eb0565b905060006113a5606461104c8487611a3a565b905080156113ca57600c54600b546113ca916001600160a01b03908116911683611a59565b600b546113df906001600160a01b03166111a7565b60135560646113f06012600a612dcd565b61140090655af3107a4000612ddc565b61140b906032612ddc565b6114159190612e8e565b601354111561147a5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b6064820152608401610879565b600c546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156114c457600080fd5b505af11580156114d8573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115135760405162461bcd60e51b815260040161087990612dfb565b601e80549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146115575760405162461bcd60e51b815260040161087990612dfb565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115ac5760405162461bcd60e51b815260040161087990612dfb565b601793909355601891909155601955601b55565b6000546001600160a01b031633146115ea5760405162461bcd60e51b815260040161087990612dfb565b60006115f5306111a7565b905061160e61271061104c60056110366012600a612dcd565b8110156116945760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a401610879565b6110f1612371565b60006116a9338484611a59565b50600192915050565b6000546001600160a01b031633146116dc5760405162461bcd60e51b815260040161087990612dfb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117315760405162461bcd60e51b815260040161087990612dfb565b601e8054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b0316331461177d5760405162461bcd60e51b815260040161087990612dfb565b6001600160a01b0381166117e75760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610879565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461186c5760405162461bcd60e51b815260040161087990612dfb565b6118808161104c846110366012600a612dcd565b600f55611899606461104c60046110366012600a612dcd565b600f5411156118fd5760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b6064820152608401610879565b5050565b6000546001600160a01b0316331461192b5760405162461bcd60e51b815260040161087990612dfb565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114611978576040519150601f19603f3d011682016040523d82523d6000602084013e61197d565b606091505b50505050565b6000546001600160a01b031633146119ad5760405162461bcd60e51b815260040161087990612dfb565b6001600160a01b03811660009081526007602052604090205460ff1615611a165760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c7265616479206164646564000000006044820152606401610879565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a468284612ddc565b9392505050565b6000611a468284612e8e565b6001600160a01b038316611abd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610879565b6001600160a01b038216611b1f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610879565b60008111611b885760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610879565b6001600160a01b03831660009081526007602052604090205460ff1615611bf15760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f546044820152606401610879565b601e5462010000900460ff16611c8c576001600160a01b03831660009081526005602052604090205460ff1680611c4057506001600160a01b03821660009081526005602052604090205460ff165b611c8c5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c6976652100000000006044820152606401610879565b601e5460ff6101009091041615156001148015611cc257506001600160a01b03821660009081526004602052604090205460ff16155b15611d4257600f54611cdd82611cd7856111a7565b906122a2565b1115611d425760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b6064820152608401610879565b601e5460ff1615611e1e576000546001600160a01b03848116911614801590611d7957506000546001600160a01b03838116911614155b8015611d8d57506001600160a01b03821615155b8015611da75750600b546001600160a01b03838116911614155b8015611dc15750600c546001600160a01b03838116911614155b15611e1e5760005b6001811015611e1c57601c54611ddf90826122a2565b431415611e0a576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e1481612e73565b915050611dc9565b505b601e546301000000900460ff1615611f0157611e398261090d565b158015611e5e57506001600160a01b03831660009081526003602052604090205460ff165b80611e925750611e6d8361090d565b158015611e9257506001600160a01b03821660009081526003602052604090205460ff165b80611ec55750611ea18361090d565b8015611ec557506001600160a01b03821660009081526003602052604090205460ff165b80611ef85750611ed48261090d565b8015611ef857506001600160a01b03831660009081526003602052604090205460ff165b611f0157600080fd5b6000611f1a6011546012546122a290919063ffffffff16565b90506000611f27306111a7565b601054601e5491925082101590640100000000900460ff16158015611f575750601e5465010000000000900460ff165b8015611f785750600c54600090611f76906001600160a01b03166111a7565b115b8015611f845750600083115b8015611fa957506001600160a01b03851660009081526005602052604090205460ff16155b8015611fce57506001600160a01b03861660009081526005602052604090205460ff16155b8015611fe75750600c546001600160a01b038681169116145b8015611ff05750805b15611ffd57611ffd612371565b6001600160a01b03861660009081526005602052604090205460ff168061203c57506001600160a01b03851660009081526005602052604090205460ff165b1561205f5760006014819055601581905561205790806122a2565b6016556121b5565b600c546001600160a01b038781169116141561208f576017546014819055601854601581905561205791906122a2565b600c546001600160a01b038681169116141561210e576019546014819055601b5460158190556120bf91906122a2565b6016556001600160a01b03861660009081526006602052604090205460ff1680156120ec575042601d5410155b156121095760556014819055600a601581905561205791906122a2565b6121b5565b6001600160a01b03861660009081526006602052604090205460ff161580612138575042601d5411155b6121aa5760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f766572000000000000006064820152608401610879565b600060148190556015555b6121c086868661251d565b505050505050565b600081848411156121ec5760405162461bcd60e51b815260040161087991906128b3565b505050900390565b6001600160a01b03831661221a5760405162461bcd60e51b815260040161087990612c45565b6001600160a01b0382166122405760405162461bcd60e51b815260040161087990612c8d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a468284612ec9565b600d546122c69030906001600160a01b0316846121f4565b600d5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561233157600080fd5b505af1158015612345573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061236a9190612ee1565b5050505050565b601e805464ff0000000019166401000000001790556000612391306111a7565b905060006123ac6012546011546122a290919063ffffffff16565b905060006123c66002601254611a4d90919063ffffffff16565b905060006123d484836126be565b9050476123e0826126ca565b60006123ec47836126be565b905060006124098661104c60115485611a3a90919063ffffffff16565b9050600061241783836126be565b60006011819055601281905560095460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114612474576040519150601f19603f3d011682016040523d82523d6000602084013e612479565b606091505b505090508160001415801561248d57508615155b1561249c5761249c87836122ae565b6706f05b59d3b2000047111561250457600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124f9576040519150601f19603f3d011682016040523d82523d6000602084013e6124fe565b606091505b50909150505b5050601e805464ff000000001916905550505050505050565b6016541561261d5760006125308261282b565b9050600061253e83836126be565b905061254982612853565b6001600160a01b03851660009081526002602052604081208054859290612571908490612f0f565b90915550506001600160a01b0384166000908152600260205260408120805483929061259e908490612ec9565b909155505030600090815260026020526040812080548492906125c2908490612ec9565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161260e91815260200190565b60405180910390a35050505050565b6001600160a01b03831660009081526002602052604081208054839290612645908490612f0f565b90915550506001600160a01b03821660009081526002602052604081208054839290612672908490612ec9565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161229591815260200190565b6000611a468284612f0f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126ff576126ff612e5d565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561275357600080fd5b505afa158015612767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278b9190612e40565b8160018151811061279e5761279e612e5d565b6001600160a01b039283166020918202929092010152600d546127c491309116846121f4565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906127fd908590600090869030904290600401612f26565b600060405180830381600087803b15801561281757600080fd5b505af11580156121c0573d6000803e3d6000fd5b6000610907606461104c61284c6015546014546122a290919063ffffffff16565b8590611a3a565b61286e60165461104c60145484611a3a90919063ffffffff16565b6011600082825461287f9190612ec9565b909155505060165460155461289a919061104c908490611a3a565b601260008282546128ab9190612ec9565b909155505050565b600060208083528351808285015260005b818110156128e0578581018301518582016040015282016128c4565b818111156128f2576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146110f157600080fd5b6000806040838503121561293057600080fd5b823561293b81612908565b946020939093013593505050565b60006020828403121561295b57600080fd5b8135611a4681612908565b803580151581146114e457600080fd5b60006020828403121561298857600080fd5b611a4682612966565b6000806000606084860312156129a657600080fd5b83356129b181612908565b925060208401356129c181612908565b929592945050506040919091013590565b600080604083850312156129e557600080fd5b82356129f081612908565b91506129fe60208401612966565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a4657612a46612a07565b604052919050565b600067ffffffffffffffff821115612a6857612a68612a07565b5060051b60200190565b600082601f830112612a8357600080fd5b81356020612a98612a9383612a4e565b612a1d565b82815260059290921b84018101918181019086841115612ab757600080fd5b8286015b84811015612ad25780358352918301918301612abb565b509695505050505050565b60008060408385031215612af057600080fd5b823567ffffffffffffffff80821115612b0857600080fd5b818501915085601f830112612b1c57600080fd5b81356020612b2c612a9383612a4e565b82815260059290921b84018101918181019089841115612b4b57600080fd5b948201945b83861015612b72578535612b6381612908565b82529482019490820190612b50565b96505086013592505080821115612b8857600080fd5b50612b9585828601612a72565b9150509250929050565b600060208284031215612bb157600080fd5b5035919050565b60008060008060808587031215612bce57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612bfd57600080fd5b8235612c0881612908565b91506020830135612c1881612908565b809150509250929050565b60008060408385031215612c3657600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612d24578160001904821115612d0a57612d0a612cd3565b80851615612d1757918102915b93841c9390800290612cee565b509250929050565b600082612d3b57506001610907565b81612d4857506000610907565b8160018114612d5e5760028114612d6857612d84565b6001915050610907565b60ff841115612d7957612d79612cd3565b50506001821b610907565b5060208310610133831016604e8410600b8410161715612da7575081810a610907565b612db18383612ce9565b8060001904821115612dc557612dc5612cd3565b029392505050565b6000611a4660ff841683612d2c565b6000816000190483118215151615612df657612df6612cd3565b500290565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060208284031215612e5257600080fd5b8151611a4681612908565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612e8757612e87612cd3565b5060010190565b600082612eab57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612ec257600080fd5b5051919050565b60008219821115612edc57612edc612cd3565b500190565b600080600060608486031215612ef657600080fd5b8351925060208401519150604084015190509250925092565b600082821015612f2157612f21612cd3565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f765784516001600160a01b031683529383019391830191600101612f51565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a6054c01e2dab64e71418f1476d396435580f362ce52b2d50fdf455d523f3c1964736f6c63430008090033

Deployed ByteCode Sourcemap

18113:17208:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21198:98;;;;;;;;;;-1:-1:-1;21279:9:0;;;;;;;;;;;-1:-1:-1;;;21279:9:0;;;;21198:98;;;;21279:9;21198:98;:::i;:::-;;;;;;;;21903:397;;;;;;;;;;-1:-1:-1;21903:397:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;21903:397:0;1072:187:1;18767:40:0;;;;;;;;;;-1:-1:-1;18767:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35095:223;;;;;;;;;;-1:-1:-1;35244:15:0;;35260;;35276:16;;35293;;35095:223;;;1747:25:1;;;1803:2;1788:18;;1781:34;;;;1831:18;;;1824:34;1889:2;1874:18;;1867:34;1734:3;1719:19;35095:223:0;1516:391:1;31121:337:0;;;;;;;;;;-1:-1:-1;31121:337:0;;;;;:::i;:::-;;:::i;21513:101::-;;;;;;;;;;;;;:::i;:::-;;;2058:25:1;;;2046:2;2031:18;21513:101:0;1912:177:1;34285:103:0;;;;;;;;;;-1:-1:-1;34285:103:0;;;;;:::i;:::-;;:::i;:::-;;19683:28;;;;;;;;;;-1:-1:-1;19683:28:0;;;;;;;;22847:348;;;;;;;;;;-1:-1:-1;22847:348:0;;;;;:::i;:::-;;:::i;21410:97::-;;;;;;;;;;-1:-1:-1;21410:97:0;;18381:2;3047:36:1;;3035:2;3020:18;21410:97:0;2905:184:1;33366:171:0;;;;;;;;;;-1:-1:-1;33366:171:0;;;;;:::i;:::-;;:::i;23636:1249::-;;;;;;;;;;;;;:::i;18814:37::-;;;;;;;;;;-1:-1:-1;18814:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;33861:158;;;;;;;;;;-1:-1:-1;33861:158:0;;;;;:::i;:::-;;:::i;23201:429::-;;;;;;;;;;-1:-1:-1;23201:429:0;;;;;:::i;:::-;;:::i;31907:149::-;;;;;;;;;;-1:-1:-1;31907:149:0;;;;;:::i;:::-;;:::i;19083:26::-;;;;;;;;;;-1:-1:-1;19083:26:0;;;;-1:-1:-1;;;;;19083:26:0;;;;;;-1:-1:-1;;;;;6250:32:1;;;6232:51;;6220:2;6205:18;19083:26:0;6086:203:1;33204:159:0;;;;;;;;;;-1:-1:-1;33204:159:0;;;;;:::i;:::-;;:::i;21620:122::-;;;;;;;;;;-1:-1:-1;21620:122:0;;;;;:::i;:::-;;:::i;727:148::-;;;;;;;;;;;;;:::i;19718:31::-;;;;;;;;;;-1:-1:-1;19718:31:0;;;;;;;;;;;34508:119;;;;;;;;;;-1:-1:-1;34508:119:0;;;;;:::i;:::-;;:::i;32062:686::-;;;;;;;;;;-1:-1:-1;32062:686:0;;;;;:::i;:::-;;:::i;19008:24::-;;;;;;;;;;-1:-1:-1;19008:24:0;;;;-1:-1:-1;;;;;19008:24:0;;;34394:108;;;;;;;;;;-1:-1:-1;34394:108:0;;;;;:::i;:::-;;:::i;503:87::-;;;;;;;;;;-1:-1:-1;549:7:0;576:6;-1:-1:-1;;;;;576:6:0;503:87;;33543:160;;;;;;;;;;-1:-1:-1;33543:160:0;;;;;:::i;:::-;;:::i;19756:24::-;;;;;;;;;;-1:-1:-1;19756:24:0;;;;;;;;;;;19039:37;;;;;;;;;;-1:-1:-1;19039:37:0;;;;-1:-1:-1;;;;;19039:37:0;;;19787:35;;;;;;;;;;-1:-1:-1;19787:35:0;;;;;;;;;;;34762:327;;;;;;;;;;-1:-1:-1;34762:327:0;;;;;:::i;:::-;;:::i;31612:126::-;;;;;;;;;;-1:-1:-1;31612:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;31702:28:0;31678:4;31702:28;;;:19;:28;;;;;;;;;31612:126;32754:282;;;;;;;;;;;;;:::i;22665:176::-;;;;;;;;;;-1:-1:-1;22665:176:0;;;;;:::i;:::-;;:::i;33709:146::-;;;;;;;;;;-1:-1:-1;33709:146:0;;;;;:::i;:::-;;:::i;21748:149::-;;;;;;;;;;-1:-1:-1;21748:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;21858:22:0;;;21831:7;21858:22;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;21748:149;19603:33;;;;;;;;;;;;;;;;34633:123;;;;;;;;;;-1:-1:-1;34633:123:0;;;;;:::i;:::-;;:::i;19643:31::-;;;;;;;;;;;;;;;;881:249;;;;;;;;;;-1:-1:-1;881:249:0;;;;;:::i;:::-;;:::i;34025:254::-;;;;;;;;;;-1:-1:-1;34025:254:0;;;;;:::i;:::-;;:::i;31744:157::-;;;;;;;;;;;;;:::i;33042:159::-;;;;;;;;;;-1:-1:-1;33042:159:0;;;;;:::i;:::-;;:::i;21903:397::-;21978:4;162:10;21995:79;;;;-1:-1:-1;;;21995:79:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22093:21:0;;22085:72;;;;-1:-1:-1;;;22085:72:0;;;;;;;:::i;:::-;162:10;22168:29;;;;:15;:29;;;;;;;;-1:-1:-1;;;;;22168:38:0;;;;;;;;;;;;:47;;;22231:39;2058:25:1;;;22168:38:0;;162:10;22231:39;;2031:18:1;22231:39:0;;;;;;;-1:-1:-1;22288:4:0;21903:397;;;;;:::o;31121:337::-;31179:4;31358:20;;31245:66;31407:23;;;;;;:42;;-1:-1:-1;31434:15:0;;;31407:42;31399:51;31121:337;-1:-1:-1;;;;31121:337:0:o;21513:101::-;21568:7;18438:16;18381:2;18438;:16;:::i;:::-;18429:25;;:6;:25;:::i;:::-;21588:18;;21513:101;:::o;34285:103::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;34358:8:::1;:22:::0;;-1:-1:-1;;34358:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34285:103::o;22847:348::-;22945:4;22962:43;22979:6;22987:9;22998:6;22962:16;:43::i;:::-;23016:149;23032:6;162:10;23062:102;23104:6;23062:102;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23062:23:0;;;;;;:15;:23;;;;;;;;162:10;23062:37;;;;;;;;;;:41;:102::i;:::-;23016:15;:149::i;:::-;-1:-1:-1;23183:4:0;22847:348;;;;;:::o;33366:171::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33443:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;::::1;;33435:58;;;::::0;-1:-1:-1;;;33435:58:0;;10677:2:1;33435:58:0::1;::::0;::::1;10659:21:1::0;10716:2;10696:18;;;10689:30;10755;10735:18;;;10728:58;10803:18;;33435:58:0::1;10475:352:1::0;33435:58:0::1;-1:-1:-1::0;;;;;33504:17:0::1;33524:5;33504:17:::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;33504:25:0::1;::::0;;33366:171::o;23636:1249::-;23682:4;576:6;;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;23707:4:::1;::::0;;;::::1;;;23706:5;23698:45;;;::::0;-1:-1:-1;;;23698:45:0;;11034:2:1;23698:45:0::1;::::0;::::1;11016:21:1::0;11073:2;11053:18;;;11046:30;11112:29;11092:18;;;11085:57;11159:18;;23698:45:0::1;10832:351:1::0;23698:45:0::1;23775:12;23754:18;:33:::0;23817:27:::1;:15;23837:6;23817:19;:27::i;:::-;23798:16;:46:::0;23962:11:::1;:26:::0;;-1:-1:-1;;;;;;23962:26:0;;::::1;23908:42;23962:26:::0;;::::1;::::0;;;23999:11:::1;:56:::0;;;;::::1;24013:42;23999:56;::::0;;24066:41;:48;;-1:-1:-1;;24066:48:0;;::::1;23962:26:::0;24066:48;;::::1;::::0;;;24125:41;:48;;;::::1;::::0;::::1;::::0;;23855:31:::1;24184:41:::0;;;:19:::1;24066:41;24184::::0;;:48;;;;::::1;::::0;;::::1;::::0;;24243:65:::1;24267:4;23908:42:::0;18438:16:::1;18381:2;18438;:16;:::i;:::-;18429:25;::::0;:6:::1;:25;:::i;24243:65::-;24349:12;-1:-1:-1::0;;;;;24349:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24331:52:0::1;;24392:4;24399:12;-1:-1:-1::0;;;;;24399:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24331:88;::::0;-1:-1:-1;;;;;;24331:88:0::1;::::0;;;;;;-1:-1:-1;;;;;11674:15:1;;;24331:88:0::1;::::0;::::1;11656:34:1::0;11726:15;;11706:18;;;11699:43;11591:18;;24331:88:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24319:9;:100:::0;;-1:-1:-1;;;;;;24319:100:0::1;-1:-1:-1::0;;;;;24319:100:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;24430:39:0;;;:19:::1;:39;::::0;;;;;;;:46;;-1:-1:-1;;24430:46:0;;::::1;-1:-1:-1::0;24430:46:0;;::::1;::::0;;;24515:9;;;;::::1;24487:39:::0;;:19:::1;:39:::0;;;;;:46;;;;::::1;::::0;;::::1;::::0;;24552:21:::1;24544:82;;;::::0;-1:-1:-1;;;24544:82:0;;11955:2:1;24544:82:0::1;::::0;::::1;11937:21:1::0;11994:2;11974:18;;;11967:30;12033:34;12013:18;;;12006:62;-1:-1:-1;;;12084:18:1;;;12077:42;12136:19;;24544:82:0::1;11753:408:1::0;24544:82:0::1;24637:61;24650:24;24668:4;24650:9;:24::i;:::-;24676:21;24637:12;:61::i;:::-;24735:4;::::0;31021:16;:37;;-1:-1:-1;;;;;;31021:37:0;-1:-1:-1;;;;;24735:4:0;;::::1;31021:37:::0;;;;;-1:-1:-1;31069:31:0;;;:13;:31;;;;;:38;;-1:-1:-1;;31069:38:0;-1:-1:-1;31069:38:0;;;-1:-1:-1;;24751:11:0::1;:18:::0;;-1:-1:-1;;24844:11:0;;;;;-1:-1:-1;;23636:1249:0:o;33861:158::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33960:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;33960:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33861:158::o;23201:429::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;23324:3:::1;23307:7;:14;:20;23299:87;;;::::0;-1:-1:-1;;;23299:87:0;;12368:2:1;23299:87:0::1;::::0;::::1;12350:21:1::0;12407:2;12387:18;;;12380:30;12446:34;12426:18;;;12419:62;-1:-1:-1;;;12497:18:1;;;12490:52;12559:19;;23299:87:0::1;12166:418:1::0;23299:87:0::1;23401:9;23397:226;23420:7;:14;23416:1;:18;23397:226;;;23455:14;23472:7;23480:1;23472:10;;;;;;;;:::i;:::-;;;;;;;23455:27;;23497:14;23514:36;23546:3;23514:27;23530:7;23538:1;23530:10;;;;;;;;:::i;:::-;;;;;;;18381:2;18438;:16;;;;:::i;:::-;18429:25;::::0;:6:::1;:25;:::i;:::-;23514:15:::0;::::1;:27::i;:::-;:31:::0;::::1;:36::i;:::-;23497:53:::0;-1:-1:-1;23565:46:0::1;162:10:::0;23596:6:::1;23604;23565:16;:46::i;:::-;23440:183;;23436:3;;;;;:::i;:::-;;;;23397:226;;;;23201:429:::0;;:::o;31907:149::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;31983:65:::1;32008:4;32015:7;549::::0;576:6;-1:-1:-1;;;;;576:6:0;;503:87;32015:7:::1;32044:3;32036:7:::0;18438:16:::1;18381:2;18438;:16;:::i;:::-;18429:25;::::0;:6:::1;:25;:::i;:::-;32024:19;;;;:::i;:::-;:23;;;;:::i;:::-;31983:16;:65::i;:::-;31907:149:::0;:::o;33204:159::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33278:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;33270:52;;;::::0;-1:-1:-1;;;33270:52:0;;13285:2:1;33270:52:0::1;::::0;::::1;13267:21:1::0;13324:2;13304:18;;;13297:30;13363:27;13343:18;;;13336:55;13408:18;;33270:52:0::1;13083:349:1::0;33270:52:0::1;-1:-1:-1::0;;;;;33333:14:0::1;33350:5;33333:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;33333:22:0::1;::::0;;33204:159::o;21620:122::-;-1:-1:-1;;;;;21713:21:0;21686:7;21713:21;;;:12;:21;;;;;;;21620:122::o;727:148::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;834:1:::1;818:6:::0;;797:40:::1;::::0;-1:-1:-1;;;;;818:6:0;;::::1;::::0;797:40:::1;::::0;834:1;;797:40:::1;865:1;848:19:::0;;-1:-1:-1;;;;;;848:19:0::1;::::0;;727:148::o;34508:119::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;34590:15:::1;:29:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34590:29:0;;::::1;::::0;;;::::1;::::0;;34508:119::o;32062:686::-;32139:4;576:6;;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;32174:2:::1;32163:7;:13;;32155:75;;;::::0;-1:-1:-1;;;32155:75:0;;13639:2:1;32155:75:0::1;::::0;::::1;13621:21:1::0;13678:2;13658:18;;;13651:30;13717:34;13697:18;;;13690:62;-1:-1:-1;;;13768:18:1;;;13761:47;13825:19;;32155:75:0::1;13437:413:1::0;32155:75:0::1;32287:9;::::0;32272:25:::1;::::0;-1:-1:-1;;;32272:25:0;;-1:-1:-1;;;;;32287:9:0;;::::1;32272:25;::::0;::::1;6232:51:1::0;32241:28:0::1;::::0;32272:4:::1;::::0;:14:::1;::::0;6205:18:1;;32272:25:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32241:56:::0;-1:-1:-1;32308:20:0::1;32331:44;32369:5;32331:33;32241:56:::0;32356:7;32331:24:::1;:33::i;:44::-;32308:67:::0;-1:-1:-1;32390:16:0;;32386:95:::1;;32439:9;::::0;32450:4:::1;::::0;32422:47:::1;::::0;-1:-1:-1;;;;;32439:9:0;;::::1;::::0;32450:4:::1;32456:12:::0;32422:16:::1;:47::i;:::-;32521:4;::::0;32511:15:::1;::::0;-1:-1:-1;;;;;32521:4:0::1;32511:9;:15::i;:::-;32491:17;:35:::0;32585:5:::1;18438:16;18381:2;18438;:16;:::i;:::-;18429:25;::::0;:6:::1;:25;:::i;:::-;32566:16;::::0;32580:2:::1;32566:16;:::i;:::-;:24;;;;:::i;:::-;32545:17;;:45;;32537:101;;;::::0;-1:-1:-1;;;32537:101:0;;14246:2:1;32537:101:0::1;::::0;::::1;14228:21:1::0;14285:2;14265:18;;;14258:30;14324:34;14304:18;;;14297:62;-1:-1:-1;;;14375:18:1;;;14368:41;14426:19;;32537:101:0::1;14044:407:1::0;32537:101:0::1;32686:9;::::0;32707:11:::1;::::0;;-1:-1:-1;;;;;;32707:11:0;;;;-1:-1:-1;;;;;32686:9:0;;::::1;::::0;;;32707::::1;::::0;:11:::1;::::0;;::::1;::::0;32649:19:::1;::::0;32707:11;;;;;;;32649:19;32686:9;32707:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32736:4;32729:11;;;;;712:1;32062:686:::0;;;:::o;34394:108::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;34469:11:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;34469:25:0;;::::1;::::0;;;::::1;::::0;;34394:108::o;33543:160::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33644:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;33644:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33543:160::o;34762:327::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;34912:15:::1;:33:::0;;;;34956:15:::1;:33:::0;;;;35000:16:::1;:35:::0;35046:16:::1;:35:::0;34762:327::o;32754:282::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;32809:23:::1;32835:24;32853:4;32835:9;:24::i;:::-;32809:50:::0;-1:-1:-1;32897:29:0::1;32920:5;32897:18;32913:1;18438:16;18381:2;18438;:16;:::i;32897:29::-;32878:15;:48;;32870:133;;;::::0;-1:-1:-1;;;32870:133:0;;14658:2:1;32870:133:0::1;::::0;::::1;14640:21:1::0;14697:2;14677:18;;;14670:30;14736:34;14716:18;;;14709:62;14807:34;14787:18;;;14780:62;-1:-1:-1;;;14858:19:1;;;14851:39;14907:19;;32870:133:0::1;14456:476:1::0;32870:133:0::1;33014:14;:12;:14::i;22665:176::-:0;22745:4;22762:49;162:10;22793:9;22804:6;22762:16;:49::i;:::-;-1:-1:-1;22829:4:0;22665:176;;;;:::o;33709:146::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33802:31:0;;;::::1;;::::0;;;:13:::1;:31;::::0;;;;:45;;-1:-1:-1;;33802:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33709:146::o;34633:123::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;34714:20:::1;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34714:34:0;;::::1;::::0;;;::::1;::::0;;34633:123::o;881:249::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;970:22:0;::::1;962:78;;;::::0;-1:-1:-1;;;962:78:0;;15139:2:1;962:78:0::1;::::0;::::1;15121:21:1::0;15178:2;15158:18;;;15151:30;15217:34;15197:18;;;15190:62;-1:-1:-1;;;15268:18:1;;;15261:41;15319:19;;962:78:0::1;14937:407:1::0;962:78:0::1;1077:6;::::0;;1056:38:::1;::::0;-1:-1:-1;;;;;1056:38:0;;::::1;::::0;1077:6;::::1;::::0;1056:38:::1;::::0;::::1;1105:6;:17:::0;;-1:-1:-1;;;;;;1105:17:0::1;-1:-1:-1::0;;;;;1105:17:0;;;::::1;::::0;;;::::1;::::0;;881:249::o;34025:254::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;34129:37:::1;34158:7:::0;34129:24:::1;34145:7:::0;18438:16:::1;18381:2;18438;:16;:::i;34129:37::-;34117:9;:49:::0;34197:27:::1;34220:3;34197:18;34213:1;18438:16;18381:2;18438;:16;:::i;34197:27::-;34185:9;;:39;;34177:94;;;::::0;-1:-1:-1;;;34177:94:0;;15551:2:1;34177:94:0::1;::::0;::::1;15533:21:1::0;15590:2;15570:18;;;15563:30;15629:34;15609:18;;;15602:62;-1:-1:-1;;;15680:18:1;;;15673:40;15730:19;;34177:94:0::1;15349:406:1::0;34177:94:0::1;34025:254:::0;;:::o;31744:157::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;31802:12:::1;576:6:::0;;31838:55:::1;::::0;-1:-1:-1;;;;;576:6:0;;;;31867:21:::1;::::0;31802:12;31838:55;31802:12;31838:55;31867:21;576:6;31838:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;31744:157:0:o;33042:159::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33114:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;33113:15;33105:56;;;::::0;-1:-1:-1;;;33105:56:0;;16172:2:1;33105:56:0::1;::::0;::::1;16154:21:1::0;16211:2;16191:18;;;16184:30;16250;16230:18;;;16223:58;16298:18;;33105:56:0::1;15970:352:1::0;33105:56:0::1;-1:-1:-1::0;;;;;33172:14:0::1;;::::0;;;:5:::1;:14;::::0;;;;:21;;-1:-1:-1;;33172:21:0::1;33189:4;33172:21;::::0;;33042:159::o;2706:98::-;2764:7;2791:5;2795:1;2791;:5;:::i;:::-;2784:12;2706:98;-1:-1:-1;;;2706:98:0:o;2810:::-;2868:7;2895:5;2899:1;2895;:5;:::i;24891:3038::-;-1:-1:-1;;;;;24987:18:0;;24979:68;;;;-1:-1:-1;;;24979:68:0;;16529:2:1;24979:68:0;;;16511:21:1;16568:2;16548:18;;;16541:30;16607:34;16587:18;;;16580:62;-1:-1:-1;;;16658:18:1;;;16651:35;16703:19;;24979:68:0;16327:401:1;24979:68:0;-1:-1:-1;;;;;25066:16:0;;25058:64;;;;-1:-1:-1;;;25058:64:0;;16935:2:1;25058:64:0;;;16917:21:1;16974:2;16954:18;;;16947:30;17013:34;16993:18;;;16986:62;-1:-1:-1;;;17064:18:1;;;17057:33;17107:19;;25058:64:0;16733:399:1;25058:64:0;25150:1;25141:6;:10;25133:71;;;;-1:-1:-1;;;25133:71:0;;17339:2:1;25133:71:0;;;17321:21:1;17378:2;17358:18;;;17351:30;17417:34;17397:18;;;17390:62;-1:-1:-1;;;17468:18:1;;;17461:46;17524:19;;25133:71:0;17137:412:1;25133:71:0;-1:-1:-1;;;;;25224:11:0;;;;;;:5;:11;;;;;;;;25223:12;25215:57;;;;-1:-1:-1;;;25215:57:0;;17756:2:1;25215:57:0;;;17738:21:1;;;17775:18;;;17768:30;17834:34;17814:18;;;17807:62;17886:18;;25215:57:0;17554:356:1;25215:57:0;25287:4;;;;;;;25283:116;;-1:-1:-1;;;;;25315:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;25338:17:0;;;;;;:13;:17;;;;;;;;25315:40;25307:80;;;;-1:-1:-1;;;25307:80:0;;18117:2:1;25307:80:0;;;18099:21:1;18156:2;18136:18;;;18129:30;18195:29;18175:18;;;18168:57;18242:18;;25307:80:0;17915:351:1;25307:80:0;25413:11;;;;;;;;:19;;:11;:19;:48;;;;-1:-1:-1;;;;;;25438:23:0;;;;;;:19;:23;;;;;;;;25436:25;25413:48;25409:178;;;25515:9;;25486:25;25504:6;25486:13;25496:2;25486:9;:13::i;:::-;:17;;:25::i;:::-;:38;;25478:97;;;;-1:-1:-1;;;25478:97:0;;18473:2:1;25478:97:0;;;18455:21:1;18512:2;18492:18;;;18485:30;18551:34;18531:18;;;18524:62;-1:-1:-1;;;18602:18:1;;;18595:44;18656:19;;25478:97:0;18271:410:1;25478:97:0;25600:8;;;;25597:350;;;549:7;576:6;-1:-1:-1;;;;;25628:15:0;;;576:6;;25628:15;;;;:32;;-1:-1:-1;549:7:0;576:6;-1:-1:-1;;;;;25647:13:0;;;576:6;;25647:13;;25628:32;:52;;;;-1:-1:-1;;;;;;25664:16:0;;;;25628:52;:66;;;;-1:-1:-1;25690:4:0;;-1:-1:-1;;;;;25684:10:0;;;25690:4;;25684:10;;25628:66;:85;;;;-1:-1:-1;25704:9:0;;-1:-1:-1;;;;;25698:15:0;;;25704:9;;25698:15;;25628:85;25624:312;;;25739:6;25734:187;25755:1;25751;:5;25734:187;;;25805:18;;:25;;25828:1;25805:22;:25::i;:::-;25789:12;:41;25786:116;;;-1:-1:-1;;;;;25859:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;25859:19:0;25874:4;25859:19;;;25786:116;25758:3;;;;:::i;:::-;;;;25734:187;;;;25624:312;25960:15;;;;;;;25957:331;;;26019:14;26030:2;26019:10;:14::i;:::-;26018:15;:44;;;;-1:-1:-1;;;;;;26037:25:0;;;;;;:19;:25;;;;;;;;26018:44;:109;;;;26084:16;26095:4;26084:10;:16::i;:::-;26083:17;:44;;;;-1:-1:-1;;;;;;26104:23:0;;;;;;:19;:23;;;;;;;;26083:44;26018:174;;;;26149:16;26160:4;26149:10;:16::i;:::-;:43;;;;-1:-1:-1;;;;;;26169:23:0;;;;;;:19;:23;;;;;;;;26149:43;26018:239;;;;26214:14;26225:2;26214:10;:14::i;:::-;:43;;;;-1:-1:-1;;;;;;26232:25:0;;;;;;:19;:25;;;;;;;;26214:43;25992:284;;;;;;26298:25;26326:36;26346:15;;26326;;:19;;:36;;;;:::i;:::-;26298:64;;26373:28;26404:24;26422:4;26404:9;:24::i;:::-;26494:10;;26520:16;;26373:55;;-1:-1:-1;26470:34:0;;;;26520:16;;;;;26519:17;:41;;;;-1:-1:-1;26540:20:0;;;;;;;26519:41;:69;;;;-1:-1:-1;26574:9:0;;26587:1;;26564:20;;-1:-1:-1;;;;;26574:9:0;26564;:20::i;:::-;:24;26519:69;:94;;;;;26612:1;26592:17;:21;26519:94;:116;;;;-1:-1:-1;;;;;;26618:17:0;;;;;;:13;:17;;;;;;;;26617:18;26519:116;:140;;;;-1:-1:-1;;;;;;26640:19:0;;;;;;:13;:19;;;;;;;;26639:20;26519:140;:159;;;;-1:-1:-1;26669:9:0;;-1:-1:-1;;;;;26663:15:0;;;26669:9;;26663:15;26519:159;:186;;;;;26682:23;26519:186;26515:237;;;26722:14;:12;:14::i;:::-;-1:-1:-1;;;;;26766:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;26789:17:0;;;;;;:13;:17;;;;;;;;26766:40;26762:1118;;;26838:1;26823:12;:16;;;26854:12;:16;;;26902:30;;26838:1;26902:16;:30::i;:::-;26885:14;:47;26762:1118;;;26977:9;;-1:-1:-1;;;;;26969:17:0;;;26977:9;;26969:17;26965:904;;;27022:15;;27007:12;:30;;;27071:15;;27056:12;:30;;;27122:36;;27022:15;27122:19;:36::i;26965:904::-;27189:9;;-1:-1:-1;;;;;27183:15:0;;;27189:9;;27183:15;27179:690;;;27234:16;;27219:12;:31;;;27284:16;;27269:12;:31;;;27336:38;;27234:16;27336:20;:38::i;:::-;27319:14;:55;-1:-1:-1;;;;;27396:14:0;;;;;;:8;:14;;;;;;;;:53;;;;;27434:15;27414:16;;:35;;27396:53;27393:227;;;27488:2;27473:12;:17;;;27528:2;27513:12;:17;;;27570:30;;27488:2;27570:16;:30::i;27393:227::-;27179:690;;;-1:-1:-1;;;;;27668:14:0;;;;;;:8;:14;;;;;;;;27667:15;;:54;;;27706:15;27686:16;;:35;;27667:54;27659:124;;;;-1:-1:-1;;;27659:124:0;;18888:2:1;27659:124:0;;;18870:21:1;18927:2;18907:18;;;18900:30;18966:34;18946:18;;;18939:62;19037:27;19017:18;;;19010:55;19082:19;;27659:124:0;18686:421:1;27659:124:0;27817:1;27802:12;:16;;;27837:12;:16;27179:690;27890:31;27904:4;27910:2;27914:6;27890:13;:31::i;:::-;24968:2961;;;24891:3038;;;:::o;3018:206::-;3104:7;3165:12;3157:6;;;;3149:29;;;;-1:-1:-1;;;3149:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3200:5:0;;;3018:206::o;22306:353::-;-1:-1:-1;;;;;22405:19:0;;22397:72;;;;-1:-1:-1;;;22397:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22488:21:0;;22480:72;;;;-1:-1:-1;;;22480:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22563:22:0;;;;;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;:40;;;22619:32;;2058:25:1;;;22619:32:0;;2031:18:1;22619:32:0;;;;;;;;22306:353;;;:::o;2498:98::-;2556:7;2583:5;2587:1;2583;:5;:::i;29520:369::-;29641:11;;29602:65;;29626:4;;-1:-1:-1;;;;;29641:11:0;29655;29602:15;:65::i;:::-;29678:11;;29824:16;;29678:203;;-1:-1:-1;;;29678:203:0;;29746:4;29678:203;;;19594:34:1;19644:18;;;19637:34;;;29678:11:0;19687:18:1;;;19680:34;;;19730:18;;;19723:34;-1:-1:-1;;;;;29824:16:0;;;19773:19:1;;;19766:44;29855:15:0;19826:19:1;;;19819:35;29678:11:0;;;:27;;29713:9;;19528:19:1;;29678:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29520:369;;:::o;27935:1106::-;19939:16;:23;;-1:-1:-1;;19939:23:0;;;;;;28017:24:::1;28035:4;28017:9;:24::i;:::-;27991:50;;28052:25;28080:36;28100:15;;28080;;:19;;:36;;;;:::i;:::-;28052:64;;28127:27;28157:22;28177:1;28157:15;;:19;;:22;;;;:::i;:::-;28127:52:::0;-1:-1:-1;28190:26:0::1;28219:40;:15:::0;28127:52;28219:19:::1;:40::i;:::-;28190:69:::0;-1:-1:-1;28298:21:0::1;28330:36;28190:69:::0;28330:16:::1;:36::i;:::-;28378:18;28399:44;:21;28425:17:::0;28399:25:::1;:44::i;:::-;28378:65;;28454:23;28480:54;28516:17;28480:31;28495:15;;28480:10;:14;;:31;;;;:::i;:54::-;28454:80:::0;-1:-1:-1;28545:23:0::1;28571:31;:10:::0;28454:80;28571:14:::1;:31::i;:::-;28631:1;28613:15;:19:::0;;;28643:15:::1;:19:::0;;;28699:16:::1;::::0;28691:58:::1;::::0;28545:57;;-1:-1:-1;28631:1:0;;-1:-1:-1;;;;;28699:16:0;;::::1;::::0;28729:15;;28631:1;28691:58;28631:1;28691:58;28729:15;28699:16;28691:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28673:76;;;28763:15;28782:1;28763:20;;:48;;;;-1:-1:-1::0;28787:24:0;;::::1;28763:48;28760:130;;;28828:50;28841:19;28862:15;28828:12;:50::i;:::-;28927:8;28903:21;:32;28900:134;;;28972:10;::::0;28964:58:::1;::::0;-1:-1:-1;;;;;28972:10:0;;::::1;::::0;28996:21:::1;::::0;28964:58:::1;::::0;;;28996:21;28972:10;28964:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;28951:71:0;;-1:-1:-1;;28900:134:0::1;-1:-1:-1::0;;19985:16:0;:24;;-1:-1:-1;;19985:24:0;;;-1:-1:-1;;;;;;;27935:1106:0:o;30268:673::-;30363:14;;:19;30360:574;;30398:17;30418:20;30431:6;30418:12;:20::i;:::-;30398:40;-1:-1:-1;30453:22:0;30478:21;:6;30398:40;30478:10;:21::i;:::-;30453:46;;30514:25;30529:9;30514:14;:25::i;:::-;-1:-1:-1;;;;;30554:20:0;;;;;;:12;:20;;;;;:30;;30578:6;;30554:20;:30;;30578:6;;30554:30;:::i;:::-;;;;-1:-1:-1;;;;;;;30599:23:0;;;;;;:12;:23;;;;;:41;;30626:14;;30599:23;:41;;30626:14;;30599:41;:::i;:::-;;;;-1:-1:-1;;30676:4:0;30655:27;;;;:12;:27;;;;;:40;;30686:9;;30655:27;:40;;30686:9;;30655:40;:::i;:::-;;;;;;;;30732:9;-1:-1:-1;;;;;30715:43:0;30724:6;-1:-1:-1;;;;;30715:43:0;;30743:14;30715:43;;;;2058:25:1;;2046:2;2031:18;;1912:177;30715:43:0;;;;;;;;30383:387;;23397:226:::1;23201:429:::0;;:::o;30360:574::-;-1:-1:-1;;;;;30789:20:0;;;;;;:12;:20;;;;;:30;;30813:6;;30789:20;:30;;30813:6;;30789:30;:::i;:::-;;;;-1:-1:-1;;;;;;;30834:23:0;;;;;;:12;:23;;;;;:33;;30861:6;;30834:23;:33;;30861:6;;30834:33;:::i;:::-;;;;;;;;30904:9;-1:-1:-1;;;;;30887:35:0;30896:6;-1:-1:-1;;;;;30887:35:0;;30915:6;30887:35;;;;2058:25:1;;2046:2;2031:18;;1912:177;2602:98:0;2660:7;2687:5;2691:1;2687;:5;:::i;29047:467::-;29138:16;;;29152:1;29138:16;;;;;;;;29114:21;;29138:16;;;;;;;;;;-1:-1:-1;29138:16:0;29114:40;;29183:4;29165;29170:1;29165:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29165:23:0;;;:7;;;;;;;;;;:23;;;;29209:11;;:18;;;-1:-1:-1;;;29209:18:0;;;;:11;;;;;:16;;:18;;;;;29165:7;;29209:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29199:4;29204:1;29199:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29199:28:0;;;:7;;;;;;;;;:28;29277:11;;29238:65;;29262:4;;29277:11;29291;29238:15;:65::i;:::-;29314:11;;:192;;-1:-1:-1;;;29314:192:0;;-1:-1:-1;;;;;29314:11:0;;;;:62;;:192;;29391:11;;29314;;29433:4;;29460;;29480:15;;29314:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29895:147;29956:7;29983:51;30030:3;29983:42;29994:30;30011:12;;29994;;:16;;:30;;;;:::i;:::-;29983:6;;:10;:42::i;30048:214::-;30130:47;30162:14;;30130:27;30144:12;;30130:9;:13;;:27;;;;:::i;:47::-;30111:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;30239:14:0;;30221:12;;30207:47;;30239:14;30207:27;;:9;;:13;:27::i;:47::-;30188:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;;30048:214:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:247::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1431:9;1418:23;1450:31;1475:5;1450:31;:::i;2094:160::-;2159:20;;2215:13;;2208:21;2198:32;;2188:60;;2244:1;2241;2234:12;2259:180;2315:6;2368:2;2356:9;2347:7;2343:23;2339:32;2336:52;;;2384:1;2381;2374:12;2336:52;2407:26;2423:9;2407:26;:::i;2444:456::-;2521:6;2529;2537;2590:2;2578:9;2569:7;2565:23;2561:32;2558:52;;;2606:1;2603;2596:12;2558:52;2645:9;2632:23;2664:31;2689:5;2664:31;:::i;:::-;2714:5;-1:-1:-1;2771:2:1;2756:18;;2743:32;2784:33;2743:32;2784:33;:::i;:::-;2444:456;;2836:7;;-1:-1:-1;;;2890:2:1;2875:18;;;;2862:32;;2444:456::o;3094:315::-;3159:6;3167;3220:2;3208:9;3199:7;3195:23;3191:32;3188:52;;;3236:1;3233;3226:12;3188:52;3275:9;3262:23;3294:31;3319:5;3294:31;:::i;:::-;3344:5;-1:-1:-1;3368:35:1;3399:2;3384:18;;3368:35;:::i;:::-;3358:45;;3094:315;;;;;:::o;3414:127::-;3475:10;3470:3;3466:20;3463:1;3456:31;3506:4;3503:1;3496:15;3530:4;3527:1;3520:15;3546:275;3617:2;3611:9;3682:2;3663:13;;-1:-1:-1;;3659:27:1;3647:40;;3717:18;3702:34;;3738:22;;;3699:62;3696:88;;;3764:18;;:::i;:::-;3800:2;3793:22;3546:275;;-1:-1:-1;3546:275:1:o;3826:183::-;3886:4;3919:18;3911:6;3908:30;3905:56;;;3941:18;;:::i;:::-;-1:-1:-1;3986:1:1;3982:14;3998:4;3978:25;;3826:183::o;4014:662::-;4068:5;4121:3;4114:4;4106:6;4102:17;4098:27;4088:55;;4139:1;4136;4129:12;4088:55;4175:6;4162:20;4201:4;4225:60;4241:43;4281:2;4241:43;:::i;:::-;4225:60;:::i;:::-;4319:15;;;4405:1;4401:10;;;;4389:23;;4385:32;;;4350:12;;;;4429:15;;;4426:35;;;4457:1;4454;4447:12;4426:35;4493:2;4485:6;4481:15;4505:142;4521:6;4516:3;4513:15;4505:142;;;4587:17;;4575:30;;4625:12;;;;4538;;4505:142;;;-1:-1:-1;4665:5:1;4014:662;-1:-1:-1;;;;;;4014:662:1:o;4681:1215::-;4799:6;4807;4860:2;4848:9;4839:7;4835:23;4831:32;4828:52;;;4876:1;4873;4866:12;4828:52;4916:9;4903:23;4945:18;4986:2;4978:6;4975:14;4972:34;;;5002:1;4999;4992:12;4972:34;5040:6;5029:9;5025:22;5015:32;;5085:7;5078:4;5074:2;5070:13;5066:27;5056:55;;5107:1;5104;5097:12;5056:55;5143:2;5130:16;5165:4;5189:60;5205:43;5245:2;5205:43;:::i;5189:60::-;5283:15;;;5365:1;5361:10;;;;5353:19;;5349:28;;;5314:12;;;;5389:19;;;5386:39;;;5421:1;5418;5411:12;5386:39;5445:11;;;;5465:217;5481:6;5476:3;5473:15;5465:217;;;5561:3;5548:17;5578:31;5603:5;5578:31;:::i;:::-;5622:18;;5498:12;;;;5660;;;;5465:217;;;5701:5;-1:-1:-1;;5744:18:1;;5731:32;;-1:-1:-1;;5775:16:1;;;5772:36;;;5804:1;5801;5794:12;5772:36;;5827:63;5882:7;5871:8;5860:9;5856:24;5827:63;:::i;:::-;5817:73;;;4681:1215;;;;;:::o;5901:180::-;5960:6;6013:2;6001:9;5992:7;5988:23;5984:32;5981:52;;;6029:1;6026;6019:12;5981:52;-1:-1:-1;6052:23:1;;5901:180;-1:-1:-1;5901:180:1:o;6529:385::-;6615:6;6623;6631;6639;6692:3;6680:9;6671:7;6667:23;6663:33;6660:53;;;6709:1;6706;6699:12;6660:53;-1:-1:-1;;6732:23:1;;;6802:2;6787:18;;6774:32;;-1:-1:-1;6853:2:1;6838:18;;6825:32;;6904:2;6889:18;6876:32;;-1:-1:-1;6529:385:1;-1:-1:-1;6529:385:1:o;6919:388::-;6987:6;6995;7048:2;7036:9;7027:7;7023:23;7019:32;7016:52;;;7064:1;7061;7054:12;7016:52;7103:9;7090:23;7122:31;7147:5;7122:31;:::i;:::-;7172:5;-1:-1:-1;7229:2:1;7214:18;;7201:32;7242:33;7201:32;7242:33;:::i;:::-;7294:7;7284:17;;;6919:388;;;;;:::o;7312:248::-;7380:6;7388;7441:2;7429:9;7420:7;7416:23;7412:32;7409:52;;;7457:1;7454;7447:12;7409:52;-1:-1:-1;;7480:23:1;;;7550:2;7535:18;;;7522:32;;-1:-1:-1;7312:248:1:o;7565:404::-;7767:2;7749:21;;;7806:2;7786:18;;;7779:30;7845:34;7840:2;7825:18;;7818:62;-1:-1:-1;;;7911:2:1;7896:18;;7889:38;7959:3;7944:19;;7565:404::o;7974:402::-;8176:2;8158:21;;;8215:2;8195:18;;;8188:30;8254:34;8249:2;8234:18;;8227:62;-1:-1:-1;;;8320:2:1;8305:18;;8298:36;8366:3;8351:19;;7974:402::o;8381:127::-;8442:10;8437:3;8433:20;8430:1;8423:31;8473:4;8470:1;8463:15;8497:4;8494:1;8487:15;8513:422;8602:1;8645:5;8602:1;8659:270;8680:7;8670:8;8667:21;8659:270;;;8739:4;8735:1;8731:6;8727:17;8721:4;8718:27;8715:53;;;8748:18;;:::i;:::-;8798:7;8788:8;8784:22;8781:55;;;8818:16;;;;8781:55;8897:22;;;;8857:15;;;;8659:270;;;8663:3;8513:422;;;;;:::o;8940:806::-;8989:5;9019:8;9009:80;;-1:-1:-1;9060:1:1;9074:5;;9009:80;9108:4;9098:76;;-1:-1:-1;9145:1:1;9159:5;;9098:76;9190:4;9208:1;9203:59;;;;9276:1;9271:130;;;;9183:218;;9203:59;9233:1;9224:10;;9247:5;;;9271:130;9308:3;9298:8;9295:17;9292:43;;;9315:18;;:::i;:::-;-1:-1:-1;;9371:1:1;9357:16;;9386:5;;9183:218;;9485:2;9475:8;9472:16;9466:3;9460:4;9457:13;9453:36;9447:2;9437:8;9434:16;9429:2;9423:4;9420:12;9416:35;9413:77;9410:159;;;-1:-1:-1;9522:19:1;;;9554:5;;9410:159;9601:34;9626:8;9620:4;9601:34;:::i;:::-;9671:6;9667:1;9663:6;9659:19;9650:7;9647:32;9644:58;;;9682:18;;:::i;:::-;9720:20;;8940:806;-1:-1:-1;;;8940:806:1:o;9751:140::-;9809:5;9838:47;9879:4;9869:8;9865:19;9859:4;9838:47;:::i;9896:168::-;9936:7;10002:1;9998;9994:6;9990:14;9987:1;9984:21;9979:1;9972:9;9965:17;9961:45;9958:71;;;10009:18;;:::i;:::-;-1:-1:-1;10049:9:1;;9896:168::o;10069:401::-;10271:2;10253:21;;;10310:2;10290:18;;;10283:30;10349:34;10344:2;10329:18;;10322:62;-1:-1:-1;;;10415:2:1;10400:18;;10393:35;10460:3;10445:19;;10069:401::o;11188:251::-;11258:6;11311:2;11299:9;11290:7;11286:23;11282:32;11279:52;;;11327:1;11324;11317:12;11279:52;11359:9;11353:16;11378:31;11403:5;11378:31;:::i;12589:127::-;12650:10;12645:3;12641:20;12638:1;12631:31;12681:4;12678:1;12671:15;12705:4;12702:1;12695:15;12721:135;12760:3;-1:-1:-1;;12781:17:1;;12778:43;;;12801:18;;:::i;:::-;-1:-1:-1;12848:1:1;12837:13;;12721:135::o;12861:217::-;12901:1;12927;12917:132;;12971:10;12966:3;12962:20;12959:1;12952:31;13006:4;13003:1;12996:15;13034:4;13031:1;13024:15;12917:132;-1:-1:-1;13063:9:1;;12861:217::o;13855:184::-;13925:6;13978:2;13966:9;13957:7;13953:23;13949:32;13946:52;;;13994:1;13991;13984:12;13946:52;-1:-1:-1;14017:16:1;;13855:184;-1:-1:-1;13855:184:1:o;19112:128::-;19152:3;19183:1;19179:6;19176:1;19173:13;19170:39;;;19189:18;;:::i;:::-;-1:-1:-1;19225:9:1;;19112:128::o;19865:306::-;19953:6;19961;19969;20022:2;20010:9;20001:7;19997:23;19993:32;19990:52;;;20038:1;20035;20028:12;19990:52;20067:9;20061:16;20051:26;;20117:2;20106:9;20102:18;20096:25;20086:35;;20161:2;20150:9;20146:18;20140:25;20130:35;;19865:306;;;;;:::o;20176:125::-;20216:4;20244:1;20241;20238:8;20235:34;;;20249:18;;:::i;:::-;-1:-1:-1;20286:9:1;;20176:125::o;20306:980::-;20568:4;20616:3;20605:9;20601:19;20647:6;20636:9;20629:25;20673:2;20711:6;20706:2;20695:9;20691:18;20684:34;20754:3;20749:2;20738:9;20734:18;20727:31;20778:6;20813;20807:13;20844:6;20836;20829:22;20882:3;20871:9;20867:19;20860:26;;20921:2;20913:6;20909:15;20895:29;;20942:1;20952:195;20966:6;20963:1;20960:13;20952:195;;;21031:13;;-1:-1:-1;;;;;21027:39:1;21015:52;;21122:15;;;;21087:12;;;;21063:1;20981:9;20952:195;;;-1:-1:-1;;;;;;;21203:32:1;;;;21198:2;21183:18;;21176:60;-1:-1:-1;;;21267:3:1;21252:19;21245:35;21164:3;20306:980;-1:-1:-1;;;20306:980:1:o

Swarm Source

ipfs://a6054c01e2dab64e71418f1476d396435580f362ce52b2d50fdf455d523f3c19
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.