ETH Price: $2,085.45 (-4.75%)

Contract

0xe4100031f3D1506838F5540cC4e6A886219AB6CF
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Remove Price102613932020-06-14 3:20:511729 days ago1592104851IN
0xe4100031...6219AB6CF
0 ETH0.0034134435
Set Limit Fee97395882020-03-25 9:07:061810 days ago1585127226IN
0xe4100031...6219AB6CF
0 ETH0.000952689
Set Limit Fee96947332020-03-18 9:14:351817 days ago1584522875IN
0xe4100031...6219AB6CF
0 ETH0.000635126
Set Limit Fee95433992020-02-24 2:20:451840 days ago1582510845IN
0xe4100031...6219AB6CF
0 ETH0.000266722.52
Set Price Fee94514612020-02-09 23:06:471854 days ago1581289607IN
0xe4100031...6219AB6CF
0 ETH0.0024674418
Set Price Fee94514542020-02-09 23:05:451854 days ago1581289545IN
0xe4100031...6219AB6CF
0 ETH0.0024674418
Set Price Fee94514502020-02-09 23:04:521854 days ago1581289492IN
0xe4100031...6219AB6CF
0 ETH0.0024674418
Set Price Fee94400102020-02-08 4:45:301856 days ago1581137130IN
0xe4100031...6219AB6CF
0 ETH0.001096648
Set Price Fee94400032020-02-08 4:43:381856 days ago1581137018IN
0xe4100031...6219AB6CF
0 ETH0.001370810
Set Price Fee94255852020-02-05 23:30:061858 days ago1580945406IN
0xe4100031...6219AB6CF
0 ETH0.003981918
Set Price Fee94255832020-02-05 23:29:251858 days ago1580945365IN
0xe4100031...6219AB6CF
0 ETH0.003981918
Set Price Fee94255802020-02-05 23:28:301858 days ago1580945310IN
0xe4100031...6219AB6CF
0 ETH0.004686818
Set Limit Fee90592652019-12-06 7:07:351920 days ago1575616055IN
0xe4100031...6219AB6CF
0 ETH0.000557415
Set Limit Fee90587592019-12-06 5:05:351920 days ago1575608735IN
0xe4100031...6219AB6CF
0 ETH0.000557415
Remove Price88890412019-11-07 8:34:471949 days ago1573115687IN
0xe4100031...6219AB6CF
0 ETH0.0012584518
Set Price Fee87881382019-10-22 4:25:281965 days ago1571718328IN
0xe4100031...6219AB6CF
0 ETH0.0030113818
Change Ceo87875972019-10-22 2:24:411965 days ago1571711081IN
0xe4100031...6219AB6CF
0 ETH0.000143775
Remove Price87117422019-10-10 3:46:581977 days ago1570679218IN
0xe4100031...6219AB6CF
0 ETH0.0007220813
Set Price Fee87117222019-10-10 3:41:371977 days ago1570678897IN
0xe4100031...6219AB6CF
0 ETH0.0020406812
Set Price Fee87074262019-10-09 11:30:451978 days ago1570620645IN
0xe4100031...6219AB6CF
0 ETH0.0033561820
Set Limit Fee87061012019-10-09 6:36:181978 days ago1570602978IN
0xe4100031...6219AB6CF
0 ETH0.000111481
Buy87059722019-10-09 6:04:571978 days ago1570601097IN
0xe4100031...6219AB6CF
0 ETH0.0022444518
Set Price Fee87059632019-10-09 6:02:511978 days ago1570600971IN
0xe4100031...6219AB6CF
0 ETH0.0030558618
Remove Price87057112019-10-09 5:07:151978 days ago1570597635IN
0xe4100031...6219AB6CF
0 ETH0.0009884718
Set Price Fee87056012019-10-09 4:44:051978 days ago1570596245IN
0xe4100031...6219AB6CF
0 ETH0.0025158618
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BuyNFT

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-09-14
*/

pragma solidity 0.5.11;
pragma experimental ABIEncoderV2;
library SafeMath {

    /**
    * @dev Multiplies two numbers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0); // Solidity only automatically asserts when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two numbers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}
/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;


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


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }

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

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

contract IERC721 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) public view returns (uint256 balance);

    function ownerOf(uint256 tokenId) public view returns (address owner);

    function approve(address to, uint256 tokenId) public;

    function getApproved(uint256 tokenId) public view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) public;

    function isApprovedForAll(address owner, address operator) public view returns (bool);

    function transfer(address to, uint256 tokenId) public;

    function transferFrom(address from, address to, uint256 tokenId) public;

    function safeTransferFrom(address from, address to, uint256 tokenId) public;

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public;
}
/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ereum/EIPs/issues/179
 */
contract ERC20BasicInterface {
    function totalSupply() public view returns (uint256);

    function balanceOf(address who) public view returns (uint256);

    function transfer(address to, uint256 value) public returns (bool);

    function transferFrom(address from, address to, uint256 value) public returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    uint8 public decimals;
}

contract BuyNFT is Ownable {

    using SafeMath for uint256;
    address public ceoAddress = address(0xFce92D4163AA532AA096DE8a3C4fEf9f875Bc55F);
    ERC20BasicInterface public hbwalletToken = ERC20BasicInterface(0xEc7ba74789694d0d03D458965370Dc7cF2FE75Ba);
    ERC20BasicInterface public erc20 = ERC20BasicInterface(0x0000000000085d4780B73119b644AE5ecd22b376);

    // ERC20BasicInterface public erc20 = ERC20BasicInterface(0xCfB13a54919250f6d3458E304a9ABFDc77cc87f2);
    // ERC20BasicInterface public hbwalletToken = ERC20BasicInterface(0x91013928b1C4dbd0D5cB21BA5b052BfD840A7a7F);

    uint256 public Percen = 1000;
    uint256 public hightLightFee = 5 ether;
    struct Price {
        address payable tokenOwner;
        uint256 Price;
        uint256 fee;
        uint isHightlight;
    }
    struct Game {
        mapping(uint256 => Price) tokenPrice;
        uint[] tokenIdSale;
        uint256 Fee;
        uint256 PercenDiscountOnHBWallet;
        uint256 limitHBWALLETForDiscount;
        uint256 limitFee;
    }

    mapping(address => Game) public Games;
    address[] public arrGames;
    constructor() public {
        arrGames = [
        0x06012c8cf97BEaD5deAe237070F9587f8E7A266d,
        0x1276dce965ADA590E42d62B3953dDc1DDCeB0392,
        0xE60D2325f996e197EEdDed8964227a0c6CA82D0f,
        0xECd6b4A2f82b0c9FB283A4a8a1ef5ADf555f794b,
        0xf26A23019b4699068bb54457f32dAFCF22A9D371,
        0x8c9b261Faef3b3C2e64ab5E58e04615F8c788099,
        0x6EbeAf8e8E946F0716E6533A6f2cefc83f60e8Ab,
        0x5D00d312e171Be5342067c09BaE883f9Bcb2003B,
        0xBfdE6246Df72d3ca86419628CaC46a9d2B60393C,
        0x543EcFB0d28fA40D639494957e7cBA52460F490E,
        0xF5b0A3eFB8e8E4c201e2A935F110eAaF3FFEcb8d,
        0xbc5370374FE08d699cf7fcd2e625A93BF393cCC4,
        0x31AF195dB332bc9203d758C74dF5A5C5e597cDb7,
        0x1a94fce7ef36Bc90959E206bA569a12AFBC91ca1,
        0x30a2fA3c93Fb9F93D1EFeFfd350c6A6BB62ba000,
        0x69A1d45318dE72d6Add20D4952398901E0E4a8e5,
        0x4F41d10F7E67fD16bDe916b4A6DC3Dd101C57394
        ];
        for(uint i = 0; i< arrGames.length; i++) {
            Games[arrGames[i]].Fee = 50;
            Games[arrGames[i]].PercenDiscountOnHBWallet = 25;
            Games[arrGames[i]].limitHBWALLETForDiscount = 200;
            Games[arrGames[i]].limitFee = 25 finney;
        }

        // Games[address(0xac9D8D6dB95828259069226456DDe98d8E296c5f)].Fee = 50;
        // Games[address(0xac9D8D6dB95828259069226456DDe98d8E296c5f)].PercenDiscountOnHBWallet = 25;
        // Games[address(0xac9D8D6dB95828259069226456DDe98d8E296c5f)].limitHBWALLETForDiscount = 200;
        // Games[address(0xac9D8D6dB95828259069226456DDe98d8E296c5f)].limitFee = 250 finney;
        // arrGames.push(address(0xac9D8D6dB95828259069226456DDe98d8E296c5f));
    }

    function getTokenPrice(address _game, uint256 _tokenId) public
    returns (address _tokenOwner, uint256 _Price, uint256 _fee, uint _isHightlight) {
        IERC721 erc721Address = IERC721(_game);
        if(erc721Address.ownerOf(_tokenId) != Games[_game].tokenPrice[_tokenId].tokenOwner
        && erc721Address.ownerOf(_tokenId) != address(this)) resetPrice(_game, _tokenId);
        return (Games[_game].tokenPrice[_tokenId].tokenOwner,
        Games[_game].tokenPrice[_tokenId].Price,
        Games[_game].tokenPrice[_tokenId].fee,
        Games[_game].tokenPrice[_tokenId].isHightlight);
    }
    function getArrGames() public view returns(address[] memory){
        return arrGames;
    }
    /**
     * @dev Throws if called by any account other than the ceo address.
     */
    modifier onlyCeoAddress() {
        require(msg.sender == ceoAddress);
        _;
    }
    modifier isOwnerOf(address _game, uint256 _tokenId) {
        IERC721 erc721Address = IERC721(_game);
        require(erc721Address.ownerOf(_tokenId) == msg.sender);
        _;
    }
    event _setPrice(address _game, uint256 _tokenId, uint256 _Price, uint _isHightLight, uint8 _type);
    event _resetPrice(address _game, uint256 _tokenId);
    function ownerOf(address _game, uint256 _tokenId) public view returns (address){
        IERC721 erc721Address = IERC721(_game);
        return erc721Address.ownerOf(_tokenId);
    }

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

    function getApproved(address _game, uint256 _tokenId) public view returns (address){
        IERC721 erc721Address = IERC721(_game);
        return erc721Address.getApproved(_tokenId);
    }

    function setPrice(address _game, uint256 _tokenId, uint256 _price, uint256 _fee, uint _isHightLight) internal {
        Games[_game].tokenPrice[_tokenId] = Price(msg.sender, _price, _fee, _isHightLight);
        Games[_game].tokenIdSale.push(_tokenId);
        bool flag = false;
        for(uint i = 0; i< arrGames.length; i++) {
            if(arrGames[i] == _game) flag = true;
        }
        if(!flag) arrGames.push(_game);
    }

    function calFee(address _game, uint256 _price) public view returns (uint256){
        uint256 senderHBBalance = hbwalletToken.balanceOf(msg.sender);
        uint256 fee =_price.mul(Games[_game].Fee).div(Percen);
        if(senderHBBalance >= Games[_game].limitHBWALLETForDiscount) fee = _price.mul(Games[_game].PercenDiscountOnHBWallet).div(Percen);
        return fee;
    }
    function calFeeHightLight(address _game, uint256 _tokenId, uint _isHightLight) public view returns (uint256){
        uint256 _hightLightFee = 0;
        if (_isHightLight == 1 && (Games[_game].tokenPrice[_tokenId].Price == 0 || Games[_game].tokenPrice[_tokenId].isHightlight != 1)) {
            _hightLightFee = hightLightFee;
        }
        return _hightLightFee;
    }
    function calPrice(address _game, uint256 _tokenId, uint256 _Price, uint _isHightLight) public view
    returns(uint256 _Need) {
        uint256 fee;
        uint256 _hightLightFee = calFeeHightLight(_game, _tokenId, _isHightLight);
        uint256 Need;
        uint256 totalFee;
        if (Games[_game].tokenPrice[_tokenId].Price < _Price) {
            fee = calFee(_game, _Price.sub(Games[_game].tokenPrice[_tokenId].Price));
            totalFee = calFee(_game, _Price);
            if(Games[_game].tokenPrice[_tokenId].Price == 0 && fee < Games[_game].limitFee) {
                Need = Games[_game].limitFee.add(_hightLightFee);
            } else if(Games[_game].tokenPrice[_tokenId].Price > 0 && totalFee < Games[_game].limitFee) {
                Need = _hightLightFee;
            } else {
                if(totalFee.add(_hightLightFee) < Games[_game].tokenPrice[_tokenId].fee) Need = 0;
                else Need = totalFee.add(_hightLightFee).sub(Games[_game].tokenPrice[_tokenId].fee);
            }

        } else {
            Need = _hightLightFee;
        }
        return Need;
    }

    function setPriceFee(address _game, uint256 _tokenId, uint256 _price, uint _isHightLight) public isOwnerOf(_game, _tokenId) {
        require(Games[_game].tokenPrice[_tokenId].Price != _price);
        uint256 Need = calPrice(_game, _tokenId, _price, _isHightLight);
        require(erc20.transferFrom(msg.sender, address(this), Need));

        uint256 _hightLightFee = calFeeHightLight(_game, _tokenId, _isHightLight);
        uint fee;
        if (Games[_game].tokenPrice[_tokenId].Price < _price) {
            fee = calFee(_game, _price.sub(Games[_game].tokenPrice[_tokenId].Price));
            uint256 totalFee = calFee(_game, _price);
            if(Games[_game].tokenPrice[_tokenId].Price == 0 && fee < Games[_game].limitFee) {

                fee = Games[_game].limitFee;
            } else if(Games[_game].tokenPrice[_tokenId].Price > 0 && totalFee < Games[_game].limitFee) {

                fee = 0;
            } else {
                if(totalFee.add(_hightLightFee) < Games[_game].tokenPrice[_tokenId].fee) fee = 0;
                else fee = totalFee.sub(Games[_game].tokenPrice[_tokenId].fee);
            }
            fee = fee.add(Games[_game].tokenPrice[_tokenId].fee);
        } else {
            fee = Games[_game].tokenPrice[_tokenId].fee;
        }

        setPrice(_game, _tokenId, _price, fee, _isHightLight);
        emit _setPrice(_game, _tokenId, _price, _isHightLight, 1);
    }
    function removePrice(address _game, uint256 _tokenId) public isOwnerOf(_game, _tokenId){
        erc20.transfer(Games[_game].tokenPrice[_tokenId].tokenOwner, Games[_game].tokenPrice[_tokenId].fee);
        if(Games[_game].tokenPrice[_tokenId].tokenOwner == address(this)) {
            IERC721 erc721Address = IERC721(_game);
            erc721Address.transfer(Games[_game].tokenPrice[_tokenId].tokenOwner, _tokenId);
        }
        resetPrice(_game, _tokenId);
    }

    function setLimitFee(address _game, uint256 _Fee, uint256 _limitFee, uint256 _hightLightFee,
        uint256 _PercenDiscountOnHBWallet, uint256  _limitHBWALLETForDiscount) public onlyOwner {
        require(_Fee >= 0 && _limitFee >= 0 && _hightLightFee >= 0);
        Games[_game].Fee = _Fee;
        Games[_game].limitFee = _limitFee;
        Games[_game].PercenDiscountOnHBWallet = _PercenDiscountOnHBWallet;
        Games[_game].limitHBWALLETForDiscount = _limitHBWALLETForDiscount;
        hightLightFee = _hightLightFee;
    }
    function setLimitFeeAll(address[] memory _game, uint256[] memory _Fee, uint256[] memory _limitFee, uint256 _hightLightFee,
        uint256[] memory _PercenDiscountOnHBWallet, uint256[]  memory _limitHBWALLETForDiscount) public onlyOwner {
        require(_game.length == _Fee.length);
        for(uint i = 0; i < _game.length; i++){
            require(_Fee[i] >= 0 && _limitFee[i] >= 0);
            Games[_game[i]].Fee = _Fee[i];
            Games[_game[i]].limitFee = _limitFee[i];
            Games[_game[i]].PercenDiscountOnHBWallet = _PercenDiscountOnHBWallet[i];
            Games[_game[i]].limitHBWALLETForDiscount = _limitHBWALLETForDiscount[i];
        }

        hightLightFee = _hightLightFee;
    }
    function withdraw(uint256 amount) public onlyCeoAddress {
        _withdraw(amount);
    }
    function _withdraw(uint256 amount) internal {
        require(erc20.balanceOf(address(this)) >= amount);
        if(amount > 0) {
            erc20.transfer(msg.sender, amount);
        }
    }

    function cancelBusinessByGameId(address _game, uint256 _tokenId) private {
        IERC721 erc721Address = IERC721(_game);
        if (Games[_game].tokenPrice[_tokenId].tokenOwner == erc721Address.ownerOf(_tokenId)
        || Games[_game].tokenPrice[_tokenId].tokenOwner == address(this)) {

            uint256 amount = Games[_game].tokenPrice[_tokenId].fee;
            if(Games[_game].tokenPrice[_tokenId].isHightlight == 1) amount = amount.add(hightLightFee);
            if( amount > 0 && erc20.balanceOf(address(this)) >= amount) {
                erc20.transfer(Games[_game].tokenPrice[_tokenId].tokenOwner, amount);
            }
            if(Games[_game].tokenPrice[_tokenId].tokenOwner == address(this)) erc721Address.transfer(Games[_game].tokenPrice[_tokenId].tokenOwner, _tokenId);
            resetPrice(_game, _tokenId);
        }
    }

    function cancelBusinessByGame(address _game) private {
        uint256[] memory _arrTokenId = Games[_game].tokenIdSale;
        for (uint i = 0; i < _arrTokenId.length; i++) {
            cancelBusinessByGameId(_game, _arrTokenId[i]);
        }

    }
    function cancelBussiness() public onlyCeoAddress {
        for(uint j = 0; j< arrGames.length; j++) {
            address _game = arrGames[j];
            cancelBusinessByGame(_game);
        }
        _withdraw(address(this).balance);
    }

    function revenue() public view returns (uint256){
        uint256 fee;
        for(uint j = 0; j< arrGames.length; j++) {
            address _game = arrGames[j];
            IERC721 erc721Address = IERC721(arrGames[j]);
            for (uint i = 0; i < Games[_game].tokenIdSale.length; i++) {
                uint256 _tokenId = Games[_game].tokenIdSale[i];
                if (Games[_game].tokenPrice[_tokenId].tokenOwner == erc721Address.ownerOf(_tokenId)) {

                    fee = fee.add(Games[_game].tokenPrice[_tokenId].fee);
                    if(Games[_game].tokenPrice[_tokenId].isHightlight == 1) fee = fee.add(hightLightFee);
                }
            }
        }

        uint256 amount = erc20.balanceOf(address(this)).sub(fee);
        return amount;
    }

    function changeCeo(address _address) public onlyCeoAddress {
        require(_address != address(0));
        ceoAddress = _address;

    }

    function buy(address _game, uint256 tokenId) public payable {
        IERC721 erc721Address = IERC721(_game);
        require(erc721Address.getApproved(tokenId) == address(this));
        require(Games[_game].tokenPrice[tokenId].Price > 0);
        require(erc20.transferFrom(msg.sender, Games[_game].tokenPrice[tokenId].tokenOwner, Games[_game].tokenPrice[tokenId].Price));

        erc721Address.transferFrom(Games[_game].tokenPrice[tokenId].tokenOwner, msg.sender, tokenId);
        resetPrice(_game, tokenId);
    }

    function buyWithoutCheckApproved(address _game, uint256 tokenId) public payable {
        IERC721 erc721Address = IERC721(_game);
        require(Games[_game].tokenPrice[tokenId].Price > 0);
        require(erc20.transferFrom(msg.sender, Games[_game].tokenPrice[tokenId].tokenOwner, Games[_game].tokenPrice[tokenId].Price));

        erc721Address.transferFrom(Games[_game].tokenPrice[tokenId].tokenOwner, msg.sender, tokenId);
        resetPrice(_game, tokenId);
    }

    function buyFromSmartcontractViaTransfer(address _game, uint256 _tokenId) public payable {
        IERC721 erc721Address = IERC721(_game);
        require(erc721Address.ownerOf(_tokenId) == address(this));
        require(erc20.transferFrom(msg.sender, Games[_game].tokenPrice[_tokenId].tokenOwner, Games[_game].tokenPrice[_tokenId].Price));

        erc721Address.transfer(msg.sender, _tokenId);
        resetPrice(_game, _tokenId);
    }
    // Move the last element to the deleted spot.
    // Delete the last element, then correct the length.
    function _burnArrayTokenIdSale(address _game, uint256 index)  internal {
        if (index >= Games[_game].tokenIdSale.length) return;

        for (uint i = index; i<Games[_game].tokenIdSale.length-1; i++){
            Games[_game].tokenIdSale[i] = Games[_game].tokenIdSale[i+1];
        }
        delete Games[_game].tokenIdSale[Games[_game].tokenIdSale.length-1];
        Games[_game].tokenIdSale.length--;
    }

    function resetPrice(address _game, uint256 _tokenId) private {
        Games[_game].tokenPrice[_tokenId] = Price(address(0), 0, 0, 0);
        for (uint8 i = 0; i < Games[_game].tokenIdSale.length; i++) {
            if (Games[_game].tokenIdSale[i] == _tokenId) {
                _burnArrayTokenIdSale(_game, i);
            }
        }
        emit _resetPrice(_game, _tokenId);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"hightLightFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"calFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_isHightLight","type":"uint256"}],"name":"calFeeHightLight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"revenue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"removePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"buyWithoutCheckApproved","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getArrGames","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_Fee","type":"uint256"},{"internalType":"uint256","name":"_limitFee","type":"uint256"},{"internalType":"uint256","name":"_hightLightFee","type":"uint256"},{"internalType":"uint256","name":"_PercenDiscountOnHBWallet","type":"uint256"},{"internalType":"uint256","name":"_limitHBWALLETForDiscount","type":"uint256"}],"name":"setLimitFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"Percen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"erc20","outputs":[{"internalType":"contract ERC20BasicInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"buyFromSmartcontractViaTransfer","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"arrGames","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_Price","type":"uint256"},{"internalType":"uint256","name":"_isHightLight","type":"uint256"}],"name":"calPrice","outputs":[{"internalType":"uint256","name":"_Need","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_game","type":"address[]"},{"internalType":"uint256[]","name":"_Fee","type":"uint256[]"},{"internalType":"uint256[]","name":"_limitFee","type":"uint256[]"},{"internalType":"uint256","name":"_hightLightFee","type":"uint256"},{"internalType":"uint256[]","name":"_PercenDiscountOnHBWallet","type":"uint256[]"},{"internalType":"uint256[]","name":"_limitHBWALLETForDiscount","type":"uint256[]"}],"name":"setLimitFeeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_isHightLight","type":"uint256"}],"name":"setPriceFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"changeCeo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getTokenPrice","outputs":[{"internalType":"address","name":"_tokenOwner","type":"address"},{"internalType":"uint256","name":"_Price","type":"uint256"},{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"uint256","name":"_isHightlight","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_game","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"cancelBussiness","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Games","outputs":[{"internalType":"uint256","name":"Fee","type":"uint256"},{"internalType":"uint256","name":"PercenDiscountOnHBWallet","type":"uint256"},{"internalType":"uint256","name":"limitHBWALLETForDiscount","type":"uint256"},{"internalType":"uint256","name":"limitFee","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hbwalletToken","outputs":[{"internalType":"contract ERC20BasicInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_game","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_Price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_isHightLight","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"_type","type":"uint8"}],"name":"_setPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_game","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"_resetPrice","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"}]

608060405273fce92d4163aa532aa096de8a3c4fef9f875bc55f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ec7ba74789694d0d03d458965370dc7cf2fe75ba600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506e085d4780b73119b644ae5ecd22b376600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600455674563918244f400006005553480156200011d57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518061022001604052807306012c8cf97bead5deae237070f9587f8e7a266d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731276dce965ada590e42d62b3953ddc1ddceb039273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e60d2325f996e197eedded8964227a0c6ca82d0f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ecd6b4a2f82b0c9fb283a4a8a1ef5adf555f794b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f26a23019b4699068bb54457f32dafcf22a9d37173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738c9b261faef3b3c2e64ab5e58e04615f8c78809973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736ebeaf8e8e946f0716e6533a6f2cefc83f60e8ab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735d00d312e171be5342067c09bae883f9bcb2003b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173bfde6246df72d3ca86419628cac46a9d2b60393c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173543ecfb0d28fa40d639494957e7cba52460f490e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f5b0a3efb8e8e4c201e2a935f110eaaf3ffecb8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173bc5370374fe08d699cf7fcd2e625a93bf393ccc473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017331af195db332bc9203d758c74df5a5c5e597cdb773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731a94fce7ef36bc90959e206ba569a12afbc91ca173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017330a2fa3c93fb9f93d1efeffd350c6a6bb62ba00073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017369a1d45318de72d6add20d4952398901e0e4a8e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734f41d10f7e67fd16bde916b4a6dc3dd101c5739473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525060079060116200062092919062000850565b5060008090505b6007805490508110156200084957603260066000600784815481106200064957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555060196006600060078481548110620006c957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060c860066000600784815481106200074957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506658d15e176280006006600060078481548110620007cf57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050181905550808060010191505062000627565b5062000925565b828054828255906000526020600020908101928215620008cc579160200282015b82811115620008cb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000871565b5b509050620008db9190620008df565b5090565b6200092291905b808211156200091e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620008e6565b5090565b90565b614d6480620009356000396000f3fe6080604052600436106101b75760003560e01c8063785e9e86116100ec578063c8a616981161008a578063db83b4c011610064578063db83b4c01461060c578063e367b5d514610623578063f2fde38b14610663578063f91d4fd91461068c576101b7565b8063c8a6169814610587578063c9f7153c146105b0578063cce7ec13146105f0576101b7565b80638da5cb5b116100c65780638da5cb5b146104cd5780639c3d00ad146104f8578063bae1663214610535578063c1d56cf01461055e576101b7565b8063785e9e8614610449578063848c115e1461047457806386b5cd1e14610490576101b7565b80633e9491a2116101595780636a7ec8ea116101335780636a7ec8ea1461039f5780636a9d9bd6146103ca5780636adeecb1146103f3578063722713f71461041e576101b7565b80633e9491a21461032f578063464311a61461035a57806347431c4c14610383576101b7565b80630c073791116101955780630c0737911461024f57806313eae5761461028c5780631f29d2dc146102c95780632e1a7d4d14610306576101b7565b80630864f448146101bc578063098f2366146101e75780630a0f816814610224575b600080fd5b3480156101c857600080fd5b506101d16106b7565b6040516101de9190614b05565b60405180910390f35b3480156101f357600080fd5b5061020e60048036036102099190810190614577565b6106bd565b60405161021b919061493a565b60405180910390f35b34801561023057600080fd5b50610239610755565b604051610246919061493a565b60405180910390f35b34801561025b57600080fd5b5061027660048036036102719190810190614577565b61077b565b6040516102839190614b05565b60405180910390f35b34801561029857600080fd5b506102b360048036036102ae91908101906145b3565b610958565b6040516102c09190614b05565b60405180910390f35b3480156102d557600080fd5b506102f060048036036102eb9190810190614577565b610a3d565b6040516102fd919061493a565b60405180910390f35b34801561031257600080fd5b5061032d60048036036103289190810190614818565b610ad5565b005b34801561033b57600080fd5b50610344610b3b565b6040516103519190614b05565b60405180910390f35b34801561036657600080fd5b50610381600480360361037c9190810190614577565b610f75565b005b61039d60048036036103989190810190614577565b61135d565b005b3480156103ab57600080fd5b506103b461163f565b6040516103c19190614ac8565b60405180910390f35b3480156103d657600080fd5b506103f160048036036103ec9190810190614665565b6116cd565b005b3480156103ff57600080fd5b50610408611879565b6040516104159190614b05565b60405180910390f35b34801561042a57600080fd5b5061043361187f565b6040516104409190614b05565b60405180910390f35b34801561045557600080fd5b5061045e61189e565b60405161046b9190614aea565b60405180910390f35b61048e60048036036104899190810190614577565b6118c4565b005b34801561049c57600080fd5b506104b760048036036104b29190810190614818565b611b8b565b6040516104c4919061493a565b60405180910390f35b3480156104d957600080fd5b506104e2611bc7565b6040516104ef919061493a565b60405180910390f35b34801561050457600080fd5b5061051f600480360361051a9190810190614602565b611bec565b60405161052c9190614b05565b60405180910390f35b34801561054157600080fd5b5061055c600480360361055791908101906146ee565b611fac565b005b34801561056a57600080fd5b5061058560048036036105809190810190614602565b612234565b005b34801561059357600080fd5b506105ae60048036036105a99190810190614525565b6128cf565b005b3480156105bc57600080fd5b506105d760048036036105d29190810190614577565b6129a7565b6040516105e79493929190614a30565b60405180910390f35b61060a60048036036106059190810190614577565b612d41565b005b34801561061857600080fd5b506106216130e3565b005b34801561062f57600080fd5b5061064a60048036036106459190810190614525565b6131c6565b60405161065a9493929190614b20565b60405180910390f35b34801561066f57600080fd5b5061068a60048036036106859190810190614525565b6131f6565b005b34801561069857600080fd5b506106a1613347565b6040516106ae9190614aea565b60405180910390f35b60055481565b6000808390508073ffffffffffffffffffffffffffffffffffffffff1663081812fc846040518263ffffffff1660e01b81526004016106fc9190614b05565b60206040518083038186803b15801561071457600080fd5b505afa158015610728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061074c919081019061454e565b91505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016107d99190614955565b60206040518083038186803b1580156107f157600080fd5b505afa158015610805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108299190810190614841565b90506000610896600454610888600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201548761336d90919063ffffffff16565b6133a790919063ffffffff16565b9050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154821061094d5761094a60045461093c600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301548761336d90919063ffffffff16565b6133a790919063ffffffff16565b90505b809250505092915050565b60008060009050600183148015610a2757506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000868152602001908152602001600020600101541480610a2657506001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008681526020019081526020016000206003015414155b5b15610a325760055490505b809150509392505050565b6000808390508073ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401610a7c9190614b05565b60206040518083038186803b158015610a9457600080fd5b505afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610acc919081019061454e565b91505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b2f57600080fd5b610b38816133cd565b50565b60008060008090505b600780549050811015610eab57600060078281548110610b6057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060078381548110610b9c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008090505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050811015610e9b576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018281548110610c6b57fe5b906000526020600020015490508273ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b8152600401610cb19190614b05565b60206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d01919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff16600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e8d57610e13600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000838152602001908152602001600020600201548761354190919063ffffffff16565b95506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000838152602001908152602001600020600301541415610e8c57610e896005548761354190919063ffffffff16565b95505b5b508080600101915050610bcf565b5050508080600101915050610b44565b506000610f6b82600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f0d919061493a565b60206040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f5d9190810190614841565b61356090919063ffffffff16565b9050809250505090565b818160008290503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401610fcc9190614b05565b60206040518083038186803b158015610fe457600080fd5b505afa158015610ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061101c919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff161461103c57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000888152602001908152602001600020600201546040518363ffffffff1660e01b81526004016111659291906149de565b602060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111b791908101906147ef565b503073ffffffffffffffffffffffffffffffffffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561134c5760008590508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518363ffffffff1660e01b81526004016113189291906149de565b600060405180830381600087803b15801561133257600080fd5b505af1158015611346573d6000803e3d6000fd5b50505050505b6113568585613580565b5050505050565b60008290506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600084815260200190815260200160002060010154116113c557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000878152602001908152602001600020600101546040518463ffffffff1660e01b81526004016114f093929190614970565b602060405180830381600087803b15801561150a57600080fd5b505af115801561151e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061154291908101906147ef565b61154b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b81526004016115fe93929190614970565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050505061163a8383613580565b505050565b606060078054806020026020016040519081016040528092919081815260200182805480156116c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611679575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172657600080fd5b60008510158015611738575060008410155b8015611745575060008310155b61174e57600080fd5b84600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555083600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555081600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004018190555082600581905550505050505050565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008290503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004016119199190614b05565b60206040518083038186803b15801561193157600080fd5b505afa158015611945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611969919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff161461198957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000878152602001908152602001600020600101546040518463ffffffff1660e01b8152600401611ab493929190614970565b602060405180830381600087803b158015611ace57600080fd5b505af1158015611ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b0691908101906147ef565b611b0f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611b4a9291906149de565b600060405180830381600087803b158015611b6457600080fd5b505af1158015611b78573d6000803e3d6000fd5b50505050611b868383613580565b505050565b60078181548110611b9857fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000611bfc878786610958565b905060008086600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a8152602001908152602001600020600101541015611f9957611cd189611ccc600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600101548a61356090919063ffffffff16565b61077b565b9350611cdd898861077b565b90506000600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a815260200190815260200160002060010154148015611d865750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015484105b15611de757611de083600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015461354190919063ffffffff16565b9150611f94565b6000600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a815260200190815260200160002060010154118015611e8e5750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015481105b15611e9b57829150611f93565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600089815260200190815260200160002060020154611f05848361354190919063ffffffff16565b1015611f145760009150611f92565b611f8f600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a815260200190815260200160002060020154611f81858461354190919063ffffffff16565b61356090919063ffffffff16565b91505b5b5b611f9d565b8291505b81945050505050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461200557600080fd5b845186511461201357600080fd5b60008090505b865181101561222457600086828151811061203057fe5b60200260200101511015801561205a5750600085828151811061204f57fe5b602002602001015110155b61206357600080fd5b85818151811061206f57fe5b60200260200101516006600089848151811061208757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508481815181106120dc57fe5b6020026020010151600660008984815181106120f457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555082818151811061214957fe5b60200260200101516006600089848151811061216157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055508181815181106121b657fe5b6020026020010151600660008984815181106121ce57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508080600101915050612019565b5082600581905550505050505050565b838360008290503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b815260040161228b9190614b05565b60206040518083038186803b1580156122a357600080fd5b505afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122db919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff16146122fb57600080fd5b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600088815260200190815260200160002060010154141561235e57600080fd5b600061236c88888888611bec565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016123cd939291906149a7565b602060405180830381600087803b1580156123e757600080fd5b505af11580156123fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061241f91908101906147ef565b61242857600080fd5b6000612435898988610958565b9050600087600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008b815260200190815260200160002060010154101561281c576125098a612504600660008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008d8152602001908152602001600020600101548b61356090919063ffffffff16565b61077b565b905060006125178b8a61077b565b90506000600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600101541480156125c05750600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015482105b1561260f57600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015491506127ab565b6000600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600101541180156126b65750600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015481105b156126c457600091506127aa565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008b81526020019081526020016000206002015461272e848361354190919063ffffffff16565b101561273d57600091506127a9565b6127a6600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600201548261356090919063ffffffff16565b91505b5b5b612814600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600201548361354190919063ffffffff16565b915050612876565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a81526020019081526020016000206002015490505b6128838a8a8a848b613787565b7ffe5cbaa3667dfb097648d991d9822e59bbed8c24ecaebda44bc650cb01e9b4ed8a8a8a8a60016040516128bb959493929190614a75565b60405180910390a150505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461292957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561296357600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806000869050600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e886040518263ffffffff1660e01b8152600401612a789190614b05565b60206040518083038186803b158015612a9057600080fd5b505afa158015612aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ac8919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff1614158015612ba057503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e886040518263ffffffff1660e01b8152600401612b379190614b05565b60206040518083038186803b158015612b4f57600080fd5b505afa158015612b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b87919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612bb057612baf8787613580565b5b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600088815260200190815260200160002060010154600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600089815260200190815260200160002060020154600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a81526020019081526020016000206003015483935094509450945094505092959194509250565b60008290503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663081812fc846040518263ffffffff1660e01b8152600401612d969190614b05565b60206040518083038186803b158015612dae57600080fd5b505afa158015612dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612de6919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff1614612e0657600080fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008481526020019081526020016000206001015411612e6957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000878152602001908152602001600020600101546040518463ffffffff1660e01b8152600401612f9493929190614970565b602060405180830381600087803b158015612fae57600080fd5b505af1158015612fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612fe691908101906147ef565b612fef57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b81526004016130a293929190614970565b600060405180830381600087803b1580156130bc57600080fd5b505af11580156130d0573d6000803e3d6000fd5b505050506130de8383613580565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461313d57600080fd5b60008090505b6007805490508110156131a35760006007828154811061315f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613195816139ef565b508080600101915050613143565b506131c43073ffffffffffffffffffffffffffffffffffffffff16316133cd565b565b60066020528060005260406000206000915090508060020154908060030154908060040154908060050154905084565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461324f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561328957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083141561338057600090506133a1565b600082840290508284828161339157fe5b041461339c57600080fd5b809150505b92915050565b60008082116133b557600080fd5b60008284816133c057fe5b0490508091505092915050565b80600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613429919061493a565b60206040518083038186803b15801561344157600080fd5b505afa158015613455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134799190810190614841565b101561348457600080fd5b600081111561353e57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016134ea9291906149de565b602060405180830381600087803b15801561350457600080fd5b505af1158015613518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061353c91908101906147ef565b505b50565b60008082840190508381101561355657600080fd5b8091505092915050565b60008282111561356f57600080fd5b600082840390508091505092915050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815250600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015590505060008090505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508160ff1610156137495781600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018260ff168154811061371d57fe5b9060005260206000200154141561373c5761373b838260ff16613ac2565b5b808060010191505061367c565b507f935357ef93450c7ded8841e9b45492493283c53303e7344fc7aa639868b7c843828260405161377b929190614a07565b60405180910390a15050565b60405180608001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030155905050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050906001820390600052602060002001600090919290919091505550600080905060008090505b60078054905081101561397a578673ffffffffffffffffffffffffffffffffffffffff166007828154811061392157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561396d57600191505b80806001019150506138f0565b50806139e75760078690806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b505050505050565b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480602002602001604051908101604052809291908181526020018280548015613a7d57602002820191906000526020600020905b815481526020019060010190808311613a69575b5050505050905060008090505b8151811015613abd57613ab083838381518110613aa357fe5b6020026020010151613d2b565b8080600101915050613a8a565b505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110613b1357613d27565b60008190505b6001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905003811015613c2c57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016001820181548110613bb957fe5b9060005260206000200154600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018281548110613c1157fe5b90600052602060002001819055508080600101915050613b19565b50600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490500381548110613cc257fe5b9060005260206000200160009055600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480919060019003613d259190614365565b505b5050565b60008290508073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401613d699190614b05565b60206040518083038186803b158015613d8157600080fd5b505afa158015613d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613db9919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff16600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613f0957503073ffffffffffffffffffffffffffffffffffffffff16600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15614360576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008481526020019081526020016000206002015490506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000858152602001908152602001600020600301541415613fe057613fdd6005548261354190919063ffffffff16565b90505b60008111801561409a575080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401614047919061493a565b60206040518083038186803b15801561405f57600080fd5b505afa158015614073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506140979190810190614841565b10155b156141c657600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016141729291906149de565b602060405180830381600087803b15801561418c57600080fd5b505af11580156141a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506141c491908101906147ef565b505b3073ffffffffffffffffffffffffffffffffffffffff16600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614354578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b81526004016143219291906149de565b600060405180830381600087803b15801561433b57600080fd5b505af115801561434f573d6000803e3d6000fd5b505050505b61435e8484613580565b505b505050565b81548183558181111561438c5781836000526020600020918201910161438b9190614391565b5b505050565b6143b391905b808211156143af576000816000905550600101614397565b5090565b90565b6000813590506143c581614cdc565b92915050565b6000815190506143da81614cdc565b92915050565b600082601f8301126143f157600080fd5b81356144046143ff82614b92565b614b65565b9150818183526020840193506020810190508385602084028201111561442957600080fd5b60005b83811015614459578161443f88826143b6565b84526020840193506020830192505060018101905061442c565b5050505092915050565b600082601f83011261447457600080fd5b813561448761448282614bba565b614b65565b915081818352602084019350602081019050838560208402820111156144ac57600080fd5b60005b838110156144dc57816144c288826144fb565b8452602084019350602083019250506001810190506144af565b5050505092915050565b6000815190506144f581614cf3565b92915050565b60008135905061450a81614d0a565b92915050565b60008151905061451f81614d0a565b92915050565b60006020828403121561453757600080fd5b6000614545848285016143b6565b91505092915050565b60006020828403121561456057600080fd5b600061456e848285016143cb565b91505092915050565b6000806040838503121561458a57600080fd5b6000614598858286016143b6565b92505060206145a9858286016144fb565b9150509250929050565b6000806000606084860312156145c857600080fd5b60006145d6868287016143b6565b93505060206145e7868287016144fb565b92505060406145f8868287016144fb565b9150509250925092565b6000806000806080858703121561461857600080fd5b6000614626878288016143b6565b9450506020614637878288016144fb565b9350506040614648878288016144fb565b9250506060614659878288016144fb565b91505092959194509250565b60008060008060008060c0878903121561467e57600080fd5b600061468c89828a016143b6565b965050602061469d89828a016144fb565b95505060406146ae89828a016144fb565b94505060606146bf89828a016144fb565b93505060806146d089828a016144fb565b92505060a06146e189828a016144fb565b9150509295509295509295565b60008060008060008060c0878903121561470757600080fd5b600087013567ffffffffffffffff81111561472157600080fd5b61472d89828a016143e0565b965050602087013567ffffffffffffffff81111561474a57600080fd5b61475689828a01614463565b955050604087013567ffffffffffffffff81111561477357600080fd5b61477f89828a01614463565b945050606061479089828a016144fb565b935050608087013567ffffffffffffffff8111156147ad57600080fd5b6147b989828a01614463565b92505060a087013567ffffffffffffffff8111156147d657600080fd5b6147e289828a01614463565b9150509295509295509295565b60006020828403121561480157600080fd5b600061480f848285016144e6565b91505092915050565b60006020828403121561482a57600080fd5b6000614838848285016144fb565b91505092915050565b60006020828403121561485357600080fd5b600061486184828501614510565b91505092915050565b60006148768383614891565b60208301905092915050565b61488b81614c70565b82525050565b61489a81614c1b565b82525050565b6148a981614c1b565b82525050565b60006148ba82614bf2565b6148c48185614c0a565b93506148cf83614be2565b8060005b838110156149005781516148e7888261486a565b97506148f283614bfd565b9250506001810190506148d3565b5085935050505092915050565b61491681614c82565b82525050565b61492581614ca6565b82525050565b61493481614c59565b82525050565b600060208201905061494f60008301846148a0565b92915050565b600060208201905061496a6000830184614882565b92915050565b60006060820190506149856000830186614882565b6149926020830185614882565b61499f604083018461492b565b949350505050565b60006060820190506149bc6000830186614882565b6149c960208301856148a0565b6149d6604083018461492b565b949350505050565b60006040820190506149f36000830185614882565b614a00602083018461492b565b9392505050565b6000604082019050614a1c60008301856148a0565b614a29602083018461492b565b9392505050565b6000608082019050614a4560008301876148a0565b614a52602083018661492b565b614a5f604083018561492b565b614a6c606083018461492b565b95945050505050565b600060a082019050614a8a60008301886148a0565b614a97602083018761492b565b614aa4604083018661492b565b614ab1606083018561492b565b614abe608083018461491c565b9695505050505050565b60006020820190508181036000830152614ae281846148af565b905092915050565b6000602082019050614aff600083018461490d565b92915050565b6000602082019050614b1a600083018461492b565b92915050565b6000608082019050614b35600083018761492b565b614b42602083018661492b565b614b4f604083018561492b565b614b5c606083018461492b565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715614b8857600080fd5b8060405250919050565b600067ffffffffffffffff821115614ba957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614bd157600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b6000614c2682614c39565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7b82614cb8565b9050919050565b6000614c8d82614c94565b9050919050565b6000614c9f82614c39565b9050919050565b6000614cb182614c63565b9050919050565b6000614cc382614cca565b9050919050565b6000614cd582614c39565b9050919050565b614ce581614c1b565b8114614cf057600080fd5b50565b614cfc81614c2d565b8114614d0757600080fd5b50565b614d1381614c59565b8114614d1e57600080fd5b5056fea365627a7a723158201c0dcbc29ada9ee4c8eae148305e11d635bd79f4ba74cde1d219c105e0180e8b6c6578706572696d656e74616cf564736f6c634300050b0040

Deployed Bytecode

0x6080604052600436106101b75760003560e01c8063785e9e86116100ec578063c8a616981161008a578063db83b4c011610064578063db83b4c01461060c578063e367b5d514610623578063f2fde38b14610663578063f91d4fd91461068c576101b7565b8063c8a6169814610587578063c9f7153c146105b0578063cce7ec13146105f0576101b7565b80638da5cb5b116100c65780638da5cb5b146104cd5780639c3d00ad146104f8578063bae1663214610535578063c1d56cf01461055e576101b7565b8063785e9e8614610449578063848c115e1461047457806386b5cd1e14610490576101b7565b80633e9491a2116101595780636a7ec8ea116101335780636a7ec8ea1461039f5780636a9d9bd6146103ca5780636adeecb1146103f3578063722713f71461041e576101b7565b80633e9491a21461032f578063464311a61461035a57806347431c4c14610383576101b7565b80630c073791116101955780630c0737911461024f57806313eae5761461028c5780631f29d2dc146102c95780632e1a7d4d14610306576101b7565b80630864f448146101bc578063098f2366146101e75780630a0f816814610224575b600080fd5b3480156101c857600080fd5b506101d16106b7565b6040516101de9190614b05565b60405180910390f35b3480156101f357600080fd5b5061020e60048036036102099190810190614577565b6106bd565b60405161021b919061493a565b60405180910390f35b34801561023057600080fd5b50610239610755565b604051610246919061493a565b60405180910390f35b34801561025b57600080fd5b5061027660048036036102719190810190614577565b61077b565b6040516102839190614b05565b60405180910390f35b34801561029857600080fd5b506102b360048036036102ae91908101906145b3565b610958565b6040516102c09190614b05565b60405180910390f35b3480156102d557600080fd5b506102f060048036036102eb9190810190614577565b610a3d565b6040516102fd919061493a565b60405180910390f35b34801561031257600080fd5b5061032d60048036036103289190810190614818565b610ad5565b005b34801561033b57600080fd5b50610344610b3b565b6040516103519190614b05565b60405180910390f35b34801561036657600080fd5b50610381600480360361037c9190810190614577565b610f75565b005b61039d60048036036103989190810190614577565b61135d565b005b3480156103ab57600080fd5b506103b461163f565b6040516103c19190614ac8565b60405180910390f35b3480156103d657600080fd5b506103f160048036036103ec9190810190614665565b6116cd565b005b3480156103ff57600080fd5b50610408611879565b6040516104159190614b05565b60405180910390f35b34801561042a57600080fd5b5061043361187f565b6040516104409190614b05565b60405180910390f35b34801561045557600080fd5b5061045e61189e565b60405161046b9190614aea565b60405180910390f35b61048e60048036036104899190810190614577565b6118c4565b005b34801561049c57600080fd5b506104b760048036036104b29190810190614818565b611b8b565b6040516104c4919061493a565b60405180910390f35b3480156104d957600080fd5b506104e2611bc7565b6040516104ef919061493a565b60405180910390f35b34801561050457600080fd5b5061051f600480360361051a9190810190614602565b611bec565b60405161052c9190614b05565b60405180910390f35b34801561054157600080fd5b5061055c600480360361055791908101906146ee565b611fac565b005b34801561056a57600080fd5b5061058560048036036105809190810190614602565b612234565b005b34801561059357600080fd5b506105ae60048036036105a99190810190614525565b6128cf565b005b3480156105bc57600080fd5b506105d760048036036105d29190810190614577565b6129a7565b6040516105e79493929190614a30565b60405180910390f35b61060a60048036036106059190810190614577565b612d41565b005b34801561061857600080fd5b506106216130e3565b005b34801561062f57600080fd5b5061064a60048036036106459190810190614525565b6131c6565b60405161065a9493929190614b20565b60405180910390f35b34801561066f57600080fd5b5061068a60048036036106859190810190614525565b6131f6565b005b34801561069857600080fd5b506106a1613347565b6040516106ae9190614aea565b60405180910390f35b60055481565b6000808390508073ffffffffffffffffffffffffffffffffffffffff1663081812fc846040518263ffffffff1660e01b81526004016106fc9190614b05565b60206040518083038186803b15801561071457600080fd5b505afa158015610728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061074c919081019061454e565b91505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016107d99190614955565b60206040518083038186803b1580156107f157600080fd5b505afa158015610805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108299190810190614841565b90506000610896600454610888600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201548761336d90919063ffffffff16565b6133a790919063ffffffff16565b9050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154821061094d5761094a60045461093c600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301548761336d90919063ffffffff16565b6133a790919063ffffffff16565b90505b809250505092915050565b60008060009050600183148015610a2757506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000868152602001908152602001600020600101541480610a2657506001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008681526020019081526020016000206003015414155b5b15610a325760055490505b809150509392505050565b6000808390508073ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401610a7c9190614b05565b60206040518083038186803b158015610a9457600080fd5b505afa158015610aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610acc919081019061454e565b91505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b2f57600080fd5b610b38816133cd565b50565b60008060008090505b600780549050811015610eab57600060078281548110610b6057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060078381548110610b9c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008090505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050811015610e9b576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018281548110610c6b57fe5b906000526020600020015490508273ffffffffffffffffffffffffffffffffffffffff16636352211e826040518263ffffffff1660e01b8152600401610cb19190614b05565b60206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d01919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff16600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e8d57610e13600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000838152602001908152602001600020600201548761354190919063ffffffff16565b95506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000838152602001908152602001600020600301541415610e8c57610e896005548761354190919063ffffffff16565b95505b5b508080600101915050610bcf565b5050508080600101915050610b44565b506000610f6b82600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f0d919061493a565b60206040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f5d9190810190614841565b61356090919063ffffffff16565b9050809250505090565b818160008290503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401610fcc9190614b05565b60206040518083038186803b158015610fe457600080fd5b505afa158015610ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061101c919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff161461103c57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000888152602001908152602001600020600201546040518363ffffffff1660e01b81526004016111659291906149de565b602060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111b791908101906147ef565b503073ffffffffffffffffffffffffffffffffffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561134c5760008590508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518363ffffffff1660e01b81526004016113189291906149de565b600060405180830381600087803b15801561133257600080fd5b505af1158015611346573d6000803e3d6000fd5b50505050505b6113568585613580565b5050505050565b60008290506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600084815260200190815260200160002060010154116113c557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000878152602001908152602001600020600101546040518463ffffffff1660e01b81526004016114f093929190614970565b602060405180830381600087803b15801561150a57600080fd5b505af115801561151e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061154291908101906147ef565b61154b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b81526004016115fe93929190614970565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050505061163a8383613580565b505050565b606060078054806020026020016040519081016040528092919081815260200182805480156116c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611679575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172657600080fd5b60008510158015611738575060008410155b8015611745575060008310155b61174e57600080fd5b84600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555083600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555081600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004018190555082600581905550505050505050565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008290503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004016119199190614b05565b60206040518083038186803b15801561193157600080fd5b505afa158015611945573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611969919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff161461198957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000878152602001908152602001600020600101546040518463ffffffff1660e01b8152600401611ab493929190614970565b602060405180830381600087803b158015611ace57600080fd5b505af1158015611ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b0691908101906147ef565b611b0f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611b4a9291906149de565b600060405180830381600087803b158015611b6457600080fd5b505af1158015611b78573d6000803e3d6000fd5b50505050611b868383613580565b505050565b60078181548110611b9857fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000611bfc878786610958565b905060008086600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a8152602001908152602001600020600101541015611f9957611cd189611ccc600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600101548a61356090919063ffffffff16565b61077b565b9350611cdd898861077b565b90506000600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a815260200190815260200160002060010154148015611d865750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015484105b15611de757611de083600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015461354190919063ffffffff16565b9150611f94565b6000600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a815260200190815260200160002060010154118015611e8e5750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015481105b15611e9b57829150611f93565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600089815260200190815260200160002060020154611f05848361354190919063ffffffff16565b1015611f145760009150611f92565b611f8f600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a815260200190815260200160002060020154611f81858461354190919063ffffffff16565b61356090919063ffffffff16565b91505b5b5b611f9d565b8291505b81945050505050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461200557600080fd5b845186511461201357600080fd5b60008090505b865181101561222457600086828151811061203057fe5b60200260200101511015801561205a5750600085828151811061204f57fe5b602002602001015110155b61206357600080fd5b85818151811061206f57fe5b60200260200101516006600089848151811061208757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508481815181106120dc57fe5b6020026020010151600660008984815181106120f457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555082818151811061214957fe5b60200260200101516006600089848151811061216157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055508181815181106121b657fe5b6020026020010151600660008984815181106121ce57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508080600101915050612019565b5082600581905550505050505050565b838360008290503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b815260040161228b9190614b05565b60206040518083038186803b1580156122a357600080fd5b505afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122db919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff16146122fb57600080fd5b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600088815260200190815260200160002060010154141561235e57600080fd5b600061236c88888888611bec565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016123cd939291906149a7565b602060405180830381600087803b1580156123e757600080fd5b505af11580156123fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061241f91908101906147ef565b61242857600080fd5b6000612435898988610958565b9050600087600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008b815260200190815260200160002060010154101561281c576125098a612504600660008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008d8152602001908152602001600020600101548b61356090919063ffffffff16565b61077b565b905060006125178b8a61077b565b90506000600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600101541480156125c05750600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015482105b1561260f57600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015491506127ab565b6000600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600101541180156126b65750600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015481105b156126c457600091506127aa565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008b81526020019081526020016000206002015461272e848361354190919063ffffffff16565b101561273d57600091506127a9565b6127a6600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600201548261356090919063ffffffff16565b91505b5b5b612814600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008c8152602001908152602001600020600201548361354190919063ffffffff16565b915050612876565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a81526020019081526020016000206002015490505b6128838a8a8a848b613787565b7ffe5cbaa3667dfb097648d991d9822e59bbed8c24ecaebda44bc650cb01e9b4ed8a8a8a8a60016040516128bb959493929190614a75565b60405180910390a150505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461292957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561296357600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806000869050600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e886040518263ffffffff1660e01b8152600401612a789190614b05565b60206040518083038186803b158015612a9057600080fd5b505afa158015612aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ac8919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff1614158015612ba057503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636352211e886040518263ffffffff1660e01b8152600401612b379190614b05565b60206040518083038186803b158015612b4f57600080fd5b505afa158015612b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b87919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612bb057612baf8787613580565b5b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600088815260200190815260200160002060010154600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600089815260200190815260200160002060020154600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008a81526020019081526020016000206003015483935094509450945094505092959194509250565b60008290503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663081812fc846040518263ffffffff1660e01b8152600401612d969190614b05565b60206040518083038186803b158015612dae57600080fd5b505afa158015612dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612de6919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff1614612e0657600080fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008481526020019081526020016000206001015411612e6957600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000878152602001908152602001600020600101546040518463ffffffff1660e01b8152600401612f9493929190614970565b602060405180830381600087803b158015612fae57600080fd5b505af1158015612fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612fe691908101906147ef565b612fef57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b81526004016130a293929190614970565b600060405180830381600087803b1580156130bc57600080fd5b505af11580156130d0573d6000803e3d6000fd5b505050506130de8383613580565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461313d57600080fd5b60008090505b6007805490508110156131a35760006007828154811061315f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613195816139ef565b508080600101915050613143565b506131c43073ffffffffffffffffffffffffffffffffffffffff16316133cd565b565b60066020528060005260406000206000915090508060020154908060030154908060040154908060050154905084565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461324f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561328957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083141561338057600090506133a1565b600082840290508284828161339157fe5b041461339c57600080fd5b809150505b92915050565b60008082116133b557600080fd5b60008284816133c057fe5b0490508091505092915050565b80600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613429919061493a565b60206040518083038186803b15801561344157600080fd5b505afa158015613455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134799190810190614841565b101561348457600080fd5b600081111561353e57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016134ea9291906149de565b602060405180830381600087803b15801561350457600080fd5b505af1158015613518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061353c91908101906147ef565b505b50565b60008082840190508381101561355657600080fd5b8091505092915050565b60008282111561356f57600080fd5b600082840390508091505092915050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815250600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015590505060008090505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508160ff1610156137495781600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018260ff168154811061371d57fe5b9060005260206000200154141561373c5761373b838260ff16613ac2565b5b808060010191505061367c565b507f935357ef93450c7ded8841e9b45492493283c53303e7344fc7aa639868b7c843828260405161377b929190614a07565b60405180910390a15050565b60405180608001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030155905050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050906001820390600052602060002001600090919290919091505550600080905060008090505b60078054905081101561397a578673ffffffffffffffffffffffffffffffffffffffff166007828154811061392157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561396d57600191505b80806001019150506138f0565b50806139e75760078690806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b505050505050565b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480602002602001604051908101604052809291908181526020018280548015613a7d57602002820191906000526020600020905b815481526020019060010190808311613a69575b5050505050905060008090505b8151811015613abd57613ab083838381518110613aa357fe5b6020026020010151613d2b565b8080600101915050613a8a565b505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110613b1357613d27565b60008190505b6001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054905003811015613c2c57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016001820181548110613bb957fe5b9060005260206000200154600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018281548110613c1157fe5b90600052602060002001819055508080600101915050613b19565b50600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490500381548110613cc257fe5b9060005260206000200160009055600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480919060019003613d259190614365565b505b5050565b60008290508073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401613d699190614b05565b60206040518083038186803b158015613d8157600080fd5b505afa158015613d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613db9919081019061454e565b73ffffffffffffffffffffffffffffffffffffffff16600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613f0957503073ffffffffffffffffffffffffffffffffffffffff16600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15614360576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008481526020019081526020016000206002015490506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000858152602001908152602001600020600301541415613fe057613fdd6005548261354190919063ffffffff16565b90505b60008111801561409a575080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401614047919061493a565b60206040518083038186803b15801561405f57600080fd5b505afa158015614073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506140979190810190614841565b10155b156141c657600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016141729291906149de565b602060405180830381600087803b15801561418c57600080fd5b505af11580156141a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506141c491908101906147ef565b505b3073ffffffffffffffffffffffffffffffffffffffff16600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614354578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600086815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b81526004016143219291906149de565b600060405180830381600087803b15801561433b57600080fd5b505af115801561434f573d6000803e3d6000fd5b505050505b61435e8484613580565b505b505050565b81548183558181111561438c5781836000526020600020918201910161438b9190614391565b5b505050565b6143b391905b808211156143af576000816000905550600101614397565b5090565b90565b6000813590506143c581614cdc565b92915050565b6000815190506143da81614cdc565b92915050565b600082601f8301126143f157600080fd5b81356144046143ff82614b92565b614b65565b9150818183526020840193506020810190508385602084028201111561442957600080fd5b60005b83811015614459578161443f88826143b6565b84526020840193506020830192505060018101905061442c565b5050505092915050565b600082601f83011261447457600080fd5b813561448761448282614bba565b614b65565b915081818352602084019350602081019050838560208402820111156144ac57600080fd5b60005b838110156144dc57816144c288826144fb565b8452602084019350602083019250506001810190506144af565b5050505092915050565b6000815190506144f581614cf3565b92915050565b60008135905061450a81614d0a565b92915050565b60008151905061451f81614d0a565b92915050565b60006020828403121561453757600080fd5b6000614545848285016143b6565b91505092915050565b60006020828403121561456057600080fd5b600061456e848285016143cb565b91505092915050565b6000806040838503121561458a57600080fd5b6000614598858286016143b6565b92505060206145a9858286016144fb565b9150509250929050565b6000806000606084860312156145c857600080fd5b60006145d6868287016143b6565b93505060206145e7868287016144fb565b92505060406145f8868287016144fb565b9150509250925092565b6000806000806080858703121561461857600080fd5b6000614626878288016143b6565b9450506020614637878288016144fb565b9350506040614648878288016144fb565b9250506060614659878288016144fb565b91505092959194509250565b60008060008060008060c0878903121561467e57600080fd5b600061468c89828a016143b6565b965050602061469d89828a016144fb565b95505060406146ae89828a016144fb565b94505060606146bf89828a016144fb565b93505060806146d089828a016144fb565b92505060a06146e189828a016144fb565b9150509295509295509295565b60008060008060008060c0878903121561470757600080fd5b600087013567ffffffffffffffff81111561472157600080fd5b61472d89828a016143e0565b965050602087013567ffffffffffffffff81111561474a57600080fd5b61475689828a01614463565b955050604087013567ffffffffffffffff81111561477357600080fd5b61477f89828a01614463565b945050606061479089828a016144fb565b935050608087013567ffffffffffffffff8111156147ad57600080fd5b6147b989828a01614463565b92505060a087013567ffffffffffffffff8111156147d657600080fd5b6147e289828a01614463565b9150509295509295509295565b60006020828403121561480157600080fd5b600061480f848285016144e6565b91505092915050565b60006020828403121561482a57600080fd5b6000614838848285016144fb565b91505092915050565b60006020828403121561485357600080fd5b600061486184828501614510565b91505092915050565b60006148768383614891565b60208301905092915050565b61488b81614c70565b82525050565b61489a81614c1b565b82525050565b6148a981614c1b565b82525050565b60006148ba82614bf2565b6148c48185614c0a565b93506148cf83614be2565b8060005b838110156149005781516148e7888261486a565b97506148f283614bfd565b9250506001810190506148d3565b5085935050505092915050565b61491681614c82565b82525050565b61492581614ca6565b82525050565b61493481614c59565b82525050565b600060208201905061494f60008301846148a0565b92915050565b600060208201905061496a6000830184614882565b92915050565b60006060820190506149856000830186614882565b6149926020830185614882565b61499f604083018461492b565b949350505050565b60006060820190506149bc6000830186614882565b6149c960208301856148a0565b6149d6604083018461492b565b949350505050565b60006040820190506149f36000830185614882565b614a00602083018461492b565b9392505050565b6000604082019050614a1c60008301856148a0565b614a29602083018461492b565b9392505050565b6000608082019050614a4560008301876148a0565b614a52602083018661492b565b614a5f604083018561492b565b614a6c606083018461492b565b95945050505050565b600060a082019050614a8a60008301886148a0565b614a97602083018761492b565b614aa4604083018661492b565b614ab1606083018561492b565b614abe608083018461491c565b9695505050505050565b60006020820190508181036000830152614ae281846148af565b905092915050565b6000602082019050614aff600083018461490d565b92915050565b6000602082019050614b1a600083018461492b565b92915050565b6000608082019050614b35600083018761492b565b614b42602083018661492b565b614b4f604083018561492b565b614b5c606083018461492b565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715614b8857600080fd5b8060405250919050565b600067ffffffffffffffff821115614ba957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115614bd157600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b6000614c2682614c39565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7b82614cb8565b9050919050565b6000614c8d82614c94565b9050919050565b6000614c9f82614c39565b9050919050565b6000614cb182614c63565b9050919050565b6000614cc382614cca565b9050919050565b6000614cd582614c39565b9050919050565b614ce581614c1b565b8114614cf057600080fd5b50565b614cfc81614c2d565b8114614d0757600080fd5b50565b614d1381614c59565b8114614d1e57600080fd5b5056fea365627a7a723158201c0dcbc29ada9ee4c8eae148305e11d635bd79f4ba74cde1d219c105e0180e8b6c6578706572696d656e74616cf564736f6c634300050b0040

Deployed Bytecode Sourcemap

4544:15226:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5180:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5180:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;8948:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8948:193:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4613:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4613:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;9601:380;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9601:380:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9987:381;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9987:381:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8650:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8650:185:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14713:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14713:92:0;;;;;;;;;;;;;;;;:::i;:::-;;16408:796;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16408:796:0;;;:::i;:::-;;;;;;;;;;;;;;;;12954:477;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12954:477:0;;;;;;;;;;;;;;;;:::i;:::-;;17898:476;;;;;;;;;;;;;;;;:::i;:::-;;8010:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8010:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;13439:539;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13439:539:0;;;;;;;;;;;;;;;;:::i;:::-;;5145:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5145:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;8843:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8843:97:0;;;:::i;:::-;;;;;;;;;;;;;;;;4812:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4812:98:0;;;:::i;:::-;;;;;;;;;;;;;;;;18382:446;;;;;;;;;;;;;;;;:::i;:::-;;5646:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5646:25:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2008:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2008:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;10374:1126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10374:1126:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13984:723;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13984:723:0;;;;;;;;;;;;;;;;:::i;:::-;;11508:1440;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11508:1440:0;;;;;;;;;;;;;;;;:::i;:::-;;17212:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17212:143:0;;;;;;;;;;;;;;;;:::i;:::-;;7397:607;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7397:607:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17363:527;;;;;;;;;;;;;;;;:::i;:::-;;16153:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16153:247:0;;;:::i;:::-;;5602:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5602:37:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2669:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2669:192:0;;;;;;;;;;;;;;;;:::i;:::-;;4699:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4699:106:0;;;:::i;:::-;;;;;;;;;;;;;;;;5180:38;;;;:::o;8948:193::-;9023:7;9042:21;9074:5;9042:38;;9098:13;:25;;;9124:8;9098:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9098:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9098:35:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9098:35:0;;;;;;;;;9091:42;;;8948:193;;;;:::o;4613:79::-;;;;;;;;;;;;;:::o;9601:380::-;9669:7;9688:23;9714:13;;;;;;;;;;;:23;;;9738:10;9714:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9714:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9714:35:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9714:35:0;;;;;;;;;9688:61;;9760:11;9773:40;9806:6;;9773:28;9784:5;:12;9790:5;9784:12;;;;;;;;;;;;;;;:16;;;9773:6;:10;;:28;;;;:::i;:::-;:32;;:40;;;;:::i;:::-;9760:53;;9846:5;:12;9852:5;9846:12;;;;;;;;;;;;;;;:37;;;9827:15;:56;9824:128;;9891:61;9945:6;;9891:49;9902:5;:12;9908:5;9902:12;;;;;;;;;;;;;;;:37;;;9891:6;:10;;:49;;;;:::i;:::-;:53;;:61;;;;:::i;:::-;9885:67;;9824:128;9970:3;9963:10;;;;9601:380;;;;:::o;9987:381::-;10087:7;10106:22;10131:1;10106:26;;10164:1;10147:13;:18;:123;;;;;10213:1;10170:5;:12;10176:5;10170:12;;;;;;;;;;;;;;;:23;;:33;10194:8;10170:33;;;;;;;;;;;:39;;;:44;:99;;;;10268:1;10218:5;:12;10224:5;10218:12;;;;;;;;;;;;;;;:23;;:33;10242:8;10218:33;;;;;;;;;;;:46;;;:51;;10170:99;10147:123;10143:186;;;10304:13;;10287:30;;10143:186;10346:14;10339:21;;;9987:381;;;;;:::o;8650:185::-;8721:7;8740:21;8772:5;8740:38;;8796:13;:21;;;8818:8;8796:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8796:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8796:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8796:31:0;;;;;;;;;8789:38;;;8650:185;;;;:::o;14713:92::-;8260:10;;;;;;;;;;;8246:24;;:10;:24;;;8238:33;;;;;;14780:17;14790:6;14780:9;:17::i;:::-;14713:92;:::o;16408:796::-;16448:7;16467:11;16493:6;16502:1;16493:10;;16489:615;16508:8;:15;;;;16505:1;:18;16489:615;;;16545:13;16561:8;16570:1;16561:11;;;;;;;;;;;;;;;;;;;;;;;;;16545:27;;16587:21;16619:8;16628:1;16619:11;;;;;;;;;;;;;;;;;;;;;;;;;16587:44;;16651:6;16660:1;16651:10;;16646:447;16667:5;:12;16673:5;16667:12;;;;;;;;;;;;;;;:24;;:31;;;;16663:1;:35;16646:447;;;16724:16;16743:5;:12;16749:5;16743:12;;;;;;;;;;;;;;;:24;;16768:1;16743:27;;;;;;;;;;;;;;;;16724:46;;16841:13;:21;;;16863:8;16841:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16841:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16841:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16841:31:0;;;;;;;;;16793:79;;:5;:12;16799:5;16793:12;;;;;;;;;;;;;;;:23;;:33;16817:8;16793:33;;;;;;;;;;;:44;;;;;;;;;;;;:79;;;16789:289;;;16905:46;16913:5;:12;16919:5;16913:12;;;;;;;;;;;;;;;:23;;:33;16937:8;16913:33;;;;;;;;;;;:37;;;16905:3;:7;;:46;;;;:::i;:::-;16899:52;;17027:1;16977:5;:12;16983:5;16977:12;;;;;;;;;;;;;;;:23;;:33;17001:8;16977:33;;;;;;;;;;;:46;;;:51;16974:84;;;17036:22;17044:13;;17036:3;:7;;:22;;;;:::i;:::-;17030:28;;16974:84;16789:289;16646:447;16700:3;;;;;;;16646:447;;;;16489:615;;16525:3;;;;;;;16489:615;;;;17116:14;17133:39;17168:3;17133:5;;;;;;;;;;;:15;;;17157:4;17133:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17133:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17133:30:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17133:30:0;;;;;;;;;:34;;:39;;;;:::i;:::-;17116:56;;17190:6;17183:13;;;;16408:796;:::o;12954:477::-;13025:5;13032:8;8360:21;8392:5;8360:38;;8452:10;8417:45;;:13;:21;;;8439:8;8417:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8417:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8417:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8417:31:0;;;;;;;;;:45;;;8409:54;;;;;;13052:5;;;;;;;;;;;:14;;;13067:5;:12;13073:5;13067:12;;;;;;;;;;;;;;;:23;;:33;13091:8;13067:33;;;;;;;;;;;:44;;;;;;;;;;;;13113:5;:12;13119:5;13113:12;;;;;;;;;;;;;;;:23;;:33;13137:8;13113:33;;;;;;;;;;;:37;;;13052:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13052:99:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13052:99:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13052:99:0;;;;;;;;;;13221:4;13165:61;;:5;:12;13171:5;13165:12;;;;;;;;;;;;;;;:23;;:33;13189:8;13165:33;;;;;;;;;;;:44;;;;;;;;;;;;:61;;;13162:224;;;13243:21;13275:5;13243:38;;13296:13;:22;;;13319:5;:12;13325:5;13319:12;;;;;;;;;;;;;;;:23;;:33;13343:8;13319:33;;;;;;;;;;;:44;;;;;;;;;;;;13365:8;13296:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13296:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13296:78:0;;;;13162:224;;13396:27;13407:5;13414:8;13396:10;:27::i;:::-;12954:477;;;;;:::o;17898:476::-;17989:21;18021:5;17989:38;;18087:1;18046:5;:12;18052:5;18046:12;;;;;;;;;;;;;;;:23;;:32;18070:7;18046:32;;;;;;;;;;;:38;;;:42;18038:51;;;;;;18108:5;;;;;;;;;;;:18;;;18127:10;18139:5;:12;18145:5;18139:12;;;;;;;;;;;;;;;:23;;:32;18163:7;18139:32;;;;;;;;;;;:43;;;;;;;;;;;;18184:5;:12;18190:5;18184:12;;;;;;;;;;;;;;;:23;;:32;18208:7;18184:32;;;;;;;;;;;:38;;;18108:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18108:115:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18108:115:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18108:115:0;;;;;;;;;18100:124;;;;;;18237:13;:26;;;18264:5;:12;18270:5;18264:12;;;;;;;;;;;;;;;:23;;:32;18288:7;18264:32;;;;;;;;;;;:43;;;;;;;;;;;;18309:10;18321:7;18237:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18237:92:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18237:92:0;;;;18340:26;18351:5;18358:7;18340:10;:26::i;:::-;17898:476;;;:::o;8010:94::-;8053:16;8088:8;8081:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8010:94;:::o;13439:539::-;2466:5;;;;;;;;;;;2452:19;;:10;:19;;;2444:28;;;;;;13656:1;13648:4;:9;;:27;;;;;13674:1;13661:9;:14;;13648:27;:50;;;;;13697:1;13679:14;:19;;13648:50;13640:59;;;;;;13729:4;13710:5;:12;13716:5;13710:12;;;;;;;;;;;;;;;:16;;:23;;;;13768:9;13744:5;:12;13750:5;13744:12;;;;;;;;;;;;;;;:21;;:33;;;;13828:25;13788:5;:12;13794:5;13788:12;;;;;;;;;;;;;;;:37;;:65;;;;13904:25;13864:5;:12;13870:5;13864:12;;;;;;;;;;;;;;;:37;;:65;;;;13956:14;13940:13;:30;;;;13439:539;;;;;;:::o;5145:28::-;;;;:::o;8843:97::-;8885:7;8919:4;8911:21;;;8904:28;;8843:97;:::o;4812:98::-;;;;;;;;;;;;;:::o;18382:446::-;18482:21;18514:5;18482:38;;18582:4;18539:48;;:13;:21;;;18561:8;18539:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18539:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18539:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18539:31:0;;;;;;;;;:48;;;18531:57;;;;;;18607:5;;;;;;;;;;;:18;;;18626:10;18638:5;:12;18644:5;18638:12;;;;;;;;;;;;;;;:23;;:33;18662:8;18638:33;;;;;;;;;;;:44;;;;;;;;;;;;18684:5;:12;18690:5;18684:12;;;;;;;;;;;;;;;:23;;:33;18708:8;18684:33;;;;;;;;;;;:39;;;18607:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18607:117:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18607:117:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18607:117:0;;;;;;;;;18599:126;;;;;;18738:13;:22;;;18761:10;18773:8;18738:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18738:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18738:44:0;;;;18793:27;18804:5;18811:8;18793:10;:27::i;:::-;18382:446;;;:::o;5646:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2008:20::-;;;;;;;;;;;;;:::o;10374:1126::-;10486:13;10512:11;10534:22;10559:48;10576:5;10583:8;10593:13;10559:16;:48::i;:::-;10534:73;;10618:12;10641:16;10714:6;10672:5;:12;10678:5;10672:12;;;;;;;;;;;;;;;:23;;:33;10696:8;10672:33;;;;;;;;;;;:39;;;:48;10668:803;;;10743:66;10750:5;10757:51;10768:5;:12;10774:5;10768:12;;;;;;;;;;;;;;;:23;;:33;10792:8;10768:33;;;;;;;;;;;:39;;;10757:6;:10;;:51;;;;:::i;:::-;10743:6;:66::i;:::-;10737:72;;10835:21;10842:5;10849:6;10835;:21::i;:::-;10824:32;;10917:1;10874:5;:12;10880:5;10874:12;;;;;;;;;;;;;;;:23;;:33;10898:8;10874:33;;;;;;;;;;;:39;;;:44;:75;;;;;10928:5;:12;10934:5;10928:12;;;;;;;;;;;;;;;:21;;;10922:3;:27;10874:75;10871:533;;;10977:41;11003:14;10977:5;:12;10983:5;10977:12;;;;;;;;;;;;;;;:21;;;:25;;:41;;;;:::i;:::-;10970:48;;10871:533;;;11085:1;11043:5;:12;11049:5;11043:12;;;;;;;;;;;;;;;:23;;:33;11067:8;11043:33;;;;;;;;;;;:39;;;:43;:79;;;;;11101:5;:12;11107:5;11101:12;;;;;;;;;;;;;;;:21;;;11090:8;:32;11043:79;11040:364;;;11150:14;11143:21;;11040:364;;;11239:5;:12;11245:5;11239:12;;;;;;;;;;;;;;;:23;;:33;11263:8;11239:33;;;;;;;;;;;:37;;;11208:28;11221:14;11208:8;:12;;:28;;;;:::i;:::-;:68;11205:183;;;11285:1;11278:8;;11205:183;;;11317:71;11350:5;:12;11356:5;11350:12;;;;;;;;;;;;;;;:23;;:33;11374:8;11350:33;;;;;;;;;;;:37;;;11317:28;11330:14;11317:8;:12;;:28;;;;:::i;:::-;:32;;:71;;;;:::i;:::-;11310:78;;11205:183;11040:364;10871:533;10668:803;;;11445:14;11438:21;;10668:803;11488:4;11481:11;;;;;;10374:1126;;;;;;:::o;13984:723::-;2466:5;;;;;;;;;;;2452:19;;:10;:19;;;2444:28;;;;;;14257:4;:11;14241:5;:12;:27;14233:36;;;;;;14284:6;14293:1;14284:10;;14280:377;14300:5;:12;14296:1;:16;14280:377;;;14352:1;14341:4;14346:1;14341:7;;;;;;;;;;;;;;:12;;:33;;;;;14373:1;14357:9;14367:1;14357:12;;;;;;;;;;;;;;:17;;14341:33;14333:42;;;;;;14412:4;14417:1;14412:7;;;;;;;;;;;;;;14390:5;:15;14396:5;14402:1;14396:8;;;;;;;;;;;;;;14390:15;;;;;;;;;;;;;;;:19;;:29;;;;14461:9;14471:1;14461:12;;;;;;;;;;;;;;14434:5;:15;14440:5;14446:1;14440:8;;;;;;;;;;;;;;14434:15;;;;;;;;;;;;;;;:24;;:39;;;;14531:25;14557:1;14531:28;;;;;;;;;;;;;;14488:5;:15;14494:5;14500:1;14494:8;;;;;;;;;;;;;;14488:15;;;;;;;;;;;;;;;:40;;:71;;;;14617:25;14643:1;14617:28;;;;;;;;;;;;;;14574:5;:15;14580:5;14586:1;14580:8;;;;;;;;;;;;;;14574:15;;;;;;;;;;;;;;;:40;;:71;;;;14314:3;;;;;;;14280:377;;;;14685:14;14669:13;:30;;;;13984:723;;;;;;:::o;11508:1440::-;11615:5;11622:8;8360:21;8392:5;8360:38;;8452:10;8417:45;;:13;:21;;;8439:8;8417:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8417:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8417:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8417:31:0;;;;;;;;;:45;;;8409:54;;;;;;11694:6;11651:5;:12;11657:5;11651:12;;;;;;;;;;;;;;;:23;;:33;11675:8;11651:33;;;;;;;;;;;:39;;;:49;;11643:58;;;;;;11712:12;11727:48;11736:5;11743:8;11753:6;11761:13;11727:8;:48::i;:::-;11712:63;;11794:5;;;;;;;;;;;:18;;;11813:10;11833:4;11840;11794:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11794:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11794:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11794:51:0;;;;;;;;;11786:60;;;;;;11859:22;11884:48;11901:5;11908:8;11918:13;11884:16;:48::i;:::-;11859:73;;11943:8;12008:6;11966:5;:12;11972:5;11966:12;;;;;;;;;;;;;;;:23;;:33;11990:8;11966:33;;;;;;;;;;;:39;;;:48;11962:845;;;12037:66;12044:5;12051:51;12062:5;:12;12068:5;12062:12;;;;;;;;;;;;;;;:23;;:33;12086:8;12062:33;;;;;;;;;;;:39;;;12051:6;:10;;:51;;;;:::i;:::-;12037:6;:66::i;:::-;12031:72;;12118:16;12137:21;12144:5;12151:6;12137;:21::i;:::-;12118:40;;12219:1;12176:5;:12;12182:5;12176:12;;;;;;;;;;;;;;;:23;;:33;12200:8;12176:33;;;;;;;;;;;:39;;;:44;:75;;;;;12230:5;:12;12236:5;12230:12;;;;;;;;;;;;;;;:21;;;12224:3;:27;12176:75;12173:480;;;12280:5;:12;12286:5;12280:12;;;;;;;;;;;;;;;:21;;;12274:27;;12173:480;;;12368:1;12326:5;:12;12332:5;12326:12;;;;;;;;;;;;;;;:23;;:33;12350:8;12326:33;;;;;;;;;;;:39;;;:43;:79;;;;;12384:5;:12;12390:5;12384:12;;;;;;;;;;;;;;;:21;;;12373:8;:32;12326:79;12323:330;;;12434:1;12428:7;;12323:330;;;12510:5;:12;12516:5;12510:12;;;;;;;;;;;;;;;:23;;:33;12534:8;12510:33;;;;;;;;;;;:37;;;12479:28;12492:14;12479:8;:12;;:28;;;;:::i;:::-;:68;12476:161;;;12555:1;12549:7;;12476:161;;;12586:51;12599:5;:12;12605:5;12599:12;;;;;;;;;;;;;;;:23;;:33;12623:8;12599:33;;;;;;;;;;;:37;;;12586:8;:12;;:51;;;;:::i;:::-;12580:57;;12476:161;12323:330;12173:480;12673:46;12681:5;:12;12687:5;12681:12;;;;;;;;;;;;;;;:23;;:33;12705:8;12681:33;;;;;;;;;;;:37;;;12673:3;:7;;:46;;;;:::i;:::-;12667:52;;11962:845;;;;12758:5;:12;12764:5;12758:12;;;;;;;;;;;;;;;:23;;:33;12782:8;12758:33;;;;;;;;;;;:37;;;12752:43;;11962:845;12819:53;12828:5;12835:8;12845:6;12853:3;12858:13;12819:8;:53::i;:::-;12888:52;12898:5;12905:8;12915:6;12923:13;12938:1;12888:52;;;;;;;;;;;;;;;;;;;8474:1;;;11508:1440;;;;;;;:::o;17212:143::-;8260:10;;;;;;;;;;;8246:24;;:10;:24;;;8238:33;;;;;;17310:1;17290:22;;:8;:22;;;;17282:31;;;;;;17337:8;17324:10;;:21;;;;;;;;;;;;;;;;;;17212:143;:::o;7397:607::-;7474:19;7495:14;7511:12;7525:18;7556:21;7588:5;7556:38;;7643:5;:12;7649:5;7643:12;;;;;;;;;;;;;;;:23;;:33;7667:8;7643:33;;;;;;;;;;;:44;;;;;;;;;;;;7608:79;;:13;:21;;;7630:8;7608:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7608:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7608:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7608:31:0;;;;;;;;;:79;;;;:140;;;;;7743:4;7700:48;;:13;:21;;;7722:8;7700:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7700:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7700:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7700:31:0;;;;;;;;;:48;;;;7608:140;7605:172;;;7750:27;7761:5;7768:8;7750:10;:27::i;:::-;7605:172;7796:5;:12;7802:5;7796:12;;;;;;;;;;;;;;;:23;;:33;7820:8;7796:33;;;;;;;;;;;:44;;;;;;;;;;;;7851:5;:12;7857:5;7851:12;;;;;;;;;;;;;;;:23;;:33;7875:8;7851:33;;;;;;;;;;;:39;;;7901:5;:12;7907:5;7901:12;;;;;;;;;;;;;;;:23;;:33;7925:8;7901:33;;;;;;;;;;;:37;;;7949:5;:12;7955:5;7949:12;;;;;;;;;;;;;;;:23;;:33;7973:8;7949:33;;;;;;;;;;;:46;;;7788:208;;;;;;;;;;;;7397:607;;;;;;;:::o;17363:527::-;17434:21;17466:5;17434:38;;17537:4;17491:51;;:13;:25;;;17517:7;17491:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17491:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17491:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17491:34:0;;;;;;;;;:51;;;17483:60;;;;;;17603:1;17562:5;:12;17568:5;17562:12;;;;;;;;;;;;;;;:23;;:32;17586:7;17562:32;;;;;;;;;;;:38;;;:42;17554:51;;;;;;17624:5;;;;;;;;;;;:18;;;17643:10;17655:5;:12;17661:5;17655:12;;;;;;;;;;;;;;;:23;;:32;17679:7;17655:32;;;;;;;;;;;:43;;;;;;;;;;;;17700:5;:12;17706:5;17700:12;;;;;;;;;;;;;;;:23;;:32;17724:7;17700:32;;;;;;;;;;;:38;;;17624:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17624:115:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17624:115:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17624:115:0;;;;;;;;;17616:124;;;;;;17753:13;:26;;;17780:5;:12;17786:5;17780:12;;;;;;;;;;;;;;;:23;;:32;17804:7;17780:32;;;;;;;;;;;:43;;;;;;;;;;;;17825:10;17837:7;17753:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17753:92:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17753:92:0;;;;17856:26;17867:5;17874:7;17856:10;:26::i;:::-;17363:527;;;:::o;16153:247::-;8260:10;;;;;;;;;;;8246:24;;:10;:24;;;8238:33;;;;;;16217:6;16226:1;16217:10;;16213:137;16232:8;:15;;;;16229:1;:18;16213:137;;;16269:13;16285:8;16294:1;16285:11;;;;;;;;;;;;;;;;;;;;;;;;;16269:27;;16311;16332:5;16311:20;:27::i;:::-;16213:137;16249:3;;;;;;;16213:137;;;;16360:32;16378:4;16370:21;;;16360:9;:32::i;:::-;16153:247::o;5602:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2669:192::-;2466:5;;;;;;;;;;;2452:19;;:10;:19;;;2444:28;;;;;;2770:1;2750:22;;:8;:22;;;;2742:31;;;;;;2817:8;2789:37;;2810:5;;;;;;;;;;;2789:37;;;;;;;;;;;;2845:8;2837:5;;:16;;;;;;;;;;;;;;;;;;2669:192;:::o;4699:106::-;;;;;;;;;;;;;:::o;160:433::-;218:7;467:1;462;:6;458:47;;;492:1;485:8;;;;458:47;517:9;533:1;529;:5;517:17;;562:1;557;553;:5;;;;;;:10;545:19;;;;;;584:1;577:8;;;160:433;;;;;:::o;716:294::-;774:7;806:1;802;:5;794:14;;;;;;877:9;893:1;889;:5;;;;;;877:17;;1001:1;994:8;;;716:294;;;;:::o;14811:198::-;14908:6;14874:5;;;;;;;;;;;:15;;;14898:4;14874:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14874:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14874:30:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14874:30:0;;;;;;;;;:40;;14866:49;;;;;;14938:1;14929:6;:10;14926:76;;;14956:5;;;;;;;;;;;:14;;;14971:10;14983:6;14956:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14956:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14956:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14956:34:0;;;;;;;;;;14926:76;14811:198;:::o;1362:150::-;1420:7;1440:9;1456:1;1452;:5;1440:17;;1481:1;1476;:6;;1468:15;;;;;;1503:1;1496:8;;;1362:150;;;;:::o;1136:::-;1194:7;1227:1;1222;:6;;1214:15;;;;;;1240:9;1256:1;1252;:5;1240:17;;1277:1;1270:8;;;1136:150;;;;:::o;19374:393::-;19482:26;;;;;;;;19496:1;19482:26;;;;;;19500:1;19482:26;;;;19503:1;19482:26;;;;19506:1;19482:26;;;19446:5;:12;19452:5;19446:12;;;;;;;;;;;;;;;:23;;:33;19470:8;19446:33;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19524:7;19534:1;19524:11;;19519:197;19541:5;:12;19547:5;19541:12;;;;;;;;;;;;;;;:24;;:31;;;;19537:1;:35;;;19519:197;;;19629:8;19598:5;:12;19604:5;19598:12;;;;;;;;;;;;;;;:24;;19623:1;19598:27;;;;;;;;;;;;;;;;;;:39;19594:111;;;19658:31;19680:5;19687:1;19658:31;;:21;:31::i;:::-;19594:111;19574:3;;;;;;;19519:197;;;;19731:28;19743:5;19750:8;19731:28;;;;;;;;;;;;;;;;19374:393;;:::o;9149:444::-;9306:46;;;;;;;;9312:10;9306:46;;;;;;9324:6;9306:46;;;;9332:4;9306:46;;;;9338:13;9306:46;;;9270:5;:12;9276:5;9270:12;;;;;;;;;;;;;;;:23;;:33;9294:8;9270:33;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9363:5;:12;9369:5;9363:12;;;;;;;;;;;;;;;:24;;9393:8;9363:39;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;9363:39:0;;;;;;;;;;;;;;;;;;;;;;9413:9;9425:5;9413:17;;9445:6;9454:1;9445:10;;9441:104;9460:8;:15;;;;9457:1;:18;9441:104;;;9515:5;9500:20;;:8;9509:1;9500:11;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;9497:36;;;9529:4;9522:11;;9497:36;9477:3;;;;;;;9441:104;;;;9559:4;9555:30;;9565:8;9579:5;9565:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;9565:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9555:30;9149:444;;;;;;:::o;15890:257::-;15954:28;15985:5;:12;15991:5;15985:12;;;;;;;;;;;;;;;:24;;15954:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16025:6;16034:1;16025:10;;16020:118;16041:11;:18;16037:1;:22;16020:118;;;16081:45;16104:5;16111:11;16123:1;16111:14;;;;;;;;;;;;;;16081:22;:45::i;:::-;16061:3;;;;;;;16020:118;;;;15890:257;;:::o;18943:423::-;19038:5;:12;19044:5;19038:12;;;;;;;;;;;;;;;:24;;:31;;;;19029:5;:40;19025:53;;19071:7;;19025:53;19095:6;19104:5;19095:14;;19090:148;19145:1;19113:5;:12;19119:5;19113:12;;;;;;;;;;;;;;;:24;;:31;;;;:33;19111:1;:35;19090:148;;;19197:5;:12;19203:5;19197:12;;;;;;;;;;;;;;;:24;;19224:1;19222;:3;19197:29;;;;;;;;;;;;;;;;19167:5;:12;19173:5;19167:12;;;;;;;;;;;;;;;:24;;19192:1;19167:27;;;;;;;;;;;;;;;:59;;;;19148:3;;;;;;;19090:148;;;;19255:5;:12;19261:5;19255:12;;;;;;;;;;;;;;;:24;;19312:1;19280:5;:12;19286:5;19280:12;;;;;;;;;;;;;;;:24;;:31;;;;:33;19255:59;;;;;;;;;;;;;;;19248:66;;;19325:5;:12;19331:5;19325:12;;;;;;;;;;;;;;;:24;;:33;;;;;;;;;;;;:::i;:::-;;18943:423;;;:::o;15017:865::-;15101:21;15133:5;15101:38;;15202:13;:21;;;15224:8;15202:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15202:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15202:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15202:31:0;;;;;;;;;15154:79;;:5;:12;15160:5;15154:12;;;;;;;;;;;;;;;:23;;:33;15178:8;15154:33;;;;;;;;;;;:44;;;;;;;;;;;;:79;;;:153;;;;15302:4;15246:61;;:5;:12;15252:5;15246:12;;;;;;;;;;;;;;;:23;;:33;15270:8;15246:33;;;;;;;;;;;:44;;;;;;;;;;;;:61;;;15154:153;15150:725;;;15326:14;15343:5;:12;15349:5;15343:12;;;;;;;;;;;;;;;:23;;:33;15367:8;15343:33;;;;;;;;;;;:37;;;15326:54;;15448:1;15398:5;:12;15404:5;15398:12;;;;;;;;;;;;;;;:23;;:33;15422:8;15398:33;;;;;;;;;;;:46;;;:51;15395:90;;;15460:25;15471:13;;15460:6;:10;;:25;;;;:::i;:::-;15451:34;;15395:90;15513:1;15504:6;:10;:54;;;;;15552:6;15518:5;;;;;;;;;;;:15;;;15542:4;15518:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15518:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15518:30:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15518:30:0;;;;;;;;;:40;;15504:54;15500:163;;;15579:5;;;;;;;;;;;:14;;;15594:5;:12;15600:5;15594:12;;;;;;;;;;;;;;;:23;;:33;15618:8;15594:33;;;;;;;;;;;:44;;;;;;;;;;;;15640:6;15579:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15579:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15579:68:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15579:68:0;;;;;;;;;;15500:163;15736:4;15680:61;;:5;:12;15686:5;15680:12;;;;;;;;;;;;;;;:23;;:33;15704:8;15680:33;;;;;;;;;;;:44;;;;;;;;;;;;:61;;;15677:144;;;15743:13;:22;;;15766:5;:12;15772:5;15766:12;;;;;;;;;;;;;;;:23;;:33;15790:8;15766:33;;;;;;;;;;;:44;;;;;;;;;;;;15812:8;15743:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15743:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15743:78:0;;;;15677:144;15836:27;15847:5;15854:8;15836:10;:27::i;:::-;15150:725;;15017:865;;;:::o;4544:15226::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;301:707;;418:3;411:4;403:6;399:17;395:27;385:2;;436:1;433;426:12;385:2;473:6;460:20;495:80;510:64;567:6;510:64;;;495:80;;;486:89;;592:5;617:6;610:5;603:21;647:4;639:6;635:17;625:27;;669:4;664:3;660:14;653:21;;722:6;769:3;761:4;753:6;749:17;744:3;740:27;737:36;734:2;;;786:1;783;776:12;734:2;811:1;796:206;821:6;818:1;815:13;796:206;;;879:3;901:37;934:3;922:10;901:37;;;896:3;889:50;962:4;957:3;953:14;946:21;;990:4;985:3;981:14;974:21;;853:149;843:1;840;836:9;831:14;;796:206;;;800:14;378:630;;;;;;;;1034:707;;1151:3;1144:4;1136:6;1132:17;1128:27;1118:2;;1169:1;1166;1159:12;1118:2;1206:6;1193:20;1228:80;1243:64;1300:6;1243:64;;;1228:80;;;1219:89;;1325:5;1350:6;1343:5;1336:21;1380:4;1372:6;1368:17;1358:27;;1402:4;1397:3;1393:14;1386:21;;1455:6;1502:3;1494:4;1486:6;1482:17;1477:3;1473:27;1470:36;1467:2;;;1519:1;1516;1509:12;1467:2;1544:1;1529:206;1554:6;1551:1;1548:13;1529:206;;;1612:3;1634:37;1667:3;1655:10;1634:37;;;1629:3;1622:50;1695:4;1690:3;1686:14;1679:21;;1723:4;1718:3;1714:14;1707:21;;1586:149;1576:1;1573;1569:9;1564:14;;1529:206;;;1533:14;1111:630;;;;;;;;1749:128;;1830:6;1824:13;1815:22;;1842:30;1866:5;1842:30;;;1809:68;;;;;1884:130;;1964:6;1951:20;1942:29;;1976:33;2003:5;1976:33;;;1936:78;;;;;2021:134;;2105:6;2099:13;2090:22;;2117:33;2144:5;2117:33;;;2084:71;;;;;2162:241;;2266:2;2254:9;2245:7;2241:23;2237:32;2234:2;;;2282:1;2279;2272:12;2234:2;2317:1;2334:53;2379:7;2370:6;2359:9;2355:22;2334:53;;;2324:63;;2296:97;2228:175;;;;;2410:263;;2525:2;2513:9;2504:7;2500:23;2496:32;2493:2;;;2541:1;2538;2531:12;2493:2;2576:1;2593:64;2649:7;2640:6;2629:9;2625:22;2593:64;;;2583:74;;2555:108;2487:186;;;;;2680:366;;;2801:2;2789:9;2780:7;2776:23;2772:32;2769:2;;;2817:1;2814;2807:12;2769:2;2852:1;2869:53;2914:7;2905:6;2894:9;2890:22;2869:53;;;2859:63;;2831:97;2959:2;2977:53;3022:7;3013:6;3002:9;2998:22;2977:53;;;2967:63;;2938:98;2763:283;;;;;;3053:491;;;;3191:2;3179:9;3170:7;3166:23;3162:32;3159:2;;;3207:1;3204;3197:12;3159:2;3242:1;3259:53;3304:7;3295:6;3284:9;3280:22;3259:53;;;3249:63;;3221:97;3349:2;3367:53;3412:7;3403:6;3392:9;3388:22;3367:53;;;3357:63;;3328:98;3457:2;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;;;3465:63;;3436:98;3153:391;;;;;;3551:617;;;;;3706:3;3694:9;3685:7;3681:23;3677:33;3674:2;;;3723:1;3720;3713:12;3674:2;3758:1;3775:53;3820:7;3811:6;3800:9;3796:22;3775:53;;;3765:63;;3737:97;3865:2;3883:53;3928:7;3919:6;3908:9;3904:22;3883:53;;;3873:63;;3844:98;3973:2;3991:53;4036:7;4027:6;4016:9;4012:22;3991:53;;;3981:63;;3952:98;4081:2;4099:53;4144:7;4135:6;4124:9;4120:22;4099:53;;;4089:63;;4060:98;3668:500;;;;;;;;4175:869;;;;;;;4364:3;4352:9;4343:7;4339:23;4335:33;4332:2;;;4381:1;4378;4371:12;4332:2;4416:1;4433:53;4478:7;4469:6;4458:9;4454:22;4433:53;;;4423:63;;4395:97;4523:2;4541:53;4586:7;4577:6;4566:9;4562:22;4541:53;;;4531:63;;4502:98;4631:2;4649:53;4694:7;4685:6;4674:9;4670:22;4649:53;;;4639:63;;4610:98;4739:2;4757:53;4802:7;4793:6;4782:9;4778:22;4757:53;;;4747:63;;4718:98;4847:3;4866:53;4911:7;4902:6;4891:9;4887:22;4866:53;;;4856:63;;4826:99;4956:3;4975:53;5020:7;5011:6;5000:9;4996:22;4975:53;;;4965:63;;4935:99;4326:718;;;;;;;;;5051:1549;;;;;;;5365:3;5353:9;5344:7;5340:23;5336:33;5333:2;;;5382:1;5379;5372:12;5333:2;5445:1;5434:9;5430:17;5417:31;5468:18;5460:6;5457:30;5454:2;;;5500:1;5497;5490:12;5454:2;5520:78;5590:7;5581:6;5570:9;5566:22;5520:78;;;5510:88;;5396:208;5663:2;5652:9;5648:18;5635:32;5687:18;5679:6;5676:30;5673:2;;;5719:1;5716;5709:12;5673:2;5739:78;5809:7;5800:6;5789:9;5785:22;5739:78;;;5729:88;;5614:209;5882:2;5871:9;5867:18;5854:32;5906:18;5898:6;5895:30;5892:2;;;5938:1;5935;5928:12;5892:2;5958:78;6028:7;6019:6;6008:9;6004:22;5958:78;;;5948:88;;5833:209;6073:2;6091:53;6136:7;6127:6;6116:9;6112:22;6091:53;;;6081:63;;6052:98;6209:3;6198:9;6194:19;6181:33;6234:18;6226:6;6223:30;6220:2;;;6266:1;6263;6256:12;6220:2;6286:78;6356:7;6347:6;6336:9;6332:22;6286:78;;;6276:88;;6160:210;6429:3;6418:9;6414:19;6401:33;6454:18;6446:6;6443:30;6440:2;;;6486:1;6483;6476:12;6440:2;6506:78;6576:7;6567:6;6556:9;6552:22;6506:78;;;6496:88;;6380:210;5327:1273;;;;;;;;;6607:257;;6719:2;6707:9;6698:7;6694:23;6690:32;6687:2;;;6735:1;6732;6725:12;6687:2;6770:1;6787:61;6840:7;6831:6;6820:9;6816:22;6787:61;;;6777:71;;6749:105;6681:183;;;;;6871:241;;6975:2;6963:9;6954:7;6950:23;6946:32;6943:2;;;6991:1;6988;6981:12;6943:2;7026:1;7043:53;7088:7;7079:6;7068:9;7064:22;7043:53;;;7033:63;;7005:97;6937:175;;;;;7119:263;;7234:2;7222:9;7213:7;7209:23;7205:32;7202:2;;;7250:1;7247;7240:12;7202:2;7285:1;7302:64;7358:7;7349:6;7338:9;7334:22;7302:64;;;7292:74;;7264:108;7196:186;;;;;7390:173;;7477:46;7519:3;7511:6;7477:46;;;7552:4;7547:3;7543:14;7529:28;;7470:93;;;;;7571:142;7662:45;7701:5;7662:45;;;7657:3;7650:58;7644:69;;;7720:103;7793:24;7811:5;7793:24;;;7788:3;7781:37;7775:48;;;7830:113;7913:24;7931:5;7913:24;;;7908:3;7901:37;7895:48;;;7981:690;;8126:54;8174:5;8126:54;;;8193:86;8272:6;8267:3;8193:86;;;8186:93;;8300:56;8350:5;8300:56;;;8376:7;8404:1;8389:260;8414:6;8411:1;8408:13;8389:260;;;8481:6;8475:13;8502:63;8561:3;8546:13;8502:63;;;8495:70;;8582:60;8635:6;8582:60;;;8572:70;;8446:203;8436:1;8433;8429:9;8424:14;;8389:260;;;8393:14;8662:3;8655:10;;8105:566;;;;;;;;8679:180;8789:64;8847:5;8789:64;;;8784:3;8777:77;8771:88;;;8866:138;8955:43;8992:5;8955:43;;;8950:3;8943:56;8937:67;;;9011:113;9094:24;9112:5;9094:24;;;9089:3;9082:37;9076:48;;;9131:213;;9249:2;9238:9;9234:18;9226:26;;9263:71;9331:1;9320:9;9316:17;9307:6;9263:71;;;9220:124;;;;;9351:229;;9477:2;9466:9;9462:18;9454:26;;9491:79;9567:1;9556:9;9552:17;9543:6;9491:79;;;9448:132;;;;;9587:467;;9777:2;9766:9;9762:18;9754:26;;9791:79;9867:1;9856:9;9852:17;9843:6;9791:79;;;9881:80;9957:2;9946:9;9942:18;9933:6;9881:80;;;9972:72;10040:2;10029:9;10025:18;10016:6;9972:72;;;9748:306;;;;;;;10061:451;;10243:2;10232:9;10228:18;10220:26;;10257:79;10333:1;10322:9;10318:17;10309:6;10257:79;;;10347:72;10415:2;10404:9;10400:18;10391:6;10347:72;;;10430;10498:2;10487:9;10483:18;10474:6;10430:72;;;10214:298;;;;;;;10519:340;;10673:2;10662:9;10658:18;10650:26;;10687:79;10763:1;10752:9;10748:17;10739:6;10687:79;;;10777:72;10845:2;10834:9;10830:18;10821:6;10777:72;;;10644:215;;;;;;10866:324;;11012:2;11001:9;10997:18;10989:26;;11026:71;11094:1;11083:9;11079:17;11070:6;11026:71;;;11108:72;11176:2;11165:9;11161:18;11152:6;11108:72;;;10983:207;;;;;;11197:547;;11399:3;11388:9;11384:19;11376:27;;11414:71;11482:1;11471:9;11467:17;11458:6;11414:71;;;11496:72;11564:2;11553:9;11549:18;11540:6;11496:72;;;11579;11647:2;11636:9;11632:18;11623:6;11579:72;;;11662;11730:2;11719:9;11715:18;11706:6;11662:72;;;11370:374;;;;;;;;11751:671;;11987:3;11976:9;11972:19;11964:27;;12002:71;12070:1;12059:9;12055:17;12046:6;12002:71;;;12084:72;12152:2;12141:9;12137:18;12128:6;12084:72;;;12167;12235:2;12224:9;12220:18;12211:6;12167:72;;;12250;12318:2;12307:9;12303:18;12294:6;12250:72;;;12333:79;12407:3;12396:9;12392:19;12383:6;12333:79;;;11958:464;;;;;;;;;12429:361;;12597:2;12586:9;12582:18;12574:26;;12647:9;12641:4;12637:20;12633:1;12622:9;12618:17;12611:47;12672:108;12775:4;12766:6;12672:108;;;12664:116;;12568:222;;;;;12797:267;;12942:2;12931:9;12927:18;12919:26;;12956:98;13051:1;13040:9;13036:17;13027:6;12956:98;;;12913:151;;;;;13071:213;;13189:2;13178:9;13174:18;13166:26;;13203:71;13271:1;13260:9;13256:17;13247:6;13203:71;;;13160:124;;;;;13291:547;;13493:3;13482:9;13478:19;13470:27;;13508:71;13576:1;13565:9;13561:17;13552:6;13508:71;;;13590:72;13658:2;13647:9;13643:18;13634:6;13590:72;;;13673;13741:2;13730:9;13726:18;13717:6;13673:72;;;13756;13824:2;13813:9;13809:18;13800:6;13756:72;;;13464:374;;;;;;;;13845:256;;13907:2;13901:9;13891:19;;13945:4;13937:6;13933:17;14044:6;14032:10;14029:22;14008:18;13996:10;13993:34;13990:62;13987:2;;;14065:1;14062;14055:12;13987:2;14085:10;14081:2;14074:22;13885:216;;;;;14108:304;;14267:18;14259:6;14256:30;14253:2;;;14299:1;14296;14289:12;14253:2;14334:4;14326:6;14322:17;14314:25;;14397:4;14391;14387:15;14379:23;;14190:222;;;;14419:304;;14578:18;14570:6;14567:30;14564:2;;;14610:1;14607;14600:12;14564:2;14645:4;14637:6;14633:17;14625:25;;14708:4;14702;14698:15;14690:23;;14501:222;;;;14730:151;;14816:3;14808:11;;14854:4;14849:3;14845:14;14837:22;;14802:79;;;;14888:137;;14997:5;14991:12;14981:22;;14962:63;;;;15032:108;;15130:4;15125:3;15121:14;15113:22;;15107:33;;;;15148:178;;15278:6;15273:3;15266:19;15315:4;15310:3;15306:14;15291:29;;15259:67;;;;;15334:91;;15396:24;15414:5;15396:24;;;15385:35;;15379:46;;;;15432:85;;15505:5;15498:13;15491:21;15480:32;;15474:43;;;;15524:121;;15597:42;15590:5;15586:54;15575:65;;15569:76;;;;15652:72;;15714:5;15703:16;;15697:27;;;;15731:81;;15802:4;15795:5;15791:16;15780:27;;15774:38;;;;15819:129;;15906:37;15937:5;15906:37;;;15893:50;;15887:61;;;;15955:175;;16061:64;16119:5;16061:64;;;16048:77;;16042:88;;;;16137:135;;16243:24;16261:5;16243:24;;;16230:37;;16224:48;;;;16279:112;;16364:22;16380:5;16364:22;;;16351:35;;16345:46;;;;16398:121;;16477:37;16508:5;16477:37;;;16464:50;;16458:61;;;;16526:108;;16605:24;16623:5;16605:24;;;16592:37;;16586:48;;;;16641:117;16710:24;16728:5;16710:24;;;16703:5;16700:35;16690:2;;16749:1;16746;16739:12;16690:2;16684:74;;16765:111;16831:21;16846:5;16831:21;;;16824:5;16821:32;16811:2;;16867:1;16864;16857:12;16811:2;16805:71;;16883:117;16952:24;16970:5;16952:24;;;16945:5;16942:35;16932:2;;16991:1;16988;16981:12;16932:2;16926:74;

Swarm Source

bzzr://1c0dcbc29ada9ee4c8eae148305e11d635bd79f4ba74cde1d219c105e0180e8b

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  ]

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.