ETH Price: $3,473.52 (+5.92%)
Gas: 5 Gwei

Contract

0x66405Af9667998f12667dbce48aab01e9CD07ea7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve188681182023-12-26 6:35:59202 days ago1703572559IN
0x66405Af9...e9CD07ea7
0 ETH0.0006772714.36786583
Approve187442702023-12-08 21:39:23220 days ago1702071563IN
0x66405Af9...e9CD07ea7
0 ETH0.0020472543.37581396
Approve187091732023-12-03 23:36:35225 days ago1701646595IN
0x66405Af9...e9CD07ea7
0 ETH0.0022030746.6773899
Approve185099072023-11-06 2:15:59252 days ago1699236959IN
0x66405Af9...e9CD07ea7
0 ETH0.0008657418.3660943
Approve184222352023-10-24 19:35:23265 days ago1698176123IN
0x66405Af9...e9CD07ea7
0 ETH0.0014411830.53491121
Approve184060692023-10-22 13:14:35267 days ago1697980475IN
0x66405Af9...e9CD07ea7
0 ETH0.000412738.74471698
Approve184036512023-10-22 5:07:35267 days ago1697951255IN
0x66405Af9...e9CD07ea7
0 ETH0.000293666.22195986
Approve183785722023-10-18 16:57:47271 days ago1697648267IN
0x66405Af9...e9CD07ea7
0 ETH0.0008011417.09147181
Approve183779292023-10-18 14:47:47271 days ago1697640467IN
0x66405Af9...e9CD07ea7
0 ETH0.0008417417.95771176
Approve183484782023-10-14 11:59:23275 days ago1697284763IN
0x66405Af9...e9CD07ea7
0 ETH0.000258685.4877931
Approve183315362023-10-12 3:04:35277 days ago1697079875IN
0x66405Af9...e9CD07ea7
0 ETH0.000279815.93601656
Approve182939282023-10-06 20:45:11283 days ago1696625111IN
0x66405Af9...e9CD07ea7
0 ETH0.000346617.35315946
Approve182733922023-10-03 23:51:11286 days ago1696377071IN
0x66405Af9...e9CD07ea7
0 ETH0.0006580213.94171823
Approve182726172023-10-03 21:14:47286 days ago1696367687IN
0x66405Af9...e9CD07ea7
0 ETH0.0008010716.9942056
Approve182702422023-10-03 13:14:47286 days ago1696338887IN
0x66405Af9...e9CD07ea7
0 ETH0.0005253411.14486144
Approve182560822023-10-01 13:48:11288 days ago1696168091IN
0x66405Af9...e9CD07ea7
0 ETH0.000326966.93623614
Approve182560472023-10-01 13:41:11288 days ago1696167671IN
0x66405Af9...e9CD07ea7
0 ETH0.000330447.01010925
Approve182535892023-10-01 5:26:11288 days ago1696137971IN
0x66405Af9...e9CD07ea7
0 ETH0.000296486.28961848
Approve182535722023-10-01 5:22:47288 days ago1696137767IN
0x66405Af9...e9CD07ea7
0 ETH0.000287916.10794959
Approve182417672023-09-29 13:48:23290 days ago1695995303IN
0x66405Af9...e9CD07ea7
0 ETH0.0005905712.52856584
Approve182417592023-09-29 13:46:47290 days ago1695995207IN
0x66405Af9...e9CD07ea7
0 ETH0.0005858812.41331288
Approve182375522023-09-28 23:37:11291 days ago1695944231IN
0x66405Af9...e9CD07ea7
0 ETH0.000332527.054313
Transfer182333032023-09-28 9:20:35291 days ago1695892835IN
0x66405Af9...e9CD07ea7
0 ETH0.000628488.05266234
Approve182321242023-09-28 5:21:23291 days ago1695878483IN
0x66405Af9...e9CD07ea7
0 ETH0.000309366.56294929
Approve182281452023-09-27 16:00:11292 days ago1695830411IN
0x66405Af9...e9CD07ea7
0 ETH0.0008496318.1304805
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
182733932023-10-03 23:51:23286 days ago1696377083
0x66405Af9...e9CD07ea7
0.00520637 ETH
182733932023-10-03 23:51:23286 days ago1696377083
0x66405Af9...e9CD07ea7
0.00520637 ETH
182281492023-09-27 16:00:59292 days ago1695830459
0x66405Af9...e9CD07ea7
0.01320584 ETH
182281492023-09-27 16:00:59292 days ago1695830459
0x66405Af9...e9CD07ea7
0.01320584 ETH
182174962023-09-26 4:12:47293 days ago1695701567
0x66405Af9...e9CD07ea7
0.01773383 ETH
182174962023-09-26 4:12:47293 days ago1695701567
0x66405Af9...e9CD07ea7
0.01773383 ETH
182061632023-09-24 14:10:23295 days ago1695564623
0x66405Af9...e9CD07ea7
0.01340288 ETH
182061632023-09-24 14:10:23295 days ago1695564623
0x66405Af9...e9CD07ea7
0.01340288 ETH
181979712023-09-23 10:37:35296 days ago1695465455
0x66405Af9...e9CD07ea7
0.02010748 ETH
181979712023-09-23 10:37:35296 days ago1695465455
0x66405Af9...e9CD07ea7
0.02010748 ETH
181933032023-09-22 18:57:23297 days ago1695409043
0x66405Af9...e9CD07ea7
0.02523145 ETH
181933032023-09-22 18:57:23297 days ago1695409043
0x66405Af9...e9CD07ea7
0.02523145 ETH
181925772023-09-22 16:30:23297 days ago1695400223
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925772023-09-22 16:30:23297 days ago1695400223
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925732023-09-22 16:29:35297 days ago1695400175
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925732023-09-22 16:29:35297 days ago1695400175
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925732023-09-22 16:29:35297 days ago1695400175
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925732023-09-22 16:29:35297 days ago1695400175
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925732023-09-22 16:29:35297 days ago1695400175
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925732023-09-22 16:29:35297 days ago1695400175
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925732023-09-22 16:29:35297 days ago1695400175
0x66405Af9...e9CD07ea7
0.02297275 ETH
181925732023-09-22 16:29:35297 days ago1695400175
0x66405Af9...e9CD07ea7
0.02297275 ETH
181878422023-09-22 0:32:11298 days ago1695342731
0x66405Af9...e9CD07ea7
0.0389055 ETH
181878422023-09-22 0:32:11298 days ago1695342731
0x66405Af9...e9CD07ea7
0.0389055 ETH
181845012023-09-21 13:18:47298 days ago1695302327
0x66405Af9...e9CD07ea7
0.02281771 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TheApeTimes

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-19
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXd;. .cKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd'      'oONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0d:.         .,dXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk'              .,kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx.                .:XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk.                 .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0,                   .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXc                     .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk.                     .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNl           ...        'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK;           .,;,..    .oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXkll'            .;llc::ccdXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMN0000000000000000000000000kl'. ''            .':::;,,;o0000000000000000000KNMMMMMMMMMMMM
// MMMMMMMMMMMWd..''''''''''',,,'''.......    ..             .,::c;. ..'''''''''''''''''.'OMMMMMMMMMMMM
// MMMMMMMMMMMWo ;OKKKKKKK0kl:;,,'..                          .,::l:. .;kKKKKKKKKKKKKKKd..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMXo.                                   .,::ll,..cKMMMMMMMMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMW0;.                                     .,::col'.,kNMMMMMMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMW0,                        .......         .';::ldl..c0WMMMMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMK;                          ......''.        .';::oxc..dXMMMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMx.                                .':,.       ..,::cxd'.;OWMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMx.                                  .lc.        .';::dk:..dNMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMX:                  ...            .:0Xc.         .;::d0: .oNMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMk.                  ';.         .;kNMM0'          .;::kk' .xWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMK,                  .;l,.....;:lONMMMMNl.         .':;d0:  cNMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMK;                   .,dxdxk0NWWMMMMMMMXx:.        .;;o0:  :XMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMk.        ...       .  .:ONMMMMMMMMMMMMMMW0l.      .;:x0, .lWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMWk'       .;,       .'.   .;o0NMMMMMMMMMMMMMWO,    .,:l0d. 'OMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMK:.     'kx,....':dc.      .,:lxKNXNMMMMMMMWO'   .;cOk' .dWMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMX:     cNMNK0kooddddo:..      .c:',oKMMMWkk0;  .;cOO, .lNMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMMk. .  'dXMMM0c;:::dNWKx:.    ..    ;KMWk:kd...;oOk, .oNMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMMNOkkkkkkXWMMNK0000KNMMMWKxlcc,. ..;dXMMKKN0kkO0XW0kk0WMMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0kkKNMMMMMMMMMMMMMMMMMMMMMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMNKKXKKXKKNNKKKNWNKKKNWXKKXNXKNMMMMMMMWXXWMMWNKKXXXNWMNK0KXXKXWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMkcOd''xOckXl.;0WK:.:KWk'.dN0oOMMMMMMMO,;0MMW0;.lKd,cKXc.:0XxdXMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMKKMx..kMKKNl ,KMX: :XMO..dK0KNMMMMMMNk, :XMMK, lWk..kNc :K00XWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMx..kMMMNl ,0WK; :XMO..oxdXMMMMMMN0Kx..lNMK, cKxlkNNc ;koOWWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMx..kMMMNl ,KMX: :XMO..xWN00WMMMN0KNNd..xWK, lNWMMMNc :XNKOKMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMNk::kNMMXd;lKWXo;oXWO::xXKdkWMMW0xXWMKl;lK0c;dXWMMMXo;oKXkdKMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMWWWWWWMMWWWWWMWWWWWWWWWWWWWWMMMMWWWMMWWWWWWWWWWWMMMWWWWWWWWMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMWWWWWWWWWWWMWWWWWWWMWWWWWMMMMMMMMWWWWWWWWWWWWWWWMMMMMWNNNWMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMOco0x:;lOOllKNkc;ckNWKo:;c0MMMMMXd;;oKWNkc;ckKKxlOMW0lcxKKOdOWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMxc0Mx. '0WkcOMk. .OMMNx;. ;KMMWXO,  :NMMk. .OMWXdkMK; .xWMNdxWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMXXMMx. '0MWKXMk. .OMMX0O:  :XWKkOc. cNMMk. .OXk0NNMXl. .ckXNNWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMMx. '0MMMMMk. .OMMX0X0, .cO0XXl  cNMMk. .xx;kMMMMNkc'..'lKWMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMMx. '0MMMMMk. .OMMX0XWk' .oNMNl  :NMMk. .OW0KNKNX0WWXx,. ;KMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMMx. '0MMMMMk. .kMMKkKMWx.,KMMNc  :XMMk. .OMMNolXOlkWMMk. ;KMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMWXxcclOXWMMNklclONW0xONMNk0MWNKdccdKWNklclOXKklxNKxkKK0dldKMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWMMMMMMMO..kMMMMMMMMMMMM
// MMMMMMMMMMMWo.'oddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddc..kMMMMMMMMMMMM
// MMMMMMMMMMMWo.                                                                        .kMMMMMMMMMMMM
// 
// The Ape Times, your daily shitcoin newspaper!
// 
// https://theapetimes.today
// https://t.me/TheApeTimes
// https://twitter.com/TheApeTimes

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

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

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

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

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

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

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

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

// pragma solidity ^0.8.0;

// import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// pragma solidity ^0.8.0;

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0));
        require(to != address(0));

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount);
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    function _mint(address to, uint256 amount) internal virtual {
        _totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            _balances[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        _balances[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            _totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount);
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
}

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

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

    function WETH() external pure returns (address);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract TheApeTimes is ERC20, Ownable {

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public liquidityWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    // BEGIN STORY

    enum StoryType {
        Cover,
        Column,
        Ad
    }

    struct StoryInfo {
        uint256 id;
        string title;
        string subTitle;
        string body;
        StoryType storyType;
        string imageUrl;
        uint256 publicationDate;
        uint256 price;
        address owner;
    }

    uint256 public constant MIN_STORY_PRICE = 10 ether; // base price for each story

    uint256 internal maxColumnStories = 5;

    uint256 internal maxAdStories = 4;

    mapping (uint256 => StoryInfo) public stories;

    uint256 public totalStories;

    uint256 public lastCoverStory;

    uint256[] public lastColumnStories;

    uint256[] public lastAdStories;

    event StoryPosted(
        uint256 id,
        string title,
        string subTitle,
        string body,
        StoryType storyType,
        string imageUrl,
        uint256 publicationDate,
        uint256 price,
        address owner
    );

    // END POST    

    constructor() payable ERC20("TheApeTimes", "TIMES") {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        uint256 totalSupply = 10_000_000 ether;

        maxTransactionAmount = (totalSupply * 10) / 1000;
        maxWallet = (totalSupply * 10) / 1000;
        swapTokensAtAmount = (totalSupply * 1) / 1000;

        buyMarketingFee = 15;
        buyLiquidityFee = 0;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = 30;
        sellLiquidityFee = 0;
        sellTotalFees =
            sellMarketingFee +
            sellLiquidityFee;

        previousFee = sellTotalFees;

        marketingWallet = _msgSender();
        liquidityWallet = _msgSender();

        excludeFromFees(_msgSender(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);
        excludeFromFees(marketingWallet, true);
        excludeFromFees(liquidityWallet, true);

        excludeFromMaxTransaction(_msgSender(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromMaxTransaction(marketingWallet, true);
        excludeFromMaxTransaction(liquidityWallet, true);

        _mint(msg.sender, (totalSupply * 100) / 100);
    }

    receive() external payable {}

    function burn(uint256 amount) external {
        _burn(msg.sender, amount);
    }

    function createPair() external onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive);
        tradingActive = true;
        swapEnabled = true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(newAmount >= (totalSupply() * 1) / 100000);
        require(newAmount <= (totalSupply() * 5) / 1000);
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxWalletAndTxnAmount(
        uint256 newTxnNum,
        uint256 newMaxWalletNum
    ) external onlyOwner {
        require(newTxnNum >= ((totalSupply() * 5) / 1000));
        require(newMaxWalletNum >= ((totalSupply() * 5) / 1000));
        maxWallet = newMaxWalletNum;
        maxTransactionAmount = newTxnNum;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 15);
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 30);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function withdrawStuckETH() public onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function withdrawStuckTokens(address tkn) public onlyOwner {
        require(IERC20(tkn).balanceOf(address(this)) > 0);
        uint256 amount = IERC20(tkn).balanceOf(address(this));
        IERC20(tkn).transfer(msg.sender, amount);
    }

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

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0));
        require(to != address(0));

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != deadAddress &&
            !swapping
        ) {
            if (!tradingActive) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to]);
            }

            //when buy
            if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(amount <= maxTransactionAmount);
                require(amount + balanceOf(to) <= maxWallet);
            }
            //when sell
            else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(amount <= maxTransactionAmount);
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet);
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        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,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityWallet,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;

        uint256 ethForMarketing = ethBalance * tokensForMarketing / totalTokensToSwap;

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    // Newspaper logic

    function postStory(string calldata _title, string calldata _body, string calldata _subTitle, StoryType _storyType, string calldata _imageUrl) 
    external 
    {
        uint256 newStoryId = ++totalStories;

        StoryInfo memory oldStory;
        if (_storyType == StoryType.Cover) {
            oldStory = stories[lastCoverStory];
            lastCoverStory = newStoryId;
        } else if (_storyType == StoryType.Column) {
            if (lastColumnStories.length > 0) {
                if (lastColumnStories.length == maxColumnStories) {
                    oldStory = stories[lastColumnStories[0]];
                    _shiftLeft(lastColumnStories);
                }
            }
            lastColumnStories.push(newStoryId);
        } else if (_storyType == StoryType.Ad) {
            if (lastAdStories.length > 0) {
                if (lastAdStories.length == maxAdStories) {
                    oldStory = stories[lastAdStories[0]];
                    _shiftLeft(lastAdStories);
                }
            }
            lastAdStories.push(newStoryId);
        }

        uint256 storyPrice = MIN_STORY_PRICE;
        if (oldStory.price > 0) {
            storyPrice = oldStory.price;
            if (oldStory.publicationDate < block.timestamp + 1 weeks) {
                storyPrice *= 2;
            }
        }

        super._burn(msg.sender, storyPrice);
        
        StoryInfo memory newStory = StoryInfo({
            id: totalStories,
            title: _title,
            body: _body,
            subTitle: _subTitle,
            storyType: _storyType,
            imageUrl: _imageUrl,
            publicationDate: block.timestamp,
            price: storyPrice,
            owner: msg.sender
        });
        stories[newStory.id] = newStory;

        emit StoryPosted(newStory.id, newStory.title, newStory.body, newStory.subTitle, 
            newStory.storyType, newStory.imageUrl, newStory.publicationDate, newStory.price, newStory.owner);
    }

    function setMaxColumnStories(uint256 _maxColumnStories) external onlyOwner {
        maxColumnStories = _maxColumnStories;
    }

    function setMaxAdStories(uint256 _maxAdStories) external onlyOwner {
        maxAdStories = _maxAdStories;
    }

    function getCoverStory() external view returns(StoryInfo memory) {
        return stories[lastCoverStory];
    }

    function getColumnStories() external view returns(StoryInfo[] memory) {
        StoryInfo[] memory columnStories = new StoryInfo[](lastColumnStories.length);
        for (uint256 i = 0; i < lastColumnStories.length; i++) {
            columnStories[i] = stories[lastColumnStories[i]];
        }
        return columnStories;
    }

    function getAdStories() external view returns(StoryInfo[] memory) {
        StoryInfo[] memory adStories = new StoryInfo[](lastAdStories.length);
        for (uint256 i = 0; i < lastAdStories.length; i++) {
            adStories[i] = stories[lastAdStories[i]];
        }
        return adStories;
    }

    function _shiftLeft(uint256[] storage arr) internal {
        for (uint256 i = 0; i < arr.length - 1; i++) {
            arr[i] = arr[i + 1];
        }
        arr.pop();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"string","name":"title","type":"string"},{"indexed":false,"internalType":"string","name":"subTitle","type":"string"},{"indexed":false,"internalType":"string","name":"body","type":"string"},{"indexed":false,"internalType":"enum TheApeTimes.StoryType","name":"storyType","type":"uint8"},{"indexed":false,"internalType":"string","name":"imageUrl","type":"string"},{"indexed":false,"internalType":"uint256","name":"publicationDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"StoryPosted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"MIN_STORY_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAdStories","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"subTitle","type":"string"},{"internalType":"string","name":"body","type":"string"},{"internalType":"enum TheApeTimes.StoryType","name":"storyType","type":"uint8"},{"internalType":"string","name":"imageUrl","type":"string"},{"internalType":"uint256","name":"publicationDate","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct TheApeTimes.StoryInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getColumnStories","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"subTitle","type":"string"},{"internalType":"string","name":"body","type":"string"},{"internalType":"enum TheApeTimes.StoryType","name":"storyType","type":"uint8"},{"internalType":"string","name":"imageUrl","type":"string"},{"internalType":"uint256","name":"publicationDate","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct TheApeTimes.StoryInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCoverStory","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"subTitle","type":"string"},{"internalType":"string","name":"body","type":"string"},{"internalType":"enum TheApeTimes.StoryType","name":"storyType","type":"uint8"},{"internalType":"string","name":"imageUrl","type":"string"},{"internalType":"uint256","name":"publicationDate","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct TheApeTimes.StoryInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastAdStories","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastColumnStories","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastCoverStory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"},{"internalType":"string","name":"_body","type":"string"},{"internalType":"string","name":"_subTitle","type":"string"},{"internalType":"enum TheApeTimes.StoryType","name":"_storyType","type":"uint8"},{"internalType":"string","name":"_imageUrl","type":"string"}],"name":"postStory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAdStories","type":"uint256"}],"name":"setMaxAdStories","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxColumnStories","type":"uint256"}],"name":"setMaxColumnStories","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stories","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"subTitle","type":"string"},{"internalType":"string","name":"body","type":"string"},{"internalType":"enum TheApeTimes.StoryType","name":"storyType","type":"uint8"},{"internalType":"string","name":"imageUrl","type":"string"},{"internalType":"uint256","name":"publicationDate","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStories","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff02191690831515021790555060056019556004601a556040518060400160405280600b81526020017f54686541706554696d65730000000000000000000000000000000000000000008152506040518060400160405280600581526020017f54494d45530000000000000000000000000000000000000000000000000000008152508160039081620000c1919062000b32565b508060049081620000d3919062000b32565b505050620000f6620000ea6200049960201b60201c565b620004a160201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000173306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200056760201b60201c565b60006a084595161401484a00000090506103e8600a8262000195919062000c48565b620001a1919062000cc2565b6009819055506103e8600a82620001b9919062000c48565b620001c5919062000cc2565b600b819055506103e8600182620001dd919062000c48565b620001e9919062000cc2565b600a81905550600f600e819055506000600f81905550600f54600e5462000211919062000cfa565b600d81905550601e601181905550600060128190555060125460115462000239919062000cfa565b601081905550601054601581905550620002586200049960201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002a86200049960201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200030a620002fc6200049960201b60201c565b60016200065460201b60201c565b6200031d3060016200065460201b60201c565b6200033261dead60016200065460201b60201c565b62000367600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200065460201b60201c565b6200039c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200065460201b60201c565b620003be620003b06200049960201b60201c565b6001620006bf60201b60201c565b620003d1306001620006bf60201b60201c565b620003e661dead6001620006bf60201b60201c565b620003fb6080516001620006bf60201b60201c565b62000430600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006bf60201b60201c565b62000465600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006bf60201b60201c565b6200049233606480846200047a919062000c48565b62000486919062000cc2565b6200072a60201b60201c565b5062000de6565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000647919062000d46565b60405180910390a3505050565b62000664620007fd60201b60201c565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620006cf620007fd60201b60201c565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80600260008282546200073e919062000cfa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007f1919062000d46565b60405180910390a35050565b6200080d6200049960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008336200088e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200088c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008839062000dc4565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200093a57607f821691505b60208210810362000950576200094f620008f2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200097b565b620009c686836200097b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a1362000a0d62000a0784620009de565b620009e8565b620009de565b9050919050565b6000819050919050565b62000a2f83620009f2565b62000a4762000a3e8262000a1a565b84845462000988565b825550505050565b600090565b62000a5e62000a4f565b62000a6b81848462000a24565b505050565b5b8181101562000a935762000a8760008262000a54565b60018101905062000a71565b5050565b601f82111562000ae25762000aac8162000956565b62000ab7846200096b565b8101602085101562000ac7578190505b62000adf62000ad6856200096b565b83018262000a70565b50505b505050565b600082821c905092915050565b600062000b076000198460080262000ae7565b1980831691505092915050565b600062000b22838362000af4565b9150826002028217905092915050565b62000b3d82620008b8565b67ffffffffffffffff81111562000b595762000b58620008c3565b5b62000b65825462000921565b62000b7282828562000a97565b600060209050601f83116001811462000baa576000841562000b95578287015190505b62000ba1858262000b14565b86555062000c11565b601f19841662000bba8662000956565b60005b8281101562000be45784890151825560018201915060208501945060208101905062000bbd565b8683101562000c04578489015162000c00601f89168262000af4565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c5582620009de565b915062000c6283620009de565b925082820262000c7281620009de565b9150828204841483151762000c8c5762000c8b62000c19565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ccf82620009de565b915062000cdc83620009de565b92508262000cef5762000cee62000c93565b5b828204905092915050565b600062000d0782620009de565b915062000d1483620009de565b925082820190508082111562000d2f5762000d2e62000c19565b5b92915050565b62000d4081620009de565b82525050565b600060208201905062000d5d600083018462000d35565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000dac60208362000d63565b915062000db98262000d74565b602082019050919050565b6000602082019050818103600083015262000ddf8162000d9d565b9050919050565b608051615ce162000e3360003960008181610cb9015281816116f6015281816117a101528181614563015281816146440152818161466b01528181614707015261472e0152615ce16000f3fe6080604052600436106102cd5760003560e01c806395d89b4111610175578063c9567bf9116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610b11578063f5648a4f14610b3a578063f84e748214610b51578063f8b45b0514610b8e576102d4565b8063e2f4560514610a90578063e9c6b75714610abb578063eb2f107814610ae6576102d4565b8063c9567bf914610980578063cb96372814610997578063d257b34f146109c0578063d4698016146109fd578063d85ba06314610a28578063dd62ed3e14610a53576102d4565b8063aa14e7c01161012e578063aa14e7c014610870578063b6721b84146108ad578063bbc0c742146108d6578063c024666814610901578063c5a580e41461092a578063c8c8ebe414610955576102d4565b806395d89b4114610762578063961883991461078d5780639e78fb4f146107b6578063a3d76ce4146107cd578063a457c2d7146107f6578063a9059cbb14610833576102d4565b80634fbee193116102345780636fe168e5116101ed5780637571336a116101c75780637571336a1461069e57806375f0a874146106c75780638a3b6ab8146106f25780638da5cb5b14610737576102d4565b80636fe168e51461061f57806370a082311461064a578063715018a614610687576102d4565b80634fbee1931461050f57806366ca9b831461054c5780636a486a8e146105755780636adab8a4146105a05780636b2e8cc5146105c95780636ddd1713146105f4576102d4565b806327c8f8351161028657806327c8f835146103fd578063313ce5671461042857806339509351146104535780633b088f501461049057806342966c68146104bb57806349bd5a5e146104e4576102d4565b806302dbd8f8146102d957806306fdde0314610302578063095ea7b31461032d5780631694505e1461036a57806318160ddd1461039557806323b872dd146103c0576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061030060048036038101906102fb91906148b1565b610bb9565b005b34801561030e57600080fd5b50610317610c02565b6040516103249190614981565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190614a01565b610c94565b6040516103619190614a5c565b60405180910390f35b34801561037657600080fd5b5061037f610cb7565b60405161038c9190614ad6565b60405180910390f35b3480156103a157600080fd5b506103aa610cdb565b6040516103b79190614b00565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190614b1b565b610ce5565b6040516103f49190614a5c565b60405180910390f35b34801561040957600080fd5b50610412610d14565b60405161041f9190614b7d565b60405180910390f35b34801561043457600080fd5b5061043d610d1a565b60405161044a9190614bb4565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190614a01565b610d23565b6040516104879190614a5c565b60405180910390f35b34801561049c57600080fd5b506104a5610d5a565b6040516104b29190614e4a565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190614e6c565b611136565b005b3480156104f057600080fd5b506104f9611143565b6040516105069190614b7d565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190614e99565b611169565b6040516105439190614a5c565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e91906148b1565b6111bf565b005b34801561058157600080fd5b5061058a6111ff565b6040516105979190614b00565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190614e6c565b611205565b005b3480156105d557600080fd5b506105de611217565b6040516105eb9190614b00565b60405180910390f35b34801561060057600080fd5b5061060961121d565b6040516106169190614a5c565b60405180910390f35b34801561062b57600080fd5b50610634611230565b6040516106419190614b00565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190614e99565b61123c565b60405161067e9190614b00565b60405180910390f35b34801561069357600080fd5b5061069c611284565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190614ef2565b611298565b005b3480156106d357600080fd5b506106dc6112fb565b6040516106e99190614b7d565b60405180910390f35b3480156106fe57600080fd5b5061071960048036038101906107149190614e6c565b611321565b60405161072e99989796959493929190614f41565b60405180910390f35b34801561074357600080fd5b5061074c6115bc565b6040516107599190614b7d565b60405180910390f35b34801561076e57600080fd5b506107776115e6565b6040516107849190614981565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af91906148b1565b611678565b005b3480156107c257600080fd5b506107cb6116ec565b005b3480156107d957600080fd5b506107f460048036038101906107ef9190614e6c565b61192a565b005b34801561080257600080fd5b5061081d60048036038101906108189190614a01565b61193c565b60405161082a9190614a5c565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614a01565b6119b3565b6040516108679190614a5c565b60405180910390f35b34801561087c57600080fd5b5061089760048036038101906108929190614e6c565b6119d6565b6040516108a49190614b00565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf9190615074565b6119fa565b005b3480156108e257600080fd5b506108eb612834565b6040516108f89190614a5c565b60405180910390f35b34801561090d57600080fd5b5061092860048036038101906109239190614ef2565b612847565b005b34801561093657600080fd5b5061093f6128aa565b60405161094c9190614b00565b60405180910390f35b34801561096157600080fd5b5061096a6128b0565b6040516109779190614b00565b60405180910390f35b34801561098c57600080fd5b506109956128b6565b005b3480156109a357600080fd5b506109be60048036038101906109b99190614e99565b612910565b005b3480156109cc57600080fd5b506109e760048036038101906109e29190614e6c565b612a9f565b6040516109f49190614a5c565b60405180910390f35b348015610a0957600080fd5b50610a12612b14565b604051610a1f9190614b7d565b60405180910390f35b348015610a3457600080fd5b50610a3d612b3a565b604051610a4a9190614b00565b60405180910390f35b348015610a5f57600080fd5b50610a7a6004803603810190610a759190615170565b612b40565b604051610a879190614b00565b60405180910390f35b348015610a9c57600080fd5b50610aa5612bc7565b604051610ab29190614b00565b60405180910390f35b348015610ac757600080fd5b50610ad0612bcd565b604051610add919061528a565b60405180910390f35b348015610af257600080fd5b50610afb612ef2565b604051610b089190614e4a565b60405180910390f35b348015610b1d57600080fd5b50610b386004803603810190610b339190614e99565b6132ce565b005b348015610b4657600080fd5b50610b4f613351565b005b348015610b5d57600080fd5b50610b786004803603810190610b739190614e6c565b6133ca565b604051610b859190614b00565b60405180910390f35b348015610b9a57600080fd5b50610ba36133ee565b604051610bb09190614b00565b60405180910390f35b610bc16133f4565b8160118190555080601281905550601254601154610bdf91906152db565b601081905550601054601581905550601e6010541115610bfe57600080fd5b5050565b606060038054610c119061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3d9061533e565b8015610c8a5780601f10610c5f57610100808354040283529160200191610c8a565b820191906000526020600020905b815481529060010190602001808311610c6d57829003601f168201915b5050505050905090565b600080610c9f613472565b9050610cac81858561347a565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600080610cf0613472565b9050610cfd858285613565565b610d088585856135bb565b60019150509392505050565b61dead81565b60006012905090565b600080610d2e613472565b9050610d4f818585610d408589612b40565b610d4a91906152db565b61347a565b600191505092915050565b60606000601e8054905067ffffffffffffffff811115610d7d57610d7c61536f565b5b604051908082528060200260200182016040528015610db657816020015b610da36147fd565b815260200190600190039081610d9b5790505b50905060005b601e8054905081101561112e57601b6000601e8381548110610de157610de061539e565b5b906000526020600020015481526020019081526020016000206040518061012001604052908160008201548152602001600182018054610e209061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4c9061533e565b8015610e995780601f10610e6e57610100808354040283529160200191610e99565b820191906000526020600020905b815481529060010190602001808311610e7c57829003601f168201915b50505050508152602001600282018054610eb29061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ede9061533e565b8015610f2b5780601f10610f0057610100808354040283529160200191610f2b565b820191906000526020600020905b815481529060010190602001808311610f0e57829003601f168201915b50505050508152602001600382018054610f449061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f709061533e565b8015610fbd5780601f10610f9257610100808354040283529160200191610fbd565b820191906000526020600020905b815481529060010190602001808311610fa057829003601f168201915b505050505081526020016004820160009054906101000a900460ff166002811115610feb57610fea614c54565b5b6002811115610ffd57610ffc614c54565b5b81526020016005820180546110119061533e565b80601f016020809104026020016040519081016040528092919081815260200182805461103d9061533e565b801561108a5780601f1061105f5761010080835404028352916020019161108a565b820191906000526020600020905b81548152906001019060200180831161106d57829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508282815181106111105761110f61539e565b5b60200260200101819052508080611126906153cd565b915050610dbc565b508091505090565b6111403382613e81565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6111c76133f4565b81600e8190555080600f81905550600f54600e546111e591906152db565b600d81905550600f600d5411156111fb57600080fd5b5050565b60105481565b61120d6133f4565b80601a8190555050565b601d5481565b600c60019054906101000a900460ff1681565b678ac7230489e8000081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61128c6133f4565b6112966000613f50565b565b6112a06133f4565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60205280600052604060002060009150905080600001549080600101805461134a9061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546113769061533e565b80156113c35780601f10611398576101008083540402835291602001916113c3565b820191906000526020600020905b8154815290600101906020018083116113a657829003601f168201915b5050505050908060020180546113d89061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546114049061533e565b80156114515780601f1061142657610100808354040283529160200191611451565b820191906000526020600020905b81548152906001019060200180831161143457829003601f168201915b5050505050908060030180546114669061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546114929061533e565b80156114df5780601f106114b4576101008083540402835291602001916114df565b820191906000526020600020905b8154815290600101906020018083116114c257829003601f168201915b5050505050908060040160009054906101000a900460ff16908060050180546115079061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546115339061533e565b80156115805780601f1061155557610100808354040283529160200191611580565b820191906000526020600020905b81548152906001019060200180831161156357829003601f168201915b5050505050908060060154908060070154908060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905089565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115f59061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546116219061533e565b801561166e5780601f106116435761010080835404028352916020019161166e565b820191906000526020600020905b81548152906001019060200180831161165157829003601f168201915b5050505050905090565b6116806133f4565b6103e8600561168d610cdb565b6116979190615415565b6116a19190615486565b8210156116ad57600080fd5b6103e860056116ba610cdb565b6116c49190615415565b6116ce9190615486565b8110156116da57600080fd5b80600b81905550816009819055505050565b6116f46133f4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178391906154cc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561180a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182e91906154cc565b6040518363ffffffff1660e01b815260040161184b9291906154f9565b6020604051808303816000875af115801561186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188e91906154cc565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506118fb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001614016565b611928600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611298565b565b6119326133f4565b8060198190555050565b600080611947613472565b905060006119558286612b40565b90508381101561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190615594565b60405180910390fd5b6119a7828686840361347a565b60019250505092915050565b6000806119be613472565b90506119cb8185856135bb565b600191505092915050565b601f81815481106119e657600080fd5b906000526020600020016000915090505481565b6000601c60008154611a0b906153cd565b9190508190559050611a1b6147fd565b60006002811115611a2f57611a2e614c54565b5b856002811115611a4257611a41614c54565b5b03611d6d57601b6000601d5481526020019081526020016000206040518061012001604052908160008201548152602001600182018054611a829061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611aae9061533e565b8015611afb5780601f10611ad057610100808354040283529160200191611afb565b820191906000526020600020905b815481529060010190602001808311611ade57829003601f168201915b50505050508152602001600282018054611b149061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b409061533e565b8015611b8d5780601f10611b6257610100808354040283529160200191611b8d565b820191906000526020600020905b815481529060010190602001808311611b7057829003601f168201915b50505050508152602001600382018054611ba69061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd29061533e565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b505050505081526020016004820160009054906101000a900460ff166002811115611c4d57611c4c614c54565b5b6002811115611c5f57611c5e614c54565b5b8152602001600582018054611c739061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9f9061533e565b8015611cec5780601f10611cc157610100808354040283529160200191611cec565b820191906000526020600020905b815481529060010190602001808311611ccf57829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905081601d819055506124dc565b60016002811115611d8157611d80614c54565b5b856002811115611d9457611d93614c54565b5b03612126576000601e8054905011156120f857601954601e80549050036120f757601b6000601e600081548110611dce57611dcd61539e565b5b906000526020600020015481526020019081526020016000206040518061012001604052908160008201548152602001600182018054611e0d9061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e399061533e565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b50505050508152602001600282018054611e9f9061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611ecb9061533e565b8015611f185780601f10611eed57610100808354040283529160200191611f18565b820191906000526020600020905b815481529060010190602001808311611efb57829003601f168201915b50505050508152602001600382018054611f319061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5d9061533e565b8015611faa5780601f10611f7f57610100808354040283529160200191611faa565b820191906000526020600020905b815481529060010190602001808311611f8d57829003601f168201915b505050505081526020016004820160009054906101000a900460ff166002811115611fd857611fd7614c54565b5b6002811115611fea57611fe9614c54565b5b8152602001600582018054611ffe9061533e565b80601f016020809104026020016040519081016040528092919081815260200182805461202a9061533e565b80156120775780601f1061204c57610100808354040283529160200191612077565b820191906000526020600020905b81548152906001019060200180831161205a57829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090506120f6601e614071565b5b5b601e8290806001815401808255809150506001900390600052602060002001600090919091909150556124db565b60028081111561213957612138614c54565b5b85600281111561214c5761214b614c54565b5b036124da576000601f8054905011156124b057601a54601f80549050036124af57601b6000601f6000815481106121865761218561539e565b5b9060005260206000200154815260200190815260200160002060405180610120016040529081600082015481526020016001820180546121c59061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546121f19061533e565b801561223e5780601f106122135761010080835404028352916020019161223e565b820191906000526020600020905b81548152906001019060200180831161222157829003601f168201915b505050505081526020016002820180546122579061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546122839061533e565b80156122d05780601f106122a5576101008083540402835291602001916122d0565b820191906000526020600020905b8154815290600101906020018083116122b357829003601f168201915b505050505081526020016003820180546122e99061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546123159061533e565b80156123625780601f1061233757610100808354040283529160200191612362565b820191906000526020600020905b81548152906001019060200180831161234557829003601f168201915b505050505081526020016004820160009054906101000a900460ff1660028111156123905761238f614c54565b5b60028111156123a2576123a1614c54565b5b81526020016005820180546123b69061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546123e29061533e565b801561242f5780601f106124045761010080835404028352916020019161242f565b820191906000526020600020905b81548152906001019060200180831161241257829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090506124ae601f614071565b5b5b601f8290806001815401808255809150506001900390600052602060002001600090919091909150555b5b5b6000678ac7230489e80000905060008260e001511115612528578160e00151905062093a804261250c91906152db565b8260c001511015612527576002816125249190615415565b90505b5b6125323382613e81565b6000604051806101200160405280601c5481526020018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188600281111561263957612638614c54565b5b815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020014281526020018381526020013373ffffffffffffffffffffffffffffffffffffffff16815250905080601b6000836000015181526020019081526020016000206000820151816000015560208201518160010190816126e79190615756565b5060408201518160020190816126fd9190615756565b5060608201518160030190816127139190615756565b5060808201518160040160006101000a81548160ff0219169083600281111561273f5761273e614c54565b5b021790555060a08201518160050190816127599190615756565b5060c0820151816006015560e082015181600701556101008201518160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507f3b7d4cd9fe89c9f7a1618db8fb83fa8e163aae15a67e76ce7d5ce50316d4d476816000015182602001518360600151846040015185608001518660a001518760c001518860e0015189610100015160405161281d99989796959493929190614f41565b60405180910390a150505050505050505050505050565b600c60009054906101000a900460ff1681565b61284f6133f4565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c5481565b60095481565b6128be6133f4565b600c60009054906101000a900460ff16156128d857600080fd5b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b6129186133f4565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129539190614b7d565b602060405180830381865afa158015612970573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612994919061583d565b1161299e57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129d99190614b7d565b602060405180830381865afa1580156129f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1a919061583d565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612a5792919061586a565b6020604051808303816000875af1158015612a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9a91906158a8565b505050565b6000612aa96133f4565b620186a06001612ab7610cdb565b612ac19190615415565b612acb9190615486565b821015612ad757600080fd5b6103e86005612ae4610cdb565b612aee9190615415565b612af89190615486565b821115612b0457600080fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b612bd56147fd565b601b6000601d5481526020019081526020016000206040518061012001604052908160008201548152602001600182018054612c109061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612c3c9061533e565b8015612c895780601f10612c5e57610100808354040283529160200191612c89565b820191906000526020600020905b815481529060010190602001808311612c6c57829003601f168201915b50505050508152602001600282018054612ca29061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612cce9061533e565b8015612d1b5780601f10612cf057610100808354040283529160200191612d1b565b820191906000526020600020905b815481529060010190602001808311612cfe57829003601f168201915b50505050508152602001600382018054612d349061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612d609061533e565b8015612dad5780601f10612d8257610100808354040283529160200191612dad565b820191906000526020600020905b815481529060010190602001808311612d9057829003601f168201915b505050505081526020016004820160009054906101000a900460ff166002811115612ddb57612dda614c54565b5b6002811115612ded57612dec614c54565b5b8152602001600582018054612e019061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612e2d9061533e565b8015612e7a5780601f10612e4f57610100808354040283529160200191612e7a565b820191906000526020600020905b815481529060010190602001808311612e5d57829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b60606000601f8054905067ffffffffffffffff811115612f1557612f1461536f565b5b604051908082528060200260200182016040528015612f4e57816020015b612f3b6147fd565b815260200190600190039081612f335790505b50905060005b601f805490508110156132c657601b6000601f8381548110612f7957612f7861539e565b5b906000526020600020015481526020019081526020016000206040518061012001604052908160008201548152602001600182018054612fb89061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612fe49061533e565b80156130315780601f1061300657610100808354040283529160200191613031565b820191906000526020600020905b81548152906001019060200180831161301457829003601f168201915b5050505050815260200160028201805461304a9061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546130769061533e565b80156130c35780601f10613098576101008083540402835291602001916130c3565b820191906000526020600020905b8154815290600101906020018083116130a657829003601f168201915b505050505081526020016003820180546130dc9061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546131089061533e565b80156131555780601f1061312a57610100808354040283529160200191613155565b820191906000526020600020905b81548152906001019060200180831161313857829003601f168201915b505050505081526020016004820160009054906101000a900460ff16600281111561318357613182614c54565b5b600281111561319557613194614c54565b5b81526020016005820180546131a99061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546131d59061533e565b80156132225780601f106131f757610100808354040283529160200191613222565b820191906000526020600020905b81548152906001019060200180831161320557829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508282815181106132a8576132a761539e565b5b602002602001018190525080806132be906153cd565b915050612f54565b508091505090565b6132d66133f4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333c90615947565b60405180910390fd5b61334e81613f50565b50565b6133596133f4565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161337f90615998565b60006040518083038185875af1925050503d80600081146133bc576040519150601f19603f3d011682016040523d82523d6000602084013e6133c1565b606091505b50508091505050565b601e81815481106133da57600080fd5b906000526020600020016000915090505481565b600b5481565b6133fc613472565b73ffffffffffffffffffffffffffffffffffffffff1661341a6115bc565b73ffffffffffffffffffffffffffffffffffffffff1614613470576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613467906159f9565b60405180910390fd5b565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135589190614b00565b60405180910390a3505050565b60006135718484612b40565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146135b557818110156135a757600080fd5b6135b4848484840361347a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135f457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361362d57600080fd5b600081036136465761364183836000614115565b613e7c565b61364e6115bc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156136bc575061368c6115bc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561372f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156137485750600660149054906101000a900460ff16155b15613a1d57600c60009054906101000a900460ff1661380c57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138025750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61380b57600080fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138af5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138ea576009548111156138c357600080fd5b600b546138cf8361123c565b826138da91906152db565b11156138e557600080fd5b613a1c565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561398d5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139a6576009548111156139a157600080fd5b613a1b565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a1a57600b54613a038361123c565b82613a0e91906152db565b1115613a1957600080fd5b5b5b5b5b6000613a283061123c565b90506000600a548210159050808015613a4d5750600c60019054906101000a900460ff165b8015613a665750600660149054906101000a900460ff16155b8015613abc5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b125750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b685750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613bac576001600660146101000a81548160ff021916908315150217905550613b906142d3565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613c625750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613c6c57600090505b60008115613e6357601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ccf57506000601054115b15613d5b57606460105486613ce49190615415565b613cee9190615486565b905060105460125482613d019190615415565b613d0b9190615486565b60146000828254613d1c91906152db565b9250508190555060105460115482613d349190615415565b613d3e9190615486565b60136000828254613d4f91906152db565b92505081905550613e3f565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613db657506000600d54115b15613e3e576064600d5486613dcb9190615415565b613dd59190615486565b9050600d54600f5482613de89190615415565b613df29190615486565b60146000828254613e0391906152db565b92505081905550600d54600e5482613e1b9190615415565b613e259190615486565b60136000828254613e3691906152db565b925050819055505b5b6000811115613e5457613e53873083614115565b5b8085613e609190615a19565b94505b613e6e878787614115565b601554601081905550505050505b505050565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ecf9190615a19565b9250508190555080600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f449190614b00565b60405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60005b600182805490506140859190615a19565b8110156140ea578160018261409a91906152db565b815481106140ab576140aa61539e565b5b90600052602060002001548282815481106140c9576140c861539e565b5b906000526020600020018190555080806140e2906153cd565b915050614074565b50808054806140fc576140fb615a4d565b5b6001900381819060005260206000200160009055905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361414e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361418757600080fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156141d757600080fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142c59190614b00565b60405180910390a350505050565b60006142de3061123c565b905060006013546014546142f291906152db565b90506000808314806143045750600082145b15614311575050506144c2565b6014600a546143209190615415565b831115614339576014600a546143369190615415565b92505b60006002836014548661434c9190615415565b6143569190615486565b6143609190615486565b9050600081856143709190615a19565b90506000479050614380826144c4565b6000814761438e9190615a19565b9050600086601354836143a19190615415565b6143ab9190615486565b9050600081836143bb9190615a19565b9050600060148190555060006013819055506000861180156143dd5750600081115b1561442a576143ec8682614701565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260145460405161442193929190615a7c565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161447090615998565b60006040518083038185875af1925050503d80600081146144ad576040519150601f19603f3d011682016040523d82523d6000602084013e6144b2565b606091505b5050809750505050505050505050505b565b6000600267ffffffffffffffff8111156144e1576144e061536f565b5b60405190808252806020026020018201604052801561450f5781602001602082028036833780820191505090505b50905030816000815181106145275761452661539e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145f091906154cc565b816001815181106146045761460361539e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614669307f00000000000000000000000000000000000000000000000000000000000000008461347a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016146cb959493929190615b9d565b600060405180830381600087803b1580156146e557600080fd5b505af11580156146f9573d6000803e3d6000fd5b505050505050565b61472c307f00000000000000000000000000000000000000000000000000000000000000008461347a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016147b396959493929190615bf7565b60606040518083038185885af11580156147d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147f69190615c58565b5050505050565b604051806101200160405280600081526020016060815260200160608152602001606081526020016000600281111561483957614838614c54565b5b8152602001606081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b6000819050919050565b61488e8161487b565b811461489957600080fd5b50565b6000813590506148ab81614885565b92915050565b600080604083850312156148c8576148c7614871565b5b60006148d68582860161489c565b92505060206148e78582860161489c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561492b578082015181840152602081019050614910565b60008484015250505050565b6000601f19601f8301169050919050565b6000614953826148f1565b61495d81856148fc565b935061496d81856020860161490d565b61497681614937565b840191505092915050565b6000602082019050818103600083015261499b8184614948565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006149ce826149a3565b9050919050565b6149de816149c3565b81146149e957600080fd5b50565b6000813590506149fb816149d5565b92915050565b60008060408385031215614a1857614a17614871565b5b6000614a26858286016149ec565b9250506020614a378582860161489c565b9150509250929050565b60008115159050919050565b614a5681614a41565b82525050565b6000602082019050614a716000830184614a4d565b92915050565b6000819050919050565b6000614a9c614a97614a92846149a3565b614a77565b6149a3565b9050919050565b6000614aae82614a81565b9050919050565b6000614ac082614aa3565b9050919050565b614ad081614ab5565b82525050565b6000602082019050614aeb6000830184614ac7565b92915050565b614afa8161487b565b82525050565b6000602082019050614b156000830184614af1565b92915050565b600080600060608486031215614b3457614b33614871565b5b6000614b42868287016149ec565b9350506020614b53868287016149ec565b9250506040614b648682870161489c565b9150509250925092565b614b77816149c3565b82525050565b6000602082019050614b926000830184614b6e565b92915050565b600060ff82169050919050565b614bae81614b98565b82525050565b6000602082019050614bc96000830184614ba5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c048161487b565b82525050565b600082825260208201905092915050565b6000614c26826148f1565b614c308185614c0a565b9350614c4081856020860161490d565b614c4981614937565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110614c9457614c93614c54565b5b50565b6000819050614ca582614c83565b919050565b6000614cb582614c97565b9050919050565b614cc581614caa565b82525050565b614cd4816149c3565b82525050565b600061012083016000830151614cf36000860182614bfb565b5060208301518482036020860152614d0b8282614c1b565b91505060408301518482036040860152614d258282614c1b565b91505060608301518482036060860152614d3f8282614c1b565b9150506080830151614d546080860182614cbc565b5060a083015184820360a0860152614d6c8282614c1b565b91505060c0830151614d8160c0860182614bfb565b5060e0830151614d9460e0860182614bfb565b50610100830151614da9610100860182614ccb565b508091505092915050565b6000614dc08383614cda565b905092915050565b6000602082019050919050565b6000614de082614bcf565b614dea8185614bda565b935083602082028501614dfc85614beb565b8060005b85811015614e385784840389528151614e198582614db4565b9450614e2483614dc8565b925060208a01995050600181019050614e00565b50829750879550505050505092915050565b60006020820190508181036000830152614e648184614dd5565b905092915050565b600060208284031215614e8257614e81614871565b5b6000614e908482850161489c565b91505092915050565b600060208284031215614eaf57614eae614871565b5b6000614ebd848285016149ec565b91505092915050565b614ecf81614a41565b8114614eda57600080fd5b50565b600081359050614eec81614ec6565b92915050565b60008060408385031215614f0957614f08614871565b5b6000614f17858286016149ec565b9250506020614f2885828601614edd565b9150509250929050565b614f3b81614caa565b82525050565b600061012082019050614f57600083018c614af1565b8181036020830152614f69818b614948565b90508181036040830152614f7d818a614948565b90508181036060830152614f918189614948565b9050614fa06080830188614f32565b81810360a0830152614fb28187614948565b9050614fc160c0830186614af1565b614fce60e0830185614af1565b614fdc610100830184614b6e565b9a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f84011261500f5761500e614fea565b5b8235905067ffffffffffffffff81111561502c5761502b614fef565b5b60208301915083600182028301111561504857615047614ff4565b5b9250929050565b6003811061505c57600080fd5b50565b60008135905061506e8161504f565b92915050565b600080600080600080600080600060a08a8c03121561509657615095614871565b5b60008a013567ffffffffffffffff8111156150b4576150b3614876565b5b6150c08c828d01614ff9565b995099505060208a013567ffffffffffffffff8111156150e3576150e2614876565b5b6150ef8c828d01614ff9565b975097505060408a013567ffffffffffffffff81111561511257615111614876565b5b61511e8c828d01614ff9565b955095505060606151318c828d0161505f565b93505060808a013567ffffffffffffffff81111561515257615151614876565b5b61515e8c828d01614ff9565b92509250509295985092959850929598565b6000806040838503121561518757615186614871565b5b6000615195858286016149ec565b92505060206151a6858286016149ec565b9150509250929050565b6000610120830160008301516151c96000860182614bfb565b50602083015184820360208601526151e18282614c1b565b915050604083015184820360408601526151fb8282614c1b565b915050606083015184820360608601526152158282614c1b565b915050608083015161522a6080860182614cbc565b5060a083015184820360a08601526152428282614c1b565b91505060c083015161525760c0860182614bfb565b5060e083015161526a60e0860182614bfb565b5061010083015161527f610100860182614ccb565b508091505092915050565b600060208201905081810360008301526152a481846151b0565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006152e68261487b565b91506152f18361487b565b9250828201905080821115615309576153086152ac565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061535657607f821691505b6020821081036153695761536861530f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006153d88261487b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361540a576154096152ac565b5b600182019050919050565b60006154208261487b565b915061542b8361487b565b92508282026154398161487b565b915082820484148315176154505761544f6152ac565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006154918261487b565b915061549c8361487b565b9250826154ac576154ab615457565b5b828204905092915050565b6000815190506154c6816149d5565b92915050565b6000602082840312156154e2576154e1614871565b5b60006154f0848285016154b7565b91505092915050565b600060408201905061550e6000830185614b6e565b61551b6020830184614b6e565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061557e6025836148fc565b915061558982615522565b604082019050919050565b600060208201905081810360008301526155ad81615571565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026156167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826155d9565b61562086836155d9565b95508019841693508086168417925050509392505050565b600061565361564e6156498461487b565b614a77565b61487b565b9050919050565b6000819050919050565b61566d83615638565b6156816156798261565a565b8484546155e6565b825550505050565b600090565b615696615689565b6156a1818484615664565b505050565b5b818110156156c5576156ba60008261568e565b6001810190506156a7565b5050565b601f82111561570a576156db816155b4565b6156e4846155c9565b810160208510156156f3578190505b6157076156ff856155c9565b8301826156a6565b50505b505050565b600082821c905092915050565b600061572d6000198460080261570f565b1980831691505092915050565b6000615746838361571c565b9150826002028217905092915050565b61575f826148f1565b67ffffffffffffffff8111156157785761577761536f565b5b615782825461533e565b61578d8282856156c9565b600060209050601f8311600181146157c057600084156157ae578287015190505b6157b8858261573a565b865550615820565b601f1984166157ce866155b4565b60005b828110156157f6578489015182556001820191506020850194506020810190506157d1565b86831015615813578489015161580f601f89168261571c565b8355505b6001600288020188555050505b505050505050565b60008151905061583781614885565b92915050565b60006020828403121561585357615852614871565b5b600061586184828501615828565b91505092915050565b600060408201905061587f6000830185614b6e565b61588c6020830184614af1565b9392505050565b6000815190506158a281614ec6565b92915050565b6000602082840312156158be576158bd614871565b5b60006158cc84828501615893565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006159316026836148fc565b915061593c826158d5565b604082019050919050565b6000602082019050818103600083015261596081615924565b9050919050565b600081905092915050565b50565b6000615982600083615967565b915061598d82615972565b600082019050919050565b60006159a382615975565b9150819050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006159e36020836148fc565b91506159ee826159ad565b602082019050919050565b60006020820190508181036000830152615a12816159d6565b9050919050565b6000615a248261487b565b9150615a2f8361487b565b9250828203905081811115615a4757615a466152ac565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000606082019050615a916000830186614af1565b615a9e6020830185614af1565b615aab6040830184614af1565b949350505050565b6000819050919050565b6000615ad8615ad3615ace84615ab3565b614a77565b61487b565b9050919050565b615ae881615abd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000615b268383614ccb565b60208301905092915050565b6000602082019050919050565b6000615b4a82615aee565b615b548185615af9565b9350615b5f83615b0a565b8060005b83811015615b90578151615b778882615b1a565b9750615b8283615b32565b925050600181019050615b63565b5085935050505092915050565b600060a082019050615bb26000830188614af1565b615bbf6020830187615adf565b8181036040830152615bd18186615b3f565b9050615be06060830185614b6e565b615bed6080830184614af1565b9695505050505050565b600060c082019050615c0c6000830189614b6e565b615c196020830188614af1565b615c266040830187615adf565b615c336060830186615adf565b615c406080830185614b6e565b615c4d60a0830184614af1565b979650505050505050565b600080600060608486031215615c7157615c70614871565b5b6000615c7f86828701615828565b9350506020615c9086828701615828565b9250506040615ca186828701615828565b915050925092509256fea2646970667358221220ea1e19e433d8f43b301a3a3b156f6410728905b1b383356a2664815dda506fbe64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c806395d89b4111610175578063c9567bf9116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610b11578063f5648a4f14610b3a578063f84e748214610b51578063f8b45b0514610b8e576102d4565b8063e2f4560514610a90578063e9c6b75714610abb578063eb2f107814610ae6576102d4565b8063c9567bf914610980578063cb96372814610997578063d257b34f146109c0578063d4698016146109fd578063d85ba06314610a28578063dd62ed3e14610a53576102d4565b8063aa14e7c01161012e578063aa14e7c014610870578063b6721b84146108ad578063bbc0c742146108d6578063c024666814610901578063c5a580e41461092a578063c8c8ebe414610955576102d4565b806395d89b4114610762578063961883991461078d5780639e78fb4f146107b6578063a3d76ce4146107cd578063a457c2d7146107f6578063a9059cbb14610833576102d4565b80634fbee193116102345780636fe168e5116101ed5780637571336a116101c75780637571336a1461069e57806375f0a874146106c75780638a3b6ab8146106f25780638da5cb5b14610737576102d4565b80636fe168e51461061f57806370a082311461064a578063715018a614610687576102d4565b80634fbee1931461050f57806366ca9b831461054c5780636a486a8e146105755780636adab8a4146105a05780636b2e8cc5146105c95780636ddd1713146105f4576102d4565b806327c8f8351161028657806327c8f835146103fd578063313ce5671461042857806339509351146104535780633b088f501461049057806342966c68146104bb57806349bd5a5e146104e4576102d4565b806302dbd8f8146102d957806306fdde0314610302578063095ea7b31461032d5780631694505e1461036a57806318160ddd1461039557806323b872dd146103c0576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061030060048036038101906102fb91906148b1565b610bb9565b005b34801561030e57600080fd5b50610317610c02565b6040516103249190614981565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190614a01565b610c94565b6040516103619190614a5c565b60405180910390f35b34801561037657600080fd5b5061037f610cb7565b60405161038c9190614ad6565b60405180910390f35b3480156103a157600080fd5b506103aa610cdb565b6040516103b79190614b00565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190614b1b565b610ce5565b6040516103f49190614a5c565b60405180910390f35b34801561040957600080fd5b50610412610d14565b60405161041f9190614b7d565b60405180910390f35b34801561043457600080fd5b5061043d610d1a565b60405161044a9190614bb4565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190614a01565b610d23565b6040516104879190614a5c565b60405180910390f35b34801561049c57600080fd5b506104a5610d5a565b6040516104b29190614e4a565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190614e6c565b611136565b005b3480156104f057600080fd5b506104f9611143565b6040516105069190614b7d565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190614e99565b611169565b6040516105439190614a5c565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e91906148b1565b6111bf565b005b34801561058157600080fd5b5061058a6111ff565b6040516105979190614b00565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190614e6c565b611205565b005b3480156105d557600080fd5b506105de611217565b6040516105eb9190614b00565b60405180910390f35b34801561060057600080fd5b5061060961121d565b6040516106169190614a5c565b60405180910390f35b34801561062b57600080fd5b50610634611230565b6040516106419190614b00565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190614e99565b61123c565b60405161067e9190614b00565b60405180910390f35b34801561069357600080fd5b5061069c611284565b005b3480156106aa57600080fd5b506106c560048036038101906106c09190614ef2565b611298565b005b3480156106d357600080fd5b506106dc6112fb565b6040516106e99190614b7d565b60405180910390f35b3480156106fe57600080fd5b5061071960048036038101906107149190614e6c565b611321565b60405161072e99989796959493929190614f41565b60405180910390f35b34801561074357600080fd5b5061074c6115bc565b6040516107599190614b7d565b60405180910390f35b34801561076e57600080fd5b506107776115e6565b6040516107849190614981565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af91906148b1565b611678565b005b3480156107c257600080fd5b506107cb6116ec565b005b3480156107d957600080fd5b506107f460048036038101906107ef9190614e6c565b61192a565b005b34801561080257600080fd5b5061081d60048036038101906108189190614a01565b61193c565b60405161082a9190614a5c565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614a01565b6119b3565b6040516108679190614a5c565b60405180910390f35b34801561087c57600080fd5b5061089760048036038101906108929190614e6c565b6119d6565b6040516108a49190614b00565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf9190615074565b6119fa565b005b3480156108e257600080fd5b506108eb612834565b6040516108f89190614a5c565b60405180910390f35b34801561090d57600080fd5b5061092860048036038101906109239190614ef2565b612847565b005b34801561093657600080fd5b5061093f6128aa565b60405161094c9190614b00565b60405180910390f35b34801561096157600080fd5b5061096a6128b0565b6040516109779190614b00565b60405180910390f35b34801561098c57600080fd5b506109956128b6565b005b3480156109a357600080fd5b506109be60048036038101906109b99190614e99565b612910565b005b3480156109cc57600080fd5b506109e760048036038101906109e29190614e6c565b612a9f565b6040516109f49190614a5c565b60405180910390f35b348015610a0957600080fd5b50610a12612b14565b604051610a1f9190614b7d565b60405180910390f35b348015610a3457600080fd5b50610a3d612b3a565b604051610a4a9190614b00565b60405180910390f35b348015610a5f57600080fd5b50610a7a6004803603810190610a759190615170565b612b40565b604051610a879190614b00565b60405180910390f35b348015610a9c57600080fd5b50610aa5612bc7565b604051610ab29190614b00565b60405180910390f35b348015610ac757600080fd5b50610ad0612bcd565b604051610add919061528a565b60405180910390f35b348015610af257600080fd5b50610afb612ef2565b604051610b089190614e4a565b60405180910390f35b348015610b1d57600080fd5b50610b386004803603810190610b339190614e99565b6132ce565b005b348015610b4657600080fd5b50610b4f613351565b005b348015610b5d57600080fd5b50610b786004803603810190610b739190614e6c565b6133ca565b604051610b859190614b00565b60405180910390f35b348015610b9a57600080fd5b50610ba36133ee565b604051610bb09190614b00565b60405180910390f35b610bc16133f4565b8160118190555080601281905550601254601154610bdf91906152db565b601081905550601054601581905550601e6010541115610bfe57600080fd5b5050565b606060038054610c119061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3d9061533e565b8015610c8a5780601f10610c5f57610100808354040283529160200191610c8a565b820191906000526020600020905b815481529060010190602001808311610c6d57829003601f168201915b5050505050905090565b600080610c9f613472565b9050610cac81858561347a565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600080610cf0613472565b9050610cfd858285613565565b610d088585856135bb565b60019150509392505050565b61dead81565b60006012905090565b600080610d2e613472565b9050610d4f818585610d408589612b40565b610d4a91906152db565b61347a565b600191505092915050565b60606000601e8054905067ffffffffffffffff811115610d7d57610d7c61536f565b5b604051908082528060200260200182016040528015610db657816020015b610da36147fd565b815260200190600190039081610d9b5790505b50905060005b601e8054905081101561112e57601b6000601e8381548110610de157610de061539e565b5b906000526020600020015481526020019081526020016000206040518061012001604052908160008201548152602001600182018054610e209061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4c9061533e565b8015610e995780601f10610e6e57610100808354040283529160200191610e99565b820191906000526020600020905b815481529060010190602001808311610e7c57829003601f168201915b50505050508152602001600282018054610eb29061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ede9061533e565b8015610f2b5780601f10610f0057610100808354040283529160200191610f2b565b820191906000526020600020905b815481529060010190602001808311610f0e57829003601f168201915b50505050508152602001600382018054610f449061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f709061533e565b8015610fbd5780601f10610f9257610100808354040283529160200191610fbd565b820191906000526020600020905b815481529060010190602001808311610fa057829003601f168201915b505050505081526020016004820160009054906101000a900460ff166002811115610feb57610fea614c54565b5b6002811115610ffd57610ffc614c54565b5b81526020016005820180546110119061533e565b80601f016020809104026020016040519081016040528092919081815260200182805461103d9061533e565b801561108a5780601f1061105f5761010080835404028352916020019161108a565b820191906000526020600020905b81548152906001019060200180831161106d57829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508282815181106111105761110f61539e565b5b60200260200101819052508080611126906153cd565b915050610dbc565b508091505090565b6111403382613e81565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6111c76133f4565b81600e8190555080600f81905550600f54600e546111e591906152db565b600d81905550600f600d5411156111fb57600080fd5b5050565b60105481565b61120d6133f4565b80601a8190555050565b601d5481565b600c60019054906101000a900460ff1681565b678ac7230489e8000081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61128c6133f4565b6112966000613f50565b565b6112a06133f4565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60205280600052604060002060009150905080600001549080600101805461134a9061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546113769061533e565b80156113c35780601f10611398576101008083540402835291602001916113c3565b820191906000526020600020905b8154815290600101906020018083116113a657829003601f168201915b5050505050908060020180546113d89061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546114049061533e565b80156114515780601f1061142657610100808354040283529160200191611451565b820191906000526020600020905b81548152906001019060200180831161143457829003601f168201915b5050505050908060030180546114669061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546114929061533e565b80156114df5780601f106114b4576101008083540402835291602001916114df565b820191906000526020600020905b8154815290600101906020018083116114c257829003601f168201915b5050505050908060040160009054906101000a900460ff16908060050180546115079061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546115339061533e565b80156115805780601f1061155557610100808354040283529160200191611580565b820191906000526020600020905b81548152906001019060200180831161156357829003601f168201915b5050505050908060060154908060070154908060080160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905089565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115f59061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546116219061533e565b801561166e5780601f106116435761010080835404028352916020019161166e565b820191906000526020600020905b81548152906001019060200180831161165157829003601f168201915b5050505050905090565b6116806133f4565b6103e8600561168d610cdb565b6116979190615415565b6116a19190615486565b8210156116ad57600080fd5b6103e860056116ba610cdb565b6116c49190615415565b6116ce9190615486565b8110156116da57600080fd5b80600b81905550816009819055505050565b6116f46133f4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178391906154cc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561180a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182e91906154cc565b6040518363ffffffff1660e01b815260040161184b9291906154f9565b6020604051808303816000875af115801561186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188e91906154cc565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506118fb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001614016565b611928600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611298565b565b6119326133f4565b8060198190555050565b600080611947613472565b905060006119558286612b40565b90508381101561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190615594565b60405180910390fd5b6119a7828686840361347a565b60019250505092915050565b6000806119be613472565b90506119cb8185856135bb565b600191505092915050565b601f81815481106119e657600080fd5b906000526020600020016000915090505481565b6000601c60008154611a0b906153cd565b9190508190559050611a1b6147fd565b60006002811115611a2f57611a2e614c54565b5b856002811115611a4257611a41614c54565b5b03611d6d57601b6000601d5481526020019081526020016000206040518061012001604052908160008201548152602001600182018054611a829061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611aae9061533e565b8015611afb5780601f10611ad057610100808354040283529160200191611afb565b820191906000526020600020905b815481529060010190602001808311611ade57829003601f168201915b50505050508152602001600282018054611b149061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b409061533e565b8015611b8d5780601f10611b6257610100808354040283529160200191611b8d565b820191906000526020600020905b815481529060010190602001808311611b7057829003601f168201915b50505050508152602001600382018054611ba69061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd29061533e565b8015611c1f5780601f10611bf457610100808354040283529160200191611c1f565b820191906000526020600020905b815481529060010190602001808311611c0257829003601f168201915b505050505081526020016004820160009054906101000a900460ff166002811115611c4d57611c4c614c54565b5b6002811115611c5f57611c5e614c54565b5b8152602001600582018054611c739061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9f9061533e565b8015611cec5780601f10611cc157610100808354040283529160200191611cec565b820191906000526020600020905b815481529060010190602001808311611ccf57829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905081601d819055506124dc565b60016002811115611d8157611d80614c54565b5b856002811115611d9457611d93614c54565b5b03612126576000601e8054905011156120f857601954601e80549050036120f757601b6000601e600081548110611dce57611dcd61539e565b5b906000526020600020015481526020019081526020016000206040518061012001604052908160008201548152602001600182018054611e0d9061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e399061533e565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b50505050508152602001600282018054611e9f9061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611ecb9061533e565b8015611f185780601f10611eed57610100808354040283529160200191611f18565b820191906000526020600020905b815481529060010190602001808311611efb57829003601f168201915b50505050508152602001600382018054611f319061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5d9061533e565b8015611faa5780601f10611f7f57610100808354040283529160200191611faa565b820191906000526020600020905b815481529060010190602001808311611f8d57829003601f168201915b505050505081526020016004820160009054906101000a900460ff166002811115611fd857611fd7614c54565b5b6002811115611fea57611fe9614c54565b5b8152602001600582018054611ffe9061533e565b80601f016020809104026020016040519081016040528092919081815260200182805461202a9061533e565b80156120775780601f1061204c57610100808354040283529160200191612077565b820191906000526020600020905b81548152906001019060200180831161205a57829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090506120f6601e614071565b5b5b601e8290806001815401808255809150506001900390600052602060002001600090919091909150556124db565b60028081111561213957612138614c54565b5b85600281111561214c5761214b614c54565b5b036124da576000601f8054905011156124b057601a54601f80549050036124af57601b6000601f6000815481106121865761218561539e565b5b9060005260206000200154815260200190815260200160002060405180610120016040529081600082015481526020016001820180546121c59061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546121f19061533e565b801561223e5780601f106122135761010080835404028352916020019161223e565b820191906000526020600020905b81548152906001019060200180831161222157829003601f168201915b505050505081526020016002820180546122579061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546122839061533e565b80156122d05780601f106122a5576101008083540402835291602001916122d0565b820191906000526020600020905b8154815290600101906020018083116122b357829003601f168201915b505050505081526020016003820180546122e99061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546123159061533e565b80156123625780601f1061233757610100808354040283529160200191612362565b820191906000526020600020905b81548152906001019060200180831161234557829003601f168201915b505050505081526020016004820160009054906101000a900460ff1660028111156123905761238f614c54565b5b60028111156123a2576123a1614c54565b5b81526020016005820180546123b69061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546123e29061533e565b801561242f5780601f106124045761010080835404028352916020019161242f565b820191906000526020600020905b81548152906001019060200180831161241257829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090506124ae601f614071565b5b5b601f8290806001815401808255809150506001900390600052602060002001600090919091909150555b5b5b6000678ac7230489e80000905060008260e001511115612528578160e00151905062093a804261250c91906152db565b8260c001511015612527576002816125249190615415565b90505b5b6125323382613e81565b6000604051806101200160405280601c5481526020018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188600281111561263957612638614c54565b5b815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020014281526020018381526020013373ffffffffffffffffffffffffffffffffffffffff16815250905080601b6000836000015181526020019081526020016000206000820151816000015560208201518160010190816126e79190615756565b5060408201518160020190816126fd9190615756565b5060608201518160030190816127139190615756565b5060808201518160040160006101000a81548160ff0219169083600281111561273f5761273e614c54565b5b021790555060a08201518160050190816127599190615756565b5060c0820151816006015560e082015181600701556101008201518160080160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507f3b7d4cd9fe89c9f7a1618db8fb83fa8e163aae15a67e76ce7d5ce50316d4d476816000015182602001518360600151846040015185608001518660a001518760c001518860e0015189610100015160405161281d99989796959493929190614f41565b60405180910390a150505050505050505050505050565b600c60009054906101000a900460ff1681565b61284f6133f4565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c5481565b60095481565b6128be6133f4565b600c60009054906101000a900460ff16156128d857600080fd5b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b6129186133f4565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129539190614b7d565b602060405180830381865afa158015612970573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612994919061583d565b1161299e57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129d99190614b7d565b602060405180830381865afa1580156129f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1a919061583d565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612a5792919061586a565b6020604051808303816000875af1158015612a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9a91906158a8565b505050565b6000612aa96133f4565b620186a06001612ab7610cdb565b612ac19190615415565b612acb9190615486565b821015612ad757600080fd5b6103e86005612ae4610cdb565b612aee9190615415565b612af89190615486565b821115612b0457600080fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b612bd56147fd565b601b6000601d5481526020019081526020016000206040518061012001604052908160008201548152602001600182018054612c109061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612c3c9061533e565b8015612c895780601f10612c5e57610100808354040283529160200191612c89565b820191906000526020600020905b815481529060010190602001808311612c6c57829003601f168201915b50505050508152602001600282018054612ca29061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612cce9061533e565b8015612d1b5780601f10612cf057610100808354040283529160200191612d1b565b820191906000526020600020905b815481529060010190602001808311612cfe57829003601f168201915b50505050508152602001600382018054612d349061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612d609061533e565b8015612dad5780601f10612d8257610100808354040283529160200191612dad565b820191906000526020600020905b815481529060010190602001808311612d9057829003601f168201915b505050505081526020016004820160009054906101000a900460ff166002811115612ddb57612dda614c54565b5b6002811115612ded57612dec614c54565b5b8152602001600582018054612e019061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612e2d9061533e565b8015612e7a5780601f10612e4f57610100808354040283529160200191612e7a565b820191906000526020600020905b815481529060010190602001808311612e5d57829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b60606000601f8054905067ffffffffffffffff811115612f1557612f1461536f565b5b604051908082528060200260200182016040528015612f4e57816020015b612f3b6147fd565b815260200190600190039081612f335790505b50905060005b601f805490508110156132c657601b6000601f8381548110612f7957612f7861539e565b5b906000526020600020015481526020019081526020016000206040518061012001604052908160008201548152602001600182018054612fb89061533e565b80601f0160208091040260200160405190810160405280929190818152602001828054612fe49061533e565b80156130315780601f1061300657610100808354040283529160200191613031565b820191906000526020600020905b81548152906001019060200180831161301457829003601f168201915b5050505050815260200160028201805461304a9061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546130769061533e565b80156130c35780601f10613098576101008083540402835291602001916130c3565b820191906000526020600020905b8154815290600101906020018083116130a657829003601f168201915b505050505081526020016003820180546130dc9061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546131089061533e565b80156131555780601f1061312a57610100808354040283529160200191613155565b820191906000526020600020905b81548152906001019060200180831161313857829003601f168201915b505050505081526020016004820160009054906101000a900460ff16600281111561318357613182614c54565b5b600281111561319557613194614c54565b5b81526020016005820180546131a99061533e565b80601f01602080910402602001604051908101604052809291908181526020018280546131d59061533e565b80156132225780601f106131f757610100808354040283529160200191613222565b820191906000526020600020905b81548152906001019060200180831161320557829003601f168201915b5050505050815260200160068201548152602001600782015481526020016008820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508282815181106132a8576132a761539e565b5b602002602001018190525080806132be906153cd565b915050612f54565b508091505090565b6132d66133f4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333c90615947565b60405180910390fd5b61334e81613f50565b50565b6133596133f4565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161337f90615998565b60006040518083038185875af1925050503d80600081146133bc576040519150601f19603f3d011682016040523d82523d6000602084013e6133c1565b606091505b50508091505050565b601e81815481106133da57600080fd5b906000526020600020016000915090505481565b600b5481565b6133fc613472565b73ffffffffffffffffffffffffffffffffffffffff1661341a6115bc565b73ffffffffffffffffffffffffffffffffffffffff1614613470576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613467906159f9565b60405180910390fd5b565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135589190614b00565b60405180910390a3505050565b60006135718484612b40565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146135b557818110156135a757600080fd5b6135b4848484840361347a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135f457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361362d57600080fd5b600081036136465761364183836000614115565b613e7c565b61364e6115bc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156136bc575061368c6115bc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561372f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156137485750600660149054906101000a900460ff16155b15613a1d57600c60009054906101000a900460ff1661380c57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138025750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61380b57600080fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138af5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138ea576009548111156138c357600080fd5b600b546138cf8361123c565b826138da91906152db565b11156138e557600080fd5b613a1c565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561398d5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139a6576009548111156139a157600080fd5b613a1b565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a1a57600b54613a038361123c565b82613a0e91906152db565b1115613a1957600080fd5b5b5b5b5b6000613a283061123c565b90506000600a548210159050808015613a4d5750600c60019054906101000a900460ff165b8015613a665750600660149054906101000a900460ff16155b8015613abc5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b125750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b685750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613bac576001600660146101000a81548160ff021916908315150217905550613b906142d3565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613c625750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613c6c57600090505b60008115613e6357601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ccf57506000601054115b15613d5b57606460105486613ce49190615415565b613cee9190615486565b905060105460125482613d019190615415565b613d0b9190615486565b60146000828254613d1c91906152db565b9250508190555060105460115482613d349190615415565b613d3e9190615486565b60136000828254613d4f91906152db565b92505081905550613e3f565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613db657506000600d54115b15613e3e576064600d5486613dcb9190615415565b613dd59190615486565b9050600d54600f5482613de89190615415565b613df29190615486565b60146000828254613e0391906152db565b92505081905550600d54600e5482613e1b9190615415565b613e259190615486565b60136000828254613e3691906152db565b925050819055505b5b6000811115613e5457613e53873083614115565b5b8085613e609190615a19565b94505b613e6e878787614115565b601554601081905550505050505b505050565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ecf9190615a19565b9250508190555080600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f449190614b00565b60405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60005b600182805490506140859190615a19565b8110156140ea578160018261409a91906152db565b815481106140ab576140aa61539e565b5b90600052602060002001548282815481106140c9576140c861539e565b5b906000526020600020018190555080806140e2906153cd565b915050614074565b50808054806140fc576140fb615a4d565b5b6001900381819060005260206000200160009055905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361414e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361418757600080fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156141d757600080fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142c59190614b00565b60405180910390a350505050565b60006142de3061123c565b905060006013546014546142f291906152db565b90506000808314806143045750600082145b15614311575050506144c2565b6014600a546143209190615415565b831115614339576014600a546143369190615415565b92505b60006002836014548661434c9190615415565b6143569190615486565b6143609190615486565b9050600081856143709190615a19565b90506000479050614380826144c4565b6000814761438e9190615a19565b9050600086601354836143a19190615415565b6143ab9190615486565b9050600081836143bb9190615a19565b9050600060148190555060006013819055506000861180156143dd5750600081115b1561442a576143ec8682614701565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260145460405161442193929190615a7c565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161447090615998565b60006040518083038185875af1925050503d80600081146144ad576040519150601f19603f3d011682016040523d82523d6000602084013e6144b2565b606091505b5050809750505050505050505050505b565b6000600267ffffffffffffffff8111156144e1576144e061536f565b5b60405190808252806020026020018201604052801561450f5781602001602082028036833780820191505090505b50905030816000815181106145275761452661539e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145f091906154cc565b816001815181106146045761460361539e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614669307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461347a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016146cb959493929190615b9d565b600060405180830381600087803b1580156146e557600080fd5b505af11580156146f9573d6000803e3d6000fd5b505050505050565b61472c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461347a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016147b396959493929190615bf7565b60606040518083038185885af11580156147d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147f69190615c58565b5050505050565b604051806101200160405280600081526020016060815260200160608152602001606081526020016000600281111561483957614838614c54565b5b8152602001606081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b6000819050919050565b61488e8161487b565b811461489957600080fd5b50565b6000813590506148ab81614885565b92915050565b600080604083850312156148c8576148c7614871565b5b60006148d68582860161489c565b92505060206148e78582860161489c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561492b578082015181840152602081019050614910565b60008484015250505050565b6000601f19601f8301169050919050565b6000614953826148f1565b61495d81856148fc565b935061496d81856020860161490d565b61497681614937565b840191505092915050565b6000602082019050818103600083015261499b8184614948565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006149ce826149a3565b9050919050565b6149de816149c3565b81146149e957600080fd5b50565b6000813590506149fb816149d5565b92915050565b60008060408385031215614a1857614a17614871565b5b6000614a26858286016149ec565b9250506020614a378582860161489c565b9150509250929050565b60008115159050919050565b614a5681614a41565b82525050565b6000602082019050614a716000830184614a4d565b92915050565b6000819050919050565b6000614a9c614a97614a92846149a3565b614a77565b6149a3565b9050919050565b6000614aae82614a81565b9050919050565b6000614ac082614aa3565b9050919050565b614ad081614ab5565b82525050565b6000602082019050614aeb6000830184614ac7565b92915050565b614afa8161487b565b82525050565b6000602082019050614b156000830184614af1565b92915050565b600080600060608486031215614b3457614b33614871565b5b6000614b42868287016149ec565b9350506020614b53868287016149ec565b9250506040614b648682870161489c565b9150509250925092565b614b77816149c3565b82525050565b6000602082019050614b926000830184614b6e565b92915050565b600060ff82169050919050565b614bae81614b98565b82525050565b6000602082019050614bc96000830184614ba5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c048161487b565b82525050565b600082825260208201905092915050565b6000614c26826148f1565b614c308185614c0a565b9350614c4081856020860161490d565b614c4981614937565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110614c9457614c93614c54565b5b50565b6000819050614ca582614c83565b919050565b6000614cb582614c97565b9050919050565b614cc581614caa565b82525050565b614cd4816149c3565b82525050565b600061012083016000830151614cf36000860182614bfb565b5060208301518482036020860152614d0b8282614c1b565b91505060408301518482036040860152614d258282614c1b565b91505060608301518482036060860152614d3f8282614c1b565b9150506080830151614d546080860182614cbc565b5060a083015184820360a0860152614d6c8282614c1b565b91505060c0830151614d8160c0860182614bfb565b5060e0830151614d9460e0860182614bfb565b50610100830151614da9610100860182614ccb565b508091505092915050565b6000614dc08383614cda565b905092915050565b6000602082019050919050565b6000614de082614bcf565b614dea8185614bda565b935083602082028501614dfc85614beb565b8060005b85811015614e385784840389528151614e198582614db4565b9450614e2483614dc8565b925060208a01995050600181019050614e00565b50829750879550505050505092915050565b60006020820190508181036000830152614e648184614dd5565b905092915050565b600060208284031215614e8257614e81614871565b5b6000614e908482850161489c565b91505092915050565b600060208284031215614eaf57614eae614871565b5b6000614ebd848285016149ec565b91505092915050565b614ecf81614a41565b8114614eda57600080fd5b50565b600081359050614eec81614ec6565b92915050565b60008060408385031215614f0957614f08614871565b5b6000614f17858286016149ec565b9250506020614f2885828601614edd565b9150509250929050565b614f3b81614caa565b82525050565b600061012082019050614f57600083018c614af1565b8181036020830152614f69818b614948565b90508181036040830152614f7d818a614948565b90508181036060830152614f918189614948565b9050614fa06080830188614f32565b81810360a0830152614fb28187614948565b9050614fc160c0830186614af1565b614fce60e0830185614af1565b614fdc610100830184614b6e565b9a9950505050505050505050565b600080fd5b600080fd5b600080fd5b60008083601f84011261500f5761500e614fea565b5b8235905067ffffffffffffffff81111561502c5761502b614fef565b5b60208301915083600182028301111561504857615047614ff4565b5b9250929050565b6003811061505c57600080fd5b50565b60008135905061506e8161504f565b92915050565b600080600080600080600080600060a08a8c03121561509657615095614871565b5b60008a013567ffffffffffffffff8111156150b4576150b3614876565b5b6150c08c828d01614ff9565b995099505060208a013567ffffffffffffffff8111156150e3576150e2614876565b5b6150ef8c828d01614ff9565b975097505060408a013567ffffffffffffffff81111561511257615111614876565b5b61511e8c828d01614ff9565b955095505060606151318c828d0161505f565b93505060808a013567ffffffffffffffff81111561515257615151614876565b5b61515e8c828d01614ff9565b92509250509295985092959850929598565b6000806040838503121561518757615186614871565b5b6000615195858286016149ec565b92505060206151a6858286016149ec565b9150509250929050565b6000610120830160008301516151c96000860182614bfb565b50602083015184820360208601526151e18282614c1b565b915050604083015184820360408601526151fb8282614c1b565b915050606083015184820360608601526152158282614c1b565b915050608083015161522a6080860182614cbc565b5060a083015184820360a08601526152428282614c1b565b91505060c083015161525760c0860182614bfb565b5060e083015161526a60e0860182614bfb565b5061010083015161527f610100860182614ccb565b508091505092915050565b600060208201905081810360008301526152a481846151b0565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006152e68261487b565b91506152f18361487b565b9250828201905080821115615309576153086152ac565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061535657607f821691505b6020821081036153695761536861530f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006153d88261487b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361540a576154096152ac565b5b600182019050919050565b60006154208261487b565b915061542b8361487b565b92508282026154398161487b565b915082820484148315176154505761544f6152ac565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006154918261487b565b915061549c8361487b565b9250826154ac576154ab615457565b5b828204905092915050565b6000815190506154c6816149d5565b92915050565b6000602082840312156154e2576154e1614871565b5b60006154f0848285016154b7565b91505092915050565b600060408201905061550e6000830185614b6e565b61551b6020830184614b6e565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061557e6025836148fc565b915061558982615522565b604082019050919050565b600060208201905081810360008301526155ad81615571565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026156167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826155d9565b61562086836155d9565b95508019841693508086168417925050509392505050565b600061565361564e6156498461487b565b614a77565b61487b565b9050919050565b6000819050919050565b61566d83615638565b6156816156798261565a565b8484546155e6565b825550505050565b600090565b615696615689565b6156a1818484615664565b505050565b5b818110156156c5576156ba60008261568e565b6001810190506156a7565b5050565b601f82111561570a576156db816155b4565b6156e4846155c9565b810160208510156156f3578190505b6157076156ff856155c9565b8301826156a6565b50505b505050565b600082821c905092915050565b600061572d6000198460080261570f565b1980831691505092915050565b6000615746838361571c565b9150826002028217905092915050565b61575f826148f1565b67ffffffffffffffff8111156157785761577761536f565b5b615782825461533e565b61578d8282856156c9565b600060209050601f8311600181146157c057600084156157ae578287015190505b6157b8858261573a565b865550615820565b601f1984166157ce866155b4565b60005b828110156157f6578489015182556001820191506020850194506020810190506157d1565b86831015615813578489015161580f601f89168261571c565b8355505b6001600288020188555050505b505050505050565b60008151905061583781614885565b92915050565b60006020828403121561585357615852614871565b5b600061586184828501615828565b91505092915050565b600060408201905061587f6000830185614b6e565b61588c6020830184614af1565b9392505050565b6000815190506158a281614ec6565b92915050565b6000602082840312156158be576158bd614871565b5b60006158cc84828501615893565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006159316026836148fc565b915061593c826158d5565b604082019050919050565b6000602082019050818103600083015261596081615924565b9050919050565b600081905092915050565b50565b6000615982600083615967565b915061598d82615972565b600082019050919050565b60006159a382615975565b9150819050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006159e36020836148fc565b91506159ee826159ad565b602082019050919050565b60006020820190508181036000830152615a12816159d6565b9050919050565b6000615a248261487b565b9150615a2f8361487b565b9250828203905081811115615a4757615a466152ac565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000606082019050615a916000830186614af1565b615a9e6020830185614af1565b615aab6040830184614af1565b949350505050565b6000819050919050565b6000615ad8615ad3615ace84615ab3565b614a77565b61487b565b9050919050565b615ae881615abd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000615b268383614ccb565b60208301905092915050565b6000602082019050919050565b6000615b4a82615aee565b615b548185615af9565b9350615b5f83615b0a565b8060005b83811015615b90578151615b778882615b1a565b9750615b8283615b32565b925050600181019050615b63565b5085935050505092915050565b600060a082019050615bb26000830188614af1565b615bbf6020830187615adf565b8181036040830152615bd18186615b3f565b9050615be06060830185614b6e565b615bed6080830184614af1565b9695505050505050565b600060c082019050615c0c6000830189614b6e565b615c196020830188614af1565b615c266040830187615adf565b615c336060830186615adf565b615c406080830185614b6e565b615c4d60a0830184614af1565b979650505050505050565b600080600060608486031215615c7157615c70614871565b5b6000615c7f86828701615828565b9350506020615c9086828701615828565b9250506040615ca186828701615828565b915050925092509256fea2646970667358221220ea1e19e433d8f43b301a3a3b156f6410728905b1b383356a2664815dda506fbe64736f6c63430008110033

Deployed Bytecode Sourcemap

23700:15208:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29184:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14291:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16792:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23748:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15420:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17614:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23841:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15262:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18318:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38064:336;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27456:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23806:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30258:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28874:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24316:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37820:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25509:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24164:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25243:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15591:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7965:103;;;;;;;;;;;;;:::i;:::-;;28717:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23933:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25419:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;7324:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14510:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28367:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27547;;;;;;;;;;;;;:::i;:::-;;37682:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19091:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15974:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25590:30;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35636:2038;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24124:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29539:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25473:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24009:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27897:144;;;;;;;;;;;;;:::i;:::-;;29870:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28049:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23970:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24204:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16271:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24051:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37942:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38408:308;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8223:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29679:183;;;;;;;;;;;;;:::i;:::-;;25547:34;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24091:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29184:347;7210:13;:11;:13::i;:::-;29328::::1;29309:16;:32;;;;29371:13;29352:16;:32;;;;29430:16;;29411;;:35;;;;:::i;:::-;29395:13;:51;;;;29471:13;;29457:11;:27;;;;29520:2;29503:13;;:19;;29495:28;;;::::0;::::1;;29184:347:::0;;:::o;14291:100::-;14345:13;14378:5;14371:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14291:100;:::o;16792:242::-;16911:4;16933:13;16949:12;:10;:12::i;:::-;16933:28;;16972:32;16981:5;16988:7;16997:6;16972:8;:32::i;:::-;17022:4;17015:11;;;16792:242;;;;:::o;23748:51::-;;;:::o;15420:108::-;15481:7;15508:12;;15501:19;;15420:108;:::o;17614:295::-;17745:4;17762:15;17780:12;:10;:12::i;:::-;17762:30;;17803:38;17819:4;17825:7;17834:6;17803:15;:38::i;:::-;17852:27;17862:4;17868:2;17872:6;17852:9;:27::i;:::-;17897:4;17890:11;;;17614:295;;;;;:::o;23841:53::-;23887:6;23841:53;:::o;15262:93::-;15320:5;15345:2;15338:9;;15262:93;:::o;18318:270::-;18433:4;18455:13;18471:12;:10;:12::i;:::-;18455:28;;18494:64;18503:5;18510:7;18547:10;18519:25;18529:5;18536:7;18519:9;:25::i;:::-;:38;;;;:::i;:::-;18494:8;:64::i;:::-;18576:4;18569:11;;;18318:270;;;;:::o;38064:336::-;38114:18;38145:32;38196:17;:24;;;;38180:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;38145:76;;38237:9;38232:130;38256:17;:24;;;;38252:1;:28;38232:130;;;38321:7;:29;38329:17;38347:1;38329:20;;;;;;;;:::i;:::-;;;;;;;;;;38321:29;;;;;;;;;;;38302:48;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;38316:1;38302:16;;;;;;;;:::i;:::-;;;;;;;:48;;;;38282:3;;;;;:::i;:::-;;;;38232:130;;;;38379:13;38372:20;;;38064:336;:::o;27456:83::-;27506:25;27512:10;27524:6;27506:5;:25::i;:::-;27456:83;:::o;23806:28::-;;;;;;;;;;;;;:::o;30258:126::-;30324:4;30348:19;:28;30368:7;30348:28;;;;;;;;;;;;;;;;;;;;;;;;;30341:35;;30258:126;;;:::o;28874:302::-;7210:13;:11;:13::i;:::-;29016::::1;28998:15;:31;;;;29058:13;29040:15;:31;;;;29115:15;;29097;;:33;;;;:::i;:::-;29082:12;:48;;;;29165:2;29149:12;;:18;;29141:27;;;::::0;::::1;;28874:302:::0;;:::o;24316:28::-;;;;:::o;37820:114::-;7210:13;:11;:13::i;:::-;37913::::1;37898:12;:28;;;;37820:114:::0;:::o;25509:29::-;;;;:::o;24164:31::-;;;;;;;;;;;;;:::o;25243:50::-;25285:8;25243:50;:::o;15591:177::-;15710:7;15742:9;:18;15752:7;15742:18;;;;;;;;;;;;;;;;15735:25;;15591:177;;;:::o;7965:103::-;7210:13;:11;:13::i;:::-;8030:30:::1;8057:1;8030:18;:30::i;:::-;7965:103::o:0;28717:149::-;7210:13;:11;:13::i;:::-;28854:4:::1;28812:31;:39;28844:6;28812:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;28717:149:::0;;:::o;23933:30::-;;;;;;;;;;;;;:::o;25419:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7324:87::-;7370:7;7397:6;;;;;;;;;;;7390:13;;7324:87;:::o;14510:104::-;14566:13;14599:7;14592:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14510:104;:::o;28367:342::-;7210:13;:11;:13::i;:::-;28547:4:::1;28542:1;28526:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28525:26;;;;:::i;:::-;28511:9;:41;;28503:50;;;::::0;::::1;;28614:4;28609:1;28593:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28592:26;;;;:::i;:::-;28572:15;:47;;28564:56;;;::::0;::::1;;28643:15;28631:9;:27;;;;28692:9;28669:20;:32;;;;28367:342:::0;;:::o;27547:::-;7210:13;:11;:13::i;:::-;27633:15:::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27615:55;;;27693:4;27713:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27615:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27599:13;;:147;;;;;;;;;;;;;;;;;;27757:58;27794:13;;;;;;;;;;;27810:4;27757:28;:58::i;:::-;27826:55;27860:13;;;;;;;;;;;27876:4;27826:25;:55::i;:::-;27547:342::o:0;37682:130::-;7210:13;:11;:13::i;:::-;37787:17:::1;37768:16;:36;;;;37682:130:::0;:::o;19091:505::-;19211:4;19233:13;19249:12;:10;:12::i;:::-;19233:28;;19272:24;19299:25;19309:5;19316:7;19299:9;:25::i;:::-;19272:52;;19377:15;19357:16;:35;;19335:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;19493:60;19502:5;19509:7;19537:15;19518:16;:34;19493:8;:60::i;:::-;19584:4;19577:11;;;;19091:505;;;;:::o;15974:234::-;16089:4;16111:13;16127:12;:10;:12::i;:::-;16111:28;;16150;16160:5;16167:2;16171:6;16150:9;:28::i;:::-;16196:4;16189:11;;;15974:234;;;;:::o;25590:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35636:2038::-;35810:18;35833:12;;35831:14;;;;;:::i;:::-;;;;;;;35810:35;;35858:25;;:::i;:::-;35912:15;35898:29;;;;;;;;:::i;:::-;;:10;:29;;;;;;;;:::i;:::-;;;35894:850;;35955:7;:23;35963:14;;35955:23;;;;;;;;;;;35944:34;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36010:10;35993:14;:27;;;;35894:850;;;36056:16;36042:30;;;;;;;;:::i;:::-;;:10;:30;;;;;;;;:::i;:::-;;;36038:706;;36120:1;36093:17;:24;;;;:28;36089:253;;;36174:16;;36146:17;:24;;;;:44;36142:185;;36226:7;:29;36234:17;36252:1;36234:20;;;;;;;;:::i;:::-;;;;;;;;;;36226:29;;;;;;;;;;;36215:40;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36278:29;36289:17;36278:10;:29::i;:::-;36142:185;36089:253;36356:17;36379:10;36356:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36038:706;;;36426:12;36412:26;;;;;;;;:::i;:::-;;:10;:26;;;;;;;;:::i;:::-;;;36408:336;;36482:1;36459:13;:20;;;;:24;36455:233;;;36532:12;;36508:13;:20;;;;:36;36504:169;;36580:7;:25;36588:13;36602:1;36588:16;;;;;;;;:::i;:::-;;;;;;;;;;36580:25;;;;;;;;;;;36569:36;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36628:25;36639:13;36628:10;:25::i;:::-;36504:169;36455:233;36702:13;36721:10;36702:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36408:336;36038:706;35894:850;36756:18;25285:8;36756:36;;36824:1;36807:8;:14;;;:18;36803:200;;;36855:8;:14;;;36842:27;;36933:7;36915:15;:25;;;;:::i;:::-;36888:8;:24;;;:52;36884:108;;;36975:1;36961:15;;;;;:::i;:::-;;;36884:108;36803:200;37015:35;37027:10;37039;37015:11;:35::i;:::-;37071:25;37099:322;;;;;;;;37128:12;;37099:322;;;;37162:6;;37099:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37219:9;;37099:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37189:5;;37099:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37254:10;37099:322;;;;;;;;:::i;:::-;;;;;;37289:9;;37099:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37330:15;37099:322;;;;37367:10;37099:322;;;;37399:10;37099:322;;;;;37071:350;;37455:8;37432:7;:20;37440:8;:11;;;37432:20;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37481:185;37493:8;:11;;;37506:8;:14;;;37522:8;:13;;;37537:8;:17;;;37570:8;:18;;;37590:8;:17;;;37609:8;:24;;;37635:8;:14;;;37651:8;:14;;;37481:185;;;;;;;;;;;;;;:::i;:::-;;;;;;;;35799:1875;;;;35636:2038;;;;;;;;;:::o;24124:33::-;;;;;;;;;;;;;:::o;29539:132::-;7210:13;:11;:13::i;:::-;29655:8:::1;29624:19;:28;29644:7;29624:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;29539:132:::0;;:::o;25473:27::-;;;;:::o;24009:35::-;;;;:::o;27897:144::-;7210:13;:11;:13::i;:::-;27959::::1;;;;;;;;;;;27958:14;27950:23;;;::::0;::::1;;28000:4;27984:13;;:20;;;;;;;;;;;;;;;;;;28029:4;28015:11;;:18;;;;;;;;;;;;;;;;;;27897:144::o:0;29870:242::-;7210:13;:11;:13::i;:::-;29987:1:::1;29955:3;29948:21;;;29978:4;29948:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;29940:49;;;::::0;::::1;;30000:14;30024:3;30017:21;;;30047:4;30017:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30000:53;;30071:3;30064:20;;;30085:10;30097:6;30064:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29929:183;29870:242:::0;:::o;28049:310::-;28157:4;7210:13;:11;:13::i;:::-;28222:6:::1;28217:1;28201:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28200:28;;;;:::i;:::-;28187:9;:41;;28179:50;;;::::0;::::1;;28283:4;28278:1;28262:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28261:26;;;;:::i;:::-;28248:9;:39;;28240:48;;;::::0;::::1;;28320:9;28299:18;:30;;;;28347:4;28340:11;;28049:310:::0;;;:::o;23970:30::-;;;;;;;;;;;;;:::o;24204:27::-;;;;:::o;16271:201::-;16405:7;16437:11;:18;16449:5;16437:18;;;;;;;;;;;;;;;:27;16456:7;16437:27;;;;;;;;;;;;;;;;16430:34;;16271:201;;;;:::o;24051:33::-;;;;:::o;37942:114::-;37989:16;;:::i;:::-;38025:7;:23;38033:14;;38025:23;;;;;;;;;;;38018:30;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37942:114;:::o;38408:308::-;38454:18;38485:28;38532:13;:20;;;;38516:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;38485:68;;38569:9;38564:118;38588:13;:20;;;;38584:1;:24;38564:118;;;38645:7;:25;38653:13;38667:1;38653:16;;;;;;;;:::i;:::-;;;;;;;;;;38645:25;;;;;;;;;;;38630:40;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9;38640:1;38630:12;;;;;;;;:::i;:::-;;;;;;;:40;;;;38610:3;;;;;:::i;:::-;;;;38564:118;;;;38699:9;38692:16;;;38408:308;:::o;8223:238::-;7210:13;:11;:13::i;:::-;8346:1:::1;8326:22;;:8;:22;;::::0;8304:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8425:28;8444:8;8425:18;:28::i;:::-;8223:238:::0;:::o;29679:183::-;7210:13;:11;:13::i;:::-;29735:12:::1;29780:10;29772:24;;29804:21;29772:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29758:96;;;;;29724:138;29679:183::o:0;25547:34::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24091:24::-;;;;:::o;7489:132::-;7564:12;:10;:12::i;:::-;7553:23;;:7;:5;:7::i;:::-;:23;;;7545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7489:132::o;6008:98::-;6061:7;6088:10;6081:17;;6008:98;:::o;21812:220::-;21970:6;21940:11;:18;21952:5;21940:18;;;;;;;;;;;;;;;:27;21959:7;21940:27;;;;;;;;;;;;;;;:36;;;;22008:7;21992:32;;22001:5;21992:32;;;22017:6;21992:32;;;;;;:::i;:::-;;;;;;;;21812:220;;;:::o;22323:420::-;22458:24;22485:25;22495:5;22502:7;22485:9;:25::i;:::-;22458:52;;22545:17;22525:16;:37;22521:215;;22607:6;22587:16;:26;;22579:35;;;;;;22658:51;22667:5;22674:7;22702:6;22683:16;:25;22658:8;:51::i;:::-;22521:215;22447:296;22323:420;;;:::o;30392:2865::-;30540:1;30524:18;;:4;:18;;;30516:27;;;;;;30576:1;30562:16;;:2;:16;;;30554:25;;;;;;30606:1;30596:6;:11;30592:93;;30624:28;30640:4;30646:2;30650:1;30624:15;:28::i;:::-;30667:7;;30592:93;30723:7;:5;:7::i;:::-;30715:15;;:4;:15;;;;:45;;;;;30753:7;:5;:7::i;:::-;30747:13;;:2;:13;;;;30715:45;:78;;;;;30791:1;30777:16;;:2;:16;;;;30715:78;:112;;;;;23887:6;30810:17;;:2;:17;;;;30715:112;:138;;;;;30845:8;;;;;;;;;;;30844:9;30715:138;30697:984;;;30885:13;;;;;;;;;;;30880:116;;30927:19;:25;30947:4;30927:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30956:19;:23;30976:2;30956:23;;;;;;;;;;;;;;;;;;;;;;;;;30927:52;30919:61;;;;;;30880:116;31058:25;:31;31084:4;31058:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;31111:31;:35;31143:2;31111:35;;;;;;;;;;;;;;;;;;;;;;;;;31110:36;31058:88;31036:634;;;31199:20;;31189:6;:30;;31181:39;;;;;;31273:9;;31256:13;31266:2;31256:9;:13::i;:::-;31247:6;:22;;;;:::i;:::-;:35;;31239:44;;;;;;31036:634;;;31365:25;:29;31391:2;31365:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;31416:31;:37;31448:4;31416:37;;;;;;;;;;;;;;;;;;;;;;;;;31415:38;31365:88;31343:327;;;31506:20;;31496:6;:30;;31488:39;;;;;;31343:327;;;31554:31;:35;31586:2;31554:35;;;;;;;;;;;;;;;;;;;;;;;;;31549:121;;31644:9;;31627:13;31637:2;31627:9;:13::i;:::-;31618:6;:22;;;;:::i;:::-;:35;;31610:44;;;;;;31549:121;31343:327;31036:634;30697:984;31693:28;31724:24;31742:4;31724:9;:24::i;:::-;31693:55;;31761:12;31800:18;;31776:20;:42;;31761:57;;31849:7;:35;;;;;31873:11;;;;;;;;;;;31849:35;:61;;;;;31902:8;;;;;;;;;;;31901:9;31849:61;:110;;;;;31928:25;:31;31954:4;31928:31;;;;;;;;;;;;;;;;;;;;;;;;;31927:32;31849:110;:153;;;;;31977:19;:25;31997:4;31977:25;;;;;;;;;;;;;;;;;;;;;;;;;31976:26;31849:153;:194;;;;;32020:19;:23;32040:2;32020:23;;;;;;;;;;;;;;;;;;;;;;;;;32019:24;31849:194;31831:326;;;32081:4;32070:8;;:15;;;;;;;;;;;;;;;;;;32102:10;:8;:10::i;:::-;32140:5;32129:8;;:16;;;;;;;;;;;;;;;;;;31831:326;32169:12;32185:8;;;;;;;;;;;32184:9;32169:24;;32210:19;:25;32230:4;32210:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;32239:19;:23;32259:2;32239:23;;;;;;;;;;;;;;;;;;;;;;;;;32210:52;32206:100;;;32289:5;32279:15;;32206:100;32318:12;32351:7;32347:819;;;32403:25;:29;32429:2;32403:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;32452:1;32436:13;;:17;32403:50;32399:618;;;32506:3;32490:13;;32481:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;32474:35;;32578:13;;32558:16;;32551:4;:23;;;;:::i;:::-;32550:41;;;;:::i;:::-;32528:18;;:63;;;;;;;:::i;:::-;;;;;;;;32660:13;;32640:16;;32633:4;:23;;;;:::i;:::-;32632:41;;;;:::i;:::-;32610:18;;:63;;;;;;;:::i;:::-;;;;;;;;32399:618;;;32735:25;:31;32761:4;32735:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;32785:1;32770:12;;:16;32735:51;32731:286;;;32838:3;32823:12;;32814:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;32807:34;;32909:12;;32890:15;;32883:4;:22;;;;:::i;:::-;32882:39;;;;:::i;:::-;32860:18;;:61;;;;;;;:::i;:::-;;;;;;;;32989:12;;32970:15;;32963:4;:22;;;;:::i;:::-;32962:39;;;;:::i;:::-;32940:18;;:61;;;;;;;:::i;:::-;;;;;;;;32731:286;32399:618;33044:1;33037:4;:8;33033:91;;;33066:42;33082:4;33096;33103;33066:15;:42::i;:::-;33033:91;33150:4;33140:14;;;;;:::i;:::-;;;32347:819;33178:33;33194:4;33200:2;33204:6;33178:15;:33::i;:::-;33238:11;;33222:13;:27;;;;30505:2752;;;;30392:2865;;;;:::o;21035:339::-;21127:6;21108:9;:15;21118:4;21108:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;21297:6;21281:12;;:22;;;;;;;;;;;21355:1;21332:34;;21341:4;21332:34;;;21359:6;21332:34;;;;;;:::i;:::-;;;;;;;;21035:339;;:::o;8621:191::-;8695:16;8714:6;;;;;;;;;;;8695:25;;8740:8;8731:6;;:17;;;;;;;;;;;;;;;;;;8795:8;8764:40;;8785:8;8764:40;;;;;;;;;;;;8684:128;8621:191;:::o;30120:130::-;30237:5;30203:25;:31;30229:4;30203:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;30120:130;;:::o;38724:181::-;38792:9;38787:91;38824:1;38811:3;:10;;;;:14;;;;:::i;:::-;38807:1;:18;38787:91;;;38856:3;38864:1;38860;:5;;;;:::i;:::-;38856:10;;;;;;;;:::i;:::-;;;;;;;;;;38847:3;38851:1;38847:6;;;;;;;;:::i;:::-;;;;;;;;;:19;;;;38827:3;;;;;:::i;:::-;;;;38787:91;;;;38888:3;:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38724:181;:::o;20066:617::-;20213:1;20197:18;;:4;:18;;;20189:27;;;;;;20249:1;20235:16;;:2;:16;;;20227:25;;;;;;20265:19;20287:9;:15;20297:4;20287:15;;;;;;;;;;;;;;;;20265:37;;20336:6;20321:11;:21;;20313:30;;;;;;20411:6;20397:11;:20;20379:9;:15;20389:4;20379:15;;;;;;;;;;;;;;;:38;;;;20614:6;20597:9;:13;20607:2;20597:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;20664:2;20649:26;;20658:4;20649:26;;;20668:6;20649:26;;;;;;:::i;:::-;;;;;;;;20178:505;20066:617;;;:::o;34152:1450::-;34191:23;34217:24;34235:4;34217:9;:24::i;:::-;34191:50;;34252:25;34314:18;;34280;;:52;;;;:::i;:::-;34252:80;;34343:12;34391:1;34372:15;:20;:46;;;;34417:1;34396:17;:22;34372:46;34368:85;;;34435:7;;;;;34368:85;34508:2;34487:18;;:23;;;;:::i;:::-;34469:15;:41;34465:115;;;34566:2;34545:18;;:23;;;;:::i;:::-;34527:41;;34465:115;34592:23;34705:1;34672:17;34637:18;;34619:15;:36;;;;:::i;:::-;34618:71;;;;:::i;:::-;:88;;;;:::i;:::-;34592:114;;34717:26;34764:15;34746;:33;;;;:::i;:::-;34717:62;;34792:25;34820:21;34792:49;;34854:36;34871:18;34854:16;:36::i;:::-;34903:18;34948:17;34924:21;:41;;;;:::i;:::-;34903:62;;34978:23;35038:17;35017:18;;35004:10;:31;;;;:::i;:::-;:51;;;;:::i;:::-;34978:77;;35068:23;35107:15;35094:10;:28;;;;:::i;:::-;35068:54;;35156:1;35135:18;:22;;;;35189:1;35168:18;:22;;;;35225:1;35207:15;:19;:42;;;;;35248:1;35230:15;:19;35207:42;35203:278;;;35266:46;35279:15;35296;35266:12;:46::i;:::-;35332:137;35365:18;35402:15;35436:18;;35332:137;;;;;;;;:::i;:::-;;;;;;;;35203:278;35515:15;;;;;;;;;;;35507:29;;35558:21;35507:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35493:101;;;;;34180:1422;;;;;;;;;34152:1450;:::o;33265:501::-;33331:21;33369:1;33355:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33331:40;;33400:4;33382;33387:1;33382:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;33426:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33416:4;33421:1;33416:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;33461:62;33478:4;33493:15;33511:11;33461:8;:62::i;:::-;33562:15;:66;;;33643:11;33669:1;33685:4;33712;33732:15;33562:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33320:446;33265:501;:::o;33774:370::-;33855:62;33872:4;33887:15;33905:11;33855:8;:62::i;:::-;33930:15;:31;;;33969:9;34002:4;34022:11;34048:1;34064;34080:15;;;;;;;;;;;34110;33930:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33774:370;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:152::-;4348:9;4381:37;4412:5;4381:37;:::i;:::-;4368:50;;4272:152;;;:::o;4430:183::-;4543:63;4600:5;4543:63;:::i;:::-;4538:3;4531:76;4430:183;;:::o;4619:274::-;4738:4;4776:2;4765:9;4761:18;4753:26;;4789:97;4883:1;4872:9;4868:17;4859:6;4789:97;:::i;:::-;4619:274;;;;:::o;4899:118::-;4986:24;5004:5;4986:24;:::i;:::-;4981:3;4974:37;4899:118;;:::o;5023:222::-;5116:4;5154:2;5143:9;5139:18;5131:26;;5167:71;5235:1;5224:9;5220:17;5211:6;5167:71;:::i;:::-;5023:222;;;;:::o;5251:619::-;5328:6;5336;5344;5393:2;5381:9;5372:7;5368:23;5364:32;5361:119;;;5399:79;;:::i;:::-;5361:119;5519:1;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5490:117;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5251:619;;;;;:::o;5876:118::-;5963:24;5981:5;5963:24;:::i;:::-;5958:3;5951:37;5876:118;;:::o;6000:222::-;6093:4;6131:2;6120:9;6116:18;6108:26;;6144:71;6212:1;6201:9;6197:17;6188:6;6144:71;:::i;:::-;6000:222;;;;:::o;6228:86::-;6263:7;6303:4;6296:5;6292:16;6281:27;;6228:86;;;:::o;6320:112::-;6403:22;6419:5;6403:22;:::i;:::-;6398:3;6391:35;6320:112;;:::o;6438:214::-;6527:4;6565:2;6554:9;6550:18;6542:26;;6578:67;6642:1;6631:9;6627:17;6618:6;6578:67;:::i;:::-;6438:214;;;;:::o;6658:140::-;6751:6;6785:5;6779:12;6769:22;;6658:140;;;:::o;6804:210::-;6929:11;6963:6;6958:3;6951:19;7003:4;6998:3;6994:14;6979:29;;6804:210;;;;:::o;7020:158::-;7113:4;7136:3;7128:11;;7166:4;7161:3;7157:14;7149:22;;7020:158;;;:::o;7184:108::-;7261:24;7279:5;7261:24;:::i;:::-;7256:3;7249:37;7184:108;;:::o;7298:159::-;7372:11;7406:6;7401:3;7394:19;7446:4;7441:3;7437:14;7422:29;;7298:159;;;;:::o;7463:357::-;7541:3;7569:39;7602:5;7569:39;:::i;:::-;7624:61;7678:6;7673:3;7624:61;:::i;:::-;7617:68;;7694:65;7752:6;7747:3;7740:4;7733:5;7729:16;7694:65;:::i;:::-;7784:29;7806:6;7784:29;:::i;:::-;7779:3;7775:39;7768:46;;7545:275;7463:357;;;;:::o;7826:180::-;7874:77;7871:1;7864:88;7971:4;7968:1;7961:15;7995:4;7992:1;7985:15;8012:118;8098:1;8091:5;8088:12;8078:46;;8104:18;;:::i;:::-;8078:46;8012:118;:::o;8136:137::-;8186:7;8215:5;8204:16;;8221:46;8261:5;8221:46;:::i;:::-;8136:137;;;:::o;8279:::-;8340:9;8373:37;8404:5;8373:37;:::i;:::-;8360:50;;8279:137;;;:::o;8422:143::-;8510:48;8552:5;8510:48;:::i;:::-;8505:3;8498:61;8422:143;;:::o;8571:108::-;8648:24;8666:5;8648:24;:::i;:::-;8643:3;8636:37;8571:108;;:::o;8753:2071::-;8864:3;8900:6;8895:3;8891:16;8987:4;8980:5;8976:16;8970:23;9006:63;9063:4;9058:3;9054:14;9040:12;9006:63;:::i;:::-;8917:162;9162:4;9155:5;9151:16;9145:23;9215:3;9209:4;9205:14;9198:4;9193:3;9189:14;9182:38;9241:73;9309:4;9295:12;9241:73;:::i;:::-;9233:81;;9089:236;9411:4;9404:5;9400:16;9394:23;9464:3;9458:4;9454:14;9447:4;9442:3;9438:14;9431:38;9490:73;9558:4;9544:12;9490:73;:::i;:::-;9482:81;;9335:239;9656:4;9649:5;9645:16;9639:23;9709:3;9703:4;9699:14;9692:4;9687:3;9683:14;9676:38;9735:73;9803:4;9789:12;9735:73;:::i;:::-;9727:81;;9584:235;9906:4;9899:5;9895:16;9889:23;9925:74;9993:4;9988:3;9984:14;9970:12;9925:74;:::i;:::-;9829:180;10095:4;10088:5;10084:16;10078:23;10148:3;10142:4;10138:14;10131:4;10126:3;10122:14;10115:38;10174:73;10242:4;10228:12;10174:73;:::i;:::-;10166:81;;10019:239;10351:4;10344:5;10340:16;10334:23;10370:63;10427:4;10422:3;10418:14;10404:12;10370:63;:::i;:::-;10268:175;10526:4;10519:5;10515:16;10509:23;10545:63;10602:4;10597:3;10593:14;10579:12;10545:63;:::i;:::-;10453:165;10701:6;10694:5;10690:18;10684:25;10722:65;10779:6;10774:3;10770:16;10756:12;10722:65;:::i;:::-;10628:169;10814:4;10807:11;;8869:1955;8753:2071;;;;:::o;10830:260::-;10951:10;10986:98;11080:3;11072:6;10986:98;:::i;:::-;10972:112;;10830:260;;;;:::o;11096:139::-;11192:4;11224;11219:3;11215:14;11207:22;;11096:139;;;:::o;11313:1119::-;11484:3;11513:80;11587:5;11513:80;:::i;:::-;11609:112;11714:6;11709:3;11609:112;:::i;:::-;11602:119;;11747:3;11792:4;11784:6;11780:17;11775:3;11771:27;11822:82;11898:5;11822:82;:::i;:::-;11927:7;11958:1;11943:444;11968:6;11965:1;11962:13;11943:444;;;12039:9;12033:4;12029:20;12024:3;12017:33;12090:6;12084:13;12118:116;12229:4;12214:13;12118:116;:::i;:::-;12110:124;;12257:86;12336:6;12257:86;:::i;:::-;12247:96;;12372:4;12367:3;12363:14;12356:21;;12003:384;11990:1;11987;11983:9;11978:14;;11943:444;;;11947:14;12403:4;12396:11;;12423:3;12416:10;;11489:943;;;;;11313:1119;;;;:::o;12438:477::-;12633:4;12671:2;12660:9;12656:18;12648:26;;12720:9;12714:4;12710:20;12706:1;12695:9;12691:17;12684:47;12748:160;12903:4;12894:6;12748:160;:::i;:::-;12740:168;;12438:477;;;;:::o;12921:329::-;12980:6;13029:2;13017:9;13008:7;13004:23;13000:32;12997:119;;;13035:79;;:::i;:::-;12997:119;13155:1;13180:53;13225:7;13216:6;13205:9;13201:22;13180:53;:::i;:::-;13170:63;;13126:117;12921:329;;;;:::o;13256:::-;13315:6;13364:2;13352:9;13343:7;13339:23;13335:32;13332:119;;;13370:79;;:::i;:::-;13332:119;13490:1;13515:53;13560:7;13551:6;13540:9;13536:22;13515:53;:::i;:::-;13505:63;;13461:117;13256:329;;;;:::o;13591:116::-;13661:21;13676:5;13661:21;:::i;:::-;13654:5;13651:32;13641:60;;13697:1;13694;13687:12;13641:60;13591:116;:::o;13713:133::-;13756:5;13794:6;13781:20;13772:29;;13810:30;13834:5;13810:30;:::i;:::-;13713:133;;;;:::o;13852:468::-;13917:6;13925;13974:2;13962:9;13953:7;13949:23;13945:32;13942:119;;;13980:79;;:::i;:::-;13942:119;14100:1;14125:53;14170:7;14161:6;14150:9;14146:22;14125:53;:::i;:::-;14115:63;;14071:117;14227:2;14253:50;14295:7;14286:6;14275:9;14271:22;14253:50;:::i;:::-;14243:60;;14198:115;13852:468;;;;;:::o;14326:153::-;14424:48;14466:5;14424:48;:::i;:::-;14419:3;14412:61;14326:153;;:::o;14485:1494::-;14893:4;14931:3;14920:9;14916:19;14908:27;;14945:71;15013:1;15002:9;14998:17;14989:6;14945:71;:::i;:::-;15063:9;15057:4;15053:20;15048:2;15037:9;15033:18;15026:48;15091:78;15164:4;15155:6;15091:78;:::i;:::-;15083:86;;15216:9;15210:4;15206:20;15201:2;15190:9;15186:18;15179:48;15244:78;15317:4;15308:6;15244:78;:::i;:::-;15236:86;;15369:9;15363:4;15359:20;15354:2;15343:9;15339:18;15332:48;15397:78;15470:4;15461:6;15397:78;:::i;:::-;15389:86;;15485:84;15564:3;15553:9;15549:19;15540:6;15485:84;:::i;:::-;15617:9;15611:4;15607:20;15601:3;15590:9;15586:19;15579:49;15645:78;15718:4;15709:6;15645:78;:::i;:::-;15637:86;;15733:73;15801:3;15790:9;15786:19;15777:6;15733:73;:::i;:::-;15816;15884:3;15873:9;15869:19;15860:6;15816:73;:::i;:::-;15899;15967:3;15956:9;15952:19;15943:6;15899:73;:::i;:::-;14485:1494;;;;;;;;;;;;:::o;15985:117::-;16094:1;16091;16084:12;16108:117;16217:1;16214;16207:12;16231:117;16340:1;16337;16330:12;16368:553;16426:8;16436:6;16486:3;16479:4;16471:6;16467:17;16463:27;16453:122;;16494:79;;:::i;:::-;16453:122;16607:6;16594:20;16584:30;;16637:18;16629:6;16626:30;16623:117;;;16659:79;;:::i;:::-;16623:117;16773:4;16765:6;16761:17;16749:29;;16827:3;16819:4;16811:6;16807:17;16797:8;16793:32;16790:41;16787:128;;;16834:79;;:::i;:::-;16787:128;16368:553;;;;;:::o;16927:112::-;17013:1;17006:5;17003:12;16993:40;;17029:1;17026;17019:12;16993:40;16927:112;:::o;17045:165::-;17104:5;17142:6;17129:20;17120:29;;17158:46;17198:5;17158:46;:::i;:::-;17045:165;;;;:::o;17216:1737::-;17372:6;17380;17388;17396;17404;17412;17420;17428;17436;17485:3;17473:9;17464:7;17460:23;17456:33;17453:120;;;17492:79;;:::i;:::-;17453:120;17640:1;17629:9;17625:17;17612:31;17670:18;17662:6;17659:30;17656:117;;;17692:79;;:::i;:::-;17656:117;17805:65;17862:7;17853:6;17842:9;17838:22;17805:65;:::i;:::-;17787:83;;;;17583:297;17947:2;17936:9;17932:18;17919:32;17978:18;17970:6;17967:30;17964:117;;;18000:79;;:::i;:::-;17964:117;18113:65;18170:7;18161:6;18150:9;18146:22;18113:65;:::i;:::-;18095:83;;;;17890:298;18255:2;18244:9;18240:18;18227:32;18286:18;18278:6;18275:30;18272:117;;;18308:79;;:::i;:::-;18272:117;18421:65;18478:7;18469:6;18458:9;18454:22;18421:65;:::i;:::-;18403:83;;;;18198:298;18535:2;18561:66;18619:7;18610:6;18599:9;18595:22;18561:66;:::i;:::-;18551:76;;18506:131;18704:3;18693:9;18689:19;18676:33;18736:18;18728:6;18725:30;18722:117;;;18758:79;;:::i;:::-;18722:117;18871:65;18928:7;18919:6;18908:9;18904:22;18871:65;:::i;:::-;18853:83;;;;18647:299;17216:1737;;;;;;;;;;;:::o;18959:474::-;19027:6;19035;19084:2;19072:9;19063:7;19059:23;19055:32;19052:119;;;19090:79;;:::i;:::-;19052:119;19210:1;19235:53;19280:7;19271:6;19260:9;19256:22;19235:53;:::i;:::-;19225:63;;19181:117;19337:2;19363:53;19408:7;19399:6;19388:9;19384:22;19363:53;:::i;:::-;19353:63;;19308:118;18959:474;;;;;:::o;19507:2081::-;19628:3;19664:6;19659:3;19655:16;19751:4;19744:5;19740:16;19734:23;19770:63;19827:4;19822:3;19818:14;19804:12;19770:63;:::i;:::-;19681:162;19926:4;19919:5;19915:16;19909:23;19979:3;19973:4;19969:14;19962:4;19957:3;19953:14;19946:38;20005:73;20073:4;20059:12;20005:73;:::i;:::-;19997:81;;19853:236;20175:4;20168:5;20164:16;20158:23;20228:3;20222:4;20218:14;20211:4;20206:3;20202:14;20195:38;20254:73;20322:4;20308:12;20254:73;:::i;:::-;20246:81;;20099:239;20420:4;20413:5;20409:16;20403:23;20473:3;20467:4;20463:14;20456:4;20451:3;20447:14;20440:38;20499:73;20567:4;20553:12;20499:73;:::i;:::-;20491:81;;20348:235;20670:4;20663:5;20659:16;20653:23;20689:74;20757:4;20752:3;20748:14;20734:12;20689:74;:::i;:::-;20593:180;20859:4;20852:5;20848:16;20842:23;20912:3;20906:4;20902:14;20895:4;20890:3;20886:14;20879:38;20938:73;21006:4;20992:12;20938:73;:::i;:::-;20930:81;;20783:239;21115:4;21108:5;21104:16;21098:23;21134:63;21191:4;21186:3;21182:14;21168:12;21134:63;:::i;:::-;21032:175;21290:4;21283:5;21279:16;21273:23;21309:63;21366:4;21361:3;21357:14;21343:12;21309:63;:::i;:::-;21217:165;21465:6;21458:5;21454:18;21448:25;21486:65;21543:6;21538:3;21534:16;21520:12;21486:65;:::i;:::-;21392:169;21578:4;21571:11;;19633:1955;19507:2081;;;;:::o;21594:377::-;21739:4;21777:2;21766:9;21762:18;21754:26;;21826:9;21820:4;21816:20;21812:1;21801:9;21797:17;21790:47;21854:110;21959:4;21950:6;21854:110;:::i;:::-;21846:118;;21594:377;;;;:::o;21977:180::-;22025:77;22022:1;22015:88;22122:4;22119:1;22112:15;22146:4;22143:1;22136:15;22163:191;22203:3;22222:20;22240:1;22222:20;:::i;:::-;22217:25;;22256:20;22274:1;22256:20;:::i;:::-;22251:25;;22299:1;22296;22292:9;22285:16;;22320:3;22317:1;22314:10;22311:36;;;22327:18;;:::i;:::-;22311:36;22163:191;;;;:::o;22360:180::-;22408:77;22405:1;22398:88;22505:4;22502:1;22495:15;22529:4;22526:1;22519:15;22546:320;22590:6;22627:1;22621:4;22617:12;22607:22;;22674:1;22668:4;22664:12;22695:18;22685:81;;22751:4;22743:6;22739:17;22729:27;;22685:81;22813:2;22805:6;22802:14;22782:18;22779:38;22776:84;;22832:18;;:::i;:::-;22776:84;22597:269;22546:320;;;:::o;22872:180::-;22920:77;22917:1;22910:88;23017:4;23014:1;23007:15;23041:4;23038:1;23031:15;23058:180;23106:77;23103:1;23096:88;23203:4;23200:1;23193:15;23227:4;23224:1;23217:15;23244:233;23283:3;23306:24;23324:5;23306:24;:::i;:::-;23297:33;;23352:66;23345:5;23342:77;23339:103;;23422:18;;:::i;:::-;23339:103;23469:1;23462:5;23458:13;23451:20;;23244:233;;;:::o;23483:410::-;23523:7;23546:20;23564:1;23546:20;:::i;:::-;23541:25;;23580:20;23598:1;23580:20;:::i;:::-;23575:25;;23635:1;23632;23628:9;23657:30;23675:11;23657:30;:::i;:::-;23646:41;;23836:1;23827:7;23823:15;23820:1;23817:22;23797:1;23790:9;23770:83;23747:139;;23866:18;;:::i;:::-;23747:139;23531:362;23483:410;;;;:::o;23899:180::-;23947:77;23944:1;23937:88;24044:4;24041:1;24034:15;24068:4;24065:1;24058:15;24085:185;24125:1;24142:20;24160:1;24142:20;:::i;:::-;24137:25;;24176:20;24194:1;24176:20;:::i;:::-;24171:25;;24215:1;24205:35;;24220:18;;:::i;:::-;24205:35;24262:1;24259;24255:9;24250:14;;24085:185;;;;:::o;24276:143::-;24333:5;24364:6;24358:13;24349:22;;24380:33;24407:5;24380:33;:::i;:::-;24276:143;;;;:::o;24425:351::-;24495:6;24544:2;24532:9;24523:7;24519:23;24515:32;24512:119;;;24550:79;;:::i;:::-;24512:119;24670:1;24695:64;24751:7;24742:6;24731:9;24727:22;24695:64;:::i;:::-;24685:74;;24641:128;24425:351;;;;:::o;24782:332::-;24903:4;24941:2;24930:9;24926:18;24918:26;;24954:71;25022:1;25011:9;25007:17;24998:6;24954:71;:::i;:::-;25035:72;25103:2;25092:9;25088:18;25079:6;25035:72;:::i;:::-;24782:332;;;;;:::o;25120:224::-;25260:34;25256:1;25248:6;25244:14;25237:58;25329:7;25324:2;25316:6;25312:15;25305:32;25120:224;:::o;25350:366::-;25492:3;25513:67;25577:2;25572:3;25513:67;:::i;:::-;25506:74;;25589:93;25678:3;25589:93;:::i;:::-;25707:2;25702:3;25698:12;25691:19;;25350:366;;;:::o;25722:419::-;25888:4;25926:2;25915:9;25911:18;25903:26;;25975:9;25969:4;25965:20;25961:1;25950:9;25946:17;25939:47;26003:131;26129:4;26003:131;:::i;:::-;25995:139;;25722:419;;;:::o;26147:141::-;26196:4;26219:3;26211:11;;26242:3;26239:1;26232:14;26276:4;26273:1;26263:18;26255:26;;26147:141;;;:::o;26294:93::-;26331:6;26378:2;26373;26366:5;26362:14;26358:23;26348:33;;26294:93;;;:::o;26393:107::-;26437:8;26487:5;26481:4;26477:16;26456:37;;26393:107;;;;:::o;26506:393::-;26575:6;26625:1;26613:10;26609:18;26648:97;26678:66;26667:9;26648:97;:::i;:::-;26766:39;26796:8;26785:9;26766:39;:::i;:::-;26754:51;;26838:4;26834:9;26827:5;26823:21;26814:30;;26887:4;26877:8;26873:19;26866:5;26863:30;26853:40;;26582:317;;26506:393;;;;;:::o;26905:142::-;26955:9;26988:53;27006:34;27015:24;27033:5;27015:24;:::i;:::-;27006:34;:::i;:::-;26988:53;:::i;:::-;26975:66;;26905:142;;;:::o;27053:75::-;27096:3;27117:5;27110:12;;27053:75;;;:::o;27134:269::-;27244:39;27275:7;27244:39;:::i;:::-;27305:91;27354:41;27378:16;27354:41;:::i;:::-;27346:6;27339:4;27333:11;27305:91;:::i;:::-;27299:4;27292:105;27210:193;27134:269;;;:::o;27409:73::-;27454:3;27409:73;:::o;27488:189::-;27565:32;;:::i;:::-;27606:65;27664:6;27656;27650:4;27606:65;:::i;:::-;27541:136;27488:189;;:::o;27683:186::-;27743:120;27760:3;27753:5;27750:14;27743:120;;;27814:39;27851:1;27844:5;27814:39;:::i;:::-;27787:1;27780:5;27776:13;27767:22;;27743:120;;;27683:186;;:::o;27875:543::-;27976:2;27971:3;27968:11;27965:446;;;28010:38;28042:5;28010:38;:::i;:::-;28094:29;28112:10;28094:29;:::i;:::-;28084:8;28080:44;28277:2;28265:10;28262:18;28259:49;;;28298:8;28283:23;;28259:49;28321:80;28377:22;28395:3;28377:22;:::i;:::-;28367:8;28363:37;28350:11;28321:80;:::i;:::-;27980:431;;27965:446;27875:543;;;:::o;28424:117::-;28478:8;28528:5;28522:4;28518:16;28497:37;;28424:117;;;;:::o;28547:169::-;28591:6;28624:51;28672:1;28668:6;28660:5;28657:1;28653:13;28624:51;:::i;:::-;28620:56;28705:4;28699;28695:15;28685:25;;28598:118;28547:169;;;;:::o;28721:295::-;28797:4;28943:29;28968:3;28962:4;28943:29;:::i;:::-;28935:37;;29005:3;29002:1;28998:11;28992:4;28989:21;28981:29;;28721:295;;;;:::o;29021:1395::-;29138:37;29171:3;29138:37;:::i;:::-;29240:18;29232:6;29229:30;29226:56;;;29262:18;;:::i;:::-;29226:56;29306:38;29338:4;29332:11;29306:38;:::i;:::-;29391:67;29451:6;29443;29437:4;29391:67;:::i;:::-;29485:1;29509:4;29496:17;;29541:2;29533:6;29530:14;29558:1;29553:618;;;;30215:1;30232:6;30229:77;;;30281:9;30276:3;30272:19;30266:26;30257:35;;30229:77;30332:67;30392:6;30385:5;30332:67;:::i;:::-;30326:4;30319:81;30188:222;29523:887;;29553:618;29605:4;29601:9;29593:6;29589:22;29639:37;29671:4;29639:37;:::i;:::-;29698:1;29712:208;29726:7;29723:1;29720:14;29712:208;;;29805:9;29800:3;29796:19;29790:26;29782:6;29775:42;29856:1;29848:6;29844:14;29834:24;;29903:2;29892:9;29888:18;29875:31;;29749:4;29746:1;29742:12;29737:17;;29712:208;;;29948:6;29939:7;29936:19;29933:179;;;30006:9;30001:3;29997:19;29991:26;30049:48;30091:4;30083:6;30079:17;30068:9;30049:48;:::i;:::-;30041:6;30034:64;29956:156;29933:179;30158:1;30154;30146:6;30142:14;30138:22;30132:4;30125:36;29560:611;;;29523:887;;29113:1303;;;29021:1395;;:::o;30422:143::-;30479:5;30510:6;30504:13;30495:22;;30526:33;30553:5;30526:33;:::i;:::-;30422:143;;;;:::o;30571:351::-;30641:6;30690:2;30678:9;30669:7;30665:23;30661:32;30658:119;;;30696:79;;:::i;:::-;30658:119;30816:1;30841:64;30897:7;30888:6;30877:9;30873:22;30841:64;:::i;:::-;30831:74;;30787:128;30571:351;;;;:::o;30928:332::-;31049:4;31087:2;31076:9;31072:18;31064:26;;31100:71;31168:1;31157:9;31153:17;31144:6;31100:71;:::i;:::-;31181:72;31249:2;31238:9;31234:18;31225:6;31181:72;:::i;:::-;30928:332;;;;;:::o;31266:137::-;31320:5;31351:6;31345:13;31336:22;;31367:30;31391:5;31367:30;:::i;:::-;31266:137;;;;:::o;31409:345::-;31476:6;31525:2;31513:9;31504:7;31500:23;31496:32;31493:119;;;31531:79;;:::i;:::-;31493:119;31651:1;31676:61;31729:7;31720:6;31709:9;31705:22;31676:61;:::i;:::-;31666:71;;31622:125;31409:345;;;;:::o;31760:225::-;31900:34;31896:1;31888:6;31884:14;31877:58;31969:8;31964:2;31956:6;31952:15;31945:33;31760:225;:::o;31991:366::-;32133:3;32154:67;32218:2;32213:3;32154:67;:::i;:::-;32147:74;;32230:93;32319:3;32230:93;:::i;:::-;32348:2;32343:3;32339:12;32332:19;;31991:366;;;:::o;32363:419::-;32529:4;32567:2;32556:9;32552:18;32544:26;;32616:9;32610:4;32606:20;32602:1;32591:9;32587:17;32580:47;32644:131;32770:4;32644:131;:::i;:::-;32636:139;;32363:419;;;:::o;32788:147::-;32889:11;32926:3;32911:18;;32788:147;;;;:::o;32941:114::-;;:::o;33061:398::-;33220:3;33241:83;33322:1;33317:3;33241:83;:::i;:::-;33234:90;;33333:93;33422:3;33333:93;:::i;:::-;33451:1;33446:3;33442:11;33435:18;;33061:398;;;:::o;33465:379::-;33649:3;33671:147;33814:3;33671:147;:::i;:::-;33664:154;;33835:3;33828:10;;33465:379;;;:::o;33850:182::-;33990:34;33986:1;33978:6;33974:14;33967:58;33850:182;:::o;34038:366::-;34180:3;34201:67;34265:2;34260:3;34201:67;:::i;:::-;34194:74;;34277:93;34366:3;34277:93;:::i;:::-;34395:2;34390:3;34386:12;34379:19;;34038:366;;;:::o;34410:419::-;34576:4;34614:2;34603:9;34599:18;34591:26;;34663:9;34657:4;34653:20;34649:1;34638:9;34634:17;34627:47;34691:131;34817:4;34691:131;:::i;:::-;34683:139;;34410:419;;;:::o;34835:194::-;34875:4;34895:20;34913:1;34895:20;:::i;:::-;34890:25;;34929:20;34947:1;34929:20;:::i;:::-;34924:25;;34973:1;34970;34966:9;34958:17;;34997:1;34991:4;34988:11;34985:37;;;35002:18;;:::i;:::-;34985:37;34835:194;;;;:::o;35035:180::-;35083:77;35080:1;35073:88;35180:4;35177:1;35170:15;35204:4;35201:1;35194:15;35221:442;35370:4;35408:2;35397:9;35393:18;35385:26;;35421:71;35489:1;35478:9;35474:17;35465:6;35421:71;:::i;:::-;35502:72;35570:2;35559:9;35555:18;35546:6;35502:72;:::i;:::-;35584;35652:2;35641:9;35637:18;35628:6;35584:72;:::i;:::-;35221:442;;;;;;:::o;35669:85::-;35714:7;35743:5;35732:16;;35669:85;;;:::o;35760:158::-;35818:9;35851:61;35869:42;35878:32;35904:5;35878:32;:::i;:::-;35869:42;:::i;:::-;35851:61;:::i;:::-;35838:74;;35760:158;;;:::o;35924:147::-;36019:45;36058:5;36019:45;:::i;:::-;36014:3;36007:58;35924:147;;:::o;36077:114::-;36144:6;36178:5;36172:12;36162:22;;36077:114;;;:::o;36197:184::-;36296:11;36330:6;36325:3;36318:19;36370:4;36365:3;36361:14;36346:29;;36197:184;;;;:::o;36387:132::-;36454:4;36477:3;36469:11;;36507:4;36502:3;36498:14;36490:22;;36387:132;;;:::o;36525:179::-;36594:10;36615:46;36657:3;36649:6;36615:46;:::i;:::-;36693:4;36688:3;36684:14;36670:28;;36525:179;;;;:::o;36710:113::-;36780:4;36812;36807:3;36803:14;36795:22;;36710:113;;;:::o;36859:732::-;36978:3;37007:54;37055:5;37007:54;:::i;:::-;37077:86;37156:6;37151:3;37077:86;:::i;:::-;37070:93;;37187:56;37237:5;37187:56;:::i;:::-;37266:7;37297:1;37282:284;37307:6;37304:1;37301:13;37282:284;;;37383:6;37377:13;37410:63;37469:3;37454:13;37410:63;:::i;:::-;37403:70;;37496:60;37549:6;37496:60;:::i;:::-;37486:70;;37342:224;37329:1;37326;37322:9;37317:14;;37282:284;;;37286:14;37582:3;37575:10;;36983:608;;;36859:732;;;;:::o;37597:831::-;37860:4;37898:3;37887:9;37883:19;37875:27;;37912:71;37980:1;37969:9;37965:17;37956:6;37912:71;:::i;:::-;37993:80;38069:2;38058:9;38054:18;38045:6;37993:80;:::i;:::-;38120:9;38114:4;38110:20;38105:2;38094:9;38090:18;38083:48;38148:108;38251:4;38242:6;38148:108;:::i;:::-;38140:116;;38266:72;38334:2;38323:9;38319:18;38310:6;38266:72;:::i;:::-;38348:73;38416:3;38405:9;38401:19;38392:6;38348:73;:::i;:::-;37597:831;;;;;;;;:::o;38434:807::-;38683:4;38721:3;38710:9;38706:19;38698:27;;38735:71;38803:1;38792:9;38788:17;38779:6;38735:71;:::i;:::-;38816:72;38884:2;38873:9;38869:18;38860:6;38816:72;:::i;:::-;38898:80;38974:2;38963:9;38959:18;38950:6;38898:80;:::i;:::-;38988;39064:2;39053:9;39049:18;39040:6;38988:80;:::i;:::-;39078:73;39146:3;39135:9;39131:19;39122:6;39078:73;:::i;:::-;39161;39229:3;39218:9;39214:19;39205:6;39161:73;:::i;:::-;38434:807;;;;;;;;;:::o;39247:663::-;39335:6;39343;39351;39400:2;39388:9;39379:7;39375:23;39371:32;39368:119;;;39406:79;;:::i;:::-;39368:119;39526:1;39551:64;39607:7;39598:6;39587:9;39583:22;39551:64;:::i;:::-;39541:74;;39497:128;39664:2;39690:64;39746:7;39737:6;39726:9;39722:22;39690:64;:::i;:::-;39680:74;;39635:129;39803:2;39829:64;39885:7;39876:6;39865:9;39861:22;39829:64;:::i;:::-;39819:74;;39774:129;39247:663;;;;;:::o

Swarm Source

ipfs://ea1e19e433d8f43b301a3a3b156f6410728905b1b383356a2664815dda506fbe

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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