ETH Price: $2,771.93 (+3.48%)

Contract

0x182C73DcE8595803DCdCBCb681e96dc5756a44A2
 

Overview

ETH Balance

0.149941690000000002 ETH

Eth Value

$415.63 (@ $2,771.93/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Seller Cancel94340092020-02-07 6:38:331842 days ago1581057513IN
0x182C73Dc...5756a44A2
0 ETH0.0011619736
Create Escrow94296052020-02-06 14:19:431843 days ago1580998783IN
0x182C73Dc...5756a44A2
0.0356612 ETH0.00073835
Relese Funds93819602020-01-30 6:38:291850 days ago1580366309IN
0x182C73Dc...5756a44A2
0 ETH0.0020656836
Disable Seller C...93819492020-01-30 6:36:111850 days ago1580366171IN
0x182C73Dc...5756a44A2
0.00025 ETH0.000063742
Create Escrow93819242020-01-30 6:30:401850 days ago1580365840IN
0x182C73Dc...5756a44A2
0.05025 ETH0.000288042
Seller Cancel93818732020-01-30 6:18:551850 days ago1580365135IN
0x182C73Dc...5756a44A2
0 ETH0.0011617536
Create Escrow93706332020-01-28 12:47:581852 days ago1580215678IN
0x182C73Dc...5756a44A2
0.05025 ETH0.000288042
Relese Funds93706002020-01-28 12:41:061852 days ago1580215266IN
0x182C73Dc...5756a44A2
0 ETH0.0020684136
Disable Seller C...93705902020-01-28 12:39:461852 days ago1580215186IN
0x182C73Dc...5756a44A2
0.00025 ETH0.000063742
Create Escrow93705582020-01-28 12:32:511852 days ago1580214771IN
0x182C73Dc...5756a44A2
0.05025 ETH0.000590594
Seller Cancel93434122020-01-24 8:24:581856 days ago1579854298IN
0x182C73Dc...5756a44A2
0 ETH0.0013401336
Relese Funds93434032020-01-24 8:23:041856 days ago1579854184IN
0x182C73Dc...5756a44A2
0 ETH0.0028328736
Seller Cancel93433682020-01-24 8:16:461856 days ago1579853806IN
0x182C73Dc...5756a44A2
0 ETH0.0009318936
Relese Funds93372932020-01-23 10:07:231857 days ago1579774043IN
0x182C73Dc...5756a44A2
0 ETH0.0021305136
Disable Seller C...93372842020-01-23 10:05:281857 days ago1579773928IN
0x182C73Dc...5756a44A2
0.00000002 ETH0.000255278
Create Escrow93372782020-01-23 10:04:161857 days ago1579773856IN
0x182C73Dc...5756a44A2
0.00000002 ETH0.00122768
Relese Funds93258162020-01-21 16:02:031859 days ago1579622523IN
0x182C73Dc...5756a44A2
0 ETH0.0021313836
Disable Seller C...93257722020-01-21 15:53:251859 days ago1579622005IN
0x182C73Dc...5756a44A2
0.00304624 ETH0.000255658
Create Escrow93257662020-01-21 15:52:181859 days ago1579621938IN
0x182C73Dc...5756a44A2
0.00304624 ETH0.001011276
Relese Funds93256292020-01-21 15:22:171859 days ago1579620137IN
0x182C73Dc...5756a44A2
0 ETH0.001970236
Disable Seller C...93256242020-01-21 15:21:361859 days ago1579620096IN
0x182C73Dc...5756a44A2
0.00028025 ETH0.000093762
Create Escrow93255432020-01-21 15:05:011859 days ago1579619101IN
0x182C73Dc...5756a44A2
0.05633095 ETH0.001152278
Create Escrow93255002020-01-21 14:57:211859 days ago1579618641IN
0x182C73Dc...5756a44A2
0.1005 ETH0.001306068
Relese Funds93245792020-01-21 11:29:231859 days ago1579606163IN
0x182C73Dc...5756a44A2
0 ETH0.0020686336
Disable Seller C...93245712020-01-21 11:26:501859 days ago1579606010IN
0x182C73Dc...5756a44A2
0.0005 ETH0.000063762
View all transactions

Latest 12 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
94340092020-02-07 6:38:331842 days ago1581057513
0x182C73Dc...5756a44A2
0.03548378 ETH
93819602020-01-30 6:38:291850 days ago1580366309
0x182C73Dc...5756a44A2
0.04975 ETH
93818732020-01-30 6:18:551850 days ago1580365135
0x182C73Dc...5756a44A2
0.05 ETH
93706002020-01-28 12:41:061852 days ago1580215266
0x182C73Dc...5756a44A2
0.04975 ETH
93256292020-01-21 15:22:171859 days ago1579620137
0x182C73Dc...5756a44A2
0.05577045 ETH
93245792020-01-21 11:29:231859 days ago1579606163
0x182C73Dc...5756a44A2
0.0995 ETH
92715502020-01-13 8:35:121867 days ago1578904512
0x182C73Dc...5756a44A2
0.0995 ETH
91767482019-12-28 17:00:171883 days ago1577552417
0x182C73Dc...5756a44A2
0.0995 ETH
91767232019-12-28 16:53:591883 days ago1577552039
0x182C73Dc...5756a44A2
0.1 ETH
91767082019-12-28 16:51:231883 days ago1577551883
0x182C73Dc...5756a44A2
0.0995 ETH
91696842019-12-27 7:27:041884 days ago1577431624
0x182C73Dc...5756a44A2
0.05980834 ETH
91650712019-12-26 9:25:201885 days ago1577352320
0x182C73Dc...5756a44A2
0.05832347 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Future1exchange

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2019-12-21
*/

pragma solidity ^0.5.12;

contract Token {
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
    function allowance(address _owner, address _spender)external view returns(uint256);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
    
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}


contract Future1exchange {
    
    using SafeMath for uint256;
    
    address public owner;
    address public feeAddress;
    uint32 public requestCancelMinimumTime;
    uint256 public referPercent;
    
    // events ---
    event Created(bytes32 _tradeHash);
    event SellerCancelDisabled(bytes32 _tradeHash);
    event SellerRequestedCancel(bytes32 _tradeHash);
    event CancelledBySeller(bytes32 _tradeHash);
    event CancelledByBuyer(bytes32 _tradeHash);
    event Released(bytes32 _tradeHash);
    event DisputeResolved(bytes32 _tradeHash);

    constructor (address feeadd) public {
        owner = msg.sender;
        feeAddress = feeadd;
        requestCancelMinimumTime = 2 hours;
    }

    struct Escrow {
        bool escrowStatus;
        uint256 setTimeSellerCancel;
        uint256 sellerFee;
        uint256 buyerFee;
        uint256 eType;
        bool sellerDispute;
        bool buyerDispute;
    }
    
     struct User{
        address userAddr;
        address referralAddr;
        address referralTokenAddr;
        uint256 referralType;
        bool registerStatus;
    }
    
    mapping(address => User) public referral_map;
    mapping(bytes32 => Escrow) public escrow_map;
    mapping (address => mapping(address => uint256)) public _token;
    mapping(address => mapping(address => uint256)) public _referralFee;
    
    
    modifier onlyOwner() {
        require(msg.sender == owner, "This function is  only called by Owner..");
        _;
    }
    
    /** @dev external - Set the new owner address, only called by current owner.
     * @param _newOwner - The new owner address.
     */
    function setOwner(address _newOwner) onlyOwner external {
        require(_newOwner != address(0), "Invalid Address");
        owner = _newOwner;
    }
    
    /** @dev external - Set the new fee address, only called by  owner.
     * @param _newFeeAddress - The new fee address.
     */
    function setFeeAddress(address _newFeeAddress) onlyOwner external {
        require(_newFeeAddress != address(0), "Invalid Address");
        feeAddress = _newFeeAddress;
    }
    
    /** @dev external - Set the new owner address, only called by  owner.
     * @param _newRequestCancelMinimumTime - The new time for requestCancel.
     */
    function setRequestCancellationMinimumTime(uint32 _newRequestCancelMinimumTime) onlyOwner external {
        requestCancelMinimumTime = _newRequestCancelMinimumTime;
    }
    
    /** @dev external - Set the new owner address, only called by  owner.
     * @param _feePercent - The new fee percent.
     */
    function setFeePercent(uint256 _feePercent) onlyOwner external {
        require(_feePercent > 0, "Invalid Fee Percent");
        referPercent = _feePercent;
    }
    
    /** @dev external - Collect the referral fee from user.
     * @param _from - The Address who send the fee to the contract for referral.
     * @param _tokenContract - The Token Contract Address which is selected for referrance by _from.
     * @param _amount - The Fee Amount
     * @return bool - true.
     */
    function feeCollect(address _from,address _tokenContract, uint256 _amount) external returns(bool) {
        require(_from != address(0) && _tokenContract != address(0), "Empty Address");
        require(tokenallowance(_tokenContract,_from,address(this)) >= _amount, "Insufficient Allowance");
        Token(_tokenContract).transferFrom(_from,address(this),_amount);
        _referralFee[_from][_tokenContract] = _referralFee[_from][_tokenContract].add(_amount);
        return true;
    }

    /** @dev external - Create the escrow process only call by seller.
     * @param _tradeId - The unique id for particular trade.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _amount - The escrow amount of particular trade is ether/token.
     * @param _tokenContract - The token contract address for token  (or) give address(0) for ether.
     * @param _sellerFee - The seller transaction/admin fee .
     * @param _buyerFee - The buyer transaction/admin fee.
     * @param _type - If the amount is ether it is 1 otherwise it is 2.
     * @param _sellerCancelInSeconds - To time for cancel the trade by seller.
     * @param _Ref[0] - The referral address for seller, _Ref[1] -  The referral address for buyer.
     * @param _Tokens[0] -  The referral token address for seller, _Tokens[1] - The referral token address for buyer.
     * @param _Type[0] - The referral type for seller is 0 - ether / 1 - token, _Type[1] - The referral type for buyer 0 - ether / 1 - token.
     * @return bool - true.
     */
    function createEscrow(uint16 _tradeId, address _seller, address _buyer, uint256 _amount, address _tokenContract, uint256 _sellerFee, uint256 _buyerFee,uint16 _type,uint32 _sellerCancelInSeconds, address[2] calldata _Ref, address[2] calldata _Tokens, uint256[2] calldata _Type)  payable external returns(bool) {
        bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount));
        
        registerUser(_seller,_buyer,_Ref[0],_Ref[1],_Tokens[0],_Tokens[1],_Type[0],_Type[1]); //register
        
        require (msg.sender == _seller,"Invalid User..");
        require (_type==1 || _type == 2, "Invalid Type.. ");
        require(escrow_map[_tradeHash].escrowStatus==false, "Status Checking Failed.. ");
        
        
        if(_Tokens[0] !=  address(0)) {// checking seller referral_token 
            require(_Type[0]==1 && _referralFee[_seller][_Tokens[0]]>0,"Insufficient Fee Balance or type mismatch" );
            
        }
        if(_Tokens[0] ==  address(0) && _type == 2){
            require( _Type[0]==0 && msg.value >= _sellerFee, "Type mismatch or msg.value less then sellerfee"); 
            _referralFee[_seller][_Tokens[0]] += msg.value; //_referralFee[_seller][_Tokens[0]].add(msg.value);
        }
         
        if(_Tokens[0] ==  address(0) && _type == 1){
            require( _Type[0]==0 && msg.value >= _amount.add(_sellerFee), "Type mismatch or msg.value less then sellerfee"); 
            _referralFee[_seller][_Tokens[0]] += _sellerFee; //_referralFee[_seller][_Tokens[0]].add(msg.value);
        }
    
        require(_referralFee[_seller][_Tokens[0]] >= _sellerFee, "Insufficient Fee for this Trade");
        
        if(_type == 1){
            require(_tokenContract == address(0), "Invalid Token Address For this Type");
            require(_amount<=msg.value && msg.value >0, "Invalid Amount..");                  
        }
        
        if(_type == 2){
            Token(_tokenContract).transferFrom(_seller,address(this), _amount);
            
            
        }
        
        uint256 _sellerCancelAfter = _sellerCancelInSeconds == 0 ? 1 : ((now).add(_sellerCancelInSeconds));
        
        escrow_map[_tradeHash].escrowStatus = true;
        escrow_map[_tradeHash].setTimeSellerCancel = _sellerCancelAfter;
        escrow_map[_tradeHash].sellerFee = _sellerFee;
        escrow_map[_tradeHash].buyerFee = _buyerFee;
        escrow_map[_tradeHash].eType = _type;
        
        emit Created(_tradeHash); //event
        return true;
    }
    
    /** @dev private - Register the User for referral process.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _sellrefer - The referral address for seller.
     * @param _buyrefer -  The referral address for buyer.
     * @param _sellerToken -  The referral token address for seller. 
     * @param _buyerToken - The referral token address for buyer.
     * @param _sellerFeeType - The referral type for seller is 0 - ether / 1 - token.
     * @param _buyerFeeType - The referral type for buyer 0 - ether / 1 - token.
     * @return bool - true.
     */
    function registerUser(address _seller, address _buyer,address _sellrefer,address _buyrefer, address _sellerToken, address _buyerToken, uint256 _sellerFeeType, uint256 _buyerFeeType)  private returns(bool) {
        
        //seller
        if(_sellrefer!= address(0)) { // referralAddr checking for referral fee 
            referral_map[_seller].referralAddr =_sellrefer;
            referral_map[_seller].registerStatus =true;
        }
       
        if(_sellerFeeType == 1) {// referral token for admin fee/referral fee
            referral_map[_seller].userAddr = _seller;
            referral_map[_seller].referralTokenAddr = _sellerToken;
            referral_map[_seller].referralType = _sellerFeeType;
        }
        
        else if(_sellerFeeType == 0) {// referral ether for admin fee/referral fee
            referral_map[_seller].userAddr = _seller;
            referral_map[_seller].referralTokenAddr = address(0);
            referral_map[_seller].referralType = _sellerFeeType;
        }

        //buyer
        if(_buyrefer != address(0)) { // referralAddr checking for referral fee
            referral_map[_buyer].referralAddr = _buyrefer;
            referral_map[_buyer].registerStatus =true;
        }
        
        if(_buyerFeeType ==1) {// referral token for admin fee/referral fee
            referral_map[_buyer].userAddr = _buyer;
            referral_map[_buyer].referralTokenAddr = _buyerToken;
            referral_map[_buyer].referralType = _buyerFeeType;
        }
        
        else if(_buyerFeeType == 0) { // referral ether for admin fee/referral fee
            referral_map[_buyer].userAddr = _buyer;
            referral_map[_buyer].referralTokenAddr = address(0);
            referral_map[_buyer].referralType = _buyerFeeType;
        }
        
        return true;
    }
    

    /** @dev external - Withdraw the admin fees collected by the contract. Only the owner can call this .
     * @param _to - The withdrawal address.
     * @param _amount - The withdrawal amount.
     * @param _type - If Ether __type = 1, else _type = 2.
     * @param _tokenContract -  The withdrawal token address.
     */
    function withdrawFees(address payable _to, uint256 _amount,uint16 _type, address _tokenContract) onlyOwner external {
        if(_type == 1) {
            require(_amount <= _token[address(this)][address(0)],"Insufficient ether balance"); 
            _token[address(this)][address(0)] = _token[address(this)][address(0)].sub(_amount);
            _to.transfer(_amount);
        }
        
        else if(_type == 2) {
            require(_amount <= _token[address(this)][_tokenContract],"Insufficient token balance");
            _token[address(this)][_tokenContract] = _token[address(this)][_tokenContract].sub(_amount);
            Token(_tokenContract).transfer(_to,_amount);
        }
    }

    /** @dev external - Withdraw the referral fees  by the seller/buyer/referral address.
     * @param _amount - The withdrawal amount.
     * @param _type - If Ether __type = 1, else _type = 2.
     * @param _tokenContract -  The withdrawal token address.
     * @param _refType - if the new referral token  _refType = 0, if already registered referraltoken _refType = 1
     */
    function withdrawReferral(uint256 _amount,uint16 _type, address _tokenContract, uint256 _refType) external {
        if(_type == 1) { //ether 
            require(_amount <= _referralFee[msg.sender][address(0)], "Insufficient ether balance"); 
            _referralFee[msg.sender][address(0)] =  _referralFee[msg.sender][address(0)].sub(_amount);
            msg.sender.transfer(_amount);
        }
        else if(_type == 2) { //token 
            if(_refType == 0) { // Any user can withdraw their particular token amount 
                require(_amount <=  _referralFee[msg.sender][_tokenContract], "Insufficient token balance");
                _referralFee[ msg.sender][_tokenContract] = _referralFee[ msg.sender][_tokenContract].sub(_amount);
                Token(_tokenContract).transfer( msg.sender,_amount);
                
            }
            else if(_refType == 1) {  // If seller/ buyer comes, withdraw their referral token amount 
                require(_amount <=  _referralFee[msg.sender][referral_map[msg.sender].referralTokenAddr], "Insufficient token balance");
                _referralFee[ msg.sender][referral_map[msg.sender].referralTokenAddr] = _referralFee[ msg.sender][referral_map[msg.sender].referralTokenAddr].sub(_amount);
                Token(referral_map[msg.sender].referralTokenAddr).transfer(msg.sender,_amount);
            }
        }
    }

    /** @dev payable -  After the payment successfull, the buyer clicks mark as paid on that time this function calls.
     * @param _tradeId - The unique id for particular trade.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _amount - The escrow amount of particular trade is ether/token.
     * @return bool - true.
     */
    function disableSellerCancel(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount) payable public returns(bool) {
        bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount));
        require(escrow_map[_tradeHash].escrowStatus == true, "Status Checking Failed.. ");
        require(escrow_map[_tradeHash].setTimeSellerCancel !=0,  "Seller Cancel time is Differ.. ");
        require(msg.sender == _buyer, "Invalid User.. ");
        
        if(referral_map[_buyer].referralTokenAddr !=  address(0)) { // checking buyer referral_token 
            require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr]>0,"Insufficient Fee Balance.." );
        }
        
        if(referral_map[_buyer].referralTokenAddr ==  address(0) && (escrow_map[_tradeHash].eType == 2)) {
            require(msg.value >= escrow_map[_tradeHash].buyerFee, "Need more deposit amount for fee");
            _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].add(msg.value);
        }
        
        if(referral_map[_buyer].referralTokenAddr ==  address(0) && (escrow_map[_tradeHash].eType == 1)) {
            _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee);
        }
        
        
        require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee, "Insufficient Fee for this Trade");
        
       escrow_map[_tradeHash].setTimeSellerCancel = 0;
       
       emit SellerCancelDisabled(_tradeHash); // Event
       return true;
    }
 
    /** @dev external -  If the buyer wants to cancel the trade, the escrow send back ether to seller.
     * @param _tradeId - The unique id for particular trade.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _amount - The escrow amount of particular trade is ether/token.
     * @param tokenadd - The token address which is escrowed by seller.
     * @return bool - true.
     */
    function buyerCancel(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount,address tokenadd) external returns(bool) {
       bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount));
       require(escrow_map[_tradeHash].escrowStatus == true && msg.sender==feeAddress, "Invalid Escrow status or This user not allowed to call");
       require(escrow_map[_tradeHash].setTimeSellerCancel > now, "Time  Expired Issue..");

        if(escrow_map[_tradeHash].eType == 1 ) {
            _seller.transfer(_amount);
        }
        if (escrow_map[_tradeHash].eType== 2) {
            Token(tokenadd).transfer(_seller,_amount);
        }
        
       delete escrow_map[_tradeHash];
       emit CancelledByBuyer(_tradeHash); //Event
       return true;
    }

    /** @dev external - If the seller wants to cancel the trade, the escrow send back ether to seller, Its only called if the buyer missed to pay the amount 
     * @param _tradeId - The unique id for particular trade.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _amount - The escrow amount of particular trade is ether/token.
     * @param tokenadd - The token address which is escrowed by seller.
     * @return bool - true.
     */
    function sellerCancel(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount, address tokenadd) external returns(bool) {
       bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount));
        
       require(escrow_map[_tradeHash].escrowStatus == true && msg.sender==feeAddress, "Invalid Escrow status or This user not allowed to call");
       
       if(escrow_map[_tradeHash].setTimeSellerCancel <= 1 || escrow_map[_tradeHash].setTimeSellerCancel > now) revert();
       
       if(escrow_map[_tradeHash].eType == 1 ) {
            _seller.transfer(_amount);
        }
        
        if (escrow_map[_tradeHash].eType == 2) {
            Token(tokenadd).transfer(_seller,_amount);
        }
        
       delete escrow_map[_tradeHash];
       emit CancelledBySeller(_tradeHash); // Event 
       return true;
    }
    
    /** @dev external - If the seller wants to cancel the request, seller calls, If the sellet set time for cancel = 1 and Its only called if the buyer is unresponsive.
     * @param _tradeId - The unique id for particular trade.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _amount - The escrow amount of particular trade is ether/token.
     * @return bool - true.
     */
    function sellerRequestCancel(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount) external returns(bool) {
       bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount));
       
       require(feeAddress==msg.sender, "This user not allowed to call this function");
         
       require(escrow_map[_tradeHash].escrowStatus == true, "Status Checking Failed.. ");
       
       require (escrow_map[_tradeHash].setTimeSellerCancel == 1,  "Seller Cancel time is Differ.. ");
       
       escrow_map[_tradeHash].setTimeSellerCancel = (now).add(requestCancelMinimumTime);
       
       emit SellerRequestedCancel(_tradeHash); // Event
       
       return true;
        
    }

    /** @dev external - Call for dispute if the clashes between seller or buyer.
     * @param _tradeId - The unique id for particular trade.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _amount - The escrow amount of particular trade is ether/token.
     * @param disputetype - if seller disputes disputetype = 1 and if buyer disputes disputetype = 2.
     * @return bool - true.
     */
    function consumeDispute(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount, uint16 disputetype) external returns (bool) {
        bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount));
         
        require(msg.sender == feeAddress, "This user not allowed to call this function");
         
        require(escrow_map[_tradeHash].escrowStatus == true, " Status Failed.. ");
         
        if(disputetype == 1) {// seller
            escrow_map[_tradeHash].sellerDispute = true;
            return true;
        }
        else if(disputetype == 2) {// buyer
            escrow_map[_tradeHash].buyerDispute = true;
             return true;
        }
    }

    /** @dev external - After Confirm Payment Call By Seller, release the funds.
     * @param _tradeId - The unique id for particular trade.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _amount - The escrow amount of particular trade is ether/token.
     * @param _tokenContract - The token address which is escrowed by seller.
     * @return bool - true.
     */
    function releseFunds(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount,address _tokenContract) external  returns(bool)
    {
        require(msg.sender == feeAddress, "This user not allowed to call this function");
        bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount));
        require(escrow_map[_tradeHash].escrowStatus == true, "Status Failed.. ");
        uint256[2] memory _reffee; 
        uint256 percDiv =uint256((100)).mul(10**18);
        _reffee[0] = (escrow_map[_tradeHash].sellerFee.mul(referPercent)).div(percDiv);  // seller Referral Fee 
        _reffee[1] = (escrow_map[_tradeHash].buyerFee.mul(referPercent)).div(percDiv); // buyer Referral Fee
       
       

        // seller referral process
            if(referral_map[_seller]. registerStatus == true) {
                require(_referralFee[_seller][referral_map[_seller].referralTokenAddr] >= escrow_map[_tradeHash].sellerFee, "Insufficient Referral Fee Balance for seller");
                _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].add(escrow_map[_tradeHash].sellerFee);
                _referralFee[referral_map[_seller].referralAddr][referral_map[_seller].referralTokenAddr] = _referralFee[referral_map[_seller].referralAddr][referral_map[_seller].referralTokenAddr].add(_reffee[0]);  // seller Referral
                _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].sub(_reffee[0]);
                _referralFee[_seller][referral_map[_seller].referralTokenAddr] = _referralFee[_seller][referral_map[_seller].referralTokenAddr].sub(escrow_map[_tradeHash].sellerFee);
            }
                
            else  // seller not registered the referral address, so only admin fee
            {
                _reffee[0] = 0;
                require(_referralFee[_seller][referral_map[_seller].referralTokenAddr] >= escrow_map[_tradeHash].sellerFee, "Insufficient Referral Fee Balance for seller");
                _token[address(this)][referral_map[_seller].referralTokenAddr] =  _token[address(this)][referral_map[_seller].referralTokenAddr].add(escrow_map[_tradeHash].sellerFee);
                _token[address(this)][referral_map[_seller].referralTokenAddr] =  _token[address(this)][referral_map[_seller].referralTokenAddr].sub(_reffee[0]);
                _referralFee[_seller][referral_map[_seller].referralTokenAddr] =  _referralFee[_seller][referral_map[_seller].referralTokenAddr].sub(escrow_map[_tradeHash].sellerFee);
            }
    
            //buyer referral process
            if(referral_map[_buyer]. registerStatus == true) {
                 require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee , "Insufficient Referral Fee Balance for buyer");
                _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee);
                _referralFee[referral_map[_buyer].referralAddr][referral_map[_buyer].referralTokenAddr] = _referralFee[referral_map[_buyer].referralAddr][referral_map[_buyer].referralTokenAddr].add(_reffee[1]);  // buyer Referral
                _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].sub(_reffee[1]);
                _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] =  _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].sub(escrow_map[_tradeHash].buyerFee);
           }
                
           else //buyer not registered the referral address, so only admin fee
           {
                _reffee[1] =0;
                require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee,  "Insufficient Referral Fee Balance for buyer");
                _token[address(this)][referral_map[_buyer].referralTokenAddr] =  _token[address(this)][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee);
                _token[address(this)][referral_map[_buyer].referralTokenAddr] =  _token[address(this)][referral_map[_buyer].referralTokenAddr].sub(_reffee[1]);
                _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].sub(escrow_map[_tradeHash].buyerFee);
           }

            if(escrow_map[_tradeHash].eType == 1 ) {//ether 
                 _buyer.transfer(_amount.sub(escrow_map[_tradeHash].buyerFee));
            }
        
            if (escrow_map[_tradeHash].eType == 2)  {//token 
                Token(_tokenContract).transfer(_buyer,(_amount));
            }
        
        delete escrow_map[_tradeHash];
        emit Released(_tradeHash);
        return true;
    }  

    /** @dev external - Its only called by Mediator, because of any issues between seller and buyer (vanish), If the sellerDispute or buyerDispute is true for this trade.
     * @param _tradeId - The unique id for particular trade.
     * @param _seller - The seller address of particular trade.
     * @param _buyer - The buyer address of particular trade.
     * @param _amount - The escrow amount of particular trade is ether/token.
     * @param _favour - If the mediator is favour for seller then _favour = 1, if the mediator is favour for buyer then _favour = 2.
     * @param _tokenContract - The token address which is escrowed by seller.
     * @return bool - true.
     */
    function disputeByMediator(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount, uint16 _favour, address _tokenContract) external  returns(bool) {
        require(msg.sender == feeAddress,"This user not allowed to call this function");
        
        bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount));
         
        require(escrow_map[_tradeHash].sellerDispute == true || escrow_map[_tradeHash].buyerDispute == true, " Seller or Buyer Doesn't Call Dispute");
         
        require(escrow_map[_tradeHash].escrowStatus == true, " Status Failed..");
         
        require(_favour == 1 || _favour == 2,  "Invalid Favour Type");
         
        uint256[2] memory _reffee;
        uint256 percDiv =uint256((100)).mul(10**18);
        _reffee[0] = (escrow_map[_tradeHash].sellerFee.mul(referPercent)).div(percDiv);  // seller Referral Fee 
        _reffee[1] = (escrow_map[_tradeHash].buyerFee.mul(referPercent)).div(percDiv); // buyer Referral Fee
       

        // seller referral process
            if(referral_map[_seller]. registerStatus == true) {
                require(_referralFee[_seller][referral_map[_seller].referralTokenAddr] >= escrow_map[_tradeHash].sellerFee, "Insufficient Referral Fee Balance for seller");
                _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].add(escrow_map[_tradeHash].sellerFee);
                _referralFee[referral_map[_seller].referralAddr][referral_map[_seller].referralTokenAddr] = _referralFee[referral_map[_seller].referralAddr][referral_map[_seller].referralTokenAddr].add(_reffee[0]);  // seller Referral
                _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].sub(_reffee[0]);
                _referralFee[_seller][referral_map[_seller].referralTokenAddr] = _referralFee[_seller][referral_map[_seller].referralTokenAddr].sub(escrow_map[_tradeHash].sellerFee);
            }
                
            else  // seller not registered the referral address, so only admin fee
            {
                _reffee[0] = 0;
                require(_referralFee[_seller][referral_map[_seller].referralTokenAddr] >= escrow_map[_tradeHash].sellerFee, "Insufficient Referral Fee Balance for seller");
                _token[address(this)][referral_map[_seller].referralTokenAddr] =  _token[address(this)][referral_map[_seller].referralTokenAddr].add(escrow_map[_tradeHash].sellerFee);
                _token[address(this)][referral_map[_seller].referralTokenAddr] =  _token[address(this)][referral_map[_seller].referralTokenAddr].sub(_reffee[0]);
                _referralFee[_seller][referral_map[_seller].referralTokenAddr] =  _referralFee[_seller][referral_map[_seller].referralTokenAddr].sub(escrow_map[_tradeHash].sellerFee);
            }
    
            //buyer referral process
            if(referral_map[_buyer]. registerStatus == true) {
                 require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee , "Insufficient Referral Fee Balance for buyer");
                _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee);
                _referralFee[referral_map[_buyer].referralAddr][referral_map[_buyer].referralTokenAddr] = _referralFee[referral_map[_buyer].referralAddr][referral_map[_buyer].referralTokenAddr].add(_reffee[1]);  // buyer Referral
                _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].sub(_reffee[1]);
                _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] =  _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].sub(escrow_map[_tradeHash].buyerFee);
           }
                
           else //buyer not registered the referral address, so only admin fee
           {
                _reffee[1] =0;
                require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee,  "Insufficient Referral Fee Balance for buyer");
                _token[address(this)][referral_map[_buyer].referralTokenAddr] =  _token[address(this)][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee);
                _token[address(this)][referral_map[_buyer].referralTokenAddr] =  _token[address(this)][referral_map[_buyer].referralTokenAddr].sub(_reffee[1]);
                _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].sub(escrow_map[_tradeHash].buyerFee);
           }

           
         if(escrow_map[_tradeHash].eType == 1) {//ether
             if(_favour == 1) {//seller
                  _seller.transfer(_amount);
             }
             else if (_favour == 2) {//buyer
                _buyer.transfer(_amount.sub(escrow_map[_tradeHash].buyerFee));
             }
         }
         if(escrow_map[_tradeHash].eType == 2) {//token
              if(_favour == 1) { //seller
                  Token(_tokenContract).transfer(_seller,_amount);
             }
             else if (_favour == 2) {//buyer
                 Token(_tokenContract).transfer(_buyer,(_amount));
            }
         }

         delete escrow_map[_tradeHash];
         emit DisputeResolved(_tradeHash); // Event
         return true;
        
    }
    
    function tokenallowance(address tokenAddr,address _owner,address _spender) public view returns(uint256){ // to check token allowance to contract
        return Token(tokenAddr).allowance(_owner,_spender);
    }
        
 }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"feeadd","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"CancelledByBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"CancelledBySeller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"DisputeResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"SellerCancelDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"SellerRequestedCancel","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_referralFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_token","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"tokenadd","type":"address"}],"name":"buyerCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"disputetype","type":"uint16"}],"name":"consumeDispute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_sellerFee","type":"uint256"},{"internalType":"uint256","name":"_buyerFee","type":"uint256"},{"internalType":"uint16","name":"_type","type":"uint16"},{"internalType":"uint32","name":"_sellerCancelInSeconds","type":"uint32"},{"internalType":"address[2]","name":"_Ref","type":"address[2]"},{"internalType":"address[2]","name":"_Tokens","type":"address[2]"},{"internalType":"uint256[2]","name":"_Type","type":"uint256[2]"}],"name":"createEscrow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"disableSellerCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"_favour","type":"uint16"},{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"disputeByMediator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"escrow_map","outputs":[{"internalType":"bool","name":"escrowStatus","type":"bool"},{"internalType":"uint256","name":"setTimeSellerCancel","type":"uint256"},{"internalType":"uint256","name":"sellerFee","type":"uint256"},{"internalType":"uint256","name":"buyerFee","type":"uint256"},{"internalType":"uint256","name":"eType","type":"uint256"},{"internalType":"bool","name":"sellerDispute","type":"bool"},{"internalType":"bool","name":"buyerDispute","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"feeCollect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referral_map","outputs":[{"internalType":"address","name":"userAddr","type":"address"},{"internalType":"address","name":"referralAddr","type":"address"},{"internalType":"address","name":"referralTokenAddr","type":"address"},{"internalType":"uint256","name":"referralType","type":"uint256"},{"internalType":"bool","name":"registerStatus","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"releseFunds","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requestCancelMinimumTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"tokenadd","type":"address"}],"name":"sellerCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sellerRequestCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newFeeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setFeePercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_newRequestCancelMinimumTime","type":"uint32"}],"name":"setRequestCancellationMinimumTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"tokenallowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"_type","type":"uint16"},{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"withdrawFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"_type","type":"uint16"},{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_refType","type":"uint256"}],"name":"withdrawReferral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051620045ea380380620045ea8339818101604052602081101561003557600080fd5b5051600080546001600160a01b0319908116331790915560018054751c20000000000000000000000000000000000000000063ffffffff60a01b196001600160a01b0390951691909316179290921617905561455380620000976000396000f3fe60806040526004361061014b5760003560e01c806381bd4638116100b6578063b2e544571161006f578063b2e54457146105f9578063b507af3b1461064c578063b8e5aa6d14610699578063e1c48244146106e2578063f1e7250e1461074f578063fd63f389146107645761014b565b806381bd46381461048b5780638705fcd4146104cb5780638da5cb5b146104fe57806390729d6014610513578063a91b977a1461057b578063b1dd43b4146105b65761014b565b80634d694a34116101085780634d694a34146102c65780635093f08f14610313578063516c72071461037257806360c40fcf146103b75780637038644c1461040e5780637ce3489b146104615761014b565b8063011cced91461015057806305b649931461017e57806313af4035146101b05780631900d0f9146101e357806322643b8d1461022e5780634127535814610295575b600080fd5b34801561015c57600080fd5b506101656107de565b6040805163ffffffff9092168252519081900360200190f35b34801561018a57600080fd5b506101ae600480360360208110156101a157600080fd5b503563ffffffff166107f1565b005b3480156101bc57600080fd5b506101ae600480360360208110156101d357600080fd5b50356001600160a01b0316610860565b3480156101ef57600080fd5b506101ae6004803603608081101561020657600080fd5b506001600160a01b03813581169160208101359161ffff604083013516916060013516610918565b34801561023a57600080fd5b50610281600480360360a081101561025157600080fd5b5061ffff813516906001600160a01b03602082013581169160408101358216916060820135916080013516610bb6565b604080519115158252519081900360200190f35b3480156102a157600080fd5b506102aa610e35565b604080516001600160a01b039092168252519081900360200190f35b3480156102d257600080fd5b50610301600480360360408110156102e957600080fd5b506001600160a01b0381358116916020013516610e44565b60408051918252519081900360200190f35b34801561031f57600080fd5b50610281600480360360c081101561033657600080fd5b5061ffff81358116916001600160a01b036020820135811692604083013582169260608101359260808201359092169160a09091013516610e61565b34801561037e57600080fd5b506103016004803603606081101561039557600080fd5b506001600160a01b038135811691602081013582169160409091013516611c1b565b3480156103c357600080fd5b50610281600480360360a08110156103da57600080fd5b5061ffff81358116916001600160a01b03602082013581169260408301359091169160608101359160809091013516611ca2565b34801561041a57600080fd5b50610281600480360360a081101561043157600080fd5b5061ffff813516906001600160a01b03602082013581169160408101358216916060820135916080013516611e16565b34801561046d57600080fd5b506101ae6004803603602081101561048457600080fd5b50356120b5565b610281600480360360808110156104a157600080fd5b5061ffff813516906001600160a01b0360208201358116916040810135909116906060013561214e565b3480156104d757600080fd5b506101ae600480360360208110156104ee57600080fd5b50356001600160a01b0316612629565b34801561050a57600080fd5b506102aa6126e1565b34801561051f57600080fd5b5061053d6004803603602081101561053657600080fd5b50356126f0565b60408051971515885260208801969096528686019490945260608601929092526080850152151560a0840152151560c0830152519081900360e00190f35b34801561058757600080fd5b506103016004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516612733565b3480156105c257600080fd5b50610281600480360360608110156105d957600080fd5b506001600160a01b03813581169160208101359091169060400135612750565b34801561060557600080fd5b50610281600480360360a081101561061c57600080fd5b5061ffff813516906001600160a01b036020820135811691604081013582169160608201359160800135166128f6565b34801561065857600080fd5b506102816004803603608081101561066f57600080fd5b5061ffff813516906001600160a01b0360208201358116916040810135909116906060013561343a565b3480156106a557600080fd5b506101ae600480360360808110156106bc57600080fd5b5080359061ffff602082013516906001600160a01b036040820135169060600135613620565b3480156106ee57600080fd5b506107156004803603602081101561070557600080fd5b50356001600160a01b03166139ab565b604080516001600160a01b039687168152948616602086015292909416838301526060830152911515608082015290519081900360a00190f35b34801561075b57600080fd5b506103016139ed565b61028160048036036101e081101561077b57600080fd5b5061ffff81358116916001600160a01b03602082013581169260408301358216926060810135926080820135169160a08201359160c08101359160e0820135169063ffffffff61010082013516906101208101906101608101906101a0016139f3565b600154600160a01b900463ffffffff1681565b6000546001600160a01b0316331461083a5760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6000546001600160a01b031633146108a95760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001600160a01b0381166108f6576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109615760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b8161ffff1660011415610a60573060009081526005602090815260408083208380529091529020548311156109dd576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742065746865722062616c616e6365000000000000604482015290519081900360640190fd5b306000908152600560209081526040808320838052909152902054610a08908463ffffffff613ff516565b3060009081526005602090815260408083208380529091528082209290925590516001600160a01b0386169185156108fc02918691818181858888f19350505050158015610a5a573d6000803e3d6000fd5b50610bb0565b8161ffff1660021415610bb0573060009081526005602090815260408083206001600160a01b0385168452909152902054831115610ae2576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b3060009081526005602090815260408083206001600160a01b0385168452909152902054610b16908463ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b0386811680865291845282852095909555815163a9059cbb60e01b81529489166004860152602485018890529051909363a9059cbb9360448083019493928390030190829087803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b505050506040513d6020811015610bad57600080fd5b50505b50505050565b604080516001600160f01b031960f088901b166020808301919091526001600160601b0319606088811b8216602285015287901b166036830152604a80830186905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff1615156001148015610c4157506001546001600160a01b031633145b610c7c5760405162461bcd60e51b81526004018080602001828103825260368152602001806144bd6036913960400191505060405180910390fd5b6000818152600460205260409020600190810154111580610cad575060008181526004602052604090206001015442105b15610cb757600080fd5b6000818152600460208190526040909120015460011415610d0a576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015610d08573d6000803e3d6000fd5b505b6000818152600460208190526040909120015460021415610db257826001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050506040513d6020811015610daf57600080fd5b50505b6000818152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815183815291517f366d2b4e6cc37ecebb3d7d41df6d581634fd8137412710a1e086e4ca4656bb589281900390910190a160019150505b95945050505050565b6001546001600160a01b031681565b600560209081526000928352604080842090915290825290205481565b6001546000906001600160a01b03163314610ead5760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b604080516001600160f01b031960f08a901b166020808301919091526001600160601b031960608a811b8216602285015289901b166036830152604a80830188905283518084039091018152606a9092018352815191810191909120600081815260049092529190206005015460ff16151560011480610f49575060008181526004602052604090206005015460ff6101009091041615156001145b610f845760405162461bcd60e51b81526004018080602001828103825260258152602001806144456025913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114610fdf576040805162461bcd60e51b815260206004820152601060248201526f1029ba30ba3ab9902330b4b632b2171760811b604482015290519081900360640190fd5b8361ffff1660011480610ff657508361ffff166002145b61103d576040805162461bcd60e51b8152602060048201526013602482015272496e76616c6964204661766f7572205479706560681b604482015290519081900360640190fd5b611045614360565b60006110606064670de0b6b3a764000063ffffffff61405716565b905061109d81611091600254600460008881526020019081526020016000206002015461405790919063ffffffff16565b9063ffffffff6140b716565b82526002546000848152600460205260409020600301546110c99183916110919163ffffffff61405716565b6020808401919091526001600160a01b038a1660009081526003909152604090206004015460ff1615156001141561135f5760008381526004602090815260408083206002908101546001600160a01b03808f16865260068552838620600386528487209093015416855292529091205410156111775760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038f81168752600386528487209093015490921685529252909120546111ca9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038e8116855260038452828520600281018054831687529285528386209690965587516001909601548116855260068452828520915416845290915290205461122b91614121565b6001600160a01b03808b166000908152600360209081526040808320600181015485168452600683528184206002909101549094168352929052908120919091556112bb9083905b602090810291909101513060009081526005835260408082206001600160a01b038f81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038e81168086526003855283862060029081018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546113299163ffffffff613ff516565b6001600160a01b03808b166000908152600660209081526040808320600383528184206002015490941683529290522055611512565b60008083528381526004602090815260408083206002908101546001600160a01b038e8116865260068552838620600386528487209093015416855292529091205410156113de5760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038f81168752600386528487209093015490921685529252909120546114319163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038e811685526003845282852060020154168452909152812091909155611472908390611273565b3060009081526005602090815260408083206001600160a01b038e81168086526003855283862060029081018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546114e09163ffffffff613ff516565b6001600160a01b03808b1660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03881660009081526003602052604090206004015460ff161515600114156117c75760008381526004602090815260408083206003908101546001600160a01b03808e168652600685528386209285528386206002015416855292529091205410156115b65760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038e811687529285528386206002015490921685529252909120546116089163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d8116855260038452828520600201541684529091529020556116948260015b602090810291909101516001600160a01b03808c16600090815260038452604080822060018101548416835260068652818320600290910154909316825291909352909120549063ffffffff61412116565b6001600160a01b03808a166000908152600360209081526040808320600180820154861685526006845282852060029092015490951684529091529020919091556117249083905b602090810291909101513060009081526005835260408082206001600160a01b038e81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038d811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546117919163ffffffff613ff516565b6001600160a01b03808a166000908152600660209081526040808320600383528184206002015490941683529290522055611976565b600060208084018290528482526004815260408083206003908101546001600160a01b038d81168652600685528386209285528386206002015416855292529091205410156118475760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038e811687529285528386206002015490921685529252909120546118999163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d8116855260038452828520600201541684529091529020556118d78260016116dc565b3060009081526005602090815260408083206001600160a01b038d811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546119449163ffffffff613ff516565b6001600160a01b03808a1660009081526006602090815260408083206003835281842060020154909416835292905220555b6000838152600460208190526040909120015460011415611a43578561ffff16600114156119da576040516001600160a01b038a169088156108fc029089906000818181858888f193505050501580156119d4573d6000803e3d6000fd5b50611a43565b8561ffff1660021415611a43576000838152600460205260409020600301546001600160a01b038916906108fc90611a19908a9063ffffffff613ff516565b6040518115909202916000818181858888f19350505050158015611a41573d6000803e3d6000fd5b505b6000838152600460208190526040909120015460021415611b97578561ffff1660011415611afd57846001600160a01b031663a9059cbb8a896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611acb57600080fd5b505af1158015611adf573d6000803e3d6000fd5b505050506040513d6020811015611af557600080fd5b50611b979050565b8561ffff1660021415611b9757846001600160a01b031663a9059cbb89896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611b6a57600080fd5b505af1158015611b7e573d6000803e3d6000fd5b505050506040513d6020811015611b9457600080fd5b50505b6000838152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815185815291517f65e0c7182ce84cd9087c1b07dc4b65875578877b885848e4be19ee312f2c3d319281900390910190a15060019998505050505050505050565b60408051636eb1769f60e11b81526001600160a01b0384811660048301528381166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b158015611c6e57600080fd5b505afa158015611c82573d6000803e3d6000fd5b505050506040513d6020811015611c9857600080fd5b5051949350505050565b6040805160f087901b6001600160f01b031916602080830191909152606087811b6001600160601b031990811660228501529087901b166036830152604a80830186905283518084039091018152606a9092019092528051910120600154600091906001600160a01b03163314611d4a5760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114611da6576040805162461bcd60e51b815260206004820152601160248201527001029ba30ba3ab9902330b4b632b217171607d1b604482015290519081900360640190fd5b8261ffff1660011415611dd9576000908152600460205260409020600501805460ff191660019081179091559050610e2c565b8261ffff1660021415611e0c576000908152600460205260409020600501805461ff001916610100179055506001610e2c565b5095945050505050565b604080516001600160f01b031960f088901b166020808301919091526001600160601b0319606088811b8216602285015287901b166036830152604a80830186905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff1615156001148015611ea157506001546001600160a01b031633145b611edc5760405162461bcd60e51b81526004018080602001828103825260368152602001806144bd6036913960400191505060405180910390fd5b6000818152600460205260409020600101544210611f39576040805162461bcd60e51b81526020600482015260156024820152742a34b6b2901022bc3834b932b21024b9b9bab2971760591b604482015290519081900360640190fd5b6000818152600460208190526040909120015460011415611f8c576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611f8a573d6000803e3d6000fd5b505b600081815260046020819052604090912001546002141561203457826001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b505050506040513d602081101561203157600080fd5b50505b6000818152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815183815291517fd9b627ddaa414e8e6c82366cc9c179f6281d73968827cc17038a56852e28ac8b9281900390910190a15060019695505050505050565b6000546001600160a01b031633146120fe5760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b60008111612149576040805162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081199594814195c98d95b9d606a1b604482015290519081900360640190fd5b600255565b604080516001600160f01b031960f087901b166020808301919091526001600160601b0319606087811b8216602285015286901b166036830152604a80830185905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff161515600114612210576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b600081815260046020526040902060010154612273576040805162461bcd60e51b815260206004820152601f60248201527f53656c6c65722043616e63656c2074696d65206973204469666665722e2e2000604482015290519081900360640190fd5b336001600160a01b038516146122c2576040805162461bcd60e51b815260206004820152600f60248201526e024b73b30b634b2102ab9b2b917171608d1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600360205260409020600201541615612367576001600160a01b038085166000908152600660209081526040808320600383528184206002015490941683529290522054612367576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e74204665652042616c616e63652e2e000000000000604482015290519081900360640190fd5b6001600160a01b03848116600090815260036020526040902060020154161580156123a45750600081815260046020819052604090912001546002145b156124825760008181526004602052604090206003015434101561240f576040805162461bcd60e51b815260206004820181905260248201527f4e656564206d6f7265206465706f73697420616d6f756e7420666f7220666565604482015290519081900360640190fd5b6001600160a01b038085166000908152600660209081526040808320600383528184206002015490941683529290522054612450903463ffffffff61412116565b6001600160a01b0380861660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03848116600090815260036020526040902060020154161580156124bf5750600081815260046020819052604090912001546001145b156125435760008181526004602090815260408083206003908101546001600160a01b03808a16865260068552838620928552838620600201541685529252909120546125119163ffffffff61412116565b6001600160a01b0380861660009081526006602090815260408083206003835281842060020154909416835292905220555b60008181526004602090815260408083206003908101546001600160a01b03808a168652600685528386209285528386206002015416855292529091205410156125d4576040805162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742046656520666f72207468697320547261646500604482015290519081900360640190fd5b600081815260046020908152604080832060010192909255815183815291517fe95fa7985c7585e90dab2dc46470726468662be06f67d79a31a5012e4bc0edeb9281900390910190a150600195945050505050565b6000546001600160a01b031633146126725760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001600160a01b0381166126bf576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015460ff93841695929491938181169161010090041687565b600660209081526000928352604080842090915290825290205481565b60006001600160a01b0384161580159061277257506001600160a01b03831615155b6127b3576040805162461bcd60e51b815260206004820152600d60248201526c456d707479204164647265737360981b604482015290519081900360640190fd5b816127bf848630611c1b565b101561280b576040805162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018590529151918516916323b872dd916064808201926020929091908290030181600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b505050506040513d602081101561288e57600080fd5b50506001600160a01b038085166000908152600660209081526040808320938716835292905220546128c6908363ffffffff61412116565b6001600160a01b038086166000908152600660209081526040808320938816835292905220555060019392505050565b6001546000906001600160a01b031633146129425760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b604080516001600160f01b031960f089901b166020808301919091526001600160601b0319606089811b8216602285015288901b166036830152604a80830187905283518084039091018152606a9092018352815191810191909120600081815260049092529190205460ff1615156001146129f8576040805162461bcd60e51b815260206004820152601060248201526f029ba30ba3ab9902330b4b632b21717160851b604482015290519081900360640190fd5b612a00614360565b6000612a1b6064670de0b6b3a764000063ffffffff61405716565b9050612a4c81611091600254600460008881526020019081526020016000206002015461405790919063ffffffff16565b8252600254600084815260046020526040902060030154612a789183916110919163ffffffff61405716565b6020808401919091526001600160a01b03891660009081526003909152604090206004015460ff16151560011415612caa5760008381526004602090815260408083206002908101546001600160a01b03808e1686526006855283862060038652848720909301541685529252909120541015612b265760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038e8116875260038652848720909301549092168552925290912054612b799163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d811685526003845282852060020154168452909152812091909155612bba908390611642565b6001600160a01b03808a16600090815260036020908152604080832060018101548516845260068352818420600290910154909416835292905290812091909155612c069083906116dc565b3060009081526005602090815260408083206001600160a01b038d8116808652600385528386206002908101805484168852938652848720979097558986526004855283862090960154958552600684528285209154168452909152902054612c749163ffffffff613ff516565b6001600160a01b03808a166000908152600660209081526040808320600383528184206002015490941683529290522055612e5d565b60008083528381526004602090815260408083206002908101546001600160a01b038d811686526006855283862060038652848720909301541685529252909120541015612d295760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038e8116875260038652848720909301549092168552925290912054612d7c9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d811685526003845282852060020154168452909152812091909155612dbd9083906116dc565b3060009081526005602090815260408083206001600160a01b038d8116808652600385528386206002908101805484168852938652848720979097558986526004855283862090960154958552600684528285209154168452909152902054612e2b9163ffffffff613ff516565b6001600160a01b03808a1660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03871660009081526003602052604090206004015460ff161515600114156130e95760008381526004602090815260408083206003908101546001600160a01b03808d16865260068552838620928552838620600201541685529252909120541015612f015760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038d81168752928552838620600201549092168552925290912054612f539163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038c811685526003845282852060028101805483168752928552838620969096558784015160019096015481168552600684528285209154168452909152902054612fb691614121565b6001600160a01b038089166000908152600360209081526040808320600180820154861685526006845282852060029092015490951684529091529020919091556130469083905b602090810291909101513060009081526005835260408082206001600160a01b038d81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038c811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546130b39163ffffffff613ff516565b6001600160a01b038089166000908152600660209081526040808320600383528184206002015490941683529290522055613298565b600060208084018290528482526004815260408083206003908101546001600160a01b038c81168652600685528386209285528386206002015416855292529091205410156131695760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038d811687529285528386206002015490921685529252909120546131bb9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038c8116855260038452828520600201541684529091529020556131f9826001612ffe565b3060009081526005602090815260408083206001600160a01b038c811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546132669163ffffffff613ff516565b6001600160a01b0380891660009081526006602090815260408083206003835281842060020154909416835292905220555b600083815260046020819052604090912001546001141561330f576000838152600460205260409020600301546001600160a01b038816906108fc906132e590899063ffffffff613ff516565b6040518115909202916000818181858888f1935050505015801561330d573d6000803e3d6000fd5b505b60008381526004602081905260409091200154600214156133b757846001600160a01b031663a9059cbb88886040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561338a57600080fd5b505af115801561339e573d6000803e3d6000fd5b505050506040513d60208110156133b457600080fd5b50505b6000838152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815185815291517f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d149281900390910190a150600198975050505050505050565b604080516001600160f01b031960f087901b166020808301919091526001600160601b0319606087811b8216602285015286901b166036830152604a80830185905283518084039091018152606a9092019092528051910120600154600091906001600160a01b031633146134e05760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114613544576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b6000818152600460205260409020600190810154146135aa576040805162461bcd60e51b815260206004820152601f60248201527f53656c6c65722043616e63656c2074696d65206973204469666665722e2e2000604482015290519081900360640190fd5b6001546135c990429063ffffffff600160a01b90910481169061412116565b60008281526004602090815260409182902060010192909255805183815290517f43e76a2687c7b12792086e4c776772be26c4d6a7041115f446cbc22ccada08ab929181900390910190a150600195945050505050565b8261ffff16600114156137105733600090815260066020908152604080832083805290915290205484111561369c576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742065746865722062616c616e6365000000000000604482015290519081900360640190fd5b3360009081526006602090815260408083208380529091529020546136c7908563ffffffff613ff516565b336000818152600660209081526040808320838052909152808220939093559151909186156108fc02918791818181858888f19350505050158015610a5a573d6000803e3d6000fd5b8261ffff1660021415610bb05780613865573360009081526006602090815260408083206001600160a01b0386168452909152902054841115613797576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b3360009081526006602090815260408083206001600160a01b03861684529091529020546137cb908563ffffffff613ff516565b3360008181526006602090815260408083206001600160a01b03881680855290835281842095909555805163a9059cbb60e01b81526004810194909452602484018990525163a9059cbb93604480820194918390030190829087803b15801561383357600080fd5b505af1158015613847573d6000803e3d6000fd5b505050506040513d602081101561385d57600080fd5b50610bb09050565b8060011415610bb05733600090815260066020908152604080832060038352818420600201546001600160a01b031684529091529020548411156138ed576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b33600090815260066020908152604080832060038352818420600201546001600160a01b0316845290915290205461392b908563ffffffff613ff516565b336000818152600660209081526040808320600380845282852060020180546001600160a01b0390811687529285528386209790975585855283529454815163a9059cbb60e01b81526004810195909552602485018a9052905194169363a9059cbb93604480820194918390030190829087803b158015610b8357600080fd5b6003602081905260009182526040909120805460018201546002830154938301546004909301546001600160a01b039283169491831693919092169160ff1685565b60025481565b604080516001600160f01b031960f08f901b166020808301919091526001600160601b031960608f811b821660228501528e901b166036830152604a8083018d905283518084039091018152606a9092019092528051910120600090613ac58d8d87356001600160a01b031688600160200201356001600160a01b031688600060028110613a7d57fe5b60200201356001600160a01b031689600160028110613a9857fe5b60200201356001600160a01b031689600060028110613ab357fe5b60200201358a6001602002013561417b565b50336001600160a01b038e1614613b14576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2102ab9b2b9171760911b604482015290519081900360640190fd5b8661ffff1660011480613b2b57508661ffff166002145b613b6e576040805162461bcd60e51b815260206004820152600f60248201526e024b73b30b634b2102a3cb83297171608d1b604482015290519081900360640190fd5b60008181526004602052604090205460ff1615613bce576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b6001600160a01b0384351615613c505760018335148015613c1557506001600160a01b038d8116600090815260066020908152604080832088359094168352929052205415155b613c505760405162461bcd60e51b815260040180806020018281038252602981526020018061437f6029913960400191505060405180910390fd5b6001600160a01b03843516158015613c6c57508661ffff166002145b15613ce9578235158015613c805750883410155b613cbb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806143a8602e913960400191505060405180910390fd5b6001600160a01b038d8116600090815260066020908152604080832088359094168352929052208054340190555b6001600160a01b03843516158015613d0557508661ffff166001145b15613d91578235158015613d285750613d248b8a63ffffffff61412116565b3410155b613d635760405162461bcd60e51b815260040180806020018281038252602e8152602001806143a8602e913960400191505060405180910390fd5b6001600160a01b038d81166000908152600660209081526040808320883590941683529290522080548a0190555b6001600160a01b038d81166000908152600660209081526040808320883590941683529290522054891115613e0d576040805162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742046656520666f72207468697320547261646500604482015290519081900360640190fd5b8661ffff1660011415613eb4576001600160a01b038a1615613e605760405162461bcd60e51b81526004018080602001828103825260238152602001806144016023913960400191505060405180910390fd5b348b11158015613e705750600034115b613eb4576040805162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21020b6b7bab73a171760811b604482015290519081900360640190fd5b8661ffff1660021415613f4757604080516323b872dd60e01b81526001600160a01b038f81166004830152306024830152604482018e90529151918c16916323b872dd916064808201926020929091908290030181600087803b158015613f1a57600080fd5b505af1158015613f2e573d6000803e3d6000fd5b505050506040513d6020811015613f4457600080fd5b50505b600063ffffffff871615613f6d57613f684263ffffffff808a169061412116565b613f70565b60015b600083815260046020818152604092839020805460ff1916600190811782558101859055600281018f9055600381018e905561ffff8d16920191909155815185815291519293507f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c92918290030190a15060019e9d5050505050505050505050505050565b60008282111561404c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b60008261406657506000614051565b8282028284828161407357fe5b04146140b05760405162461bcd60e51b81526004018080602001828103825260218152602001806144246021913960400191505060405180910390fd5b9392505050565b600080821161410d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161411857fe5b04949350505050565b6000828201838110156140b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b038716156141cf576001600160a01b038981166000908152600360205260409020600180820180546001600160a01b031916938b1693909317909255600401805460ff191690911790555b8260011415614223576001600160a01b03898116600081815260036020819052604090912080546001600160a01b031990811690931781556002810180549093169389169390931790915501839055614267565b82614267576001600160a01b038916600081815260036020819052604090912080546001600160a01b03199081169093178155600281018054909316909255018390555b6001600160a01b038616156142b9576001600160a01b038881166000908152600360205260409020600180820180546001600160a01b031916938a1693909317909255600401805460ff191690911790555b816001141561430d576001600160a01b03888116600081815260036020819052604090912080546001600160a01b031990811690931781556002810180549093169388169390931790915501829055614351565b81614351576001600160a01b038816600081815260036020819052604090912080546001600160a01b03199081169093178155600281018054909316909255018290555b50600198975050505050505050565b6040518060400160405280600290602082028038833950919291505056fe496e73756666696369656e74204665652042616c616e6365206f722074797065206d69736d6174636854797065206d69736d61746368206f72206d73672e76616c7565206c657373207468656e2073656c6c6572666565496e73756666696369656e7420526566657272616c204665652042616c616e636520666f72206275796572496e76616c696420546f6b656e204164647265737320466f7220746869732054797065536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f772053656c6c6572206f7220427579657220446f65736e27742043616c6c2044697370757465546869732075736572206e6f7420616c6c6f77656420746f2063616c6c20746869732066756e6374696f6e546869732066756e6374696f6e20697320206f6e6c792063616c6c6564206279204f776e65722e2e496e76616c696420457363726f7720737461747573206f7220546869732075736572206e6f7420616c6c6f77656420746f2063616c6c496e73756666696369656e7420526566657272616c204665652042616c616e636520666f722073656c6c6572a265627a7a72315820785c56ea73665a828dbd4fcad31e45cae7a12683041945cffa6fffb132fdc48664736f6c634300050c00320000000000000000000000008b29cfb173abb7a7fe0a9dac4f5ede8da94872f3

Deployed Bytecode

0x60806040526004361061014b5760003560e01c806381bd4638116100b6578063b2e544571161006f578063b2e54457146105f9578063b507af3b1461064c578063b8e5aa6d14610699578063e1c48244146106e2578063f1e7250e1461074f578063fd63f389146107645761014b565b806381bd46381461048b5780638705fcd4146104cb5780638da5cb5b146104fe57806390729d6014610513578063a91b977a1461057b578063b1dd43b4146105b65761014b565b80634d694a34116101085780634d694a34146102c65780635093f08f14610313578063516c72071461037257806360c40fcf146103b75780637038644c1461040e5780637ce3489b146104615761014b565b8063011cced91461015057806305b649931461017e57806313af4035146101b05780631900d0f9146101e357806322643b8d1461022e5780634127535814610295575b600080fd5b34801561015c57600080fd5b506101656107de565b6040805163ffffffff9092168252519081900360200190f35b34801561018a57600080fd5b506101ae600480360360208110156101a157600080fd5b503563ffffffff166107f1565b005b3480156101bc57600080fd5b506101ae600480360360208110156101d357600080fd5b50356001600160a01b0316610860565b3480156101ef57600080fd5b506101ae6004803603608081101561020657600080fd5b506001600160a01b03813581169160208101359161ffff604083013516916060013516610918565b34801561023a57600080fd5b50610281600480360360a081101561025157600080fd5b5061ffff813516906001600160a01b03602082013581169160408101358216916060820135916080013516610bb6565b604080519115158252519081900360200190f35b3480156102a157600080fd5b506102aa610e35565b604080516001600160a01b039092168252519081900360200190f35b3480156102d257600080fd5b50610301600480360360408110156102e957600080fd5b506001600160a01b0381358116916020013516610e44565b60408051918252519081900360200190f35b34801561031f57600080fd5b50610281600480360360c081101561033657600080fd5b5061ffff81358116916001600160a01b036020820135811692604083013582169260608101359260808201359092169160a09091013516610e61565b34801561037e57600080fd5b506103016004803603606081101561039557600080fd5b506001600160a01b038135811691602081013582169160409091013516611c1b565b3480156103c357600080fd5b50610281600480360360a08110156103da57600080fd5b5061ffff81358116916001600160a01b03602082013581169260408301359091169160608101359160809091013516611ca2565b34801561041a57600080fd5b50610281600480360360a081101561043157600080fd5b5061ffff813516906001600160a01b03602082013581169160408101358216916060820135916080013516611e16565b34801561046d57600080fd5b506101ae6004803603602081101561048457600080fd5b50356120b5565b610281600480360360808110156104a157600080fd5b5061ffff813516906001600160a01b0360208201358116916040810135909116906060013561214e565b3480156104d757600080fd5b506101ae600480360360208110156104ee57600080fd5b50356001600160a01b0316612629565b34801561050a57600080fd5b506102aa6126e1565b34801561051f57600080fd5b5061053d6004803603602081101561053657600080fd5b50356126f0565b60408051971515885260208801969096528686019490945260608601929092526080850152151560a0840152151560c0830152519081900360e00190f35b34801561058757600080fd5b506103016004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516612733565b3480156105c257600080fd5b50610281600480360360608110156105d957600080fd5b506001600160a01b03813581169160208101359091169060400135612750565b34801561060557600080fd5b50610281600480360360a081101561061c57600080fd5b5061ffff813516906001600160a01b036020820135811691604081013582169160608201359160800135166128f6565b34801561065857600080fd5b506102816004803603608081101561066f57600080fd5b5061ffff813516906001600160a01b0360208201358116916040810135909116906060013561343a565b3480156106a557600080fd5b506101ae600480360360808110156106bc57600080fd5b5080359061ffff602082013516906001600160a01b036040820135169060600135613620565b3480156106ee57600080fd5b506107156004803603602081101561070557600080fd5b50356001600160a01b03166139ab565b604080516001600160a01b039687168152948616602086015292909416838301526060830152911515608082015290519081900360a00190f35b34801561075b57600080fd5b506103016139ed565b61028160048036036101e081101561077b57600080fd5b5061ffff81358116916001600160a01b03602082013581169260408301358216926060810135926080820135169160a08201359160c08101359160e0820135169063ffffffff61010082013516906101208101906101608101906101a0016139f3565b600154600160a01b900463ffffffff1681565b6000546001600160a01b0316331461083a5760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6000546001600160a01b031633146108a95760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001600160a01b0381166108f6576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109615760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b8161ffff1660011415610a60573060009081526005602090815260408083208380529091529020548311156109dd576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742065746865722062616c616e6365000000000000604482015290519081900360640190fd5b306000908152600560209081526040808320838052909152902054610a08908463ffffffff613ff516565b3060009081526005602090815260408083208380529091528082209290925590516001600160a01b0386169185156108fc02918691818181858888f19350505050158015610a5a573d6000803e3d6000fd5b50610bb0565b8161ffff1660021415610bb0573060009081526005602090815260408083206001600160a01b0385168452909152902054831115610ae2576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b3060009081526005602090815260408083206001600160a01b0385168452909152902054610b16908463ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b0386811680865291845282852095909555815163a9059cbb60e01b81529489166004860152602485018890529051909363a9059cbb9360448083019493928390030190829087803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b505050506040513d6020811015610bad57600080fd5b50505b50505050565b604080516001600160f01b031960f088901b166020808301919091526001600160601b0319606088811b8216602285015287901b166036830152604a80830186905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff1615156001148015610c4157506001546001600160a01b031633145b610c7c5760405162461bcd60e51b81526004018080602001828103825260368152602001806144bd6036913960400191505060405180910390fd5b6000818152600460205260409020600190810154111580610cad575060008181526004602052604090206001015442105b15610cb757600080fd5b6000818152600460208190526040909120015460011415610d0a576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015610d08573d6000803e3d6000fd5b505b6000818152600460208190526040909120015460021415610db257826001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050506040513d6020811015610daf57600080fd5b50505b6000818152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815183815291517f366d2b4e6cc37ecebb3d7d41df6d581634fd8137412710a1e086e4ca4656bb589281900390910190a160019150505b95945050505050565b6001546001600160a01b031681565b600560209081526000928352604080842090915290825290205481565b6001546000906001600160a01b03163314610ead5760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b604080516001600160f01b031960f08a901b166020808301919091526001600160601b031960608a811b8216602285015289901b166036830152604a80830188905283518084039091018152606a9092018352815191810191909120600081815260049092529190206005015460ff16151560011480610f49575060008181526004602052604090206005015460ff6101009091041615156001145b610f845760405162461bcd60e51b81526004018080602001828103825260258152602001806144456025913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114610fdf576040805162461bcd60e51b815260206004820152601060248201526f1029ba30ba3ab9902330b4b632b2171760811b604482015290519081900360640190fd5b8361ffff1660011480610ff657508361ffff166002145b61103d576040805162461bcd60e51b8152602060048201526013602482015272496e76616c6964204661766f7572205479706560681b604482015290519081900360640190fd5b611045614360565b60006110606064670de0b6b3a764000063ffffffff61405716565b905061109d81611091600254600460008881526020019081526020016000206002015461405790919063ffffffff16565b9063ffffffff6140b716565b82526002546000848152600460205260409020600301546110c99183916110919163ffffffff61405716565b6020808401919091526001600160a01b038a1660009081526003909152604090206004015460ff1615156001141561135f5760008381526004602090815260408083206002908101546001600160a01b03808f16865260068552838620600386528487209093015416855292529091205410156111775760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038f81168752600386528487209093015490921685529252909120546111ca9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038e8116855260038452828520600281018054831687529285528386209690965587516001909601548116855260068452828520915416845290915290205461122b91614121565b6001600160a01b03808b166000908152600360209081526040808320600181015485168452600683528184206002909101549094168352929052908120919091556112bb9083905b602090810291909101513060009081526005835260408082206001600160a01b038f81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038e81168086526003855283862060029081018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546113299163ffffffff613ff516565b6001600160a01b03808b166000908152600660209081526040808320600383528184206002015490941683529290522055611512565b60008083528381526004602090815260408083206002908101546001600160a01b038e8116865260068552838620600386528487209093015416855292529091205410156113de5760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038f81168752600386528487209093015490921685529252909120546114319163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038e811685526003845282852060020154168452909152812091909155611472908390611273565b3060009081526005602090815260408083206001600160a01b038e81168086526003855283862060029081018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546114e09163ffffffff613ff516565b6001600160a01b03808b1660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03881660009081526003602052604090206004015460ff161515600114156117c75760008381526004602090815260408083206003908101546001600160a01b03808e168652600685528386209285528386206002015416855292529091205410156115b65760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038e811687529285528386206002015490921685529252909120546116089163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d8116855260038452828520600201541684529091529020556116948260015b602090810291909101516001600160a01b03808c16600090815260038452604080822060018101548416835260068652818320600290910154909316825291909352909120549063ffffffff61412116565b6001600160a01b03808a166000908152600360209081526040808320600180820154861685526006845282852060029092015490951684529091529020919091556117249083905b602090810291909101513060009081526005835260408082206001600160a01b038e81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038d811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546117919163ffffffff613ff516565b6001600160a01b03808a166000908152600660209081526040808320600383528184206002015490941683529290522055611976565b600060208084018290528482526004815260408083206003908101546001600160a01b038d81168652600685528386209285528386206002015416855292529091205410156118475760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038e811687529285528386206002015490921685529252909120546118999163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d8116855260038452828520600201541684529091529020556118d78260016116dc565b3060009081526005602090815260408083206001600160a01b038d811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546119449163ffffffff613ff516565b6001600160a01b03808a1660009081526006602090815260408083206003835281842060020154909416835292905220555b6000838152600460208190526040909120015460011415611a43578561ffff16600114156119da576040516001600160a01b038a169088156108fc029089906000818181858888f193505050501580156119d4573d6000803e3d6000fd5b50611a43565b8561ffff1660021415611a43576000838152600460205260409020600301546001600160a01b038916906108fc90611a19908a9063ffffffff613ff516565b6040518115909202916000818181858888f19350505050158015611a41573d6000803e3d6000fd5b505b6000838152600460208190526040909120015460021415611b97578561ffff1660011415611afd57846001600160a01b031663a9059cbb8a896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611acb57600080fd5b505af1158015611adf573d6000803e3d6000fd5b505050506040513d6020811015611af557600080fd5b50611b979050565b8561ffff1660021415611b9757846001600160a01b031663a9059cbb89896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611b6a57600080fd5b505af1158015611b7e573d6000803e3d6000fd5b505050506040513d6020811015611b9457600080fd5b50505b6000838152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815185815291517f65e0c7182ce84cd9087c1b07dc4b65875578877b885848e4be19ee312f2c3d319281900390910190a15060019998505050505050505050565b60408051636eb1769f60e11b81526001600160a01b0384811660048301528381166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b158015611c6e57600080fd5b505afa158015611c82573d6000803e3d6000fd5b505050506040513d6020811015611c9857600080fd5b5051949350505050565b6040805160f087901b6001600160f01b031916602080830191909152606087811b6001600160601b031990811660228501529087901b166036830152604a80830186905283518084039091018152606a9092019092528051910120600154600091906001600160a01b03163314611d4a5760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114611da6576040805162461bcd60e51b815260206004820152601160248201527001029ba30ba3ab9902330b4b632b217171607d1b604482015290519081900360640190fd5b8261ffff1660011415611dd9576000908152600460205260409020600501805460ff191660019081179091559050610e2c565b8261ffff1660021415611e0c576000908152600460205260409020600501805461ff001916610100179055506001610e2c565b5095945050505050565b604080516001600160f01b031960f088901b166020808301919091526001600160601b0319606088811b8216602285015287901b166036830152604a80830186905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff1615156001148015611ea157506001546001600160a01b031633145b611edc5760405162461bcd60e51b81526004018080602001828103825260368152602001806144bd6036913960400191505060405180910390fd5b6000818152600460205260409020600101544210611f39576040805162461bcd60e51b81526020600482015260156024820152742a34b6b2901022bc3834b932b21024b9b9bab2971760591b604482015290519081900360640190fd5b6000818152600460208190526040909120015460011415611f8c576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611f8a573d6000803e3d6000fd5b505b600081815260046020819052604090912001546002141561203457826001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b505050506040513d602081101561203157600080fd5b50505b6000818152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815183815291517fd9b627ddaa414e8e6c82366cc9c179f6281d73968827cc17038a56852e28ac8b9281900390910190a15060019695505050505050565b6000546001600160a01b031633146120fe5760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b60008111612149576040805162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081199594814195c98d95b9d606a1b604482015290519081900360640190fd5b600255565b604080516001600160f01b031960f087901b166020808301919091526001600160601b0319606087811b8216602285015286901b166036830152604a80830185905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff161515600114612210576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b600081815260046020526040902060010154612273576040805162461bcd60e51b815260206004820152601f60248201527f53656c6c65722043616e63656c2074696d65206973204469666665722e2e2000604482015290519081900360640190fd5b336001600160a01b038516146122c2576040805162461bcd60e51b815260206004820152600f60248201526e024b73b30b634b2102ab9b2b917171608d1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600360205260409020600201541615612367576001600160a01b038085166000908152600660209081526040808320600383528184206002015490941683529290522054612367576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e74204665652042616c616e63652e2e000000000000604482015290519081900360640190fd5b6001600160a01b03848116600090815260036020526040902060020154161580156123a45750600081815260046020819052604090912001546002145b156124825760008181526004602052604090206003015434101561240f576040805162461bcd60e51b815260206004820181905260248201527f4e656564206d6f7265206465706f73697420616d6f756e7420666f7220666565604482015290519081900360640190fd5b6001600160a01b038085166000908152600660209081526040808320600383528184206002015490941683529290522054612450903463ffffffff61412116565b6001600160a01b0380861660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03848116600090815260036020526040902060020154161580156124bf5750600081815260046020819052604090912001546001145b156125435760008181526004602090815260408083206003908101546001600160a01b03808a16865260068552838620928552838620600201541685529252909120546125119163ffffffff61412116565b6001600160a01b0380861660009081526006602090815260408083206003835281842060020154909416835292905220555b60008181526004602090815260408083206003908101546001600160a01b03808a168652600685528386209285528386206002015416855292529091205410156125d4576040805162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742046656520666f72207468697320547261646500604482015290519081900360640190fd5b600081815260046020908152604080832060010192909255815183815291517fe95fa7985c7585e90dab2dc46470726468662be06f67d79a31a5012e4bc0edeb9281900390910190a150600195945050505050565b6000546001600160a01b031633146126725760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001600160a01b0381166126bf576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015460ff93841695929491938181169161010090041687565b600660209081526000928352604080842090915290825290205481565b60006001600160a01b0384161580159061277257506001600160a01b03831615155b6127b3576040805162461bcd60e51b815260206004820152600d60248201526c456d707479204164647265737360981b604482015290519081900360640190fd5b816127bf848630611c1b565b101561280b576040805162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018590529151918516916323b872dd916064808201926020929091908290030181600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b505050506040513d602081101561288e57600080fd5b50506001600160a01b038085166000908152600660209081526040808320938716835292905220546128c6908363ffffffff61412116565b6001600160a01b038086166000908152600660209081526040808320938816835292905220555060019392505050565b6001546000906001600160a01b031633146129425760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b604080516001600160f01b031960f089901b166020808301919091526001600160601b0319606089811b8216602285015288901b166036830152604a80830187905283518084039091018152606a9092018352815191810191909120600081815260049092529190205460ff1615156001146129f8576040805162461bcd60e51b815260206004820152601060248201526f029ba30ba3ab9902330b4b632b21717160851b604482015290519081900360640190fd5b612a00614360565b6000612a1b6064670de0b6b3a764000063ffffffff61405716565b9050612a4c81611091600254600460008881526020019081526020016000206002015461405790919063ffffffff16565b8252600254600084815260046020526040902060030154612a789183916110919163ffffffff61405716565b6020808401919091526001600160a01b03891660009081526003909152604090206004015460ff16151560011415612caa5760008381526004602090815260408083206002908101546001600160a01b03808e1686526006855283862060038652848720909301541685529252909120541015612b265760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038e8116875260038652848720909301549092168552925290912054612b799163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d811685526003845282852060020154168452909152812091909155612bba908390611642565b6001600160a01b03808a16600090815260036020908152604080832060018101548516845260068352818420600290910154909416835292905290812091909155612c069083906116dc565b3060009081526005602090815260408083206001600160a01b038d8116808652600385528386206002908101805484168852938652848720979097558986526004855283862090960154958552600684528285209154168452909152902054612c749163ffffffff613ff516565b6001600160a01b03808a166000908152600660209081526040808320600383528184206002015490941683529290522055612e5d565b60008083528381526004602090815260408083206002908101546001600160a01b038d811686526006855283862060038652848720909301541685529252909120541015612d295760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038e8116875260038652848720909301549092168552925290912054612d7c9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d811685526003845282852060020154168452909152812091909155612dbd9083906116dc565b3060009081526005602090815260408083206001600160a01b038d8116808652600385528386206002908101805484168852938652848720979097558986526004855283862090960154958552600684528285209154168452909152902054612e2b9163ffffffff613ff516565b6001600160a01b03808a1660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03871660009081526003602052604090206004015460ff161515600114156130e95760008381526004602090815260408083206003908101546001600160a01b03808d16865260068552838620928552838620600201541685529252909120541015612f015760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038d81168752928552838620600201549092168552925290912054612f539163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038c811685526003845282852060028101805483168752928552838620969096558784015160019096015481168552600684528285209154168452909152902054612fb691614121565b6001600160a01b038089166000908152600360209081526040808320600180820154861685526006845282852060029092015490951684529091529020919091556130469083905b602090810291909101513060009081526005835260408082206001600160a01b038d81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038c811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546130b39163ffffffff613ff516565b6001600160a01b038089166000908152600660209081526040808320600383528184206002015490941683529290522055613298565b600060208084018290528482526004815260408083206003908101546001600160a01b038c81168652600685528386209285528386206002015416855292529091205410156131695760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038d811687529285528386206002015490921685529252909120546131bb9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038c8116855260038452828520600201541684529091529020556131f9826001612ffe565b3060009081526005602090815260408083206001600160a01b038c811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546132669163ffffffff613ff516565b6001600160a01b0380891660009081526006602090815260408083206003835281842060020154909416835292905220555b600083815260046020819052604090912001546001141561330f576000838152600460205260409020600301546001600160a01b038816906108fc906132e590899063ffffffff613ff516565b6040518115909202916000818181858888f1935050505015801561330d573d6000803e3d6000fd5b505b60008381526004602081905260409091200154600214156133b757846001600160a01b031663a9059cbb88886040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561338a57600080fd5b505af115801561339e573d6000803e3d6000fd5b505050506040513d60208110156133b457600080fd5b50505b6000838152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815185815291517f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d149281900390910190a150600198975050505050505050565b604080516001600160f01b031960f087901b166020808301919091526001600160601b0319606087811b8216602285015286901b166036830152604a80830185905283518084039091018152606a9092019092528051910120600154600091906001600160a01b031633146134e05760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114613544576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b6000818152600460205260409020600190810154146135aa576040805162461bcd60e51b815260206004820152601f60248201527f53656c6c65722043616e63656c2074696d65206973204469666665722e2e2000604482015290519081900360640190fd5b6001546135c990429063ffffffff600160a01b90910481169061412116565b60008281526004602090815260409182902060010192909255805183815290517f43e76a2687c7b12792086e4c776772be26c4d6a7041115f446cbc22ccada08ab929181900390910190a150600195945050505050565b8261ffff16600114156137105733600090815260066020908152604080832083805290915290205484111561369c576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742065746865722062616c616e6365000000000000604482015290519081900360640190fd5b3360009081526006602090815260408083208380529091529020546136c7908563ffffffff613ff516565b336000818152600660209081526040808320838052909152808220939093559151909186156108fc02918791818181858888f19350505050158015610a5a573d6000803e3d6000fd5b8261ffff1660021415610bb05780613865573360009081526006602090815260408083206001600160a01b0386168452909152902054841115613797576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b3360009081526006602090815260408083206001600160a01b03861684529091529020546137cb908563ffffffff613ff516565b3360008181526006602090815260408083206001600160a01b03881680855290835281842095909555805163a9059cbb60e01b81526004810194909452602484018990525163a9059cbb93604480820194918390030190829087803b15801561383357600080fd5b505af1158015613847573d6000803e3d6000fd5b505050506040513d602081101561385d57600080fd5b50610bb09050565b8060011415610bb05733600090815260066020908152604080832060038352818420600201546001600160a01b031684529091529020548411156138ed576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b33600090815260066020908152604080832060038352818420600201546001600160a01b0316845290915290205461392b908563ffffffff613ff516565b336000818152600660209081526040808320600380845282852060020180546001600160a01b0390811687529285528386209790975585855283529454815163a9059cbb60e01b81526004810195909552602485018a9052905194169363a9059cbb93604480820194918390030190829087803b158015610b8357600080fd5b6003602081905260009182526040909120805460018201546002830154938301546004909301546001600160a01b039283169491831693919092169160ff1685565b60025481565b604080516001600160f01b031960f08f901b166020808301919091526001600160601b031960608f811b821660228501528e901b166036830152604a8083018d905283518084039091018152606a9092019092528051910120600090613ac58d8d87356001600160a01b031688600160200201356001600160a01b031688600060028110613a7d57fe5b60200201356001600160a01b031689600160028110613a9857fe5b60200201356001600160a01b031689600060028110613ab357fe5b60200201358a6001602002013561417b565b50336001600160a01b038e1614613b14576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2102ab9b2b9171760911b604482015290519081900360640190fd5b8661ffff1660011480613b2b57508661ffff166002145b613b6e576040805162461bcd60e51b815260206004820152600f60248201526e024b73b30b634b2102a3cb83297171608d1b604482015290519081900360640190fd5b60008181526004602052604090205460ff1615613bce576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b6001600160a01b0384351615613c505760018335148015613c1557506001600160a01b038d8116600090815260066020908152604080832088359094168352929052205415155b613c505760405162461bcd60e51b815260040180806020018281038252602981526020018061437f6029913960400191505060405180910390fd5b6001600160a01b03843516158015613c6c57508661ffff166002145b15613ce9578235158015613c805750883410155b613cbb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806143a8602e913960400191505060405180910390fd5b6001600160a01b038d8116600090815260066020908152604080832088359094168352929052208054340190555b6001600160a01b03843516158015613d0557508661ffff166001145b15613d91578235158015613d285750613d248b8a63ffffffff61412116565b3410155b613d635760405162461bcd60e51b815260040180806020018281038252602e8152602001806143a8602e913960400191505060405180910390fd5b6001600160a01b038d81166000908152600660209081526040808320883590941683529290522080548a0190555b6001600160a01b038d81166000908152600660209081526040808320883590941683529290522054891115613e0d576040805162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742046656520666f72207468697320547261646500604482015290519081900360640190fd5b8661ffff1660011415613eb4576001600160a01b038a1615613e605760405162461bcd60e51b81526004018080602001828103825260238152602001806144016023913960400191505060405180910390fd5b348b11158015613e705750600034115b613eb4576040805162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21020b6b7bab73a171760811b604482015290519081900360640190fd5b8661ffff1660021415613f4757604080516323b872dd60e01b81526001600160a01b038f81166004830152306024830152604482018e90529151918c16916323b872dd916064808201926020929091908290030181600087803b158015613f1a57600080fd5b505af1158015613f2e573d6000803e3d6000fd5b505050506040513d6020811015613f4457600080fd5b50505b600063ffffffff871615613f6d57613f684263ffffffff808a169061412116565b613f70565b60015b600083815260046020818152604092839020805460ff1916600190811782558101859055600281018f9055600381018e905561ffff8d16920191909155815185815291519293507f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c92918290030190a15060019e9d5050505050505050505050505050565b60008282111561404c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b60008261406657506000614051565b8282028284828161407357fe5b04146140b05760405162461bcd60e51b81526004018080602001828103825260218152602001806144246021913960400191505060405180910390fd5b9392505050565b600080821161410d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161411857fe5b04949350505050565b6000828201838110156140b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b038716156141cf576001600160a01b038981166000908152600360205260409020600180820180546001600160a01b031916938b1693909317909255600401805460ff191690911790555b8260011415614223576001600160a01b03898116600081815260036020819052604090912080546001600160a01b031990811690931781556002810180549093169389169390931790915501839055614267565b82614267576001600160a01b038916600081815260036020819052604090912080546001600160a01b03199081169093178155600281018054909316909255018390555b6001600160a01b038616156142b9576001600160a01b038881166000908152600360205260409020600180820180546001600160a01b031916938a1693909317909255600401805460ff191690911790555b816001141561430d576001600160a01b03888116600081815260036020819052604090912080546001600160a01b031990811690931781556002810180549093169388169390931790915501829055614351565b81614351576001600160a01b038816600081815260036020819052604090912080546001600160a01b03199081169093178155600281018054909316909255018290555b50600198975050505050505050565b6040518060400160405280600290602082028038833950919291505056fe496e73756666696369656e74204665652042616c616e6365206f722074797065206d69736d6174636854797065206d69736d61746368206f72206d73672e76616c7565206c657373207468656e2073656c6c6572666565496e73756666696369656e7420526566657272616c204665652042616c616e636520666f72206275796572496e76616c696420546f6b656e204164647265737320466f7220746869732054797065536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f772053656c6c6572206f7220427579657220446f65736e27742043616c6c2044697370757465546869732075736572206e6f7420616c6c6f77656420746f2063616c6c20746869732066756e6374696f6e546869732066756e6374696f6e20697320206f6e6c792063616c6c6564206279204f776e65722e2e496e76616c696420457363726f7720737461747573206f7220546869732075736572206e6f7420616c6c6f77656420746f2063616c6c496e73756666696369656e7420526566657272616c204665652042616c616e636520666f722073656c6c6572a265627a7a72315820785c56ea73665a828dbd4fcad31e45cae7a12683041945cffa6fffb132fdc48664736f6c634300050c0032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000008b29cfb173abb7a7fe0a9dac4f5ede8da94872f3

-----Decoded View---------------
Arg [0] : feeadd (address): 0x8B29cFb173ABb7a7Fe0A9DAC4F5eDe8Da94872f3

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008b29cfb173abb7a7fe0a9dac4f5ede8da94872f3


Deployed Bytecode Sourcemap

1574:32249:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3918:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3918:173:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3918:173:0;;;;:::i;:::-;;3264:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3264:154:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3264:154:0;-1:-1:-1;;;;;3264:154:0;;:::i;11818:708::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11818:708:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;11818:708:0;;;;;;;;;;;;;;;;;;;;;;:::i;18370:892::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18370:892:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;18370:892:0;;;;;-1:-1:-1;;;;;18370:892:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1678:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1678:25:0;;;:::i;:::-;;;;-1:-1:-1;;;;;1678:25:0;;;;;;;;;;;;;;2832:62;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2832:62:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2832:62:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27927:5658;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27927:5658:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;27927:5658:0;;;;;;-1:-1:-1;;;;;27927:5658:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;33597:212::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33597:212:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33597:212:0;;;;;;;;;;;;;;;;;;;:::i;21001:735::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21001:735:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;21001:735:0;;;;;;-1:-1:-1;;;;;21001:735:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17002:821::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17002:821:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;17002:821:0;;;;;-1:-1:-1;;;;;17002:821:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;4237:166::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4237:166:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4237:166:0;;:::i;14763:1746::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;14763:1746:0;;;;;-1:-1:-1;;;;;14763:1746:0;;;;;;;;;;;;;;;;;;;:::i;3565:179::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3565:179:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3565:179:0;-1:-1:-1;;;;;3565:179:0;;:::i;1651:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1651:20:0;;;:::i;2781:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2781:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2781:44:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2901:67:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2901:67:0;;;;;;;;;;:::i;4738:494::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4738:494:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4738:494:0;;;;;;;;;;;;;;;;;:::i;22212:5013::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22212:5013:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;22212:5013:0;;;;;-1:-1:-1;;;;;22212:5013:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;19751:750::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19751:750:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;19751:750:0;;;;;-1:-1:-1;;;;;19751:750:0;;;;;;;;;;;;;;;;;;;:::i;12921:1407::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12921:1407:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;12921:1407:0;;;;;;;;;;-1:-1:-1;;;;;12921:1407:0;;;;;;;;;;:::i;2730:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2730:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2730:44:0;-1:-1:-1;;;;;2730:44:0;;:::i;:::-;;;;-1:-1:-1;;;;;2730:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1755:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1755:27:0;;;:::i;6360:2579::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;6360:2579:0;;;;;;-1:-1:-1;;;;;6360:2579:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1710:38::-;;;-1:-1:-1;;;1710:38:0;;;;;:::o;3918:173::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4028:24;:55;;;;;;-1:-1:-1;;;4028:55:0;-1:-1:-1;;;;4028:55:0;;;;;;;;;3918:173::o;3264:154::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3339:23:0;;3331:51;;;;;-1:-1:-1;;;3331:51:0;;;;;;;;;;;;-1:-1:-1;;;3331:51:0;;;;;;;;;;;;;;;3393:5;:17;;-1:-1:-1;;;;;;3393:17:0;-1:-1:-1;;;;;3393:17:0;;;;;;;;;;3264:154::o;11818:708::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11948:5;:10;;11957:1;11948:10;11945:574;;;12009:4;11994:21;;;;:6;:21;;;;;;;;:33;;;;;;;;;11983:44;;;11975:82;;;;;-1:-1:-1;;;11975:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12124:4;12109:21;;;;:6;:21;;;;;;;;:33;;;;;;;;;:46;;12147:7;12109:46;:37;:46;:::i;:::-;12088:4;12073:21;;;;:6;:21;;;;;;;;:33;;;;;;;;;:82;;;;12170:21;;-1:-1:-1;;;;;12170:12:0;;;:21;;;;;12183:7;;12170:21;12073;12170;12183:7;12170:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12170:21:0;11945:574;;;12231:5;:10;;12240:1;12231:10;12228:291;;;12292:4;12277:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;12277:37:0;;;;;;;;;;12266:48;;;12258:86;;;;;-1:-1:-1;;;12258:86:0;;;;;;;;;;;;-1:-1:-1;;;12258:86:0;;;;;;;;;;;;;;;12414:4;12399:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;12399:37:0;;;;;;;;;;:50;;12441:7;12399:50;:41;:50;:::i;:::-;12374:4;12359:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;12359:37:0;;;;;;;;;;;;:90;;;;12464:43;;-1:-1:-1;;;12464:43:0;;;;;;;;;;;;;;;;;12359:37;;12464:30;;:43;;;;;12359:21;12464:43;;;;;;;;12359:37;12464:43;;;5:2:-1;;;;30:1;27;20:12;5:2;12464:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12464:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;12228:291:0;11818:708;;;;:::o;18370:892::-;18557:49;;;-1:-1:-1;;;;;;18557:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;18557:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18557::0;;;;;;18547:60;;;;;;;;;18510:4;18635:22;;;:10;:22;;;;;;:35;18510:4;;18547:60;18635:35;;:43;;:35;:43;:69;;;;-1:-1:-1;18694:10:0;;-1:-1:-1;;;;;18694:10:0;18682;:22;18635:69;18627:136;;;;-1:-1:-1;;;18627:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18785:22;;;;:10;:22;;;;;18831:1;18785:42;;;;:47;;;:99;;-1:-1:-1;18836:22:0;;;;:10;:22;;;;;:42;;;18881:3;-1:-1:-1;18785:99:0;18782:112;;;18886:8;;;18782:112;18916:22;;;;:10;:22;;;;;;;;:28;;18948:1;18916:33;18913:91;;;18967:25;;-1:-1:-1;;;;;18967:16:0;;;:25;;;;;18984:7;;18967:25;;;;18984:7;18967:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18967:25:0;18913:91;19028:22;;;;:10;:22;;;;;;;;:28;;19060:1;19028:33;19024:107;;;19084:8;-1:-1:-1;;;;;19078:24:0;;19103:7;19111;19078:41;;;;;;;;;;;;;-1:-1:-1;;;;;19078:41:0;-1:-1:-1;;;;;19078:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19078:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19078:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;19024:107:0;19157:22;;;;:10;:22;;;;;;;;19150:29;;-1:-1:-1;;19150:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19150:29:0;;;19194;;;;;;;;;;;;;;;;;19250:4;19243:11;;;18370:892;;;;;;;;:::o;1678:25::-;;;-1:-1:-1;;;;;1678:25:0;;:::o;2832:62::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;27927:5658::-;28134:10;;28095:4;;-1:-1:-1;;;;;28134:10:0;28120;:24;28112:79;;;;-1:-1:-1;;;28112:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28243:49;;;-1:-1:-1;;;;;;28243:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;28243:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;28243::0;;;;;;28233:60;;;;;;;;;28212:18;28323:22;;;:10;:22;;;;;;:36;;;;;:44;;:36;:44;;:91;;-1:-1:-1;28371:22:0;;;;:10;:22;;;;;:35;;;;;;;;;:43;;:35;:43;28323:91;28315:141;;;;-1:-1:-1;;;28315:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28486:22;;;;:10;:22;;;;;:35;;;:43;;:35;:43;28478:72;;;;;-1:-1:-1;;;28478:72:0;;;;;;;;;;;;-1:-1:-1;;;28478:72:0;;;;;;;;;;;;;;;28580:7;:12;;28591:1;28580:12;:28;;;;28596:7;:12;;28607:1;28596:12;28580:28;28572:61;;;;;-1:-1:-1;;;28572:61:0;;;;;;;;;;;;-1:-1:-1;;;28572:61:0;;;;;;;;;;;;;;;28655:25;;:::i;:::-;28691:15;28708:26;28717:3;28727:6;28708:26;:18;:26;:::i;:::-;28691:43;;28758:65;28815:7;28759:50;28796:12;;28759:10;:22;28770:10;28759:22;;;;;;;;;;;:32;;;:36;;:50;;;;:::i;:::-;28758:56;:65;:56;:65;:::i;:::-;28745:78;;28909:12;;28753:1;28873:22;;;:10;28745;28873:22;;;;:31;;;28872:64;;28928:7;;28873:49;;;:35;:49;:::i;28872:64::-;28859:10;;;;:77;;;;-1:-1:-1;;;;;29023:21:0;;;;;;:12;:21;;;;;;:37;;;;;:45;;28867:1;29023:45;29020:1878;;;29163:22;;;;:10;:22;;;;;;;;:32;;;;;-1:-1:-1;;;;;29097:21:0;;;;;:12;:21;;;;;29119:12;:21;;;;;:39;;;;;29097:62;;;;;;;;:98;;29089:155;;;;-1:-1:-1;;;29089:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29395:22;;;;:10;:22;;;;;;;;:32;;;;;29343:4;29328:21;;:6;:21;;;;;-1:-1:-1;;;;;29350:21:0;;;;;:12;:21;;;;;:39;;;;;;;29328:62;;;;;;;;:100;;;:66;:100;:::i;:::-;29278:4;29263:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;29285:21:0;;;;;:12;:21;;;;;:39;;;;;;;29263:62;;;;;;;;:165;;;;29633:10;;29552:34;;;;;;;29539:48;;:12;:48;;;;;29588:39;;;29539:89;;;;;;;;:105;;:93;:105::i;:::-;-1:-1:-1;;;;;29460:21:0;;;29447:48;29460:21;;;:12;:21;;;;;;;;:34;;;;;;29447:48;;:12;:48;;;;;29496:39;;;;;;;;29447:89;;;;;;;;:197;;;;29748:78;;29815:7;;:10;;;;;;;;;;29763:4;29748:21;;;;:6;:21;;;;;;-1:-1:-1;;;;;29770:21:0;;;;;:12;:21;;;;;:39;;;;29748:62;;;;;;;;;;;:78;:66;:78;:::i;:::-;29698:4;29683:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;29705:21:0;;;;;;:12;:21;;;;;:39;;;;;;;;29683:62;;;;;;;;:143;;;;29977:22;;;:10;:22;;;;;:32;;;;29910:21;;;:12;:21;;;;;29932:39;;;29910:62;;;;;;;;:100;;;:66;:100;:::i;:::-;-1:-1:-1;;;;;29845:21:0;;;;;;;:12;:21;;;;;;;;29867:12;:21;;;;;:39;;;;;;29845:62;;;;;;:165;29020:1878;;;30174:1;30161:14;;;30268:22;;;:10;30161;30268:22;;;;;;;:32;;;;;-1:-1:-1;;;;;30202:21:0;;;;;:12;:21;;;;;30224:12;:21;;;;;:39;;;;;30202:62;;;;;;;;:98;;30194:155;;;;-1:-1:-1;;;30194:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30501:22;;;;:10;:22;;;;;;;;:32;;;;;30449:4;30434:21;;:6;:21;;;;;-1:-1:-1;;;;;30456:21:0;;;;;:12;:21;;;;;:39;;;;;;;30434:62;;;;;;;;:100;;;:66;:100;:::i;:::-;30383:4;30368:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;30390:21:0;;;;;:12;:21;;;;;:39;;;;30368:62;;;;;;;:166;;;;30619:78;;30686:7;;:10;;30619:78;30568:4;30553:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;30575:21:0;;;;;;:12;:21;;;;;:39;;;;;;;;30553:62;;;;;;;;:144;;;;30849:22;;;:10;:22;;;;;:32;;;;30782:21;;;:12;:21;;;;;30804:39;;;30782:62;;;;;;;;:100;;;:66;:100;:::i;:::-;-1:-1:-1;;;;;30716:21:0;;;;;;;:12;:21;;;;;;;;30738:12;:21;;;;;:39;;;;;;30716:62;;;;;;:166;29020:1878;-1:-1:-1;;;;;30959:20:0;;;;;;:12;:20;;;;;:36;;;;;:44;;:36;:44;30956:1839;;;31097:22;;;;:10;:22;;;;;;;;:31;;;;;-1:-1:-1;;;;;31033:20:0;;;;;:12;:20;;;;;31054;;;;;;:38;;;;31033:60;;;;;;;;:95;;31025:152;;;;-1:-1:-1;;;31025:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31326:22;;;;:10;:22;;;;;;;;:31;;;;;31275:4;31260:21;;:6;:21;;;;;-1:-1:-1;;;;;31282:20:0;;;;;;;;;;;:38;;;;;;31260:61;;;;;;;;:98;;;:65;:98;:::i;:::-;31211:4;31196:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;31218:20:0;;;;;:12;:20;;;;;:38;;;;31196:61;;;;;;;:162;31467:103;31559:7;31218:38;31559:10;;;;;;;;;;-1:-1:-1;;;;;31480:20:0;;;31467:47;31480:20;;;:12;:20;;;;;;:33;;;;;;31467:47;;:12;:47;;;;;31515:38;;;;;;;;31467:87;;;;;;;;;;;:103;:91;:103;:::i;:::-;-1:-1:-1;;;;;31390:20:0;;;31377:47;31390:20;;;:12;:20;;;;;;;;:33;;;;;;;31377:47;;:12;:47;;;;;31425:38;;;;;;;;31377:87;;;;;;;:193;;;;31672:77;;31738:7;;:10;;;;;;;;;;31687:4;31672:21;;;;:6;:21;;;;;;-1:-1:-1;;;;;31694:20:0;;;;;:12;:20;;;;;:38;;;;31672:61;;;;;;;;;;;:77;:65;:77;:::i;:::-;31623:4;31608:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;31630:20:0;;;;;;:12;:20;;;;;;:38;;;;;;31608:61;;;;;;;;:141;;;;31897:22;;;:10;:22;;;;;:31;;;;31832:20;;;:12;:20;;;;;31853:38;;;31832:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;31768:20:0;;;;;;;:12;:20;;;;;;;;31789:12;:20;;;;;:38;;;;;;31768:60;;;;;;:161;30956:1839;;;32086:1;32074:10;;;;:13;;;32178:22;;;:10;:22;;;;;;:31;;;;;-1:-1:-1;;;;;32114:20:0;;;;;:12;:20;;;;;32135;;;;;;:38;;;;32114:60;;;;;;;;:95;;32106:152;;;;-1:-1:-1;;;32106:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32408:22;;;;:10;:22;;;;;;;;:31;;;;;32357:4;32342:21;;:6;:21;;;;;-1:-1:-1;;;;;32364:20:0;;;;;;;;;;;:38;;;;;;32342:61;;;;;;;;:98;;;:65;:98;:::i;:::-;32292:4;32277:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;32299:20:0;;;;;:12;:20;;;;;:38;;;;32277:61;;;;;;;:163;32524:77;32590:7;32299:38;32590:10;;32524:77;32474:4;32459:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;32481:20:0;;;;;;:12;:20;;;;;;:38;;;;;;32459:61;;;;;;;;:142;;;;32748:22;;;:10;:22;;;;;:31;;;;32683:20;;;:12;:20;;;;;32704:38;;;32683:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;32620:20:0;;;;;;;:12;:20;;;;;;;;32641:12;:20;;;;;:38;;;;;;32620:60;;;;;;:160;30956:1839;32824:22;;;;:10;:22;;;;;;;;:28;;32856:1;32824:33;32821:303;;;32885:7;:12;;32896:1;32885:12;32882:230;;;32928:25;;-1:-1:-1;;;;;32928:16:0;;;:25;;;;;32945:7;;32928:25;;;;32945:7;32928:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32928:25:0;32882:230;;;32994:7;:12;;33005:1;32994:12;32990:122;;;33062:22;;;;:10;:22;;;;;:31;;;-1:-1:-1;;;;;33034:15:0;;;:61;;33050:44;;:7;;:44;:11;:44;:::i;:::-;33034:61;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33034:61:0;32990:122;33138:22;;;;:10;:22;;;;;;;;:28;;33170:1;33138:33;33135:314;;;33200:7;:12;;33211:1;33200:12;33197:240;;;33250:14;-1:-1:-1;;;;;33244:30:0;;33275:7;33283;33244:47;;;;;;;;;;;;;-1:-1:-1;;;;;33244:47:0;-1:-1:-1;;;;;33244:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33244:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33244:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33197:240:0;;-1:-1:-1;33197:240:0;;33332:7;:12;;33343:1;33332:12;33328:109;;;33379:14;-1:-1:-1;;;;;33373:30:0;;33404:6;33412:7;33373:48;;;;;;;;;;;;;-1:-1:-1;;;;;33373:48:0;-1:-1:-1;;;;;33373:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33373:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33373:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;33328:109:0;33469:22;;;;:10;:22;;;;;;;;33462:29;;-1:-1:-1;;33462:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33462:29:0;;;33508:27;;;;;;;;;;;;;;;;;-1:-1:-1;33563:4:0;;27927:5658;-1:-1:-1;;;;;;;;;27927:5658:0:o;33597:212::-;33758:43;;;-1:-1:-1;;;33758:43:0;;-1:-1:-1;;;;;33758:43:0;;;;;;;;;;;;;;;;33692:7;;33758:26;;;;;:43;;;;;;;;;;;;;;:26;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;33758:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33758:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33758:43:0;;33597:212;-1:-1:-1;;;;33597:212:0:o;21001:735::-;21194:49;;;;;;;-1:-1:-1;;;;;;21194:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;21194:49:0;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;21194::0;;;;;;;21184:60;;;;;21288:10;;-1:-1:-1;;21184:60:0;-1:-1:-1;;;;;21288:10:0;21274;:24;21266:80;;;;-1:-1:-1;;;21266:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21376:22;;;;:10;:22;;;;;:35;;;:43;;:35;:43;21368:73;;;;;-1:-1:-1;;;21368:73:0;;;;;;;;;;;;-1:-1:-1;;;21368:73:0;;;;;;;;;;;;;;;21466:11;:16;;21481:1;21466:16;21463:266;;;21508:22;;;;:10;:22;;;;;:36;;:43;;-1:-1:-1;;21508:43:0;21547:4;21508:43;;;;;;21547:4;-1:-1:-1;21566:11:0;;21463:266;21607:11;:16;;21622:1;21607:16;21604:125;;;21648:22;;;;:10;:22;;;;;:35;;:42;;-1:-1:-1;;21648:42:0;;;;;-1:-1:-1;21686:4:0;21706:11;;21604:125;21001:735;;;;;;;;:::o;17002:821::-;17187:49;;;-1:-1:-1;;;;;;17187:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;17187:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17187::0;;;;;;17177:60;;;;;;;;;17140:4;17255:22;;;:10;:22;;;;;;:35;17140:4;;17177:60;17255:35;;:43;;:35;:43;:69;;;;-1:-1:-1;17314:10:0;;-1:-1:-1;;;;;17314:10:0;17302;:22;17255:69;17247:136;;;;-1:-1:-1;;;17247:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17401:22;;;;:10;:22;;;;;:42;;;17446:3;-1:-1:-1;17393:82:0;;;;;-1:-1:-1;;;17393:82:0;;;;;;;;;;;;-1:-1:-1;;;17393:82:0;;;;;;;;;;;;;;;17491:22;;;;:10;:22;;;;;;;;:28;;17523:1;17491:33;17488:91;;;17542:25;;-1:-1:-1;;;;;17542:16:0;;;:25;;;;;17559:7;;17542:25;;;;17559:7;17542:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17542:25:0;17488:91;17593:22;;;;:10;:22;;;;;;;;:28;;17624:1;17593:32;17589:106;;;17648:8;-1:-1:-1;;;;;17642:24:0;;17667:7;17675;17642:41;;;;;;;;;;;;;-1:-1:-1;;;;;17642:41:0;-1:-1:-1;;;;;17642:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17642:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17642:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;17589:106:0;17721:22;;;;:10;:22;;;;;;;;17714:29;;-1:-1:-1;;17714:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17714:29:0;;;17758:28;;;;;;;;;;;;;;;;;-1:-1:-1;17811:4:0;;17002:821;-1:-1:-1;;;;;;17002:821:0:o;4237:166::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4333:1;4319:11;:15;4311:47;;;;;-1:-1:-1;;;4311:47:0;;;;;;;;;;;;-1:-1:-1;;;4311:47:0;;;;;;;;;;;;;;;4369:12;:26;4237:166::o;14763:1746::-;14946:49;;;-1:-1:-1;;;;;;14946:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;14946:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14946::0;;;;;;14936:60;;;;;;;;;14898:4;15015:22;;;:10;:22;;;;;;:35;14898:4;;14936:60;15015:35;;:43;;:35;:43;15007:81;;;;;-1:-1:-1;;;15007:81:0;;;;;;;;;;;;-1:-1:-1;;;15007:81:0;;;;;;;;;;;;;;;15107:22;;;;:10;:22;;;;;:42;;;15099:91;;;;;-1:-1:-1;;;15099:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15209:10;-1:-1:-1;;;;;15209:20:0;;;15201:48;;;;;-1:-1:-1;;;15201:48:0;;;;;;;;;;;;-1:-1:-1;;;15201:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15273:20:0;;;15324:1;15273:20;;;:12;:20;;;;;:38;;;;:53;15270:220;;-1:-1:-1;;;;;15385:20:0;;;15446:1;15385:20;;;:12;:20;;;;;;;;15406:12;:20;;;;;:38;;;;;;15385:60;;;;;;;15377:101;;;;;-1:-1:-1;;;15377:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15513:20:0;;;15564:1;15513:20;;;:12;:20;;;;;:38;;;;:53;:92;;;;-1:-1:-1;15571:22:0;;;;:10;:22;;;;;;;;:28;;15603:1;15571:33;15513:92;15510:366;;;15643:22;;;;:10;:22;;;;;:31;;;15630:9;:44;;15622:89;;;;;-1:-1:-1;;;15622:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15789:20:0;;;;;;;:12;:20;;;;;;;;15810:12;:20;;;;;:38;;;;;;15789:60;;;;;;;:75;;15854:9;15789:75;:64;:75;:::i;:::-;-1:-1:-1;;;;;15726:20:0;;;;;;;:12;:20;;;;;;;;15747:12;:20;;;;;:38;;;;;;15726:60;;;;;;:138;15510:366;-1:-1:-1;;;;;15899:20:0;;;15950:1;15899:20;;;:12;:20;;;;;:38;;;;:53;:92;;;;-1:-1:-1;15957:22:0;;;;:10;:22;;;;;;;;:28;;15989:1;15957:33;15899:92;15896:284;;;16136:22;;;;:10;:22;;;;;;;;:31;;;;;-1:-1:-1;;;;;16071:20:0;;;;;:12;:20;;;;;16092;;;;;;:38;;;;16071:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;16008:20:0;;;;;;;:12;:20;;;;;;;;16029:12;:20;;;;;:38;;;;;;16008:60;;;;;;:160;15896:284;16282:22;;;;:10;:22;;;;;;;;:31;;;;;-1:-1:-1;;;;;16218:20:0;;;;;:12;:20;;;;;16239;;;;;;:38;;;;16218:60;;;;;;;;:95;;16210:139;;;;;-1:-1:-1;;;16210:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16414:1;16369:22;;;:10;:22;;;;;;;;:42;;:46;;;;16439:32;;;;;;;;;;;;;;;;;-1:-1:-1;16497:4:0;;14763:1746;-1:-1:-1;;;;;14763:1746:0:o;3565:179::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3650:28:0;;3642:56;;;;;-1:-1:-1;;;3642:56:0;;;;;;;;;;;;-1:-1:-1;;;3642:56:0;;;;;;;;;;;;;;;3709:10;:27;;-1:-1:-1;;;;;;3709:27:0;-1:-1:-1;;;;;3709:27:0;;;;;;;;;;3565:179::o;1651:20::-;;;-1:-1:-1;;;;;1651:20:0;;:::o;2781:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2901:67::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4738:494::-;4830:4;-1:-1:-1;;;;;4855:19:0;;;;;;:51;;-1:-1:-1;;;;;;4878:28:0;;;;4855:51;4847:77;;;;;-1:-1:-1;;;4847:77:0;;;;;;;;;;;;-1:-1:-1;;;4847:77:0;;;;;;;;;;;;;;;4997:7;4943:50;4958:14;4973:5;4987:4;4943:14;:50::i;:::-;:61;;4935:96;;;;;-1:-1:-1;;;4935:96:0;;;;;;;;;;;;-1:-1:-1;;;4935:96:0;;;;;;;;;;;;;;;5042:63;;;-1:-1:-1;;;5042:63:0;;-1:-1:-1;;;;;5042:63:0;;;;;;;5091:4;5042:63;;;;;;;;;;;;:34;;;;;;:63;;;;;;;;;;;;;;;-1:-1:-1;5042:34:0;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;5042:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5042:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;5154:19:0;;;;;;;:12;5042:63;5154:19;;;;;;;:35;;;;;;;;;;:48;;5194:7;5154:48;:39;:48;:::i;:::-;-1:-1:-1;;;;;5116:19:0;;;;;;;:12;:19;;;;;;;;:35;;;;;;;;;:86;-1:-1:-1;5220:4:0;4738:494;;;;;:::o;22212:5013::-;22401:10;;22357:4;;-1:-1:-1;;;;;22401:10:0;22387;:24;22379:80;;;;-1:-1:-1;;;22379:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22501:49;;;-1:-1:-1;;;;;;22501:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;22501:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;22501::0;;;;;;22491:60;;;;;;;;;22470:18;22570:22;;;:10;:22;;;;;;:35;;;:43;;:35;:43;22562:72;;;;;-1:-1:-1;;;22562:72:0;;;;;;;;;;;;-1:-1:-1;;;22562:72:0;;;;;;;;;;;;;;;22645:25;;:::i;:::-;22682:15;22699:26;22708:3;22718:6;22699:26;:18;:26;:::i;:::-;22682:43;;22749:65;22806:7;22750:50;22787:12;;22750:10;:22;22761:10;22750:22;;;;;;;;;;;:32;;;:36;;:50;;;;:::i;22749:65::-;22736:78;;22900:12;;22744:1;22864:22;;;:10;22736;22864:22;;;;:31;;;22863:64;;22919:7;;22864:49;;;:35;:49;:::i;22863:64::-;22850:10;;;;:77;;;;-1:-1:-1;;;;;23023:21:0;;;;;;:12;:21;;;;;;:37;;;;;:45;;22858:1;23023:45;23020:1878;;;23163:22;;;;:10;:22;;;;;;;;:32;;;;;-1:-1:-1;;;;;23097:21:0;;;;;:12;:21;;;;;23119:12;:21;;;;;:39;;;;;23097:62;;;;;;;;:98;;23089:155;;;;-1:-1:-1;;;23089:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23395:22;;;;:10;:22;;;;;;;;:32;;;;;23343:4;23328:21;;:6;:21;;;;;-1:-1:-1;;;;;23350:21:0;;;;;:12;:21;;;;;:39;;;;;;;23328:62;;;;;;;;:100;;;:66;:100;:::i;:::-;23278:4;23263:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;23285:21:0;;;;;:12;:21;;;;;:39;;;;23263:62;;;;;;;:165;;;;23539:105;;23633:7;;:10;;23539:105;-1:-1:-1;;;;;23460:21:0;;;23447:48;23460:21;;;:12;:21;;;;;;;;:34;;;;;;23447:48;;:12;:48;;;;;23496:39;;;;;;;;23447:89;;;;;;;;:197;;;;23748:78;;23815:7;;:10;;23748:78;23698:4;23683:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;23705:21:0;;;;;;:12;:21;;;;;:39;;;;;;;;23683:62;;;;;;;;:143;;;;23977:22;;;:10;:22;;;;;:32;;;;23910:21;;;:12;:21;;;;;23932:39;;;23910:62;;;;;;;;:100;;;:66;:100;:::i;:::-;-1:-1:-1;;;;;23845:21:0;;;;;;;:12;:21;;;;;;;;23867:12;:21;;;;;:39;;;;;;23845:62;;;;;;:165;23020:1878;;;24174:1;24161:14;;;24268:22;;;:10;24161;24268:22;;;;;;;:32;;;;;-1:-1:-1;;;;;24202:21:0;;;;;:12;:21;;;;;24224:12;:21;;;;;:39;;;;;24202:62;;;;;;;;:98;;24194:155;;;;-1:-1:-1;;;24194:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24501:22;;;;:10;:22;;;;;;;;:32;;;;;24449:4;24434:21;;:6;:21;;;;;-1:-1:-1;;;;;24456:21:0;;;;;:12;:21;;;;;:39;;;;;;;24434:62;;;;;;;;:100;;;:66;:100;:::i;:::-;24383:4;24368:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;24390:21:0;;;;;:12;:21;;;;;:39;;;;24368:62;;;;;;;:166;;;;24619:78;;24686:7;;:10;;24619:78;24568:4;24553:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;24575:21:0;;;;;;:12;:21;;;;;:39;;;;;;;;24553:62;;;;;;;;:144;;;;24849:22;;;:10;:22;;;;;:32;;;;24782:21;;;:12;:21;;;;;24804:39;;;24782:62;;;;;;;;:100;;;:66;:100;:::i;:::-;-1:-1:-1;;;;;24716:21:0;;;;;;;:12;:21;;;;;;;;24738:12;:21;;;;;:39;;;;;;24716:62;;;;;;:166;23020:1878;-1:-1:-1;;;;;24959:20:0;;;;;;:12;:20;;;;;:36;;;;;:44;;:36;:44;24956:1839;;;25097:22;;;;:10;:22;;;;;;;;:31;;;;;-1:-1:-1;;;;;25033:20:0;;;;;:12;:20;;;;;25054;;;;;;:38;;;;25033:60;;;;;;;;:95;;25025:152;;;;-1:-1:-1;;;25025:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25326:22;;;;:10;:22;;;;;;;;:31;;;;;25275:4;25260:21;;:6;:21;;;;;-1:-1:-1;;;;;25282:20:0;;;;;;;;;;;:38;;;;;;25260:61;;;;;;;;:98;;;:65;:98;:::i;:::-;25211:4;25196:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;25218:20:0;;;;;:12;:20;;;;;:38;;;;;;;25196:61;;;;;;;;:162;;;;25559:10;;;;25218:38;25480:33;;;;;;25467:47;;:12;:47;;;;;25515:38;;;25467:87;;;;;;;;:103;;:91;:103::i;:::-;-1:-1:-1;;;;;25390:20:0;;;25377:47;25390:20;;;:12;:20;;;;;;;;:33;;;;;;;25377:47;;:12;:47;;;;;25425:38;;;;;;;;25377:87;;;;;;;:193;;;;25672:77;;25738:7;;:10;;;;;;;;;;25687:4;25672:21;;;;:6;:21;;;;;;-1:-1:-1;;;;;25694:20:0;;;;;:12;:20;;;;;:38;;;;25672:61;;;;;;;;;;;:77;:65;:77;:::i;:::-;25623:4;25608:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;25630:20:0;;;;;;:12;:20;;;;;;:38;;;;;;25608:61;;;;;;;;:141;;;;25897:22;;;:10;:22;;;;;:31;;;;25832:20;;;:12;:20;;;;;25853:38;;;25832:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;25768:20:0;;;;;;;:12;:20;;;;;;;;25789:12;:20;;;;;:38;;;;;;25768:60;;;;;;:161;24956:1839;;;26086:1;26074:10;;;;:13;;;26178:22;;;:10;:22;;;;;;:31;;;;;-1:-1:-1;;;;;26114:20:0;;;;;:12;:20;;;;;26135;;;;;;:38;;;;26114:60;;;;;;;;:95;;26106:152;;;;-1:-1:-1;;;26106:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26408:22;;;;:10;:22;;;;;;;;:31;;;;;26357:4;26342:21;;:6;:21;;;;;-1:-1:-1;;;;;26364:20:0;;;;;;;;;;;:38;;;;;;26342:61;;;;;;;;:98;;;:65;:98;:::i;:::-;26292:4;26277:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;26299:20:0;;;;;:12;:20;;;;;:38;;;;26277:61;;;;;;;:163;26524:77;26590:7;26299:38;26590:10;;26524:77;26474:4;26459:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;26481:20:0;;;;;;:12;:20;;;;;;:38;;;;;;26459:61;;;;;;;;:142;;;;26748:22;;;:10;:22;;;;;:31;;;;26683:20;;;:12;:20;;;;;26704:38;;;26683:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;26620:20:0;;;;;;;:12;:20;;;;;;;;26641:12;:20;;;;;:38;;;;;;26620:60;;;;;;:160;24956:1839;26814:22;;;;:10;:22;;;;;;;;:28;;26846:1;26814:33;26811:144;;;26906:22;;;;:10;:22;;;;;:31;;;-1:-1:-1;;;;;26878:15:0;;;:61;;26894:44;;:7;;:44;:11;:44;:::i;:::-;26878:61;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26878:61:0;26811:144;26983:22;;;;:10;:22;;;;;;;;:28;;27015:1;26983:33;26979:131;;;27052:14;-1:-1:-1;;;;;27046:30:0;;27077:6;27085:7;27046:48;;;;;;;;;;;;;-1:-1:-1;;;;;27046:48:0;-1:-1:-1;;;;;27046:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27046:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27046:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;26979:131:0;27137:22;;;;:10;:22;;;;;;;;27130:29;;-1:-1:-1;;27130:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27130:29:0;;;27175:20;;;;;;;;;;;;;;;;;-1:-1:-1;27213:4:0;;22212:5013;-1:-1:-1;;;;;;;;22212:5013:0:o;19751:750::-;19927:49;;;-1:-1:-1;;;;;;19927:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;19927:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19927::0;;;;;;;19917:60;;;;;20004:10;;19880:4;;19917:60;-1:-1:-1;;;;;20004:10:0;20016;20004:22;19996:78;;;;-1:-1:-1;;;19996:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20103:22;;;;:10;:22;;;;;:35;;;:43;;:35;:43;20095:81;;;;;-1:-1:-1;;;20095:81:0;;;;;;;;;;;;-1:-1:-1;;;20095:81:0;;;;;;;;;;;;;;;20204:22;;;;:10;:22;;;;;:42;;;;;:47;20195:93;;;;;-1:-1:-1;;;20195:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20362:24;;20352:35;;20353:3;;20362:24;-1:-1:-1;;;20362:24:0;;;;;;20352:9;:35;:::i;:::-;20307:22;;;;:10;:22;;;;;;;;;:42;;:80;;;;20411:33;;;;;;;;;;;;;;;;;;-1:-1:-1;20479:4:0;;19751:750;-1:-1:-1;;;;;19751:750:0:o;12921:1407::-;13042:5;:10;;13051:1;13042:10;13039:1282;;;13110:10;13097:24;;;;:12;:24;;;;;;;;:36;;;;;;;;;13086:47;;;13078:86;;;;;-1:-1:-1;;;13078:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13233:10;13220:24;;;;:12;:24;;;;;;;;:36;;;;;;;;;:49;;13261:7;13220:49;:40;:49;:::i;:::-;13193:10;13180:24;;;;:12;:24;;;;;;;;:36;;;;;;;;;:89;;;;13284:28;;13193:10;;13284:28;;;;;13304:7;;13284:28;13180:24;13284:28;13304:7;13193:10;13284:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13039:1282:0;13342:5;:10;;13351:1;13342:10;13339:982;;;13381:13;13378:932;;13504:10;13491:24;;;;:12;:24;;;;;;;;-1:-1:-1;;;;;13491:40:0;;;;;;;;;;13479:52;;;13471:91;;;;;-1:-1:-1;;;13471:91:0;;;;;;;;;;;;-1:-1:-1;;;13471:91:0;;;;;;;;;;;;;;;13639:10;13625:25;;;;:12;:25;;;;;;;;-1:-1:-1;;;;;13625:41:0;;;;;;;;;;:54;;13671:7;13625:54;:45;:54;:::i;:::-;13595:10;13581:25;;;;:12;:25;;;;;;;;-1:-1:-1;;;;;13581:41:0;;;;;;;;;;;:98;;;;13698:51;;-1:-1:-1;;;13698:51:0;;;;;;;;;;;;;;;;:30;;:51;;;;;;;;;;;;;13581:41;13698:51;;;5:2:-1;;;;30:1;27;20:12;5:2;13698:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13698:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13378:932:0;;-1:-1:-1;13378:932:0;;13805:8;13817:1;13805:13;13802:508;;;13938:10;13925:24;;;;:12;:24;;;;;;;;13950:12;:24;;;;;:42;;;-1:-1:-1;;;;;13950:42:0;13925:68;;;;;;;;13913:80;;;13905:119;;;;;-1:-1:-1;;;13905:119:0;;;;;;;;;;;;-1:-1:-1;;;13905:119:0;;;;;;;;;;;;;;;14129:10;14115:25;;;;:12;:25;;;;;;;;14141:12;:24;;;;;:42;;;-1:-1:-1;;;;;14141:42:0;14115:69;;;;;;;;:82;;14189:7;14115:82;:73;:82;:::i;:::-;14057:10;14043:25;;;;:12;:25;;;;;;;;14069:12;:24;;;;;;:42;;;;-1:-1:-1;;;;;14069:42:0;;;14043:69;;;;;;;;:154;;;;14222:24;;;;;:42;;14216:78;;-1:-1:-1;;;14216:78:0;;;;;;;;;;;;;;;;;14222:42;;;14216:58;;:78;;;;;;;;;;;;;14222:42;14216:78;;;5:2:-1;;;;30:1;27;20:12;2730:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2730:44:0;;;;;;;;;;;;;;;;:::o;1755:27::-;;;;:::o;6360:2579::-;6711:49;;;-1:-1:-1;;;;;;6711:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;6711:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6711::0;;;;;;;6701:60;;;;;-1:-1:-1;;6782:84:0;6711:49;;6810:7;;-1:-1:-1;;;;;6810:7:0;;6823:1;6818:7;;;;-1:-1:-1;;;;;6818:7:0;6826;6834:1;6826:10;;;;;;;;;;;-1:-1:-1;;;;;6826:10:0;6837:7;6845:1;6837:10;;;;;;;;;;;-1:-1:-1;;;;;6837:10:0;6848:5;6854:1;6848:8;;;;;;;;;;;6857:5;6863:1;6857:8;;;;6782:12;:84::i;:::-;-1:-1:-1;6907:10:0;-1:-1:-1;;;;;6907:21:0;;;6898:48;;;;;-1:-1:-1;;;6898:48:0;;;;;;;;;;;;-1:-1:-1;;;6898:48:0;;;;;;;;;;;;;;;6966:5;:8;;6973:1;6966:8;:22;;;;6978:5;:10;;6987:1;6978:10;6966:22;6957:51;;;;;-1:-1:-1;;;6957:51:0;;;;;;;;;;;;-1:-1:-1;;;6957:51:0;;;;;;;;;;;;;;;7027:22;;;;:10;:22;;;;;:35;;;:42;7019:80;;;;;-1:-1:-1;;;7019:80:0;;;;;;;;;;;;-1:-1:-1;;;7019:80:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7133:10:0;;;:25;7130:209;;7227:1;7217:8;;:11;:50;;;;-1:-1:-1;;;;;;7232:21:0;;;7266:1;7232:21;;;:12;:21;;;;;;;;7254:10;;;;;7232:33;;;;;;;:35;;7217:50;7209:104;;;;-1:-1:-1;;;7209:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7352:10:0;;;:25;:39;;;;;7381:5;:10;;7390:1;7381:10;7352:39;7349:282;;;7416:8;;:11;:38;;;;;7444:10;7431:9;:23;;7416:38;7407:98;;;;-1:-1:-1;;;7407:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:0;;;;;;;:12;:21;;;;;;;;7543:10;;;;;7521:33;;;;;;:46;;7558:9;7521:46;;;7349:282;-1:-1:-1;;;;;7655:10:0;;;:25;:39;;;;;7684:5;:10;;7693:1;7684:10;7655:39;7652:296;;;7719:8;;:11;:51;;;;-1:-1:-1;7747:23:0;:7;7759:10;7747:23;:11;:23;:::i;:::-;7734:9;:36;;7719:51;7710:111;;;;-1:-1:-1;;;7710:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7837:21:0;;;;;;;:12;:21;;;;;;;;7859:10;;;;;7837:33;;;;;;:47;;;;;;7652:296;-1:-1:-1;;;;;7972:21:0;;;;;;;:12;:21;;;;;;;;7994:10;;;;;7972:33;;;;;;;:47;-1:-1:-1;7972:47:0;7964:91;;;;;-1:-1:-1;;;7964:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8079:5;:10;;8088:1;8079:10;8076:213;;;-1:-1:-1;;;;;8113:28:0;;;8105:76;;;;-1:-1:-1;;;8105:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8213:9;8204:7;:18;;:34;;;;;8237:1;8226:9;:12;8204:34;8196:63;;;;;-1:-1:-1;;;8196:63:0;;;;;;;;;;;;-1:-1:-1;;;8196:63:0;;;;;;;;;;;;;;;8312:5;:10;;8321:1;8312:10;8309:135;;;8338:66;;;-1:-1:-1;;;8338:66:0;;-1:-1:-1;;;;;8338:66:0;;;;;;;8389:4;8338:66;;;;;;;;;;;;:34;;;;;;:66;;;;;;;;;;;;;;;-1:-1:-1;8338:34:0;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;8338:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8338:66:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8309:135:0;8464:26;8493:27;;;;:69;;8528:33;8529:3;8528:33;;;;;:9;:33;:::i;:::-;8493:69;;;8523:1;8493:69;8583:22;;;;:10;:22;;;;;;;;;:42;;-1:-1:-1;;8583:42:0;8621:4;8583:42;;;;;8636;;:63;;;8710:32;;;:45;;;8766:31;;;:43;;;8820:36;;;:28;;:36;;;;8882:19;;;;;;;8464:98;;-1:-1:-1;8882:19:0;;;;;;;;;-1:-1:-1;8927:4:0;;6360:2579;-1:-1:-1;;;;;;;;;;;;;;6360:2579:0:o;618:184::-;676:7;709:1;704;:6;;696:49;;;;;-1:-1:-1;;;696:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;768:5:0;;;618:184;;;;;:::o;810:250::-;868:7;892:6;888:47;;-1:-1:-1;922:1:0;915:8;;888:47;959:5;;;963:1;959;:5;:1;983:5;;;;;:10;975:56;;;;-1:-1:-1;;;975:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1051:1;810:250;-1:-1:-1;;;810:250:0:o;1068:333::-;1126:7;1225:1;1221;:5;1213:44;;;;;-1:-1:-1;;;1213:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1268:9;1284:1;1280;:5;;;;;;;1068:333;-1:-1:-1;;;;1068:333:0:o;429:181::-;487:7;519:5;;;543:6;;;;535:46;;;;;-1:-1:-1;;;535:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9609:1863;9808:4;-1:-1:-1;;;;;9856:23:0;;;9853:201;;-1:-1:-1;;;;;9939:21:0;;;;;;;:12;:21;;;;;:34;;;;:46;;-1:-1:-1;;;;;;9939:46:0;;;;;;;;;;;10000:36;;:42;;-1:-1:-1;;10000:42:0;;;;;;9853:201;10076:14;10094:1;10076:19;10073:563;;;-1:-1:-1;;;;;10156:21:0;;;;;;;:12;:21;;;;;;;;:40;;-1:-1:-1;;;;;;10156:40:0;;;;;;;;10211:39;;;:54;;;;;;;;;;;;;;;10280:34;:51;;;10073:563;;;10371:19;10368:268;;-1:-1:-1;;;;;10451:21:0;;;;;;:12;:21;;;;;;;;:40;;-1:-1:-1;;;;;;10451:40:0;;;;;;;;10506:39;;;:52;;;;;;;;10573:34;:51;;;10368:268;-1:-1:-1;;;;;10668:23:0;;;10665:198;;-1:-1:-1;;;;;10750:20:0;;;;;;;:12;:20;;;;;:33;;;;:45;;-1:-1:-1;;;;;;10750:45:0;;;;;;;;;;;10810:35;;:41;;-1:-1:-1;;10810:41:0;;;;;;10665:198;10886:13;10902:1;10886:17;10883:550;;;-1:-1:-1;;;;;10964:20:0;;;;;;;:12;:20;;;;;;;;:38;;-1:-1:-1;;;;;;10964:38:0;;;;;;;;11017;;;:52;;;;;;;;;;;;;;;11084:33;:49;;;10883:550;;;11173:18;11170:263;;-1:-1:-1;;;;;11253:20:0;;;;;;:12;:20;;;;;;;;:38;;-1:-1:-1;;;;;;11253:38:0;;;;;;;;11306;;;:51;;;;;;;;11372:33;:49;;;11170:263;-1:-1:-1;11460:4:0;9609:1863;;;;;;;;;;:::o;1574:32249::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;1574:32249:0;;;-1:-1:-1;;1574:32249:0:o

Swarm Source

bzzr://785c56ea73665a828dbd4fcad31e45cae7a12683041945cffa6fffb132fdc486

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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