Contract 0x5d6573e62e3688e40c1fc36e01b155fb0006f432 1

 

Contract Overview

multisender.app old
Balance:
0.0001 BNB

BNB Value:
$0.03 (@ $340.11/BNB)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x9a5eae5e83970a4911f4e26ac0bec9be30463e9fc40f4b5639356f0b0ace6f85Multi Transfer_O...94916272021-07-26 10:37:1962 days 28 mins ago0x031ae748345ae78763a40b24eda9d6de9c7b2673 IN  multisender.app old0.0001 BNB0.00098406
0x9031c9f5f242181b2ab269e425555e8d2130e103cdb519b4188cc049720868e5Claim Tokens90267342021-07-10 6:20:2278 days 4 hrs ago0x0039f22efb07a647557c7c5d17854cfd6d489ef3 IN  multisender.app old0 BNB0.00016026
0x1bd6d699c410e47da34960a9be35dad5aa2b7aeb25a17b97e8b53c79ff6f0c82Multisend Token90186882021-07-09 23:38:0478 days 11 hrs agoDogeforth: Deployer IN  multisender.app old0.5 BNB0.004810365
0xbdc7dfe37a6669c614a11dfd70209cfc1daeadc36b3db265d781e1509dd0a6deMultisend Token90155882021-07-09 21:03:0478 days 14 hrs ago0x254fadf9a61a3178d4e0a0b6bc3b5d39c26354ac IN  multisender.app old0.5 BNB0.07508778
0x895396d51a67c583c390bfcf9ba6e4afb9ca483c64bcb977116f8b3b7eca9cffMultisend Token90155862021-07-09 21:02:5878 days 14 hrs ago0x254fadf9a61a3178d4e0a0b6bc3b5d39c26354ac IN  multisender.app old0.5 BNB0.122343505
0xc425db119d00e0946ffc4838d93e7e37f1a858d277d93fe67ce80dcd6b9141f1Multisend Token90152352021-07-09 20:45:2578 days 14 hrs ago0x22625facd71c2b15044f99d4e8600a9c10bd6829 IN  multisender.app old0 BNB0.011469905
0x0156e358419e7265687635791376e589b686985f14d000c30a7e79f877184e3fMultisend Token ...90144592021-07-09 20:06:3778 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.0068841
0xd3fd47e1e27091f46d67b9e6fc9464ad21925a60e99589f104dffc898edd457bMultisend Token ...90144592021-07-09 20:06:3778 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785474
0x23ccfc2d30ad0e05a649cfb9a394dc664c114273dd75df0f232a8886f6d819baMultisend Token ...90144582021-07-09 20:06:3478 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785498
0x4886a90c902b7a2164d68071bce0cd39e4225323876c926296512f0dd0026a9eMultisend Token ...90144572021-07-09 20:06:3178 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785546
0x5f8038ac1648ad166ba5a6c0d8d0250ab1a661bfec4466b945051e42fbddd73eMultisend Token ...90144572021-07-09 20:06:3178 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785432
0x5104811ce7a7bed6d823c6bf1cb7028759704c555f5362d3a5e1cfcfd3de870aMultisend Token ...90144562021-07-09 20:06:2878 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.112121195
0xb0129586ebdc8f69bb20f0d33a4e4a7b65a9378abd7af8c8644533ed247820a2Multisend Token ...90144552021-07-09 20:06:2578 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.1078554
0x333f1ecb78508312a9aa764dca25576058d93eee852d6eb378c23686281c52ccMultisend Token ...90144552021-07-09 20:06:2578 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785462
0x703a9c11394feaf6dba88080571613e04f1365caa76a85c33ffa09dfae7e7e28Multisend Token ...90144542021-07-09 20:06:2278 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785516
0x84fe4903e1b43e02946f701df7d0ba4e41b22b98c916e28c77897ef59d30352eMultisend Token ...90144532021-07-09 20:06:1978 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785588
0xd62c1ebfbef03548ab702e9a8dfd42b50a218352b1aacef2623205fbdf0f00e2Multisend Token ...90144532021-07-09 20:06:1978 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785474
0x099380cb881fc30c6006d7ede6a448ede7b06ba3c666bbf071201470668149eeMultisend Token ...90144522021-07-09 20:06:1678 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785564
0xde7a86cfa4911607404f8a24ae88f969525377a413bf44827b4e150589f0d166Multisend Token ...90144512021-07-09 20:06:1378 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785636
0x4563f11288ee2b1828475989753b8897607a044f53a693e27c616401e5668a6bMultisend Token ...90144512021-07-09 20:06:1378 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785576
0xa500e6c49ffb9e33f30a71c5b9c0db5ed4cf3d0db7811c3f612047f82a264734Multisend Token ...90144502021-07-09 20:06:1078 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.1077798
0x951d83bdbfa7de773c92e2414edfe5baff2a4b5dd1dc6fe6987efc046a5484b5Multisend Token ...90144492021-07-09 20:06:0778 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785528
0x4f668bd1addcc689ceb3b12237ffdfbd8dfcbb30dae5bcbc1ed8af4fd3173f71Multisend Token ...90144492021-07-09 20:06:0778 days 14 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785534
0x993a4f680dc2e15e2634bc680e9aa1324fa6a300c888be558d8f96613ed2de8eMultisend Token ...90144482021-07-09 20:06:0478 days 15 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10785576
0xd4576469c2b16e8f22b269d189767ba917d5b3e74ce0a2a14d2b9ff57eb69605Multisend Token ...90144482021-07-09 20:06:0478 days 15 hrs ago0x2d49a9aca54257d0bb13c8bdc11266f120f0dc2c IN  multisender.app old0.53058210190625 BNB0.10778094
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x9031c9f5f242181b2ab269e425555e8d2130e103cdb519b4188cc049720868e590267342021-07-10 6:20:2278 days 4 hrs ago multisender.app old0x0039f22efb07a647557c7c5d17854cfd6d489ef3338.641101828552884566 BNB
0xe30294728f5e331f652efe367fa61a20117e7824dded37f175b852eab3e7c17590108642021-07-09 17:06:5278 days 17 hrs ago multisender.app old0xfa7d2ea5f2f8f94cde54be8957282ec84b503ae40.000001 BNB
0xe30294728f5e331f652efe367fa61a20117e7824dded37f175b852eab3e7c17590108642021-07-09 17:06:5278 days 17 hrs ago multisender.app old0x8f7c10f725853323af9ad428acbaa3bfdd1d9a2b0.000001 BNB
0xe30294728f5e331f652efe367fa61a20117e7824dded37f175b852eab3e7c17590108642021-07-09 17:06:5278 days 17 hrs ago multisender.app old0xfe59c4ce0b45997d24c03034396acf648c9a4d1f0.000001 BNB
0xe30294728f5e331f652efe367fa61a20117e7824dded37f175b852eab3e7c17590108642021-07-09 17:06:5278 days 17 hrs ago multisender.app old0x65af81855af6be6bf3a818167e9cf14ba3b1f1bf0.000001 BNB
0xe30294728f5e331f652efe367fa61a20117e7824dded37f175b852eab3e7c17590108642021-07-09 17:06:5278 days 17 hrs ago multisender.app old0x47eb130179cd0c25f11da3476f2493b5a0eb7a6b0.000001 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0xae7663115b0accf22dc49307d962db4034b9216c0.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x017d65402c78464b2f5e62319b78daf7b552a0590.03 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x2291e649cc1b0a4bcff64ab64574e35f2ae49f110.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x61e4eb4698ca6f2eb5cf29f407a4b41306ed5a1a0.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x4e0f205f977196d2ce37abcaaf13b9512062548a0.03 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x79708c882483a93c9f6f1d385a5301e1e08b04380.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x00142223e860a81786cd3d1388a44742427144d80.03 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x906e1c0dc4083ec8340e8693e83af650b717409d0.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0xdb0f738584fbae2d0ef79a6d62ed9376661d78c70.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0xba95a79706dc4b655eb302bdb16509a02f04ade30.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x2010da1e3801d98110a04bfefa1c7720d6a572d50.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x9c83d31fa58d20bca3fddee63a822e0751a0190e0.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x7f2317f5939384ceba965dbf9eb67057fccc451c0.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0xa9422f0ef26a69b670ae9ab4637900dad2421cd20.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0xac605c2f6e121a929cd9cd15d812d080b9776e5d0.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x6cd13d8eef9c7c517d0d2dfb3301f6da4eb2ef9a0.03 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0x18e3e93748d32c262147a732e45cfaed1b9371ac0.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0xe2f83d5d6708c34d30c71cf9a455f3a78b724e3a0.06 BNB
0x4f4b6e8941099d2c7fd88ee68c36c98193d949740fcf4be06fceb784ca14638690097122021-07-09 16:09:1678 days 18 hrs ago multisender.app old0xb9092fad6fcced4512203896e4e2b4bfa738fccf0.06 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UpgradebleStormSender

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-10-22
*/

// File: contracts/EternalStorage.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://rstormsf.github.io/multisender
pragma solidity 0.5.7;


/**
 * @title EternalStorage
 * @dev This contract holds all the necessary state variables to carry out the storage of any contract.
 */
contract EternalStorage {

    mapping(bytes32 => uint256) internal uintStorage;
    mapping(bytes32 => string) internal stringStorage;
    mapping(bytes32 => address) internal addressStorage;
    mapping(bytes32 => bytes) internal bytesStorage;
    mapping(bytes32 => bool) internal boolStorage;
    mapping(bytes32 => int256) internal intStorage;

}

// File: contracts/UpgradeabilityStorage.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://rstormsf.github.io/multisender
pragma solidity 0.5.7;


/**
 * @title UpgradeabilityStorage
 * @dev This contract holds all the necessary state variables to support the upgrade functionality
 */
contract UpgradeabilityStorage {
  // Version name of the current implementation
    string internal _version;

    // Address of the current implementation
    address internal _implementation;

    /**
    * @dev Tells the version name of the current implementation
    * @return string representing the name of the current version
    */
    function version() public view returns (string memory) {
        return _version;
    }

    /**
    * @dev Tells the address of the current implementation
    * @return address of the current implementation
    */
    function implementation() public view returns (address) {
        return _implementation;
    }
}

// File: contracts/UpgradeabilityOwnerStorage.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://rstormsf.github.io/multisender
pragma solidity 0.5.7;


/**
 * @title UpgradeabilityOwnerStorage
 * @dev This contract keeps track of the upgradeability owner
 */
contract UpgradeabilityOwnerStorage {
  // Owner of the contract
    address private _upgradeabilityOwner;

    /**
    * @dev Tells the address of the owner
    * @return the address of the owner
    */
    function upgradeabilityOwner() public view returns (address) {
        return _upgradeabilityOwner;
    }

    /**
    * @dev Sets the address of the owner
    */
    function setUpgradeabilityOwner(address newUpgradeabilityOwner) internal {
        _upgradeabilityOwner = newUpgradeabilityOwner;
    }

}

// File: contracts/OwnedUpgradeabilityStorage.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://rstormsf.github.io/multisender
pragma solidity 0.5.7;





/**
 * @title OwnedUpgradeabilityStorage
 * @dev This is the storage necessary to perform upgradeable contracts.
 * This means, required state variables for upgradeability purpose and eternal storage per se.
 */
contract OwnedUpgradeabilityStorage is UpgradeabilityOwnerStorage, UpgradeabilityStorage, EternalStorage {}

// File: contracts/multisender/Ownable.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://rstormsf.github.io/multisender
pragma solidity 0.5.7;



/**
 * @title Ownable
 * @dev This contract has an owner address providing basic authorization control
 */
contract Ownable is EternalStorage {
    /**
    * @dev Event to show ownership has been transferred
    * @param previousOwner representing the address of the previous owner
    * @param newOwner representing the address of the new owner
    */
    event OwnershipTransferred(address previousOwner, address newOwner);

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

    /**
    * @dev Tells the address of the owner
    * @return the address of the owner
    */
    function owner() public view returns (address) {
        return addressStorage[keccak256("owner")];
    }

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

    /**
    * @dev Sets a new owner address
    */
    function setOwner(address newOwner) internal {
        emit OwnershipTransferred(owner(), newOwner);
        addressStorage[keccak256("owner")] = newOwner;
    }
}

// File: contracts/multisender/Claimable.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://rstormsf.github.io/multisender
pragma solidity 0.5.7;




/**
 * @title Claimable
 * @dev Extension for the Ownable contract, where the ownership needs to be claimed.
 * This allows the new owner to accept the transfer.
 */
contract Claimable is EternalStorage, Ownable {
    function pendingOwner() public view returns (address) {
        return addressStorage[keccak256("pendingOwner")];
    }

    /**
    * @dev Modifier throws if called by any account other than the pendingOwner.
    */
    modifier onlyPendingOwner() {
        require(msg.sender == pendingOwner());
        _;
    }

    /**
    * @dev Allows the current owner to set the pendingOwner address.
    * @param newOwner The address to transfer ownership to.
    */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        addressStorage[keccak256("pendingOwner")] = newOwner;
    }

    /**
    * @dev Allows the pendingOwner address to finalize the transfer.
    */
    function claimOwnership() public onlyPendingOwner {
        emit OwnershipTransferred(owner(), pendingOwner());
        addressStorage[keccak256("owner")] = addressStorage[keccak256("pendingOwner")];
        addressStorage[keccak256("pendingOwner")] = address(0);
    }
}

// File: contracts/SafeMath.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://rstormsf.github.io/multisender
pragma solidity 0.5.7;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

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

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

// File: contracts/multisender/Messages.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://multisender.app
pragma solidity 0.5.7;


contract Messages is EternalStorage {
    struct Authorization {
        address authorizedSigner;
        uint256 expiration;
    }
    /**
     * Domain separator encoding per EIP 712.
     * keccak256(
     *     "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)"
     * )
     */
    bytes32 public constant EIP712_DOMAIN_TYPEHASH = 0xd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac56472;

    /**
     * Validator struct type encoding per EIP 712
     * keccak256(
     *     "Authorization(address authorizedSigner,uint256 expiration)"
     * )
     */
    bytes32 private constant AUTHORIZATION_TYPEHASH = 0xe419504a688f0e6ea59c2708f49b2bbc10a2da71770bd6e1b324e39c73e7dc25;


    /**
     * Domain separator per EIP 712
     */
    // bytes32 public DOMAIN_SEPARATOR;
    function DOMAIN_SEPARATOR() public view returns(bytes32) {
        bytes32 salt = 0xf2d857f4a3edcb9b78b4d503bfe733db1e3f6cdc2b7971ee739626c97e86a558;
        return keccak256(abi.encode(
            EIP712_DOMAIN_TYPEHASH,
            keccak256("Multisender"),
            keccak256("2.0"),
            uintStorage[keccak256("chainId")],
            address(this),
            salt
        ));
    }

    /**
     * @notice Calculates authorizationHash according to EIP 712.
     * @param _authorizedSigner address of trustee
     * @param _expiration expiration date
     * @return bytes32 EIP 712 hash of _authorization.
     */
    function hash(address _authorizedSigner, uint256 _expiration) public pure returns (bytes32) {
        return keccak256(abi.encode(
            AUTHORIZATION_TYPEHASH,
            _authorizedSigner,
            _expiration
        ));
    }

    /**
     * @return the recovered address from the signature
     */
    function recoverAddress(
        bytes32 messageHash,
        bytes memory signature
    )
        public
        view
        returns (address)
    {
        bytes32 r;
        bytes32 s;
        bytes1 v;
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := mload(add(signature, 0x60))
        }
        bytes32 digest = keccak256(abi.encodePacked(
            "\x19\x01",
            DOMAIN_SEPARATOR(),
            messageHash
        ));
        return ecrecover(digest, uint8(v), r, s);
    }

    function getApprover(uint256 timestamp, bytes memory signature) public view returns(address) {
        if (timestamp < now) {
            return address(0);
        }
        bytes32 messageHash = hash(msg.sender, timestamp);
        return recoverAddress(messageHash, signature);
    }


}

// File: contracts/multisender/UpgradebleStormSender.sol

// Roman Storm Multi Sender
// To Use this Dapp: https://multisender.app
pragma solidity 0.5.7;






/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
    function totalSupply() public view returns (uint256);

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

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

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


contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender)
        public
        view
        returns (uint256);

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

    function approve(address spender, uint256 value) public returns (bool);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}


contract UpgradebleStormSender is
    OwnedUpgradeabilityStorage,
    Claimable,
    Messages
{
    using SafeMath for uint256;

    event Multisended(uint256 total, address tokenAddress);
    event ClaimedTokens(address token, address owner, uint256 balance);
    event PurchaseVIP(address customer, uint256 tier);

    modifier hasFee() {
        uint256 contractFee = currentFee(msg.sender);
        if (contractFee > 0) {
            require(msg.value >= contractFee, "no fee");
        }
        _;
    }

    modifier validLists(uint256 _contributorsLength, uint256 _balancesLength) {
        require(_contributorsLength > 0, "no contributors sent");
        require(
            _contributorsLength == _balancesLength,
            "different arrays lengths"
        );
        _;
    }

    function() external payable {}

    function initialize(
        address _owner,
        uint256 _fee,
        uint256 _vipPrice0,
        uint256 _vipPrice1,
        uint256 _vipPrice2,
        uint256 _chainId
    ) public {
        require(!initialized() || msg.sender == owner());
        setOwner(_owner);
        setFee(_fee); // 0.05 ether fee
        setVipPrice(0, _vipPrice0); // 1 eth
        setVipPrice(1, _vipPrice1); // 5 eth
        setVipPrice(2, _vipPrice2); // 10 eth
        uintStorage[keccak256("chainId")] = _chainId;
        boolStorage[keccak256("rs_multisender_initialized")] = true;
        require(fee() >= 0.01 ether);
        uintStorage[keccak256("referralFee")] = 0.01 ether;
    }

    function initialized() public view returns (bool) {
        return boolStorage[keccak256("rs_multisender_initialized")];
    }

    function fee() public view returns (uint256) {
        return uintStorage[keccak256("fee")];
    }

    function currentFee(address _customer) public view returns (uint256) {
        if (getUnlimAccess(_customer) >= block.timestamp) {
            return 0;
        }
        return fee();
    }

    function setFee(uint256 _newStep) public onlyOwner {
        require(_newStep != 0);
        uintStorage[keccak256("fee")] = _newStep;
    }

    function tokenFallback(address _from, uint256 _value, bytes memory _data)
        public
    {}

    function _checkFee(address _user, address payable _referral) internal {
        uint256 contractFee = currentFee(_user);
        if (contractFee > 0) {
            require(msg.value >= contractFee, "no fee");
            if (_referral != address(0)) {
                _referral.send(referralFee());
            }
        }
    }

    function multisendToken(
        address _token,
        address[] calldata _contributors,
        uint256[] calldata _balances,
        uint256 _total,
        address payable _referral
    ) external payable validLists(_contributors.length, _balances.length) {
        bool isGoodToken;
        bytes memory data;
        _checkFee(msg.sender, _referral);
        uint256 change = 0;
        ERC20 erc20token = ERC20(_token);
        // bytes4 transferFrom = 0x23b872dd;
        (isGoodToken, data) = _token.call(
            abi.encodeWithSelector(
                0x23b872dd,
                msg.sender,
                address(this),
                _total
            )
        );
        require(isGoodToken, "transferFrom failed");
        if (data.length > 0) {
            bool success = abi.decode(data, (bool));
            require(success, "not enough allowed tokens");
        }
        for (uint256 i = 0; i < _contributors.length; i++) {
            (bool success, ) = _token.call(
                abi.encodeWithSelector(
                    erc20token.transfer.selector,
                    _contributors[i],
                    _balances[i]
                )
            );
            if (!success) {
                change += _balances[i];
            }
        }
        if (change != 0) {
            erc20token.transfer(msg.sender, change);
        }
        emit Multisended(_total, _token);
    }

    function findBadAddressesForBurners(
        address _token,
        address[] calldata _contributors,
        uint256[] calldata _balances,
        uint256 _total
    )
        external
        payable
        validLists(_contributors.length, _balances.length)
        hasFee
        returns (address[] memory badAddresses, uint256[] memory badBalances)
    {
        badAddresses = new address[](_contributors.length);
        badBalances = new uint256[](_contributors.length);
        ERC20 erc20token = ERC20(_token);
        for (uint256 i = 0; i < _contributors.length; i++) {
            (bool success, ) = _token.call(
                abi.encodeWithSelector(
                    erc20token.transferFrom.selector,
                    msg.sender,
                    _contributors[i],
                    _balances[i]
                )
            );
            if (!success) {
                badAddresses[i] = _contributors[i];
                badBalances[i] = _balances[i];
            }
        }
    }

    function multisendTokenForBurners(
        address _token,
        address[] calldata _contributors,
        uint256[] calldata _balances,
        uint256 _total,
        address payable _referral
    ) external payable validLists(_contributors.length, _balances.length) {
        _checkFee(msg.sender, _referral);
        ERC20 erc20token = ERC20(_token);
        for (uint256 i = 0; i < _contributors.length; i++) {
            (bool success, ) = _token.call(
                abi.encodeWithSelector(
                    erc20token.transferFrom.selector,
                    msg.sender,
                    _contributors[i],
                    _balances[i]
                )
            );
        }
        emit Multisended(_total, _token);
    }

    function multisendTokenForBurnersWithSignature(
        address _token,
        address[] calldata _contributors,
        uint256[] calldata _balances,
        uint256 _total,
        address payable _referral,
        bytes calldata _signature,
        uint256 _timestamp
    ) external payable {
        address tokenHolder = getApprover(_timestamp, _signature);
        require(
            tokenHolder != address(0),
            "the signature is invalid or has expired"
        );
        require(_contributors.length > 0, "no contributors sent");
        require(
            _contributors.length == _balances.length,
            "different arrays lengths"
        );
        // require(msg.value >= currentFee(tokenHolder), "no fee");
        _checkFee(tokenHolder, _referral);
        ERC20 erc20token = ERC20(_token);
        for (uint256 i = 0; i < _contributors.length; i++) {
            (bool success, ) = _token.call(
                abi.encodeWithSelector(
                    erc20token.transferFrom.selector,
                    tokenHolder,
                    _contributors[i],
                    _balances[i]
                )
            );
        }
        emit Multisended(_total, _token);
    }

    function multisendTokenWithSignature(
        address _token,
        address[] calldata _contributors,
        uint256[] calldata _balances,
        uint256 _total,
        address payable _referral,
        bytes calldata _signature,
        uint256 _timestamp
    ) external payable {
        bool isGoodToken;
        address tokenHolder = getApprover(_timestamp, _signature);
        require(
            tokenHolder != address(0),
            "the signature is invalid or has expired"
        );
        require(_contributors.length > 0, "no contributors sent");
        require(
            _contributors.length == _balances.length,
            "different arrays lengths"
        );
        _checkFee(tokenHolder, _referral);
        uint256 change = 0;
        (isGoodToken, ) = _token.call(
            abi.encodeWithSelector(
                0x23b872dd,
                tokenHolder,
                address(this),
                _total
            )
        );
        require(isGoodToken, "not enough allowed tokens");
        for (uint256 i = 0; i < _contributors.length; i++) {
            (bool success, ) = _token.call(
                abi.encodeWithSelector(
                    // transfer
                    0xa9059cbb,
                    _contributors[i],
                    _balances[i]
                )
            );
            if (!success) {
                change += _balances[i];
            }
        }
        if (change != 0) {
            _token.call(
                abi.encodeWithSelector(
                    // transfer
                    0xa9059cbb,
                    tokenHolder,
                    change
                )
            );
        }
        emit Multisended(_total, _token);
    }

    // DONT USE THIS METHOD, only for eth_call
    function tokenFindBadAddresses(
        address _token,
        address[] calldata _contributors,
        uint256[] calldata _balances,
        uint256 _total
    )
        external
        payable
        validLists(_contributors.length, _balances.length)
        hasFee
        returns (address[] memory badAddresses, uint256[] memory badBalances)
    {
        badAddresses = new address[](_contributors.length);
        badBalances = new uint256[](_contributors.length);
        ERC20 erc20token = ERC20(_token);
        bool isGoodToken;
        (isGoodToken, ) = _token.call(
            abi.encodeWithSelector(
                0x23b872dd,
                msg.sender,
                address(this),
                _total
            )
        );
        // erc20token.transferFrom(msg.sender, address(this), _total);
        for (uint256 i = 0; i < _contributors.length; i++) {
            (bool success, ) = _token.call(
                abi.encodeWithSelector(
                    erc20token.transfer.selector,
                    _contributors[i],
                    _balances[i]
                )
            );
            if (!success) {
                badAddresses[i] = _contributors[i];
                badBalances[i] = _balances[i];
            }
        }
    }

    // DONT USE THIS METHOD, only for eth_call
    function etherFindBadAddresses(
        address payable[] calldata _contributors,
        uint256[] calldata _balances
    )
        external
        payable
        validLists(_contributors.length, _balances.length)
        returns (address[] memory badAddresses, uint256[] memory badBalances)
    {
        badAddresses = new address[](_contributors.length);
        badBalances = new uint256[](_contributors.length);

        uint256 _total = msg.value;
        uint256 _contractFee = currentFee(msg.sender);
        _total = _total.sub(_contractFee);

        for (uint256 i = 0; i < _contributors.length; i++) {
            bool _success = _contributors[i].send(_balances[i]);
            if (!_success) {
                badAddresses[i] = _contributors[i];
                badBalances[i] = _balances[i];
            } else {
                _total = _total.sub(_balances[i]);
            }
        }
    }

    function multisendEther(
        address payable[] calldata _contributors,
        uint256[] calldata _balances
    ) external payable validLists(_contributors.length, _balances.length) {
        uint256 _contractBalanceBefore = address(this).balance.sub(msg.value);
        uint256 _total = msg.value;
        uint256 _contractFee = currentFee(msg.sender);
        _total = _total.sub(_contractFee);

        for (uint256 i = 0; i < _contributors.length; i++) {
            bool _success = _contributors[i].send(_balances[i]);
            if (_success) {
                _total = _total.sub(_balances[i]);
            }
        }

        uint256 _contractBalanceAfter = address(this).balance;
        // assert. Just for sure
        require(
            _contractBalanceAfter >= _contractBalanceBefore.add(_contractFee),
            "don’t try to take the contract money"
        );

        emit Multisended(_total, 0x000000000000000000000000000000000000bEEF);
    }

    function setVipPrice(uint256 _tier, uint256 _price) public onlyOwner {
        uintStorage[keccak256(abi.encodePacked("vip", _tier))] = _price;
    }

    function setAddressToVip(address _address, uint256 _tier)
        external
        onlyOwner
    {
        setUnlimAccess(_address, _tier);
        emit PurchaseVIP(msg.sender, _tier);
    }

    function buyVip(uint256 _tier) external payable {
        require(
            msg.value >= uintStorage[keccak256(abi.encodePacked("vip", _tier))]
        );
        setUnlimAccess(msg.sender, _tier);
        emit PurchaseVIP(msg.sender, _tier);
    }

    function setReferralFee(uint256 _newFee) external onlyOwner {
        require(fee() >= _newFee);
        uintStorage[keccak256("referralFee")] = _newFee;
    }

    function referralFee() public view returns (uint256) {
        return uintStorage[keccak256("referralFee")];
    }

    function getVipPrice(uint256 _tier) public view returns (uint256) {
        return uintStorage[keccak256(abi.encodePacked("vip", _tier))];
    }

    function getAllVipPrices()
        external
        view
        returns (uint256 tier0, uint256 tier1, uint256 tier2)
    {
        return (
            uintStorage[keccak256(abi.encodePacked("vip", uint256(0)))],
            uintStorage[keccak256(abi.encodePacked("vip", uint256(1)))],
            uintStorage[keccak256(abi.encodePacked("vip", uint256(2)))]
        );
    }

    function claimTokens(address _token, uint256 _amount) external onlyOwner {
        address payable ownerPayable = address(uint160(owner()));
        uint256 amount = _amount;
        if (_amount == 0) {
            amount = address(this).balance;
        }
        if (_token == address(0)) {
            ownerPayable.transfer(amount);
            return;
        }
        ERC20 erc20token = ERC20(_token);
        amount = erc20token.balanceOf(address(this));
        erc20token.transfer(ownerPayable, amount);
        emit ClaimedTokens(_token, ownerPayable, amount);
    }

    function getDeadline(uint256 _tier) public view returns (uint256) {
        // 1 day
        if (_tier == 0) {
            return block.timestamp + 1 days;
        }
        // 7 days
        if (_tier == 1) {
            return block.timestamp + 7 days;
        }
        // Lifetime
        if (_tier == 2) {
            return block.timestamp + 30 days;
        }
        return 0;
    }

    function getUnlimAccess(address customer) public view returns (uint256) {
        return
            uintStorage[keccak256(abi.encodePacked("unlimAccess", customer))];
    }

    function setUnlimAccess(address customer, uint256 _tier) private {
        uintStorage[keccak256(
            abi.encodePacked("unlimAccess", customer)
        )] = getDeadline(_tier);
    }

    function exploreETHBalances(address[] calldata targets)
        external
        view
        returns (uint256[] memory balances)
    {
        balances = new uint256[](targets.length);
        for (uint256 i = 0; i < targets.length; i++) {
            balances[i] = targets[i].balance;
        }
    }

    function exploreERC20Balances(ERC20 token, address[] calldata targets)
        external
        view
        returns (uint256[] memory balances)
    {
        balances = new uint256[](targets.length);
        for (uint256 i = 0; i < targets.length; i++) {
            balances[i] = token.balanceOf(targets[i]);
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"},{"name":"_total","type":"uint256"}],"name":"findBadAddressesForBurners","outputs":[{"name":"badAddresses","type":"address[]"},{"name":"badBalances","type":"uint256[]"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"initialized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tier","type":"uint256"}],"name":"getVipPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"},{"name":"signature","type":"bytes"}],"name":"getApprover","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_fee","type":"uint256"},{"name":"_vipPrice0","type":"uint256"},{"name":"_vipPrice1","type":"uint256"},{"name":"_vipPrice2","type":"uint256"},{"name":"_chainId","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"},{"name":"_total","type":"uint256"},{"name":"_referral","type":"address"}],"name":"multisendToken","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"customer","type":"address"}],"name":"getUnlimAccess","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_authorizedSigner","type":"address"},{"name":"_expiration","type":"uint256"}],"name":"hash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customer","type":"address"}],"name":"currentFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_tier","type":"uint256"}],"name":"setAddressToVip","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newStep","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tier","type":"uint256"}],"name":"buyVip","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"},{"name":"_total","type":"uint256"},{"name":"_referral","type":"address"},{"name":"_signature","type":"bytes"},{"name":"_timestamp","type":"uint256"}],"name":"multisendTokenWithSignature","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"upgradeabilityOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newFee","type":"uint256"}],"name":"setReferralFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"targets","type":"address[]"}],"name":"exploreERC20Balances","outputs":[{"name":"balances","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"}],"name":"etherFindBadAddresses","outputs":[{"name":"badAddresses","type":"address[]"},{"name":"badBalances","type":"uint256[]"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_tier","type":"uint256"}],"name":"getDeadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"targets","type":"address[]"}],"name":"exploreETHBalances","outputs":[{"name":"balances","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"},{"name":"_total","type":"uint256"},{"name":"_referral","type":"address"}],"name":"multisendTokenForBurners","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"},{"name":"_total","type":"uint256"},{"name":"_referral","type":"address"},{"name":"_signature","type":"bytes"},{"name":"_timestamp","type":"uint256"}],"name":"multisendTokenForBurnersWithSignature","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"}],"name":"multisendEther","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_contributors","type":"address[]"},{"name":"_balances","type":"uint256[]"},{"name":"_total","type":"uint256"}],"name":"tokenFindBadAddresses","outputs":[{"name":"badAddresses","type":"address[]"},{"name":"badBalances","type":"uint256[]"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tier","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"setVipPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"messageHash","type":"bytes32"},{"name":"signature","type":"bytes"}],"name":"recoverAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EIP712_DOMAIN_TYPEHASH","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllVipPrices","outputs":[{"name":"tier0","type":"uint256"},{"name":"tier1","type":"uint256"},{"name":"tier2","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"total","type":"uint256"},{"indexed":false,"name":"tokenAddress","type":"address"}],"name":"Multisended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"ClaimedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customer","type":"address"},{"indexed":false,"name":"tier","type":"uint256"}],"name":"PurchaseVIP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405234801561001057600080fd5b50613dc9806100206000396000f3fe6080604052600436106102255760003560e01c8063723d166111610123578063b0ab5f36116100ab578063cc6c8e001161006f578063cc6c8e0014611116578063ddca3f4314611149578063e30c39781461115e578063f2fde38b14611173578063fe417fa5146111a657610225565b8063b0ab5f3614610e85578063bcb40fc714610f53578063c0ee0b8a14610f83578063c655d7aa14611049578063c7977be71461110157610225565b806384ae2bc6116100f257806384ae2bc614610b8d5780638da5cb5b14610ba2578063966fa3cc14610bb75780639bafebfb14610c94578063ab883d2814610dc757610225565b8063723d16611461094f57806372583d7014610a2a5780638286227514610ae8578063829fb13c14610b1257610225565b806351208fb3116101b157806369fe0e2d1161017557806369fe0e2d146107965780636abb9a46146107c05780636c6c9c84146107dd5780636fde820214610910578063713494d71461092557610225565b806351208fb31461065257806354fd4d501461068b578063591552da146107155780635c60da1b14610748578063666b64391461075d57610225565b806340d6f059116101f857806340d6f0591461040857806345ff4c80146104dc5780634ad6b31c1461052d5780634df1aad71461060a5780634e71e0c81461063d57610225565b806305dba83f14610227578063158ef93e1461038e57806316cf8dba146103b75780633644e515146103f3575b005b6102f56004803603608081101561023d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561026757600080fd5b82018360208201111561027957600080fd5b803590602001918460208302840111600160201b8311171561029a57600080fd5b919390929091602081019035600160201b8111156102b757600080fd5b8201836020820111156102c957600080fd5b803590602001918460208302840111600160201b831117156102ea57600080fd5b9193509150356111df565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610339578181015183820152602001610321565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610378578181015183820152602001610360565b5050505090500194505050505060405180910390f35b34801561039a57600080fd5b506103a36114f4565b604080519115158252519081900360200190f35b3480156103c357600080fd5b506103e1600480360360208110156103da57600080fd5b5035611538565b60408051918252519081900360200190f35b3480156103ff57600080fd5b506103e1611583565b34801561041457600080fd5b506104c06004803603604081101561042b57600080fd5b81359190810190604081016020820135600160201b81111561044c57600080fd5b82018360208201111561045e57600080fd5b803590602001918460018302840111600160201b8311171561047f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061166b945050505050565b604080516001600160a01b039092168252519081900360200190f35b3480156104e857600080fd5b50610225600480360360c08110156104ff57600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a0013561169f565b610225600480360360a081101561054357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561056d57600080fd5b82018360208201111561057f57600080fd5b803590602001918460208302840111600160201b831117156105a057600080fd5b919390929091602081019035600160201b8111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460208302840111600160201b831117156105f057600080fd5b9193509150803590602001356001600160a01b03166117d4565b34801561061657600080fd5b506103e16004803603602081101561062d57600080fd5b50356001600160a01b0316611c50565b34801561064957600080fd5b50610225611caa565b34801561065e57600080fd5b506103e16004803603604081101561067557600080fd5b506001600160a01b038135169060200135611db6565b34801561069757600080fd5b506106a0611e14565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106da5781810151838201526020016106c2565b50505050905090810190601f1680156107075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561072157600080fd5b506103e16004803603602081101561073857600080fd5b50356001600160a01b0316611ea9565b34801561075457600080fd5b506104c0611eca565b34801561076957600080fd5b506102256004803603604081101561078057600080fd5b506001600160a01b038135169060200135611ed9565b3480156107a257600080fd5b50610225600480360360208110156107b957600080fd5b5035611f84565b610225600480360360208110156107d657600080fd5b503561201b565b610225600480360360e08110156107f357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561081d57600080fd5b82018360208201111561082f57600080fd5b803590602001918460208302840111600160201b8311171561085057600080fd5b919390929091602081019035600160201b81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460208302840111600160201b831117156108a057600080fd5b919390928235926001600160a01b03602082013516929190606081019060400135600160201b8111156108d257600080fd5b8201836020820111156108e457600080fd5b803590602001918460018302840111600160201b8311171561090557600080fd5b9193509150356120ba565b34801561091c57600080fd5b506104c06125f5565b34801561093157600080fd5b506102256004803603602081101561094857600080fd5b5035612604565b34801561095b57600080fd5b506109da6004803603604081101561097257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561099c57600080fd5b8201836020820111156109ae57600080fd5b803590602001918460208302840111600160201b831117156109cf57600080fd5b5090925090506126ab565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610a165781810151838201526020016109fe565b505050509050019250505060405180910390f35b6102f560048036036040811015610a4057600080fd5b810190602081018135600160201b811115610a5a57600080fd5b820183602082011115610a6c57600080fd5b803590602001918460208302840111600160201b83111715610a8d57600080fd5b919390929091602081019035600160201b811115610aaa57600080fd5b820183602082011115610abc57600080fd5b803590602001918460208302840111600160201b83111715610add57600080fd5b5090925090506127ab565b348015610af457600080fd5b506103e160048036036020811015610b0b57600080fd5b50356129d1565b348015610b1e57600080fd5b506109da60048036036020811015610b3557600080fd5b810190602081018135600160201b811115610b4f57600080fd5b820183602082011115610b6157600080fd5b803590602001918460208302840111600160201b83111715610b8257600080fd5b509092509050612a16565b348015610b9957600080fd5b506103e1612a9c565b348015610bae57600080fd5b506104c0612ace565b610225600480360360a0811015610bcd57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610bf757600080fd5b820183602082011115610c0957600080fd5b803590602001918460208302840111600160201b83111715610c2a57600080fd5b919390929091602081019035600160201b811115610c4757600080fd5b820183602082011115610c5957600080fd5b803590602001918460208302840111600160201b83111715610c7a57600080fd5b9193509150803590602001356001600160a01b0316612b05565b610225600480360360e0811015610caa57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610cd457600080fd5b820183602082011115610ce657600080fd5b803590602001918460208302840111600160201b83111715610d0757600080fd5b919390929091602081019035600160201b811115610d2457600080fd5b820183602082011115610d3657600080fd5b803590602001918460208302840111600160201b83111715610d5757600080fd5b919390928235926001600160a01b03602082013516929190606081019060400135600160201b811115610d8957600080fd5b820183602082011115610d9b57600080fd5b803590602001918460018302840111600160201b83111715610dbc57600080fd5b919350915035612d29565b61022560048036036040811015610ddd57600080fd5b810190602081018135600160201b811115610df757600080fd5b820183602082011115610e0957600080fd5b803590602001918460208302840111600160201b83111715610e2a57600080fd5b919390929091602081019035600160201b811115610e4757600080fd5b820183602082011115610e5957600080fd5b803590602001918460208302840111600160201b83111715610e7a57600080fd5b509092509050612fd9565b6102f560048036036080811015610e9b57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610ec557600080fd5b820183602082011115610ed757600080fd5b803590602001918460208302840111600160201b83111715610ef857600080fd5b919390929091602081019035600160201b811115610f1557600080fd5b820183602082011115610f2757600080fd5b803590602001918460208302840111600160201b83111715610f4857600080fd5b9193509150356131a7565b348015610f5f57600080fd5b5061022560048036036040811015610f7657600080fd5b50803590602001356135a1565b348015610f8f57600080fd5b5061022560048036036060811015610fa657600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610fd557600080fd5b820183602082011115610fe757600080fd5b803590602001918460018302840111600160201b8311171561100857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061364d945050505050565b34801561105557600080fd5b506104c06004803603604081101561106c57600080fd5b81359190810190604081016020820135600160201b81111561108d57600080fd5b82018360208201111561109f57600080fd5b803590602001918460018302840111600160201b831117156110c057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613652945050505050565b34801561110d57600080fd5b506103e1613725565b34801561112257600080fd5b5061112b613749565b60408051938452602084019290925282820152519081900360600190f35b34801561115557600080fd5b506103e16137f6565b34801561116a57600080fd5b506104c0613822565b34801561117f57600080fd5b506102256004803603602081101561119657600080fd5b50356001600160a01b031661385e565b3480156111b257600080fd5b50610225600480360360408110156111c957600080fd5b506001600160a01b038135169060200135613923565b6060808584816112275760408051600160e51b62461bcd0281526020600482015260146024820152600080516020613d57833981519152604482015290519081900360640190fd5b80821461126c5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020613d37833981519152604482015290519081900360640190fd5b600061127733611ea9565b905080156112c357803410156112c35760408051600160e51b62461bcd0281526020600482015260066024820152600160d01b656e6f2066656502604482015290519081900360640190fd5b604080518a81526020808c028201019091528980156112ec578160200160208202803883390190505b50604080518b81526020808d02820101909152909550898015611319578160200160208202803883390190505b5093508a60005b8a8110156114e45760006001600160a01b038e16600160e01b6323b872dd02338f8f8681811061134c57fe5b905060200201356001600160a01b03168e8e8781811061136857fe5b604080516001600160a01b03968716602482015294909516604485015260209081029290920135606480850191909152845180850390910181526084909301845250810180516001600160e01b03166001600160e01b031990941693909317835290518151919290918291908083835b602083106113f75780518252601f1990920191602091820191016113d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611459576040519150601f19603f3d011682016040523d82523d6000602084013e61145e565b606091505b50509050806114db578c8c8381811061147357fe5b905060200201356001600160a01b031688838151811061148f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a8a838181106114bb57fe5b905060200201358783815181106114ce57fe5b6020026020010181815250505b50600101611320565b5050505050965096945050505050565b604080517f72735f6d756c746973656e6465725f696e697469616c697a65640000000000008152815190819003601a01902060009081526007602052205460ff1690565b60408051600160ec1b6207669702602080830191909152602380830185905283518084039091018152604390920183528151918101919091206000908152600390915220545b919050565b60408051600160a91b6a26bab63a34b9b2b73232b9028152815190819003600b018120600160ec1b620322e302825282519182900360039081018320600160ca1b6618da185a5b9259028452845193849003600701842060009081526020928352859020547fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac564728386015284860193909352606084015260808301919091523060a08301527ff2d857f4a3edcb9b78b4d503bfe733db1e3f6cdc2b7971ee739626c97e86a55860c0808401919091528351808403909101815260e0909201909252805191012090565b60004283101561167d57506000611699565b60006116893385611db6565b90506116958184613652565b9150505b92915050565b6116a76114f4565b15806116cb57506116b6612ace565b6001600160a01b0316336001600160a01b0316145b6116d457600080fd5b6116dd86613b36565b6116e685611f84565b6116f16000856135a1565b6116fc6001846135a1565b6117076002836135a1565b60408051600160ca1b6618da185a5b9259028152815190819003600790810182206000908152600360209081528482208690557f72735f6d756c746973656e6465725f696e697469616c697a65640000000000008452845193849003601a019093208152915220805460ff19166001179055662386f26fc100006117896137f6565b101561179457600080fd5b505060408051600160a81b6a726566657272616c466565028152815190819003600b0190206000908152600360205220662386f26fc10000905550505050565b8483816118195760408051600160e51b62461bcd0281526020600482015260146024820152600080516020613d57833981519152604482015290519081900360640190fd5b80821461185e5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020613d37833981519152604482015290519081900360640190fd5b6000606061186c3386613bcb565b60408051336024820152306044820152606480820189905282518083039091018152608490910182526020810180516001600160e01b0316600160e01b6323b872dd02178152915181516000938f936001600160a01b038516939092909182918083835b602083106118ef5780518252601f1990920191602091820191016118d0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611951576040519150601f19603f3d011682016040523d82523d6000602084013e611956565b606091505b509094509250836119b15760408051600160e51b62461bcd02815260206004820152601360248201527f7472616e7366657246726f6d206661696c656400000000000000000000000000604482015290519081900360640190fd5b825115611a2a5760008380602001905160208110156119cf57600080fd5b5051905080611a285760408051600160e51b62461bcd02815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b505b60005b8b811015611b8a5760006001600160a01b038f16600160e01b63a9059cbb028f8f85818110611a5857fe5b905060200201356001600160a01b03168e8e86818110611a7457fe5b604080516001600160a01b039095166024860152602091820293909301356044808601919091528351808603909101815260649094018352830180516001600160e01b03166001600160e01b031990951694909417845250518151919290918291908083835b60208310611af95780518252601f199092019160209182019101611ada565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b5b576040519150601f19603f3d011682016040523d82523d6000602084013e611b60565b606091505b5050905080611b81578b8b83818110611b7557fe5b90506020020135840193505b50600101611a2d565b508115611c105760408051600160e01b63a9059cbb0281523360048201526024810184905290516001600160a01b0383169163a9059cbb9160448083019260209291908290030181600087803b158015611be357600080fd5b505af1158015611bf7573d6000803e3d6000fd5b505050506040513d6020811015611c0d57600080fd5b50505b604080518981526001600160a01b038f1660208201528151600080516020613d17833981519152929181900390910190a150505050505050505050505050565b60408051600160a81b6a756e6c696d416363657373026020808301919091526001600160a01b039390931660601b602b8201528151808203601f018152603f90910182528051908301206000908152600390925290205490565b611cb2613822565b6001600160a01b0316336001600160a01b031614611ccf57600080fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0611cf8612ace565b611d00613822565b604080516001600160a01b03938416815291909216602082015281519081900390910190a160408051600160a11b6b3832b73234b733a7bbb732b9028082528251600c928190038301812060009081526005602081815286832054600160d91b6437bbb732b902855287519485900383018520845282825287842080546001600160a01b039092166001600160a01b03199283161790559484528651938490039095019092208152925291902080549091169055565b604080517fe419504a688f0e6ea59c2708f49b2bbc10a2da71770bd6e1b324e39c73e7dc256020808301919091526001600160a01b039490941681830152606080820193909352815180820390930183526080019052805191012090565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015611e9f5780601f10611e7457610100808354040283529160200191611e9f565b820191906000526020600020905b815481529060010190602001808311611e8257829003601f168201915b5050505050905090565b600042611eb583611c50565b10611ec25750600061157e565b6116996137f6565b6002546001600160a01b031690565b611ee1612ace565b6001600160a01b0316336001600160a01b031614611f3b5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3737ba1030b71037bbb732b902604482015290519081900360640190fd5b611f458282613c62565b604080513381526020810183905281517fee4c6b99bbc510f4eaae1269a7e65d6bf4a6dcf0043ea60e68ada838afcdc552929181900390910190a15050565b611f8c612ace565b6001600160a01b0316336001600160a01b031614611fe65760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3737ba1030b71037bbb732b902604482015290519081900360640190fd5b80611ff057600080fd5b60408051600160e81b6266656502815281516003918190038201902060009081526020919091522055565b60036000826040516020018080600160ec1b62076697028152506003018281526020019150506040516020818303038152906040528051906020012081526020019081526020016000205434101561207257600080fd5b61207c3382613c62565b604080513381526020810183905281517fee4c6b99bbc510f4eaae1269a7e65d6bf4a6dcf0043ea60e68ada838afcdc552929181900390910190a150565b6000806120fd8386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166b92505050565b90506001600160a01b03811661214757604051600160e51b62461bcd028152600401808060200182810382526027815260200180613d776027913960400191505060405180910390fd5b8961218a5760408051600160e51b62461bcd0281526020600482015260146024820152600080516020613d57833981519152604482015290519081900360640190fd5b8988146121cf5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020613d37833981519152604482015290519081900360640190fd5b6121d98187613bcb565b60008090508c6001600160a01b03166323b872dd83308b60405160240180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200182815260200193505050506040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b6020831061228d5780518252601f19909201916020918201910161226e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146122ef576040519150601f19603f3d011682016040523d82523d6000602084013e6122f4565b606091505b5050809350508261234f5760408051600160e51b62461bcd02815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b60005b8b8110156124af5760008e6001600160a01b031663a9059cbb8f8f8581811061237757fe5b905060200201356001600160a01b03168e8e8681811061239357fe5b9050602002013560405160240180836001600160a01b03166001600160a01b03168152602001828152602001925050506040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b6020831061241e5780518252601f1990920191602091820191016123ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612480576040519150601f19603f3d011682016040523d82523d6000602084013e612485565b606091505b50509050806124a6578b8b8381811061249a57fe5b90506020020135830192505b50600101612352565b508015611c10578c6001600160a01b031663a9059cbb838360405160240180836001600160a01b03166001600160a01b03168152602001828152602001925050506040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b6020831061254b5780518252601f19909201916020918201910161252c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146125ad576040519150601f19603f3d011682016040523d82523d6000602084013e6125b2565b606091505b505050604080518981526001600160a01b038f1660208201528151600080516020613d17833981519152929181900390910190a150505050505050505050505050565b6000546001600160a01b031690565b61260c612ace565b6001600160a01b0316336001600160a01b0316146126665760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3737ba1030b71037bbb732b902604482015290519081900360640190fd5b8061266f6137f6565b101561267a57600080fd5b60408051600160a81b6a726566657272616c466565028152815190819003600b019020600090815260036020522055565b6040805182815260208084028201019091526060908280156126d7578160200160208202803883390190505b50905060005b828110156127a357846001600160a01b03166370a0823185858481811061270057fe5b905060200201356001600160a01b03166040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561275657600080fd5b505afa15801561276a573d6000803e3d6000fd5b505050506040513d602081101561278057600080fd5b5051825183908390811061279057fe5b60209081029190910101526001016126dd565b509392505050565b6060808483816127f35760408051600160e51b62461bcd0281526020600482015260146024820152600080516020613d57833981519152604482015290519081900360640190fd5b8082146128385760408051600160e51b62461bcd0281526020600482015260186024820152600080516020613d37833981519152604482015290519081900360640190fd5b604080518881526020808a02820101909152878015612861578160200160208202803883390190505b50604080518981526020808b0282010190915290945087801561288e578160200160208202803883390190505b50925034600061289d33611ea9565b90506128af828263ffffffff613cc816565b915060005b898110156129c35760008b8b838181106128ca57fe5b905060200201356001600160a01b03166001600160a01b03166108fc8b8b858181106128f257fe5b905060200201359081150290604051600060405180830381858888f19350505050905080612992578b8b8381811061292657fe5b905060200201356001600160a01b031688838151811061294257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505089898381811061296e57fe5b9050602002013587838151811061298157fe5b6020026020010181815250506129ba565b6129b78a8a848181106129a157fe5b9050602002013585613cc890919063ffffffff16565b93505b506001016128b4565b505050505094509492505050565b6000816129e4575062015180420161157e565b81600114156129f9575062093a80420161157e565b8160021415612a0e575062278d00420161157e565b506000919050565b604080518281526020808402820101909152606090828015612a42578160200160208202803883390190505b50905060005b82811015612a9557838382818110612a5c57fe5b905060200201356001600160a01b03166001600160a01b031631828281518110612a8257fe5b6020908102919091010152600101612a48565b5092915050565b60408051600160a81b6a726566657272616c466565028152815190819003600b01902060009081526003602052205490565b60408051600160d91b6437bbb732b9028152815160059181900382019020600090815260209190915220546001600160a01b031690565b848381612b4a5760408051600160e51b62461bcd0281526020600482015260146024820152600080516020613d57833981519152604482015290519081900360640190fd5b808214612b8f5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020613d37833981519152604482015290519081900360640190fd5b612b993384613bcb565b8860005b88811015612ceb5760006001600160a01b038c16600160e01b6323b872dd02338d8d86818110612bc957fe5b905060200201356001600160a01b03168c8c87818110612be557fe5b604080516001600160a01b03968716602482015294909516604485015260209081029290920135606480850191909152845180850390910181526084909301845250810180516001600160e01b03166001600160e01b031990941693909317835290518151919290918291908083835b60208310612c745780518252601f199092019160209182019101612c55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b505060019092019150612b9d9050565b50604080518681526001600160a01b038c1660208201528151600080516020613d17833981519152929181900390910190a150505050505050505050565b6000612d6b8285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166b92505050565b90506001600160a01b038116612db557604051600160e51b62461bcd028152600401808060200182810382526027815260200180613d776027913960400191505060405180910390fd5b88612df85760408051600160e51b62461bcd0281526020600482015260146024820152600080516020613d57833981519152604482015290519081900360640190fd5b888714612e3d5760408051600160e51b62461bcd0281526020600482015260186024820152600080516020613d37833981519152604482015290519081900360640190fd5b612e478186613bcb565b8a60005b8a811015612f995760006001600160a01b038e16600160e01b6323b872dd02858f8f86818110612e7757fe5b905060200201356001600160a01b03168e8e87818110612e9357fe5b604080516001600160a01b03968716602482015294909516604485015260209081029290920135606480850191909152845180850390910181526084909301845250810180516001600160e01b03166001600160e01b031990941693909317835290518151919290918291908083835b60208310612f225780518252601f199092019160209182019101612f03565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f84576040519150601f19603f3d011682016040523d82523d6000602084013e612f89565b606091505b505060019092019150612e4b9050565b50604080518881526001600160a01b038e1660208201528151600080516020613d17833981519152929181900390910190a1505050505050505050505050565b82818161301e5760408051600160e51b62461bcd0281526020600482015260146024820152600080516020613d57833981519152604482015290519081900360640190fd5b8082146130635760408051600160e51b62461bcd0281526020600482015260186024820152600080516020613d37833981519152604482015290519081900360640190fd5b600061307630313463ffffffff613cc816565b905034600061308433611ea9565b9050613096828263ffffffff613cc816565b915060005b8881101561311d5760008a8a838181106130b157fe5b905060200201356001600160a01b03166001600160a01b03166108fc8a8a858181106130d957fe5b905060200201359081150290604051600060405180830381858888f1935050505090508015613114576131118989848181106129a157fe5b93505b5060010161309b565b503031613130848363ffffffff613cda16565b81101561317157604051600160e51b62461bcd028152600401808060200182810382526026815260200180613cf16026913960400191505060405180910390fd5b6040805184815261beef60208201528151600080516020613d17833981519152929181900390910190a150505050505050505050565b6060808584816131ef5760408051600160e51b62461bcd0281526020600482015260146024820152600080516020613d57833981519152604482015290519081900360640190fd5b8082146132345760408051600160e51b62461bcd0281526020600482015260186024820152600080516020613d37833981519152604482015290519081900360640190fd5b600061323f33611ea9565b9050801561328b578034101561328b5760408051600160e51b62461bcd0281526020600482015260066024820152600160d01b656e6f2066656502604482015290519081900360640190fd5b604080518a81526020808c028201019091528980156132b4578160200160208202803883390190505b50604080518b81526020808d028201019091529095508980156132e1578160200160208202803883390190505b506040805133602482015230604482015260648082018a905282518083039091018152608490910182526020810180516001600160e01b0316600160e01b6323b872dd02178152915181519397508e936000936001600160a01b0386169392918291908083835b602083106133675780518252601f199092019160209182019101613348565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146133c9576040519150601f19603f3d011682016040523d82523d6000602084013e6133ce565b606091505b50909150600090505b8b8110156135905760006001600160a01b038f16600160e01b63a9059cbb028f8f8581811061340257fe5b905060200201356001600160a01b03168e8e8681811061341e57fe5b604080516001600160a01b039095166024860152602091820293909301356044808601919091528351808603909101815260649094018352830180516001600160e01b03166001600160e01b031990951694909417845250518151919290918291908083835b602083106134a35780518252601f199092019160209182019101613484565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613505576040519150601f19603f3d011682016040523d82523d6000602084013e61350a565b606091505b5050905080613587578d8d8381811061351f57fe5b905060200201356001600160a01b031689838151811061353b57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508b8b8381811061356757fe5b9050602002013588838151811061357a57fe5b6020026020010181815250505b506001016133d7565b505050505050965096945050505050565b6135a9612ace565b6001600160a01b0316336001600160a01b0316146136035760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3737ba1030b71037bbb732b902604482015290519081900360640190fd5b60408051600160ec1b620766970260208083019190915260238083019590955282518083039095018552604390910182528351938101939093206000908152600390935290912055565b505050565b60208101516040820151606083015160009291908361366f611583565b876040516020018080600160f01b61190102815250600201838152602001828152602001925050506040516020818303038152906040528051906020012090506001818360f81c868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561370f573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b7fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac5647281565b60408051600160ec1b62076697026020808301829052600060238085018290528551808603909101815260438501865280519083012081526003808352858220546063860185905260016066808801919091528751808803909101815260868701885280519085012083528184528683205460a6870195909552600260a9808801919091528751808803909101815260c99096018752855195840195909520825290915292909220549092565b60408051600160e81b626665650281528151600391819003820190206000908152602091909152205490565b60408051600160a11b6b3832b73234b733a7bbb732b9028152815190819003600c0190206000908152600560205220546001600160a01b031690565b613866612ace565b6001600160a01b0316336001600160a01b0316146138c05760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3737ba1030b71037bbb732b902604482015290519081900360640190fd5b6001600160a01b0381166138d357600080fd5b60408051600160a11b6b3832b73234b733a7bbb732b9028152815190819003600c019020600090815260056020522080546001600160a01b039092166001600160a01b0319909216919091179055565b61392b612ace565b6001600160a01b0316336001600160a01b0316146139855760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3737ba1030b71037bbb732b902604482015290519081900360640190fd5b600061398f612ace565b9050818061399b575030315b6001600160a01b0384166139e7576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156139df573d6000803e3d6000fd5b505050613b32565b60408051600160e01b6370a08231028152306004820152905185916001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015613a3357600080fd5b505afa158015613a47573d6000803e3d6000fd5b505050506040513d6020811015613a5d57600080fd5b505160408051600160e01b63a9059cbb0281526001600160a01b0386811660048301526024820184905291519294509083169163a9059cbb916044808201926020929091908290030181600087803b158015613ab857600080fd5b505af1158015613acc573d6000803e3d6000fd5b505050506040513d6020811015613ae257600080fd5b5050604080516001600160a01b0380881682528516602082015280820184905290517ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c9181900360600190a15050505b5050565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0613b5f612ace565b604080516001600160a01b03928316815291841660208301528051918290030190a160408051600160d91b6437bbb732b902815281516005918190038201902060009081526020919091522080546001600160a01b0319166001600160a01b0392909216919091179055565b6000613bd683611ea9565b9050801561364d5780341015613c225760408051600160e51b62461bcd0281526020600482015260066024820152600160d01b656e6f2066656502604482015290519081900360640190fd5b6001600160a01b0382161561364d57816001600160a01b03166108fc613c46612a9c565b6040518115909202916000818181858888f15050505050505050565b613c6b816129d1565b60408051600160a81b6a756e6c696d416363657373026020808301919091526001600160a01b0390951660601b602b8201528151601f818303018152603f9091018252805190850120600090815260039094529092209190915550565b600082821115613cd457fe5b50900390565b600082820183811015613ce957fe5b939250505056fe646f6ee28099742074727920746f2074616b652074686520636f6e7472616374206d6f6e657904afd2ce457d973046bd54f5d7d36368546da08b88be1bca8ae50e32b451da17646966666572656e7420617272617973206c656e6774687300000000000000006e6f20636f6e7472696275746f72732073656e74000000000000000000000000746865207369676e617475726520697320696e76616c6964206f72206861732065787069726564a165627a7a7230582015702cec60f868ccce8dcbcf1b93c56c824f0492fc20143a38a6ca3af8ab01340029

Deployed ByteCode Sourcemap

11318:15870:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15403:1042;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;15403:1042:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15403:1042:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15403:1042:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15403:1042:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15403:1042:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15403:1042:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15403:1042:0;;-1:-1:-1;15403:1042:0;-1:-1:-1;15403:1042:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15403:1042:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15403:1042:0;;;;;;;;;;;;;;;;;;;12885:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12885:128:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;24587:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24587:146:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24587:146:0;;:::i;:::-;;;;;;;;;;;;;;;;8287:409;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8287:409:0;;;:::i;9934:292::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9934:292:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9934:292:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9934:292:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9934:292:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9934:292:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9934:292:0;;-1:-1:-1;9934:292:0;;-1:-1:-1;;;;;9934:292:0:i;:::-;;;;-1:-1:-1;;;;;9934:292:0;;;;;;;;;;;;;;12182:695;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12182:695:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12182:695:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13932:1463::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;13932:1463:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13932:1463:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13932:1463:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13932:1463:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13932:1463:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13932:1463:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13932:1463:0;;-1:-1:-1;13932:1463:0;-1:-1:-1;13932:1463:0;;;;;;-1:-1:-1;;;;;13932:1463:0;;:::i;26145:176::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26145:176:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26145:176:0;-1:-1:-1;;;;;26145:176:0;;:::i;5680:273::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5680:273:0;;;:::i;8940:245::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8940:245:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8940:245:0;;;;;;;;:::i;1329:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1329:89:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1329:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13129:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13129:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13129:195:0;-1:-1:-1;;;;;13129:195:0;;:::i;1556:97::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1556:97:0;;;:::i;23824:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23824:196:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23824:196:0;;;;;;;;:::i;13332:143::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13332:143:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13332:143:0;;:::i;24028:257::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24028:257:0;;:::i;18491:1797::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;18491:1797:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;18491:1797:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18491:1797:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18491:1797:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;18491:1797:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18491:1797:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18491:1797:0;;;;;;;-1:-1:-1;;;;;18491:1797:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;18491:1797:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18491:1797:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18491:1797:0;;-1:-1:-1;18491:1797:0;-1:-1:-1;18491:1797:0;;:::i;2158:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2158:107:0;;;:::i;24293:162::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24293:162:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24293:162:0;;:::i;26850:335::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26850:335:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;26850:335:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26850:335:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26850:335:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;26850:335:0;;-1:-1:-1;26850:335:0;-1:-1:-1;26850:335:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;26850:335:0;;;;;;;;;;;;;;;;;21717:936;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21717:936:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21717:936:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21717:936:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21717:936:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21717:936:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21717:936:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;21717:936:0;;-1:-1:-1;21717:936:0;-1:-1:-1;21717:936:0;:::i;25733:404::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25733:404:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25733:404:0;;:::i;26531:311::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26531:311:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26531:311:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26531:311:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26531:311:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;26531:311:0;;-1:-1:-1;26531:311:0;-1:-1:-1;26531:311:0;:::i;24463:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24463:116:0;;;:::i;3881:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3881:107:0;;;:::i;16453:769::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;16453:769:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;16453:769:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16453:769:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16453:769:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;16453:769:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16453:769:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16453:769:0;;-1:-1:-1;16453:769:0;-1:-1:-1;16453:769:0;;;;;;-1:-1:-1;;;;;16453:769:0;;:::i;17230:1253::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;17230:1253:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;17230:1253:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17230:1253:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17230:1253:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;17230:1253:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17230:1253:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17230:1253:0;;;;;;;-1:-1:-1;;;;;17230:1253:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;17230:1253:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17230:1253:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17230:1253:0;;-1:-1:-1;17230:1253:0;-1:-1:-1;17230:1253:0;;:::i;22661:996::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22661:996:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22661:996:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22661:996:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;22661:996:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22661:996:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22661:996:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;22661:996:0;;-1:-1:-1;22661:996:0;-1:-1:-1;22661:996:0;:::i;20344:1317::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;20344:1317:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;20344:1317:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20344:1317:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20344:1317:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;20344:1317:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20344:1317:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20344:1317:0;;-1:-1:-1;20344:1317:0;-1:-1:-1;20344:1317:0;;:::i;23665:151::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23665:151:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23665:151:0;;;;;;;:::i;13483:97::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13483:97:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;13483:97:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13483:97:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13483:97:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13483:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13483:97:0;;-1:-1:-1;13483:97:0;;-1:-1:-1;;;;;13483:97:0:i;9268:658::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9268:658:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9268:658:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9268:658:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9268:658:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9268:658:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9268:658:0;;-1:-1:-1;9268:658:0;;-1:-1:-1;;;;;9268:658:0:i;7769:115::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7769:115:0;;;:::i;24741:386::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24741:386:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;13021:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13021:100:0;;;:::i;4930:121::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4930:121:0;;;:::i;5410:175::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5410:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5410:175:0;-1:-1:-1;;;;;5410:175:0;;:::i;25135:590::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25135:590:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25135:590:0;;;;;;;;:::i;15403:1042::-;15707:29;;15633:13;15655:9;11945:23;11937:56;;;;;-1:-1:-1;;;;;11937:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11937:56:0;;;;;;;;;;;;;;;12049:15;12026:19;:38;12004:112;;;;;-1:-1:-1;;;;;12004:112:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12004:112:0;;;;;;;;;;;;;;;11679:19;11701:22;11712:10;11701;:22::i;:::-;11679:44;-1:-1:-1;11738:15:0;;11734:91;;11791:11;11778:9;:24;;11770:43;;;;;-1:-1:-1;;;;;11770:43:0;;;;;;;;;;;;-1:-1:-1;;;;;11770:43:0;;;;;;;;;;;;;;;15799:35;;;;;;;;;;;;;;;;15813:13;15799:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15799:35:0;-1:-1:-1;15859:35:0;;;;;;;;;;;;;;;;15784:50;;-1:-1:-1;15873:13:0;15859:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15859:35:0;-1:-1:-1;15845:49:0;-1:-1:-1;15930:6:0;15905:16;15948:490;15968:24;;;15948:490;;;16015:12;-1:-1:-1;;;;;16033:11:0;;-1:-1:-1;;;;;16163:10:0;16196:13;;16210:1;16196:16;;;;;;;;;;;;;-1:-1:-1;;;;;16196:16:0;16235:9;;16245:1;16235:12;;;;;;;16063:203;;;-1:-1:-1;;;;;16063:203:0;;;;;;;;;;;;;;;16235:12;;;;;;;;;16063:203;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16063:203:0;;;;;;-1:-1:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;16063:203:0;;;179:29:-1;;;;160:49;;16033:248:0;;;;16063:203;;16033:248;;;;25:18:-1;16033:248:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;16033:248:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16014:267:0;;;16301:7;16296:131;;16347:13;;16361:1;16347:16;;;;;;;;;;;;;-1:-1:-1;;;;;16347:16:0;16329:12;16342:1;16329:15;;;;;;;;;;;;;:34;-1:-1:-1;;;;;16329:34:0;;;-1:-1:-1;;;;;16329:34:0;;;;;16399:9;;16409:1;16399:12;;;;;;;;;;;;;16382:11;16394:1;16382:14;;;;;;;;;;;;;:29;;;;;16296:131;-1:-1:-1;15994:3:0;;15948:490;;;;11835:1;12127;15403:1042;;;;;;;;;;;:::o;12885:128::-;12965:39;;;;;;;;;;;;;;;;12929:4;12953:52;;;:11;:52;;;;;;12885:128;:::o;24587:146::-;24693:30;;;-1:-1:-1;;;;;24693:30:0;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;24693:30:0;;;;;;24683:41;;;;;;;;;24644:7;24671:54;;;:11;:54;;;;;24587:146;;;;:::o;8287:409::-;8526:24;;;-1:-1:-1;;;;;8526:24:0;;;;;;;;;;;;-1:-1:-1;;;;;8565:16:0;;;;;;;;;;;;;;-1:-1:-1;;;;;8608:20:0;;;;;;;;;;;;8335:7;8596:33;;;;;;;;;;;7818:66;8464:223;;;;;;;;;;;;;;;;;;;;;;8652:4;8464:223;;;;8370:66;8464:223;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8464:223:0;;;;;;;8454:234;;;;;8287:409;:::o;9934:292::-;10018:7;10054:3;10042:9;:15;10038:65;;;-1:-1:-1;10089:1:0;10074:17;;10038:65;10113:19;10135:27;10140:10;10152:9;10135:4;:27::i;:::-;10113:49;;10180:38;10195:11;10208:9;10180:14;:38::i;:::-;10173:45;;;9934:292;;;;;:::o;12182:695::-;12398:13;:11;:13::i;:::-;12397:14;:39;;;;12429:7;:5;:7::i;:::-;-1:-1:-1;;;;;12415:21:0;:10;-1:-1:-1;;;;;12415:21:0;;12397:39;12389:48;;;;;;12448:16;12457:6;12448:8;:16::i;:::-;12475:12;12482:4;12475:6;:12::i;:::-;12516:26;12528:1;12531:10;12516:11;:26::i;:::-;12562;12574:1;12577:10;12562:11;:26::i;:::-;12608;12620:1;12623:10;12608:11;:26::i;:::-;12667:20;;;-1:-1:-1;;;;;12667:20:0;;;;;;;;;;;;;;12655:33;;;;:11;:33;;;;;;;:44;;;12722:39;;;;;;;;;;;;;;12710:52;;;;;:59;;-1:-1:-1;;12710:59:0;12765:4;12710:59;;;12797:10;12788:5;:3;:5::i;:::-;:19;;12780:28;;;;;;-1:-1:-1;;12831:24:0;;;-1:-1:-1;;;;;12831:24:0;;;;;;;;;;;;12819:37;;;;:11;:37;;;12859:10;12819:50;;-1:-1:-1;;;;12182:695:0:o;13932:1463::-;14159:13;14181:9;11945:23;11937:56;;;;;-1:-1:-1;;;;;11937:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11937:56:0;;;;;;;;;;;;;;;12049:15;12026:19;:38;12004:112;;;;;-1:-1:-1;;;;;12004:112:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12004:112:0;;;;;;;;;;;;;;;14210:16;14237:17;14265:32;14275:10;14287:9;14265;:32::i;:::-;14474:152;;;14544:10;14474:152;;;;14581:4;14474:152;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14474:152:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;14448:189:0;;;;14308:14;;14362:6;;-1:-1:-1;;;;;14448:11:0;;;14474:152;;14448:189;;;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14448:189:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;14426:211:0;;-1:-1:-1;14426:211:0;-1:-1:-1;14426:211:0;14648:43;;;;;-1:-1:-1;;;;;14648:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14706:11;;:15;14702:147;;14738:12;14764:4;14753:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14753:24:0;;-1:-1:-1;14753:24:0;14792:45;;;;;-1:-1:-1;;;;;14792:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14702:147;;14864:9;14859:393;14879:24;;;14859:393;;;14926:12;-1:-1:-1;;;;;14944:11:0;;-1:-1:-1;;;;;15070:13:0;;15084:1;15070:16;;;;;;;;;;;;;-1:-1:-1;;;;;15070:16:0;15109:9;;15119:1;15109:12;;;;;;;14974:166;;;-1:-1:-1;;;;;14974:166:0;;;;;;;15109:12;;;;;;;;;14974:166;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14974:166:0;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;14974:166:0;;;179:29:-1;;;;160:49;;-1:-1;14944:211:0;;;14974:166;;14944:211;;;;25:18:-1;14944:211:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14944:211:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14925:230:0;;;15175:7;15170:71;;15213:9;;15223:1;15213:12;;;;;;;;;;;;;15203:22;;;;15170:71;-1:-1:-1;14905:3:0;;14859:393;;;-1:-1:-1;15266:11:0;;15262:83;;15294:39;;;-1:-1:-1;;;;;15294:39:0;;15314:10;15294:39;;;;;;;;;;;;-1:-1:-1;;;;;15294:19:0;;;;;:39;;;;;;;;;;;;;;-1:-1:-1;15294:19:0;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15294:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15294:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;15262:83:0;15360:27;;;;;;-1:-1:-1;;;;;15360:27:0;;;;;;;;-1:-1:-1;;;;;;;;;;;15360:27:0;;;;;;;;;;12127:1;;;;13932:1463;;;;;;;;;:::o;26145:176::-;26270:41;;;-1:-1:-1;;;;;26270:41:0;;;;;;;;-1:-1:-1;;;;;26270:41:0;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;26270:41:0;;;;;;26260:52;;;;;;-1:-1:-1;26248:65:0;;;:11;:65;;;;;;;26145:176::o;5680:273::-;5219:14;:12;:14::i;:::-;-1:-1:-1;;;;;5205:28:0;:10;-1:-1:-1;;;;;5205:28:0;;5197:37;;;;;;5746:45;5767:7;:5;:7::i;:::-;5776:14;:12;:14::i;:::-;5746:45;;;-1:-1:-1;;;;;5746:45:0;;;;;;;;;;;;;;;;;;;;;;;;5854:25;;;-1:-1:-1;;;;;5854:25:0;;;;;;;;;;;;;;5839:41;;;;:14;:41;;;;;;;;-1:-1:-1;;;;;5817:18:0;;;;;;;;;;;;5802:34;;;;;;;;:78;;-1:-1:-1;;;;;5839:41:0;;;-1:-1:-1;;;;;;5802:78:0;;;;;;5906:25;;;;;;;;;;;;;;;5891:41;;;;;;;:54;;;;;;;5680:273::o;8940:245::-;9060:116;;;8114:66;9060:116;;;;;;;;-1:-1:-1;;;;;9060:116:0;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9060:116:0;;;;9050:127;;;;;;8940:245::o;1329:89::-;1402:8;1395:15;;;;;;;;-1:-1:-1;;1395:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1369:13;;1395:15;;1402:8;;1395:15;;1402:8;1395:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1329:89;:::o;13129:195::-;13189:7;13242:15;13213:25;13228:9;13213:14;:25::i;:::-;:44;13209:85;;-1:-1:-1;13281:1:0;13274:8;;13209:85;13311:5;:3;:5::i;1556:97::-;1630:15;;-1:-1:-1;;;;;1630:15:0;1556:97;:::o;23824:196::-;3729:7;:5;:7::i;:::-;-1:-1:-1;;;;;3715:21:0;:10;-1:-1:-1;;;;;3715:21:0;;3707:46;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;;;;23935:31;23950:8;23960:5;23935:14;:31::i;:::-;23982:30;;;23994:10;23982:30;;;;;;;;;;;;;;;;;;;;;23824:196;;:::o;13332:143::-;3729:7;:5;:7::i;:::-;-1:-1:-1;;;;;3715:21:0;:10;-1:-1:-1;;;;;3715:21:0;;3707:46;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;;;;13402:13;13394:22;;;;;;13439:16;;;-1:-1:-1;;;;;13439:16:0;;;;13427:11;13439:16;;;;;;;;13427:29;;;;;;;;;;:40;13332:143::o;24028:257::-;24122:11;:54;24168:5;24144:30;;;;;;-1:-1:-1;;;;;24144:30:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;24144:30:0;;;24134:41;;;;;;24122:54;;;;;;;;;;;;24109:9;:67;;24087:100;;;;;;24198:33;24213:10;24225:5;24198:14;:33::i;:::-;24247:30;;;24259:10;24247:30;;;;;;;;;;;;;;;;;;;;;24028:257;:::o;18491:1797::-;18796:16;18823:19;18845:35;18857:10;18869;;18845:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;18845:11:0;;-1:-1:-1;;;18845:35:0:i;:::-;18823:57;-1:-1:-1;;;;;;18913:25:0;;18891:114;;;;-1:-1:-1;;;;;18891:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19024:24;19016:57;;;;;-1:-1:-1;;;;;19016:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19016:57:0;;;;;;;;;;;;;;;19106:40;;;19084:114;;;;;-1:-1:-1;;;;;19084:114:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19084:114:0;;;;;;;;;;;;;;;19209:33;19219:11;19232:9;19209;:33::i;:::-;19253:14;19270:1;19253:18;;19300:6;-1:-1:-1;;;;;19300:11:0;19367:10;19396:11;19434:4;19458:6;19326:153;;;;;;-1:-1:-1;;;;;19326:153:0;-1:-1:-1;;;;;19326:153:0;;;;;;-1:-1:-1;;;;;19326:153:0;-1:-1:-1;;;;;19326:153:0;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19326:153:0;;;;;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;19326:153:0;19300:190;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;19300:190:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;19282:208:0;;;;;19509:11;19501:49;;;;;-1:-1:-1;;;;;19501:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19566:9;19561:408;19581:24;;;19561:408;;;19628:12;19646:6;-1:-1:-1;;;;;19646:11:0;19754:10;19787:13;;19801:1;19787:16;;;;;;;;;;;;;-1:-1:-1;;;;;19787:16:0;19826:9;;19836:1;19826:12;;;;;;;;;;;;;19676:181;;;;;;-1:-1:-1;;;;;19676:181:0;-1:-1:-1;;;;;19676:181:0;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19676:181:0;;;;;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;19676:181:0;19646:226;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;19646:226:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;19627:245:0;;;19892:7;19887:71;;19930:9;;19940:1;19930:12;;;;;;;;;;;;;19920:22;;;;19887:71;-1:-1:-1;19607:3:0;;19561:408;;;-1:-1:-1;19983:11:0;;19979:259;;20011:6;-1:-1:-1;;;;;20011:11:0;20119:10;20152:11;20186:6;20041:170;;;;;;-1:-1:-1;;;;;20041:170:0;-1:-1:-1;;;;;20041:170:0;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20041:170:0;;;;;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;20041:170:0;20011:215;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20011:215:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;20011:215:0;;20253:27;;;;;;-1:-1:-1;;;;;20253:27:0;;;;;;;;-1:-1:-1;;;;;;;;;;;20253:27:0;;;;;;;;;;18491:1797;;;;;;;;;;;;;:::o;2158:107::-;2210:7;2237:20;-1:-1:-1;;;;;2237:20:0;2158:107;:::o;24293:162::-;3729:7;:5;:7::i;:::-;-1:-1:-1;;;;;3715:21:0;:10;-1:-1:-1;;;;;3715:21:0;;3707:46;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;;;;24381:7;24372:5;:3;:5::i;:::-;:16;;24364:25;;;;;;24412:24;;;-1:-1:-1;;;;;24412:24:0;;;;;;;;;;;;24400:37;;;;:11;:37;;;:47;24293:162::o;26850:335::-;27025:29;;;;;;;;;;;;;;;;26971:25;;27039:7;27025:29;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;27025:29:0;-1:-1:-1;27014:40:0;-1:-1:-1;27070:9:0;27065:113;27085:18;;;27065:113;;;27139:5;-1:-1:-1;;;;;27139:15:0;;27155:7;;27163:1;27155:10;;;;;;;;;;;;;-1:-1:-1;;;;;27155:10:0;27139:27;;;;;;;;;;;;;-1:-1:-1;;;;;27139:27:0;-1:-1:-1;;;;;27139:27:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27139:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27139:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27139:27:0;27125:11;;:8;;27134:1;;27125:11;;;;;;;;;;;;;;;:41;27105:3;;27065:113;;;;26850:335;;;;;:::o;21717:936::-;21958:29;;21900:13;21922:9;11945:23;11937:56;;;;;-1:-1:-1;;;;;11937:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11937:56:0;;;;;;;;;;;;;;;12049:15;12026:19;:38;12004:112;;;;;-1:-1:-1;;;;;12004:112:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12004:112:0;;;;;;;;;;;;;;;22050:35;;;;;;;;;;;;;;;;22064:13;22050:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;22050:35:0;-1:-1:-1;22110:35:0;;;;;;;;;;;;;;;;22035:50;;-1:-1:-1;22124:13:0;22110:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;22110:35:0;-1:-1:-1;22096:49:0;-1:-1:-1;22175:9:0;22158:14;22218:22;22229:10;22218;:22::i;:::-;22195:45;-1:-1:-1;22260:24:0;:6;22195:45;22260:24;:10;:24;:::i;:::-;22251:33;-1:-1:-1;22302:9:0;22297:349;22317:24;;;22297:349;;;22363:13;22379;;22393:1;22379:16;;;;;;;;;;;;;-1:-1:-1;;;;;22379:16:0;-1:-1:-1;;;;;22379:21:0;:35;22401:9;;22411:1;22401:12;;;;;;;;;;;;;22379:35;;;;;;;;;;;;;;;;;;;;;;;22363:51;;22434:8;22429:206;;22481:13;;22495:1;22481:16;;;;;;;;;;;;;-1:-1:-1;;;;;22481:16:0;22463:12;22476:1;22463:15;;;;;;;;;;;;;:34;-1:-1:-1;;;;;22463:34:0;;;-1:-1:-1;;;;;22463:34:0;;;;;22533:9;;22543:1;22533:12;;;;;;;;;;;;;22516:11;22528:1;22516:14;;;;;;;;;;;;;:29;;;;;22429:206;;;22595:24;22606:9;;22616:1;22606:12;;;;;;;;;;;;;22595:6;:10;;:24;;;;:::i;:::-;22586:33;;22429:206;-1:-1:-1;22343:3:0;;22297:349;;;;12127:1;;21717:936;;;;;;;;;:::o;25733:404::-;25790:7;25832:10;25828:74;;-1:-1:-1;25884:6:0;25866:15;:24;25859:31;;25828:74;25935:5;25944:1;25935:10;25931:74;;;-1:-1:-1;25987:6:0;25969:15;:24;25962:31;;25931:74;26040:5;26049:1;26040:10;26036:75;;;-1:-1:-1;26092:7:0;26074:15;:25;26067:32;;26036:75;-1:-1:-1;26128:1:0;25733:404;;;:::o;26531:311::-;26691:29;;;;;;;;;;;;;;;;26637:25;;26705:7;26691:29;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;26691:29:0;-1:-1:-1;26680:40:0;-1:-1:-1;26736:9:0;26731:104;26751:18;;;26731:104;;;26805:7;;26813:1;26805:10;;;;;;;;;;;;;-1:-1:-1;;;;;26805:10:0;-1:-1:-1;;;;;26805:18:0;;26791:8;26800:1;26791:11;;;;;;;;;;;;;;;;;:32;26771:3;;26731:104;;;;26531:311;;;;:::o;24463:116::-;24546:24;;;-1:-1:-1;;;;;24546:24:0;;;;;;;;;;;;24507:7;24534:37;;;:11;:37;;;;24463:116;:::o;3881:107::-;3961:18;;;-1:-1:-1;;;;;3961:18:0;;;;3946:14;3961:18;;;;;;;;3919:7;3946:34;;;;;;;;;;-1:-1:-1;;;;;3946:34:0;;3881:107::o;16453:769::-;16690:13;16712:9;11945:23;11937:56;;;;;-1:-1:-1;;;;;11937:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11937:56:0;;;;;;;;;;;;;;;12049:15;12026:19;:38;12004:112;;;;;-1:-1:-1;;;;;12004:112:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12004:112:0;;;;;;;;;;;;;;;16741:32;16751:10;16763:9;16741;:32::i;:::-;16809:6;16784:16;16827:345;16847:24;;;16827:345;;;16894:12;-1:-1:-1;;;;;16912:11:0;;-1:-1:-1;;;;;17042:10:0;17075:13;;17089:1;17075:16;;;;;;;;;;;;;-1:-1:-1;;;;;17075:16:0;17114:9;;17124:1;17114:12;;;;;;;16942:203;;;-1:-1:-1;;;;;16942:203:0;;;;;;;;;;;;;;;17114:12;;;;;;;;;16942:203;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16942:203:0;;;;;;-1:-1:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;16942:203:0;;;179:29:-1;;;;160:49;;16912:248:0;;;;16942:203;;16912:248;;;;25:18:-1;16912:248:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;16912:248:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;;16873:3:0;;;;;-1:-1:-1;16827:345:0;;-1:-1:-1;16827:345:0;;-1:-1:-1;17187:27:0;;;;;;-1:-1:-1;;;;;17187:27:0;;;;;;;;-1:-1:-1;;;;;;;;;;;17187:27:0;;;;;;;;;;12127:1;16453:769;;;;;;;;;:::o;17230:1253::-;17545:19;17567:35;17579:10;17591;;17567:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17567:11:0;;-1:-1:-1;;;17567:35:0:i;:::-;17545:57;-1:-1:-1;;;;;;17635:25:0;;17613:114;;;;-1:-1:-1;;;;;17613:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17746:24;17738:57;;;;;-1:-1:-1;;;;;17738:57:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17738:57:0;;;;;;;;;;;;;;;17828:40;;;17806:114;;;;;-1:-1:-1;;;;;17806:114:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17806:114:0;;;;;;;;;;;;;;;18000:33;18010:11;18023:9;18000;:33::i;:::-;18069:6;18044:16;18087:346;18107:24;;;18087:346;;;18154:12;-1:-1:-1;;;;;18172:11:0;;-1:-1:-1;;;;;18302:11:0;18336:13;;18350:1;18336:16;;;;;;;;;;;;;-1:-1:-1;;;;;18336:16:0;18375:9;;18385:1;18375:12;;;;;;;18202:204;;;-1:-1:-1;;;;;18202:204:0;;;;;;;;;;;;;;;18375:12;;;;;;;;;18202:204;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18202:204:0;;;;;;-1:-1:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;18202:204:0;;;179:29:-1;;;;160:49;;18172:249:0;;;;18202:204;;18172:249;;;;25:18:-1;18172:249:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;18172:249:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;;18133:3:0;;;;;-1:-1:-1;18087:346:0;;-1:-1:-1;18087:346:0;;-1:-1:-1;18448:27:0;;;;;;-1:-1:-1;;;;;18448:27:0;;;;;;;;-1:-1:-1;;;;;;;;;;;18448:27:0;;;;;;;;;;17230:1253;;;;;;;;;;;;:::o;22661:996::-;22810:13;22832:9;11945:23;11937:56;;;;;-1:-1:-1;;;;;11937:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11937:56:0;;;;;;;;;;;;;;;12049:15;12026:19;:38;12004:112;;;;;-1:-1:-1;;;;;12004:112:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12004:112:0;;;;;;;;;;;;;;;22861:30;22894:36;22902:4;22894:21;22920:9;22894:36;:25;:36;:::i;:::-;22861:69;-1:-1:-1;22958:9:0;22941:14;23001:22;23012:10;23001;:22::i;:::-;22978:45;-1:-1:-1;23043:24:0;:6;22978:45;23043:24;:10;:24;:::i;:::-;23034:33;-1:-1:-1;23085:9:0;23080:225;23100:24;;;23080:225;;;23146:13;23162;;23176:1;23162:16;;;;;;;;;;;;;-1:-1:-1;;;;;23162:16:0;-1:-1:-1;;;;;23162:21:0;:35;23184:9;;23194:1;23184:12;;;;;;;;;;;;;23162:35;;;;;;;;;;;;;;;;;;;;;;;23146:51;;23216:8;23212:82;;;23254:24;23265:9;;23275:1;23265:12;;;;;;23254:24;23245:33;;23212:82;-1:-1:-1;23126:3:0;;23080:225;;;-1:-1:-1;23357:4:0;23349:21;23462:40;:22;23489:12;23462:40;:26;:40;:::i;:::-;23437:21;:65;;23415:153;;;;-1:-1:-1;;;;;23415:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23586:63;;;;;;23606:42;23586:63;;;;;;-1:-1:-1;;;;;;;;;;;23586:63:0;;;;;;;;;;12127:1;;;;22661:996;;;;;;:::o;20344:1317::-;20643:29;;20569:13;20591:9;11945:23;11937:56;;;;;-1:-1:-1;;;;;11937:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11937:56:0;;;;;;;;;;;;;;;12049:15;12026:19;:38;12004:112;;;;;-1:-1:-1;;;;;12004:112:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12004:112:0;;;;;;;;;;;;;;;11679:19;11701:22;11712:10;11701;:22::i;:::-;11679:44;-1:-1:-1;11738:15:0;;11734:91;;11791:11;11778:9;:24;;11770:43;;;;;-1:-1:-1;;;;;11770:43:0;;;;;;;;;;;;-1:-1:-1;;;;;11770:43:0;;;;;;;;;;;;;;;20735:35;;;;;;;;;;;;;;;;20749:13;20735:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;20735:35:0;-1:-1:-1;20795:35:0;;;;;;;;;;;;;;;;20720:50;;-1:-1:-1;20809:13:0;20795:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;20795:35:0;-1:-1:-1;20955:152:0;;;21025:10;20955:152;;;;21062:4;20955:152;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20955:152:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;20929:189:0;;;;20781:49;;-1:-1:-1;20866:6:0;;20841:16;;-1:-1:-1;;;;;20929:11:0;;;20955:152;20929:189;;;25:18:-1;20929:189:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20929:189:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;20911:207:0;;-1:-1:-1;21206:9:0;;-1:-1:-1;21201:453:0;21221:24;;;21201:453;;;21268:12;-1:-1:-1;;;;;21286:11:0;;-1:-1:-1;;;;;21412:13:0;;21426:1;21412:16;;;;;;;;;;;;;-1:-1:-1;;;;;21412:16:0;21451:9;;21461:1;21451:12;;;;;;;21316:166;;;-1:-1:-1;;;;;21316:166:0;;;;;;;21451:12;;;;;;;;;21316:166;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;21316:166:0;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;21316:166:0;;;179:29:-1;;;;160:49;;-1:-1;21286:211:0;;;21316:166;;21286:211;;;;25:18:-1;21286:211:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;21286:211:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;21267:230:0;;;21517:7;21512:131;;21563:13;;21577:1;21563:16;;;;;;;;;;;;;-1:-1:-1;;;;;21563:16:0;21545:12;21558:1;21545:15;;;;;;;;;;;;;:34;-1:-1:-1;;;;;21545:34:0;;;-1:-1:-1;;;;;21545:34:0;;;;;21615:9;;21625:1;21615:12;;;;;;;;;;;;;21598:11;21610:1;21598:14;;;;;;;;;;;;;:29;;;;;21512:131;-1:-1:-1;21247:3:0;;21201:453;;;;11835:1;;12127;20344:1317;;;;;;;;;;;:::o;23665:151::-;3729:7;:5;:7::i;:::-;-1:-1:-1;;;;;3715:21:0;:10;-1:-1:-1;;;;;3715:21:0;;3707:46;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;;;;23767:30;;;-1:-1:-1;;;;;23767:30:0;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;23767:30:0;;;;;;23757:41;;;;;;;;;23745:54;;;;:11;:54;;;;;;:63;23665:151::o;13483:97::-;;;;:::o;9268:658::-;9609:4;9594:20;;9588:27;9655:4;9640:20;;9634:27;9701:4;9686:20;;9680:27;9410:7;;9588:27;9634;9410:7;9811:18;:16;:18::i;:::-;9844:11;9755:111;;;;;;-1:-1:-1;;;;;9755:111:0;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9755:111:0;;;9745:122;;;;;;9728:139;;9885:33;9895:6;9909:1;9903:8;;9913:1;9916;9885:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9885:33:0;;-1:-1:-1;;9885:33:0;;;9268:658;-1:-1:-1;;;;;;;;9268:658:0:o;7769:115::-;7818:66;7769:115;:::o;24741:386::-;24923:35;;;-1:-1:-1;;;;;24923:35:0;;;;;;;24818:13;24923:35;;;;;;;;;26:21:-1;;;22:32;;;6:49;;24923:35:0;;;;;24913:46;;;;;;24901:59;;:11;:59;;;;;;;24997:35;;;;;;25029:1;24997:35;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;24997:35:0;;;;;24987:46;;;;;;24975:59;;;;;;;;;25071:35;;;;;;;25103:1;25071:35;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;25071:35:0;;;;;;25061:46;;;;;;;;;25049:59;;;;;;;;;;24901;24741:386;:::o;13021:100::-;13096:16;;;-1:-1:-1;;;;;13096:16:0;;;;13084:11;13096:16;;;;;;;;13057:7;13084:29;;;;;;;;;;;13021:100::o;4930:121::-;5017:25;;;-1:-1:-1;;;;;5017:25:0;;;;;;;;;;;;4975:7;5002:41;;;:14;:41;;;;-1:-1:-1;;;;;5002:41:0;4930:121;:::o;5410:175::-;3729:7;:5;:7::i;:::-;-1:-1:-1;;;;;3715:21:0;:10;-1:-1:-1;;;;;3715:21:0;;3707:46;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5491:22:0;;5483:31;;;;;;5540:25;;;-1:-1:-1;;;;;5540:25:0;;;;;;;;;;;;5525:41;;;;:14;:41;;;:52;;-1:-1:-1;;;;;5525:52:0;;;-1:-1:-1;;;;;;5525:52:0;;;;;;;;;5410:175::o;25135:590::-;3729:7;:5;:7::i;:::-;-1:-1:-1;;;;;3715:21:0;:10;-1:-1:-1;;;;;3715:21:0;;3707:46;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;-1:-1:-1;;;;;3707:46:0;;;;;;;;;;;;;;;25219:28;25266:7;:5;:7::i;:::-;25219:56;-1:-1:-1;25303:7:0;25325:12;25321:75;;-1:-1:-1;25371:4:0;25363:21;25321:75;-1:-1:-1;;;;;25410:20:0;;25406:103;;25447:29;;-1:-1:-1;;;;;25447:21:0;;;:29;;;;;25469:6;;25447:29;;;;25469:6;25447:21;:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25447:29:0;25491:7;;;;25406:103;25571:35;;;-1:-1:-1;;;;;25571:35:0;;25600:4;25571:35;;;;;;25544:6;;-1:-1:-1;;;;;25571:20:0;;;;;:35;;;;;;;;;;;;;;;:20;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;25571:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25571:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25571:35:0;25617:41;;;-1:-1:-1;;;;;25617:41:0;;-1:-1:-1;;;;;25617:41:0;;;;;;;;;;;;;;;25571:35;;-1:-1:-1;25617:19:0;;;;;;:41;;;;;25571:35;;25617:41;;;;;;;;-1:-1:-1;25617:19:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;25617:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25617:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;25674:43:0;;;-1:-1:-1;;;;;25674:43:0;;;;;;;25617:41;25674:43;;;;;;;;;;;;;;;;;;;;3764:1;;;;25135:590;;:::o;4365:164::-;4426:39;4447:7;:5;:7::i;:::-;4426:39;;;-1:-1:-1;;;;;4426:39:0;;;;;;;;;;;;;;;;;;;;;4491:18;;;-1:-1:-1;;;;;4491:18:0;;;;4476:14;4491:18;;;;;;;;4476:34;;;;;;;;;;:45;;-1:-1:-1;;;;;;4476:45:0;-1:-1:-1;;;;;4476:45:0;;;;;;;;;;4365:164::o;13588:336::-;13669:19;13691:17;13702:5;13691:10;:17::i;:::-;13669:39;-1:-1:-1;13723:15:0;;13719:198;;13776:11;13763:9;:24;;13755:43;;;;;-1:-1:-1;;;;;13755:43:0;;;;;;;;;;;;-1:-1:-1;;;;;13755:43:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13817:23:0;;;13813:93;;13861:9;-1:-1:-1;;;;;13861:14:0;:29;13876:13;:11;:13::i;:::-;13861:29;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13588:336:0;;;:::o;26329:194::-;26497:18;26509:5;26497:11;:18::i;:::-;26441:41;;;-1:-1:-1;;;;;26441:41:0;;;;;;;;-1:-1:-1;;;;;26441:41:0;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;26441:41:0;;;;;;26417:76;;;;;;26405:89;;;;:11;:89;;;;;;:110;;;;-1:-1:-1;26329:194:0:o;6953:113::-;7011:7;7039:1;7034;:6;;7027:14;;;;-1:-1:-1;7055:5:0;;;6953:113::o;7133:133::-;7191:7;7219:5;;;7238:6;;;;7231:14;;;;7259:1;7133:133;-1:-1:-1;;;7133:133:0:o

Swarm Source

bzzr://15702cec60f868ccce8dcbcf1b93c56c824f0492fc20143a38a6ca3af8ab0134
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.