Contract 0x7d4e35A2090b3ba805ddB39B2c4b83612890Df87

 
 
Txn Hash
Method
Block
From
To
Value
0x3e81961e4b7de11fd94250cb24429a8d7c58d058b2739ae463576bab59d550c1Set Approval For...144153412022-03-19 6:46:48195 days 15 hrs ago0x716e3f2f257c9956b56842a67f14e623e7629053 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0003778 15.34178562
0xe213e92da4e4d96f6634783f5e4ecd4c391a17691726a3313d84d798fa25eddeSet Approval For...142264002022-02-17 22:38:16224 days 23 hrs ago0xdcd0b5a368c3f8414e14989eb34addebdaea3912 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.00321377 69.0570233
0x878884ef9ed44a1e8201a461a04ed96db868b84deca3c627f6b2fc99226e7eb8Set Approval For...139812472022-01-11 1:25:38262 days 21 hrs ago0xfe1c8d120fd82cdb4148cbc4bf5bb97d4ed0a8c5 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0090756 195.01489533
0xc5fbdc813b5d4da2375b78620fe48cc3b3829708b77d998f7b4027db410cb232Set Approval For...139772542022-01-10 10:32:18263 days 12 hrs ago0xdcd0b5a368c3f8414e14989eb34addebdaea3912 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0106984 229.88536961
0xd1e00840b1cb3a3d62c3e46483960fff2ad6fda7388944986dc0d7ff94efcb60Set Approval For...139567622022-01-07 6:45:22266 days 15 hrs ago0x8cab47bb2279d347edabf3d86ce26bae586fde20 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.00612602 131.63480762
0x03a72b6fdbb654ec454f6601bab5db546ac3e1c05ee8bcf388217734032ff17aSet Approval For...132484782021-09-18 8:02:02377 days 14 hrs agoENS Name malie.eth IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.00202736 43.57479773
0x7677d7804eacfc33560cd80c511289140e071c14f746bf2003ce60a15f623bcdSet Approval For...131368372021-09-01 1:32:12394 days 21 hrs ago0xc5cf86bae0359dfeef6a14a6fe341c03e2ebcb00 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.00483336 103.85836994
0xf382780cf11729a830553ac0d81b619e0eafc34fd708b0a3ade5cdd99322e7caSet Approval For...131055182021-08-27 5:03:51399 days 17 hrs ago0xf388273e937382e285a4f736c49e7b29eeaa6265 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.00337425 72.50530732
0xf9cd954cd52aed162166d605d0b45f435c3b502b44ea572d5b7b65e41060db85Set Approval For...130353582021-08-16 9:05:41410 days 13 hrs ago0xdcd0b5a368c3f8414e14989eb34addebdaea3912 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.00191825 41.21905107
0xe271aaacd1fb8973719560db5a9e4b47d0eb434522f5a0ee11dc634a09a4051aWithdraw129266612021-07-30 11:20:09427 days 11 hrs ago0xe811f02418646ae93f540ed2877a487be85dd842 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0010876331
0x95ce4b02fe13f9b017d1b69b89bdbfd05f272424f880fda7b65cd38a87813f6cSet Approval For...128863992021-07-24 2:46:05433 days 19 hrs agoENS Name demosthenes.eth IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.000744616
0x1d01ab62419ea35a971b7afc3b38c5a0ca58865e53ea41a4a0ce3496776a842aSet Approval For...126500242021-06-17 5:18:48470 days 17 hrs ago0x126ed947de7b84ab29526d35cef99c9b72b285a5 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0006515314
0xb5f5bd9c511642f9f49effdd2cebf6797ea8057050aec506d5ab81e2241961f9Withdraw126448342021-06-16 10:02:20471 days 12 hrs ago0x6752659c758acfba28cba1414261fb5bf644be06 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0017610511
0x8635aa55c7ed0022e44aa76eb29a9a5d441048e2c5ae630786ba5e0f779c1284Withdraw126447632021-06-16 9:47:03471 days 12 hrs ago0x6752659c758acfba28cba1414261fb5bf644be06 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0017610511
0x3886c2e423c69706f593154c389b8a12e22f6db27495432a2204a7e99998f88bWithdraw126238732021-06-13 3:59:33474 days 18 hrs ago0xe811f02418646ae93f540ed2877a487be85dd842 IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0016009610
0x279cd2cbb0a378edc557751b4a059b9dc20e1419197c3fcedfad12dd9c142db0Withdraw Multipl...126236862021-06-13 3:20:51474 days 19 hrs agoENS Name ghostagent.eth IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.017032919
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584Withdraw Multipl...126236422021-06-13 3:11:43474 days 19 hrs agoENS Name ghostagent.eth IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0344804110
0x061c35d4215ca4a2af3af133c9f219302a6471c78df222507ee3fc47526b9c72Withdraw Multipl...126236302021-06-13 3:08:31474 days 19 hrs agoENS Name ghostagent.eth IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.028232479
0x22e9fe10c8b0c63430d38e014bff8c0c6b2155226e8439e48e86369be7af6196Withdraw Multipl...126235862021-06-13 2:56:59474 days 19 hrs agoENS Name ghostagent.eth IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.025535619
0xead5742b35ac399cacade21384510d4f44dc56d187a797e883c71e01aee06209Withdraw Multipl...126235582021-06-13 2:50:24474 days 19 hrs agoENS Name ghostagent.eth IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.028232479
0x697317ae374ee4c6bf9e8ed38231f9ea41980b0fdde15b5744bd092d97b91ce0Withdraw Multipl...126232492021-06-13 1:42:22474 days 20 hrs agoPOW NFT: Deployer IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0313040810
0x947594353641b0f3dfb2e99a5b60a8c262b8552e2a86461f89dda60181bc80d2Withdraw Multipl...126232342021-06-13 1:40:40474 days 20 hrs agoPOW NFT: Deployer IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0401646210
0x8ff96c1a62e6d1105d0f0fab5160d5cc0cdcfc26a2df421a7912fa51ab3ac8beWithdraw Multipl...126232092021-06-13 1:36:09474 days 21 hrs agoPOW NFT: Deployer IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0401646210
0x5e4728c6256aa921f5bc2e31a6f346c82ff5c2197101472c8d8bc9d9b539fe39Withdraw Multipl...126231962021-06-13 1:31:55474 days 21 hrs agoPOW NFT: Deployer IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0481975412
0x970391eea3f7013af2a9a6e0f11273ec17b995daf0f701c7859e36ffa5fdc1c5Withdraw Multipl...126231822021-06-13 1:29:00474 days 21 hrs agoPOW NFT: Deployer IN  0x7d4e35a2090b3ba805ddb39b2c4b83612890df870 Ether0.0481975412
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb5f5bd9c511642f9f49effdd2cebf6797ea8057050aec506d5ab81e2241961f9126448342021-06-16 10:02:20471 days 12 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df870x6752659c758acfba28cba1414261fb5bf644be060.0042 Ether
0x8635aa55c7ed0022e44aa76eb29a9a5d441048e2c5ae630786ba5e0f779c1284126447632021-06-16 9:47:03471 days 12 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df870x6752659c758acfba28cba1414261fb5bf644be060.0042 Ether
0x3886c2e423c69706f593154c389b8a12e22f6db27495432a2204a7e99998f88b126238732021-06-13 3:59:33474 days 18 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df870xe811f02418646ae93f540ed2877a487be85dd8420.0042 Ether
0x279cd2cbb0a378edc557751b4a059b9dc20e1419197c3fcedfad12dd9c142db0126236862021-06-13 3:20:51474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x279cd2cbb0a378edc557751b4a059b9dc20e1419197c3fcedfad12dd9c142db0126236862021-06-13 3:20:51474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x279cd2cbb0a378edc557751b4a059b9dc20e1419197c3fcedfad12dd9c142db0126236862021-06-13 3:20:51474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x279cd2cbb0a378edc557751b4a059b9dc20e1419197c3fcedfad12dd9c142db0126236862021-06-13 3:20:51474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x279cd2cbb0a378edc557751b4a059b9dc20e1419197c3fcedfad12dd9c142db0126236862021-06-13 3:20:51474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x279cd2cbb0a378edc557751b4a059b9dc20e1419197c3fcedfad12dd9c142db0126236862021-06-13 3:20:51474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x8ba511b3e4e3a3f72bde7c8b03f61c78af6563ca4a68f036ba7ad886a2ede584126236422021-06-13 3:11:43474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x061c35d4215ca4a2af3af133c9f219302a6471c78df222507ee3fc47526b9c72126236302021-06-13 3:08:31474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x061c35d4215ca4a2af3af133c9f219302a6471c78df222507ee3fc47526b9c72126236302021-06-13 3:08:31474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x061c35d4215ca4a2af3af133c9f219302a6471c78df222507ee3fc47526b9c72126236302021-06-13 3:08:31474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x061c35d4215ca4a2af3af133c9f219302a6471c78df222507ee3fc47526b9c72126236302021-06-13 3:08:31474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
0x061c35d4215ca4a2af3af133c9f219302a6471c78df222507ee3fc47526b9c72126236302021-06-13 3:08:31474 days 19 hrs ago 0x7d4e35a2090b3ba805ddb39b2c4b83612890df87ENS Name ghostagent.eth0.01188 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
POWNFT

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-03-07
*/

// SPDX-License-Identifier: This smart contract is guarded by an angry ghost
pragma solidity ^0.8.0;

contract POWNFT{


    constructor(){
        supportedInterfaces[0x80ac58cd] = true; //ERC721
        supportedInterfaces[0x5b5e139f] = true; //ERC721Metadata
        supportedInterfaces[0x780e9d63] = true; //ERC721Enumerable
        supportedInterfaces[0x01ffc9a7] = true; //ERC165

        //Issue token 0 to creator
        mint(1,bytes32(0));
    }


    //////===721 Standard
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    //////===721 Implementation
    mapping(address => uint256) internal BALANCES;
    mapping (uint256 => address) internal ALLOWANCE;
    mapping (address => mapping (address => bool)) internal AUTHORISED;

    bytes32[] TOKENS;  //Array of all tokens [hash,hash,...]
    mapping(uint256 => address) OWNERS;  //Mapping of owners


    mapping(uint256 => uint256) WITHDRAWALS;

    //    METADATA VARS
    string private __name = "POW NFT";
    string private __symbol = "POW";
    bytes private __uriBase = bytes("https://www.pownftmetadata.com/d/");


    //    ENUMERABLE VARS
    mapping(address => uint[]) internal OWNER_INDEX_TO_ID;
    mapping(uint => uint) internal OWNER_ID_TO_INDEX;
    mapping(uint => uint) internal ID_TO_INDEX;


    //      MINING VARS
    uint BASE_COST = 0.00003 ether;
    uint BASE_DIFFICULTY = uint(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)/uint(2);
    uint DIFFICULTY_RAMP = 5;


    //      MINING EVENTS
    event Mined(uint indexed _tokenId, bytes32 hash);
    event Withdraw(uint indexed _tokenId, uint value);

    //      MINING FUNCTIONS
    function generationOf(uint _tokenId) private pure returns(uint generation){
        for(generation = 0; _tokenId > 0; generation++){
            _tokenId /= 2;
        }
        return generation - 1;
    }
    function hashOf(uint _tokenId) public view returns(bytes32){
        require(isValidToken(_tokenId),"invalid");
        return TOKENS[_tokenId - 1];
    }

    function withdraw(uint _tokenId) public{
        require(msg.sender == ownerOf(_tokenId),'owner');

        uint generation = generationOf(_tokenId);


        uint last = 2**(generation+1)-1;
        uint payout = 0;
        for(uint i = TOKENS.length; i > last && i > WITHDRAWALS[_tokenId]; i--){
            payout += BASE_COST;
        }
        WITHDRAWALS[_tokenId] = TOKENS.length;
        emit Withdraw(_tokenId,payout);
        payable(msg.sender).transfer(payout);

    }
    function withdrawMultiple(uint[] calldata _tokenIds) public{
        for(uint i = 0; i < _tokenIds.length; i++){
            withdraw(_tokenIds[i]);
        }
    }

    function mine(uint nonce) external payable{
        uint tokenId = TOKENS.length + 1;
        uint generation = generationOf(tokenId);

        uint difficulty = BASE_DIFFICULTY / (DIFFICULTY_RAMP**generation);
        if(generation > 13){
            difficulty /= (tokenId - 2**14 + 1);
        }


        uint cost = (2**generation - 1)* BASE_COST;


        bytes32 hash = keccak256(abi.encodePacked(msg.sender,TOKENS[tokenId-2],nonce));

        require(uint(hash) < difficulty,"difficulty");
        require(msg.value ==cost,"cost");

        mint(tokenId,keccak256(abi.encodePacked(hash,block.timestamp)));
    }

    function mint(uint tokenId, bytes32 hash) private{
        OWNERS[tokenId] = msg.sender;
        BALANCES[msg.sender]++;
        OWNER_ID_TO_INDEX[tokenId] = OWNER_INDEX_TO_ID[msg.sender].length;
        OWNER_INDEX_TO_ID[msg.sender].push(tokenId);

        ID_TO_INDEX[tokenId] = TOKENS.length;
        TOKENS.push(hash);

        emit Mined(tokenId,hash);
        emit Transfer(address(0),msg.sender,tokenId);
    }


    function isValidToken(uint256 _tokenId) internal view returns(bool){
        return OWNERS[_tokenId] != address(0);
    }

    function balanceOf(address _owner) external view returns (uint256){
        return BALANCES[_owner];
    }

    function ownerOf(uint256 _tokenId) public view returns(address){
        require(isValidToken(_tokenId),"invalid");
        return OWNERS[_tokenId];
    }


    function approve(address _approved, uint256 _tokenId)  external{
        address owner = ownerOf(_tokenId);
        require( owner == msg.sender                    //Require Sender Owns Token
            || AUTHORISED[owner][msg.sender]                //  or is approved for all.
        ,"permission");
        emit Approval(owner, _approved, _tokenId);
        ALLOWANCE[_tokenId] = _approved;
    }

    function getApproved(uint256 _tokenId) external view returns (address) {
        require(isValidToken(_tokenId),"invalid");
        return ALLOWANCE[_tokenId];
    }

    function isApprovedForAll(address _owner, address _operator) external view returns (bool) {
        return AUTHORISED[_owner][_operator];
    }


    function setApprovalForAll(address _operator, bool _approved) external {
        emit ApprovalForAll(msg.sender,_operator, _approved);
        AUTHORISED[msg.sender][_operator] = _approved;
    }


    function transferFrom(address _from, address _to, uint256 _tokenId) public {

        //Check Transferable
        //There is a token validity check in ownerOf
        address owner = ownerOf(_tokenId);

        require ( owner == msg.sender             //Require sender owns token
        //Doing the two below manually instead of referring to the external methods saves gas
        || ALLOWANCE[_tokenId] == msg.sender      //or is approved for this token
            || AUTHORISED[owner][msg.sender]          //or is approved for all
        ,"permission");
        require(owner == _from,"owner");
        require(_to != address(0),"zero");

        emit Transfer(_from, _to, _tokenId);


        OWNERS[_tokenId] =_to;

        BALANCES[_from]--;
        BALANCES[_to]++;

        //Reset approved if there is one
        if(ALLOWANCE[_tokenId] != address(0)){
            delete ALLOWANCE[_tokenId];
        }

        //Enumerable Additions
        uint oldIndex = OWNER_ID_TO_INDEX[_tokenId];
        //If the token isn't the last one in the owner's index
        if(oldIndex != OWNER_INDEX_TO_ID[_from].length - 1){
            //Move the old one in the index list
            OWNER_INDEX_TO_ID[_from][oldIndex] = OWNER_INDEX_TO_ID[_from][OWNER_INDEX_TO_ID[_from].length - 1];
            //Update the token's reference to its place in the index list
            OWNER_ID_TO_INDEX[OWNER_INDEX_TO_ID[_from][oldIndex]] = oldIndex;
        }
        //OWNER_INDEX_TO_ID[_from].length--;
        OWNER_INDEX_TO_ID[_from].pop();

        OWNER_ID_TO_INDEX[_tokenId] = OWNER_INDEX_TO_ID[_to].length;
        OWNER_INDEX_TO_ID[_to].push(_tokenId);

    }

    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) public {
        transferFrom(_from, _to, _tokenId);

        //Get size of "_to" address, if 0 it's a wallet
        uint32 size;
        assembly {
            size := extcodesize(_to)
        }
        if(size > 0){
            ERC721TokenReceiver receiver = ERC721TokenReceiver(_to);
            require(receiver.onERC721Received(msg.sender,_from,_tokenId,data) == bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")),"receiver");
        }

    }

    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external {
        safeTransferFrom(_from,_to,_tokenId,"");
    }


    // METADATA FUNCTIONS
    function tokenURI(uint256 _tokenId) public view returns (string memory){
        //Note: changed visibility to public
        require(isValidToken(_tokenId),'tokenId');

        uint _i = _tokenId;
        uint j = _i;
        uint len;
        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len;
        while (_i != 0) {
            k = k-1;
            uint8 temp = (48 + uint8(_i - _i / 10 * 10));
            bytes1 b1 = bytes1(temp);
            bstr[k] = b1;
            _i /= 10;
        }


        return string(abi.encodePacked(__uriBase,bstr));

    }



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

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


    // ENUMERABLE FUNCTIONS
    function totalSupply() external view returns (uint256){
        return TOKENS.length;
    }

    function tokenByIndex(uint256 _index) external view returns(uint256){
        require(_index < TOKENS.length,"index");
        return _index + 1;
    }

    function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256){
        require(_index < BALANCES[_owner],"index");
        return OWNER_INDEX_TO_ID[_owner][_index];
    }

    // End 721 Implementation

    ///////===165 Implementation
    mapping (bytes4 => bool) internal supportedInterfaces;
    function supportsInterface(bytes4 interfaceID) external view returns (bool){
        return supportedInterfaces[interfaceID];
    }
    ///==End 165
}




interface ERC721TokenReceiver {
    //note: the national treasure is buried under parliament house
    function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"Mined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"hashOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"withdrawMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600781526020017f504f57204e4654000000000000000000000000000000000000000000000000008152506006908051906020019062000051929190620004cd565b506040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250600790805190602001906200009f929190620004cd565b50604051806060016040528060218152602001620037c86021913960089080519060200190620000d19291906200055e565b50651b48eb57e000600c5560027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200010b91906200063c565b600d556005600e553480156200012057600080fd5b506001600f60006380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600063780e9d6360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506200027f60016000801b6200028560201b60201c565b62000799565b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906200032890620006be565b9190505550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600a600084815260200190815260200160002081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600380549050600b6000848152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190915055817f5570ed3da2dab8635dcc918badc12e05d60cbc9185347ef0065ab7335568cdae826040516200046591906200061f565b60405180910390a2813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054620004db9062000688565b90600052602060002090601f016020900481019282620004ff57600085556200054b565b82601f106200051a57805160ff19168380011785556200054b565b828001600101855582156200054b579182015b828111156200054a5782518255916020019190600101906200052d565b5b5090506200055a9190620005ef565b5090565b8280546200056c9062000688565b90600052602060002090601f016020900481019282620005905760008555620005dc565b82601f10620005ab57805160ff1916838001178555620005dc565b82800160010185558215620005dc579182015b82811115620005db578251825591602001919060010190620005be565b5b509050620005eb9190620005ef565b5090565b5b808211156200060a576000816000905550600101620005f0565b5090565b620006198162000674565b82525050565b60006020820190506200063660008301846200060e565b92915050565b600062000649826200067e565b915062000656836200067e565b9250826200066957620006686200073b565b5b828204905092915050565b6000819050919050565b6000819050919050565b60006002820490506001821680620006a157607f821691505b60208210811415620006b857620006b76200076a565b5b50919050565b6000620006cb826200067e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200070157620007006200070c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61301f80620007a96000396000f3fe60806040526004361061011f5760003560e01c80634f6ccce7116100a0578063a22cb46511610064578063a22cb46514610410578063b88d4fde14610439578063c87b56dd14610462578063e5b791061461049f578063e985e9c5146104c85761011f565b80634f6ccce7146102f15780636352211e1461032e57806370a082311461036b5780637e551b75146103a857806395d89b41146103e55761011f565b806323b872dd116100e757806323b872dd1461021d5780632e1a7d4d146102465780632f745c591461026f57806342842e0e146102ac5780634d474898146102d55761011f565b806301ffc9a71461012457806306fdde0314610161578063081812fc1461018c578063095ea7b3146101c957806318160ddd146101f2575b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906122a1565b610505565b60405161015891906127f3565b60405180910390f35b34801561016d57600080fd5b5061017661056d565b6040516101839190612829565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae91906122f3565b6105ff565b6040516101c0919061278c565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb9190612220565b610684565b005b3480156101fe57600080fd5b50610207610842565b604051610214919061296b565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f919061211a565b61084f565b005b34801561025257600080fd5b5061026d600480360381019061026891906122f3565b611043565b005b34801561027b57600080fd5b5061029660048036038101906102919190612220565b6111e6565b6040516102a3919061296b565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce919061211a565b6112f2565b005b6102ef60048036038101906102ea91906122f3565b611312565b005b3480156102fd57600080fd5b50610318600480360381019061031391906122f3565b6114ef565b604051610325919061296b565b60405180910390f35b34801561033a57600080fd5b50610355600480360381019061035091906122f3565b61154c565b604051610362919061278c565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906120b5565b6115d1565b60405161039f919061296b565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca91906122f3565b611619565b6040516103dc919061280e565b60405180910390f35b3480156103f157600080fd5b506103fa6116bb565b6040516104079190612829565b60405180910390f35b34801561041c57600080fd5b50610437600480360381019061043291906121e4565b61174d565b005b34801561044557600080fd5b50610460600480360381019061045b9190612169565b61184a565b005b34801561046e57600080fd5b50610489600480360381019061048491906122f3565b6119a8565b6040516104969190612829565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c1919061225c565b611ba6565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906120de565b611c14565b6040516104fc91906127f3565b60405180910390f35b6000600f6000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60606006805461057c90612df3565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890612df3565b80156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b5050505050905090565b600061060a82611ca8565b610649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106409061294b565b60405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068f8261154c565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107515750600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107879061288b565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600380549050905090565b600061085a8261154c565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806108f457503373ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806109855750600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9061288b565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a299061284b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a999061286b565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b9e90612dc9565b91905055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610bf290612e25565b9190505550600073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c95576001600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6000600a60008481526020019081526020016000205490506001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610cfc9190612cc8565b8114610ef157600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610d909190612cc8565b81548110610dc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610e49577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555080600a6000600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110610ed3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001548152602001908152602001600020819055505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002001600090559055600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600a600085815260200190815260200160002081905550600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208390806001815401808255809150506001900390600052602060002001600090919091909150555050505050565b61104c8161154c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b09061284b565b60405180910390fd5b60006110c482611d14565b90506000600180836110d69190612a3f565b60026110e29190612b50565b6110ec9190612cc8565b905060008060038054905090505b828111801561111b5750600560008681526020019081526020016000205481115b1561114357600c548261112e9190612a3f565b9150808061113b90612dc9565b9150506110fa565b506003805490506005600086815260200190815260200160002081905550837f56ca301a9219608c91e7bcee90e083c19671d2cdcc96752c7af291cee5f9c8c882604051611191919061296b565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111df573d6000803e3d6000fd5b5050505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f9061290b565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106112df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b61130d8383836040518060200160405280600081525061184a565b505050565b600060016003805490506113269190612a3f565b9050600061133382611d14565b9050600081600e546113459190612b50565b600d546113529190612acc565b9050600d8211156113855760016140008461136d9190612cc8565b6113779190612a3f565b816113829190612acc565b90505b6000600c5460018460026113999190612b50565b6113a39190612cc8565b6113ad9190612c6e565b905060003360036002876113c19190612cc8565b815481106113f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015487604051602001611416939291906126ff565b604051602081830303815290604052805190602001209050828160001c10611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a9061292b565b60405180910390fd5b8134146114b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ac906128eb565b60405180910390fd5b6114e78582426040516020016114cc92919061273c565b60405160208183030381529060405280519060200120611d56565b505050505050565b60006003805490508210611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f9061290b565b60405180910390fd5b6001826115459190612a3f565b9050919050565b600061155782611ca8565b611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d9061294b565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061162482611ca8565b611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a9061294b565b60405180910390fd5b60036001836116729190612cc8565b815481106116a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6060600780546116ca90612df3565b80601f01602080910402602001604051908101604052809291908181526020018280546116f690612df3565b80156117435780601f1061171857610100808354040283529160200191611743565b820191906000526020600020905b81548152906001019060200180831161172657829003601f168201915b5050505050905090565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117aa91906127f3565b60405180910390a380600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61185584848461084f565b6000833b905060008163ffffffff1611156119a15760008490507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b81526004016118ee94939291906127a7565b602060405180830381600087803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194091906122ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461199f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611996906128cb565b60405180910390fd5b505b5050505050565b60606119b382611ca8565b6119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e9906128ab565b60405180910390fd5b6000829050600081905060005b60008214611a29578080611a1290612e25565b915050600a82611a229190612acc565b91506119ff565b60008167ffffffffffffffff811115611a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a9d5781602001600182028036833780820191505090505b50905060008290505b60008514611b7757600181611abb9190612cc8565b90506000600a8087611acd9190612acc565b611ad79190612c6e565b86611ae29190612cc8565b6030611aee9190612a95565b905060008160f81b905080848481518110611b32577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a87611b6e9190612acc565b96505050611aa6565b600882604051602001611b8b929190612768565b60405160208183030381529060405295505050505050919050565b60005b82829050811015611c0f57611bfc838383818110611bf0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135611043565b8080611c0790612e25565b915050611ba9565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60005b6000821115611d4257600282611d2d9190612acc565b91508080611d3a90612e25565b915050611d17565b600181611d4f9190612cc8565b9050919050565b336004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611df790612e25565b9190505550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600a600084815260200190815260200160002081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600380549050600b6000848152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190915055817f5570ed3da2dab8635dcc918badc12e05d60cbc9185347ef0065ab7335568cdae82604051611f32919061280e565b60405180910390a2813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611fad611fa8846129b7565b612986565b905082815260208101848484011115611fc557600080fd5b611fd0848285612d87565b509392505050565b600081359050611fe781612f8d565b92915050565b60008083601f840112611fff57600080fd5b8235905067ffffffffffffffff81111561201857600080fd5b60208301915083602082028301111561203057600080fd5b9250929050565b60008135905061204681612fa4565b92915050565b60008135905061205b81612fbb565b92915050565b60008151905061207081612fbb565b92915050565b600082601f83011261208757600080fd5b8135612097848260208601611f9a565b91505092915050565b6000813590506120af81612fd2565b92915050565b6000602082840312156120c757600080fd5b60006120d584828501611fd8565b91505092915050565b600080604083850312156120f157600080fd5b60006120ff85828601611fd8565b925050602061211085828601611fd8565b9150509250929050565b60008060006060848603121561212f57600080fd5b600061213d86828701611fd8565b935050602061214e86828701611fd8565b925050604061215f868287016120a0565b9150509250925092565b6000806000806080858703121561217f57600080fd5b600061218d87828801611fd8565b945050602061219e87828801611fd8565b93505060406121af878288016120a0565b925050606085013567ffffffffffffffff8111156121cc57600080fd5b6121d887828801612076565b91505092959194509250565b600080604083850312156121f757600080fd5b600061220585828601611fd8565b925050602061221685828601612037565b9150509250929050565b6000806040838503121561223357600080fd5b600061224185828601611fd8565b9250506020612252858286016120a0565b9150509250929050565b6000806020838503121561226f57600080fd5b600083013567ffffffffffffffff81111561228957600080fd5b61229585828601611fed565b92509250509250929050565b6000602082840312156122b357600080fd5b60006122c18482850161204c565b91505092915050565b6000602082840312156122dc57600080fd5b60006122ea84828501612061565b91505092915050565b60006020828403121561230557600080fd5b6000612313848285016120a0565b91505092915050565b61232581612cfc565b82525050565b61233c61233782612cfc565b612e6e565b82525050565b61234b81612d0e565b82525050565b61235a81612d1a565b82525050565b61237161236c82612d1a565b612e80565b82525050565b6000612382826129fc565b61238c8185612a12565b935061239c818560208601612d96565b6123a581612f62565b840191505092915050565b60006123bb826129fc565b6123c58185612a23565b93506123d5818560208601612d96565b80840191505092915050565b600081546123ee81612df3565b6123f88186612a23565b94506001821660008114612413576001811461242457612457565b60ff19831686528186019350612457565b61242d856129e7565b60005b8381101561244f57815481890152600182019150602081019050612430565b838801955050505b50505092915050565b600061246b82612a07565b6124758185612a2e565b9350612485818560208601612d96565b61248e81612f62565b840191505092915050565b60006124a6600583612a2e565b91507f6f776e65720000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006124e6600483612a2e565b91507f7a65726f000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612526600a83612a2e565b91507f7065726d697373696f6e000000000000000000000000000000000000000000006000830152602082019050919050565b6000612566600783612a2e565b91507f746f6b656e4964000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006125a6600883612a2e565b91507f72656365697665720000000000000000000000000000000000000000000000006000830152602082019050919050565b60006125e6600483612a2e565b91507f636f7374000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612626600583612a2e565b91507f696e6465780000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612666600a83612a2e565b91507f646966666963756c7479000000000000000000000000000000000000000000006000830152602082019050919050565b60006126a6600783612a2e565b91507f696e76616c6964000000000000000000000000000000000000000000000000006000830152602082019050919050565b6126e281612d70565b82525050565b6126f96126f482612d70565b612e9c565b82525050565b600061270b828661232b565b60148201915061271b8285612360565b60208201915061272b82846126e8565b602082019150819050949350505050565b60006127488285612360565b60208201915061275882846126e8565b6020820191508190509392505050565b600061277482856123e1565b915061278082846123b0565b91508190509392505050565b60006020820190506127a1600083018461231c565b92915050565b60006080820190506127bc600083018761231c565b6127c9602083018661231c565b6127d660408301856126d9565b81810360608301526127e88184612377565b905095945050505050565b60006020820190506128086000830184612342565b92915050565b60006020820190506128236000830184612351565b92915050565b600060208201905081810360008301526128438184612460565b905092915050565b6000602082019050818103600083015261286481612499565b9050919050565b60006020820190508181036000830152612884816124d9565b9050919050565b600060208201905081810360008301526128a481612519565b9050919050565b600060208201905081810360008301526128c481612559565b9050919050565b600060208201905081810360008301526128e481612599565b9050919050565b60006020820190508181036000830152612904816125d9565b9050919050565b6000602082019050818103600083015261292481612619565b9050919050565b6000602082019050818103600083015261294481612659565b9050919050565b6000602082019050818103600083015261296481612699565b9050919050565b600060208201905061298060008301846126d9565b92915050565b6000604051905081810181811067ffffffffffffffff821117156129ad576129ac612f33565b5b8060405250919050565b600067ffffffffffffffff8211156129d2576129d1612f33565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612a4a82612d70565b9150612a5583612d70565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a8a57612a89612ea6565b5b828201905092915050565b6000612aa082612d7a565b9150612aab83612d7a565b92508260ff03821115612ac157612ac0612ea6565b5b828201905092915050565b6000612ad782612d70565b9150612ae283612d70565b925082612af257612af1612ed5565b5b828204905092915050565b6000808291508390505b6001851115612b4757808604811115612b2357612b22612ea6565b5b6001851615612b325780820291505b8081029050612b4085612f80565b9450612b07565b94509492505050565b6000612b5b82612d70565b9150612b6683612d70565b9250612b937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b9b565b905092915050565b600082612bab5760019050612c67565b81612bb95760009050612c67565b8160018114612bcf5760028114612bd957612c08565b6001915050612c67565b60ff841115612beb57612bea612ea6565b5b8360020a915084821115612c0257612c01612ea6565b5b50612c67565b5060208310610133831016604e8410600b8410161715612c3d5782820a905083811115612c3857612c37612ea6565b5b612c67565b612c4a8484846001612afd565b92509050818404811115612c6157612c60612ea6565b5b81810290505b9392505050565b6000612c7982612d70565b9150612c8483612d70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cbd57612cbc612ea6565b5b828202905092915050565b6000612cd382612d70565b9150612cde83612d70565b925082821015612cf157612cf0612ea6565b5b828203905092915050565b6000612d0782612d50565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612db4578082015181840152602081019050612d99565b83811115612dc3576000848401525b50505050565b6000612dd482612d70565b91506000821415612de857612de7612ea6565b5b600182039050919050565b60006002820490506001821680612e0b57607f821691505b60208210811415612e1f57612e1e612f04565b5b50919050565b6000612e3082612d70565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6357612e62612ea6565b5b600182019050919050565b6000612e7982612e8a565b9050919050565b6000819050919050565b6000612e9582612f73565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160011c9050919050565b612f9681612cfc565b8114612fa157600080fd5b50565b612fad81612d0e565b8114612fb857600080fd5b50565b612fc481612d24565b8114612fcf57600080fd5b50565b612fdb81612d70565b8114612fe657600080fd5b5056fea2646970667358221220ca0710f04cb88946a99fdfebe9cd1de12fdc8a2cc381e4b7edf828cdd0e45eb164736f6c6343000800003368747470733a2f2f7777772e706f776e66746d657461646174612e636f6d2f642f

Deployed ByteCode Sourcemap

105:9476:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9427:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8590:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4910:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4494:408;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8825:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5449:1698;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2317:496;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9088:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7734:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2995:639;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8926:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4327:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4211:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2152:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8689:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5241:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7155:571;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7910:668;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2819:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5086:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9427:133;9497:4;9520:19;:32;9540:11;9520:32;;;;;;;;;;;;;;;;;;;;;;;;;;;9513:39;;9427:133;;;:::o;8590:91::-;8629:19;8667:6;8660:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8590:91;:::o;4910:168::-;4972:7;5000:22;5013:8;5000:12;:22::i;:::-;4992:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5051:9;:19;5061:8;5051:19;;;;;;;;;;;;;;;;;;;;;5044:26;;4910:168;;;:::o;4494:408::-;4568:13;4584:17;4592:8;4584:7;:17::i;:::-;4568:33;;4630:10;4621:19;;:5;:19;;;:112;;;;4704:10;:17;4715:5;4704:17;;;;;;;;;;;;;;;:29;4722:10;4704:29;;;;;;;;;;;;;;;;;;;;;;;;;4621:112;4612:188;;;;;;;;;;;;:::i;:::-;;;;;;;;;4843:8;4832:9;4816:36;;4825:5;4816:36;;;;;;;;;;;;4885:9;4863;:19;4873:8;4863:19;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;4494:408;;;:::o;8825:93::-;8871:7;8897:6;:13;;;;8890:20;;8825:93;:::o;5449:1698::-;5621:13;5637:17;5645:8;5637:7;:17::i;:::-;5621:33;;5686:10;5677:19;;:5;:19;;;:200;;;;5867:10;5844:33;;:9;:19;5854:8;5844:19;;;;;;;;;;;;;;;;;;;;;:33;;;5677:200;:283;;;;5931:10;:17;5942:5;5931:17;;;;;;;;;;;;;;;:29;5949:10;5931:29;;;;;;;;;;;;;;;;;;;;;;;;;5677:283;5667:351;;;;;;;;;;;;:::i;:::-;;;;;;;;;6046:5;6037:14;;:5;:14;;;6029:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;6094:1;6079:17;;:3;:17;;;;6071:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;6143:8;6138:3;6122:30;;6131:5;6122:30;;;;;;;;;;;;6185:3;6167:6;:16;6174:8;6167:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6201:8;:15;6210:5;6201:15;;;;;;;;;;;;;;;;:17;;;;;;;;;:::i;:::-;;;;;;6229:8;:13;6238:3;6229:13;;;;;;;;;;;;;;;;:15;;;;;;;;;:::i;:::-;;;;;;6333:1;6302:33;;:9;:19;6312:8;6302:19;;;;;;;;;;;;;;;;;;;;;:33;;;6299:90;;6358:9;:19;6368:8;6358:19;;;;;;;;;;;;6351:26;;;;;;;;;;;6299:90;6433:13;6449:17;:27;6467:8;6449:27;;;;;;;;;;;;6433:43;;6600:1;6566:17;:24;6584:5;6566:24;;;;;;;;;;;;;;;:31;;;;:35;;;;:::i;:::-;6554:8;:47;6551:380;;6704:17;:24;6722:5;6704:24;;;;;;;;;;;;;;;6763:1;6729:17;:24;6747:5;6729:24;;;;;;;;;;;;;;;:31;;;;:35;;;;:::i;:::-;6704:61;;;;;;;;;;;;;;;;;;;;;;;;6667:17;:24;6685:5;6667:24;;;;;;;;;;;;;;;6692:8;6667:34;;;;;;;;;;;;;;;;;;;;;;;:98;;;;6911:8;6855:17;:53;6873:17;:24;6891:5;6873:24;;;;;;;;;;;;;;;6898:8;6873:34;;;;;;;;;;;;;;;;;;;;;;;;6855:53;;;;;;;;;;;:64;;;;6551:380;6987:17;:24;7005:5;6987:24;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7060:17;:22;7078:3;7060:22;;;;;;;;;;;;;;;:29;;;;7030:17;:27;7048:8;7030:27;;;;;;;;;;;:59;;;;7100:17;:22;7118:3;7100:22;;;;;;;;;;;;;;;7128:8;7100:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5449:1698;;;;;:::o;2317:496::-;2389:17;2397:8;2389:7;:17::i;:::-;2375:31;;:10;:31;;;2367:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;2428:15;2446:22;2459:8;2446:12;:22::i;:::-;2428:40;;2483:9;2513:1;2510;2499:10;:12;;;;:::i;:::-;2495:1;:17;;;;:::i;:::-;:19;;;;:::i;:::-;2483:31;;2525:11;2555:6;2564;:13;;;;2555:22;;2551:117;2583:4;2579:1;:8;:37;;;;;2595:11;:21;2607:8;2595:21;;;;;;;;;;;;2591:1;:25;2579:37;2551:117;;;2647:9;;2637:19;;;;;:::i;:::-;;;2618:3;;;;;:::i;:::-;;;;2551:117;;;;2702:6;:13;;;;2678:11;:21;2690:8;2678:21;;;;;;;;;;;:37;;;;2740:8;2731:25;2749:6;2731:25;;;;;;:::i;:::-;;;;;;;;2775:10;2767:28;;:36;2796:6;2767:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2317:496;;;;:::o;9088:204::-;9172:7;9208:8;:16;9217:6;9208:16;;;;;;;;;;;;;;;;9199:6;:25;9191:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9251:17;:25;9269:6;9251:25;;;;;;;;;;;;;;;9277:6;9251:33;;;;;;;;;;;;;;;;;;;;;;;;9244:40;;9088:204;;;;:::o;7734:139::-;7826:39;7843:5;7849:3;7853:8;7826:39;;;;;;;;;;;;:16;:39::i;:::-;7734:139;;;:::o;2995:639::-;3048:12;3079:1;3063:6;:13;;;;:17;;;;:::i;:::-;3048:32;;3091:15;3109:21;3122:7;3109:12;:21::i;:::-;3091:39;;3143:15;3197:10;3180:15;;:27;;;;:::i;:::-;3161:15;;:47;;;;:::i;:::-;3143:65;;3235:2;3222:10;:15;3219:81;;;3286:1;3278:5;3268:7;:15;;;;:::i;:::-;:19;;;;:::i;:::-;3253:35;;;;;:::i;:::-;;;3219:81;3314:9;3347;;3343:1;3330:10;3327:1;:13;;;;:::i;:::-;:17;;;;:::i;:::-;3326:30;;;;:::i;:::-;3314:42;;3371:12;3413:10;3424:6;3439:1;3431:7;:9;;;;:::i;:::-;3424:17;;;;;;;;;;;;;;;;;;;;;;;;3442:5;3396:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3386:63;;;;;;3371:78;;3483:10;3475:4;3470:10;;:23;3462:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;3538:4;3526:9;:16;3518:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;3563:63;3568:7;3603:4;3608:15;3586:38;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3576:49;;;;;;3563:4;:63::i;:::-;2995:639;;;;;;:::o;8926:154::-;8986:7;9022:6;:13;;;;9013:6;:22;9005:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;9071:1;9062:6;:10;;;;:::i;:::-;9055:17;;8926:154;;;:::o;4327:157::-;4382:7;4409:22;4422:8;4409:12;:22::i;:::-;4401:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;4460:6;:16;4467:8;4460:16;;;;;;;;;;;;;;;;;;;;;4453:23;;4327:157;;;:::o;4211:108::-;4269:7;4295:8;:16;4304:6;4295:16;;;;;;;;;;;;;;;;4288:23;;4211:108;;;:::o;2152:157::-;2203:7;2230:22;2243:8;2230:12;:22::i;:::-;2222:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2281:6;2299:1;2288:8;:12;;;;:::i;:::-;2281:20;;;;;;;;;;;;;;;;;;;;;;;;2274:27;;2152:157;;;:::o;8689:97::-;8730:21;8770:8;8763:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8689:97;:::o;5241:198::-;5354:9;5328:47;;5343:10;5328:47;;;5365:9;5328:47;;;;;;:::i;:::-;;;;;;;;5422:9;5386:10;:22;5397:10;5386:22;;;;;;;;;;;;;;;:33;5409:9;5386:33;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;5241:198;;:::o;7155:571::-;7264:34;7277:5;7284:3;7289:8;7264:12;:34::i;:::-;7368:11;7434:3;7422:16;7414:24;;7469:1;7462:4;:8;;;7459:258;;;7486:28;7537:3;7486:55;;7632:60;7564:129;;;:8;:25;;;7590:10;7601:5;7607:8;7616:4;7564:57;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:129;;;;7556:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;7459:258;;7155:571;;;;;:::o;7910:668::-;7967:13;8046:22;8059:8;8046:12;:22::i;:::-;8038:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;8092:7;8102:8;8092:18;;8121:6;8130:2;8121:11;;8143:8;8162:69;8174:1;8169;:6;8162:69;;8192:5;;;;;:::i;:::-;;;;8217:2;8212:7;;;;;:::i;:::-;;;8162:69;;;8241:17;8271:3;8261:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8241:34;;8286:6;8295:3;8286:12;;8309:198;8322:1;8316:2;:7;8309:198;;8346:1;8344;:3;;;;:::i;:::-;8340:7;;8362:10;8402:2;8397;8392;:7;;;;:::i;:::-;:12;;;;:::i;:::-;8387:2;:17;;;;:::i;:::-;8376:2;:29;;;;:::i;:::-;8362:44;;8421:9;8440:4;8433:12;;8421:24;;8470:2;8460:4;8465:1;8460:7;;;;;;;;;;;;;;;;;;;:12;;;;;;;;;;;8493:2;8487:8;;;;;:::i;:::-;;;8309:198;;;;;8552:9;8562:4;8535:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8521:47;;;;;;;7910:668;;;:::o;2819:168::-;2893:6;2889:91;2909:9;;:16;;2905:1;:20;2889:91;;;2946:22;2955:9;;2965:1;2955:12;;;;;;;;;;;;;;;;;;;;;2946:8;:22::i;:::-;2927:3;;;;;:::i;:::-;;;;2889:91;;;;2819:168;;:::o;5086:145::-;5170:4;5194:10;:18;5205:6;5194:18;;;;;;;;;;;;;;;:29;5213:9;5194:29;;;;;;;;;;;;;;;;;;;;;;;;;5187:36;;5086:145;;;;:::o;4080:123::-;4142:4;4193:1;4165:30;;:6;:16;4172:8;4165:16;;;;;;;;;;;;;;;;;;;;;:30;;;;4158:37;;4080:123;;;:::o;1935:211::-;1993:15;2020:87;2051:1;2040:8;:12;2020:87;;;2094:1;2082:13;;;;;:::i;:::-;;;2054:12;;;;;:::i;:::-;;;;2020:87;;;2137:1;2124:10;:14;;;;:::i;:::-;2117:21;;1935:211;;;:::o;3642:428::-;3720:10;3702:6;:15;3709:7;3702:15;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3741:8;:20;3750:10;3741:20;;;;;;;;;;;;;;;;:22;;;;;;;;;:::i;:::-;;;;;;3803:17;:29;3821:10;3803:29;;;;;;;;;;;;;;;:36;;;;3774:17;:26;3792:7;3774:26;;;;;;;;;;;:65;;;;3850:17;:29;3868:10;3850:29;;;;;;;;;;;;;;;3885:7;3850:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3929:6;:13;;;;3906:11;:20;3918:7;3906:20;;;;;;;;;;;:36;;;;3953:6;3965:4;3953:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3994:7;3988:19;4002:4;3988:19;;;;;;:::i;:::-;;;;;;;;4054:7;4043:10;4023:39;;4040:1;4023:39;;;;;;;;;;;;3642:428;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;517:367::-;;;650:3;643:4;635:6;631:17;627:27;617:2;;668:1;665;658:12;617:2;704:6;691:20;681:30;;734:18;726:6;723:30;720:2;;;766:1;763;756:12;720:2;803:4;795:6;791:17;779:29;;857:3;849:4;841:6;837:17;827:8;823:32;820:41;817:2;;;874:1;871;864:12;817:2;607:277;;;;;:::o;890:133::-;;971:6;958:20;949:29;;987:30;1011:5;987:30;:::i;:::-;939:84;;;;:::o;1029:137::-;;1112:6;1099:20;1090:29;;1128:32;1154:5;1128:32;:::i;:::-;1080:86;;;;:::o;1172:141::-;;1259:6;1253:13;1244:22;;1275:32;1301:5;1275:32;:::i;:::-;1234:79;;;;:::o;1332:271::-;;1436:3;1429:4;1421:6;1417:17;1413:27;1403:2;;1454:1;1451;1444:12;1403:2;1494:6;1481:20;1519:78;1593:3;1585:6;1578:4;1570:6;1566:17;1519:78;:::i;:::-;1510:87;;1393:210;;;;;:::o;1609:139::-;;1693:6;1680:20;1671:29;;1709:33;1736:5;1709:33;:::i;:::-;1661:87;;;;:::o;1754:262::-;;1862:2;1850:9;1841:7;1837:23;1833:32;1830:2;;;1878:1;1875;1868:12;1830:2;1921:1;1946:53;1991:7;1982:6;1971:9;1967:22;1946:53;:::i;:::-;1936:63;;1892:117;1820:196;;;;:::o;2022:407::-;;;2147:2;2135:9;2126:7;2122:23;2118:32;2115:2;;;2163:1;2160;2153:12;2115:2;2206:1;2231:53;2276:7;2267:6;2256:9;2252:22;2231:53;:::i;:::-;2221:63;;2177:117;2333:2;2359:53;2404:7;2395:6;2384:9;2380:22;2359:53;:::i;:::-;2349:63;;2304:118;2105:324;;;;;:::o;2435:552::-;;;;2577:2;2565:9;2556:7;2552:23;2548:32;2545:2;;;2593:1;2590;2583:12;2545:2;2636:1;2661:53;2706:7;2697:6;2686:9;2682:22;2661:53;:::i;:::-;2651:63;;2607:117;2763:2;2789:53;2834:7;2825:6;2814:9;2810:22;2789:53;:::i;:::-;2779:63;;2734:118;2891:2;2917:53;2962:7;2953:6;2942:9;2938:22;2917:53;:::i;:::-;2907:63;;2862:118;2535:452;;;;;:::o;2993:809::-;;;;;3161:3;3149:9;3140:7;3136:23;3132:33;3129:2;;;3178:1;3175;3168:12;3129:2;3221:1;3246:53;3291:7;3282:6;3271:9;3267:22;3246:53;:::i;:::-;3236:63;;3192:117;3348:2;3374:53;3419:7;3410:6;3399:9;3395:22;3374:53;:::i;:::-;3364:63;;3319:118;3476:2;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3447:118;3632:2;3621:9;3617:18;3604:32;3663:18;3655:6;3652:30;3649:2;;;3695:1;3692;3685:12;3649:2;3723:62;3777:7;3768:6;3757:9;3753:22;3723:62;:::i;:::-;3713:72;;3575:220;3119:683;;;;;;;:::o;3808:401::-;;;3930:2;3918:9;3909:7;3905:23;3901:32;3898:2;;;3946:1;3943;3936:12;3898:2;3989:1;4014:53;4059:7;4050:6;4039:9;4035:22;4014:53;:::i;:::-;4004:63;;3960:117;4116:2;4142:50;4184:7;4175:6;4164:9;4160:22;4142:50;:::i;:::-;4132:60;;4087:115;3888:321;;;;;:::o;4215:407::-;;;4340:2;4328:9;4319:7;4315:23;4311:32;4308:2;;;4356:1;4353;4346:12;4308:2;4399:1;4424:53;4469:7;4460:6;4449:9;4445:22;4424:53;:::i;:::-;4414:63;;4370:117;4526:2;4552:53;4597:7;4588:6;4577:9;4573:22;4552:53;:::i;:::-;4542:63;;4497:118;4298:324;;;;;:::o;4628:425::-;;;4771:2;4759:9;4750:7;4746:23;4742:32;4739:2;;;4787:1;4784;4777:12;4739:2;4858:1;4847:9;4843:17;4830:31;4888:18;4880:6;4877:30;4874:2;;;4920:1;4917;4910:12;4874:2;4956:80;5028:7;5019:6;5008:9;5004:22;4956:80;:::i;:::-;4938:98;;;;4801:245;4729:324;;;;;:::o;5059:260::-;;5166:2;5154:9;5145:7;5141:23;5137:32;5134:2;;;5182:1;5179;5172:12;5134:2;5225:1;5250:52;5294:7;5285:6;5274:9;5270:22;5250:52;:::i;:::-;5240:62;;5196:116;5124:195;;;;:::o;5325:282::-;;5443:2;5431:9;5422:7;5418:23;5414:32;5411:2;;;5459:1;5456;5449:12;5411:2;5502:1;5527:63;5582:7;5573:6;5562:9;5558:22;5527:63;:::i;:::-;5517:73;;5473:127;5401:206;;;;:::o;5613:262::-;;5721:2;5709:9;5700:7;5696:23;5692:32;5689:2;;;5737:1;5734;5727:12;5689:2;5780:1;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5751:117;5679:196;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5946:53;;:::o;6005:157::-;6110:45;6130:24;6148:5;6130:24;:::i;:::-;6110:45;:::i;:::-;6105:3;6098:58;6088:74;;:::o;6168:109::-;6249:21;6264:5;6249:21;:::i;:::-;6244:3;6237:34;6227:50;;:::o;6283:118::-;6370:24;6388:5;6370:24;:::i;:::-;6365:3;6358:37;6348:53;;:::o;6407:157::-;6512:45;6532:24;6550:5;6532:24;:::i;:::-;6512:45;:::i;:::-;6507:3;6500:58;6490:74;;:::o;6570:360::-;;6684:38;6716:5;6684:38;:::i;:::-;6738:70;6801:6;6796:3;6738:70;:::i;:::-;6731:77;;6817:52;6862:6;6857:3;6850:4;6843:5;6839:16;6817:52;:::i;:::-;6894:29;6916:6;6894:29;:::i;:::-;6889:3;6885:39;6878:46;;6660:270;;;;;:::o;6936:373::-;;7068:38;7100:5;7068:38;:::i;:::-;7122:88;7203:6;7198:3;7122:88;:::i;:::-;7115:95;;7219:52;7264:6;7259:3;7252:4;7245:5;7241:16;7219:52;:::i;:::-;7296:6;7291:3;7287:16;7280:23;;7044:265;;;;;:::o;7337:841::-;;7475:5;7469:12;7504:36;7530:9;7504:36;:::i;:::-;7556:88;7637:6;7632:3;7556:88;:::i;:::-;7549:95;;7675:1;7664:9;7660:17;7691:1;7686:137;;;;7837:1;7832:340;;;;7653:519;;7686:137;7770:4;7766:9;7755;7751:25;7746:3;7739:38;7806:6;7801:3;7797:16;7790:23;;7686:137;;7832:340;7899:37;7930:5;7899:37;:::i;:::-;7958:1;7972:154;7986:6;7983:1;7980:13;7972:154;;;8060:7;8054:14;8050:1;8045:3;8041:11;8034:35;8110:1;8101:7;8097:15;8086:26;;8008:4;8005:1;8001:12;7996:17;;7972:154;;;8155:6;8150:3;8146:16;8139:23;;7839:333;;7653:519;;7442:736;;;;;;:::o;8184:364::-;;8300:39;8333:5;8300:39;:::i;:::-;8355:71;8419:6;8414:3;8355:71;:::i;:::-;8348:78;;8435:52;8480:6;8475:3;8468:4;8461:5;8457:16;8435:52;:::i;:::-;8512:29;8534:6;8512:29;:::i;:::-;8507:3;8503:39;8496:46;;8276:272;;;;;:::o;8554:302::-;;8717:66;8781:1;8776:3;8717:66;:::i;:::-;8710:73;;8813:7;8809:1;8804:3;8800:11;8793:28;8847:2;8842:3;8838:12;8831:19;;8700:156;;;:::o;8862:301::-;;9025:66;9089:1;9084:3;9025:66;:::i;:::-;9018:73;;9121:6;9117:1;9112:3;9108:11;9101:27;9154:2;9149:3;9145:12;9138:19;;9008:155;;;:::o;9169:308::-;;9332:67;9396:2;9391:3;9332:67;:::i;:::-;9325:74;;9429:12;9425:1;9420:3;9416:11;9409:33;9468:2;9463:3;9459:12;9452:19;;9315:162;;;:::o;9483:304::-;;9646:66;9710:1;9705:3;9646:66;:::i;:::-;9639:73;;9742:9;9738:1;9733:3;9729:11;9722:30;9778:2;9773:3;9769:12;9762:19;;9629:158;;;:::o;9793:305::-;;9956:66;10020:1;10015:3;9956:66;:::i;:::-;9949:73;;10052:10;10048:1;10043:3;10039:11;10032:31;10089:2;10084:3;10080:12;10073:19;;9939:159;;;:::o;10104:301::-;;10267:66;10331:1;10326:3;10267:66;:::i;:::-;10260:73;;10363:6;10359:1;10354:3;10350:11;10343:27;10396:2;10391:3;10387:12;10380:19;;10250:155;;;:::o;10411:302::-;;10574:66;10638:1;10633:3;10574:66;:::i;:::-;10567:73;;10670:7;10666:1;10661:3;10657:11;10650:28;10704:2;10699:3;10695:12;10688:19;;10557:156;;;:::o;10719:308::-;;10882:67;10946:2;10941:3;10882:67;:::i;:::-;10875:74;;10979:12;10975:1;10970:3;10966:11;10959:33;11018:2;11013:3;11009:12;11002:19;;10865:162;;;:::o;11033:304::-;;11196:66;11260:1;11255:3;11196:66;:::i;:::-;11189:73;;11292:9;11288:1;11283:3;11279:11;11272:30;11328:2;11323:3;11319:12;11312:19;;11179:158;;;:::o;11343:118::-;11430:24;11448:5;11430:24;:::i;:::-;11425:3;11418:37;11408:53;;:::o;11467:157::-;11572:45;11592:24;11610:5;11592:24;:::i;:::-;11572:45;:::i;:::-;11567:3;11560:58;11550:74;;:::o;11630:538::-;;11813:75;11884:3;11875:6;11813:75;:::i;:::-;11913:2;11908:3;11904:12;11897:19;;11926:75;11997:3;11988:6;11926:75;:::i;:::-;12026:2;12021:3;12017:12;12010:19;;12039:75;12110:3;12101:6;12039:75;:::i;:::-;12139:2;12134:3;12130:12;12123:19;;12159:3;12152:10;;11802:366;;;;;;:::o;12174:397::-;;12329:75;12400:3;12391:6;12329:75;:::i;:::-;12429:2;12424:3;12420:12;12413:19;;12442:75;12513:3;12504:6;12442:75;:::i;:::-;12542:2;12537:3;12533:12;12526:19;;12562:3;12555:10;;12318:253;;;;;:::o;12577:421::-;;12772:90;12858:3;12849:6;12772:90;:::i;:::-;12765:97;;12879:93;12968:3;12959:6;12879:93;:::i;:::-;12872:100;;12989:3;12982:10;;12754:244;;;;;:::o;13004:222::-;;13135:2;13124:9;13120:18;13112:26;;13148:71;13216:1;13205:9;13201:17;13192:6;13148:71;:::i;:::-;13102:124;;;;:::o;13232:640::-;;13465:3;13454:9;13450:19;13442:27;;13479:71;13547:1;13536:9;13532:17;13523:6;13479:71;:::i;:::-;13560:72;13628:2;13617:9;13613:18;13604:6;13560:72;:::i;:::-;13642;13710:2;13699:9;13695:18;13686:6;13642:72;:::i;:::-;13761:9;13755:4;13751:20;13746:2;13735:9;13731:18;13724:48;13789:76;13860:4;13851:6;13789:76;:::i;:::-;13781:84;;13432:440;;;;;;;:::o;13878:210::-;;14003:2;13992:9;13988:18;13980:26;;14016:65;14078:1;14067:9;14063:17;14054:6;14016:65;:::i;:::-;13970:118;;;;:::o;14094:222::-;;14225:2;14214:9;14210:18;14202:26;;14238:71;14306:1;14295:9;14291:17;14282:6;14238:71;:::i;:::-;14192:124;;;;:::o;14322:313::-;;14473:2;14462:9;14458:18;14450:26;;14522:9;14516:4;14512:20;14508:1;14497:9;14493:17;14486:47;14550:78;14623:4;14614:6;14550:78;:::i;:::-;14542:86;;14440:195;;;;:::o;14641:419::-;;14845:2;14834:9;14830:18;14822:26;;14894:9;14888:4;14884:20;14880:1;14869:9;14865:17;14858:47;14922:131;15048:4;14922:131;:::i;:::-;14914:139;;14812:248;;;:::o;15066:419::-;;15270:2;15259:9;15255:18;15247:26;;15319:9;15313:4;15309:20;15305:1;15294:9;15290:17;15283:47;15347:131;15473:4;15347:131;:::i;:::-;15339:139;;15237:248;;;:::o;15491:419::-;;15695:2;15684:9;15680:18;15672:26;;15744:9;15738:4;15734:20;15730:1;15719:9;15715:17;15708:47;15772:131;15898:4;15772:131;:::i;:::-;15764:139;;15662:248;;;:::o;15916:419::-;;16120:2;16109:9;16105:18;16097:26;;16169:9;16163:4;16159:20;16155:1;16144:9;16140:17;16133:47;16197:131;16323:4;16197:131;:::i;:::-;16189:139;;16087:248;;;:::o;16341:419::-;;16545:2;16534:9;16530:18;16522:26;;16594:9;16588:4;16584:20;16580:1;16569:9;16565:17;16558:47;16622:131;16748:4;16622:131;:::i;:::-;16614:139;;16512:248;;;:::o;16766:419::-;;16970:2;16959:9;16955:18;16947:26;;17019:9;17013:4;17009:20;17005:1;16994:9;16990:17;16983:47;17047:131;17173:4;17047:131;:::i;:::-;17039:139;;16937:248;;;:::o;17191:419::-;;17395:2;17384:9;17380:18;17372:26;;17444:9;17438:4;17434:20;17430:1;17419:9;17415:17;17408:47;17472:131;17598:4;17472:131;:::i;:::-;17464:139;;17362:248;;;:::o;17616:419::-;;17820:2;17809:9;17805:18;17797:26;;17869:9;17863:4;17859:20;17855:1;17844:9;17840:17;17833:47;17897:131;18023:4;17897:131;:::i;:::-;17889:139;;17787:248;;;:::o;18041:419::-;;18245:2;18234:9;18230:18;18222:26;;18294:9;18288:4;18284:20;18280:1;18269:9;18265:17;18258:47;18322:131;18448:4;18322:131;:::i;:::-;18314:139;;18212:248;;;:::o;18466:222::-;;18597:2;18586:9;18582:18;18574:26;;18610:71;18678:1;18667:9;18663:17;18654:6;18610:71;:::i;:::-;18564:124;;;;:::o;18694:283::-;;18760:2;18754:9;18744:19;;18802:4;18794:6;18790:17;18909:6;18897:10;18894:22;18873:18;18861:10;18858:34;18855:62;18852:2;;;18920:18;;:::i;:::-;18852:2;18960:10;18956:2;18949:22;18734:243;;;;:::o;18983:331::-;;19134:18;19126:6;19123:30;19120:2;;;19156:18;;:::i;:::-;19120:2;19241:4;19237:9;19230:4;19222:6;19218:17;19214:33;19206:41;;19302:4;19296;19292:15;19284:23;;19049:265;;;:::o;19320:140::-;;19391:3;19383:11;;19414:3;19411:1;19404:14;19448:4;19445:1;19435:18;19427:26;;19373:87;;;:::o;19466:98::-;;19551:5;19545:12;19535:22;;19524:40;;;:::o;19570:99::-;;19656:5;19650:12;19640:22;;19629:40;;;:::o;19675:168::-;;19792:6;19787:3;19780:19;19832:4;19827:3;19823:14;19808:29;;19770:73;;;;:::o;19849:147::-;;19987:3;19972:18;;19962:34;;;;:::o;20002:169::-;;20120:6;20115:3;20108:19;20160:4;20155:3;20151:14;20136:29;;20098:73;;;;:::o;20177:305::-;;20236:20;20254:1;20236:20;:::i;:::-;20231:25;;20270:20;20288:1;20270:20;:::i;:::-;20265:25;;20424:1;20356:66;20352:74;20349:1;20346:81;20343:2;;;20430:18;;:::i;:::-;20343:2;20474:1;20471;20467:9;20460:16;;20221:261;;;;:::o;20488:237::-;;20545:18;20561:1;20545:18;:::i;:::-;20540:23;;20577:18;20593:1;20577:18;:::i;:::-;20572:23;;20667:1;20661:4;20657:12;20654:1;20651:19;20648:2;;;20673:18;;:::i;:::-;20648:2;20717:1;20714;20710:9;20703:16;;20530:195;;;;:::o;20731:185::-;;20788:20;20806:1;20788:20;:::i;:::-;20783:25;;20822:20;20840:1;20822:20;:::i;:::-;20817:25;;20861:1;20851:2;;20866:18;;:::i;:::-;20851:2;20908:1;20905;20901:9;20896:14;;20773:143;;;;:::o;20922:848::-;;;21014:6;21005:15;;21038:5;21029:14;;21052:712;21073:1;21063:8;21060:15;21052:712;;;21168:4;21163:3;21159:14;21153:4;21150:24;21147:2;;;21177:18;;:::i;:::-;21147:2;21227:1;21217:8;21213:16;21210:2;;;21642:4;21635:5;21631:16;21622:25;;21210:2;21692:4;21686;21682:15;21674:23;;21722:32;21745:8;21722:32;:::i;:::-;21710:44;;21052:712;;;20995:775;;;;;;;:::o;21776:285::-;;21860:23;21878:4;21860:23;:::i;:::-;21852:31;;21904:27;21922:8;21904:27;:::i;:::-;21892:39;;21950:104;21987:66;21977:8;21971:4;21950:104;:::i;:::-;21941:113;;21842:219;;;;:::o;22067:1073::-;;22312:8;22302:2;;22333:1;22324:10;;22335:5;;22302:2;22361:4;22351:2;;22378:1;22369:10;;22380:5;;22351:2;22447:4;22495:1;22490:27;;;;22531:1;22526:191;;;;22440:277;;22490:27;22508:1;22499:10;;22510:5;;;22526:191;22571:3;22561:8;22558:17;22555:2;;;22578:18;;:::i;:::-;22555:2;22627:8;22624:1;22620:16;22611:25;;22662:3;22655:5;22652:14;22649:2;;;22669:18;;:::i;:::-;22649:2;22702:5;;;22440:277;;22826:2;22816:8;22813:16;22807:3;22801:4;22798:13;22794:36;22776:2;22766:8;22763:16;22758:2;22752:4;22749:12;22745:35;22729:111;22726:2;;;22882:8;22876:4;22872:19;22863:28;;22917:3;22910:5;22907:14;22904:2;;;22924:18;;:::i;:::-;22904:2;22957:5;;22726:2;22997:42;23035:3;23025:8;23019:4;23016:1;22997:42;:::i;:::-;22982:57;;;;23071:4;23066:3;23062:14;23055:5;23052:25;23049:2;;;23080:18;;:::i;:::-;23049:2;23129:4;23122:5;23118:16;23109:25;;22127:1013;;;;;;:::o;23146:348::-;;23209:20;23227:1;23209:20;:::i;:::-;23204:25;;23243:20;23261:1;23243:20;:::i;:::-;23238:25;;23431:1;23363:66;23359:74;23356:1;23353:81;23348:1;23341:9;23334:17;23330:105;23327:2;;;23438:18;;:::i;:::-;23327:2;23486:1;23483;23479:9;23468:20;;23194:300;;;;:::o;23500:191::-;;23560:20;23578:1;23560:20;:::i;:::-;23555:25;;23594:20;23612:1;23594:20;:::i;:::-;23589:25;;23633:1;23630;23627:8;23624:2;;;23638:18;;:::i;:::-;23624:2;23683:1;23680;23676:9;23668:17;;23545:146;;;;:::o;23697:96::-;;23763:24;23781:5;23763:24;:::i;:::-;23752:35;;23742:51;;;:::o;23799:90::-;;23876:5;23869:13;23862:21;23851:32;;23841:48;;;:::o;23895:77::-;;23961:5;23950:16;;23940:32;;;:::o;23978:149::-;;24054:66;24047:5;24043:78;24032:89;;24022:105;;;:::o;24133:126::-;;24210:42;24203:5;24199:54;24188:65;;24178:81;;;:::o;24265:77::-;;24331:5;24320:16;;24310:32;;;:::o;24348:86::-;;24423:4;24416:5;24412:16;24401:27;;24391:43;;;:::o;24440:154::-;24524:6;24519:3;24514;24501:30;24586:1;24577:6;24572:3;24568:16;24561:27;24491:103;;;:::o;24600:307::-;24668:1;24678:113;24692:6;24689:1;24686:13;24678:113;;;24777:1;24772:3;24768:11;24762:18;24758:1;24753:3;24749:11;24742:39;24714:2;24711:1;24707:10;24702:15;;24678:113;;;24809:6;24806:1;24803:13;24800:2;;;24889:1;24880:6;24875:3;24871:16;24864:27;24800:2;24649:258;;;;:::o;24913:171::-;;24975:24;24993:5;24975:24;:::i;:::-;24966:33;;25021:4;25014:5;25011:15;25008:2;;;25029:18;;:::i;:::-;25008:2;25076:1;25069:5;25065:13;25058:20;;24956:128;;;:::o;25090:320::-;;25171:1;25165:4;25161:12;25151:22;;25218:1;25212:4;25208:12;25239:18;25229:2;;25295:4;25287:6;25283:17;25273:27;;25229:2;25357;25349:6;25346:14;25326:18;25323:38;25320:2;;;25376:18;;:::i;:::-;25320:2;25141:269;;;;:::o;25416:233::-;;25478:24;25496:5;25478:24;:::i;:::-;25469:33;;25524:66;25517:5;25514:77;25511:2;;;25594:18;;:::i;:::-;25511:2;25641:1;25634:5;25630:13;25623:20;;25459:190;;;:::o;25655:100::-;;25723:26;25743:5;25723:26;:::i;:::-;25712:37;;25702:53;;;:::o;25761:79::-;;25829:5;25818:16;;25808:32;;;:::o;25846:94::-;;25914:20;25928:5;25914:20;:::i;:::-;25903:31;;25893:47;;;:::o;25946:79::-;;26014:5;26003:16;;25993:32;;;:::o;26031:180::-;26079:77;26076:1;26069:88;26176:4;26173:1;26166:15;26200:4;26197:1;26190:15;26217:180;26265:77;26262:1;26255:88;26362:4;26359:1;26352:15;26386:4;26383:1;26376:15;26403:180;26451:77;26448:1;26441:88;26548:4;26545:1;26538:15;26572:4;26569:1;26562:15;26589:180;26637:77;26634:1;26627:88;26734:4;26731:1;26724:15;26758:4;26755:1;26748:15;26775:102;;26867:2;26863:7;26858:2;26851:5;26847:14;26843:28;26833:38;;26823:54;;;:::o;26883:94::-;;26964:5;26960:2;26956:14;26935:35;;26925:52;;;:::o;26983:102::-;;27072:5;27069:1;27065:13;27044:34;;27034:51;;;:::o;27091:122::-;27164:24;27182:5;27164:24;:::i;:::-;27157:5;27154:35;27144:2;;27203:1;27200;27193:12;27144:2;27134:79;:::o;27219:116::-;27289:21;27304:5;27289:21;:::i;:::-;27282:5;27279:32;27269:2;;27325:1;27322;27315:12;27269:2;27259:76;:::o;27341:120::-;27413:23;27430:5;27413:23;:::i;:::-;27406:5;27403:34;27393:2;;27451:1;27448;27441:12;27393:2;27383:78;:::o;27467:122::-;27540:24;27558:5;27540:24;:::i;:::-;27533:5;27530:35;27520:2;;27579:1;27576;27569:12;27520:2;27510:79;:::o

Swarm Source

ipfs://ca0710f04cb88946a99fdfebe9cd1de12fdc8a2cc381e4b7edf828cdd0e45eb1
Block Transaction Difficulty Gas Used Reward
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.

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