Contract 0xa231D452e4bCA86672FD6109de94688d1E17Aae5 3

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xbebfe41256001128d712d601ee8dc950e08d4615774d9217b6129fbb2f16c70aApprove517004172022-12-01 6:20:1817 hrs 6 mins ago0xe95abe9ab25aac255157e0a795bb1f98f6acafa0 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.002122164084
0xd25acbfd8c3cdcde3453117251f3308353436f767493a593d4b2cf2521341259Approve516865572022-12-01 0:10:1023 hrs 16 mins ago0x000d22872643daedd721eb514943db55ef37e62f IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.005362548436
0x466731da542d3357156b0f39ceb03d985e1b4d66ad343d81076dfb3ca459c8daApprove516838572022-11-30 22:20:361 day 1 hr ago0x83889c4c382b4d2acf88d23d770ca24472b1f0f4 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.006578265101
0x33f100c1181363436bf6faa900bebbd8e0edf51aa96da428e25e15bc90478465Approve516830162022-11-30 21:55:051 day 1 hr ago0xc24badf40e4687ea6a318fa86e4dea8d7c307626 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.004981075156
0xfe4dfbaa0dc168117751b526a7a8b23a82dc535cd8eddac5d0707e55bfe7f90cApprove516787512022-11-30 19:08:401 day 4 hrs ago0x90660dae63ee2736a40c38651416868f3876eabc IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.012528947699
0xe2c1a66781cb5575a490d5c536f172e28117a1c1476a96b838b8121c33f72120Approve516703472022-11-30 14:11:351 day 9 hrs ago0x53ea7731a71d662f0419a92f0f8ac7f8142f4ca2 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.00404435102
0xd812aea430e4a96a0710dfb8692b1ab611d5c2234d4bcd0c15a039ee01086acbApprove516553822022-11-30 7:37:321 day 15 hrs ago0xc9743a1aebb466b2ff66efb8c1896e8825cd3644 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.003476546273
0xb4daa1c16c084067f2e613907f532ac290a13409083a513a4872a20a636373abApprove516163252022-11-29 16:55:312 days 6 hrs ago0xf2d9d46560bb67eaf9a901001b6fd8da123efdc9 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.002344001518
0x83b9b7e6f7df5dfe0f2977ba6fb57f47c1bf929d792557e8dbd08ee271fe5546Approve515117102022-11-27 15:16:484 days 8 hrs ago0xbee2d469aacb46251ae33cca91f482e26c971dff IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.0045722571
0x84a6717cda9c8980543d8f3816c32b5fb0e017133106ed13a795fa4e5630fe5aApprove514730772022-11-26 16:00:555 days 7 hrs ago0x6a5f44d24dca8417db339203d9e07d23321f030b IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.005534009767
0xe5e9d27b2037d277b7a0c10ad1e47afd92488914c60433a89705efda8e5215ceApprove514457992022-11-25 22:16:436 days 1 hr ago0xa279f0984bc13d9607f8cdaa8a867da98d52dbbe IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.005318900991
0x42afca345f2270c25dc457a288618dc3b1f60d3f11ade88702c3d8f59a86efacApprove514389262022-11-25 18:28:256 days 4 hrs ago0x126c25759505cfe1f862ddcadfe9d0ed75b521af IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.002918917973
0xeec5d6382a694163815bb9653e1e34220e86e88fd8615f898b63f69ec1662058Transfer514002462022-11-24 20:21:177 days 3 hrs ago0xf10379ba631e9500b85503777b83d5932a8984c8 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.425235044546
0x5168d34b8c57eb65f7129f26eab48f7a485a88f32917bb960147da28bf43c600Approve513493112022-11-23 16:16:398 days 7 hrs ago0xb6410e6b441f0db2dcb3a43aef8b99d7157eafab IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.004567975556
0x41c0e91c1f78bfa24e2c5dae9c8f85af67b71847aa8fb6c3f81ef19636f6e9caTransfer513410732022-11-23 12:39:278 days 10 hrs ago0x646b4ec6c21c79f4582b52a60122b642825ba308 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.041068505486
0xb5a694277cdff81ebb3bb36c2b896b0d6a1de38ca7478c67e39d461da936b315Approve511997622022-11-20 19:21:5311 days 4 hrs ago0xb91fbd06cf36ebe8793b4c7141fc6d757b173ed4 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.004501577557
0xb2e3dd66998fe2b8b8e67669a22833ade7e65910fdb167445f9c2009ea4a4f20Approve511431732022-11-19 18:51:2412 days 4 hrs ago0x9e138c3c1249f1627168d02359a4ba82e5f2ebd4 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.001593644961
0x8962a0e5ffb95a1d8feb9dbb07a1d0f3a1a81f947cda01cb64a9301677288dd7Approve511430962022-11-19 18:49:3912 days 4 hrs ago0x38ca632438dbaf51a4c1ce5a7a6d3b6e5f146ad9 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.004336962728
0xaf5618fbc55df73d055eeab1af5911b8904a410508073c127cfdcda2f151c140Approve511430422022-11-19 18:48:1212 days 4 hrs ago0x9e138c3c1249f1627168d02359a4ba82e5f2ebd4 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.002777409838
0xcf2696761a6911c0156e8b91333e47f22e641da5d7dd500fa9ecaa54be93ba5bApprove511373592022-11-19 16:32:2412 days 6 hrs ago0xa0462e68f0093351e4ca0630e71d9d190bd4777c IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.002791495111
0xee58c9d60684ad6d87bb4b4694daff42ea7e465bca45d397c62b29cc69d94a9bTransfer511103462022-11-19 4:46:1012 days 18 hrs ago0xbf79fcd7e8cb43373acd4451d243b2cc53c6f2d2 IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.030548028919
0xac5459e005fe5fca270a4275482305de7e9fdcfe83b4ca2866233f93cca06433Approve510408992022-11-17 19:09:4414 days 4 hrs ago0x5e09b66b72208a9fc2634e6dfff78456103ae44e IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.003513524673
0x8c7d9712ee352579ceb5ecc04425cd2000196369ffc7321d9217f2e2d93d3bc5Approve510330112022-11-17 16:05:1014 days 7 hrs ago0x9edb757c50e75c824782244db238dc7b4911e29f IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.004934117166
0x43c29249b6d637bd76eca9410f91d5f8b15caf23daa1ee2e18f7c6546443d640Approve510329552022-11-17 16:03:5914 days 7 hrs ago0x9edb757c50e75c824782244db238dc7b4911e29f IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.005013080954
0x56fd3c9dcf1e630a767597c9b1566cd4234589f212cd307b2bcb723a3174ed55Approve509293562022-11-15 16:28:5616 days 6 hrs ago0xa5816dff75854c6360349956ecd4d0833bf81f7a IN  0xa231d452e4bca86672fd6109de94688d1e17aae50 FTM0.012873518321
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xea1dbe1590e95e83d3881d2170e4c0a76a924b920bc46cf6d8cd48a5f53f33fe471975952022-09-18 14:48:1974 days 8 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c3076268.333628347287408996 FTM
0xea1dbe1590e95e83d3881d2170e4c0a76a924b920bc46cf6d8cd48a5f53f33fe471975952022-09-18 14:48:1974 days 8 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae58.333628347287408996 FTM
0x660624a41cf8b1f481497c884cd8fcc237b78fcfbc2025b24138ac120e7ca960471240312022-09-17 14:16:4175 days 9 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c307626175.806308306788783593 FTM
0x660624a41cf8b1f481497c884cd8fcc237b78fcfbc2025b24138ac120e7ca960471240312022-09-17 14:16:4175 days 9 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae5175.806308306788783593 FTM
0x73dca513c87d22260cbfb19bb8c8f1878b66452e46def2ea9530bcc022b5d00d471240262022-09-17 14:16:3575 days 9 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c307626175.806308306788783593 FTM
0x73dca513c87d22260cbfb19bb8c8f1878b66452e46def2ea9530bcc022b5d00d471240262022-09-17 14:16:3575 days 9 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae5175.806308306788783593 FTM
0x892f09b75fe3eb797a787fa9c1b7a161d73726b126efd9aa8784ecda6725c02e469920992022-09-15 13:52:5077 days 9 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c30762645.920744353847474044 FTM
0x892f09b75fe3eb797a787fa9c1b7a161d73726b126efd9aa8784ecda6725c02e469920992022-09-15 13:52:5077 days 9 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae545.920744353847474044 FTM
0x23ba938a337c5057470aa857db68e78ad88bff83d112af72b04be745dc35a7e0469456642022-09-14 18:56:2978 days 4 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c3076260.674711789793606595 FTM
0x23ba938a337c5057470aa857db68e78ad88bff83d112af72b04be745dc35a7e0469456642022-09-14 18:56:2978 days 4 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae50.674711789793606595 FTM
0x7746f4baf0df03e387d0927ca4ba8ec0596395ca3340bf79957957edd9ecb20d469456592022-09-14 18:56:1978 days 4 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c3076261,238.870762300940447227 FTM
0x7746f4baf0df03e387d0927ca4ba8ec0596395ca3340bf79957957edd9ecb20d469456592022-09-14 18:56:1978 days 4 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae51,238.870762300940447227 FTM
0xd66adceabc5490668a8bf992445fbffce1b61a6eac55b2df014fa58164eb4cec469310972022-09-14 13:11:2378 days 10 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c3076261,238.870762300940447227 FTM
0xd66adceabc5490668a8bf992445fbffce1b61a6eac55b2df014fa58164eb4cec469310972022-09-14 13:11:2378 days 10 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae51,238.870762300940447227 FTM
0x803cd7e13586b7e716b149aad8208659ca8962dce88acfe3a85456f54fce0b7d469310962022-09-14 13:11:2278 days 10 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c3076261,237.799629203429549492 FTM
0x803cd7e13586b7e716b149aad8208659ca8962dce88acfe3a85456f54fce0b7d469310962022-09-14 13:11:2278 days 10 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae51,237.799629203429549492 FTM
0xdd9cdb95edaf1e7119cea1390b3bed5352373de8e5853f5688bfa0fcc2e4ee7b469308712022-09-14 13:03:1878 days 10 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c307626878.126073732497967941 FTM
0xdd9cdb95edaf1e7119cea1390b3bed5352373de8e5853f5688bfa0fcc2e4ee7b469308712022-09-14 13:03:1878 days 10 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae5878.126073732497967941 FTM
0x5272b55637687bd839066f7dcc3977ac93b3cf764d6b8fa26e9573c4a6341eac469308582022-09-14 13:02:5578 days 10 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c307626878.126073732497967941 FTM
0x5272b55637687bd839066f7dcc3977ac93b3cf764d6b8fa26e9573c4a6341eac469308582022-09-14 13:02:5578 days 10 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae5878.126073732497967941 FTM
0x63fd425eb773447d3bd95d027a8e427eb2823786d85888ff1fb577bc3ada342b469264422022-09-14 10:28:5978 days 12 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c307626434.295538975264927282 FTM
0x63fd425eb773447d3bd95d027a8e427eb2823786d85888ff1fb577bc3ada342b469264422022-09-14 10:28:5978 days 12 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae5434.295538975264927282 FTM
0x0f36067fa20bd0cadbdc4d8a68647e9987dba8fa5fb00dcb635f78e38a04a3a0469264422022-09-14 10:28:5978 days 12 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c307626589.774096324120013265 FTM
0x0f36067fa20bd0cadbdc4d8a68647e9987dba8fa5fb00dcb635f78e38a04a3a0469264422022-09-14 10:28:5978 days 12 hrs ago SpookySwap: Router 0xa231d452e4bca86672fd6109de94688d1e17aae5589.774096324120013265 FTM
0x17eb4e3200ce42acceedcceb1068ef7efe8d42dfae1f16498922b67da58a0079468493642022-09-13 0:56:5379 days 22 hrs ago 0xa231d452e4bca86672fd6109de94688d1e17aae50xc24badf40e4687ea6a318fa86e4dea8d7c307626589.774096324120013265 FTM
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x996C9E2171D870b959B2F724fa2F5AC3ffB124F6

Contract Name:
ScaryChainCapital

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-12-04
*/

/**
Scary-Chain Capital V2: $SCC
-You buy on Fantom, we farm on multiple chains and return the profits to $SCC holders.
Tokenomics:
5% of each buy/sell goes to existing holders.
5% of each buy/sell goes into investments wallet and marketing/development wallet.
(Tokenomics may change over time)
Website:
https://scarychain.capital
Telegram:
https://t.me/ScaryChainCapital
Twitter:
https://twitter.com/SChainCapital
Medium:
https://scarychaincapital.medium.com
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // 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 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     * - an externally-owned account
     * - a contract in construction
     * - an address where a contract will be created
     * - an address where a contract lived, but was destroyed
     * ====
     */
    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);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    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"
        );
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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");
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = now + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(
            _previousOwner == msg.sender,
            "You don't have permission to unlock"
        );
        require(now > _lockTime, "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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 Mint(address indexed sender, uint256 amount0, uint256 amount1);
    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 mint(address to) external returns (uint256 liquidity);

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

// Contract implementation
contract ScaryChainCapital is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 2000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private _name = "ScaryChainCapital V2";
    string private _symbol = "SCC";
    uint8 private _decimals = 9;

    uint256 private _taxFee = 5;
    uint256 private _teamFee = 5;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousTeamFee = _teamFee;

    address payable public _SCCWalletAddress;
    address payable public _marketingWalletAddress;
    uint256 private _SCCPercent = 50;
    uint256 private _marketingPercent = 50;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    mapping (address => bool) public automatedMarketMakerPairs;

    bool inSwap = false;
    bool public swapEnabled = true;
    uint256 private _maxTxAmount = 100000000000000e9;
    // We will set a minimum amount of tokens to be swaped => 5M
    uint256 private _numOfTokensToExchangeForTeam = 5 * 10**3 * 10**9;
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapEnabledUpdated(bool enabled);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(
        address payable SCCWalletAddress,
        address payable marketingWalletAddress
    ) public {
        _SCCWalletAddress = SCCWalletAddress;
        _marketingWalletAddress = marketingWalletAddress;
        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0xF491e7B69E4244ad4002BC14e878a34207E38c29
        ); // Spooky Router for Fantom Network
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        _setAutomatedMarketMakerPair(uniswapV2Pair, true);

        // Exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function taxFee() public view returns (uint256) {
        return _taxFee;
    }

    function teamFee() public view returns (uint256) {
        return _teamFee;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The actual pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        if(value){excludeAccount(pair);}
        if(!value){includeAccount(pair);}
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setExcludeFromFee(address account, bool excluded)
        external
        onlyOwner
    {
        _isExcludedFromFee[account] = excluded;
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeAccount(address account) public onlyOwner {
        require(
            account != 0xF491e7B69E4244ad4002BC14e878a34207E38c29,
            "We can not exclude Uniswap router."
        );
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) public onlyOwner {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function removeAllFee() private {
        if (_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousTeamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousTeamFee;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (sender != owner() && recipient != owner())
            require(
                amount <= _maxTxAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap?
        // also, don't get caught in a circular team event.
        // also, don't swap if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }
        bool overMinTokenBalance = contractTokenBalance >=
            _numOfTokensToExchangeForTeam;
        if (
            !inSwap &&
            swapEnabled &&
            overMinTokenBalance &&
            automatedMarketMakerPairs[recipient]
        ) {
            // We need to swap the current tokens to ETH and send to the team wallet
            swapTokensForEth(contractTokenBalance);
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                sendETHToTeam(address(this).balance);
            }
        }
        //indicates if fee should be deducted from transfer
        bool takeFee = true;
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            takeFee = false;
        }

        if(!automatedMarketMakerPairs[sender] && !automatedMarketMakerPairs[recipient]) {
            takeFee = false;
        }

        //transfer amount, it will take tax and team fee
        _tokenTransfer(sender, recipient, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToTeam(uint256 amount) private {
        _SCCWalletAddress.transfer(amount.mul(_SCCPercent).div(100));
        _marketingWalletAddress.transfer(amount.mul(_marketingPercent).div(100));
    }

    // We are exposing these functions to be able to manual swap and send
    // in case the token is highly valued and 5M becomes too much
    function manualSwap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        sendETHToTeam(contractETHBalance);
    }

    function setSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _taxFee,
            _teamFee
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 taxFee,
        uint256 teamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(teamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTaxFee() private view returns (uint256) {
        return _taxFee;
    }

    function _getMaxTxAmount() private view returns (uint256) {
        return _maxTxAmount;
    }

    function _getETHBalance() public view returns (uint256 balance) {
        return address(this).balance;
    }

    function changeRouterVersion(address _router)
        external
        onlyOwner
        returns (address _pair)
    {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router);

        _pair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        if (_pair == address(0)) {
            // Pair doesn't exist
            _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
                address(this),
                _uniswapV2Router.WETH()
            );
        }
        uniswapV2Pair = _pair;

        // Set the router of the contract variables
        uniswapV2Router = _uniswapV2Router;
    }

    function _setTaxFee(uint256 taxFee) external onlyOwner {
        require(taxFee <= 25, "taxFee should be in 0 - 25");
        _taxFee = taxFee;
    }

    function _setTeamFee(uint256 teamFee) external onlyOwner {
        require(teamFee <= 25, "teamFee should be in 0 - 25");
        _teamFee = teamFee;
    }

    function _setFees(uint256 taxFee, uint256 teamFee) external onlyOwner {
        require(teamFee <= 25, "teamFee should be in 0 - 25");
        require(taxFee <= 25, "taxFee should be in 0 - 25");

        _taxFee = taxFee;
        _teamFee = teamFee;

    }

    function _setTeamPercent(uint256 SCCPercent, uint256 marketingPercent) external onlyOwner {
        require(SCCPercent + marketingPercent == 100, "Sum must be 100");

        _SCCPercent = SCCPercent;
        _marketingPercent = marketingPercent;

    }

    function _setSCCWallet(address payable SCCWalletAddress)
        external
        onlyOwner
    {
        _SCCWalletAddress = SCCWalletAddress;
    }

    function _setNumOfTokensToExchangeForTeam(uint256 numOfTokensToExchangeForTeam) external onlyOwner {
        require(numOfTokensToExchangeForTeam > 5 * 10**3 * 10**9);
        _numOfTokensToExchangeForTeam = numOfTokensToExchangeForTeam;
    }

    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"SCCWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_SCCWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfTokensToExchangeForTeam","type":"uint256"}],"name":"_setNumOfTokensToExchangeForTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"SCCWalletAddress","type":"address"}],"name":"_setSCCWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"SCCPercent","type":"uint256"},{"internalType":"uint256","name":"marketingPercent","type":"uint256"}],"name":"_setTeamPercent","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"_pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

686c6b935b8bbd400000600955684f040aa496003fffff19600a5560c0604052601460808190527f5363617279436861696e4361706974616c20563200000000000000000000000060a09081526200005b91600c919062000c29565b506040805180820190915260038082526253434360e81b60209092019182526200008891600d9162000c29565b50600e805460ff191660091790556005600f8190556010819055601181905560125560326015819055601655601a805461ffff191661010017905569152d02c7e14af6800000601b5565048c27395000601c55348015620000e857600080fd5b50604051620040bb380380620040bb833981810160405260408110156200010e57600080fd5b5080516020909101516000620001236200043a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601380546001600160a01b038085166001600160a01b0319928316179092556014805492841692909116919091179055600a5460036000620001ae6200043a565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600073f491e7b69e4244ad4002bc14e878a34207e38c299050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022557600080fd5b505afa1580156200023a573d6000803e3d6000fd5b505050506040513d60208110156200025157600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015620002a257600080fd5b505afa158015620002b7573d6000803e3d6000fd5b505050506040513d6020811015620002ce57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200032157600080fd5b505af115801562000336573d6000803e3d6000fd5b505050506040513d60208110156200034d57600080fd5b5051601880546001600160a01b03199081166001600160a01b039384161791829055601780549091168484161790556200038a911660016200043e565b6001600660006200039a6200048c565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252902080549091166001179055620003e46200043a565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a350505062000cc5565b3390565b6001600160a01b0382166000908152601960205260409020805460ff19168215801591909117909155620004775762000477826200049b565b806200048857620004888262000687565b5050565b6000546001600160a01b031690565b620004a56200043a565b6000546001600160a01b03908116911614620004f7576040805162461bcd60e51b8152602060048201819052602482015260008051602062004079833981519152604482015290519081900360640190fd5b73f491e7b69e4244ad4002bc14e878a34207e38c296001600160a01b0382161415620005555760405162461bcd60e51b8152600401808060200182810382526022815260200180620040996022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615620005c4576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020541562000621576001600160a01b038116600090815260036020526040902054620006079062000851565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b620006916200043a565b6000546001600160a01b03908116911614620006e3576040805162461bcd60e51b8152602060048201819052602482015260008051602062004079833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff1662000751576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b6008548110156200048857816001600160a01b0316600882815481106200077757fe5b6000918252602090912001546001600160a01b031614156200084857600880546000198101908110620007a657fe5b600091825260209091200154600880546001600160a01b039092169183908110620007cd57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff1916905560088054806200082057fe5b600082815260209020810160001990810180546001600160a01b031916905501905562000488565b60010162000754565b6000600a54821115620008965760405162461bcd60e51b815260040180806020018281038252602a8152602001806200404f602a913960400191505060405180910390fd5b6000620008a2620008c5565b9050620008be8184620008f860201b620020f01790919060201c565b9392505050565b60008080620008d362000942565b91509150620008f18183620008f860201b620020f01790919060201c565b9250505090565b6000620008be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000adb60201b60201c565b600a546009546000918291825b60085481101562000a98578260036000600884815481106200096d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620009d45750816004600060088481548110620009ad57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15620009ed57600a546009549450945050505062000ad7565b62000a3c600360006008848154811062000a0357fe5b60009182526020808320909101546001600160a01b0316835282810193909352604090910190205485916200213962000b82821b17901c565b925062000a8d600460006008848154811062000a5457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604090910190205484916200213962000b82821b17901c565b91506001016200094f565b5062000ab7600954600a54620008f860201b620020f01790919060201c565b82101562000ad157600a5460095493509350505062000ad7565b90925090505b9091565b6000818362000b6b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000b2f57818101518382015260200162000b15565b50505050905090810190601f16801562000b5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000b7857fe5b0495945050505050565b6000620008be83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000bcc60201b60201c565b6000818484111562000c215760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562000b2f57818101518382015260200162000b15565b505050900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000c6c57805160ff191683800117855562000c9c565b8280016001018555821562000c9c579182015b8281111562000c9c57825182559160200191906001019062000c7f565b5062000caa92915062000cae565b5090565b5b8082111562000caa576000815560010162000caf565b61337a8062000cd56000396000f3fe60806040526004361061028c5760003560e01c80636ddd17131161015a578063b62496f5116100c1578063e01af92c1161007a578063e01af92c1461098e578063f2cc0c18146109ba578063f2fde38b146109ed578063f429389014610a20578063f815a84214610a35578063f84354f114610a4a57610293565b8063b62496f514610899578063b6c52324146108cc578063cba0e996146108e1578063d7c94efd14610914578063dd46706414610929578063dd62ed3e1461095357610293565b8063a042324111610113578063a042324114610798578063a071dcf4146107c2578063a457c2d7146107d7578063a69df4b514610810578063a9059cbb14610825578063af9549e01461085e57610293565b80636ddd1713146106d657806370a08231146106eb578063715018a61461071e5780638da5cb5b1461073357806395d89b41146107485780639a7a23d61461075d57610293565b8063313ce567116101fe5780634549b039116101b75780634549b039146105ea57806349bd5a5e1461061c57806351bc3c85146106315780635342acb4146106465780635880b873146106795780635881f3ef146106a357610293565b8063313ce567146104ff57806338a86e091461052a578063395093511461053f5780633aa2e181146105785780633bd5d173146105ab5780634144d9e4146105d557610293565b806318160ddd1161025057806318160ddd146103f95780631bbae6e01461040e57806323b872dd14610438578063286671621461047b5780632d838119146104a5578063305e85ba146104cf57610293565b806306fdde0314610298578063095ea7b31461032257806313114a9d1461036f578063153760bc146103965780631694505e146103c857610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610a7d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102e75781810151838201526020016102cf565b50505050905090810190601f1680156103145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032e57600080fd5b5061035b6004803603604081101561034557600080fd5b506001600160a01b038135169060200135610b13565b604080519115158252519081900360200190f35b34801561037b57600080fd5b50610384610b31565b60408051918252519081900360200190f35b3480156103a257600080fd5b506103c6600480360360408110156103b957600080fd5b5080359060200135610b37565b005b3480156103d457600080fd5b506103dd610be3565b604080516001600160a01b039092168252519081900360200190f35b34801561040557600080fd5b50610384610bf2565b34801561041a57600080fd5b506103c66004803603602081101561043157600080fd5b5035610bf8565b34801561044457600080fd5b5061035b6004803603606081101561045b57600080fd5b506001600160a01b03813581169160208101359091169060400135610c55565b34801561048757600080fd5b506103c66004803603602081101561049e57600080fd5b5035610cdc565b3480156104b157600080fd5b50610384600480360360208110156104c857600080fd5b5035610d8f565b3480156104db57600080fd5b506103c6600480360360408110156104f257600080fd5b5080359060200135610df1565b34801561050b57600080fd5b50610514610f00565b6040805160ff9092168252519081900360200190f35b34801561053657600080fd5b506103dd610f09565b34801561054b57600080fd5b5061035b6004803603604081101561056257600080fd5b506001600160a01b038135169060200135610f18565b34801561058457600080fd5b506103c66004803603602081101561059b57600080fd5b50356001600160a01b0316610f66565b3480156105b757600080fd5b506103c6600480360360208110156105ce57600080fd5b5035610fe0565b3480156105e157600080fd5b506103dd6110ba565b3480156105f657600080fd5b506103846004803603604081101561060d57600080fd5b508035906020013515156110c9565b34801561062857600080fd5b506103dd61115b565b34801561063d57600080fd5b506103c661116a565b34801561065257600080fd5b5061035b6004803603602081101561066957600080fd5b50356001600160a01b03166111db565b34801561068557600080fd5b506103c66004803603602081101561069c57600080fd5b50356111f9565b3480156106af57600080fd5b506103dd600480360360208110156106c657600080fd5b50356001600160a01b03166112ac565b3480156106e257600080fd5b5061035b611606565b3480156106f757600080fd5b506103846004803603602081101561070e57600080fd5b50356001600160a01b0316611614565b34801561072a57600080fd5b506103c6611676565b34801561073f57600080fd5b506103dd611706565b34801561075457600080fd5b506102ad611715565b34801561076957600080fd5b506103c66004803603604081101561078057600080fd5b506001600160a01b0381351690602001351515611776565b3480156107a457600080fd5b506103c6600480360360208110156107bb57600080fd5b5035611829565b3480156107ce57600080fd5b50610384611898565b3480156107e357600080fd5b5061035b600480360360408110156107fa57600080fd5b506001600160a01b03813516906020013561189e565b34801561081c57600080fd5b506103c6611906565b34801561083157600080fd5b5061035b6004803603604081101561084857600080fd5b506001600160a01b0381351690602001356119f4565b34801561086a57600080fd5b506103c66004803603604081101561088157600080fd5b506001600160a01b0381351690602001351515611a08565b3480156108a557600080fd5b5061035b600480360360208110156108bc57600080fd5b50356001600160a01b0316611a8b565b3480156108d857600080fd5b50610384611aa0565b3480156108ed57600080fd5b5061035b6004803603602081101561090457600080fd5b50356001600160a01b0316611aa6565b34801561092057600080fd5b50610384611ac4565b34801561093557600080fd5b506103c66004803603602081101561094c57600080fd5b5035611aca565b34801561095f57600080fd5b506103846004803603604081101561097657600080fd5b506001600160a01b0381358116916020013516611b68565b34801561099a57600080fd5b506103c6600480360360208110156109b157600080fd5b50351515611b93565b3480156109c657600080fd5b506103c6600480360360208110156109dd57600080fd5b50356001600160a01b0316611c05565b3480156109f957600080fd5b506103c660048036036020811015610a1057600080fd5b50356001600160a01b0316611de7565b348015610a2c57600080fd5b506103c6611ecd565b348015610a4157600080fd5b50610384611f2f565b348015610a5657600080fd5b506103c660048036036020811015610a6d57600080fd5b50356001600160a01b0316611f33565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b095780601f10610ade57610100808354040283529160200191610b09565b820191906000526020600020905b815481529060010190602001808311610aec57829003601f168201915b5050505050905090565b6000610b27610b2061217b565b848461217f565b5060015b92915050565b600b5490565b610b3f61217b565b6000546001600160a01b03908116911614610b8f576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b808201606414610bd8576040805162461bcd60e51b815260206004820152600f60248201526e053756d206d7573742062652031303608c1b604482015290519081900360640190fd5b601591909155601655565b6017546001600160a01b031681565b60095490565b610c0061217b565b6000546001600160a01b03908116911614610c50576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b601b55565b6000610c6284848461226b565b610cd284610c6e61217b565b610ccd856040518060600160405280602881526020016131d5602891396001600160a01b038a16600090815260056020526040812090610cac61217b565b6001600160a01b0316815260208101919091526040016000205491906124f0565b61217f565b5060019392505050565b610ce461217b565b6000546001600160a01b03908116911614610d34576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b6019811115610d8a576040805162461bcd60e51b815260206004820152601b60248201527f7465616d4665652073686f756c6420626520696e2030202d2032350000000000604482015290519081900360640190fd5b601055565b6000600a54821115610dd25760405162461bcd60e51b815260040180806020018281038252602a8152602001806130da602a913960400191505060405180910390fd5b6000610ddc612587565b9050610de883826120f0565b9150505b919050565b610df961217b565b6000546001600160a01b03908116911614610e49576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b6019811115610e9f576040805162461bcd60e51b815260206004820152601b60248201527f7465616d4665652073686f756c6420626520696e2030202d2032350000000000604482015290519081900360640190fd5b6019821115610ef5576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2030202d203235000000000000604482015290519081900360640190fd5b600f91909155601055565b600e5460ff1690565b6013546001600160a01b031681565b6000610b27610f2561217b565b84610ccd8560056000610f3661217b565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906125aa565b610f6e61217b565b6000546001600160a01b03908116911614610fbe576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610fea61217b565b6001600160a01b03811660009081526007602052604090205490915060ff16156110455760405162461bcd60e51b815260040180806020018281038252602c8152602001806132d1602c913960400191505060405180910390fd5b600061105083612604565b505050506001600160a01b03841660009081526003602052604090205491925061107c91905082612139565b6001600160a01b038316600090815260036020526040902055600a546110a29082612139565b600a55600b546110b290846125aa565b600b55505050565b6014546001600160a01b031681565b6000600954831115611122576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161114157600061113284612604565b50939550610b2b945050505050565b600061114c84612604565b50929550610b2b945050505050565b6018546001600160a01b031681565b61117261217b565b6000546001600160a01b039081169116146111c2576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b60006111cd30611614565b90506111d881612661565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b61120161217b565b6000546001600160a01b03908116911614611251576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b60198111156112a7576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2030202d203235000000000000604482015290519081900360640190fd5b600f55565b60006112b661217b565b6000546001600160a01b03908116911614611306576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050506040513d602081101561136e57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263e6a439059230929186169163ad5c464891600480820192602092909190829003018186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d60208110156113e857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b505050506040513d602081101561146257600080fd5b505191506001600160a01b0382166115d257806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114ad57600080fd5b505afa1580156114c1573d6000803e3d6000fd5b505050506040513d60208110156114d757600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b15801561152757600080fd5b505afa15801561153b573d6000803e3d6000fd5b505050506040513d602081101561155157600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156115a357600080fd5b505af11580156115b7573d6000803e3d6000fd5b505050506040513d60208110156115cd57600080fd5b505191505b601880546001600160a01b038085166001600160a01b03199283161790925560178054939092169216919091179055919050565b601a54610100900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff161561165457506001600160a01b038116600090815260046020526040902054610dec565b6001600160a01b038216600090815260036020526040902054610b2b90610d8f565b61167e61217b565b6000546001600160a01b039081169116146116ce576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b600080546040516001600160a01b039091169060008051602061321d833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b095780601f10610ade57610100808354040283529160200191610b09565b61177e61217b565b6000546001600160a01b039081169116146117ce576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b6018546001600160a01b038381169116141561181b5760405162461bcd60e51b815260040180806020018281038252604081526020018061314c6040913960400191505060405180910390fd5b6118258282612826565b5050565b61183161217b565b6000546001600160a01b03908116911614611881576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b65048c27395000811161189357600080fd5b601c55565b600f5490565b6000610b276118ab61217b565b84610ccd8560405180606001604052806025815260200161332060259139600560006118d561217b565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906124f0565b6001546001600160a01b0316331461194f5760405162461bcd60e51b81526004018080602001828103825260238152602001806132fd6023913960400191505060405180910390fd5b60025442116119a5576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b03938416939091169160008051602061321d83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b27611a0161217b565b848461226b565b611a1061217b565b6000546001600160a01b03908116911614611a60576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60196020526000908152604090205460ff1681565b60025490565b6001600160a01b031660009081526007602052604090205460ff1690565b60105490565b611ad261217b565b6000546001600160a01b03908116911614611b22576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b03841617909155168155428201600255604051819060008051602061321d833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611b9b61217b565b6000546001600160a01b03908116911614611beb576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b601a80549115156101000261ff0019909216919091179055565b611c0d61217b565b6000546001600160a01b03908116911614611c5d576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b73f491e7b69e4244ad4002bc14e878a34207e38c296001600160a01b0382161415611cb95760405162461bcd60e51b81526004018080602001828103825260228152602001806132af6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611d27576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205415611d81576001600160a01b038116600090815260036020526040902054611d6790610d8f565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611def61217b565b6000546001600160a01b03908116911614611e3f576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b6001600160a01b038116611e845760405162461bcd60e51b81526004018080602001828103825260268152602001806131046026913960400191505060405180910390fd5b600080546040516001600160a01b038085169392169160008051602061321d83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611ed561217b565b6000546001600160a01b03908116911614611f25576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b476111d88161286a565b4790565b611f3b61217b565b6000546001600160a01b03908116911614611f8b576040805162461bcd60e51b815260206004820181905260248201526000805160206131fd833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611ff8576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b60085481101561182557816001600160a01b03166008828154811061201c57fe5b6000918252602090912001546001600160a01b031614156120e85760088054600019810190811061204957fe5b600091825260209091200154600880546001600160a01b03909216918390811061206f57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff1916905560088054806120c157fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611825565b600101611ffb565b600061213283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612911565b9392505050565b600061213283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124f0565b3390565b6001600160a01b0383166121c45760405162461bcd60e51b815260040180806020018281038252602481526020018061328b6024913960400191505060405180910390fd5b6001600160a01b0382166122095760405162461bcd60e51b815260040180806020018281038252602281526020018061312a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122b05760405162461bcd60e51b81526004018080602001828103825260258152602001806132666025913960400191505060405180910390fd5b6001600160a01b0382166122f55760405162461bcd60e51b81526004018080602001828103825260238152602001806130b76023913960400191505060405180910390fd5b600081116123345760405162461bcd60e51b815260040180806020018281038252602981526020018061323d6029913960400191505060405180910390fd5b61233c611706565b6001600160a01b0316836001600160a01b0316141580156123765750612360611706565b6001600160a01b0316826001600160a01b031614155b156123bc57601b548111156123bc5760405162461bcd60e51b815260040180806020018281038252602881526020018061318c6028913960400191505060405180910390fd5b60006123c730611614565b9050601b5481106123d75750601b545b601c54601a54908210159060ff161580156123f95750601a54610100900460ff165b80156124025750805b801561242657506001600160a01b03841660009081526019602052604090205460ff165b156124465761243482612661565b478015612444576124444761286a565b505b6001600160a01b03851660009081526006602052604090205460019060ff168061248857506001600160a01b03851660009081526006602052604090205460ff165b15612491575060005b6001600160a01b03861660009081526019602052604090205460ff161580156124d357506001600160a01b03851660009081526019602052604090205460ff16155b156124dc575060005b6124e886868684612976565b505050505050565b6000818484111561257f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561254457818101518382015260200161252c565b50505050905090810190601f1680156125715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612594612aea565b90925090506125a382826120f0565b9250505090565b600082820183811015612132576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006126218a600f54601054612c4d565b9250925092506000612631612587565b905060008060006126448e878787612c9c565b919e509c509a509598509396509194505050505091939550919395565b601a805460ff191660011790556040805160028082526060808301845292602083019080368337019050509050308160008151811061269c57fe5b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156126f057600080fd5b505afa158015612704573d6000803e3d6000fd5b505050506040513d602081101561271a57600080fd5b505181518290600190811061272b57fe5b6001600160a01b039283166020918202929092010152601754612751913091168461217f565b60175460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156127d75781810151838201526020016127bf565b505050509050019650505050505050600060405180830381600087803b15801561280057600080fd5b505af1158015612814573d6000803e3d6000fd5b5050601a805460ff1916905550505050565b6001600160a01b0382166000908152601960205260409020805460ff1916821580159190911790915561285c5761285c82611c05565b806118255761182582611f33565b6013546015546001600160a01b03909116906108fc9061289890606490612892908690612cec565b906120f0565b6040518115909202916000818181858888f193505050501580156128c0573d6000803e3d6000fd5b506014546016546001600160a01b03909116906108fc906128e990606490612892908690612cec565b6040518115909202916000818181858888f19350505050158015611825573d6000803e3d6000fd5b600081836129605760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561254457818101518382015260200161252c565b50600083858161296c57fe5b0495945050505050565b8061298357612983612d45565b6001600160a01b03841660009081526007602052604090205460ff1680156129c457506001600160a01b03831660009081526007602052604090205460ff16155b156129d9576129d4848484612d77565b612ad7565b6001600160a01b03841660009081526007602052604090205460ff16158015612a1a57506001600160a01b03831660009081526007602052604090205460ff165b15612a2a576129d4848484612e9b565b6001600160a01b03841660009081526007602052604090205460ff16158015612a6c57506001600160a01b03831660009081526007602052604090205460ff16155b15612a7c576129d4848484612f44565b6001600160a01b03841660009081526007602052604090205460ff168015612abc57506001600160a01b03831660009081526007602052604090205460ff165b15612acc576129d4848484612f88565b612ad7848484612f44565b80612ae457612ae4612ffb565b50505050565b600a546009546000918291825b600854811015612c1b57826003600060088481548110612b1357fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b785750816004600060088481548110612b5157fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b8f57600a5460095494509450505050612c49565b612bcf6003600060088481548110612ba357fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612139565b9250612c116004600060088481548110612be557fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612139565b9150600101612af7565b50600954600a54612c2b916120f0565b821015612c4357600a54600954935093505050612c49565b90925090505b9091565b6000808080612c6160646128928989612cec565b90506000612c7460646128928a89612cec565b90506000612c8c82612c868b86612139565b90612139565b9992985090965090945050505050565b6000808080612cab8886612cec565b90506000612cb98887612cec565b90506000612cc78888612cec565b90506000612cd982612c868686612139565b939b939a50919850919650505050505050565b600082612cfb57506000610b2b565b82820282848281612d0857fe5b04146121325760405162461bcd60e51b81526004018080602001828103825260218152602001806131b46021913960400191505060405180910390fd5b600f54158015612d555750601054155b15612d5f57612d75565b600f805460115560108054601255600091829055555b565b600080600080600080612d8987612604565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612dbb9088612139565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612dea9087612139565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612e1990866125aa565b6001600160a01b038916600090815260036020526040902055612e3b81613009565b612e458483613092565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612ead87612604565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612edf9087612139565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612f1590846125aa565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612e1990866125aa565b600080600080600080612f5687612604565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612dea9087612139565b600080600080600080612f9a87612604565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612fcc9088612139565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612edf9087612139565b601154600f55601254601055565b6000613013612587565b905060006130218383612cec565b3060009081526003602052604090205490915061303e90826125aa565b3060009081526003602090815260408083209390935560079052205460ff161561308d573060009081526004602052604090205461307c90846125aa565b306000908152600460205260409020555b505050565b600a5461309f9083612139565b600a55600b546130af90826125aa565b600b55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735468652061637475616c20706169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657250616972735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e5db9351f8c471a7e071dd2a7a55ace83af8d5c8b1af3afaa701e586fe681c3e64736f6c634300060c0033416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657257652063616e206e6f74206578636c75646520556e697377617020726f757465722e0000000000000000000000007640d7a1b4ce2674f63839dbfe78406fa5cbf2bb00000000000000000000000007739917ae924d735f9fdd4b280710ba0733e3af

Deployed ByteCode Sourcemap

26989:21862:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29735:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30900:193;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30900:193:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;33037:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;48055:259;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48055:259:0;;;;;;;:::i;:::-;;28105:41;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;28105:41:0;;;;;;;;;;;;;;30192:95;;;;;;;;;;;;;:::i;48738:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48738:110:0;;:::i;31583:446::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31583:446:0;;;;;;;;;;;;;;;;;:::i;47617:158::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47617:158:0;;:::i;34046:322::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34046:322:0;;:::i;47783:264::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47783:264:0;;;;;;;:::i;30101:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27919:40;;;;;;;;;;;;;:::i;32037:300::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32037:300:0;;;;;;;;:::i;48322:154::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48322:154:0;-1:-1:-1;;;;;48322:154:0;;:::i;33132:419::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33132:419:0;;:::i;27966:46::-;;;;;;;;;;;;;:::i;33559:479::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33559:479:0;;;;;;;;;:::i;28153:28::-;;;;;;;;;;;;;:::i;39293:154::-;;;;;;;;;;;;;:::i;35685:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35685:124:0;-1:-1:-1;;;;;35685:124:0;;:::i;47457:152::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47457:152:0;;:::i;46711:738::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46711:738:0;-1:-1:-1;;;;;46711:738:0;;:::i;28281:30::-;;;;;;;;;;;;;:::i;30295:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30295:198:0;-1:-1:-1;;;;;30295:198:0;;:::i;16239:148::-;;;;;;;;;;;;;:::i;15597:79::-;;;;;;;;;;;;;:::i;29826:87::-;;;;;;;;;;;;;:::i;31101:251::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31101:251:0;;;;;;;;;;:::i;48484:246::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48484:246:0;;:::i;29921:81::-;;;;;;;;;;;;;:::i;32345:400::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32345:400:0;;;;;;;;:::i;17282:329::-;;;;;;;;;;;;;:::i;30501:199::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30501:199:0;;;;;;;;:::i;32871:158::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32871:158:0;;;;;;;;;;:::i;28188:58::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28188:58:0;-1:-1:-1;;;;;28188:58:0;;:::i;16831:89::-;;;;;;;;;;;;;:::i;32753:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32753:110:0;-1:-1:-1;;;;;32753:110:0;;:::i;30010:83::-;;;;;;;;;;;;;:::i;16996:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16996:214:0;;:::i;30708:184::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30708:184:0;;;;;;;;;;:::i;39617:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39617:97:0;;;;:::i;34376:477::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34376:477:0;-1:-1:-1;;;;;34376:477:0;;:::i;16542:281::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16542:281:0;-1:-1:-1;;;;;16542:281:0;;:::i;39455:154::-;;;;;;;;;;;;;:::i;46592:111::-;;;;;;;;;;;;;:::i;34861:474::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34861:474:0;-1:-1:-1;;;;;34861:474:0;;:::i;29735:83::-;29805:5;29798:12;;;;;;;;-1:-1:-1;;29798:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29772:13;;29798:12;;29805:5;;29798:12;;29805:5;29798:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29735:83;:::o;30900:193::-;31002:4;31024:39;31033:12;:10;:12::i;:::-;31047:7;31056:6;31024:8;:39::i;:::-;-1:-1:-1;31081:4:0;30900:193;;;;;:::o;33037:87::-;33106:10;;33037:87;:::o;48055:259::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;48177:16:::1;48164:10;:29;48197:3;48164:36;48156:64;;;::::0;;-1:-1:-1;;;48156:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;48156:64:0;;;;;;;;;;;;;::::1;;48233:11;:24:::0;;;;48268:17:::1;:36:::0;48055:259::o;28105:41::-;;;-1:-1:-1;;;;;28105:41:0;;:::o;30192:95::-;30272:7;;30192:95;:::o;48738:110::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;48814:12:::1;:26:::0;48738:110::o;31583:446::-;31715:4;31732:36;31742:6;31750:9;31761:6;31732:9;:36::i;:::-;31779:220;31802:6;31823:12;:10;:12::i;:::-;31850:138;31906:6;31850:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31850:19:0;;;;;;:11;:19;;;;;;31870:12;:10;:12::i;:::-;-1:-1:-1;;;;;31850:33:0;;;;;;;;;;;;-1:-1:-1;31850:33:0;;;:138;:37;:138::i;:::-;31779:8;:220::i;:::-;-1:-1:-1;32017:4:0;31583:446;;;;;:::o;47617:158::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;47704:2:::1;47693:7;:13;;47685:53;;;::::0;;-1:-1:-1;;;47685:53:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;47749:8;:18:::0;47617:158::o;34046:322::-;34140:7;34198;;34187;:18;;34165:110;;;;-1:-1:-1;;;34165:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34286:19;34308:10;:8;:10::i;:::-;34286:32;-1:-1:-1;34336:24:0;:7;34286:32;34336:11;:24::i;:::-;34329:31;;;34046:322;;;;:::o;47783:264::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;47883:2:::1;47872:7;:13;;47864:53;;;::::0;;-1:-1:-1;;;47864:53:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;47946:2;47936:6;:12;;47928:51;;;::::0;;-1:-1:-1;;;47928:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;47992:7;:16:::0;;;;48019:8:::1;:18:::0;47783:264::o;30101:83::-;30167:9;;;;30101:83;:::o;27919:40::-;;;-1:-1:-1;;;;;27919:40:0;;:::o;32037:300::-;32152:4;32174:133;32197:12;:10;:12::i;:::-;32224:7;32246:50;32285:10;32246:11;:25;32258:12;:10;:12::i;:::-;-1:-1:-1;;;;;32246:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;32246:25:0;;;:34;;;;;;;;;;;:38;:50::i;48322:154::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;48432:17:::1;:36:::0;;-1:-1:-1;;;;;;48432:36:0::1;-1:-1:-1::0;;;;;48432:36:0;;;::::1;::::0;;;::::1;::::0;;48322:154::o;33132:419::-;33184:14;33201:12;:10;:12::i;:::-;-1:-1:-1;;;;;33247:19:0;;;;;;:11;:19;;;;;;33184:29;;-1:-1:-1;33247:19:0;;33246:20;33224:114;;;;-1:-1:-1;;;33224:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33350:15;33379:19;33390:7;33379:10;:19::i;:::-;-1:-1:-1;;;;;;;;;33427:15:0;;;;;;:7;:15;;;;;;33349:49;;-1:-1:-1;33427:28:0;;:15;-1:-1:-1;33349:49:0;33427:19;:28::i;:::-;-1:-1:-1;;;;;33409:15:0;;;;;;:7;:15;;;;;:46;33476:7;;:20;;33488:7;33476:11;:20::i;:::-;33466:7;:30;33520:10;;:23;;33535:7;33520:14;:23::i;:::-;33507:10;:36;-1:-1:-1;;;33132:419:0:o;27966:46::-;;;-1:-1:-1;;;;;27966:46:0;;:::o;33559:479::-;33677:7;33721;;33710;:18;;33702:62;;;;;-1:-1:-1;;;33702:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;33780:17;33775:256;;33815:15;33844:19;33855:7;33844:10;:19::i;:::-;-1:-1:-1;33814:49:0;;-1:-1:-1;33878:14:0;;-1:-1:-1;;;;;33878:14:0;33775:256;33928:23;33963:19;33974:7;33963:10;:19::i;:::-;-1:-1:-1;33925:57:0;;-1:-1:-1;33997:22:0;;-1:-1:-1;;;;;33997:22:0;28153:28;;;-1:-1:-1;;;;;28153:28:0;;:::o;39293:154::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;39345:23:::1;39371:24;39389:4;39371:9;:24::i;:::-;39345:50;;39406:33;39423:15;39406:16;:33::i;:::-;15879:1;39293:154::o:0;35685:124::-;-1:-1:-1;;;;;35774:27:0;35750:4;35774:27;;;:18;:27;;;;;;;;;35685:124::o;47457:152::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;47541:2:::1;47531:6;:12;;47523:51;;;::::0;;-1:-1:-1;;;47523:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;47585:7;:16:::0;47457:152::o;46711:738::-;46812:13;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;46843:35:::1;46900:7;46843:65;;46947:16;-1:-1:-1::0;;;;;46947:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;46947:26:0;47025:23:::1;::::0;;-1:-1:-1;;;47025:23:0;;;;-1:-1:-1;;;;;46929:53:0;;::::1;::::0;::::1;::::0;47005:4:::1;::::0;47025:21;;::::1;::::0;::::1;::::0;:23:::1;::::0;;::::1;::::0;46947:26:::1;::::0;47025:23;;;;;;;;:21;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;47025:23:0;46929:130:::1;::::0;;-1:-1:-1;;;;;;46929:130:0::1;::::0;;;;;;-1:-1:-1;;;;;46929:130:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;47025:23:::1;::::0;46929:130;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;46929:130:0;;-1:-1:-1;;;;;;47074:19:0;::::1;47070:240;;47171:16;-1:-1:-1::0;;;;;47171:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;47171:26:0;47260:23:::1;::::0;;-1:-1:-1;;;47260:23:0;;;;-1:-1:-1;;;;;47153:56:0;;::::1;::::0;::::1;::::0;47236:4:::1;::::0;47260:21;;::::1;::::0;::::1;::::0;:23:::1;::::0;;::::1;::::0;47171:26:::1;::::0;47260:23;;;;;;;;:21;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;47260:23:0;47153:145:::1;::::0;;-1:-1:-1;;;;;;47153:145:0::1;::::0;;;;;;-1:-1:-1;;;;;47153:145:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;47260:23:::1;::::0;47153:145;;;;;;;-1:-1:-1;47153:145:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;47153:145:0;;-1:-1:-1;47070:240:0::1;47320:13;:21:::0;;-1:-1:-1;;;;;47320:21:0;;::::1;-1:-1:-1::0;;;;;;47320:21:0;;::::1;;::::0;;;47407:15:::1;:34:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;47336:5;46711:738;-1:-1:-1;46711:738:0:o;28281:30::-;;;;;;;;;:::o;30295:198::-;-1:-1:-1;;;;;30385:20:0;;30361:7;30385:20;;;:11;:20;;;;;;;;30381:49;;;-1:-1:-1;;;;;;30414:16:0;;;;;;:7;:16;;;;;;30407:23;;30381:49;-1:-1:-1;;;;;30468:16:0;;;;;;:7;:16;;;;;;30448:37;;:19;:37::i;16239:148::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;16346:1:::1;16330:6:::0;;16309:40:::1;::::0;-1:-1:-1;;;;;16330:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;16309:40:0;16346:1;;16309:40:::1;16377:1;16360:19:::0;;-1:-1:-1;;;;;;16360:19:0::1;::::0;;16239:148::o;15597:79::-;15635:7;15662:6;-1:-1:-1;;;;;15662:6:0;15597:79;:::o;29826:87::-;29898:7;29891:14;;;;;;;;-1:-1:-1;;29891:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29865:13;;29891:14;;29898:7;;29891:14;;29898:7;29891:14;;;;;;;;;;;;;;;;;;;;;;;;31101:251;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;31208:13:::1;::::0;-1:-1:-1;;;;;31200:21:0;;::::1;31208:13:::0;::::1;31200:21;;31192:98;;;;-1:-1:-1::0;;;31192:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31303:41;31332:4;31338:5;31303:28;:41::i;:::-;31101:251:::0;;:::o;48484:246::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;48633:17:::1;48602:28;:48;48594:57;;;::::0;::::1;;48662:29;:60:::0;48484:246::o;29921:81::-;29987:7;;29921:81;:::o;32345:400::-;32465:4;32487:228;32510:12;:10;:12::i;:::-;32537:7;32559:145;32616:15;32559:145;;;;;;;;;;;;;;;;;:11;:25;32571:12;:10;:12::i;:::-;-1:-1:-1;;;;;32559:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;32559:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;17282:329::-;17348:14;;-1:-1:-1;;;;;17348:14:0;17366:10;17348:28;17326:113;;;;-1:-1:-1;;;17326:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17464:9;;17458:3;:15;17450:59;;;;;-1:-1:-1;;;17450:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17554:14;;;17546:6;;17525:44;;-1:-1:-1;;;;;17554:14:0;;;;17546:6;;;;-1:-1:-1;;;;;;;;;;;17525:44:0;;17589:14;;;17580:23;;-1:-1:-1;;;;;;17580:23:0;-1:-1:-1;;;;;17589:14:0;;;17580:23;;;;;;17282:329::o;30501:199::-;30606:4;30628:42;30638:12;:10;:12::i;:::-;30652:9;30663:6;30628:9;:42::i;32871:158::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32983:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;32983:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32871:158::o;28188:58::-;;;;;;;;;;;;;;;:::o;16831:89::-;16903:9;;16831:89;:::o;32753:110::-;-1:-1:-1;;;;;32835:20:0;32811:4;32835:20;;;:11;:20;;;;;;;;;32753:110::o;30010:83::-;30077:8;;30010:83;:::o;16996:214::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;17077:6:::1;::::0;;;17060:23;;-1:-1:-1;;;;;;17060:23:0;;::::1;-1:-1:-1::0;;;;;17077:6:0;::::1;17060:23;::::0;;;17094:19:::1;::::0;;17136:3:::1;:10:::0;::::1;17124:9;:22:::0;17162:40:::1;::::0;17077:6;;-1:-1:-1;;;;;;;;;;;17162:40:0;17077:6;;17162:40:::1;16996:214:::0;:::o;30708:184::-;-1:-1:-1;;;;;30857:18:0;;;30825:7;30857:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;30708:184::o;39617:97::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;39685:11:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;39685:21:0;;::::1;::::0;;;::::1;::::0;;39617:97::o;34376:477::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;34478:42:::1;-1:-1:-1::0;;;;;34467:53:0;::::1;;;34445:137;;;;-1:-1:-1::0;;;34445:137:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;34602:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;34601:21;34593:61;;;::::0;;-1:-1:-1;;;34593:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;34669:16:0;::::1;34688:1;34669:16:::0;;;:7:::1;:16;::::0;;;;;:20;34665:109:::1;;-1:-1:-1::0;;;;;34745:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;34725:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;34706:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;34665:109:::1;-1:-1:-1::0;;;;;34784:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;34784:27:0::1;34807:4;34784:27:::0;;::::1;::::0;;;34822:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;34822:23:0::1;::::0;;::::1;::::0;;34376:477::o;16542:281::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16645:22:0;::::1;16623:110;;;;-1:-1:-1::0;;;16623:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16770:6;::::0;;16749:38:::1;::::0;-1:-1:-1;;;;;16749:38:0;;::::1;::::0;16770:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;16749:38:0;::::1;16798:6;:17:::0;;-1:-1:-1;;;;;;16798:17:0::1;-1:-1:-1::0;;;;;16798:17:0;;;::::1;::::0;;;::::1;::::0;;16542:281::o;39455:154::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;39536:21:::1;39568:33;39536:21:::0;39568:13:::1;:33::i;46592:111::-:0;46674:21;46592:111;:::o;34861:474::-;15819:12;:10;:12::i;:::-;15809:6;;-1:-1:-1;;;;;15809:6:0;;;:22;;;15801:67;;;;;-1:-1:-1;;;15801:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15801:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34938:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;34930:60;;;::::0;;-1:-1:-1;;;34930:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;35006:9;35001:327;35025:9;:16:::0;35021:20;::::1;35001:327;;;35083:7;-1:-1:-1::0;;;;;35067:23:0::1;:9;35077:1;35067:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;35067:12:0::1;:23;35063:254;;;35126:9;35136:16:::0;;-1:-1:-1;;35136:20:0;;;35126:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;35111:9:::1;:12:::0;;-1:-1:-1;;;;;35126:31:0;;::::1;::::0;35121:1;;35111:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;35111:46:0::1;-1:-1:-1::0;;;;;35111:46:0;;::::1;;::::0;;35176:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;35215:11:::1;:20:::0;;;;:28;;-1:-1:-1;;35215:28:0::1;::::0;;35262:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;35262:15:0;;;;;-1:-1:-1;;;;;;35262:15:0::1;::::0;;;;;35296:5:::1;;35063:254;35043:3;;35001:327;;6274:132:::0;6332:7;6359:39;6363:1;6366;6359:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6352:46;6274:132;-1:-1:-1;;;6274:132:0:o;4409:136::-;4467:7;4494:43;4498:1;4501;4494:43;;;;;;;;;;;;;;;;;:3;:43::i;580:106::-;668:10;580:106;:::o;35817:369::-;-1:-1:-1;;;;;35944:19:0;;35936:68;;;;-1:-1:-1;;;35936:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36023:21:0;;36015:68;;;;-1:-1:-1;;;36015:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36094:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36146:32;;;;;;;;;;;;;;;;;35817:369;;;:::o;36194:2127::-;-1:-1:-1;;;;;36325:20:0;;36317:70;;;;-1:-1:-1;;;36317:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36406:23:0;;36398:71;;;;-1:-1:-1;;;36398:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36497:1;36488:6;:10;36480:64;;;;-1:-1:-1;;;36480:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36569:7;:5;:7::i;:::-;-1:-1:-1;;;;;36559:17:0;:6;-1:-1:-1;;;;;36559:17:0;;;:41;;;;;36593:7;:5;:7::i;:::-;-1:-1:-1;;;;;36580:20:0;:9;-1:-1:-1;;;;;36580:20:0;;;36559:41;36555:184;;;36651:12;;36641:6;:22;;36615:124;;;;-1:-1:-1;;;36615:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37000:28;37031:24;37049:4;37031:9;:24::i;:::-;37000:55;;37094:12;;37070:20;:36;37066:104;;-1:-1:-1;37146:12:0;;37066:104;37244:29;;37303:6;;37207:66;;;;;37303:6;;37302:7;:35;;;;-1:-1:-1;37326:11:0;;;;;;;37302:35;:71;;;;;37354:19;37302:71;:124;;;;-1:-1:-1;;;;;;37390:36:0;;;;;;:25;:36;;;;;;;;37302:124;37284:483;;;37539:38;37556:20;37539:16;:38::i;:::-;37621:21;37661:22;;37657:99;;37704:36;37718:21;37704:13;:36::i;:::-;37284:483;;-1:-1:-1;;;;;37956:26:0;;37838:12;37956:26;;;:18;:26;;;;;;37853:4;;37956:26;;;:59;;-1:-1:-1;;;;;;37986:29:0;;;;;;:18;:29;;;;;;;;37956:59;37952:107;;;-1:-1:-1;38042:5:0;37952:107;-1:-1:-1;;;;;38075:33:0;;;;;;:25;:33;;;;;;;;38074:34;:75;;;;-1:-1:-1;;;;;;38113:36:0;;;;;;:25;:36;;;;;;;;38112:37;38074:75;38071:122;;;-1:-1:-1;38176:5:0;38071:122;38263:50;38278:6;38286:9;38297:6;38305:7;38263:14;:50::i;:::-;36194:2127;;;;;;:::o;4848:224::-;4968:7;5004:12;4996:6;;;;4988:29;;;;-1:-1:-1;;;4988:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5040:5:0;;;4848:224::o;45609:164::-;45651:7;45672:15;45689;45708:19;:17;:19::i;:::-;45671:56;;-1:-1:-1;45671:56:0;-1:-1:-1;45745:20:0;45671:56;;45745:11;:20::i;:::-;45738:27;;;;45609:164;:::o;3947:179::-;4005:7;4037:5;;;4061:6;;;;4053:46;;;;;-1:-1:-1;;;4053:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;43883:701;43983:7;44005;44027;44049;44071;44093;44129:23;44154:12;44168:13;44185:89;44211:7;44233;;44255:8;;44185:11;:89::i;:::-;44128:146;;;;;;44285:19;44307:10;:8;:10::i;:::-;44285:32;;44329:15;44346:23;44371:12;44387:109;44413:7;44435:4;44454:5;44474:11;44387;:109::i;:::-;44328:168;;-1:-1:-1;44328:168:0;-1:-1:-1;44328:168:0;-1:-1:-1;44547:15:0;;-1:-1:-1;44564:4:0;;-1:-1:-1;44570:5:0;;-1:-1:-1;;;;;43883:701:0;;;;;;;:::o;38329:597::-;28658:6;:13;;-1:-1:-1;;28658:13:0;28667:4;28658:13;;;38491:16:::1;::::0;;38505:1:::1;38491:16:::0;;;38467:21:::1;38491:16:::0;;::::1;::::0;;38467:21;38491:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;38491:16:0::1;38467:40;;38536:4;38518;38523:1;38518:7;;;;;;;;-1:-1:-1::0;;;;;38518:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;38562:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;38562:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;38518:7;;38562:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;38562:22:0;38552:7;;:4;;38557:1:::1;::::0;38552:7;::::1;;;;;-1:-1:-1::0;;;;;38552:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;38627:15:::1;::::0;38595:62:::1;::::0;38612:4:::1;::::0;38627:15:::1;38645:11:::0;38595:8:::1;:62::i;:::-;38694:15;::::0;:224:::1;::::0;-1:-1:-1;;;38694:224:0;;::::1;::::0;::::1;::::0;;;:15:::1;:224:::0;;;;;;38872:4:::1;38694:224:::0;;;;;;38892:15:::1;38694:224:::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38694:15:0;;::::1;::::0;:66:::1;::::0;38775:11;;38845:4;;38872;38892:15;38694:224;;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;:15;:224:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;28694:6:0;:14;;-1:-1:-1;;28694:14:0;;;-1:-1:-1;;;;38329:597:0:o;31360:215::-;-1:-1:-1;;;;;31443:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;31443:39:0;;;;;;;;;;;;31493:32;;31503:20;31518:4;31503:14;:20::i;:::-;31539:5;31535:33;;31546:20;31561:4;31546:14;:20::i;38934:209::-;38992:17;;39030:11;;-1:-1:-1;;;;;38992:17:0;;;;:60;;39019:32;;39047:3;;39019:23;;:6;;:10;:23::i;:::-;:27;;:32::i;:::-;38992:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39063:23:0;;39107:17;;-1:-1:-1;;;;;39063:23:0;;;;:72;;39096:38;;39130:3;;39096:29;;:6;;:10;:29::i;:38::-;39063:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6902:310;7022:7;7057:12;7050:5;7042:28;;;;-1:-1:-1;;;7042:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7081:9;7097:1;7093;:5;;;;;;;6902:310;-1:-1:-1;;;;;6902:310:0:o;39722:834::-;39878:7;39873:28;;39887:14;:12;:14::i;:::-;-1:-1:-1;;;;;39916:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;39940:22:0;;;;;;:11;:22;;;;;;;;39939:23;39916:46;39912:597;;;39979:48;40001:6;40009:9;40020:6;39979:21;:48::i;:::-;39912:597;;;-1:-1:-1;;;;;40050:19:0;;;;;;:11;:19;;;;;;;;40049:20;:46;;;;-1:-1:-1;;;;;;40073:22:0;;;;;;:11;:22;;;;;;;;40049:46;40045:464;;;40112:46;40132:6;40140:9;40151:6;40112:19;:46::i;40045:464::-;-1:-1:-1;;;;;40181:19:0;;;;;;:11;:19;;;;;;;;40180:20;:47;;;;-1:-1:-1;;;;;;40205:22:0;;;;;;:11;:22;;;;;;;;40204:23;40180:47;40176:333;;;40244:44;40262:6;40270:9;40281:6;40244:17;:44::i;40176:333::-;-1:-1:-1;;;;;40310:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;40333:22:0;;;;;;:11;:22;;;;;;;;40310:45;40306:203;;;40372:48;40394:6;40402:9;40413:6;40372:21;:48::i;40306:203::-;40453:44;40471:6;40479:9;40490:6;40453:17;:44::i;:::-;40524:7;40519:29;;40533:15;:13;:15::i;:::-;39722:834;;;;:::o;45781:605::-;45879:7;;45915;;45832;;;;;45933:338;45957:9;:16;45953:20;;45933:338;;;46041:7;46017;:21;46025:9;46035:1;46025:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46025:12:0;46017:21;;;;;;;;;;;;;:31;;:83;;;46093:7;46069;:21;46077:9;46087:1;46077:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46077:12:0;46069:21;;;;;;;;;;;;;:31;46017:83;45995:146;;;46124:7;;46133;;46116:25;;;;;;;;;45995:146;46166:34;46178:7;:21;46186:9;46196:1;46186:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46186:12:0;46178:21;;;;;;;;;;;;;46166:7;;:11;:34::i;:::-;46156:44;;46225:34;46237:7;:21;46245:9;46255:1;46245:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46245:12:0;46237:21;;;;;;;;;;;;;46225:7;;:11;:34::i;:::-;46215:44;-1:-1:-1;45975:3:0;;45933:338;;;-1:-1:-1;46307:7:0;;46295;;:20;;:11;:20::i;:::-;46285:7;:30;46281:61;;;46325:7;;46334;;46317:25;;;;;;;;46281:61;46361:7;;-1:-1:-1;46370:7:0;-1:-1:-1;45781:605:0;;;:::o;44592:467::-;44760:7;;;;44854:28;44878:3;44854:19;:7;44866:6;44854:11;:19::i;:28::-;44839:43;-1:-1:-1;44893:13:0;44909:29;44934:3;44909:20;:7;44921;44909:11;:20::i;:29::-;44893:45;-1:-1:-1;44949:23:0;44975:28;44893:45;44975:17;:7;44987:4;44975:11;:17::i;:::-;:21;;:28::i;:::-;44949:54;45039:4;;-1:-1:-1;45045:5:0;;-1:-1:-1;44592:467:0;;-1:-1:-1;;;;;44592:467:0:o;45067:534::-;45261:7;;;;45358:24;:7;45370:11;45358;:24::i;:::-;45340:42;-1:-1:-1;45393:12:0;45408:21;:4;45417:11;45408:8;:21::i;:::-;45393:36;-1:-1:-1;45440:13:0;45456:22;:5;45466:11;45456:9;:22::i;:::-;45440:38;-1:-1:-1;45489:23:0;45515:28;45440:38;45515:17;:7;45527:4;45515:11;:17::i;:28::-;45562:7;;;;-1:-1:-1;45588:4:0;;-1:-1:-1;45067:534:0;;-1:-1:-1;;;;;;;45067:534:0:o;5331:467::-;5389:7;5634:6;5630:47;;-1:-1:-1;5664:1:0;5657:8;;5630:47;5699:5;;;5703:1;5699;:5;:1;5723:5;;;;;:10;5715:56;;;;-1:-1:-1;;;5715:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35343:211;35390:7;;:12;:29;;;;-1:-1:-1;35406:8:0;;:13;35390:29;35386:42;;;35421:7;;35386:42;35456:7;;;35438:15;:25;35493:8;;;35474:16;:27;-1:-1:-1;35512:11:0;;;;35534:12;35343:211;:::o;41873:671::-;42024:15;42054:23;42092:12;42119:23;42157:12;42184:13;42211:19;42222:7;42211:10;:19::i;:::-;-1:-1:-1;;;;;42259:15:0;;;;;;:7;:15;;;;;;42009:221;;-1:-1:-1;42009:221:0;;-1:-1:-1;42009:221:0;;-1:-1:-1;42009:221:0;-1:-1:-1;42009:221:0;-1:-1:-1;42009:221:0;-1:-1:-1;42259:28:0;;42279:7;42259:19;:28::i;:::-;-1:-1:-1;;;;;42241:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42316:7;:15;;;;:28;;42336:7;42316:19;:28::i;:::-;-1:-1:-1;;;;;42298:15:0;;;;;;;:7;:15;;;;;;:46;;;;42376:18;;;;;;;:39;;42399:15;42376:22;:39::i;:::-;-1:-1:-1;;;;;42355:18:0;;;;;;:7;:18;;;;;:60;42426:16;42436:5;42426:9;:16::i;:::-;42453:23;42465:4;42471;42453:11;:23::i;:::-;42509:9;-1:-1:-1;;;;;42492:44:0;42501:6;-1:-1:-1;;;;;42492:44:0;;42520:15;42492:44;;;;;;;;;;;;;;;;;;41873:671;;;;;;;;;:::o;41182:683::-;41331:15;41361:23;41399:12;41426:23;41464:12;41491:13;41518:19;41529:7;41518:10;:19::i;:::-;-1:-1:-1;;;;;41566:15:0;;;;;;:7;:15;;;;;;41316:221;;-1:-1:-1;41316:221:0;;-1:-1:-1;41316:221:0;;-1:-1:-1;41316:221:0;-1:-1:-1;41316:221:0;-1:-1:-1;41316:221:0;-1:-1:-1;41566:28:0;;41316:221;41566:19;:28::i;:::-;-1:-1:-1;;;;;41548:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;41626:18;;;;;:7;:18;;;;;:39;;41649:15;41626:22;:39::i;:::-;-1:-1:-1;;;;;41605:18:0;;;;;;:7;:18;;;;;;;;:60;;;;41697:7;:18;;;;:39;;41720:15;41697:22;:39::i;40564:610::-;40711:15;40741:23;40779:12;40806:23;40844:12;40871:13;40898:19;40909:7;40898:10;:19::i;:::-;-1:-1:-1;;;;;40946:15:0;;;;;;:7;:15;;;;;;40696:221;;-1:-1:-1;40696:221:0;;-1:-1:-1;40696:221:0;;-1:-1:-1;40696:221:0;-1:-1:-1;40696:221:0;-1:-1:-1;40696:221:0;-1:-1:-1;40946:28:0;;40696:221;40946:19;:28::i;42552:742::-;42703:15;42733:23;42771:12;42798:23;42836:12;42863:13;42890:19;42901:7;42890:10;:19::i;:::-;-1:-1:-1;;;;;42938:15:0;;;;;;:7;:15;;;;;;42688:221;;-1:-1:-1;42688:221:0;;-1:-1:-1;42688:221:0;;-1:-1:-1;42688:221:0;-1:-1:-1;42688:221:0;-1:-1:-1;42688:221:0;-1:-1:-1;42938:28:0;;42958:7;42938:19;:28::i;:::-;-1:-1:-1;;;;;42920:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42995:7;:15;;;;:28;;43015:7;42995:19;:28::i;35562:115::-;35616:15;;35606:7;:25;35653:16;;35642:8;:27;35562:115::o;43302:325::-;43355:19;43377:10;:8;:10::i;:::-;43355:32;-1:-1:-1;43398:13:0;43414:22;:5;43355:32;43414:9;:22::i;:::-;43488:4;43472:22;;;;:7;:22;;;;;;43398:38;;-1:-1:-1;43472:33:0;;43398:38;43472:26;:33::i;:::-;43463:4;43447:22;;;;:7;:22;;;;;;;;:58;;;;43520:11;:26;;;;;;43516:103;;;43602:4;43586:22;;;;:7;:22;;;;;;:33;;43613:5;43586:26;:33::i;:::-;43577:4;43561:22;;;;:7;:22;;;;;:58;43516:103;43302:325;;;:::o;43635:147::-;43713:7;;:17;;43725:4;43713:11;:17::i;:::-;43703:7;:27;43754:10;;:20;;43769:4;43754:14;:20::i;:::-;43741:10;:33;-1:-1:-1;;43635:147:0:o

Swarm Source

ipfs://e5db9351f8c471a7e071dd2a7a55ace83af8d5c8b1af3afaa701e586fe681c3e
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.