Contract 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a9 2

Contract Overview

Balance:
0 HT

HT Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x10e7c22ca847f22bed4c2efd2aab91b7aaa64203734a8719666f29fa9ad285eaCreate User Orde...105946542021-12-05 4:19:5434 secs ago0x737349dbda996948b05a6ebaa4e729a272eb33fd IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00069412952.7
0xd78e6cc2cb502581d246d3063ca08c0b3c3cc1f52d597011bfcdb164d9980327Create User Orde...105946502021-12-05 4:19:4246 secs ago0xb2683b35c162e1788d98e2f679145038f5ec7ed3 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.0002155005 2.25
0x5dce55c1ed88bae078221e9abf1ce91c6b446388b7846a746ea75a5ebd4207f4Create User Orde...105946332021-12-05 4:18:511 min ago0x9681fe390555dd36f9e56b3c2c9bd9ea01e7ad83 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00057844125 2.25
0xdbb13afc1aa4ac52a174fa9dd797e0a42eae1e2e9004fec62d053ecce50915fdCreate User Orde...105946162021-12-05 4:18:002 mins ago0x9681fe390555dd36f9e56b3c2c9bd9ea01e7ad83 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00057844125 2.25
0x0caa5544e1782cd0bc0c3e2e663846cb8d286bc327c44e4c4797afdbc45cf3ffCreate User Orde...105945922021-12-05 4:16:483 mins ago0x5b592c8dd9000b70b2830eaddd72515d179a34db IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00057844125 2.25
0x2ff915f987283c3d8fca60f213a3e7bd50db80f91941f523f4e7610b225773d0Create User Orde...105945922021-12-05 4:16:483 mins ago0x0d73100111876dfd4226d345310b80f95b270440 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00069412952.7
0x1ae3be4fe14c7f2ab8a0dd451b09678ec8b83e591905920e45535b93e50b16b9Create User Orde...105945732021-12-05 4:15:514 mins ago0x5b592c8dd9000b70b2830eaddd72515d179a34db IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00057844125 2.25
0x87e45aeb948a31db7a2cc992a5ef59aae320a8fb8f24794320c826ed13cac819Create User Orde...105945582021-12-05 4:15:065 mins ago0xb2683b35c162e1788d98e2f679145038f5ec7ed3 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00022562325 2.25
0xd46dec8503c88f146832461741fe92aa3fc30490f570694fb796ccb4303800d3Create User Orde...105945562021-12-05 4:15:005 mins ago0x5b592c8dd9000b70b2830eaddd72515d179a34db IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00057844125 2.25
0xe5dc39ee13c7a8843f69a6a79edb06099725992da0680260794ade6cf3e54bc9Create User Orde...105945392021-12-05 4:14:096 mins ago0xb2683b35c162e1788d98e2f679145038f5ec7ed3 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00022562325 2.25
0x5217646f07cdf58e158a65dbd5d6565d97c300a916b1a12add89251af87f96bfBuy NFT Card V2105945102021-12-05 4:12:427 mins ago0xc088fee5b3bc47ad7fe651892358dac4238b7a33 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.000437874752.25
0x24bddc5b81fa070664c87f9ffb2f144de3b3c4e3bd1513b45efae438a4753a7fCreate User Orde...105945092021-12-05 4:12:397 mins ago0x54ff04a986028bef546cc5fad7550f860c50e985 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00057844125 2.25
0xcbbce7de39faa8b55aeb9a64a36e72e0dfcd8ee4880cdb2139e5b8a931c9d2f5Buy NFT Card V2105945062021-12-05 4:12:307 mins ago0xc088fee5b3bc47ad7fe651892358dac4238b7a33 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.000445164752.25
0x989dfcf750fa0600bff45e67b3c38db1cfe359a9609ac180008daf00d99b3f3cBuy NFT Card V2105945022021-12-05 4:12:188 mins ago0xc088fee5b3bc47ad7fe651892358dac4238b7a33 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.000445164752.25
0x9368c68174e79ab4c744d4df8961a78d11d9f94993dc16b6dbd64958fcdb2bf9Create User Orde...105944922021-12-05 4:11:488 mins ago0x56197ad05149288169ec7f906bbb6feae78ece1f IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00021547352.25
0x862e54a5d86b6bdbe54ce0bd5598a8c359e0261fbd135fd7a81b965f882f10adCreate User Orde...105944912021-12-05 4:11:458 mins ago0x54ff04a986028bef546cc5fad7550f860c50e985 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00057844125 2.25
0x67eb45d87a41ab7bf6f596c09dc2e1990cfff91c35b918d3154c318cb2f09ca4Create User Orde...105944892021-12-05 4:11:398 mins ago0xe27700e3ae073f3d65450871efc8da84cb2faece IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00021552752.25
0x1d978323c622ca0ce9d8f7e8a2e907149da311ab48161b670d157d4ad2df1f40Create User Orde...105944842021-12-05 4:11:249 mins ago0x56197ad05149288169ec7f906bbb6feae78ece1f IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.000225623252.25
0x58280b805e57a1ebcf9dcf197b1b2957e047f495755903e9c4fc35f588ed9f4eCreate User Orde...105944802021-12-05 4:11:129 mins ago0x54ff04a986028bef546cc5fad7550f860c50e985 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.000589239 2.25
0x908ae7a4fadfe13c030cdd262792a7a27d87208bc3da3c29c0f5495a35970b7eCancel User Orde...105944702021-12-05 4:10:429 mins ago0x56197ad05149288169ec7f906bbb6feae78ece1f IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.0001740052.5
0xed07794c081a7a993efa6632123af536368bb43feb8bee70d1668ad414b027dcCreate User Orde...105944612021-12-05 4:10:1510 mins ago0x54ff04a986028bef546cc5fad7550f860c50e985 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.00057844125 2.25
0xacbd7940d6f8c60955a66270c180f015b0048aa244bcf54fead9f111a96c4fccBuy NFT Card V2105944432021-12-05 4:09:2111 mins ago0x36a909a2db723c73172b8773df04f96edc8d3ec1 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.000437874752.25
0xbbafd1d3281ed628cc5850061caf2fa84f5c7d65d1fe3f0aa24628cf10eaf068Buy NFT Card V2105944382021-12-05 4:09:0611 mins ago0x36a909a2db723c73172b8773df04f96edc8d3ec1 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.000445164752.25
0x4e00901157c4d16258604029565dbc5ef032dfaa5416c4b3c45154b06ddee38bCreate User Orde...105944282021-12-05 4:08:3611 mins ago0x067b60dcbeb2df7e278dc019efde2ecb04335704 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.000578441252.25
0x281bad9b6e81f84367f9192c2554d1b44f9b2c0b211089df8ba6edd8eafaf44bCreate User Orde...105944232021-12-05 4:08:2112 mins ago0x067b60dcbeb2df7e278dc019efde2ecb04335704 IN 0xb2658d8c9a2949bc02d53c3762b4a72fd9b079a90 HT0.0005892392.25
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
resellMarketV2

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-09-26
*/

pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
//SPDX-License-Identifier: UNLICENSED
// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value : value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * This test is non-exhaustive, and there may be false-negatives: during the
     * execution of a contract's constructor, its address will be reported as
     * not containing a contract.
     *
     * IMPORTANT: It is unsafe to assume that an address for which this
     * function returns false is an externally-owned account (EOA) and not a
     * contract.
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != 0x0 && codehash != accountHash);
    }

    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }
}

library SafeMath {

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

        return c;
    }


    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }


    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }


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

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

        return c;
    }


    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }


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

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }


    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IaddressController {
    function isManager(address _mAddr) external view returns (bool);

    function getAddr(string calldata _name) external view returns (address);
}

interface ICommodity {
    function canBuy(uint256 _cid) external view returns (bool);

    function getSaleInfo(uint256 _cid) external view returns (uint256 _totalSupply, uint256 _saleedAmount);

    function saleOne(uint256 _cid, uint256 _sid, uint256 _tokenID) external;

    function upsale(uint256 _cid) external;

    function downSale(uint256 _cid) external;

    function getCommodityAttribute_S(uint256 _cid) external view returns (string[] memory _cAttributeS, uint256 _len);

    function getCommodityAttribute_U(uint256 _cid) external view returns (uint256[] memory _cAttributeU);

    function getAuthorAndBrandByCid(uint256 _cid) external view returns (address _author, uint256 _bID);

    function getUrlByCid(uint256 _cid) external view returns (string memory _url);

    function cid_tokenID_sid(uint256 _cid, uint256 _tokenid) external view returns (uint256 _sid);

    function commodity(uint256 _cid) external view returns (
        uint256,
        address,
        string memory,
        string memory,
        string memory,
        uint256,
        uint256,
        uint8);
}

interface INFT {
    function viewTokenID() view external returns (uint256);

    function mint(address _to, uint256 _tokenId, string calldata _uri) external;

    function setTokenAttributes(uint256 _tokenId, uint8 _typeAttributes, string calldata _tvalue, uint256 _tUintValue) external;

    function cAttributes(uint256 _tokenId) external view returns (string memory, string memory, uint256, uint256, uint256, uint256);

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

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

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

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

    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;

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

    function transferFrom(address from, address to, uint256 tokenId) external;
}

interface IERC1155 {
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
    event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);
    event URI(string value, uint256 indexed id);

    function balanceOf(address account, uint256 id) external view returns (uint256);

    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);

    function setApprovalForAll(address operator, bool approved) external;

    function isApprovedForAll(address account, address operator) external view returns (bool);

    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;

    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}


contract resellMarketV2 {

    using Address for address;
    using SafeMath for *;

    IaddressController immutable public addrc;

    uint256 public feeRate;
    // contractAddr  => tokenId => uorder
    mapping(address => mapping(uint256 => uorder_s)) public uOrder;
    // contractAddr = > contract
    mapping(address => contract_s) public contractInfos;

    mapping(uint256 => bool) public cidCreatePermission;
    bytes4 internal constant MAGIC_ON_ERC721_RECEIVED = 0x150b7a02;
    bytes4 internal constant MAGIC_ON_ERC1155_RECEIVED = 0xf23a6e61;

    struct contract_s {
        bool status;
        bool isErc1155;
        bool isIBox;
    }

    struct uorder_s {
        address origin;
        uint256 tokenID;
        address owner;
        address recvToken;
        uint256 price;
        uint256 oStatus;// 0 not create, 1, create order,2, sellsuccess,3 cancel
        bool isWechat;
    }

    event AddContract(address _origin, bool _isErc1155);
    event DelContract(address _origin);
    event CreateUserOrderV2(address _origin, uint256 _tokenID, uint256 _aid, uint256 _sid, address _recvToken, uint256 _price, bool _isWechat, address _owner);
    event CancelUserOrderV2(address _origin, uint256 _tokenID, address _owner);
    event UpdateUserOrderV2(address _origin, uint256 _tokenID, address _recvToken, uint256 _price, bool _isWechat,
        address _owner);
    event BuyNFTCardV2(address _origin, uint256 _tokenID, address _recvToken, address _owner, address _buyer, uint256
    _price);
    event SetCidCreatePermissionV2(uint256 _cid, bool _isPermission);
    event SetFeeRateV2(uint256 _feeRate);
    event TransferNFTCard(address _origin, address from, address _to, uint256 _tokenID);

    constructor(IaddressController _addrc) public {
        addrc = _addrc;
    }

    function addContract(address _origin, bool _isErc1155) public onlyManager {
        require(_origin.isContract(), "_origin not contract address");
        require(_origin != address(0), "_origin is zero address");
        address nftAddr = nameAddr("SNFT");
        contractInfos[_origin] = contract_s({
        status : true,
        isErc1155 : _isErc1155,
        isIBox : _origin == nftAddr
        });
        emit AddContract(_origin, _isErc1155);
    }

    function delContract(address _origin) public onlyManager {
        contractInfos[_origin].status = false;
        emit DelContract(_origin);
    }

    function createUserOrderV2(address _origin, uint256 _tokenID, address _recvToken, uint256 _price, bool _isWechat)
    public {
        contract_s storage cs = contractInfos[_origin];
        require(cs.status, "origin contract not in whitelist");
        require(_recvToken.isContract() || _recvToken == address(1), "_recvToken not contract address");
        require(uOrder[_origin][_tokenID].oStatus != 1, "order status can not be 1");
        uint256 cid;
        uint256 sid;
        if (cs.isIBox) {
            INFT systemNFT = INFT(nameAddr("SNFT"));
            // this is system NFT
            (,, cid,,,) = systemNFT.cAttributes(_tokenID);
            require(cidCreatePermission[cid], "cid can not sell");
            systemNFT.safeTransferFrom(msg.sender, address(this), _tokenID);
            sid = ICommodity(nameAddr("COM")).cid_tokenID_sid(cid, _tokenID);
        } else {
            if (cs.isErc1155) {
                IERC1155 nft1155 = IERC1155(_origin);
                require(nft1155.balanceOf(msg.sender, _tokenID) > 0, "sender is not token owner");
                require(nft1155.balanceOf(msg.sender, _tokenID) == 1, "token is not Non-Fungible Tokens");
                nft1155.safeTransferFrom(msg.sender, address(this), _tokenID, 1, "");
            } else {
                IERC721 nft721 = IERC721(_origin);
                require(nft721.ownerOf(_tokenID) == msg.sender, "sender is not token owner");
                nft721.safeTransferFrom(msg.sender, address(this), _tokenID);
            }
        }

        uOrder[_origin][_tokenID] = uorder_s({
        origin : _origin,
        tokenID : _tokenID,
        owner : msg.sender,
        recvToken : _recvToken,
        price : _price,
        oStatus : 1,
        isWechat : _isWechat
        });

        emit CreateUserOrderV2(_origin, _tokenID, cid, sid, _recvToken, _price, _isWechat, msg.sender);

    }

    function cancelUserOrderV2(address _origin, uint256 _tokenID) public {
        contract_s storage cs = contractInfos[_origin];
        uorder_s storage uoderTemp = uOrder[_origin][_tokenID];
        require(uoderTemp.owner == msg.sender, "sender is not uiod owner");
        require(uoderTemp.oStatus == 1, "order status not 1");
        uoderTemp.oStatus = 3;

        if (cs.isErc1155) {
            IERC1155 nft1155 = IERC1155(_origin);
            nft1155.safeTransferFrom(address(this), uoderTemp.owner, uoderTemp.tokenID, 1, "");
        } else {
            IERC721 nft721 = IERC721(_origin);
            nft721.safeTransferFrom(address(this), uoderTemp.owner, uoderTemp.tokenID);
        }
        emit CancelUserOrderV2(_origin, _tokenID, uoderTemp.owner);
    }

    function updateUserOrderV2(address _origin, uint256 _tokenID, address _recvToken, uint256 _price) public {
        contract_s storage cs = contractInfos[_origin];
        require(cs.status, "origin contract not in whitelist");
        require(_recvToken.isContract() || _recvToken == address(1), "_recvToken not contract address");
        uorder_s storage uoderTemp = uOrder[_origin][_tokenID];
        require(uoderTemp.owner == msg.sender, "sender is not uiod owner");
        require(uoderTemp.oStatus == 1, "order status not 1");

        uoderTemp.recvToken = _recvToken;
        uoderTemp.price = _price;

        emit UpdateUserOrderV2(_origin, _tokenID, _recvToken, _price, uoderTemp.isWechat, uoderTemp.owner);
    }


    function buyNFTCardV2(address _origin, uint256 _tokenID, uint256 _price) public payable {
        contract_s storage cs = contractInfos[_origin];
        require(cs.status, "origin contract not in whitelist");
        uorder_s storage uoderTemp = uOrder[_origin][_tokenID];
        require(uoderTemp.oStatus == 1, "order status not 1");
        require(!uoderTemp.isWechat, "only not wechat");
        require(uoderTemp.price == _price, "price not match");

        payPrice(_origin, uoderTemp.tokenID);

        uoderTemp.oStatus = 2;

        if (cs.isErc1155) {
            IERC1155 nft1155 = IERC1155(_origin);
            nft1155.safeTransferFrom(address(this), msg.sender, uoderTemp.tokenID, 1, "");
        } else {
            IERC721 nft721 = IERC721(_origin);
            nft721.safeTransferFrom(address(this), msg.sender, uoderTemp.tokenID);
        }

        emit BuyNFTCardV2(_origin, uoderTemp.tokenID, uoderTemp.recvToken, uoderTemp.owner, msg.sender, uoderTemp.price);
    }

    function buyNFTCard_ToV2(address _origin, uint256 _tokenID, address _to, uint256 _price) public payable
    onlyManager {
        contract_s storage cs = contractInfos[_origin];
        require(cs.status, "origin contract not in whitelist");
        uorder_s storage uoderTemp = uOrder[_origin][_tokenID];
        require(uoderTemp.oStatus == 1, "order status not 1");
        require(uoderTemp.isWechat, "only  wechat");
        require(uoderTemp.price == _price, "price not match");

        payPrice(_origin, uoderTemp.tokenID);

        uoderTemp.oStatus = 2;

        if (cs.isErc1155) {
            IERC1155 nft1155 = IERC1155(_origin);
            nft1155.safeTransferFrom(address(this), _to, uoderTemp.tokenID, 1, "");
        } else {
            IERC721 nft721 = IERC721(_origin);
            nft721.safeTransferFrom(address(this), _to, uoderTemp.tokenID);
        }

        emit BuyNFTCardV2(_origin, uoderTemp.tokenID, uoderTemp.recvToken, uoderTemp.owner, _to, uoderTemp.price);
    }

    function transferNFTCard(address _origin, uint256 _tokenID, address from, address _to) public onlyManager {
        contract_s storage cs = contractInfos[_origin];
        require(cs.status, "origin contract not in whitelist");
        require(!from.isContract() || from != address(1), "from address is contract address");
        require(isApprovedForAll(_origin, from), "caller is not approved");

        if (cs.isErc1155) {
            IERC1155 nft1155 = IERC1155(_origin);
            nft1155.safeTransferFrom(from, _to, _tokenID, 1, "");
        } else {
            IERC721 nft721 = IERC721(_origin);
            nft721.safeTransferFrom(from, _to, _tokenID);
        }

        emit TransferNFTCard(_origin, from, _to, _tokenID);
    }

    function isApprovedForAll(address _origin, address _account) public view returns (bool _isApproved) {
        contract_s storage cs = contractInfos[_origin];
        require(cs.status, "origin contract not in whitelist");
        IERC721 nft = IERC721(_origin);
        return nft.isApprovedForAll(_account, address(this));
    }

    function getCid(uint256 _tokenID) public view returns (uint256 _cid){
        INFT systemNFT = INFT(nameAddr("SNFT"));
        // this is system NFT
        (,, _cid,,,) = systemNFT.cAttributes(_tokenID);
    }

    function getAuthorInfo(uint256 _tokenID) public view returns (uint256 _authorRate, address _author){
        address com = nameAddr("COM");
        uint256 cid = getCid(_tokenID);
        (,_author,,,,,_authorRate,) = ICommodity(com).commodity(cid);
    }

    function payPrice(address _origin, uint256 _tokenID) internal {
        address _feeTo = nameAddr("FEETO");
        require(_feeTo != address(0), "not set feeto address");

        uorder_s memory uorderTemp = uOrder[_origin][_tokenID];
        uint256 nftPrice = uorderTemp.price;
        if (nftPrice == 0) {
            return;
        }
        contract_s storage cs = contractInfos[_origin];
        uint256 autFee;
        address author;
        if (cs.isIBox) {
            (autFee, author) = getAuthorInfo(uorderTemp.tokenID);
        }
        uint256 feeAmount = nftPrice.mul(feeRate).div(10000);
        uint256 authorAmount = nftPrice.mul(autFee).div(10000);
        uint256 leftAmount = nftPrice.sub(feeAmount).sub(authorAmount);

        bool isHostCoin = uorderTemp.recvToken == address(1) ? true : false;
        if (feeAmount != 0) {
            if (!isHostCoin) {
                TransferHelper.safeTransferFrom(uorderTemp.recvToken, msg.sender, _feeTo, feeAmount);
            } else {
                _feeTo.toPayable().transfer(feeAmount);
            }
        }

        if (authorAmount != 0) {
            if (!isHostCoin) {
                TransferHelper.safeTransferFrom(uorderTemp.recvToken, msg.sender, author, authorAmount);
            } else {
                author.toPayable().transfer(authorAmount);
            }
        }

        if (leftAmount != 0) {
            if (!isHostCoin) {
                TransferHelper.safeTransferFrom(uorderTemp.recvToken, msg.sender, uorderTemp.owner, leftAmount);
            } else {
                uorderTemp.owner.toPayable().transfer(leftAmount);
            }
        }
        if (isHostCoin && address(this).balance > 0) {
            msg.sender.transfer(address(this).balance);
        }
    }

    function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external view returns (bytes4){
        return MAGIC_ON_ERC721_RECEIVED;
    }
    
    function onERC1155Received(address operator, address from, uint256 id, uint256 value, bytes calldata data) external view returns (bytes4){
        return MAGIC_ON_ERC1155_RECEIVED;
    }


    // cansell is true mean can create order
    function setCidCreatePermissionV2(uint256 _cid, bool _canSell) public onlyManager {
        cidCreatePermission[_cid] = _canSell;

        emit SetCidCreatePermissionV2(_cid, _canSell);
    }

    function setFeeRateV2(uint256 _feeRate) public onlyManager {
        require(_feeRate < 10000, "can not big the 10000");
        feeRate = _feeRate;

        emit SetFeeRateV2(_feeRate);
    }

    function nameAddr(string memory _name) public view returns (address){
        return addrc.getAddr(_name);
    }

    modifier onlyManager(){
        require(addrc.isManager(msg.sender), "onlyManager");
        _;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IaddressController","name":"_addrc","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_origin","type":"address"},{"indexed":false,"internalType":"bool","name":"_isErc1155","type":"bool"}],"name":"AddContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_origin","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenID","type":"uint256"},{"indexed":false,"internalType":"address","name":"_recvToken","type":"address"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"address","name":"_buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"_price","type":"uint256"}],"name":"BuyNFTCardV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_origin","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenID","type":"uint256"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"CancelUserOrderV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_origin","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_aid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_sid","type":"uint256"},{"indexed":false,"internalType":"address","name":"_recvToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"_price","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_isWechat","type":"bool"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"CreateUserOrderV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_origin","type":"address"}],"name":"DelContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_cid","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_isPermission","type":"bool"}],"name":"SetCidCreatePermissionV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_feeRate","type":"uint256"}],"name":"SetFeeRateV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_origin","type":"address"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"TransferNFTCard","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_origin","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenID","type":"uint256"},{"indexed":false,"internalType":"address","name":"_recvToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"_price","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_isWechat","type":"bool"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"UpdateUserOrderV2","type":"event"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"bool","name":"_isErc1155","type":"bool"}],"name":"addContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addrc","outputs":[{"internalType":"contract IaddressController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"buyNFTCardV2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"buyNFTCard_ToV2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"cancelUserOrderV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cidCreatePermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractInfos","outputs":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"bool","name":"isErc1155","type":"bool"},{"internalType":"bool","name":"isIBox","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"address","name":"_recvToken","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"bool","name":"_isWechat","type":"bool"}],"name":"createUserOrderV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"}],"name":"delContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"getAuthorInfo","outputs":[{"internalType":"uint256","name":"_authorRate","type":"uint256"},{"internalType":"address","name":"_author","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"getCid","outputs":[{"internalType":"uint256","name":"_cid","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"_isApproved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"nameAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cid","type":"uint256"},{"internalType":"bool","name":"_canSell","type":"bool"}],"name":"setCidCreatePermissionV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeRate","type":"uint256"}],"name":"setFeeRateV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferNFTCard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"uOrder","outputs":[{"internalType":"address","name":"origin","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"recvToken","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"oStatus","type":"uint256"},{"internalType":"bool","name":"isWechat","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"address","name":"_recvToken","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"updateUserOrderV2","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b50604051620032a5380380620032a583398101604081905262000034916200004a565b60601b6001600160601b0319166080526200007a565b6000602082840312156200005c578081fd5b81516001600160a01b038116811462000073578182fd5b9392505050565b60805160601c6131ea620000bb6000398061043652806106dd5280610f7752806111e3528061138a528061157152806116135280611dcd52506131ea6000f3fe60806040526004361061012a5760003560e01c8063978bbdb9116100ab578063b5d9a6811161006f578063b5d9a6811461034c578063bde32f461461036c578063e985e9c51461037f578063eb0bb5311461039f578063f23a6e61146103ce578063f4f2821b146103ee5761012a565b8063978bbdb9146102b6578063a1652ecd146102cb578063a2535cb6146102eb578063a310d29c14610319578063af798f55146103395761012a565b806369b063fb116100f257806369b063fb14610201578063869e5a3114610234578063906444d314610254578063913fcfe014610274578063947b3dcc146102965761012a565b8063150b7a021461012f5780633961bed4146101655780633beaa6ab1461018757806359432793146101b45780635c87790d146101d4575b600080fd5b34801561013b57600080fd5b5061014f61014a3660046125b4565b61040e565b60405161015c9190612c9e565b60405180910390f35b34801561017157600080fd5b5061018561018036600461269f565b61041f565b005b34801561019357600080fd5b506101a76101a2366004612938565b61060e565b60405161015c91906130d5565b3480156101c057600080fd5b506101856101cf366004612a2d565b6106c6565b3480156101e057600080fd5b506101f46101ef366004612938565b6107d6565b60405161015c9190612c79565b34801561020d57600080fd5b5061022161021c3660046126cc565b6107eb565b60405161015c9796959493929190612bb3565b34801561024057600080fd5b5061018561024f366004612790565b610842565b34801561026057600080fd5b5061018561026f3660046126f7565b610f60565b34801561028057600080fd5b506102896111e1565b60405161015c9190612a6d565b3480156102a257600080fd5b506101856102b1366004612749565b611205565b3480156102c257600080fd5b506101a761136d565b3480156102d757600080fd5b506101856102e6366004612938565b611373565b3480156102f757600080fd5b5061030b610306366004612938565b61148c565b60405161015c9291906130de565b34801561032557600080fd5b5061028961033436600461283e565b611557565b610185610347366004612749565b6115fc565b34801561035857600080fd5b506101856103673660046126cc565b6118d3565b61018561037a3660046127ee565b611a9a565b34801561038b57600080fd5b506101f461039a36600461257c565b611cba565b3480156103ab57600080fd5b506103bf6103ba366004612544565b611d7c565b60405161015c93929190612c84565b3480156103da57600080fd5b5061014f6103e9366004612625565b611da4565b3480156103fa57600080fd5b50610185610409366004612544565b611db6565b630a85bd0160e11b95945050505050565b60405163f3ae241560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f3ae24159061046b903390600401612a6d565b60206040518083038186803b15801561048357600080fd5b505afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190612822565b6104e05760405162461bcd60e51b81526004016104d790612d10565b60405180910390fd5b6104f2826001600160a01b0316611ebe565b61050e5760405162461bcd60e51b81526004016104d790612fcc565b6001600160a01b0382166105345760405162461bcd60e51b81526004016104d790612df4565b600061055b6040518060400160405280600481526020016314d3919560e21b815250611557565b604080516060810182526001815284151560208083019182526001600160a01b0385811690891690811484860190815260009182526002909252849020925183549251915160ff199093169015151761ff001916610100911515919091021762ff000019166201000091151591909102179055519091507fbae40f8b886e274306399e572131087d067630c80f1351eaac7cdaf048e87572906106019085908590612b3a565b60405180910390a1505050565b6000806106366040518060400160405280600481526020016314d3919560e21b815250611557565b6040516360f028af60e11b81529091506001600160a01b0382169063c1e0515e906106659086906004016130d5565b60006040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106b991908101906128b2565b5091979650505050505050565b60405163f3ae241560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f3ae241590610712903390600401612a6d565b60206040518083038186803b15801561072a57600080fd5b505afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107629190612822565b61077e5760405162461bcd60e51b81526004016104d790612d10565b60008281526003602052604090819020805460ff1916831515179055517f706e496eb117f91c6ac98fb1d9d05a350ace5f4ac669eec4ce21053efe10fcd2906107ca90849084906130f5565b60405180910390a15050565b60036020526000908152604090205460ff1681565b6001602081815260009384526040808520909152918352912080549181015460028201546003830154600484015460058501546006909501546001600160a01b039687169694959385169490921692909160ff1687565b6001600160a01b0385166000908152600260205260409020805460ff1661087b5760405162461bcd60e51b81526004016104d79061305c565b61088d846001600160a01b0316611ebe565b806108a157506001600160a01b0384166001145b6108bd5760405162461bcd60e51b81526004016104d790612e91565b6001600160a01b03861660009081526001602081815260408084208985529091529091206005015414156109035760405162461bcd60e51b81526004016104d790612ec8565b8054600090819062010000900460ff1615610b0557600061093f6040518060400160405280600481526020016314d3919560e21b815250611557565b6040516360f028af60e11b81529091506001600160a01b0382169063c1e0515e9061096e908b906004016130d5565b60006040518083038186803b15801561098657600080fd5b505afa15801561099a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c291908101906128b2565b50505060008181526003602052604090205490955060ff1691506109fa90505760405162461bcd60e51b81526004016104d790612ce6565b604051632142170760e11b81526001600160a01b038216906342842e0e90610a2a90339030908d90600401612a81565b600060405180830381600087803b158015610a4457600080fd5b505af1158015610a58573d6000803e3d6000fd5b50505050610a8060405180604001604052806003815260200162434f4d60e81b815250611557565b6001600160a01b031663099223e5848a6040518363ffffffff1660e01b8152600401610aad929190613105565b60206040518083038186803b158015610ac557600080fd5b505afa158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd9190612950565b915050610dc2565b8254610100900460ff1615610cb857604051627eeac760e11b815288906000906001600160a01b0383169062fdd58e90610b459033908d90600401612add565b60206040518083038186803b158015610b5d57600080fd5b505afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190612950565b11610bb25760405162461bcd60e51b81526004016104d790612e5a565b604051627eeac760e11b81526001600160a01b0382169062fdd58e90610bde9033908c90600401612add565b60206040518083038186803b158015610bf657600080fd5b505afa158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e9190612950565b600114610c4d5760405162461bcd60e51b81526004016104d790612dbf565b604051637921219560e11b81526001600160a01b0382169063f242432a90610c8090339030908d90600190600401612aa5565b600060405180830381600087803b158015610c9a57600080fd5b505af1158015610cae573d6000803e3d6000fd5b5050505050610dc2565b6040516331a9108f60e11b8152889033906001600160a01b03831690636352211e90610ce8908c906004016130d5565b60206040518083038186803b158015610d0057600080fd5b505afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190612560565b6001600160a01b031614610d5e5760405162461bcd60e51b81526004016104d790612e5a565b604051632142170760e11b81526001600160a01b038216906342842e0e90610d8e90339030908d90600401612a81565b600060405180830381600087803b158015610da857600080fd5b505af1158015610dbc573d6000803e3d6000fd5b50505050505b6040518060e00160405280896001600160a01b03168152602001888152602001336001600160a01b03168152602001876001600160a01b0316815260200186815260200160018152602001851515815250600160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600089815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff0219169083151502179055509050507fe01bf82c3f86901cb5a4deb463d8d64a01f5caca1a7ab9e5494a4596cd871b28888884848a8a8a33604051610f4e989796959493929190612c31565b60405180910390a15050505050505050565b60405163f3ae241560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f3ae241590610fac903390600401612a6d565b60206040518083038186803b158015610fc457600080fd5b505afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc9190612822565b6110185760405162461bcd60e51b81526004016104d790612d10565b6001600160a01b0384166000908152600260205260409020805460ff166110515760405162461bcd60e51b81526004016104d79061305c565b611063836001600160a01b0316611ebe565b158061107957506001600160a01b038316600114155b6110955760405162461bcd60e51b81526004016104d790612d35565b61109f8584611cba565b6110bb5760405162461bcd60e51b81526004016104d79061302c565b8054610100900460ff161561113757604051637921219560e11b815285906001600160a01b0382169063f242432a906110ff90879087908a90600190600401612aa5565b600060405180830381600087803b15801561111957600080fd5b505af115801561112d573d6000803e3d6000fd5b505050505061119d565b604051632142170760e11b815285906001600160a01b038216906342842e0e9061116990879087908a90600401612a81565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50505050505b7f5c6a9f019cb94e0e16503fde36656350ca20c66a4585fc5f14e707b9dda31985858484876040516111d29493929190612b10565b60405180910390a15050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0384166000908152600260205260409020805460ff1661123e5760405162461bcd60e51b81526004016104d79061305c565b611250836001600160a01b0316611ebe565b8061126457506001600160a01b0383166001145b6112805760405162461bcd60e51b81526004016104d790612e91565b6001600160a01b0380861660009081526001602090815260408083208884529091529020600281015490911633146112ca5760405162461bcd60e51b81526004016104d790612f6c565b80600501546001146112ee5760405162461bcd60e51b81526004016104d790612eff565b6003810180546001600160a01b0319166001600160a01b038681169190911790915560048201849055600682015460028301546040517f4ad2634a2cfa8b34d924720030e8210af78150e523db6852bdffb60866ad8fae9361135d938b938b938b938b9360ff16921690612bf7565b60405180910390a1505050505050565b60005481565b60405163f3ae241560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f3ae2415906113bf903390600401612a6d565b60206040518083038186803b1580156113d757600080fd5b505afa1580156113eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140f9190612822565b61142b5760405162461bcd60e51b81526004016104d790612d10565b612710811061144c5760405162461bcd60e51b81526004016104d790612d6a565b60008190556040517fb8c635ee52759ded418e04efe4fa52d0907d9efea56adb7f16f45aa4cecc51ed906114819083906130d5565b60405180910390a150565b60008060006114b560405180604001604052806003815260200162434f4d60e81b815250611557565b905060006114c28561060e565b604051639614ed1f60e01b81529091506001600160a01b03831690639614ed1f906114f19084906004016130d5565b60006040518083038186803b15801561150957600080fd5b505afa15801561151d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115459190810190612968565b509b949a509398505050505050505050565b60405163d502db9760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d502db97906115a6908590600401612cb3565b60206040518083038186803b1580156115be57600080fd5b505afa1580156115d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f69190612560565b92915050565b60405163f3ae241560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f3ae241590611648903390600401612a6d565b60206040518083038186803b15801561166057600080fd5b505afa158015611674573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116989190612822565b6116b45760405162461bcd60e51b81526004016104d790612d10565b6001600160a01b0384166000908152600260205260409020805460ff166116ed5760405162461bcd60e51b81526004016104d79061305c565b6001600160a01b038516600090815260016020818152604080842088855290915290912060058101549091146117355760405162461bcd60e51b81526004016104d790612eff565b600681015460ff166117595760405162461bcd60e51b81526004016104d790612d99565b8281600401541461177c5760405162461bcd60e51b81526004016104d790613003565b61178a868260010154611efa565b600260058201558154610100900460ff161561181157600180820154604051637921219560e11b815288926001600160a01b0384169263f242432a926117d99230928b92909190600401612aa5565b600060405180830381600087803b1580156117f357600080fd5b505af1158015611807573d6000803e3d6000fd5b505050505061187a565b6001810154604051632142170760e11b815287916001600160a01b038316916342842e0e916118469130918a91600401612a81565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b50505050505b60018101546003820154600283015460048401546040517fc417c261860bd0f6565024b7b6de5dba74b7146c224decf390356d95d04c561b9461135d948c9491936001600160a01b039182169391909216918b91612b78565b6001600160a01b0380831660009081526002602081815260408084206001835281852087865290925290922090810154919290911633146119265760405162461bcd60e51b81526004016104d790612f6c565b806005015460011461194a5760405162461bcd60e51b81526004016104d790612eff565b600360058201558154610100900460ff16156119d9576002810154600180830154604051637921219560e11b815287936001600160a01b038086169463f242432a946119a194309490931692909190600401612aa5565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b5050505050611a49565b60028101546001820154604051632142170760e11b815286926001600160a01b03808516936342842e0e93611a15933093169190600401612a81565b600060405180830381600087803b158015611a2f57600080fd5b505af1158015611a43573d6000803e3d6000fd5b50505050505b60028101546040517fe267cf2a367ac34c4d564764ba7207490b4f227d564139bfab4263bdcb3ff8a291611a8c91879187916001600160a01b0390911690612b55565b60405180910390a150505050565b6001600160a01b0383166000908152600260205260409020805460ff16611ad35760405162461bcd60e51b81526004016104d79061305c565b6001600160a01b03841660009081526001602081815260408084208785529091529091206005810154909114611b1b5760405162461bcd60e51b81526004016104d790612eff565b600681015460ff1615611b405760405162461bcd60e51b81526004016104d790612fa3565b82816004015414611b635760405162461bcd60e51b81526004016104d790613003565b611b71858260010154611efa565b600260058201558154610100900460ff1615611bf857600180820154604051637921219560e11b815287926001600160a01b0384169263f242432a92611bc09230923392909190600401612aa5565b600060405180830381600087803b158015611bda57600080fd5b505af1158015611bee573d6000803e3d6000fd5b5050505050611c61565b6001810154604051632142170760e11b815286916001600160a01b038316916342842e0e91611c2d9130913391600401612a81565b600060405180830381600087803b158015611c4757600080fd5b505af1158015611c5b573d6000803e3d6000fd5b50505050505b60018101546003820154600283015460048401546040517fc417c261860bd0f6565024b7b6de5dba74b7146c224decf390356d95d04c561b946111d2948b9491936001600160a01b039182169391909216913391612b78565b6001600160a01b0382166000908152600260205260408120805460ff16611cf35760405162461bcd60e51b81526004016104d79061305c565b60405163e985e9c560e01b815284906001600160a01b0382169063e985e9c590611d239087903090600401612af6565b60206040518083038186803b158015611d3b57600080fd5b505afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190612822565b95945050505050565b60026020526000908152604090205460ff808216916101008104821691620100009091041683565b63f23a6e6160e01b9695505050505050565b60405163f3ae241560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f3ae241590611e02903390600401612a6d565b60206040518083038186803b158015611e1a57600080fd5b505afa158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e529190612822565b611e6e5760405162461bcd60e51b81526004016104d790612d10565b6001600160a01b03811660009081526002602052604090819020805460ff19169055517f603b228e4bbfc013e157650adc22685b1ae324e28781dbe580aa5bd8cee62cea90611481908390612a6d565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590611ef25750808214155b949350505050565b6000611f2260405180604001604052806005815260200164464545544f60d81b815250611557565b90506001600160a01b038116611f4a5760405162461bcd60e51b81526004016104d790612e2b565b611f52612453565b506001600160a01b038084166000908152600160208181526040808420878552825292839020835160e0810185528154861681529281015491830191909152600281015484169282019290925260038201549092166060830152600481015460808301819052600582015460a084015260069091015460ff16151560c083015280611fdf57505050612233565b6001600160a01b03851660009081526002602052604081208054909190819062010000900460ff161561201f57612019856020015161148c565b90925090505b600061204261271061203c6000548861223790919063ffffffff16565b90612278565b9050600061205661271061203c8887612237565b9050600061206e8261206889866122ba565b906122ba565b9050600060016001600160a01b031689606001516001600160a01b03161461209757600061209a565b60015b9050831561210857806120bc576120b78960600151338c876122fc565b612108565b6120ce8a6001600160a01b03166123ed565b6001600160a01b03166108fc859081150290604051600060405180830381858888f19350505050158015612106573d6000803e3d6000fd5b505b821561217457806121285761212389606001513387866122fc565b612174565b61213a856001600160a01b03166123ed565b6001600160a01b03166108fc849081150290604051600060405180830381858888f19350505050158015612172573d6000803e3d6000fd5b505b81156121e85780612198576121938960600151338b60400151856122fc565b6121e8565b6121ae89604001516001600160a01b03166123ed565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156121e6573d6000803e3d6000fd5b505b8080156121f55750600047115b156122285760405133904780156108fc02916000818181858888f19350505050158015612226573d6000803e3d6000fd5b505b505050505050505050505b5050565b600082612246575060006115f6565b8282028284828161225357fe5b04146122715760405162461bcd60e51b81526004016104d790612f2b565b9392505050565b600061227183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123f0565b600061227183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612427565b60006060856001600160a01b03166323b872dd86868660405160240161232493929190612a81565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161235d9190612a51565b6000604051808303816000865af19150503d806000811461239a576040519150601f19603f3d011682016040523d82523d6000602084013e61239f565b606091505b50915091508180156123c95750805115806123c95750808060200190518101906123c99190612822565b6123e55760405162461bcd60e51b81526004016104d790613091565b505050505050565b90565b600081836124115760405162461bcd60e51b81526004016104d79190612cb3565b50600083858161241d57fe5b0495945050505050565b6000818484111561244b5760405162461bcd60e51b81526004016104d79190612cb3565b505050900390565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b80516115f68161318e565b60008083601f8401126124ab578182fd5b50813567ffffffffffffffff8111156124c2578182fd5b6020830191508360208285010111156124da57600080fd5b9250929050565b600082601f8301126124f1578081fd5b81516125046124ff8261313a565b613113565b915080825283602082850101111561251b57600080fd5b61252c81602084016020860161315e565b5092915050565b805160ff811681146115f657600080fd5b600060208284031215612555578081fd5b81356122718161318e565b600060208284031215612571578081fd5b81516122718161318e565b6000806040838503121561258e578081fd5b82356125998161318e565b915060208301356125a98161318e565b809150509250929050565b6000806000806000608086880312156125cb578081fd5b85356125d68161318e565b945060208601356125e68161318e565b935060408601359250606086013567ffffffffffffffff811115612608578182fd5b6126148882890161249a565b969995985093965092949392505050565b60008060008060008060a0878903121561263d578081fd5b86356126488161318e565b955060208701356126588161318e565b94506040870135935060608701359250608087013567ffffffffffffffff811115612681578182fd5b61268d89828a0161249a565b979a9699509497509295939492505050565b600080604083850312156126b1578182fd5b82356126bc8161318e565b915060208301356125a9816131a6565b600080604083850312156126de578182fd5b82356126e98161318e565b946020939093013593505050565b6000806000806080858703121561270c578384fd5b84356127178161318e565b935060208501359250604085013561272e8161318e565b9150606085013561273e8161318e565b939692955090935050565b6000806000806080858703121561275e578384fd5b84356127698161318e565b93506020850135925060408501356127808161318e565b9396929550929360600135925050565b600080600080600060a086880312156127a7578081fd5b85356127b28161318e565b94506020860135935060408601356127c98161318e565b92506060860135915060808601356127e0816131a6565b809150509295509295909350565b600080600060608486031215612802578081fd5b833561280d8161318e565b95602085013595506040909401359392505050565b600060208284031215612833578081fd5b8151612271816131a6565b60006020828403121561284f578081fd5b813567ffffffffffffffff811115612865578182fd5b8201601f81018413612875578182fd5b80356128836124ff8261313a565b818152856020838501011115612897578384fd5b81602084016020830137908101602001929092525092915050565b60008060008060008060c087890312156128ca578384fd5b865167ffffffffffffffff808211156128e1578586fd5b6128ed8a838b016124e1565b97506020890151915080821115612902578586fd5b5061290f89828a016124e1565b95505060408701519350606087015192506080870151915060a087015190509295509295509295565b600060208284031215612949578081fd5b5035919050565b600060208284031215612961578081fd5b5051919050565b600080600080600080600080610100898b031215612984578586fd5b885197506129958a60208b0161248f565b9650604089015167ffffffffffffffff808211156129b1578788fd5b6129bd8c838d016124e1565b975060608b01519150808211156129d2578384fd5b6129de8c838d016124e1565b965060808b01519150808211156129f3578384fd5b50612a008b828c016124e1565b94505060a0890151925060c08901519150612a1e8a60e08b01612533565b90509295985092959890939650565b60008060408385031215612a3f578182fd5b8235915060208301356125a9816131a6565b60008251612a6381846020870161315e565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b039687168152602081019590955292851660408501529084166060840152909216608082015260a081019190915260c00190565b6001600160a01b03978816815260208101969096529386166040860152919094166060840152608083019390935260a082019290925290151560c082015260e00190565b6001600160a01b0396871681526020810195909552928516604085015260608401919091521515608083015290911660a082015260c00190565b6001600160a01b039889168152602081019790975260408701959095526060860193909352908516608085015260a0840152151560c083015290911660e08201526101000190565b901515815260200190565b921515835290151560208301521515604082015260600190565b6001600160e01b031991909116815260200190565b6000602082528251806020840152612cd281604085016020870161315e565b601f01601f19169190910160400192915050565b60208082526010908201526f18da590818d85b881b9bdd081cd95b1b60821b604082015260600190565b6020808252600b908201526a37b7363ca6b0b730b3b2b960a91b604082015260600190565b6020808252818101527f66726f6d206164647265737320697320636f6e74726163742061646472657373604082015260600190565b602080825260159082015274063616e206e6f74206269672074686520313030303605c1b604082015260600190565b6020808252600c908201526b1bdb9b1e48081dd958da185d60a21b604082015260600190565b6020808252818101527f746f6b656e206973206e6f74204e6f6e2d46756e6769626c6520546f6b656e73604082015260600190565b60208082526017908201527f5f6f726967696e206973207a65726f2061646472657373000000000000000000604082015260600190565b6020808252601590820152746e6f742073657420666565746f206164647265737360581b604082015260600190565b60208082526019908201527f73656e646572206973206e6f7420746f6b656e206f776e657200000000000000604082015260600190565b6020808252601f908201527f5f72656376546f6b656e206e6f7420636f6e7472616374206164647265737300604082015260600190565b60208082526019908201527f6f72646572207374617475732063616e206e6f74206265203100000000000000604082015260600190565b6020808252601290820152716f7264657220737461747573206e6f74203160701b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526018908201527f73656e646572206973206e6f742075696f64206f776e65720000000000000000604082015260600190565b6020808252600f908201526e1bdb9b1e481b9bdd081dd958da185d608a1b604082015260600190565b6020808252601c908201527f5f6f726967696e206e6f7420636f6e7472616374206164647265737300000000604082015260600190565b6020808252600f908201526e0e0e4d2c6ca40dcdee840dac2e8c6d608b1b604082015260600190565b60208082526016908201527518d85b1b195c881a5cc81b9bdd08185c1c1c9bdd995960521b604082015260600190565b6020808252818101527f6f726967696e20636f6e7472616374206e6f7420696e2077686974656c697374604082015260600190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416040820152631253115160e21b606082015260800190565b90815260200190565b9182526001600160a01b0316602082015260400190565b9182521515602082015260400190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561313257600080fd5b604052919050565b600067ffffffffffffffff821115613150578081fd5b50601f01601f191660200190565b60005b83811015613179578181015183820152602001613161565b83811115613188576000848401525b50505050565b6001600160a01b03811681146131a357600080fd5b50565b80151581146131a357600080fdfea264697066735822122030b02453cd647f3e1c2489e7098a44e08bbf15d8e08f01106c8e08e7ab31a4e664736f6c634300060c0033000000000000000000000000a6badb64fb12afc374c3833ba062e7a778bf7401

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

000000000000000000000000a6badb64fb12afc374c3833ba062e7a778bf7401

-----Decoded View---------------
Arg [0] : _addrc (address): 0xa6badb64fb12afc374c3833ba062e7a778bf7401

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a6badb64fb12afc374c3833ba062e7a778bf7401


Deployed ByteCode Sourcemap

8851:12519:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20297:180;;;;;;;;;;-1:-1:-1;20297:180:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10706:469;;;;;;;;;;-1:-1:-1;10706:469:0;;;;;:::i;:::-;;:::i;:::-;;17980:214;;;;;;;;;;-1:-1:-1;17980:214:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20733:195::-;;;;;;;;;;-1:-1:-1;20733:195:0;;;;;:::i;:::-;;:::i;9230:51::-;;;;;;;;;;-1:-1:-1;9230:51:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9067:62::-;;;;;;;;;;-1:-1:-1;9067:62:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;11340:1935::-;;;;;;;;;;-1:-1:-1;11340:1935:0;;;;;:::i;:::-;;:::i;16873:757::-;;;;;;;;;;-1:-1:-1;16873:757:0;;;;;:::i;:::-;;:::i;8945:41::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14077:738::-;;;;;;;;;;-1:-1:-1;14077:738:0;;;;;:::i;:::-;;:::i;8995:22::-;;;;;;;;;;;;;:::i;20936:197::-;;;;;;;;;;-1:-1:-1;20936:197:0;;;;;:::i;:::-;;:::i;18202:259::-;;;;;;;;;;-1:-1:-1;18202:259:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;21141:114::-;;;;;;;;;;-1:-1:-1;21141:114:0;;;;;:::i;:::-;;:::i;15845:1020::-;;;;;;:::i;:::-;;:::i;13283:786::-;;;;;;;;;;-1:-1:-1;13283:786:0;;;;;:::i;:::-;;:::i;14825:1012::-;;;;;;:::i;:::-;;:::i;17638:334::-;;;;;;;;;;-1:-1:-1;17638:334:0;;;;;:::i;:::-;;:::i;9170:51::-;;;;;;;;;;-1:-1:-1;9170:51:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;20489:188::-;;;;;;;;;;-1:-1:-1;20489:188:0;;;;;:::i;:::-;;:::i;11183:149::-;;;;;;;;;;-1:-1:-1;11183:149:0;;;;;:::i;:::-;;:::i;20297:180::-;-1:-1:-1;;;20297:180:0;;;;;;;:::o;10706:469::-;21304:27;;-1:-1:-1;;;21304:27:0;;-1:-1:-1;;;;;21304:5:0;:15;;;;:27;;21320:10;;21304:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21296:51;;;;-1:-1:-1;;;21296:51:0;;;;;;;:::i;:::-;;;;;;;;;10799:20:::1;:7;-1:-1:-1::0;;;;;10799:18:0::1;;:20::i;:::-;10791:61;;;;-1:-1:-1::0;;;10791:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10871:21:0;::::1;10863:57;;;;-1:-1:-1::0;;;10863:57:0::1;;;;;;;:::i;:::-;10931:15;10949:16;;;;;;;;;;;;;;-1:-1:-1::0;;;10949:16:0::1;;::::0;:8:::1;:16::i;:::-;11001:118;::::0;;::::1;::::0;::::1;::::0;;11032:4:::1;11001:118:::0;;;::::1;;;::::0;;::::1;::::0;;;-1:-1:-1;;;;;11089:18:0;;::::1;::::0;;::::1;::::0;;::::1;11001:118:::0;;;;;;-1:-1:-1;10976:22:0;;;:13:::1;:22:::0;;;;;;:143;;;;;;;;-1:-1:-1;;10976:143:0;;::::1;::::0;::::1;;;-1:-1:-1::0;;10976:143:0::1;;::::0;::::1;;::::0;;;::::1;;-1:-1:-1::0;;10976:143:0::1;::::0;;::::1;;::::0;;;::::1;;::::0;;11135:32;11089:18;;-1:-1:-1;11135:32:0::1;::::0;::::1;::::0;11089:18;;11001:118;;11135:32:::1;:::i;:::-;;;;;;;;21358:1;10706:469:::0;;:::o;17980:214::-;18035:12;18059:14;18081:16;;;;;;;;;;;;;;-1:-1:-1;;;18081:16:0;;;:8;:16::i;:::-;18155:31;;-1:-1:-1;;;18155:31:0;;18059:39;;-1:-1:-1;;;;;;18155:21:0;;;;;:31;;18177:8;;18155:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18155:31:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18140:46:0;;17980:214;-1:-1:-1;;;;;;;17980:214:0:o;20733:195::-;21304:27;;-1:-1:-1;;;21304:27:0;;-1:-1:-1;;;;;21304:5:0;:15;;;;:27;;21320:10;;21304:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21296:51;;;;-1:-1:-1;;;21296:51:0;;;;;;;:::i;:::-;20826:25:::1;::::0;;;:19:::1;:25;::::0;;;;;;:36;;-1:-1:-1;;20826:36:0::1;::::0;::::1;;;::::0;;20880:40;::::1;::::0;::::1;::::0;20826:25;;:36;;20880:40:::1;:::i;:::-;;;;;;;;20733:195:::0;;:::o;9230:51::-;;;;;;;;;;;;;;;:::o;9067:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9067:62:0;;;;;;;;;;;;;;;;;;;:::o;11340:1935::-;-1:-1:-1;;;;;11501:22:0;;11477:21;11501:22;;;:13;:22;;;;;11542:9;;;;11534:54;;;;-1:-1:-1;;;11534:54:0;;;;;;;:::i;:::-;11607:23;:10;-1:-1:-1;;;;;11607:21:0;;:23::i;:::-;:51;;;-1:-1:-1;;;;;;11634:24:0;;11656:1;11634:24;11607:51;11599:95;;;;-1:-1:-1;;;11599:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11713:15:0;;;;;;:6;:15;;;;;;;;:25;;;;;;;;;:33;;;:38;;11705:76;;;;-1:-1:-1;;;11705:76:0;;;;;;;:::i;:::-;11840:9;;11792:11;;;;11840:9;;;;;11836:1065;;;11866:14;11888:16;;;;;;;;;;;;;;-1:-1:-1;;;11888:16:0;;;:8;:16::i;:::-;11969:31;;-1:-1:-1;;;11969:31:0;;11866:39;;-1:-1:-1;;;;;;11969:21:0;;;;;:31;;11991:8;;11969:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11969:31:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;12023:24:0;;;;:19;:24;;;;;;11955:45;;-1:-1:-1;12023:24:0;;;-1:-1:-1;12015:53:0;;-1:-1:-1;12015:53:0;;;-1:-1:-1;;;12015:53:0;;;;;;;:::i;:::-;12083:63;;-1:-1:-1;;;12083:63:0;;-1:-1:-1;;;;;12083:26:0;;;;;:63;;12110:10;;12130:4;;12137:8;;12083:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12178:15;;;;;;;;;;;;;;-1:-1:-1;;;12178:15:0;;;:8;:15::i;:::-;-1:-1:-1;;;;;12167:43:0;;12211:3;12216:8;12167:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12161:64;;11836:1065;;;;12262:12;;;;;;;12258:632;;;12358:39;;-1:-1:-1;;;12358:39:0;;12323:7;;12295:16;;-1:-1:-1;;;;;12358:17:0;;;;;:39;;12376:10;;12388:8;;12358:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;12350:81;;;;-1:-1:-1;;;12350:81:0;;;;;;;:::i;:::-;12458:39;;-1:-1:-1;;;12458:39:0;;-1:-1:-1;;;;;12458:17:0;;;;;:39;;12476:10;;12488:8;;12458:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12501:1;12458:44;12450:89;;;;-1:-1:-1;;;12450:89:0;;;;;;;:::i;:::-;12558:68;;-1:-1:-1;;;12558:68:0;;-1:-1:-1;;;;;12558:24:0;;;;;:68;;12583:10;;12603:4;;12610:8;;12620:1;;12558:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:632;;;;12727:24;;-1:-1:-1;;;12727:24:0;;12692:7;;12755:10;;-1:-1:-1;;;;;12727:14:0;;;;;:24;;12742:8;;12727:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12727:38:0;;12719:76;;;;-1:-1:-1;;;12719:76:0;;;;;;;:::i;:::-;12814:60;;-1:-1:-1;;;12814:60:0;;-1:-1:-1;;;;;12814:23:0;;;;;:60;;12838:10;;12858:4;;12865:8;;12814:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12258:632;;12941:217;;;;;;;;12970:7;-1:-1:-1;;;;;12941:217:0;;;;;12998:8;12941:217;;;;13025:10;-1:-1:-1;;;;;12941:217:0;;;;;13058:10;-1:-1:-1;;;;;12941:217:0;;;;;13087:6;12941:217;;;;13114:1;12941:217;;;;13137:9;12941:217;;;;;12913:6;:15;12920:7;-1:-1:-1;;;;;12913:15:0;-1:-1:-1;;;;;12913:15:0;;;;;;;;;;;;:25;12929:8;12913:25;;;;;;;;;;;:245;;;;;;;;;;;;;-1:-1:-1;;;;;12913:245:0;;;;;-1:-1:-1;;;;;12913:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12913:245:0;;;;;-1:-1:-1;;;;;12913:245:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12913:245:0;;;;;-1:-1:-1;;;;;12913:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13176:89;13194:7;13203:8;13213:3;13218;13223:10;13235:6;13243:9;13254:10;13176:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;11340:1935;;;;;;;;:::o;16873:757::-;21304:27;;-1:-1:-1;;;21304:27:0;;-1:-1:-1;;;;;21304:5:0;:15;;;;:27;;21320:10;;21304:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21296:51;;;;-1:-1:-1;;;21296:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17014:22:0;::::1;16990:21;17014:22:::0;;;:13:::1;:22;::::0;;;;17055:9;;::::1;;17047:54;;;;-1:-1:-1::0;;;17047:54:0::1;;;;;;;:::i;:::-;17121:17;:4;-1:-1:-1::0;;;;;17121:15:0::1;;:17::i;:::-;17120:18;:40;;;-1:-1:-1::0;;;;;;17142:18:0;::::1;17158:1;17142:18;;17120:40;17112:85;;;;-1:-1:-1::0;;;17112:85:0::1;;;;;;;:::i;:::-;17216:31;17233:7;17242:4;17216:16;:31::i;:::-;17208:66;;;;-1:-1:-1::0;;;17208:66:0::1;;;;;;;:::i;:::-;17291:12:::0;;::::1;::::0;::::1;;;17287:273;;;17371:52;::::0;-1:-1:-1;;;17371:52:0;;17348:7;;-1:-1:-1;;;;;17371:24:0;::::1;::::0;::::1;::::0;:52:::1;::::0;17396:4;;17402:3;;17407:8;;17417:1:::1;::::0;17371:52:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17287:273;;;;17504:44;::::0;-1:-1:-1;;;17504:44:0;;17481:7;;-1:-1:-1;;;;;17504:23:0;::::1;::::0;::::1;::::0;:44:::1;::::0;17528:4;;17534:3;;17539:8;;17504:44:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17287:273;;17577:45;17593:7;17602:4;17608:3;17613:8;17577:45;;;;;;;;;:::i;:::-;;;;;;;;21358:1;16873:757:::0;;;;:::o;8945:41::-;;;:::o;14077:738::-;-1:-1:-1;;;;;14217:22:0;;14193:21;14217:22;;;:13;:22;;;;;14258:9;;;;14250:54;;;;-1:-1:-1;;;14250:54:0;;;;;;;:::i;:::-;14323:23;:10;-1:-1:-1;;;;;14323:21:0;;:23::i;:::-;:51;;;-1:-1:-1;;;;;;14350:24:0;;14372:1;14350:24;14323:51;14315:95;;;;-1:-1:-1;;;14315:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14450:15:0;;;14421:26;14450:15;;;:6;:15;;;;;;;;:25;;;;;;;;14494:15;;;;14450:25;;14494:15;14513:10;14494:29;14486:66;;;;-1:-1:-1;;;14486:66:0;;;;;;;:::i;:::-;14571:9;:17;;;14592:1;14571:22;14563:53;;;;-1:-1:-1;;;14563:53:0;;;;;;;:::i;:::-;14629:19;;;:32;;-1:-1:-1;;;;;;14629:32:0;-1:-1:-1;;;;;14629:32:0;;;;;;;;;;14672:15;;;:24;;;14771:18;;;;14791:15;;;;14714:93;;;;;;14732:7;;14741:8;;14629:32;;14672:24;;14771:18;;;14791:15;;14714:93;:::i;:::-;;;;;;;;14077:738;;;;;;:::o;8995:22::-;;;;:::o;20936:197::-;21304:27;;-1:-1:-1;;;21304:27:0;;-1:-1:-1;;;;;21304:5:0;:15;;;;:27;;21320:10;;21304:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21296:51;;;;-1:-1:-1;;;21296:51:0;;;;;;;:::i;:::-;21025:5:::1;21014:8;:16;21006:50;;;;-1:-1:-1::0;;;21006:50:0::1;;;;;;;:::i;:::-;21067:7;:18:::0;;;21103:22:::1;::::0;::::1;::::0;::::1;::::0;21077:8;;21103:22:::1;:::i;:::-;;;;;;;;20936:197:::0;:::o;18202:259::-;18264:19;18285:15;18312:11;18326:15;;;;;;;;;;;;;;-1:-1:-1;;;18326:15:0;;;:8;:15::i;:::-;18312:29;;18352:11;18366:16;18373:8;18366:6;:16::i;:::-;18423:30;;-1:-1:-1;;;18423:30:0;;18352;;-1:-1:-1;;;;;;18423:25:0;;;;;:30;;18352;;18423;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18423:30:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18393:60:0;;;-1:-1:-1;18202:259:0;;-1:-1:-1;;;;;;;;;18202:259:0:o;21141:114::-;21227:20;;-1:-1:-1;;;21227:20:0;;21201:7;;-1:-1:-1;;;;;21227:5:0;:13;;;;:20;;21241:5;;21227:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21220:27;21141:114;-1:-1:-1;;21141:114:0:o;15845:1020::-;21304:27;;-1:-1:-1;;;21304:27:0;;-1:-1:-1;;;;;21304:5:0;:15;;;;:27;;21320:10;;21304:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21296:51;;;;-1:-1:-1;;;21296:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16001:22:0;::::1;15977:21;16001:22:::0;;;:13:::1;:22;::::0;;;;16042:9;;::::1;;16034:54;;;;-1:-1:-1::0;;;16034:54:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16128:15:0;::::1;16099:26;16128:15:::0;;;:6:::1;:15;::::0;;;;;;;:25;;;;;;;;;16172:17:::1;::::0;::::1;::::0;16128:25;;16172:22:::1;16164:53;;;;-1:-1:-1::0;;;16164:53:0::1;;;;;;;:::i;:::-;16236:18;::::0;::::1;::::0;::::1;;16228:43;;;;-1:-1:-1::0;;;16228:43:0::1;;;;;;;:::i;:::-;16309:6;16290:9;:15;;;:25;16282:53;;;;-1:-1:-1::0;;;16282:53:0::1;;;;;;;:::i;:::-;16348:36;16357:7;16366:9;:17;;;16348:8;:36::i;:::-;16417:1;16397:17;::::0;::::1;:21:::0;16435:12;;::::1;::::0;::::1;;;16431:309;;;16560:17;::::0;;::::1;::::0;16515:70:::1;::::0;-1:-1:-1;;;16515:70:0;;16492:7;;-1:-1:-1;;;;;16515:24:0;::::1;::::0;::::1;::::0;:70:::1;::::0;16548:4:::1;::::0;16555:3;;16560:17;;;16515:70:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16431:309;;;;16710:17;::::0;::::1;::::0;16666:62:::1;::::0;-1:-1:-1;;;16666:62:0;;16643:7;;-1:-1:-1;;;;;16666:23:0;::::1;::::0;::::1;::::0;:62:::1;::::0;16698:4:::1;::::0;16705:3;;16666:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16431:309;;16779:17;::::0;::::1;::::0;16798:19:::1;::::0;::::1;::::0;16819:15:::1;::::0;::::1;::::0;16841::::1;::::0;::::1;::::0;16757:100:::1;::::0;::::1;::::0;::::1;::::0;16770:7;;16779:17;;-1:-1:-1;;;;;16798:19:0;;::::1;::::0;16819:15;;;::::1;::::0;16836:3;;16757:100:::1;:::i;13283:786::-:0;-1:-1:-1;;;;;13387:22:0;;;13363:21;13387:22;;;:13;:22;;;;;;;;13449:6;:15;;;;;:25;;;;;;;;;13493:15;;;;13387:22;;13449:25;;13493:15;13512:10;13493:29;13485:66;;;;-1:-1:-1;;;13485:66:0;;;;;;;:::i;:::-;13570:9;:17;;;13591:1;13570:22;13562:53;;;;-1:-1:-1;;;13562:53:0;;;;;;;:::i;:::-;13646:1;13626:17;;;:21;13664:12;;;;;;;13660:333;;;13784:15;;;;;13801:17;;;;13744:82;;-1:-1:-1;;;13744:82:0;;13721:7;;-1:-1:-1;;;;;13744:24:0;;;;;;:82;;13777:4;;13784:15;;;;13801:17;;13784:15;13744:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13660:333;;;;13946:15;;;;;13963:17;;;13907:74;;-1:-1:-1;;;13907:74:0;;13884:7;;-1:-1:-1;;;;;13907:23:0;;;;;;:74;;13939:4;;13946:15;;13963:17;13907:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13660:333;;14045:15;;;;14008:53;;;;;;14026:7;;14035:8;;-1:-1:-1;;;;;14045:15:0;;;;14008:53;:::i;:::-;;;;;;;;13283:786;;;;:::o;14825:1012::-;-1:-1:-1;;;;;14948:22:0;;14924:21;14948:22;;;:13;:22;;;;;14989:9;;;;14981:54;;;;-1:-1:-1;;;14981:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15075:15:0;;15046:26;15075:15;;;:6;:15;;;;;;;;:25;;;;;;;;;15119:17;;;;15075:25;;15119:22;15111:53;;;;-1:-1:-1;;;15111:53:0;;;;;;;:::i;:::-;15184:18;;;;;;15183:19;15175:47;;;;-1:-1:-1;;;15175:47:0;;;;;;;:::i;:::-;15260:6;15241:9;:15;;;:25;15233:53;;;;-1:-1:-1;;;15233:53:0;;;;;;;:::i;:::-;15299:36;15308:7;15317:9;:17;;;15299:8;:36::i;:::-;15368:1;15348:17;;;:21;15386:12;;;;;;;15382:323;;;15518:17;;;;;15466:77;;-1:-1:-1;;;15466:77:0;;15443:7;;-1:-1:-1;;;;;15466:24:0;;;;;:77;;15499:4;;15506:10;;15518:17;;;15466:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15382:323;;;;15675:17;;;;15624:69;;-1:-1:-1;;;15624:69:0;;15601:7;;-1:-1:-1;;;;;15624:23:0;;;;;:69;;15656:4;;15663:10;;15624:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15382:323;;15744:17;;;;15763:19;;;;15784:15;;;;15813;;;;15722:107;;;;;;15735:7;;15744:17;;-1:-1:-1;;;;;15763:19:0;;;;15784:15;;;;;15801:10;;15722:107;:::i;17638:334::-;-1:-1:-1;;;;;17773:22:0;;17720:16;17773:22;;;:13;:22;;;;;17814:9;;;;17806:54;;;;-1:-1:-1;;;17806:54:0;;;;;;;:::i;:::-;17919:45;;-1:-1:-1;;;17919:45:0;;17893:7;;-1:-1:-1;;;;;17919:20:0;;;;;:45;;17940:8;;17958:4;;17919:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17912:52;17638:334;-1:-1:-1;;;;;17638:334:0:o;9170:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20489:188::-;-1:-1:-1;;;20489:188:0;;;;;;;;:::o;11183:149::-;21304:27;;-1:-1:-1;;;21304:27:0;;-1:-1:-1;;;;;21304:5:0;:15;;;;:27;;21320:10;;21304:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21296:51;;;;-1:-1:-1;;;21296:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11251:22:0;::::1;11283:5;11251:22:::0;;;:13:::1;:22;::::0;;;;;;:37;;-1:-1:-1;;11251:37:0::1;::::0;;11304:20;::::1;::::0;::::1;::::0;11265:7;;11304:20:::1;:::i;2066:808::-:0;2126:4;2784:20;;2628:66;2823:15;;;;;:42;;;2854:11;2842:8;:23;;2823:42;2815:51;2066:808;-1:-1:-1;;;;2066:808:0:o;18469:1820::-;18542:14;18559:17;;;;;;;;;;;;;;-1:-1:-1;;;18559:17:0;;;:8;:17::i;:::-;18542:34;-1:-1:-1;;;;;;18595:20:0;;18587:54;;;;-1:-1:-1;;;18587:54:0;;;;;;;:::i;:::-;18654:26;;:::i;:::-;-1:-1:-1;;;;;;18683:15:0;;;;;;;:6;:15;;;;;;;;:25;;;;;;;;;18654:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18769:13;18765:52;;18799:7;;;;;18765:52;-1:-1:-1;;;;;18851:22:0;;18827:21;18851:22;;;:13;:22;;;;;18938:9;;18851:22;;18827:21;;;18938:9;;;;;18934:94;;;18983:33;18997:10;:18;;;18983:13;:33::i;:::-;18964:52;;-1:-1:-1;18964:52:0;-1:-1:-1;18934:94:0;19038:17;19058:32;19084:5;19058:21;19071:7;;19058:8;:12;;:21;;;;:::i;:::-;:25;;:32::i;:::-;19038:52;-1:-1:-1;19101:20:0;19124:31;19149:5;19124:20;:8;19137:6;19124:12;:20::i;:31::-;19101:54;-1:-1:-1;19166:18:0;19187:41;19101:54;19187:23;:8;19200:9;19187:12;:23::i;:::-;:27;;:41::i;:::-;19166:62;;19241:15;19291:1;-1:-1:-1;;;;;19259:34:0;:10;:20;;;-1:-1:-1;;;;;19259:34:0;;:49;;19303:5;19259:49;;;19296:4;19259:49;19241:67;-1:-1:-1;19323:14:0;;19319:261;;19359:10;19354:215;;19390:84;19422:10;:20;;;19444:10;19456:6;19464:9;19390:31;:84::i;:::-;19354:215;;;19515:18;:6;-1:-1:-1;;;;;19515:16:0;;:18::i;:::-;-1:-1:-1;;;;;19515:27:0;:38;19543:9;19515:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19354:215;19596:17;;19592:270;;19635:10;19630:221;;19666:87;19698:10;:20;;;19720:10;19732:6;19740:12;19666:31;:87::i;:::-;19630:221;;;19794:18;:6;-1:-1:-1;;;;;19794:16:0;;:18::i;:::-;-1:-1:-1;;;;;19794:27:0;:41;19822:12;19794:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19630:221;19878:15;;19874:284;;19915:10;19910:237;;19946:95;19978:10;:20;;;20000:10;20012;:16;;;20030:10;19946:31;:95::i;:::-;19910:237;;;20082:28;:10;:16;;;-1:-1:-1;;;;;20082:26:0;;:28::i;:::-;-1:-1:-1;;;;;20082:37:0;:49;20120:10;20082:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19910:237;20172:10;:39;;;;;20210:1;20186:21;:25;20172:39;20168:114;;;20228:42;;:10;;20248:21;20228:42;;;;;;;;;20248:21;20228:10;:42;;;;;;;;;;;;;;;;;;;;;20168:114;18469:1820;;;;;;;;;;;;;:::o;3581:471::-;3639:7;3884:6;3880:47;;-1:-1:-1;3914:1:0;3907:8;;3880:47;3951:5;;;3955:1;3951;:5;:1;3975:5;;;;;:10;3967:56;;;;-1:-1:-1;;;3967:56:0;;;;;;;:::i;:::-;4043:1;3581:471;-1:-1:-1;;;3581:471:0:o;4062:132::-;4120:7;4147:39;4151:1;4154;4147:39;;;;;;;;;;;;;;;;;:3;:39::i;3233:136::-;3291:7;3318:43;3322:1;3325;3318:43;;;;;;;;;;;;;;;;;:3;:43::i;976:402::-;1155:12;1169:17;1190:5;-1:-1:-1;;;;;1190:10:0;1224;1236:4;1242:2;1246:5;1201:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1201:51:0;;;;;;;;;;;1190:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1154:99;;;;1272:7;:57;;;;-1:-1:-1;1284:11:0;;:16;;:44;;;1315:4;1304:24;;;;;;;;;;;;:::i;:::-;1264:106;;;;-1:-1:-1;;;1264:106:0;;;;;;;:::i;:::-;976:402;;;;;;:::o;2882:127::-;2992:7;2882:127::o;4204:345::-;4290:7;4392:12;4385:5;4377:28;;;;-1:-1:-1;;;4377:28:0;;;;;;;;:::i;:::-;;4416:9;4432:1;4428;:5;;;;;;;4204:345;-1:-1:-1;;;;;4204:345:0:o;3379:192::-;3465:7;3501:12;3493:6;;;;3485:29;;;;-1:-1:-1;;;3485:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3537:5:0;;;3379:192::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;563:336::-;;;677:3;670:4;662:6;658:17;654:27;644:2;;-1:-1;;685:12;644:2;-1:-1;715:20;;755:18;744:30;;741:2;;;-1:-1;;777:12;741:2;821:4;813:6;809:17;797:29;;872:3;821:4;852:17;813:6;838:32;;835:41;832:2;;;889:1;;879:12;832:2;637:262;;;;;:::o;1359:444::-;;1472:3;1465:4;1457:6;1453:17;1449:27;1439:2;;-1:-1;;1480:12;1439:2;1520:6;1514:13;1542:65;1557:49;1599:6;1557:49;:::i;:::-;1542:65;:::i;:::-;1533:74;;1627:6;1620:5;1613:21;1731:3;1663:4;1722:6;1655;1713:16;;1710:25;1707:2;;;1748:1;;1738:12;1707:2;1758:39;1790:6;1663:4;1689:5;1685:16;1663:4;1655:6;1651:17;1758:39;:::i;:::-;;1432:371;;;;:::o;2089:130::-;2165:13;;45045:4;45034:16;;46844:33;;46834:2;;46891:1;;46881:12;2226:241;;2330:2;2318:9;2309:7;2305:23;2301:32;2298:2;;;-1:-1;;2336:12;2298:2;85:6;72:20;97:33;124:5;97:33;:::i;2474:263::-;;2589:2;2577:9;2568:7;2564:23;2560:32;2557:2;;;-1:-1;;2595:12;2557:2;226:6;220:13;238:33;265:5;238:33;:::i;2744:366::-;;;2865:2;2853:9;2844:7;2840:23;2836:32;2833:2;;;-1:-1;;2871:12;2833:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2923:63;-1:-1;3023:2;3062:22;;72:20;97:33;72:20;97:33;:::i;:::-;3031:63;;;;2827:283;;;;;:::o;3117:741::-;;;;;;3291:3;3279:9;3270:7;3266:23;3262:33;3259:2;;;-1:-1;;3298:12;3259:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3350:63;-1:-1;3450:2;3489:22;;72:20;97:33;72:20;97:33;:::i;:::-;3458:63;-1:-1;3558:2;3597:22;;1878:20;;-1:-1;3694:2;3679:18;;3666:32;3718:18;3707:30;;3704:2;;;-1:-1;;3740:12;3704:2;3778:64;3834:7;3825:6;3814:9;3810:22;3778:64;:::i;:::-;3253:605;;;;-1:-1;3253:605;;-1:-1;3760:82;;;3253:605;-1:-1;;;3253:605::o;3865:867::-;;;;;;;4056:3;4044:9;4035:7;4031:23;4027:33;4024:2;;;-1:-1;;4063:12;4024:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4115:63;-1:-1;4215:2;4254:22;;72:20;97:33;72:20;97:33;:::i;:::-;4223:63;-1:-1;4323:2;4362:22;;1878:20;;-1:-1;4431:2;4470:22;;1878:20;;-1:-1;4567:3;4552:19;;4539:33;4592:18;4581:30;;4578:2;;;-1:-1;;4614:12;4578:2;4652:64;4708:7;4699:6;4688:9;4684:22;4652:64;:::i;:::-;4018:714;;;;-1:-1;4018:714;;-1:-1;4018:714;;4634:82;;4018:714;-1:-1;;;4018:714::o;4739:360::-;;;4857:2;4845:9;4836:7;4832:23;4828:32;4825:2;;;-1:-1;;4863:12;4825:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4915:63;-1:-1;5015:2;5051:22;;347:20;372:30;347:20;372:30;:::i;5106:366::-;;;5227:2;5215:9;5206:7;5202:23;5198:32;5195:2;;;-1:-1;;5233:12;5195:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5285:63;5385:2;5424:22;;;;1878:20;;-1:-1;;;5189:283::o;5479:617::-;;;;;5634:3;5622:9;5613:7;5609:23;5605:33;5602:2;;;-1:-1;;5641:12;5602:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5693:63;-1:-1;5793:2;5832:22;;1878:20;;-1:-1;5901:2;5940:22;;72:20;97:33;72:20;97:33;:::i;:::-;5909:63;-1:-1;6009:2;6048:22;;72:20;97:33;72:20;97:33;:::i;:::-;5596:500;;;;-1:-1;5596:500;;-1:-1;;5596:500::o;6103:617::-;;;;;6258:3;6246:9;6237:7;6233:23;6229:33;6226:2;;;-1:-1;;6265:12;6226:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6317:63;-1:-1;6417:2;6456:22;;1878:20;;-1:-1;6525:2;6564:22;;72:20;97:33;72:20;97:33;:::i;:::-;6220:500;;;;-1:-1;6533:63;;6633:2;6672:22;1878:20;;-1:-1;;6220:500::o;6727:737::-;;;;;;6896:3;6884:9;6875:7;6871:23;6867:33;6864:2;;;-1:-1;;6903:12;6864:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6955:63;-1:-1;7055:2;7094:22;;1878:20;;-1:-1;7163:2;7202:22;;72:20;97:33;72:20;97:33;:::i;:::-;7171:63;-1:-1;7271:2;7310:22;;1878:20;;-1:-1;7379:3;7416:22;;347:20;372:30;347:20;372:30;:::i;:::-;7388:60;;;;6858:606;;;;;;;;:::o;7471:491::-;;;;7609:2;7597:9;7588:7;7584:23;7580:32;7577:2;;;-1:-1;;7615:12;7577:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;7667:63;7767:2;7806:22;;1878:20;;-1:-1;7875:2;7914:22;;;1878:20;;7571:391;-1:-1;;;7571:391::o;7969:257::-;;8081:2;8069:9;8060:7;8056:23;8052:32;8049:2;;;-1:-1;;8087:12;8049:2;495:6;489:13;507:30;531:5;507:30;:::i;8233:347::-;;8347:2;8335:9;8326:7;8322:23;8318:32;8315:2;;;-1:-1;;8353:12;8315:2;8411:17;8398:31;8449:18;8441:6;8438:30;8435:2;;;-1:-1;;8471:12;8435:2;8532:22;;1003:4;991:17;;987:27;-1:-1;977:2;;-1:-1;;1018:12;977:2;1065:6;1052:20;1087:65;1102:49;1144:6;1102:49;:::i;1087:65::-;1172:6;1165:5;1158:21;1276:3;8347:2;1267:6;1200;1258:16;;1255:25;1252:2;;;-1:-1;;1283:12;1252:2;45967:6;8347:2;1200:6;1196:17;8347:2;1234:5;1230:16;45944:30;46005:16;;;8347:2;46005:16;45998:27;;;;-1:-1;1234:5;8309:271;-1:-1;;8309:271::o;8587:1144::-;;;;;;;8807:3;8795:9;8786:7;8782:23;8778:33;8775:2;;;-1:-1;;8814:12;8775:2;8865:17;8859:24;8903:18;;8895:6;8892:30;8889:2;;;-1:-1;;8925:12;8889:2;8955:74;9021:7;9012:6;9001:9;8997:22;8955:74;:::i;:::-;8945:84;;9087:2;9076:9;9072:18;9066:25;9052:39;;8903:18;9103:6;9100:30;9097:2;;;-1:-1;;9133:12;9097:2;;9163:74;9229:7;9220:6;9209:9;9205:22;9163:74;:::i;:::-;9153:84;;;9274:2;9328:9;9324:22;2026:13;9282:74;;9393:2;9447:9;9443:22;2026:13;9401:74;;9512:3;9567:9;9563:22;2026:13;9521:74;;9632:3;9687:9;9683:22;2026:13;9641:74;;8769:962;;;;;;;;:::o;9738:241::-;;9842:2;9830:9;9821:7;9817:23;9813:32;9810:2;;;-1:-1;;9848:12;9810:2;-1:-1;1878:20;;9804:175;-1:-1;9804:175::o;9986:263::-;;10101:2;10089:9;10080:7;10076:23;10072:32;10069:2;;;-1:-1;;10107:12;10069:2;-1:-1;2026:13;;10063:186;-1:-1;10063:186::o;10256:1513::-;;;;;;;;;10518:3;10506:9;10497:7;10493:23;10489:33;10486:2;;;-1:-1;;10525:12;10486:2;10619:22;2026:13;10577:74;;10706:64;10762:7;10688:2;10742:9;10738:22;10706:64;:::i;:::-;10696:74;;10828:2;10817:9;10813:18;10807:25;10852:18;;10844:6;10841:30;10838:2;;;-1:-1;;10874:12;10838:2;10904:74;10970:7;10961:6;10950:9;10946:22;10904:74;:::i;:::-;10894:84;;11036:2;11025:9;11021:18;11015:25;11001:39;;10852:18;11052:6;11049:30;11046:2;;;-1:-1;;11082:12;11046:2;11112:74;11178:7;11169:6;11158:9;11154:22;11112:74;:::i;:::-;11102:84;;11244:3;11233:9;11229:19;11223:26;11209:40;;10852:18;11261:6;11258:30;11255:2;;;-1:-1;;11291:12;11255:2;;11321:74;11387:7;11378:6;11367:9;11363:22;11321:74;:::i;:::-;11311:84;;;11432:3;11487:9;11483:22;2026:13;11441:74;;11552:3;11607:9;11603:22;2026:13;11561:74;;11691:62;11745:7;11672:3;11725:9;11721:22;11691:62;:::i;:::-;11681:72;;10480:1289;;;;;;;;;;;:::o;11776:360::-;;;11894:2;11882:9;11873:7;11869:23;11865:32;11862:2;;;-1:-1;;11900:12;11862:2;1891:6;1878:20;11952:63;;12052:2;12092:9;12088:22;347:20;372:30;396:5;372:30;:::i;20806:271::-;;12800:5;43760:12;12911:52;12956:6;12951:3;12944:4;12937:5;12933:16;12911:52;:::i;:::-;12975:16;;;;;20940:137;-1:-1;;20940:137::o;21084:222::-;-1:-1;;;;;44829:54;;;;12363:37;;21211:2;21196:18;;21182:124::o;21558:460::-;-1:-1;;;;;44829:54;;;12222:58;;44829:54;;;;21921:2;21906:18;;12363:37;22004:2;21989:18;;20757:37;;;;21749:2;21734:18;;21720:298::o;22025:892::-;-1:-1;;;;;44829:54;;;12222:58;;44829:54;;;;22525:2;22510:18;;12363:37;22608:2;22593:18;;20757:37;22699:2;22684:18;;13267:58;;;;44840:42;22736:3;22721:19;;22714:49;;;22025:892;22337:19;;;44033;44073:14;;;22323:594::o;22924:349::-;-1:-1;;;;;44829:54;;;;12222:58;;23259:2;23244:18;;20757:37;23087:2;23072:18;;23058:215::o;23280:333::-;-1:-1;;;;;44829:54;;;12363:37;;44829:54;;23599:2;23584:18;;12363:37;23435:2;23420:18;;23406:207::o;24986:556::-;-1:-1;;;;;44829:54;;;12363:37;;44829:54;;;25362:2;25347:18;;12363:37;44829:54;;25445:2;25430:18;;12363:37;25528:2;25513:18;;20757:37;;;;25197:3;25182:19;;25168:374::o;26883:321::-;-1:-1;;;;;44829:54;;;;12363:37;;44590:13;44583:21;27190:2;27175:18;;12477:34;27032:2;27017:18;;27003:201::o;27211:444::-;-1:-1;;;;;44829:54;;;12363:37;;27558:2;27543:18;;20757:37;;;;44829:54;;;27641:2;27626:18;;12363:37;27394:2;27379:18;;27365:290::o;27662:796::-;-1:-1;;;;;44829:54;;;12363:37;;28102:2;28087:18;;20757:37;;;;44829:54;;;28185:2;28170:18;;12363:37;44829:54;;;28268:2;28253:18;;12363:37;44829:54;;;28359:3;28344:19;;12222:58;44840:42;28428:19;;20757:37;;;;27937:3;27922:19;;27908:550::o;29252:880::-;-1:-1;;;;;44829:54;;;12363:37;;29706:2;29691:18;;20757:37;;;;44829:54;;;29789:2;29774:18;;12363:37;44829:54;;;;29872:2;29857:18;;12363:37;29955:3;29940:19;;20757:37;;;;44840:42;30024:19;;20757:37;;;;44590:13;;44583:21;30117:3;30102:19;;12477:34;29541:3;29526:19;;29512:620::o;30139:768::-;-1:-1;;;;;44829:54;;;12363:37;;30565:2;30550:18;;20757:37;;;;44829:54;;;30648:2;30633:18;;12363:37;30731:2;30716:18;;20757:37;;;;44590:13;44583:21;30808:3;30793:19;;12477:34;44829:54;;;44840:42;30877:19;;12363:37;30400:3;30385:19;;30371:536::o;30914:1008::-;-1:-1;;;;;44829:54;;;12363:37;;31404:2;31389:18;;20757:37;;;;31487:2;31472:18;;20757:37;;;;31570:2;31555:18;;20757:37;;;;44829:54;;;31653:3;31638:19;;12363:37;44840:42;31722:19;;20757:37;44590:13;44583:21;31815:3;31800:19;;12477:34;44829:54;;;31907:3;31892:19;;12222:58;31239:3;31224:19;;31210:712::o;31929:210::-;44590:13;;44583:21;12477:34;;32050:2;32035:18;;32021:118::o;32146:408::-;44590:13;;44583:21;12477:34;;44590:13;;44583:21;32463:2;32448:18;;12477:34;44590:13;44583:21;32540:2;32525:18;;12477:34;32311:2;32296:18;;32282:272::o;32561:218::-;-1:-1;;;;;;44677:78;;;;12592:36;;32686:2;32671:18;;32657:122::o;33067:310::-;;33214:2;33235:17;33228:47;13482:5;43760:12;44045:6;33214:2;33203:9;33199:18;44033:19;13576:52;13621:6;44073:14;33203:9;44073:14;33214:2;13602:5;13598:16;13576:52;:::i;:::-;46400:7;46384:14;-1:-1;;46380:28;13640:39;;;;44073:14;13640:39;;33185:192;-1:-1;;33185:192::o;33384:416::-;33584:2;33598:47;;;13916:2;33569:18;;;44033:19;-1:-1;;;44073:14;;;13932:39;13990:12;;;33555:245::o;33807:416::-;34007:2;34021:47;;;14241:2;33992:18;;;44033:19;-1:-1;;;44073:14;;;14257:34;14310:12;;;33978:245::o;34230:416::-;34430:2;34444:47;;;34415:18;;;44033:19;14597:34;44073:14;;;14577:55;14651:12;;;34401:245::o;34653:416::-;34853:2;34867:47;;;14902:2;34838:18;;;44033:19;-1:-1;;;44073:14;;;14918:44;14981:12;;;34824:245::o;35076:416::-;35276:2;35290:47;;;15232:2;35261:18;;;44033:19;-1:-1;;;44073:14;;;15248:35;15302:12;;;35247:245::o;35499:416::-;35699:2;35713:47;;;35684:18;;;44033:19;15589:34;44073:14;;;15569:55;15643:12;;;35670:245::o;35922:416::-;36122:2;36136:47;;;15894:2;36107:18;;;44033:19;15930:25;44073:14;;;15910:46;15975:12;;;36093:245::o;36345:416::-;36545:2;36559:47;;;16226:2;36530:18;;;44033:19;-1:-1;;;44073:14;;;16242:44;16305:12;;;36516:245::o;36768:416::-;36968:2;36982:47;;;16556:2;36953:18;;;44033:19;16592:27;44073:14;;;16572:48;16639:12;;;36939:245::o;37191:416::-;37391:2;37405:47;;;16890:2;37376:18;;;44033:19;16926:33;44073:14;;;16906:54;16979:12;;;37362:245::o;37614:416::-;37814:2;37828:47;;;17230:2;37799:18;;;44033:19;17266:27;44073:14;;;17246:48;17313:12;;;37785:245::o;38037:416::-;38237:2;38251:47;;;17564:2;38222:18;;;44033:19;-1:-1;;;44073:14;;;17580:41;17640:12;;;38208:245::o;38460:416::-;38660:2;38674:47;;;17891:2;38645:18;;;44033:19;17927:34;44073:14;;;17907:55;-1:-1;;;17982:12;;;17975:25;18019:12;;;38631:245::o;38883:416::-;39083:2;39097:47;;;18270:2;39068:18;;;44033:19;18306:26;44073:14;;;18286:47;18352:12;;;39054:245::o;39306:416::-;39506:2;39520:47;;;18603:2;39491:18;;;44033:19;-1:-1;;;44073:14;;;18619:38;18676:12;;;39477:245::o;39729:416::-;39929:2;39943:47;;;18927:2;39914:18;;;44033:19;18963:30;44073:14;;;18943:51;19013:12;;;39900:245::o;40152:416::-;40352:2;40366:47;;;19533:2;40337:18;;;44033:19;-1:-1;;;44073:14;;;19549:38;19606:12;;;40323:245::o;40575:416::-;40775:2;40789:47;;;19857:2;40760:18;;;44033:19;-1:-1;;;44073:14;;;19873:45;19937:12;;;40746:245::o;40998:416::-;41198:2;41212:47;;;41183:18;;;44033:19;20224:34;44073:14;;;20204:55;20278:12;;;41169:245::o;41421:416::-;41621:2;41635:47;;;20529:2;41606:18;;;44033:19;20565:34;44073:14;;;20545:55;-1:-1;;;20620:12;;;20613:28;20660:12;;;41592:245::o;41844:222::-;20757:37;;;41971:2;41956:18;;41942:124::o;42073:333::-;20757:37;;;-1:-1;;;;;44829:54;42392:2;42377:18;;12363:37;42228:2;42213:18;;42199:207::o;42413:321::-;20757:37;;;44590:13;44583:21;42720:2;42705:18;;12477:34;42562:2;42547:18;;42533:201::o;42741:333::-;20757:37;;;43060:2;43045:18;;20757:37;42896:2;42881:18;;42867:207::o;43081:256::-;43143:2;43137:9;43169:17;;;43244:18;43229:34;;43265:22;;;43226:62;43223:2;;;43301:1;;43291:12;43223:2;43143;43310:22;43121:216;;-1:-1;43121:216::o;43344:322::-;;43488:18;43480:6;43477:30;43474:2;;;-1:-1;;43510:12;43474:2;-1:-1;46400:7;43564:17;-1:-1;;43560:33;43651:4;43641:15;;43411:255::o;46040:268::-;46105:1;46112:101;46126:6;46123:1;46120:13;46112:101;;;46193:11;;;46187:18;46174:11;;;46167:39;46148:2;46141:10;46112:101;;;46228:6;46225:1;46222:13;46219:2;;;46105:1;46284:6;46279:3;46275:16;46268:27;46219:2;;46089:219;;;:::o;46421:117::-;-1:-1;;;;;44829:54;;46480:35;;46470:2;;46529:1;;46519:12;46470:2;46464:74;:::o;46545:111::-;46626:5;44590:13;44583:21;46604:5;46601:32;46591:2;;46647:1;;46637:12

Swarm Source

ipfs://30b02453cd647f3e1c2489e7098a44e08bbf15d8e08f01106c8e08e7ab31a4e6
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading