ETH Price: $3,946.49 (+1.99%)

Token

BMC Ultra Miners (ULTRA)
 

Overview

Max Total Supply

4,445 ULTRA

Holders

991

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
0 ULTRA
0x466153878e91b3d4d2f906d9f7b1a109915e0ddc
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

To create an Ultra Miner you need 2 Blockchain Miners Club NFT's. Ultra Miners will consist of 280+ hand-drawn traits and will give you 2x rewards, 2x governance votes, and $HASH token. $HASH is the utility token of the BMC ecosystem, it cannot be purchased from BMC developers...

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Ultraminers

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

library Address {
 
    function isContract(address account) internal view returns (bool) {

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IERC721Receiver {

    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

interface IERC165 {

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721 is IERC165 {

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

    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    function transferFrom(address from, address to, uint256 tokenId) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}

interface IERC721Enumerable is IERC721 {

    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) external view returns (uint256);
}

interface IERC721Metadata is IERC721 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

abstract contract ERC165 is IERC165 {

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

abstract contract NFTOptimized is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
    using Address for address;

    string private _name;
    string private _symbol;
    uint256 private burnCount;

    address[] internal _owners;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }     

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = NFTOptimized.ownerOf(tokenId);
        require(to != owner, "Approval for Owner is not necessary");
        require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()), "Approve function call by non-approved caller");

        _approve(to, tokenId);
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "Approval for Owner is not necessary");
        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    function transferFrom(address from, address to, uint256 tokenId) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "Transfer function call by non-approved caller");
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "safeTransfer function call by non-approved caller");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "Error from ERC721Receiver check");
    }

	function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }
	function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
        _mint(to, tokenId);
        require(_checkOnERC721Received(address(0), to, tokenId, _data), "Error from ERC721Receiver check");
    }
	function _mint(address to, uint256 tokenId) internal virtual {
        require(!_exists(tokenId), "Token already exists");
        require(to != address(0), "Cannot mint to Null Address");
        
        _beforeTokenTransfer(address(0), to, tokenId);
        _owners.push(to);

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

	function _burn(uint256 tokenId) internal virtual {
        address owner = NFTOptimized.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);
        _approve(address(0), tokenId);
        _owners[tokenId] = address(0);
        burnCount++;

        emit Transfer(owner, address(0), tokenId);
    }

	function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(NFTOptimized.ownerOf(tokenId) == from, "Caller does not own token");
        require(to != address(0), "Cannot transfer to Null Address");

        _beforeTokenTransfer(from, to, tokenId);
        _approve(address(0), tokenId);
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

	function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(NFTOptimized.ownerOf(tokenId), to, tokenId);
    }

	function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    //Leaving this in incase anyone needs to overwrite this function for additional functionality
	function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual {}

    /**
    VIEW FUNCTIONS
     */
     
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "Cannot measure balance of Null Address");
        uint count = 0;
        uint length = _owners.length;
        for(uint i = 0; i < length; i++){
          if(owner == _owners[i] ){
            count++;
          }
        }
        delete length;
        return count;
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "Checking for Owner of nonexistent tokenid");
        return owner;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "Checking for Owner of nonexistent tokenid");
        return _tokenApprovals[tokenId];
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return tokenId < _owners.length && _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "Checking for Owner of nonexistent tokenid");
        address owner = NFTOptimized.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _owners.length - burnCount;
    }

    function totalCreated() public view virtual returns (uint256) {
        return _owners.length;
    }

    function totalBurned() public view virtual returns (uint256) {
        return burnCount;
    }

    function tokensOfOwner(address owner) public view returns (uint256[] memory) {
        require(0 < NFTOptimized.balanceOf(owner), "Address owns no tokens");
        uint256 tokenCount = balanceOf(owner);
        uint256[] memory tokenIds = new uint256[](tokenCount);

        for (uint256 i = 0; i < tokenCount; i++) {
            tokenIds[i] = tokenOfOwnerByIndex(owner, i);
        }
        return tokenIds;
    }

    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256 tokenId) {
        require(index < NFTOptimized.balanceOf(owner), "Token does not exist");
        uint count;

        for( uint i; i < _owners.length; ++i ){
            if( owner == _owners[i] ){
                if( count == index )
                    return i;
                else
                    ++count;
            }
        }
        require(false, "Token does not exist");
    }

    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < NFTOptimized.totalCreated(), "Token does not exist");
        return index;
    }

}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


/**
::::::ccclccccclloooollooodxxxxxxxxdddxxkkkkkkkkO00000000OOkkkkkkxxdddxxxxxxxdoolllooolccccccc::::::
ccccllcccccllloooollooddxxxxxxxddxxxkkkkkkkOO000000000000000OOOkkkkkkxxxxxxxxxxxddoollloollccccccc::
llcccclllooooollooddxxxxxxxxxxxxkkkkkkkOO000OOO0KKK0000KK000OOOOOOkkkkkOkkkxxxxxxxxxddoolllolllccccc
cclllooooollloodxxxxxxxxxxxkkOkkkOOO00000OkkOkOOK00kxkkkkxxkkkkkkOO0OOkkkkOOkkkxxxxxxxxxddoooloollcc
looooolllooddxxxxxxxxxkkkOOkOOO000000OkkOkkO0Oxoc,.. .';coddddxxdxkkkkOOOOkkkkOOkkxxxdxxxxxxddoollll
oooolooddxxxxxxxxxkkkkOOOOO000000OOOOOkk0Oxoc,.          .';coddddxxxxkkkkkOOOkkkkOOkkxxxddxxxxxdool
oooloxxxxxxxxxkkkkOOOO0000O000O00OkkOOxoc,.                  .';coxxdxxxxxkkkxkkOOkkkOOOkkxxddxxxxxx
oolldxxdxxkkkkkOOO000OO000O000OOOOxo:,.                          .';coxxdxkkkxkkxxkkkOkkkOOOkxddxxxx
oolldxxdxOkkkOO00OO00OOO0OOkOOxo:,.                                  .';coxxdk0K0OkxkOOOOkkkkOxdxxxx
oolldxddkOxk00O00OOOOOxxkkxl:,.                                          .';:oxkO0K0000OO00xxOxdxxxx
oolldxddkOkkO0OOOkxxkkdl:,.                                                  ..,ckKKK0KKOO0kxOxdxxxx
oocldxddkOxxkkxxxkdc:,.                                                          lkkK0KKOO0kxOxdxxxx
oollxxdxkkxxddxxkc.                                                              :dd00KKOO0kxOxdxxxx
ooloxxdxOkxxdddxk,                                                               :ddOOKKOO0kxOxdxxxx
ooloxxxxOkxxxxxxk,                                                               :ddOO00OO0kxOxdxxxx
ooldxxxxOkxkOOxxk,            ..'''.                           .',;;,.           :ddOkk0OO0kkOxdxxxx
ooldxxxxOkxkO0xxk,           'kOdodkxc.     'c.              cOOkkkko.           :ddOkk0OO0kkOkxxxxx
ooodxxdxOxkk00dxk,           :Kl   .c0d.    cXo       ::    .dWx.                :ddOkk0OO0kkOkxxxxx
olodxxdxOxkO00dxk,           :Kc    .dO.    lW0,     .OO'    lNx.                :doOkk0OO0kkOkdxxxx
olodxxdxOxkO00kkk,           ;Kk::::o0o     oWWd.    :XNl    :Xk.                :doOkk0OO0kkOkdxxxx
olldxxdxOxkO0K0KO,           ;KOcccldkkc.  .dX0O;   .xKKO'   ,KO.                :dokkk0OO0kkOxdxxxx
olldxxdxOkkOOK00k,           ;0l      ;Ok. .k0:xx.  ;0lc0l   .O0'                :dokkk0OO0kkOxdxxxx
ollxxxdxOkkOOK0Od,           ,0l       ,Oc .Ok.,k: .dO'.xO.  .xK,                :dokkx0OO0kxOxdxxxx
oclxxxdkOkkkOK0kd,           ,0o       .kl '0x. lxclOo  :Kl   dX:                :dokkxOOO0xxOxddxxx
ocoxxxdkkkOk000kd,           ,0o       :O; ,0d  .xXX0,  .kO.  lXc                :dokxxOOO0xkOxodxxx
oloxxddkkkOO00Okd,           '0x.  ..,lkc  ;0l   :OXx.   cKc  ;Kd.               :dokkOKOO0kkOxodxxx
oloxxddkkkOO0kkkd,           .lxlclool:.   ;O:   .'c;    'Ok. .d0kxdxxo.         :dokO0KOO0xkOxodxxx
lldxxdokkkOO0kxkd,                         ...            ,:.   ';cloo:.         :dokk0XOOOxxOkddxxx
lldxxddkkkO0Kxxkd,                                                               :dokO0X00OxxOkddxxx
lldxxddkxkO0Kxxxd,                                                               :dokO0X0OOxkOkddxxx
lldxxddkxkOO0kxxo,                                                               :od000XOOOxkOkddxxx
lldxxdxkxkOO0kxdo,                                                               :od0O0X0OOxkOkddxxx
loxxxdxkxkOOKkxdo,                                                              .lod00KXOOOxkOkddxxx
loxxxdxkxkO0Kkxdo,                                                          .':cdkxkK0KKOOOxkOkddxxx
loxxxdxkxOO0K00xol,..                                                   .':ldkkxxkO00000O0OxkOkddxxx
loxxxdxkkOOO000Oxxxdl:,.                                            .,:ldkkxxkOOO00000000OkkOOkddxxx
loxxxxkkkO00O0000Okkxxxxdoloc'.                                 .':ldkkxxkOOO000000000OOkkOOOkxddxxx
loxxxdxOkkkkO0000000OOkkk000Okdc;'.                         .,:ldkkxxxkOO00000000OOOOOOOOkkxxddxxxxd
llodxddxxkOkkkkkO00000000Okkkkxxxxoc;'.                 .,:ldkkxxkkkO00000000OkkkkOOOkkxxxdxxxxxdool
oollodxxxxxxkOkkxkkO0000000KKK0Okkddddoc:,.         .,:ldkkxdkOOO00000000OkkkkkOOkkxxddxxxxxddoolloo
lloooloodxxxxxxkkkkxkkO000000000000Okxddxxol:,..,:cldkkxdxkOO00000000OkkkkkOOkkxxddxxxxxdddoollooooo
ccllloooooddxxxxxxkkOkkkkO0000000000000OOOOO0KOOOOkxdxkkO0000O000OkkkkkOOkkxxxdxxxxxxddoooloooooollc
lccccllooolooddxxxxxxxkOkkkkkkkkOO00O000KKKKKKK00OOOO000000000OkkkkOOOkxxddxxxxxxddoooloooooollccccc
ccclccccloooolloodxxxxdxxkOOOOOOkkkkO00OO0000KKKKKK0000000OkkkkkOOkxxxddxxxxxddoolloooooollcccccccll
:::clllccclloooolloodxxxxxxxkkkkkOOkkkkOO00O0000000000OOkkkkOOkxxxxxxxxxxxdoollloooooollccccclclllll
:::::ccllccccllooollloddxxxxxxxxxxkkOOkkkkOO00000OOOkkkkOOkxxxddxxxxxxdooolloooooollccccccllcllllcc:
;:::;::cccllcccllooooolloddxxxxxxxxxxxkkOOkkkOOOkkkkOOkxxxddxxxxxxddoolllooooolllcccclllcclllccc::::
',;;::::::ccllcccclloooooloooddxxxxxxxxxxkkOOOOOOkkkxxddxxxxxxxdoolllooooolllccccclccllllccc::::::::
''',;;::::::cclccccccllllooollloodxxxxxxxxxxxkxxxdddxxxxxxxdoollloooooollcccccllcllcclcc::::::::::;;
''''',;:::::::cccllcccccccooooolllodxxxxxxxxxdddxxxxxxxxxdolllooooooolccccccclllllllcc:;::::::::;,,'

    Ultraminers are synthesized from the burning of two BMCs. They are hand drawn rare and unique artworks inspired by Bitcoin miners (AntminerS19j ASIC Pro). 

*/

interface IBMC {
    function burn(uint256 tokenId) external;
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
    function ownerOf(uint256 tokenId) external view returns (address);
}

contract Ultraminers is NFTOptimized, Ownable {
  using Strings for uint256;
  bool private synthesizerState = false;

  string public baseURI;
  address public umContract;
  IBMC public bmc;

  constructor(string memory _name, string memory _symbol, IBMC _bmc) NFTOptimized(_name, _symbol) {
    baseURI = "ipfs://QmVGRm43vSXRyzRRM3C8j3rvLDabuxS3nT6V5ftMjXPpL3/";
    bmc = _bmc;
    umContract = address(this);
  }

  modifier nonContract() {
    require(tx.origin == msg.sender, "No Smart Contracts allowed");
    _;
  }

  function synthesizeUltraminer(uint256 firstbmc, uint256 secondbmc) external nonContract{
    require(synthesizerState, "The Synthesizer is not active currently.");
    address caller = _msgSender();
    require(bmc.isApprovedForAll(caller, umContract), "Synthesizer is not approved to burn your NFTs.");
    require(bmc.ownerOf(firstbmc) == caller && bmc.ownerOf(secondbmc) == caller, "Synthesizer Caller is not Owner.");
    uint256 supply = totalCreated();
 
    bmc.burn(firstbmc);
    bmc.burn(secondbmc);

    _safeMint(caller, supply, "");

  }

  function synthesizeManyUltraminers(uint256[] memory bmcs) external nonContract{
    require(synthesizerState, "The Synthesizer is not active currently.");
    require(bmcs.length % 2 == 0, "Uneven number of BMCs inputted.");
    address caller = _msgSender();
    require(bmc.isApprovedForAll(caller, umContract), "Synthesizer is not approved to burn your NFTs.");
    uint256 supply = totalCreated();

    for (uint256 i = 0; i < bmcs.length; i += 2) {

        uint256 firstbmc = bmcs[i];
        uint256 secondbmc = bmcs[i + 1];
        require(bmc.ownerOf(firstbmc) == caller && bmc.ownerOf(secondbmc) == caller, "Synthesizer Caller is not Owner.");

        bmc.burn(firstbmc);
        bmc.burn(secondbmc);

        _safeMint(caller, supply + i/2, "");
    }

  }

  function setBaseURI(string memory _newBaseURI) external onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBmcContract(IBMC _newBmcContract) external onlyOwner {
    bmc = _newBmcContract;
  }

  function setSynthesizerState(bool _state) external onlyOwner {
        synthesizerState = _state;
  }

  function burn(uint256 tokenId) public {
    require(_isApprovedOrOwner(_msgSender(), tokenId));
    _burn(tokenId);
  }

   /**
    VIEW FUNCTIONS
   */

  function _baseURI() internal view virtual returns (string memory) {
	return baseURI;
  }

  function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
	require(_exists(tokenId), "Token does not exist");

	string memory currentBaseURI = _baseURI();
	return bytes(currentBaseURI).length > 0	? string(abi.encodePacked(currentBaseURI, tokenId.toString())) : "";
  }

  function getSynthesizerState() public view returns (bool){
        return synthesizerState;
  }

  function getBmcApprovalStatus(address _address) public view returns (bool){
        return bmc.isApprovedForAll(_address, umContract);
  }

  function isApprovedForAll(address _owner, address _operator) public override view returns (bool isOperator) {
        if (_operator == address(0xa5409ec958C83C3f309868babACA7c86DCB077c1)) {     // OpenSea Address
            return true;
        }
        
        return NFTOptimized.isApprovedForAll(_owner, _operator);
  }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"contract IBMC","name":"_bmc","type":"address"}],"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":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[{"internalType":"address","name":"to","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":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bmc","outputs":[{"internalType":"contract IBMC","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getBmcApprovalStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSynthesizerState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"isOperator","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBMC","name":"_newBmcContract","type":"address"}],"name":"setBmcContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setSynthesizerState","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":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"bmcs","type":"uint256[]"}],"name":"synthesizeManyUltraminers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"firstbmc","type":"uint256"},{"internalType":"uint256","name":"secondbmc","type":"uint256"}],"name":"synthesizeUltraminer","outputs":[],"stateMutability":"nonpayable","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":"tokenId","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCreated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"umContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526000600660146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5060405162004e8e38038062004e8e8339818101604052810190620000529190620004f9565b828281600090805190602001906200006c92919062000233565b5080600190805190602001906200008592919062000233565b505050620000a86200009c6200016560201b60201c565b6200016d60201b60201c565b60405180606001604052806036815260200162004e586036913960079080519060200190620000d992919062000233565b5080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620005f8565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200024190620005c2565b90600052602060002090601f016020900481019282620002655760008555620002b1565b82601f106200028057805160ff1916838001178555620002b1565b82800160010185558215620002b1579182015b82811115620002b057825182559160200191906001019062000293565b5b509050620002c09190620002c4565b5090565b5b80821115620002df576000816000905550600101620002c5565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200034c8262000301565b810181811067ffffffffffffffff821117156200036e576200036d62000312565b5b80604052505050565b600062000383620002e3565b905062000391828262000341565b919050565b600067ffffffffffffffff821115620003b457620003b362000312565b5b620003bf8262000301565b9050602081019050919050565b60005b83811015620003ec578082015181840152602081019050620003cf565b83811115620003fc576000848401525b50505050565b600062000419620004138462000396565b62000377565b905082815260208101848484011115620004385762000437620002fc565b5b62000445848285620003cc565b509392505050565b600082601f830112620004655762000464620002f7565b5b81516200047784826020860162000402565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004ad8262000480565b9050919050565b6000620004c182620004a0565b9050919050565b620004d381620004b4565b8114620004df57600080fd5b50565b600081519050620004f381620004c8565b92915050565b600080600060608486031215620005155762000514620002ed565b5b600084015167ffffffffffffffff811115620005365762000535620002f2565b5b62000544868287016200044d565b935050602084015167ffffffffffffffff811115620005685762000567620002f2565b5b62000576868287016200044d565b92505060406200058986828701620004e2565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005db57607f821691505b60208210811415620005f257620005f162000593565b5b50919050565b61485080620006086000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80637a44d57c1161011a578063b9d99d29116100ad578063cb443cb51161007c578063cb443cb5146105c0578063d89135cd146105de578063e985e9c5146105fc578063f2fde38b1461062c578063f859b4f814610648576101fb565b8063b9d99d2914610528578063bc0853df14610544578063c1d0679914610560578063c87b56dd14610590576101fb565b806395d89b41116100e957806395d89b41146104b657806398f073d0146104d4578063a22cb465146104f0578063b88d4fde1461050c576101fb565b80637a44d57c1461042e578063844e0acd1461044a5780638462151c146104685780638da5cb5b14610498576101fb565b806342842e0e116101925780636352211e116101615780636352211e146103a65780636c0360eb146103d657806370a08231146103f4578063715018a614610424576101fb565b806342842e0e1461032257806342966c681461033e5780634f6ccce71461035a57806355f804b31461038a576101fb565b806318160ddd116101ce57806318160ddd1461029a57806323b872dd146102b85780632f745c59146102d457806341218b8014610304576101fb565b806301ffc9a71461020057806306fdde0314610230578063081812fc1461024e578063095ea7b31461027e575b600080fd5b61021a6004803603810190610215919061302b565b610666565b6040516102279190613073565b60405180910390f35b6102386107b0565b6040516102459190613127565b60405180910390f35b6102686004803603810190610263919061317f565b610842565b60405161027591906131ed565b60405180910390f35b61029860048036038101906102939190613234565b6108c7565b005b6102a26109df565b6040516102af9190613283565b60405180910390f35b6102d260048036038101906102cd919061329e565b6109f9565b005b6102ee60048036038101906102e99190613234565b610a59565b6040516102fb9190613283565b60405180910390f35b61030c610ba2565b60405161031991906131ed565b60405180910390f35b61033c6004803603810190610337919061329e565b610bc8565b005b6103586004803603810190610353919061317f565b610be8565b005b610374600480360381019061036f919061317f565b610c0e565b6040516103819190613283565b60405180910390f35b6103a4600480360381019061039f9190613426565b610c61565b005b6103c060048036038101906103bb919061317f565b610cf7565b6040516103cd91906131ed565b60405180910390f35b6103de610db4565b6040516103eb9190613127565b60405180910390f35b61040e6004803603810190610409919061346f565b610e42565b60405161041b9190613283565b60405180910390f35b61042c610f6c565b005b610448600480360381019061044391906134da565b610ff4565b005b6104526110b4565b60405161045f9190613283565b60405180910390f35b610482600480360381019061047d919061346f565b6110c1565b60405161048f91906135c5565b60405180910390f35b6104a06111ba565b6040516104ad91906131ed565b60405180910390f35b6104be6111e4565b6040516104cb9190613127565b60405180910390f35b6104ee60048036038101906104e991906135e7565b611276565b005b61050a60048036038101906105059190613653565b61175f565b005b61052660048036038101906105219190613734565b6118e0565b005b610542600480360381019061053d91906137b7565b611942565b005b61055e600480360381019061055991906138ac565b6119db565b005b61057a6004803603810190610575919061346f565b611f97565b6040516105879190613073565b60405180910390f35b6105aa60048036038101906105a5919061317f565b612060565b6040516105b79190613127565b60405180910390f35b6105c8612107565b6040516105d59190613073565b60405180910390f35b6105e661211e565b6040516105f39190613283565b60405180910390f35b610616600480360381019061061191906138f5565b612128565b6040516106239190613073565b60405180910390f35b6106466004803603810190610641919061346f565b61218e565b005b610650612286565b60405161065d9190613994565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061073157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061079957507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107a957506107a8826122ac565b5b9050919050565b6060600080546107bf906139de565b80601f01602080910402602001604051908101604052809291908181526020018280546107eb906139de565b80156108385780601f1061080d57610100808354040283529160200191610838565b820191906000526020600020905b81548152906001019060200180831161081b57829003601f168201915b5050505050905090565b600061084d82612316565b61088c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088390613a82565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108d282610cf7565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613b14565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661096261239e565b73ffffffffffffffffffffffffffffffffffffffff16148061099157506109908161098b61239e565b612128565b5b6109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c790613ba6565b60405180910390fd5b6109da83836123a6565b505050565b60006002546003805490506109f49190613bf5565b905090565b610a0a610a0461239e565b8261245f565b610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4090613c9b565b60405180910390fd5b610a5483838361253d565b505050565b6000610a6483610e42565b8210610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c90613d07565b60405180910390fd5b6000805b600380549050811015610b585760038181548110610aca57610ac9613d27565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610b475783821415610b3a578092505050610b9c565b81610b4490613d56565b91505b80610b5190613d56565b9050610aa9565b506000610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9190613d07565b60405180910390fd5b505b92915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610be3838383604051806020016040528060008152506118e0565b505050565b610bf9610bf361239e565b8261245f565b610c0257600080fd5b610c0b816126f6565b50565b6000610c186110b4565b8210610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090613d07565b60405180910390fd5b819050919050565b610c6961239e565b73ffffffffffffffffffffffffffffffffffffffff16610c876111ba565b73ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490613deb565b60405180910390fd5b8060079080519060200190610cf3929190612f1c565b5050565b60008060038381548110610d0e57610d0d613d27565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da290613a82565b60405180910390fd5b80915050919050565b60078054610dc1906139de565b80601f0160208091040260200160405190810160405280929190818152602001828054610ded906139de565b8015610e3a5780601f10610e0f57610100808354040283529160200191610e3a565b820191906000526020600020905b815481529060010190602001808311610e1d57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613e7d565b60405180910390fd5b600080600380549050905060005b81811015610f5d5760038181548110610edd57610edc613d27565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610f4a578280610f4690613d56565b9350505b8080610f5590613d56565b915050610ec1565b50600090508192505050919050565b610f7461239e565b73ffffffffffffffffffffffffffffffffffffffff16610f926111ba565b73ffffffffffffffffffffffffffffffffffffffff1614610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90613deb565b60405180910390fd5b610ff260006127f0565b565b610ffc61239e565b73ffffffffffffffffffffffffffffffffffffffff1661101a6111ba565b73ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613deb565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600380549050905090565b60606110cc82610e42565b60001061110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590613ee9565b60405180910390fd5b600061111983610e42565b905060008167ffffffffffffffff811115611137576111366132fb565b5b6040519080825280602002602001820160405280156111655781602001602082028036833780820191505090505b50905060005b828110156111af5761117d8582610a59565b8282815181106111905761118f613d27565b5b60200260200101818152505080806111a790613d56565b91505061116b565b508092505050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546111f3906139de565b80601f016020809104026020016040519081016040528092919081815260200182805461121f906139de565b801561126c5780601f106112415761010080835404028352916020019161126c565b820191906000526020600020905b81548152906001019060200180831161124f57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90613f55565b60405180910390fd5b600660149054906101000a900460ff16611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90613fe7565b60405180910390fd5b600061133d61239e565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c582600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016113be929190614007565b602060405180830381865afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff9190614045565b61143e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611435906140e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004016114b09190613283565b602060405180830381865afa1580156114cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f19190614119565b73ffffffffffffffffffffffffffffffffffffffff161480156115da57508073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004016115819190613283565b602060405180830381865afa15801561159e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c29190614119565b73ffffffffffffffffffffffffffffffffffffffff16145b611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090614192565b60405180910390fd5b60006116236110b4565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68856040518263ffffffff1660e01b81526004016116809190613283565b600060405180830381600087803b15801561169a57600080fd5b505af11580156116ae573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68846040518263ffffffff1660e01b815260040161170d9190613283565b600060405180830381600087803b15801561172757600080fd5b505af115801561173b573d6000803e3d6000fd5b505050506117598282604051806020016040528060008152506128b6565b50505050565b61176761239e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc90613b14565b60405180910390fd5b80600560006117e261239e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661188f61239e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118d49190613073565b60405180910390a35050565b6118f16118eb61239e565b8361245f565b611930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192790614224565b60405180910390fd5b61193c84848484612911565b50505050565b61194a61239e565b73ffffffffffffffffffffffffffffffffffffffff166119686111ba565b73ffffffffffffffffffffffffffffffffffffffff16146119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b590613deb565b60405180910390fd5b80600660146101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090613f55565b60405180910390fd5b600660149054906101000a900460ff16611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f90613fe7565b60405180910390fd5b600060028251611aa89190614273565b14611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf906142f0565b60405180910390fd5b6000611af261239e565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c582600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611b73929190614007565b602060405180830381865afa158015611b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb49190614045565b611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bea906140e4565b60405180910390fd5b6000611bfd6110b4565b905060005b8351811015611f91576000848281518110611c2057611c1f613d27565b5b60200260200101519050600085600184611c3a9190614310565b81518110611c4b57611c4a613d27565b5b602002602001015190508473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401611cc79190613283565b602060405180830381865afa158015611ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d089190614119565b73ffffffffffffffffffffffffffffffffffffffff16148015611df157508473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611d989190613283565b602060405180830381865afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190614119565b73ffffffffffffffffffffffffffffffffffffffff16145b611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2790614192565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b8152600401611e8b9190613283565b600060405180830381600087803b158015611ea557600080fd5b505af1158015611eb9573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b8152600401611f189190613283565b600060405180830381600087803b158015611f3257600080fd5b505af1158015611f46573d6000803e3d6000fd5b50505050611f7b85600285611f5b9190614366565b86611f669190614310565b604051806020016040528060008152506128b6565b5050600281611f8a9190614310565b9050611c02565b50505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c583600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612018929190614007565b602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190614045565b9050919050565b606061206b82612316565b6120aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a190613d07565b60405180910390fd5b60006120b461296d565b905060008151116120d457604051806020016040528060008152506120ff565b806120de846129ff565b6040516020016120ef9291906143d3565b6040516020818303038152906040525b915050919050565b6000600660149054906101000a900460ff16905090565b6000600254905090565b600073a5409ec958c83c3f309868babaca7c86dcb077c173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561217b5760019050612188565b6121858383612b60565b90505b92915050565b61219661239e565b73ffffffffffffffffffffffffffffffffffffffff166121b46111ba565b73ffffffffffffffffffffffffffffffffffffffff161461220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220190613deb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190614469565b60405180910390fd5b612283816127f0565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000600380549050821080156123975750600073ffffffffffffffffffffffffffffffffffffffff166003838154811061235357612352613d27565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661241983610cf7565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061246a82612316565b6124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a090613a82565b60405180910390fd5b60006124b483610cf7565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061252357508373ffffffffffffffffffffffffffffffffffffffff1661250b84610842565b73ffffffffffffffffffffffffffffffffffffffff16145b8061253457506125338185612128565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661255d82610cf7565b73ffffffffffffffffffffffffffffffffffffffff16146125b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125aa906144d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261a90614541565b60405180910390fd5b61262e838383612bf4565b6126396000826123a6565b816003828154811061264e5761264d613d27565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061270182610cf7565b905061270f81600084612bf4565b61271a6000836123a6565b6000600383815481106127305761272f613d27565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919061278b90613d56565b919050555081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128c08383612bf9565b6128cd6000848484612d81565b61290c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612903906145ad565b60405180910390fd5b505050565b61291c84848461253d565b61292884848484612d81565b612967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295e906145ad565b60405180910390fd5b50505050565b60606007805461297c906139de565b80601f01602080910402602001604051908101604052809291908181526020018280546129a8906139de565b80156129f55780601f106129ca576101008083540402835291602001916129f5565b820191906000526020600020905b8154815290600101906020018083116129d857829003601f168201915b5050505050905090565b60606000821415612a47576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612b5b565b600082905060005b60008214612a79578080612a6290613d56565b915050600a82612a729190614366565b9150612a4f565b60008167ffffffffffffffff811115612a9557612a946132fb565b5b6040519080825280601f01601f191660200182016040528015612ac75781602001600182028036833780820191505090505b5090505b60008514612b5457600182612ae09190613bf5565b9150600a85612aef9190614273565b6030612afb9190614310565b60f81b818381518110612b1157612b10613d27565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b4d9190614366565b9450612acb565b8093505050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b505050565b612c0281612316565b15612c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3990614619565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca990614685565b60405180910390fd5b612cbe60008383612bf4565b6003829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000612da28473ffffffffffffffffffffffffffffffffffffffff16612f09565b15612efc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612dcb61239e565b8786866040518563ffffffff1660e01b8152600401612ded94939291906146fa565b6020604051808303816000875af1925050508015612e2957506040513d601f19601f82011682018060405250810190612e26919061475b565b60015b612eac573d8060008114612e59576040519150601f19603f3d011682016040523d82523d6000602084013e612e5e565b606091505b50600081511415612ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9b906147fa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612f01565b600190505b949350505050565b600080823b905060008111915050919050565b828054612f28906139de565b90600052602060002090601f016020900481019282612f4a5760008555612f91565b82601f10612f6357805160ff1916838001178555612f91565b82800160010185558215612f91579182015b82811115612f90578251825591602001919060010190612f75565b5b509050612f9e9190612fa2565b5090565b5b80821115612fbb576000816000905550600101612fa3565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61300881612fd3565b811461301357600080fd5b50565b60008135905061302581612fff565b92915050565b60006020828403121561304157613040612fc9565b5b600061304f84828501613016565b91505092915050565b60008115159050919050565b61306d81613058565b82525050565b60006020820190506130886000830184613064565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130c85780820151818401526020810190506130ad565b838111156130d7576000848401525b50505050565b6000601f19601f8301169050919050565b60006130f98261308e565b6131038185613099565b93506131138185602086016130aa565b61311c816130dd565b840191505092915050565b6000602082019050818103600083015261314181846130ee565b905092915050565b6000819050919050565b61315c81613149565b811461316757600080fd5b50565b60008135905061317981613153565b92915050565b60006020828403121561319557613194612fc9565b5b60006131a38482850161316a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131d7826131ac565b9050919050565b6131e7816131cc565b82525050565b600060208201905061320260008301846131de565b92915050565b613211816131cc565b811461321c57600080fd5b50565b60008135905061322e81613208565b92915050565b6000806040838503121561324b5761324a612fc9565b5b60006132598582860161321f565b925050602061326a8582860161316a565b9150509250929050565b61327d81613149565b82525050565b60006020820190506132986000830184613274565b92915050565b6000806000606084860312156132b7576132b6612fc9565b5b60006132c58682870161321f565b93505060206132d68682870161321f565b92505060406132e78682870161316a565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613333826130dd565b810181811067ffffffffffffffff82111715613352576133516132fb565b5b80604052505050565b6000613365612fbf565b9050613371828261332a565b919050565b600067ffffffffffffffff821115613391576133906132fb565b5b61339a826130dd565b9050602081019050919050565b82818337600083830152505050565b60006133c96133c484613376565b61335b565b9050828152602081018484840111156133e5576133e46132f6565b5b6133f08482856133a7565b509392505050565b600082601f83011261340d5761340c6132f1565b5b813561341d8482602086016133b6565b91505092915050565b60006020828403121561343c5761343b612fc9565b5b600082013567ffffffffffffffff81111561345a57613459612fce565b5b613466848285016133f8565b91505092915050565b60006020828403121561348557613484612fc9565b5b60006134938482850161321f565b91505092915050565b60006134a7826131cc565b9050919050565b6134b78161349c565b81146134c257600080fd5b50565b6000813590506134d4816134ae565b92915050565b6000602082840312156134f0576134ef612fc9565b5b60006134fe848285016134c5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61353c81613149565b82525050565b600061354e8383613533565b60208301905092915050565b6000602082019050919050565b600061357282613507565b61357c8185613512565b935061358783613523565b8060005b838110156135b857815161359f8882613542565b97506135aa8361355a565b92505060018101905061358b565b5085935050505092915050565b600060208201905081810360008301526135df8184613567565b905092915050565b600080604083850312156135fe576135fd612fc9565b5b600061360c8582860161316a565b925050602061361d8582860161316a565b9150509250929050565b61363081613058565b811461363b57600080fd5b50565b60008135905061364d81613627565b92915050565b6000806040838503121561366a57613669612fc9565b5b60006136788582860161321f565b92505060206136898582860161363e565b9150509250929050565b600067ffffffffffffffff8211156136ae576136ad6132fb565b5b6136b7826130dd565b9050602081019050919050565b60006136d76136d284613693565b61335b565b9050828152602081018484840111156136f3576136f26132f6565b5b6136fe8482856133a7565b509392505050565b600082601f83011261371b5761371a6132f1565b5b813561372b8482602086016136c4565b91505092915050565b6000806000806080858703121561374e5761374d612fc9565b5b600061375c8782880161321f565b945050602061376d8782880161321f565b935050604061377e8782880161316a565b925050606085013567ffffffffffffffff81111561379f5761379e612fce565b5b6137ab87828801613706565b91505092959194509250565b6000602082840312156137cd576137cc612fc9565b5b60006137db8482850161363e565b91505092915050565b600067ffffffffffffffff8211156137ff576137fe6132fb565b5b602082029050602081019050919050565b600080fd5b6000613828613823846137e4565b61335b565b9050808382526020820190506020840283018581111561384b5761384a613810565b5b835b818110156138745780613860888261316a565b84526020840193505060208101905061384d565b5050509392505050565b600082601f830112613893576138926132f1565b5b81356138a3848260208601613815565b91505092915050565b6000602082840312156138c2576138c1612fc9565b5b600082013567ffffffffffffffff8111156138e0576138df612fce565b5b6138ec8482850161387e565b91505092915050565b6000806040838503121561390c5761390b612fc9565b5b600061391a8582860161321f565b925050602061392b8582860161321f565b9150509250929050565b6000819050919050565b600061395a613955613950846131ac565b613935565b6131ac565b9050919050565b600061396c8261393f565b9050919050565b600061397e82613961565b9050919050565b61398e81613973565b82525050565b60006020820190506139a96000830184613985565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139f657607f821691505b60208210811415613a0a57613a096139af565b5b50919050565b7f436865636b696e6720666f72204f776e6572206f66206e6f6e6578697374656e60008201527f7420746f6b656e69640000000000000000000000000000000000000000000000602082015250565b6000613a6c602983613099565b9150613a7782613a10565b604082019050919050565b60006020820190508181036000830152613a9b81613a5f565b9050919050565b7f417070726f76616c20666f72204f776e6572206973206e6f74206e656365737360008201527f6172790000000000000000000000000000000000000000000000000000000000602082015250565b6000613afe602383613099565b9150613b0982613aa2565b604082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b7f417070726f76652066756e6374696f6e2063616c6c206279206e6f6e2d61707060008201527f726f7665642063616c6c65720000000000000000000000000000000000000000602082015250565b6000613b90602c83613099565b9150613b9b82613b34565b604082019050919050565b60006020820190508181036000830152613bbf81613b83565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c0082613149565b9150613c0b83613149565b925082821015613c1e57613c1d613bc6565b5b828203905092915050565b7f5472616e736665722066756e6374696f6e2063616c6c206279206e6f6e2d617060008201527f70726f7665642063616c6c657200000000000000000000000000000000000000602082015250565b6000613c85602d83613099565b9150613c9082613c29565b604082019050919050565b60006020820190508181036000830152613cb481613c78565b9050919050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b6000613cf1601483613099565b9150613cfc82613cbb565b602082019050919050565b60006020820190508181036000830152613d2081613ce4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613d6182613149565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d9457613d93613bc6565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613dd5602083613099565b9150613de082613d9f565b602082019050919050565b60006020820190508181036000830152613e0481613dc8565b9050919050565b7f43616e6e6f74206d6561737572652062616c616e6365206f66204e756c6c204160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e67602683613099565b9150613e7282613e0b565b604082019050919050565b60006020820190508181036000830152613e9681613e5a565b9050919050565b7f41646472657373206f776e73206e6f20746f6b656e7300000000000000000000600082015250565b6000613ed3601683613099565b9150613ede82613e9d565b602082019050919050565b60006020820190508181036000830152613f0281613ec6565b9050919050565b7f4e6f20536d61727420436f6e74726163747320616c6c6f776564000000000000600082015250565b6000613f3f601a83613099565b9150613f4a82613f09565b602082019050919050565b60006020820190508181036000830152613f6e81613f32565b9050919050565b7f5468652053796e74686573697a6572206973206e6f742061637469766520637560008201527f7272656e746c792e000000000000000000000000000000000000000000000000602082015250565b6000613fd1602883613099565b9150613fdc82613f75565b604082019050919050565b6000602082019050818103600083015261400081613fc4565b9050919050565b600060408201905061401c60008301856131de565b61402960208301846131de565b9392505050565b60008151905061403f81613627565b92915050565b60006020828403121561405b5761405a612fc9565b5b600061406984828501614030565b91505092915050565b7f53796e74686573697a6572206973206e6f7420617070726f76656420746f206260008201527f75726e20796f7572204e4654732e000000000000000000000000000000000000602082015250565b60006140ce602e83613099565b91506140d982614072565b604082019050919050565b600060208201905081810360008301526140fd816140c1565b9050919050565b60008151905061411381613208565b92915050565b60006020828403121561412f5761412e612fc9565b5b600061413d84828501614104565b91505092915050565b7f53796e74686573697a65722043616c6c6572206973206e6f74204f776e65722e600082015250565b600061417c602083613099565b915061418782614146565b602082019050919050565b600060208201905081810360008301526141ab8161416f565b9050919050565b7f736166655472616e736665722066756e6374696f6e2063616c6c206279206e6f60008201527f6e2d617070726f7665642063616c6c6572000000000000000000000000000000602082015250565b600061420e603183613099565b9150614219826141b2565b604082019050919050565b6000602082019050818103600083015261423d81614201565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061427e82613149565b915061428983613149565b92508261429957614298614244565b5b828206905092915050565b7f556e6576656e206e756d626572206f6620424d437320696e7075747465642e00600082015250565b60006142da601f83613099565b91506142e5826142a4565b602082019050919050565b60006020820190508181036000830152614309816142cd565b9050919050565b600061431b82613149565b915061432683613149565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561435b5761435a613bc6565b5b828201905092915050565b600061437182613149565b915061437c83613149565b92508261438c5761438b614244565b5b828204905092915050565b600081905092915050565b60006143ad8261308e565b6143b78185614397565b93506143c78185602086016130aa565b80840191505092915050565b60006143df82856143a2565b91506143eb82846143a2565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614453602683613099565b915061445e826143f7565b604082019050919050565b6000602082019050818103600083015261448281614446565b9050919050565b7f43616c6c657220646f6573206e6f74206f776e20746f6b656e00000000000000600082015250565b60006144bf601983613099565b91506144ca82614489565b602082019050919050565b600060208201905081810360008301526144ee816144b2565b9050919050565b7f43616e6e6f74207472616e7366657220746f204e756c6c204164647265737300600082015250565b600061452b601f83613099565b9150614536826144f5565b602082019050919050565b6000602082019050818103600083015261455a8161451e565b9050919050565b7f4572726f722066726f6d20455243373231526563656976657220636865636b00600082015250565b6000614597601f83613099565b91506145a282614561565b602082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b7f546f6b656e20616c726561647920657869737473000000000000000000000000600082015250565b6000614603601483613099565b915061460e826145cd565b602082019050919050565b60006020820190508181036000830152614632816145f6565b9050919050565b7f43616e6e6f74206d696e7420746f204e756c6c20416464726573730000000000600082015250565b600061466f601b83613099565b915061467a82614639565b602082019050919050565b6000602082019050818103600083015261469e81614662565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006146cc826146a5565b6146d681856146b0565b93506146e68185602086016130aa565b6146ef816130dd565b840191505092915050565b600060808201905061470f60008301876131de565b61471c60208301866131de565b6147296040830185613274565b818103606083015261473b81846146c1565b905095945050505050565b60008151905061475581612fff565b92915050565b60006020828403121561477157614770612fc9565b5b600061477f84828501614746565b91505092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006147e4603283613099565b91506147ef82614788565b604082019050919050565b60006020820190508181036000830152614813816147d7565b905091905056fea2646970667358221220837f2b7bca8e71d2e4956bf990576d0fe70b3552ed52089c4a064547234647f964736f6c634300080b0033697066733a2f2f516d5647526d343376535852797a52524d3343386a3372764c446162757853336e5436563566744d6a5850704c332f000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000047bd71b482b27ebdb57af6e372cab46c7280bf440000000000000000000000000000000000000000000000000000000000000010424d4320556c747261204d696e657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005554c545241000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80637a44d57c1161011a578063b9d99d29116100ad578063cb443cb51161007c578063cb443cb5146105c0578063d89135cd146105de578063e985e9c5146105fc578063f2fde38b1461062c578063f859b4f814610648576101fb565b8063b9d99d2914610528578063bc0853df14610544578063c1d0679914610560578063c87b56dd14610590576101fb565b806395d89b41116100e957806395d89b41146104b657806398f073d0146104d4578063a22cb465146104f0578063b88d4fde1461050c576101fb565b80637a44d57c1461042e578063844e0acd1461044a5780638462151c146104685780638da5cb5b14610498576101fb565b806342842e0e116101925780636352211e116101615780636352211e146103a65780636c0360eb146103d657806370a08231146103f4578063715018a614610424576101fb565b806342842e0e1461032257806342966c681461033e5780634f6ccce71461035a57806355f804b31461038a576101fb565b806318160ddd116101ce57806318160ddd1461029a57806323b872dd146102b85780632f745c59146102d457806341218b8014610304576101fb565b806301ffc9a71461020057806306fdde0314610230578063081812fc1461024e578063095ea7b31461027e575b600080fd5b61021a6004803603810190610215919061302b565b610666565b6040516102279190613073565b60405180910390f35b6102386107b0565b6040516102459190613127565b60405180910390f35b6102686004803603810190610263919061317f565b610842565b60405161027591906131ed565b60405180910390f35b61029860048036038101906102939190613234565b6108c7565b005b6102a26109df565b6040516102af9190613283565b60405180910390f35b6102d260048036038101906102cd919061329e565b6109f9565b005b6102ee60048036038101906102e99190613234565b610a59565b6040516102fb9190613283565b60405180910390f35b61030c610ba2565b60405161031991906131ed565b60405180910390f35b61033c6004803603810190610337919061329e565b610bc8565b005b6103586004803603810190610353919061317f565b610be8565b005b610374600480360381019061036f919061317f565b610c0e565b6040516103819190613283565b60405180910390f35b6103a4600480360381019061039f9190613426565b610c61565b005b6103c060048036038101906103bb919061317f565b610cf7565b6040516103cd91906131ed565b60405180910390f35b6103de610db4565b6040516103eb9190613127565b60405180910390f35b61040e6004803603810190610409919061346f565b610e42565b60405161041b9190613283565b60405180910390f35b61042c610f6c565b005b610448600480360381019061044391906134da565b610ff4565b005b6104526110b4565b60405161045f9190613283565b60405180910390f35b610482600480360381019061047d919061346f565b6110c1565b60405161048f91906135c5565b60405180910390f35b6104a06111ba565b6040516104ad91906131ed565b60405180910390f35b6104be6111e4565b6040516104cb9190613127565b60405180910390f35b6104ee60048036038101906104e991906135e7565b611276565b005b61050a60048036038101906105059190613653565b61175f565b005b61052660048036038101906105219190613734565b6118e0565b005b610542600480360381019061053d91906137b7565b611942565b005b61055e600480360381019061055991906138ac565b6119db565b005b61057a6004803603810190610575919061346f565b611f97565b6040516105879190613073565b60405180910390f35b6105aa60048036038101906105a5919061317f565b612060565b6040516105b79190613127565b60405180910390f35b6105c8612107565b6040516105d59190613073565b60405180910390f35b6105e661211e565b6040516105f39190613283565b60405180910390f35b610616600480360381019061061191906138f5565b612128565b6040516106239190613073565b60405180910390f35b6106466004803603810190610641919061346f565b61218e565b005b610650612286565b60405161065d9190613994565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061073157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061079957507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107a957506107a8826122ac565b5b9050919050565b6060600080546107bf906139de565b80601f01602080910402602001604051908101604052809291908181526020018280546107eb906139de565b80156108385780601f1061080d57610100808354040283529160200191610838565b820191906000526020600020905b81548152906001019060200180831161081b57829003601f168201915b5050505050905090565b600061084d82612316565b61088c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088390613a82565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108d282610cf7565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613b14565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661096261239e565b73ffffffffffffffffffffffffffffffffffffffff16148061099157506109908161098b61239e565b612128565b5b6109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c790613ba6565b60405180910390fd5b6109da83836123a6565b505050565b60006002546003805490506109f49190613bf5565b905090565b610a0a610a0461239e565b8261245f565b610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4090613c9b565b60405180910390fd5b610a5483838361253d565b505050565b6000610a6483610e42565b8210610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c90613d07565b60405180910390fd5b6000805b600380549050811015610b585760038181548110610aca57610ac9613d27565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610b475783821415610b3a578092505050610b9c565b81610b4490613d56565b91505b80610b5190613d56565b9050610aa9565b506000610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9190613d07565b60405180910390fd5b505b92915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610be3838383604051806020016040528060008152506118e0565b505050565b610bf9610bf361239e565b8261245f565b610c0257600080fd5b610c0b816126f6565b50565b6000610c186110b4565b8210610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090613d07565b60405180910390fd5b819050919050565b610c6961239e565b73ffffffffffffffffffffffffffffffffffffffff16610c876111ba565b73ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490613deb565b60405180910390fd5b8060079080519060200190610cf3929190612f1c565b5050565b60008060038381548110610d0e57610d0d613d27565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da290613a82565b60405180910390fd5b80915050919050565b60078054610dc1906139de565b80601f0160208091040260200160405190810160405280929190818152602001828054610ded906139de565b8015610e3a5780601f10610e0f57610100808354040283529160200191610e3a565b820191906000526020600020905b815481529060010190602001808311610e1d57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613e7d565b60405180910390fd5b600080600380549050905060005b81811015610f5d5760038181548110610edd57610edc613d27565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610f4a578280610f4690613d56565b9350505b8080610f5590613d56565b915050610ec1565b50600090508192505050919050565b610f7461239e565b73ffffffffffffffffffffffffffffffffffffffff16610f926111ba565b73ffffffffffffffffffffffffffffffffffffffff1614610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf90613deb565b60405180910390fd5b610ff260006127f0565b565b610ffc61239e565b73ffffffffffffffffffffffffffffffffffffffff1661101a6111ba565b73ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613deb565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600380549050905090565b60606110cc82610e42565b60001061110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590613ee9565b60405180910390fd5b600061111983610e42565b905060008167ffffffffffffffff811115611137576111366132fb565b5b6040519080825280602002602001820160405280156111655781602001602082028036833780820191505090505b50905060005b828110156111af5761117d8582610a59565b8282815181106111905761118f613d27565b5b60200260200101818152505080806111a790613d56565b91505061116b565b508092505050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546111f3906139de565b80601f016020809104026020016040519081016040528092919081815260200182805461121f906139de565b801561126c5780601f106112415761010080835404028352916020019161126c565b820191906000526020600020905b81548152906001019060200180831161124f57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90613f55565b60405180910390fd5b600660149054906101000a900460ff16611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90613fe7565b60405180910390fd5b600061133d61239e565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c582600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016113be929190614007565b602060405180830381865afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff9190614045565b61143e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611435906140e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004016114b09190613283565b602060405180830381865afa1580156114cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f19190614119565b73ffffffffffffffffffffffffffffffffffffffff161480156115da57508073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b81526004016115819190613283565b602060405180830381865afa15801561159e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c29190614119565b73ffffffffffffffffffffffffffffffffffffffff16145b611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090614192565b60405180910390fd5b60006116236110b4565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68856040518263ffffffff1660e01b81526004016116809190613283565b600060405180830381600087803b15801561169a57600080fd5b505af11580156116ae573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68846040518263ffffffff1660e01b815260040161170d9190613283565b600060405180830381600087803b15801561172757600080fd5b505af115801561173b573d6000803e3d6000fd5b505050506117598282604051806020016040528060008152506128b6565b50505050565b61176761239e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc90613b14565b60405180910390fd5b80600560006117e261239e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661188f61239e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118d49190613073565b60405180910390a35050565b6118f16118eb61239e565b8361245f565b611930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192790614224565b60405180910390fd5b61193c84848484612911565b50505050565b61194a61239e565b73ffffffffffffffffffffffffffffffffffffffff166119686111ba565b73ffffffffffffffffffffffffffffffffffffffff16146119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b590613deb565b60405180910390fd5b80600660146101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090613f55565b60405180910390fd5b600660149054906101000a900460ff16611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f90613fe7565b60405180910390fd5b600060028251611aa89190614273565b14611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf906142f0565b60405180910390fd5b6000611af261239e565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c582600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611b73929190614007565b602060405180830381865afa158015611b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb49190614045565b611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bea906140e4565b60405180910390fd5b6000611bfd6110b4565b905060005b8351811015611f91576000848281518110611c2057611c1f613d27565b5b60200260200101519050600085600184611c3a9190614310565b81518110611c4b57611c4a613d27565b5b602002602001015190508473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b8152600401611cc79190613283565b602060405180830381865afa158015611ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d089190614119565b73ffffffffffffffffffffffffffffffffffffffff16148015611df157508473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611d989190613283565b602060405180830381865afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190614119565b73ffffffffffffffffffffffffffffffffffffffff16145b611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2790614192565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b8152600401611e8b9190613283565b600060405180830381600087803b158015611ea557600080fd5b505af1158015611eb9573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b8152600401611f189190613283565b600060405180830381600087803b158015611f3257600080fd5b505af1158015611f46573d6000803e3d6000fd5b50505050611f7b85600285611f5b9190614366565b86611f669190614310565b604051806020016040528060008152506128b6565b5050600281611f8a9190614310565b9050611c02565b50505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c583600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612018929190614007565b602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190614045565b9050919050565b606061206b82612316565b6120aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a190613d07565b60405180910390fd5b60006120b461296d565b905060008151116120d457604051806020016040528060008152506120ff565b806120de846129ff565b6040516020016120ef9291906143d3565b6040516020818303038152906040525b915050919050565b6000600660149054906101000a900460ff16905090565b6000600254905090565b600073a5409ec958c83c3f309868babaca7c86dcb077c173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561217b5760019050612188565b6121858383612b60565b90505b92915050565b61219661239e565b73ffffffffffffffffffffffffffffffffffffffff166121b46111ba565b73ffffffffffffffffffffffffffffffffffffffff161461220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220190613deb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190614469565b60405180910390fd5b612283816127f0565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000600380549050821080156123975750600073ffffffffffffffffffffffffffffffffffffffff166003838154811061235357612352613d27565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661241983610cf7565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061246a82612316565b6124a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a090613a82565b60405180910390fd5b60006124b483610cf7565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061252357508373ffffffffffffffffffffffffffffffffffffffff1661250b84610842565b73ffffffffffffffffffffffffffffffffffffffff16145b8061253457506125338185612128565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661255d82610cf7565b73ffffffffffffffffffffffffffffffffffffffff16146125b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125aa906144d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261a90614541565b60405180910390fd5b61262e838383612bf4565b6126396000826123a6565b816003828154811061264e5761264d613d27565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061270182610cf7565b905061270f81600084612bf4565b61271a6000836123a6565b6000600383815481106127305761272f613d27565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919061278b90613d56565b919050555081600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128c08383612bf9565b6128cd6000848484612d81565b61290c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612903906145ad565b60405180910390fd5b505050565b61291c84848461253d565b61292884848484612d81565b612967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295e906145ad565b60405180910390fd5b50505050565b60606007805461297c906139de565b80601f01602080910402602001604051908101604052809291908181526020018280546129a8906139de565b80156129f55780601f106129ca576101008083540402835291602001916129f5565b820191906000526020600020905b8154815290600101906020018083116129d857829003601f168201915b5050505050905090565b60606000821415612a47576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612b5b565b600082905060005b60008214612a79578080612a6290613d56565b915050600a82612a729190614366565b9150612a4f565b60008167ffffffffffffffff811115612a9557612a946132fb565b5b6040519080825280601f01601f191660200182016040528015612ac75781602001600182028036833780820191505090505b5090505b60008514612b5457600182612ae09190613bf5565b9150600a85612aef9190614273565b6030612afb9190614310565b60f81b818381518110612b1157612b10613d27565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b4d9190614366565b9450612acb565b8093505050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b505050565b612c0281612316565b15612c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3990614619565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca990614685565b60405180910390fd5b612cbe60008383612bf4565b6003829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000612da28473ffffffffffffffffffffffffffffffffffffffff16612f09565b15612efc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612dcb61239e565b8786866040518563ffffffff1660e01b8152600401612ded94939291906146fa565b6020604051808303816000875af1925050508015612e2957506040513d601f19601f82011682018060405250810190612e26919061475b565b60015b612eac573d8060008114612e59576040519150601f19603f3d011682016040523d82523d6000602084013e612e5e565b606091505b50600081511415612ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9b906147fa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612f01565b600190505b949350505050565b600080823b905060008111915050919050565b828054612f28906139de565b90600052602060002090601f016020900481019282612f4a5760008555612f91565b82601f10612f6357805160ff1916838001178555612f91565b82800160010185558215612f91579182015b82811115612f90578251825591602001919060010190612f75565b5b509050612f9e9190612fa2565b5090565b5b80821115612fbb576000816000905550600101612fa3565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61300881612fd3565b811461301357600080fd5b50565b60008135905061302581612fff565b92915050565b60006020828403121561304157613040612fc9565b5b600061304f84828501613016565b91505092915050565b60008115159050919050565b61306d81613058565b82525050565b60006020820190506130886000830184613064565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130c85780820151818401526020810190506130ad565b838111156130d7576000848401525b50505050565b6000601f19601f8301169050919050565b60006130f98261308e565b6131038185613099565b93506131138185602086016130aa565b61311c816130dd565b840191505092915050565b6000602082019050818103600083015261314181846130ee565b905092915050565b6000819050919050565b61315c81613149565b811461316757600080fd5b50565b60008135905061317981613153565b92915050565b60006020828403121561319557613194612fc9565b5b60006131a38482850161316a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131d7826131ac565b9050919050565b6131e7816131cc565b82525050565b600060208201905061320260008301846131de565b92915050565b613211816131cc565b811461321c57600080fd5b50565b60008135905061322e81613208565b92915050565b6000806040838503121561324b5761324a612fc9565b5b60006132598582860161321f565b925050602061326a8582860161316a565b9150509250929050565b61327d81613149565b82525050565b60006020820190506132986000830184613274565b92915050565b6000806000606084860312156132b7576132b6612fc9565b5b60006132c58682870161321f565b93505060206132d68682870161321f565b92505060406132e78682870161316a565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613333826130dd565b810181811067ffffffffffffffff82111715613352576133516132fb565b5b80604052505050565b6000613365612fbf565b9050613371828261332a565b919050565b600067ffffffffffffffff821115613391576133906132fb565b5b61339a826130dd565b9050602081019050919050565b82818337600083830152505050565b60006133c96133c484613376565b61335b565b9050828152602081018484840111156133e5576133e46132f6565b5b6133f08482856133a7565b509392505050565b600082601f83011261340d5761340c6132f1565b5b813561341d8482602086016133b6565b91505092915050565b60006020828403121561343c5761343b612fc9565b5b600082013567ffffffffffffffff81111561345a57613459612fce565b5b613466848285016133f8565b91505092915050565b60006020828403121561348557613484612fc9565b5b60006134938482850161321f565b91505092915050565b60006134a7826131cc565b9050919050565b6134b78161349c565b81146134c257600080fd5b50565b6000813590506134d4816134ae565b92915050565b6000602082840312156134f0576134ef612fc9565b5b60006134fe848285016134c5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61353c81613149565b82525050565b600061354e8383613533565b60208301905092915050565b6000602082019050919050565b600061357282613507565b61357c8185613512565b935061358783613523565b8060005b838110156135b857815161359f8882613542565b97506135aa8361355a565b92505060018101905061358b565b5085935050505092915050565b600060208201905081810360008301526135df8184613567565b905092915050565b600080604083850312156135fe576135fd612fc9565b5b600061360c8582860161316a565b925050602061361d8582860161316a565b9150509250929050565b61363081613058565b811461363b57600080fd5b50565b60008135905061364d81613627565b92915050565b6000806040838503121561366a57613669612fc9565b5b60006136788582860161321f565b92505060206136898582860161363e565b9150509250929050565b600067ffffffffffffffff8211156136ae576136ad6132fb565b5b6136b7826130dd565b9050602081019050919050565b60006136d76136d284613693565b61335b565b9050828152602081018484840111156136f3576136f26132f6565b5b6136fe8482856133a7565b509392505050565b600082601f83011261371b5761371a6132f1565b5b813561372b8482602086016136c4565b91505092915050565b6000806000806080858703121561374e5761374d612fc9565b5b600061375c8782880161321f565b945050602061376d8782880161321f565b935050604061377e8782880161316a565b925050606085013567ffffffffffffffff81111561379f5761379e612fce565b5b6137ab87828801613706565b91505092959194509250565b6000602082840312156137cd576137cc612fc9565b5b60006137db8482850161363e565b91505092915050565b600067ffffffffffffffff8211156137ff576137fe6132fb565b5b602082029050602081019050919050565b600080fd5b6000613828613823846137e4565b61335b565b9050808382526020820190506020840283018581111561384b5761384a613810565b5b835b818110156138745780613860888261316a565b84526020840193505060208101905061384d565b5050509392505050565b600082601f830112613893576138926132f1565b5b81356138a3848260208601613815565b91505092915050565b6000602082840312156138c2576138c1612fc9565b5b600082013567ffffffffffffffff8111156138e0576138df612fce565b5b6138ec8482850161387e565b91505092915050565b6000806040838503121561390c5761390b612fc9565b5b600061391a8582860161321f565b925050602061392b8582860161321f565b9150509250929050565b6000819050919050565b600061395a613955613950846131ac565b613935565b6131ac565b9050919050565b600061396c8261393f565b9050919050565b600061397e82613961565b9050919050565b61398e81613973565b82525050565b60006020820190506139a96000830184613985565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139f657607f821691505b60208210811415613a0a57613a096139af565b5b50919050565b7f436865636b696e6720666f72204f776e6572206f66206e6f6e6578697374656e60008201527f7420746f6b656e69640000000000000000000000000000000000000000000000602082015250565b6000613a6c602983613099565b9150613a7782613a10565b604082019050919050565b60006020820190508181036000830152613a9b81613a5f565b9050919050565b7f417070726f76616c20666f72204f776e6572206973206e6f74206e656365737360008201527f6172790000000000000000000000000000000000000000000000000000000000602082015250565b6000613afe602383613099565b9150613b0982613aa2565b604082019050919050565b60006020820190508181036000830152613b2d81613af1565b9050919050565b7f417070726f76652066756e6374696f6e2063616c6c206279206e6f6e2d61707060008201527f726f7665642063616c6c65720000000000000000000000000000000000000000602082015250565b6000613b90602c83613099565b9150613b9b82613b34565b604082019050919050565b60006020820190508181036000830152613bbf81613b83565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c0082613149565b9150613c0b83613149565b925082821015613c1e57613c1d613bc6565b5b828203905092915050565b7f5472616e736665722066756e6374696f6e2063616c6c206279206e6f6e2d617060008201527f70726f7665642063616c6c657200000000000000000000000000000000000000602082015250565b6000613c85602d83613099565b9150613c9082613c29565b604082019050919050565b60006020820190508181036000830152613cb481613c78565b9050919050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b6000613cf1601483613099565b9150613cfc82613cbb565b602082019050919050565b60006020820190508181036000830152613d2081613ce4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613d6182613149565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d9457613d93613bc6565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613dd5602083613099565b9150613de082613d9f565b602082019050919050565b60006020820190508181036000830152613e0481613dc8565b9050919050565b7f43616e6e6f74206d6561737572652062616c616e6365206f66204e756c6c204160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e67602683613099565b9150613e7282613e0b565b604082019050919050565b60006020820190508181036000830152613e9681613e5a565b9050919050565b7f41646472657373206f776e73206e6f20746f6b656e7300000000000000000000600082015250565b6000613ed3601683613099565b9150613ede82613e9d565b602082019050919050565b60006020820190508181036000830152613f0281613ec6565b9050919050565b7f4e6f20536d61727420436f6e74726163747320616c6c6f776564000000000000600082015250565b6000613f3f601a83613099565b9150613f4a82613f09565b602082019050919050565b60006020820190508181036000830152613f6e81613f32565b9050919050565b7f5468652053796e74686573697a6572206973206e6f742061637469766520637560008201527f7272656e746c792e000000000000000000000000000000000000000000000000602082015250565b6000613fd1602883613099565b9150613fdc82613f75565b604082019050919050565b6000602082019050818103600083015261400081613fc4565b9050919050565b600060408201905061401c60008301856131de565b61402960208301846131de565b9392505050565b60008151905061403f81613627565b92915050565b60006020828403121561405b5761405a612fc9565b5b600061406984828501614030565b91505092915050565b7f53796e74686573697a6572206973206e6f7420617070726f76656420746f206260008201527f75726e20796f7572204e4654732e000000000000000000000000000000000000602082015250565b60006140ce602e83613099565b91506140d982614072565b604082019050919050565b600060208201905081810360008301526140fd816140c1565b9050919050565b60008151905061411381613208565b92915050565b60006020828403121561412f5761412e612fc9565b5b600061413d84828501614104565b91505092915050565b7f53796e74686573697a65722043616c6c6572206973206e6f74204f776e65722e600082015250565b600061417c602083613099565b915061418782614146565b602082019050919050565b600060208201905081810360008301526141ab8161416f565b9050919050565b7f736166655472616e736665722066756e6374696f6e2063616c6c206279206e6f60008201527f6e2d617070726f7665642063616c6c6572000000000000000000000000000000602082015250565b600061420e603183613099565b9150614219826141b2565b604082019050919050565b6000602082019050818103600083015261423d81614201565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061427e82613149565b915061428983613149565b92508261429957614298614244565b5b828206905092915050565b7f556e6576656e206e756d626572206f6620424d437320696e7075747465642e00600082015250565b60006142da601f83613099565b91506142e5826142a4565b602082019050919050565b60006020820190508181036000830152614309816142cd565b9050919050565b600061431b82613149565b915061432683613149565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561435b5761435a613bc6565b5b828201905092915050565b600061437182613149565b915061437c83613149565b92508261438c5761438b614244565b5b828204905092915050565b600081905092915050565b60006143ad8261308e565b6143b78185614397565b93506143c78185602086016130aa565b80840191505092915050565b60006143df82856143a2565b91506143eb82846143a2565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614453602683613099565b915061445e826143f7565b604082019050919050565b6000602082019050818103600083015261448281614446565b9050919050565b7f43616c6c657220646f6573206e6f74206f776e20746f6b656e00000000000000600082015250565b60006144bf601983613099565b91506144ca82614489565b602082019050919050565b600060208201905081810360008301526144ee816144b2565b9050919050565b7f43616e6e6f74207472616e7366657220746f204e756c6c204164647265737300600082015250565b600061452b601f83613099565b9150614536826144f5565b602082019050919050565b6000602082019050818103600083015261455a8161451e565b9050919050565b7f4572726f722066726f6d20455243373231526563656976657220636865636b00600082015250565b6000614597601f83613099565b91506145a282614561565b602082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b7f546f6b656e20616c726561647920657869737473000000000000000000000000600082015250565b6000614603601483613099565b915061460e826145cd565b602082019050919050565b60006020820190508181036000830152614632816145f6565b9050919050565b7f43616e6e6f74206d696e7420746f204e756c6c20416464726573730000000000600082015250565b600061466f601b83613099565b915061467a82614639565b602082019050919050565b6000602082019050818103600083015261469e81614662565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006146cc826146a5565b6146d681856146b0565b93506146e68185602086016130aa565b6146ef816130dd565b840191505092915050565b600060808201905061470f60008301876131de565b61471c60208301866131de565b6147296040830185613274565b818103606083015261473b81846146c1565b905095945050505050565b60008151905061475581612fff565b92915050565b60006020828403121561477157614770612fc9565b5b600061477f84828501614746565b91505092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006147e4603283613099565b91506147ef82614788565b604082019050919050565b60006020820190508181036000830152614813816147d7565b905091905056fea2646970667358221220837f2b7bca8e71d2e4956bf990576d0fe70b3552ed52089c4a064547234647f964736f6c634300080b0033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000047bd71b482b27ebdb57af6e372cab46c7280bf440000000000000000000000000000000000000000000000000000000000000010424d4320556c747261204d696e657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005554c545241000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): BMC Ultra Miners
Arg [1] : _symbol (string): ULTRA
Arg [2] : _bmc (address): 0x47Bd71b482B27eBDb57af6e372cab46c7280bf44

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000047bd71b482b27ebdb57af6e372cab46c7280bf44
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [4] : 424d4320556c747261204d696e65727300000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 554c545241000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

22548:3384:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12478:320;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13468:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13688:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8193:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14606:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8880:246;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15383:503;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22699:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9134:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24775:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15894:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24455:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13221:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22673:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12806:407;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16551:94;;;:::i;:::-;;24561:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14736:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14950:425;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16328:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13576:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23094:562;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8569:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9293:285;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24666:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23662:787;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25450:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25036:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25347:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14846:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25596:331;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16653:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22729:15;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12478:320;12580:4;12619:25;12604:40;;;:11;:40;;;;:92;;;;12663:33;12648:48;;;:11;:48;;;;12604:92;:146;;;;12715:35;12700:50;;;:11;:50;;;;12604:146;:186;;;;12754:36;12778:11;12754:23;:36::i;:::-;12604:186;12597:193;;12478:320;;;:::o;13468:100::-;13522:13;13555:5;13548:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13468:100;:::o;13688:216::-;13764:7;13792:16;13800:7;13792;:16::i;:::-;13784:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13872:15;:24;13888:7;13872:24;;;;;;;;;;;;;;;;;;;;;13865:31;;13688:216;;;:::o;8193:368::-;8274:13;8290:29;8311:7;8290:20;:29::i;:::-;8274:45;;8344:5;8338:11;;:2;:11;;;;8330:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8424:5;8408:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;8433:37;8450:5;8457:12;:10;:12::i;:::-;8433:16;:37::i;:::-;8408:62;8400:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;8532:21;8541:2;8545:7;8532:8;:21::i;:::-;8263:298;8193:368;;:::o;14606:122::-;14667:7;14711:9;;14694:7;:14;;;;:26;;;;:::i;:::-;14687:33;;14606:122;:::o;8880:246::-;8988:41;9007:12;:10;:12::i;:::-;9021:7;8988:18;:41::i;:::-;8980:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;9090:28;9100:4;9106:2;9110:7;9090:9;:28::i;:::-;8880:246;;;:::o;15383:503::-;15472:15;15516:29;15539:5;15516:22;:29::i;:::-;15508:5;:37;15500:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15581:10;15609:6;15604:226;15621:7;:14;;;;15617:1;:18;15604:226;;;15670:7;15678:1;15670:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15661:19;;:5;:19;;;15657:162;;;15714:5;15705;:14;15701:102;;;15750:1;15743:8;;;;;;15701:102;15796:7;;;;:::i;:::-;;;15657:162;15637:3;;;;:::i;:::-;;;15604:226;;;;15848:5;15840:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15489:397;15383:503;;;;;:::o;22699:25::-;;;;;;;;;;;;;:::o;9134:151::-;9238:39;9255:4;9261:2;9265:7;9238:39;;;;;;;;;;;;:16;:39::i;:::-;9134:151;;;:::o;24775:122::-;24828:41;24847:12;:10;:12::i;:::-;24861:7;24828:18;:41::i;:::-;24820:50;;;;;;24877:14;24883:7;24877:5;:14::i;:::-;24775:122;:::o;15894:194::-;15969:7;16005:27;:25;:27::i;:::-;15997:5;:35;15989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16075:5;16068:12;;15894:194;;;:::o;24455:100::-;16474:12;:10;:12::i;:::-;16463:23;;:7;:5;:7::i;:::-;:23;;;16455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24538:11:::1;24528:7;:21;;;;;;;;;;;;:::i;:::-;;24455:100:::0;:::o;13221:239::-;13293:7;13313:13;13329:7;13337;13329:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13313:32;;13381:1;13364:19;;:5;:19;;;;13356:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13447:5;13440:12;;;13221:239;;;:::o;22673:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12806:407::-;12878:7;12923:1;12906:19;;:5;:19;;;;12898:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12979:10;13004:11;13018:7;:14;;;;13004:28;;13047:6;13043:116;13063:6;13059:1;:10;13043:116;;;13100:7;13108:1;13100:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13091:19;;:5;:19;;;13088:60;;;13127:7;;;;;:::i;:::-;;;;13088:60;13071:3;;;;;:::i;:::-;;;;13043:116;;;;13169:13;;;13200:5;13193:12;;;;12806:407;;;:::o;16551:94::-;16474:12;:10;:12::i;:::-;16463:23;;:7;:5;:7::i;:::-;:23;;;16455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16616:21:::1;16634:1;16616:9;:21::i;:::-;16551:94::o:0;24561:99::-;16474:12;:10;:12::i;:::-;16463:23;;:7;:5;:7::i;:::-;:23;;;16455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24639:15:::1;24633:3;;:21;;;;;;;;;;;;;;;;;;24561:99:::0;:::o;14736:102::-;14789:7;14816;:14;;;;14809:21;;14736:102;:::o;14950:425::-;15009:16;15050:29;15073:5;15050:22;:29::i;:::-;15046:1;:33;15038:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15117:18;15138:16;15148:5;15138:9;:16::i;:::-;15117:37;;15165:25;15207:10;15193:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15165:53;;15236:9;15231:111;15255:10;15251:1;:14;15231:111;;;15301:29;15321:5;15328:1;15301:19;:29::i;:::-;15287:8;15296:1;15287:11;;;;;;;;:::i;:::-;;;;;;;:43;;;;;15267:3;;;;;:::i;:::-;;;;15231:111;;;;15359:8;15352:15;;;;14950:425;;;:::o;16328:87::-;16374:7;16401:6;;;;;;;;;;;16394:13;;16328:87;:::o;13576:104::-;13632:13;13665:7;13658:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13576:104;:::o;23094:562::-;23033:10;23020:23;;:9;:23;;;23012:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23196:16:::1;;;;;;;;;;;23188:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23264:14;23281:12;:10;:12::i;:::-;23264:29;;23308:3;;;;;;;;;;;:20;;;23329:6;23337:10;;;;;;;;;;;23308:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23300:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;23439:6;23414:31;;:3;;;;;;;;;;;:11;;;23426:8;23414:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;;:67;;;;;23475:6;23449:32;;:3;;;;;;;;;;;:11;;;23461:9;23449:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;;;23414:67;23406:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;23525:14;23542;:12;:14::i;:::-;23525:31;;23566:3;;;;;;;;;;;:8;;;23575;23566:18;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23591:3;;;;;;;;;;;:8;;;23600:9;23591:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23619:29;23629:6;23637;23619:29;;;;;;;;;;;::::0;:9:::1;:29::i;:::-;23181:475;;23094:562:::0;;:::o;8569:303::-;8684:12;:10;:12::i;:::-;8672:24;;:8;:24;;;;8664:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8792:8;8747:18;:32;8766:12;:10;:12::i;:::-;8747:32;;;;;;;;;;;;;;;:42;8780:8;8747:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;8845:8;8816:48;;8831:12;:10;:12::i;:::-;8816:48;;;8855:8;8816:48;;;;;;:::i;:::-;;;;;;;;8569:303;;:::o;9293:285::-;9425:41;9444:12;:10;:12::i;:::-;9458:7;9425:18;:41::i;:::-;9417:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;9531:39;9545:4;9551:2;9555:7;9564:5;9531:13;:39::i;:::-;9293:285;;;;:::o;24666:103::-;16474:12;:10;:12::i;:::-;16463:23;;:7;:5;:7::i;:::-;:23;;;16455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24757:6:::1;24738:16;;:25;;;;;;;;;;;;;;;;;;24666:103:::0;:::o;23662:787::-;23033:10;23020:23;;:9;:23;;;23012:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23755:16:::1;;;;;;;;;;;23747:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23850:1;23845;23831:4;:11;:15;;;;:::i;:::-;:20;23823:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23894:14;23911:12;:10;:12::i;:::-;23894:29;;23938:3;;;;;;;;;;;:20;;;23959:6;23967:10;;;;;;;;;;;23938:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23930:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;24036:14;24053;:12;:14::i;:::-;24036:31;;24081:9;24076:366;24100:4;:11;24096:1;:15;24076:366;;;24134:16;24153:4;24158:1;24153:7;;;;;;;;:::i;:::-;;;;;;;;24134:26;;24171:17;24191:4;24200:1;24196;:5;;;;:::i;:::-;24191:11;;;;;;;;:::i;:::-;;;;;;;;24171:31;;24246:6;24221:31;;:3;;;;;;;;;;;:11;;;24233:8;24221:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;;:67;;;;;24282:6;24256:32;;:3;;;;;;;;;;;:11;;;24268:9;24256:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;;;24221:67;24213:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;24338:3;;;;;;;;;;;:8;;;24347;24338:18;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24367:3;;;;;;;;;;;:8;;;24376:9;24367:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24399:35;24409:6;24428:1;24426;:3;;;;:::i;:::-;24417:6;:12;;;;:::i;:::-;24399:35;;;;;;;;;;;::::0;:9:::1;:35::i;:::-;24121:321;;24118:1;24113:6;;;;;:::i;:::-;;;24076:366;;;;23740:709;;23662:787:::0;:::o;25450:140::-;25519:4;25542:3;;;;;;;;;;;:20;;;25563:8;25573:10;;;;;;;;;;;25542:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25535:49;;25450:140;;;:::o;25036:305::-;25109:13;25136:16;25144:7;25136;:16::i;:::-;25128:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;25183:28;25214:10;:8;:10::i;:::-;25183:41;;25266:1;25241:14;25235:28;:32;:100;;;;;;;;;;;;;;;;;25294:14;25310:18;:7;:16;:18::i;:::-;25277:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25235:100;25228:107;;;25036:305;;;:::o;25347:97::-;25399:4;25422:16;;;;;;;;;;;25415:23;;25347:97;:::o;14846:96::-;14898:7;14925:9;;14918:16;;14846:96;:::o;25596:331::-;25687:15;25740:42;25719:64;;:9;:64;;;25715:131;;;25830:4;25823:11;;;;25715:131;25873:48;25903:6;25911:9;25873:29;:48::i;:::-;25866:55;;25596:331;;;;;:::o;16653:192::-;16474:12;:10;:12::i;:::-;16463:23;;:7;:5;:7::i;:::-;:23;;;16455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16762:1:::1;16742:22;;:8;:22;;;;16734:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16818:19;16828:8;16818:9;:19::i;:::-;16653:192:::0;:::o;22729:15::-;;;;;;;;;;;;;:::o;7503:157::-;7588:4;7627:25;7612:40;;;:11;:40;;;;7605:47;;7503:157;;;:::o;14084:155::-;14149:4;14183:7;:14;;;;14173:7;:24;:58;;;;;14229:1;14201:30;;:7;14209;14201:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;;14173:58;14166:65;;14084:155;;;:::o;2043:98::-;2096:7;2123:10;2116:17;;2043:98;:::o;11290:180::-;11392:2;11365:15;:24;11381:7;11365:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11454:7;11450:2;11410:52;;11419:29;11440:7;11419:20;:29::i;:::-;11410:52;;;;;;;;;;;;11290:180;;:::o;14247:351::-;14340:4;14365:16;14373:7;14365;:16::i;:::-;14357:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14438:13;14454:29;14475:7;14454:20;:29::i;:::-;14438:45;;14513:5;14502:16;;:7;:16;;;:51;;;;14546:7;14522:31;;:20;14534:7;14522:11;:20::i;:::-;:31;;;14502:51;:87;;;;14557:32;14574:5;14581:7;14557:16;:32::i;:::-;14502:87;14494:96;;;14247:351;;;;:::o;10872:413::-;11003:4;10970:37;;:29;10991:7;10970:20;:29::i;:::-;:37;;;10962:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11070:1;11056:16;;:2;:16;;;;11048:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11121:39;11142:4;11148:2;11152:7;11121:20;:39::i;:::-;11171:29;11188:1;11192:7;11171:8;:29::i;:::-;11230:2;11211:7;11219;11211:16;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11269:7;11265:2;11250:27;;11259:4;11250:27;;;;;;;;;;;;10872:413;;;:::o;10537:330::-;10597:13;10613:29;10634:7;10613:20;:29::i;:::-;10597:45;;10655:48;10676:5;10691:1;10695:7;10655:20;:48::i;:::-;10714:29;10731:1;10735:7;10714:8;:29::i;:::-;10781:1;10754:7;10762;10754:16;;;;;;;;:::i;:::-;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;10794:9;;:11;;;;;;;;;:::i;:::-;;;;;;10851:7;10847:1;10823:36;;10832:5;10823:36;;;;;;;;;;;;10586:281;10537:330;:::o;16853:173::-;16909:16;16928:6;;;;;;;;;;;16909:25;;16954:8;16945:6;;:17;;;;;;;;;;;;;;;;;;17009:8;16978:40;;16999:8;16978:40;;;;;;;;;;;;16898:128;16853:173;:::o;9957:231::-;10053:18;10059:2;10063:7;10053:5;:18::i;:::-;10090:54;10121:1;10125:2;10129:7;10138:5;10090:22;:54::i;:::-;10082:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;9957:231;;;:::o;9586:253::-;9700:28;9710:4;9716:2;9720:7;9700:9;:28::i;:::-;9747:48;9770:4;9776:2;9780:7;9789:5;9747:22;:48::i;:::-;9739:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;9586:253;;;;:::o;24940:90::-;24991:13;25017:7;25010:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24940:90;:::o;251:723::-;307:13;537:1;528:5;:10;524:53;;;555:10;;;;;;;;;;;;;;;;;;;;;524:53;587:12;602:5;587:20;;618:14;643:78;658:1;650:4;:9;643:78;;676:8;;;;;:::i;:::-;;;;707:2;699:10;;;;;:::i;:::-;;;643:78;;;731:19;763:6;753:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;731:39;;781:154;797:1;788:5;:10;781:154;;825:1;815:11;;;;;:::i;:::-;;;892:2;884:5;:10;;;;:::i;:::-;871:2;:24;;;;:::i;:::-;858:39;;841:6;848;841:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;921:2;912:11;;;;;:::i;:::-;;;781:154;;;959:6;945:21;;;;;251:723;;;;:::o;13912:164::-;14009:4;14033:18;:25;14052:5;14033:25;;;;;;;;;;;;;;;:35;14059:8;14033:35;;;;;;;;;;;;;;;;;;;;;;;;;14026:42;;13912:164;;;;:::o;12333:92::-;;;;:::o;10191:341::-;10272:16;10280:7;10272;:16::i;:::-;10271:17;10263:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10346:1;10332:16;;:2;:16;;;;10324:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10401:45;10430:1;10434:2;10438:7;10401:20;:45::i;:::-;10457:7;10470:2;10457:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10516:7;10512:2;10491:33;;10508:1;10491:33;;;;;;;;;;;;10191:341;;:::o;11475:756::-;11587:4;11608:15;:2;:13;;;:15::i;:::-;11604:620;;;11660:2;11644:36;;;11681:12;:10;:12::i;:::-;11695:4;11701:7;11710:5;11644:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11640:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11903:1;11886:6;:13;:18;11882:272;;;11929:60;;;;;;;;;;:::i;:::-;;;;;;;;11882:272;12104:6;12098:13;12089:6;12085:2;12081:15;12074:38;11640:529;11777:41;;;11767:51;;;:6;:51;;;;11760:58;;;;;11604:620;12208:4;12201:11;;11475:756;;;;;;;:::o;2283:198::-;2343:4;2362:12;2429:7;2417:20;2409:28;;2472:1;2465:4;:8;2458:15;;;2283:198;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:619::-;5367:6;5375;5383;5432:2;5420:9;5411:7;5407:23;5403:32;5400:119;;;5438:79;;:::i;:::-;5400:119;5558:1;5583:53;5628:7;5619:6;5608:9;5604:22;5583:53;:::i;:::-;5573:63;;5529:117;5685:2;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5656:118;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5290:619;;;;;:::o;5915:117::-;6024:1;6021;6014:12;6038:117;6147:1;6144;6137:12;6161:180;6209:77;6206:1;6199:88;6306:4;6303:1;6296:15;6330:4;6327:1;6320:15;6347:281;6430:27;6452:4;6430:27;:::i;:::-;6422:6;6418:40;6560:6;6548:10;6545:22;6524:18;6512:10;6509:34;6506:62;6503:88;;;6571:18;;:::i;:::-;6503:88;6611:10;6607:2;6600:22;6390:238;6347:281;;:::o;6634:129::-;6668:6;6695:20;;:::i;:::-;6685:30;;6724:33;6752:4;6744:6;6724:33;:::i;:::-;6634:129;;;:::o;6769:308::-;6831:4;6921:18;6913:6;6910:30;6907:56;;;6943:18;;:::i;:::-;6907:56;6981:29;7003:6;6981:29;:::i;:::-;6973:37;;7065:4;7059;7055:15;7047:23;;6769:308;;;:::o;7083:154::-;7167:6;7162:3;7157;7144:30;7229:1;7220:6;7215:3;7211:16;7204:27;7083:154;;;:::o;7243:412::-;7321:5;7346:66;7362:49;7404:6;7362:49;:::i;:::-;7346:66;:::i;:::-;7337:75;;7435:6;7428:5;7421:21;7473:4;7466:5;7462:16;7511:3;7502:6;7497:3;7493:16;7490:25;7487:112;;;7518:79;;:::i;:::-;7487:112;7608:41;7642:6;7637:3;7632;7608:41;:::i;:::-;7327:328;7243:412;;;;;:::o;7675:340::-;7731:5;7780:3;7773:4;7765:6;7761:17;7757:27;7747:122;;7788:79;;:::i;:::-;7747:122;7905:6;7892:20;7930:79;8005:3;7997:6;7990:4;7982:6;7978:17;7930:79;:::i;:::-;7921:88;;7737:278;7675:340;;;;:::o;8021:509::-;8090:6;8139:2;8127:9;8118:7;8114:23;8110:32;8107:119;;;8145:79;;:::i;:::-;8107:119;8293:1;8282:9;8278:17;8265:31;8323:18;8315:6;8312:30;8309:117;;;8345:79;;:::i;:::-;8309:117;8450:63;8505:7;8496:6;8485:9;8481:22;8450:63;:::i;:::-;8440:73;;8236:287;8021:509;;;;:::o;8536:329::-;8595:6;8644:2;8632:9;8623:7;8619:23;8615:32;8612:119;;;8650:79;;:::i;:::-;8612:119;8770:1;8795:53;8840:7;8831:6;8820:9;8816:22;8795:53;:::i;:::-;8785:63;;8741:117;8536:329;;;;:::o;8871:109::-;8921:7;8950:24;8968:5;8950:24;:::i;:::-;8939:35;;8871:109;;;:::o;8986:148::-;9072:37;9103:5;9072:37;:::i;:::-;9065:5;9062:48;9052:76;;9124:1;9121;9114:12;9052:76;8986:148;:::o;9140:165::-;9199:5;9237:6;9224:20;9215:29;;9253:46;9293:5;9253:46;:::i;:::-;9140:165;;;;:::o;9311:355::-;9383:6;9432:2;9420:9;9411:7;9407:23;9403:32;9400:119;;;9438:79;;:::i;:::-;9400:119;9558:1;9583:66;9641:7;9632:6;9621:9;9617:22;9583:66;:::i;:::-;9573:76;;9529:130;9311:355;;;;:::o;9672:114::-;9739:6;9773:5;9767:12;9757:22;;9672:114;;;:::o;9792:184::-;9891:11;9925:6;9920:3;9913:19;9965:4;9960:3;9956:14;9941:29;;9792:184;;;;:::o;9982:132::-;10049:4;10072:3;10064:11;;10102:4;10097:3;10093:14;10085:22;;9982:132;;;:::o;10120:108::-;10197:24;10215:5;10197:24;:::i;:::-;10192:3;10185:37;10120:108;;:::o;10234:179::-;10303:10;10324:46;10366:3;10358:6;10324:46;:::i;:::-;10402:4;10397:3;10393:14;10379:28;;10234:179;;;;:::o;10419:113::-;10489:4;10521;10516:3;10512:14;10504:22;;10419:113;;;:::o;10568:732::-;10687:3;10716:54;10764:5;10716:54;:::i;:::-;10786:86;10865:6;10860:3;10786:86;:::i;:::-;10779:93;;10896:56;10946:5;10896:56;:::i;:::-;10975:7;11006:1;10991:284;11016:6;11013:1;11010:13;10991:284;;;11092:6;11086:13;11119:63;11178:3;11163:13;11119:63;:::i;:::-;11112:70;;11205:60;11258:6;11205:60;:::i;:::-;11195:70;;11051:224;11038:1;11035;11031:9;11026:14;;10991:284;;;10995:14;11291:3;11284:10;;10692:608;;;10568:732;;;;:::o;11306:373::-;11449:4;11487:2;11476:9;11472:18;11464:26;;11536:9;11530:4;11526:20;11522:1;11511:9;11507:17;11500:47;11564:108;11667:4;11658:6;11564:108;:::i;:::-;11556:116;;11306:373;;;;:::o;11685:474::-;11753:6;11761;11810:2;11798:9;11789:7;11785:23;11781:32;11778:119;;;11816:79;;:::i;:::-;11778:119;11936:1;11961:53;12006:7;11997:6;11986:9;11982:22;11961:53;:::i;:::-;11951:63;;11907:117;12063:2;12089:53;12134:7;12125:6;12114:9;12110:22;12089:53;:::i;:::-;12079:63;;12034:118;11685:474;;;;;:::o;12165:116::-;12235:21;12250:5;12235:21;:::i;:::-;12228:5;12225:32;12215:60;;12271:1;12268;12261:12;12215:60;12165:116;:::o;12287:133::-;12330:5;12368:6;12355:20;12346:29;;12384:30;12408:5;12384:30;:::i;:::-;12287:133;;;;:::o;12426:468::-;12491:6;12499;12548:2;12536:9;12527:7;12523:23;12519:32;12516:119;;;12554:79;;:::i;:::-;12516:119;12674:1;12699:53;12744:7;12735:6;12724:9;12720:22;12699:53;:::i;:::-;12689:63;;12645:117;12801:2;12827:50;12869:7;12860:6;12849:9;12845:22;12827:50;:::i;:::-;12817:60;;12772:115;12426:468;;;;;:::o;12900:307::-;12961:4;13051:18;13043:6;13040:30;13037:56;;;13073:18;;:::i;:::-;13037:56;13111:29;13133:6;13111:29;:::i;:::-;13103:37;;13195:4;13189;13185:15;13177:23;;12900:307;;;:::o;13213:410::-;13290:5;13315:65;13331:48;13372:6;13331:48;:::i;:::-;13315:65;:::i;:::-;13306:74;;13403:6;13396:5;13389:21;13441:4;13434:5;13430:16;13479:3;13470:6;13465:3;13461:16;13458:25;13455:112;;;13486:79;;:::i;:::-;13455:112;13576:41;13610:6;13605:3;13600;13576:41;:::i;:::-;13296:327;13213:410;;;;;:::o;13642:338::-;13697:5;13746:3;13739:4;13731:6;13727:17;13723:27;13713:122;;13754:79;;:::i;:::-;13713:122;13871:6;13858:20;13896:78;13970:3;13962:6;13955:4;13947:6;13943:17;13896:78;:::i;:::-;13887:87;;13703:277;13642:338;;;;:::o;13986:943::-;14081:6;14089;14097;14105;14154:3;14142:9;14133:7;14129:23;14125:33;14122:120;;;14161:79;;:::i;:::-;14122:120;14281:1;14306:53;14351:7;14342:6;14331:9;14327:22;14306:53;:::i;:::-;14296:63;;14252:117;14408:2;14434:53;14479:7;14470:6;14459:9;14455:22;14434:53;:::i;:::-;14424:63;;14379:118;14536:2;14562:53;14607:7;14598:6;14587:9;14583:22;14562:53;:::i;:::-;14552:63;;14507:118;14692:2;14681:9;14677:18;14664:32;14723:18;14715:6;14712:30;14709:117;;;14745:79;;:::i;:::-;14709:117;14850:62;14904:7;14895:6;14884:9;14880:22;14850:62;:::i;:::-;14840:72;;14635:287;13986:943;;;;;;;:::o;14935:323::-;14991:6;15040:2;15028:9;15019:7;15015:23;15011:32;15008:119;;;15046:79;;:::i;:::-;15008:119;15166:1;15191:50;15233:7;15224:6;15213:9;15209:22;15191:50;:::i;:::-;15181:60;;15137:114;14935:323;;;;:::o;15264:311::-;15341:4;15431:18;15423:6;15420:30;15417:56;;;15453:18;;:::i;:::-;15417:56;15503:4;15495:6;15491:17;15483:25;;15563:4;15557;15553:15;15545:23;;15264:311;;;:::o;15581:117::-;15690:1;15687;15680:12;15721:710;15817:5;15842:81;15858:64;15915:6;15858:64;:::i;:::-;15842:81;:::i;:::-;15833:90;;15943:5;15972:6;15965:5;15958:21;16006:4;15999:5;15995:16;15988:23;;16059:4;16051:6;16047:17;16039:6;16035:30;16088:3;16080:6;16077:15;16074:122;;;16107:79;;:::i;:::-;16074:122;16222:6;16205:220;16239:6;16234:3;16231:15;16205:220;;;16314:3;16343:37;16376:3;16364:10;16343:37;:::i;:::-;16338:3;16331:50;16410:4;16405:3;16401:14;16394:21;;16281:144;16265:4;16260:3;16256:14;16249:21;;16205:220;;;16209:21;15823:608;;15721:710;;;;;:::o;16454:370::-;16525:5;16574:3;16567:4;16559:6;16555:17;16551:27;16541:122;;16582:79;;:::i;:::-;16541:122;16699:6;16686:20;16724:94;16814:3;16806:6;16799:4;16791:6;16787:17;16724:94;:::i;:::-;16715:103;;16531:293;16454:370;;;;:::o;16830:539::-;16914:6;16963:2;16951:9;16942:7;16938:23;16934:32;16931:119;;;16969:79;;:::i;:::-;16931:119;17117:1;17106:9;17102:17;17089:31;17147:18;17139:6;17136:30;17133:117;;;17169:79;;:::i;:::-;17133:117;17274:78;17344:7;17335:6;17324:9;17320:22;17274:78;:::i;:::-;17264:88;;17060:302;16830:539;;;;:::o;17375:474::-;17443:6;17451;17500:2;17488:9;17479:7;17475:23;17471:32;17468:119;;;17506:79;;:::i;:::-;17468:119;17626:1;17651:53;17696:7;17687:6;17676:9;17672:22;17651:53;:::i;:::-;17641:63;;17597:117;17753:2;17779:53;17824:7;17815:6;17804:9;17800:22;17779:53;:::i;:::-;17769:63;;17724:118;17375:474;;;;;:::o;17855:60::-;17883:3;17904:5;17897:12;;17855:60;;;:::o;17921:142::-;17971:9;18004:53;18022:34;18031:24;18049:5;18031:24;:::i;:::-;18022:34;:::i;:::-;18004:53;:::i;:::-;17991:66;;17921:142;;;:::o;18069:126::-;18119:9;18152:37;18183:5;18152:37;:::i;:::-;18139:50;;18069:126;;;:::o;18201:139::-;18264:9;18297:37;18328:5;18297:37;:::i;:::-;18284:50;;18201:139;;;:::o;18346:157::-;18446:50;18490:5;18446:50;:::i;:::-;18441:3;18434:63;18346:157;;:::o;18509:248::-;18615:4;18653:2;18642:9;18638:18;18630:26;;18666:84;18747:1;18736:9;18732:17;18723:6;18666:84;:::i;:::-;18509:248;;;;:::o;18763:180::-;18811:77;18808:1;18801:88;18908:4;18905:1;18898:15;18932:4;18929:1;18922:15;18949:320;18993:6;19030:1;19024:4;19020:12;19010:22;;19077:1;19071:4;19067:12;19098:18;19088:81;;19154:4;19146:6;19142:17;19132:27;;19088:81;19216:2;19208:6;19205:14;19185:18;19182:38;19179:84;;;19235:18;;:::i;:::-;19179:84;19000:269;18949:320;;;:::o;19275:228::-;19415:34;19411:1;19403:6;19399:14;19392:58;19484:11;19479:2;19471:6;19467:15;19460:36;19275:228;:::o;19509:366::-;19651:3;19672:67;19736:2;19731:3;19672:67;:::i;:::-;19665:74;;19748:93;19837:3;19748:93;:::i;:::-;19866:2;19861:3;19857:12;19850:19;;19509:366;;;:::o;19881:419::-;20047:4;20085:2;20074:9;20070:18;20062:26;;20134:9;20128:4;20124:20;20120:1;20109:9;20105:17;20098:47;20162:131;20288:4;20162:131;:::i;:::-;20154:139;;19881:419;;;:::o;20306:222::-;20446:34;20442:1;20434:6;20430:14;20423:58;20515:5;20510:2;20502:6;20498:15;20491:30;20306:222;:::o;20534:366::-;20676:3;20697:67;20761:2;20756:3;20697:67;:::i;:::-;20690:74;;20773:93;20862:3;20773:93;:::i;:::-;20891:2;20886:3;20882:12;20875:19;;20534:366;;;:::o;20906:419::-;21072:4;21110:2;21099:9;21095:18;21087:26;;21159:9;21153:4;21149:20;21145:1;21134:9;21130:17;21123:47;21187:131;21313:4;21187:131;:::i;:::-;21179:139;;20906:419;;;:::o;21331:231::-;21471:34;21467:1;21459:6;21455:14;21448:58;21540:14;21535:2;21527:6;21523:15;21516:39;21331:231;:::o;21568:366::-;21710:3;21731:67;21795:2;21790:3;21731:67;:::i;:::-;21724:74;;21807:93;21896:3;21807:93;:::i;:::-;21925:2;21920:3;21916:12;21909:19;;21568:366;;;:::o;21940:419::-;22106:4;22144:2;22133:9;22129:18;22121:26;;22193:9;22187:4;22183:20;22179:1;22168:9;22164:17;22157:47;22221:131;22347:4;22221:131;:::i;:::-;22213:139;;21940:419;;;:::o;22365:180::-;22413:77;22410:1;22403:88;22510:4;22507:1;22500:15;22534:4;22531:1;22524:15;22551:191;22591:4;22611:20;22629:1;22611:20;:::i;:::-;22606:25;;22645:20;22663:1;22645:20;:::i;:::-;22640:25;;22684:1;22681;22678:8;22675:34;;;22689:18;;:::i;:::-;22675:34;22734:1;22731;22727:9;22719:17;;22551:191;;;;:::o;22748:232::-;22888:34;22884:1;22876:6;22872:14;22865:58;22957:15;22952:2;22944:6;22940:15;22933:40;22748:232;:::o;22986:366::-;23128:3;23149:67;23213:2;23208:3;23149:67;:::i;:::-;23142:74;;23225:93;23314:3;23225:93;:::i;:::-;23343:2;23338:3;23334:12;23327:19;;22986:366;;;:::o;23358:419::-;23524:4;23562:2;23551:9;23547:18;23539:26;;23611:9;23605:4;23601:20;23597:1;23586:9;23582:17;23575:47;23639:131;23765:4;23639:131;:::i;:::-;23631:139;;23358:419;;;:::o;23783:170::-;23923:22;23919:1;23911:6;23907:14;23900:46;23783:170;:::o;23959:366::-;24101:3;24122:67;24186:2;24181:3;24122:67;:::i;:::-;24115:74;;24198:93;24287:3;24198:93;:::i;:::-;24316:2;24311:3;24307:12;24300:19;;23959:366;;;:::o;24331:419::-;24497:4;24535:2;24524:9;24520:18;24512:26;;24584:9;24578:4;24574:20;24570:1;24559:9;24555:17;24548:47;24612:131;24738:4;24612:131;:::i;:::-;24604:139;;24331:419;;;:::o;24756:180::-;24804:77;24801:1;24794:88;24901:4;24898:1;24891:15;24925:4;24922:1;24915:15;24942:233;24981:3;25004:24;25022:5;25004:24;:::i;:::-;24995:33;;25050:66;25043:5;25040:77;25037:103;;;25120:18;;:::i;:::-;25037:103;25167:1;25160:5;25156:13;25149:20;;24942:233;;;:::o;25181:182::-;25321:34;25317:1;25309:6;25305:14;25298:58;25181:182;:::o;25369:366::-;25511:3;25532:67;25596:2;25591:3;25532:67;:::i;:::-;25525:74;;25608:93;25697:3;25608:93;:::i;:::-;25726:2;25721:3;25717:12;25710:19;;25369:366;;;:::o;25741:419::-;25907:4;25945:2;25934:9;25930:18;25922:26;;25994:9;25988:4;25984:20;25980:1;25969:9;25965:17;25958:47;26022:131;26148:4;26022:131;:::i;:::-;26014:139;;25741:419;;;:::o;26166:225::-;26306:34;26302:1;26294:6;26290:14;26283:58;26375:8;26370:2;26362:6;26358:15;26351:33;26166:225;:::o;26397:366::-;26539:3;26560:67;26624:2;26619:3;26560:67;:::i;:::-;26553:74;;26636:93;26725:3;26636:93;:::i;:::-;26754:2;26749:3;26745:12;26738:19;;26397:366;;;:::o;26769:419::-;26935:4;26973:2;26962:9;26958:18;26950:26;;27022:9;27016:4;27012:20;27008:1;26997:9;26993:17;26986:47;27050:131;27176:4;27050:131;:::i;:::-;27042:139;;26769:419;;;:::o;27194:172::-;27334:24;27330:1;27322:6;27318:14;27311:48;27194:172;:::o;27372:366::-;27514:3;27535:67;27599:2;27594:3;27535:67;:::i;:::-;27528:74;;27611:93;27700:3;27611:93;:::i;:::-;27729:2;27724:3;27720:12;27713:19;;27372:366;;;:::o;27744:419::-;27910:4;27948:2;27937:9;27933:18;27925:26;;27997:9;27991:4;27987:20;27983:1;27972:9;27968:17;27961:47;28025:131;28151:4;28025:131;:::i;:::-;28017:139;;27744:419;;;:::o;28169:176::-;28309:28;28305:1;28297:6;28293:14;28286:52;28169:176;:::o;28351:366::-;28493:3;28514:67;28578:2;28573:3;28514:67;:::i;:::-;28507:74;;28590:93;28679:3;28590:93;:::i;:::-;28708:2;28703:3;28699:12;28692:19;;28351:366;;;:::o;28723:419::-;28889:4;28927:2;28916:9;28912:18;28904:26;;28976:9;28970:4;28966:20;28962:1;28951:9;28947:17;28940:47;29004:131;29130:4;29004:131;:::i;:::-;28996:139;;28723:419;;;:::o;29148:227::-;29288:34;29284:1;29276:6;29272:14;29265:58;29357:10;29352:2;29344:6;29340:15;29333:35;29148:227;:::o;29381:366::-;29523:3;29544:67;29608:2;29603:3;29544:67;:::i;:::-;29537:74;;29620:93;29709:3;29620:93;:::i;:::-;29738:2;29733:3;29729:12;29722:19;;29381:366;;;:::o;29753:419::-;29919:4;29957:2;29946:9;29942:18;29934:26;;30006:9;30000:4;29996:20;29992:1;29981:9;29977:17;29970:47;30034:131;30160:4;30034:131;:::i;:::-;30026:139;;29753:419;;;:::o;30178:332::-;30299:4;30337:2;30326:9;30322:18;30314:26;;30350:71;30418:1;30407:9;30403:17;30394:6;30350:71;:::i;:::-;30431:72;30499:2;30488:9;30484:18;30475:6;30431:72;:::i;:::-;30178:332;;;;;:::o;30516:137::-;30570:5;30601:6;30595:13;30586:22;;30617:30;30641:5;30617:30;:::i;:::-;30516:137;;;;:::o;30659:345::-;30726:6;30775:2;30763:9;30754:7;30750:23;30746:32;30743:119;;;30781:79;;:::i;:::-;30743:119;30901:1;30926:61;30979:7;30970:6;30959:9;30955:22;30926:61;:::i;:::-;30916:71;;30872:125;30659:345;;;;:::o;31010:233::-;31150:34;31146:1;31138:6;31134:14;31127:58;31219:16;31214:2;31206:6;31202:15;31195:41;31010:233;:::o;31249:366::-;31391:3;31412:67;31476:2;31471:3;31412:67;:::i;:::-;31405:74;;31488:93;31577:3;31488:93;:::i;:::-;31606:2;31601:3;31597:12;31590:19;;31249:366;;;:::o;31621:419::-;31787:4;31825:2;31814:9;31810:18;31802:26;;31874:9;31868:4;31864:20;31860:1;31849:9;31845:17;31838:47;31902:131;32028:4;31902:131;:::i;:::-;31894:139;;31621:419;;;:::o;32046:143::-;32103:5;32134:6;32128:13;32119:22;;32150:33;32177:5;32150:33;:::i;:::-;32046:143;;;;:::o;32195:351::-;32265:6;32314:2;32302:9;32293:7;32289:23;32285:32;32282:119;;;32320:79;;:::i;:::-;32282:119;32440:1;32465:64;32521:7;32512:6;32501:9;32497:22;32465:64;:::i;:::-;32455:74;;32411:128;32195:351;;;;:::o;32552:182::-;32692:34;32688:1;32680:6;32676:14;32669:58;32552:182;:::o;32740:366::-;32882:3;32903:67;32967:2;32962:3;32903:67;:::i;:::-;32896:74;;32979:93;33068:3;32979:93;:::i;:::-;33097:2;33092:3;33088:12;33081:19;;32740:366;;;:::o;33112:419::-;33278:4;33316:2;33305:9;33301:18;33293:26;;33365:9;33359:4;33355:20;33351:1;33340:9;33336:17;33329:47;33393:131;33519:4;33393:131;:::i;:::-;33385:139;;33112:419;;;:::o;33537:236::-;33677:34;33673:1;33665:6;33661:14;33654:58;33746:19;33741:2;33733:6;33729:15;33722:44;33537:236;:::o;33779:366::-;33921:3;33942:67;34006:2;34001:3;33942:67;:::i;:::-;33935:74;;34018:93;34107:3;34018:93;:::i;:::-;34136:2;34131:3;34127:12;34120:19;;33779:366;;;:::o;34151:419::-;34317:4;34355:2;34344:9;34340:18;34332:26;;34404:9;34398:4;34394:20;34390:1;34379:9;34375:17;34368:47;34432:131;34558:4;34432:131;:::i;:::-;34424:139;;34151:419;;;:::o;34576:180::-;34624:77;34621:1;34614:88;34721:4;34718:1;34711:15;34745:4;34742:1;34735:15;34762:176;34794:1;34811:20;34829:1;34811:20;:::i;:::-;34806:25;;34845:20;34863:1;34845:20;:::i;:::-;34840:25;;34884:1;34874:35;;34889:18;;:::i;:::-;34874:35;34930:1;34927;34923:9;34918:14;;34762:176;;;;:::o;34944:181::-;35084:33;35080:1;35072:6;35068:14;35061:57;34944:181;:::o;35131:366::-;35273:3;35294:67;35358:2;35353:3;35294:67;:::i;:::-;35287:74;;35370:93;35459:3;35370:93;:::i;:::-;35488:2;35483:3;35479:12;35472:19;;35131:366;;;:::o;35503:419::-;35669:4;35707:2;35696:9;35692:18;35684:26;;35756:9;35750:4;35746:20;35742:1;35731:9;35727:17;35720:47;35784:131;35910:4;35784:131;:::i;:::-;35776:139;;35503:419;;;:::o;35928:305::-;35968:3;35987:20;36005:1;35987:20;:::i;:::-;35982:25;;36021:20;36039:1;36021:20;:::i;:::-;36016:25;;36175:1;36107:66;36103:74;36100:1;36097:81;36094:107;;;36181:18;;:::i;:::-;36094:107;36225:1;36222;36218:9;36211:16;;35928:305;;;;:::o;36239:185::-;36279:1;36296:20;36314:1;36296:20;:::i;:::-;36291:25;;36330:20;36348:1;36330:20;:::i;:::-;36325:25;;36369:1;36359:35;;36374:18;;:::i;:::-;36359:35;36416:1;36413;36409:9;36404:14;;36239:185;;;;:::o;36430:148::-;36532:11;36569:3;36554:18;;36430:148;;;;:::o;36584:377::-;36690:3;36718:39;36751:5;36718:39;:::i;:::-;36773:89;36855:6;36850:3;36773:89;:::i;:::-;36766:96;;36871:52;36916:6;36911:3;36904:4;36897:5;36893:16;36871:52;:::i;:::-;36948:6;36943:3;36939:16;36932:23;;36694:267;36584:377;;;;:::o;36967:435::-;37147:3;37169:95;37260:3;37251:6;37169:95;:::i;:::-;37162:102;;37281:95;37372:3;37363:6;37281:95;:::i;:::-;37274:102;;37393:3;37386:10;;36967:435;;;;;:::o;37408:225::-;37548:34;37544:1;37536:6;37532:14;37525:58;37617:8;37612:2;37604:6;37600:15;37593:33;37408:225;:::o;37639:366::-;37781:3;37802:67;37866:2;37861:3;37802:67;:::i;:::-;37795:74;;37878:93;37967:3;37878:93;:::i;:::-;37996:2;37991:3;37987:12;37980:19;;37639:366;;;:::o;38011:419::-;38177:4;38215:2;38204:9;38200:18;38192:26;;38264:9;38258:4;38254:20;38250:1;38239:9;38235:17;38228:47;38292:131;38418:4;38292:131;:::i;:::-;38284:139;;38011:419;;;:::o;38436:175::-;38576:27;38572:1;38564:6;38560:14;38553:51;38436:175;:::o;38617:366::-;38759:3;38780:67;38844:2;38839:3;38780:67;:::i;:::-;38773:74;;38856:93;38945:3;38856:93;:::i;:::-;38974:2;38969:3;38965:12;38958:19;;38617:366;;;:::o;38989:419::-;39155:4;39193:2;39182:9;39178:18;39170:26;;39242:9;39236:4;39232:20;39228:1;39217:9;39213:17;39206:47;39270:131;39396:4;39270:131;:::i;:::-;39262:139;;38989:419;;;:::o;39414:181::-;39554:33;39550:1;39542:6;39538:14;39531:57;39414:181;:::o;39601:366::-;39743:3;39764:67;39828:2;39823:3;39764:67;:::i;:::-;39757:74;;39840:93;39929:3;39840:93;:::i;:::-;39958:2;39953:3;39949:12;39942:19;;39601:366;;;:::o;39973:419::-;40139:4;40177:2;40166:9;40162:18;40154:26;;40226:9;40220:4;40216:20;40212:1;40201:9;40197:17;40190:47;40254:131;40380:4;40254:131;:::i;:::-;40246:139;;39973:419;;;:::o;40398:181::-;40538:33;40534:1;40526:6;40522:14;40515:57;40398:181;:::o;40585:366::-;40727:3;40748:67;40812:2;40807:3;40748:67;:::i;:::-;40741:74;;40824:93;40913:3;40824:93;:::i;:::-;40942:2;40937:3;40933:12;40926:19;;40585:366;;;:::o;40957:419::-;41123:4;41161:2;41150:9;41146:18;41138:26;;41210:9;41204:4;41200:20;41196:1;41185:9;41181:17;41174:47;41238:131;41364:4;41238:131;:::i;:::-;41230:139;;40957:419;;;:::o;41382:170::-;41522:22;41518:1;41510:6;41506:14;41499:46;41382:170;:::o;41558:366::-;41700:3;41721:67;41785:2;41780:3;41721:67;:::i;:::-;41714:74;;41797:93;41886:3;41797:93;:::i;:::-;41915:2;41910:3;41906:12;41899:19;;41558:366;;;:::o;41930:419::-;42096:4;42134:2;42123:9;42119:18;42111:26;;42183:9;42177:4;42173:20;42169:1;42158:9;42154:17;42147:47;42211:131;42337:4;42211:131;:::i;:::-;42203:139;;41930:419;;;:::o;42355:177::-;42495:29;42491:1;42483:6;42479:14;42472:53;42355:177;:::o;42538:366::-;42680:3;42701:67;42765:2;42760:3;42701:67;:::i;:::-;42694:74;;42777:93;42866:3;42777:93;:::i;:::-;42895:2;42890:3;42886:12;42879:19;;42538:366;;;:::o;42910:419::-;43076:4;43114:2;43103:9;43099:18;43091:26;;43163:9;43157:4;43153:20;43149:1;43138:9;43134:17;43127:47;43191:131;43317:4;43191:131;:::i;:::-;43183:139;;42910:419;;;:::o;43335:98::-;43386:6;43420:5;43414:12;43404:22;;43335:98;;;:::o;43439:168::-;43522:11;43556:6;43551:3;43544:19;43596:4;43591:3;43587:14;43572:29;;43439:168;;;;:::o;43613:360::-;43699:3;43727:38;43759:5;43727:38;:::i;:::-;43781:70;43844:6;43839:3;43781:70;:::i;:::-;43774:77;;43860:52;43905:6;43900:3;43893:4;43886:5;43882:16;43860:52;:::i;:::-;43937:29;43959:6;43937:29;:::i;:::-;43932:3;43928:39;43921:46;;43703:270;43613:360;;;;:::o;43979:640::-;44174:4;44212:3;44201:9;44197:19;44189:27;;44226:71;44294:1;44283:9;44279:17;44270:6;44226:71;:::i;:::-;44307:72;44375:2;44364:9;44360:18;44351:6;44307:72;:::i;:::-;44389;44457:2;44446:9;44442:18;44433:6;44389:72;:::i;:::-;44508:9;44502:4;44498:20;44493:2;44482:9;44478:18;44471:48;44536:76;44607:4;44598:6;44536:76;:::i;:::-;44528:84;;43979:640;;;;;;;:::o;44625:141::-;44681:5;44712:6;44706:13;44697:22;;44728:32;44754:5;44728:32;:::i;:::-;44625:141;;;;:::o;44772:349::-;44841:6;44890:2;44878:9;44869:7;44865:23;44861:32;44858:119;;;44896:79;;:::i;:::-;44858:119;45016:1;45041:63;45096:7;45087:6;45076:9;45072:22;45041:63;:::i;:::-;45031:73;;44987:127;44772:349;;;;:::o;45127:237::-;45267:34;45263:1;45255:6;45251:14;45244:58;45336:20;45331:2;45323:6;45319:15;45312:45;45127:237;:::o;45370:366::-;45512:3;45533:67;45597:2;45592:3;45533:67;:::i;:::-;45526:74;;45609:93;45698:3;45609:93;:::i;:::-;45727:2;45722:3;45718:12;45711:19;;45370:366;;;:::o;45742:419::-;45908:4;45946:2;45935:9;45931:18;45923:26;;45995:9;45989:4;45985:20;45981:1;45970:9;45966:17;45959:47;46023:131;46149:4;46023:131;:::i;:::-;46015:139;;45742:419;;;:::o

Swarm Source

ipfs://837f2b7bca8e71d2e4956bf990576d0fe70b3552ed52089c4a064547234647f9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.