PSA: Scheduled Server Maintenance & Upgrades [2nd-December-2021 6:00 AM UTC] - Estimated duration: 3 hours.

Contract 0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d470 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x63531d30ff19919d94dee2597aae5eb148ceb9b3d76144dd461ea54226ce23edRequest Summon130988472021-12-01 8:01:4422 hrs 23 mins ago0xdc5cef5aae13b3b40fd62ab62fd1e4026dd68d46 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.001030505
0x5cff8d94c8c8c9ecf123e59072c9791aeeb7788d2a5ea9d9792de6bf69ac0a1aRequest Summon130988362021-12-01 8:00:5722 hrs 23 mins ago0xdc5cef5aae13b3b40fd62ab62fd1e4026dd68d46 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00124149
0x76766ff3b628a4f331121cb641aad121693b88648acca349de9d40197dedd045Request Summon130987962021-12-01 7:57:4522 hrs 27 mins ago0xdc5cef5aae13b3b40fd62ab62fd1e4026dd68d46 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00124149
0x3c812d1c2948821504ec191eb8725aeb4c9bbee2c15d70b18463b41139ae265bRequest Summon130987352021-12-01 7:53:0722 hrs 31 mins ago0xdc5cef5aae13b3b40fd62ab62fd1e4026dd68d46 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.000231715
0xcb193c685754e1a832d65006373b00d533cc03e97b4c141c868f9ceb6226055dOpen Package130117342021-11-28 1:53:414 days 4 hrs ago0x314999539150f8283da6b73fb50e44e8e1b0b0b1 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00942601
0xd616bb7acf9387f9b6bfcf381bf30bc80413354d6c8b834847634edb98f865faOpen Package130074282021-11-27 22:04:404 days 8 hrs ago0x0818fa793ac24681588174c9a6e4cf6c91b5ae2a IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940483
0xc771191db86526951fd07104c93492c575b68958b261b369a90fed7afb78a05bOpen Package130068422021-11-27 21:33:364 days 8 hrs ago0x34b63f8b3751cafad8d72c2e25baa2ebfc104c2a IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940501
0xfca32636532cbc694ea343b7adeabb2768183c4d4263b82c618e105817ffdac3Open Package130060542021-11-27 20:51:534 days 9 hrs ago0xd0b69fe897a9fbee27628a0843ec10f067965471 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940495
0xabdc6d8427e50a36fa3c6ed1bcdf3d791fb421aab56f681678a01a233158e92cOpen Package130058882021-11-27 20:42:524 days 9 hrs ago0x05ff201195391251e3bfe9fd86811e7691e4bdb7 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940507
0xd2325fb85eb1c94ea74584d221698ffb6630a4dc8a20f3a59bedc53f5f2602f7Open Package130056132021-11-27 20:28:194 days 9 hrs ago0x45a7f7a346b081b5dd36e6d42af920212466bb4c IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940495
0x5b0777af898c3279dba39c6fd0cc0d9ecb2aa3d79e8c2ad87f6cac48aa178e0dOpen Package130056112021-11-27 20:28:134 days 9 hrs ago0xe5ae9531d7e22cd38af94abfcc8be8c890be828a IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00942595
0xc73185b8f4faba43f995c28b4a418261ac7a645363bea654f2322cd839145405Open Package130043932021-11-27 19:24:394 days 11 hrs ago0xb1f2cd38bfae1422e81c30f756c21a03752ca881 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940489
0x1d530de40c44d8caea1da1c45d80e1f7b61538e5c3fc5e6e8f8cd03249a3c4c5Open Package130041472021-11-27 19:11:564 days 11 hrs ago0x2eac7afd31c75ffd49d7a8f000be0ea65ce49ae6 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940495
0x24b4bcfa33ac96328d87a30b73f5e63ed7f6bf8a0be8dc619e5d0e38bb762f18Open Package130040442021-11-27 19:06:044 days 11 hrs ago0x3e0a28b8d36aee33f9f96ec361964f47ce5347eb IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940489
0x1f9469cf265987b42418f9c84fa6c69fd2267aadb3c83ba6ed954a9dc7438deaOpen Package130036662021-11-27 18:44:414 days 11 hrs ago0x29b530f4b5a7a2707617267a98808fef39311925 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940477
0x1aff31c5851178441977fc9776e3efa14a1549bdf72c493a4d54a5805101ec66Open Package130034642021-11-27 18:33:004 days 11 hrs ago0x67fd0ba81980b173e9f0be8b9ee9deeac38562d5 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940495
0xcef00b051a55302a06e022abae09e9f13ae633c33612f829c6aeb5cbe1634237Open Package130034192021-11-27 18:30:384 days 11 hrs ago0x3ca2e5a84496741b652599acbe62347c5edb1418 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940495
0x7c0ab0176c4764189977332f2bb2695d0528fe30256d078bb64c5c0284274ec9Open Package130026272021-11-27 17:49:584 days 12 hrs ago0xc1b3f809a01c4c9117b0810105ceb320d713ea4f IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940489
0x3b1706af1ba46596efd9bc5f9dea741c5f4c6e00ee73122981afdc7a66717595Open Package130024562021-11-27 17:40:354 days 12 hrs ago0xc19beafc3d36f90efef74d8500ef0135781b2e4b IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940495
0xa11db0275c3e2769c59df45487765699cfe2811b420ed27da1aa5cd8d58f5870Open Package130021542021-11-27 17:24:004 days 13 hrs ago0x335f1ac72d65f1189d5873c3ddba717fb14db610 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940489
0x3ceb8793dae67e7fe656e06c6f1b40a2427744d8c5b469ada65941740b9cb855Open Package130017412021-11-27 17:00:484 days 13 hrs ago0xe242d2c6bf8ed7268bd4e231c260458b8f0bf560 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940507
0x15ec0a5c8d631ff801270ed37629d0f8f81368cc71a5e9c026d3941085f0c926Open Package130017192021-11-27 16:59:294 days 13 hrs ago0xf0c55b7c5f508edf926ce9bd06e2330053a5444c IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00942589
0x1b8e8973e30e4503fc2b2400dc9d23cf6d70acdc0cb669b31fefa448293ddaccOpen Package130012422021-11-27 16:32:374 days 13 hrs ago0xb1c7995eeb18291ee8549fde5fce5ff88a60af36 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940489
0x1b60a941c561b38d37759088273963636ecd69f147cf7c4b72270cdcba2c57beOpen Package130005812021-11-27 15:56:064 days 14 hrs ago0x314999539150f8283da6b73fb50e44e8e1b0b0b1 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00940459
0xd02d94df0348f57e8be6cd7f161dd3fa0a31f6ac81fab782819d6d447cd89a2aOpen Package129998552021-11-27 15:18:434 days 15 hrs ago0xe242d2c6bf8ed7268bd4e231c260458b8f0bf560 IN  0xd0b315ba4ac2f1533e6e34a28f6a2d121b70d4700 BNB0.00942601
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Issue

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : Issue.sol
pragma solidity ^0.8.0;
library Math {
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}
interface IBEP20 { 
	function totalSupply() external view returns (uint256);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool);
	function mint(address account, uint256 amount) external returns (bool);
	function burn(address account, uint256 amount) external returns (bool);
	function addOperator(address minter) external returns (bool);
	function removeOperator(address minter) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval( address indexed owner, address indexed spender, uint256 value );
}
library SafeBEP20 {
    using SafeMath for uint256;
    using Address for address;
    function safeTransfer(IBEP20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }
    function safeTransferFrom(IBEP20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }
    function safeApprove(IBEP20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeBEP20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function safeIncreaseAllowance(IBEP20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }
    function safeDecreaseAllowance(IBEP20 token, address spender, uint256 value) internal {
        // uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeBEP20: decreased allowance below zero");
        uint256 newAllowance = token.allowance(address(this), spender).sub(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }
    function callOptionalReturn(IBEP20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeBEP20: call to non-contract");
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeBEP20: low-level call failed");
        if (returndata.length > 0) { 
            require(abi.decode(returndata, (bool)), "SafeBEP20: ERC20 operation did not succeed");
        }
    }
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }
} 
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom( address from, address to, uint256 tokenId) external;
    function transferFrom( address from,address to,uint256 tokenId) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external;

    struct HeroesInfo {uint256 heroesNumber; string name; string race; string class; string tier; string tierBasic;}
    function getHeroesNumber(uint256 _tokenId) external view returns (HeroesInfo memory);
    function safeMint(address _to, uint256 _tokenId) external;
    function burn(address _from, uint256 _tokenId) external;
    function addHeroesNumber(uint256 _tokenId, uint256 _heroesNumber, string memory name, string memory race, string memory class, string memory tier, string memory tierBasic) external;
    function editTier(uint256 tokenId, string memory _tier) external;
    function deleteHeroesNumber(uint256 tokenId) external;
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) { return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; }
}
interface IAccessControl {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleAdmin(bytes32 role) external view returns (bytes32);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
    function renounceRole(bytes32 role, address account) external;
}
abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping(address => bool) members;
        bytes32 adminRole;
    }
    mapping(bytes32 => RoleData) private _roles;
    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
    event RoleAdminChanged(
        bytes32 indexed role,
        bytes32 indexed previousAdminRole,
        bytes32 indexed newAdminRole
    );
    event RoleGranted(
        bytes32 indexed role,
        address indexed account,
        address indexed sender
    );
    event RoleRevoked(
        bytes32 indexed role,
        address indexed account,
        address indexed sender
    );
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool){
        return
            interfaceId == type(IAccessControl).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function hasRole(bytes32 role, address account) public view override returns (bool) { return _roles[role].members[account]; }
    function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; }
    function grantRole(bytes32 role, address account) public virtual override { 
        require( hasRole(getRoleAdmin(role), _msgSender()), "AccessControl: sender must be an admin to grant");
        _grantRole(role, account);
    }
    function revokeRole(bytes32 role, address account) public virtual override {
        require( hasRole(getRoleAdmin(role), _msgSender()), "AccessControl: sender must be an admin to revoke");
        _revokeRole(role, account);
    }
    function renounceRole(bytes32 role, address account) public virtual override
    {
        require( account == _msgSender(), "AccessControl: can only renounce roles for self" );
        _revokeRole(role, account);
    }
    function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); }
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);
        _roles[role].adminRole = adminRole;
    }
    function _grantRole(bytes32 role, address account) private {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }
    function _revokeRole(bytes32 role, address account) private {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}
contract Issue is AccessControl {
    using SafeMath for uint;
    using SafeBEP20 for IBEP20; 
    IERC721 public heroesNFT;
    IBEP20 public heroesToken;
    bytes32 public constant CREATOR_ADMIN_SERVER = keccak256("CREATOR_ADMIN_SERVER");
    string stringNull = "";
    uint256 public feeSummon =  50000000000000000000;
    uint256 public feeSummons = 500000000000000000000;
    uint256 public feeShard = 0;
    uint256 public feeCard = 0;
    address payable receiveFee = payable(0x06eD3d7ef90551333b7185412337c9DF6F17C795);
    constructor( address minter, address _heroesNft, address _heroesToken ) {
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setupRole(CREATOR_ADMIN_SERVER, minter);
		heroesNFT = IERC721(_heroesNft); // Token Hero Assets
        heroesToken = IBEP20(_heroesToken); // Token Heroes
	}

    event summonhero(
        address Owner,
        uint256 tokenId,
        string nameHeroes,
        string race,
        string tier,
        string typeIssue
    );
    event openpackage(
        address Owner,
        uint256 tokenId,
        string nameHeroes,
        string race,
        string tier
    );
   
    struct Heroes {
        string name;
        string race;
        string class;
    }
    event RequestHero(
        uint256 tokenId,
        address Owner,
        uint256 numberHeroes,
        string tier,
        string typeIssue
    );
    struct TierName {
        string tierName;
    }
    mapping(uint256 => Heroes) public heroes; //  tokenId=> Heroes Information 
    TierName[] public tierName; // tier information 
    mapping( uint256 => uint256 ) public amountLimitBreak;
    mapping(uint256 => bool) public heroOpenPack;
    mapping(uint256 => bool) public chestId;
    function changeReceiveFee(address _receive) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        require(_receive != address(0));
        receiveFee = payable(_receive);
    }
    function addHeroOpenPack(uint256[] memory hero) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        for(uint256 i =0; i < hero.length; i++){
            heroOpenPack[hero[i]] = true;
        }
    }
    function getTierName() public view returns (TierName[]  memory) {
        return tierName;
    }
    function addTierName(string[] memory _tierName) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        for(uint256 i =0; i < _tierName.length ; i++) {
            tierName.push(TierName(_tierName[i]));
        }
    }
    function editTierName(uint256 _id, string memory _tierName) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        tierName[_id].tierName = _tierName;
    }
    function getHeroes(uint256 _id) public view returns (Heroes  memory) {
        return heroes[_id];
    }
    function addHeroes(uint256[] memory id, string[] memory name, string[] memory race, string[] memory class) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        for(uint256 i = 0; i < name.length ; i ++) {
            heroes[id[i]] = Heroes(name[i], race[i], class[i]);
        }
    }
    function editHeroes(uint256 _id, string memory name, string memory race, string memory class) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        heroes[_id].name = name;
        heroes[_id].race = race;
        heroes[_id].class = class;
    }  
    function changeFeeShard(uint256 _fee) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        require(_fee > 0, 'need fee > 0');
        feeShard = _fee;
    }
    function changeFeeCard(uint256 _fee) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        require(_fee > 0, 'need fee > 0');
        feeCard = _fee;
    }
    function changeFee(uint256 _fee) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        require(_fee > 0, 'need fee > 0');
        feeSummon = _fee;
    }
    function changeFees(uint256 _fee) public {
        require(hasRole(DEFAULT_ADMIN_ROLE, address(msg.sender)), "Caller is not a owner");
        require(_fee > 0, 'need fee > 0');
        feeSummons = _fee;
    }
    function requestShard(uint256 _tokenId, uint256 _numberHero, string memory _tier) public{
        heroesToken.safeTransferFrom(address(msg.sender), address(receiveFee), feeShard);
        require(queryTierName(_tier) == 1, "Tier not found");
        require(queryNumberTier(_tier) == 0 || queryNumberTier(_tier) == 1 || queryNumberTier(_tier) == 3, "tier is not allowed to issue");
        require(keccak256(bytes(heroes[_numberHero].name)) != keccak256(bytes(stringNull)), "Heroes not found");
        emit RequestHero(
            _tokenId,
            msg.sender,
            _numberHero,
            _tier,
            'Shard'
        );
    } 
    function requestCard(uint256 _tokenId, uint256 _numberHero, string memory _tier) public{
        heroesToken.safeTransferFrom(address(msg.sender), address(receiveFee), feeCard);
        require(queryTierName(_tier) == 1, "Tier not found");
        require(queryNumberTier(_tier) == 0 || queryNumberTier(_tier) == 1 || queryNumberTier(_tier) == 3, "tier is not allowed to issue");
        require(keccak256(bytes(heroes[_numberHero].name)) != keccak256(bytes(stringNull)), "Heroes not found");
        emit RequestHero(
            _tokenId,
            msg.sender,
            _numberHero,
            _tier,
            'Card'
        );
    }
    function requestSummon(uint256 _tokenId, uint256 _numberHero, string memory _tier) public{
        heroesToken.safeTransferFrom(address(msg.sender), address(receiveFee), feeSummon);
        require(queryTierName(_tier) == 1, "Tier not found");
        require(queryNumberTier(_tier) == 0 || queryNumberTier(_tier) == 1 || queryNumberTier(_tier) == 3, "tier is not allowed to issue");
        require(keccak256(bytes(heroes[_numberHero].name)) != keccak256(bytes(stringNull)), "Heroes not found");
        emit RequestHero(
            _tokenId,
            msg.sender,
            _numberHero,
            _tier,
            'Summon'
        );
    }
    function requestSummons(uint256[] memory _tokenId, uint256[] memory _numberHero, string[] memory _tier) public {
        require(_tokenId.length == _numberHero.length && _tokenId.length == _tier.length, 'Input not true');
        heroesToken.safeTransferFrom(address(msg.sender), address(receiveFee), feeSummons);
        for(uint256 i = 0; i < _tokenId.length; i++){
            require(queryTierName(_tier[i]) == 1, "Tier not found");
            require(queryNumberTier(_tier[i]) == 0 || queryNumberTier(_tier[i]) == 1 || queryNumberTier(_tier[i]) == 3, "tier is not allowed to issue");
            require(keccak256(bytes(heroes[_numberHero[i]].name)) != keccak256(bytes(stringNull)), "Heroes not found");
            emit RequestHero(
            _tokenId[i],
            msg.sender,
            _numberHero[i],
            _tier[i],
            'Summon'
        );
        }
    }
    function openPackage(address[] memory _owner, uint256[] memory _tokenId, uint256[] memory _numberHero, string[] memory _tier, uint256 packid) public {
        require(hasRole(CREATOR_ADMIN_SERVER, address(msg.sender)), "Caller is not a admin");
        require(_owner.length == _numberHero.length && _tokenId.length == _numberHero.length && _tokenId.length == _tier.length, 'Input not true');
        require(!chestId[packid], "ChestId has been used");
        for(uint256 i = 0; i < _tokenId.length; i++){
            require(queryTierName(_tier[i]) == 1, "Tier not found");
            require(queryNumberTier(_tier[i]) == 1, "Tier is not allowed to issue");
            require(heroOpenPack[_numberHero[i]], "Number Hero is not allowed to issue");
            require(keccak256(bytes(heroes[_numberHero[i]].name)) != keccak256(bytes(stringNull)), "Heroes not found");
            heroesNFT.safeMint(address(_owner[i]), _tokenId[i]);
            heroesNFT.addHeroesNumber(_tokenId[i], _numberHero[i], heroes[_numberHero[i]].name, heroes[_numberHero[i]].race, heroes[_numberHero[i]].class, _tier[i], _tier[i]);
            emit openpackage(
                _owner[i],
                _tokenId[i],
                heroes[_numberHero[i]].name,
                heroes[_numberHero[i]].race,
                _tier[i]
            );
        }
        chestId[packid] = true;
    }
    function summon(address[] memory _owner, uint256[] memory _tokenId, uint256[] memory _numberHero, string[] memory _tier, string[] memory _type) public {
        require(hasRole(CREATOR_ADMIN_SERVER, address(msg.sender)), "Caller is not a admin");
        require( _owner.length == _numberHero.length && _tokenId.length == _numberHero.length && _tokenId.length == _tier.length && _tokenId.length == _type.length, 'Input not true');
        for(uint256 i = 0; i < _tokenId.length; i++){
            require(queryTierName(_tier[i]) == 1, "Tier not found");
            require(queryNumberTier(_tier[i]) == 0 || queryNumberTier(_tier[i]) == 1 || queryNumberTier(_tier[i]) == 3, "tier is not allowed to issue");
            require(keccak256(bytes(heroes[_numberHero[i]].name)) != keccak256(bytes(stringNull)), "Heroes not found");
            heroesNFT.safeMint(address(_owner[i]), _tokenId[i]);
            heroesNFT.addHeroesNumber(_tokenId[i], _numberHero[i], heroes[_numberHero[i]].name, heroes[_numberHero[i]].race, heroes[_numberHero[i]].class, _tier[i], _tier[i]);
            emit summonhero(
                _owner[i],
                _tokenId[i],
                heroes[_numberHero[i]].name,
                heroes[_numberHero[i]].race,
                _tier[i],
                _type[i]
            );
        }
    }

    function queryTierName(string memory _tier) public view returns(uint256) {
        uint256 result = 0;
        for(uint256 i = 0 ; i < tierName.length ; i ++) {
            if( keccak256(bytes(tierName[i].tierName)) == keccak256(bytes(_tier)) ) {
                result = 1;
            }
        }
        return result;
    }

    function queryNumberTier(string memory _tier) public view returns(uint256) {
        uint256 result = 100;
        for(uint256 i = 0 ; i < tierName.length ; i ++) {
            if( keccak256(bytes(tierName[i].tierName)) == keccak256(bytes(_tier)) ) {
                result = i;
            }
        }
        return result;
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"_heroesNft","type":"address"},{"internalType":"address","name":"_heroesToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"Owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"numberHeroes","type":"uint256"},{"indexed":false,"internalType":"string","name":"tier","type":"string"},{"indexed":false,"internalType":"string","name":"typeIssue","type":"string"}],"name":"RequestHero","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"nameHeroes","type":"string"},{"indexed":false,"internalType":"string","name":"race","type":"string"},{"indexed":false,"internalType":"string","name":"tier","type":"string"}],"name":"openpackage","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"nameHeroes","type":"string"},{"indexed":false,"internalType":"string","name":"race","type":"string"},{"indexed":false,"internalType":"string","name":"tier","type":"string"},{"indexed":false,"internalType":"string","name":"typeIssue","type":"string"}],"name":"summonhero","type":"event"},{"inputs":[],"name":"CREATOR_ADMIN_SERVER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"hero","type":"uint256[]"}],"name":"addHeroOpenPack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"id","type":"uint256[]"},{"internalType":"string[]","name":"name","type":"string[]"},{"internalType":"string[]","name":"race","type":"string[]"},{"internalType":"string[]","name":"class","type":"string[]"}],"name":"addHeroes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"_tierName","type":"string[]"}],"name":"addTierName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"amountLimitBreak","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeFeeCard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeFeeShard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receive","type":"address"}],"name":"changeReceiveFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chestId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"race","type":"string"},{"internalType":"string","name":"class","type":"string"}],"name":"editHeroes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"string","name":"_tierName","type":"string"}],"name":"editTierName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeCard","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeShard","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSummon","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSummons","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getHeroes","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"race","type":"string"},{"internalType":"string","name":"class","type":"string"}],"internalType":"struct Issue.Heroes","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTierName","outputs":[{"components":[{"internalType":"string","name":"tierName","type":"string"}],"internalType":"struct Issue.TierName[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"heroOpenPack","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"heroes","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"race","type":"string"},{"internalType":"string","name":"class","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"heroesNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"heroesToken","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_owner","type":"address[]"},{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_numberHero","type":"uint256[]"},{"internalType":"string[]","name":"_tier","type":"string[]"},{"internalType":"uint256","name":"packid","type":"uint256"}],"name":"openPackage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_tier","type":"string"}],"name":"queryNumberTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_tier","type":"string"}],"name":"queryTierName","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_numberHero","type":"uint256"},{"internalType":"string","name":"_tier","type":"string"}],"name":"requestCard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_numberHero","type":"uint256"},{"internalType":"string","name":"_tier","type":"string"}],"name":"requestShard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_numberHero","type":"uint256"},{"internalType":"string","name":"_tier","type":"string"}],"name":"requestSummon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_numberHero","type":"uint256[]"},{"internalType":"string[]","name":"_tier","type":"string[]"}],"name":"requestSummons","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_owner","type":"address[]"},{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_numberHero","type":"uint256[]"},{"internalType":"string[]","name":"_tier","type":"string[]"},{"internalType":"string[]","name":"_type","type":"string[]"}],"name":"summon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierName","outputs":[{"internalType":"string","name":"tierName","type":"string"}],"stateMutability":"view","type":"function"}]

608060405260405180602001604052806000815250600390805190602001906200002b92919062000332565b506802b5e3af16b1880000600455681b1ae4d6e2ef500000600555600060065560006007557306ed3d7ef90551333b7185412337c9df6f17c795600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000b257600080fd5b5060405162005c7638038062005c768339818101604052810190620000d89190620003f9565b620000fc6000801b620000f0620001b960201b60201c565b620001c160201b60201c565b6200012e7f20c3b784c1251fbb97fe6db3cfa63383dd3aa172d2b3a79bcdb8ea8c7a384afc84620001c160201b60201c565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000502565b600033905090565b620001d38282620001d760201b60201c565b5050565b620001e98282620002c860201b60201c565b620002c457600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000269620001b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054620003409062000483565b90600052602060002090601f016020900481019282620003645760008555620003b0565b82601f106200037f57805160ff1916838001178555620003b0565b82800160010185558215620003b0579182015b82811115620003af57825182559160200191906001019062000392565b5b509050620003bf9190620003c3565b5090565b5b80821115620003de576000816000905550600101620003c4565b5090565b600081519050620003f381620004e8565b92915050565b6000806000606084860312156200040f57600080fd5b60006200041f86828701620003e2565b93505060206200043286828701620003e2565b92505060406200044586828701620003e2565b9150509250925092565b60006200045c8262000463565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200049c57607f821691505b60208210811415620004b357620004b2620004b9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620004f3816200044f565b8114620004ff57600080fd5b50565b61576480620005126000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c806391c6006d1161013b578063ac1a94e7116100b8578063c71784d61161007c578063c71784d6146106d4578063d2865447146106f0578063d547741f1461070c578063ddd641b014610728578063ef56e52c146107585761023d565b8063ac1a94e714610648578063bb1101b514610664578063bbb1ff8014610680578063bbe4ff2f1461069c578063c52ff455146106b85761023d565b8063a217fddf116100ff578063a217fddf1461058e578063a3274132146105ac578063a7ab4e24146105dc578063a8bd0f1d146105f8578063a8d4a03b146106165761023d565b806391c6006d146104d657806391d148541461050657806399664a5a146105365780639ea3a45814610552578063a12f6fcd146105705761023d565b8063461ad12e116101c95780636a1db1bf1161018d5780636a1db1bf146104485780636cda375b146104645780636dbad5e714610480578063736f56ac1461049c5780637c72f35a146104b85761023d565b8063461ad12e1461037e5780635409c760146103ae5780635606a220146103de5780636332e913146103fc5780636815f125146104185761023d565b80632f1d7bda116102105780632f1d7bda146102dc5780632f2ff15d1461030c578063339e9c241461032857806336568abe14610346578063452aefc5146103625761023d565b806301ffc9a714610242578063248a9ca3146102725780632920839c146102a25780632d58af1d146102be575b600080fd5b61025c60048036038101906102579190614230565b610776565b6040516102699190614e49565b60405180910390f35b61028c600480360381019061028791906141cb565b6107f0565b6040516102999190614e64565b60405180910390f35b6102bc60048036038101906102b791906142c3565b61080f565b005b6102c66108bb565b6040516102d39190614e7f565b60405180910390f35b6102f660048036038101906102f1919061429a565b6108e1565b6040516103039190614e49565b60405180910390f35b610326600480360381019061032191906141f4565b610901565b005b610330610967565b60405161033d9190614e64565b60405180910390f35b610360600480360381019061035b91906141f4565b61098b565b005b61037c60048036038101906103779190613eef565b610a0e565b005b61039860048036038101906103939190614259565b611352565b6040516103a59190615145565b60405180910390f35b6103c860048036038101906103c3919061429a565b6113f5565b6040516103d59190615145565b60405180910390f35b6103e661140d565b6040516103f39190615145565b60405180910390f35b610416600480360381019061041191906143c2565b611413565b005b610432600480360381019061042d919061429a565b611607565b60405161043f9190614e49565b60405180910390f35b610462600480360381019061045d919061429a565b611627565b005b61047e6004803603810190610479919061429a565b6116c0565b005b61049a600480360381019061049591906143c2565b611759565b005b6104b660048036038101906104b19190614048565b61194d565b005b6104c0611b47565b6040516104cd9190615145565b60405180910390f35b6104f060048036038101906104eb9190614259565b611b4d565b6040516104fd9190615145565b60405180910390f35b610520600480360381019061051b91906141f4565b611bef565b60405161052d9190614e49565b60405180910390f35b610550600480360381019061054b919061429a565b611c59565b005b61055a611cf2565b6040516105679190615145565b60405180910390f35b610578611cf8565b6040516105859190614e27565b60405180910390f35b610596611de5565b6040516105a39190614e64565b60405180910390f35b6105c660048036038101906105c1919061429a565b611dec565b6040516105d39190615123565b60405180910390f35b6105f660048036038101906105f19190614007565b611fcf565b005b6106006120aa565b60405161060d9190614e9a565b60405180910390f35b610630600480360381019061062b919061429a565b6120d0565b60405161063f93929190614ed7565b60405180910390f35b610662600480360381019061065d9190614317565b612292565b005b61067e60048036038101906106799190613e00565b612365565b005b61069a6004803603810190610695919061410b565b612c71565b005b6106b660048036038101906106b191906143c2565b6130d6565b005b6106d260048036038101906106cd919061429a565b6132ca565b005b6106ee60048036038101906106e99190613fc6565b613363565b005b61070a60048036038101906107059190613dd7565b613467565b005b610726600480360381019061072191906141f4565b613531565b005b610742600480360381019061073d919061429a565b613597565b60405161074f9190614eb5565b60405180910390f35b610760613649565b60405161076d9190615145565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e88261364f565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b61081c6000801b33611bef565b61085b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610852906150e3565b60405180910390fd5b80600a8381548110610896577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160000190805190602001906108b6929190613a8f565b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b61091a61090d836107f0565b6109156136b9565b611bef565b610959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095090614f43565b60405180910390fd5b61096382826136c1565b5050565b7f20c3b784c1251fbb97fe6db3cfa63383dd3aa172d2b3a79bcdb8ea8c7a384afc81565b6109936136b9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f790615103565b60405180910390fd5b610a0a82826137a1565b5050565b610a387f20c3b784c1251fbb97fe6db3cfa63383dd3aa172d2b3a79bcdb8ea8c7a384afc33611bef565b610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90614f23565b60405180910390fd5b82518551148015610a89575082518451145b8015610a96575081518451145b610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90614f63565b60405180910390fd5b600d600082815260200190815260200160002060009054906101000a900460ff1615610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90614fe3565b60405180910390fd5b60005b845181101561131e576001610b8d848381518110610b80577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611352565b14610bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc490614f83565b60405180910390fd5b6001610c18848381518110610c0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611b4d565b14610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90614fa3565b60405180910390fd5b600c6000858381518110610c95577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060009054906101000a900460ff16610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef90615083565b60405180910390fd5b6003604051610d079190614ccb565b604051809103902060096000868481518110610d4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001908152602001600020600001604051610d729190614ccb565b60405180910390201415610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290615023565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1448194878381518110610e32577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151878481518110610e73577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401610e98929190614d19565b600060405180830381600087803b158015610eb257600080fd5b505af1158015610ec6573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d6f5b04f868381518110610f41577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151868481518110610f82577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160096000898781518110610fc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001908152602001600020600001600960008a888151811061101d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001908152602001600020600101600960008b8981518110611073577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206002018988815181106110c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518a8981518110611106577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518863ffffffff1660e01b8152600401611130979695949392919061527d565b600060405180830381600087803b15801561114a57600080fd5b505af115801561115e573d6000803e3d6000fd5b505050507fc24fa075ea4f1f50b46d09b4d8d76e0ba2dbbed5c0052c60924f7cba1cc80a408682815181106111bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518683815181106111fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160096000888681518110611242577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060000160096000898781518110611298577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206001018786815181106112ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151604051611303959493929190614d42565b60405180910390a18080611316906155d4565b915050610b39565b506001600d600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505050565b6000806000905060005b600a805490508110156113eb578380519060200120600a82815481106113ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020016000016040516113c59190614ccb565b604051809103902014156113d857600191505b80806113e3906155d4565b91505061135c565b5080915050919050565b600b6020528060005260406000206000915090505481565b60045481565b61148633600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600754600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613882909392919063ffffffff16565b600161149182611352565b146114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c890614f83565b60405180910390fd5b60006114dc82611b4d565b14806114f0575060016114ee82611b4d565b145b806115035750600361150182611b4d565b145b611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990615063565b60405180910390fd5b60036040516115519190614ccb565b60405180910390206009600084815260200190815260200160002060000160405161157c9190614ccb565b604051809103902014156115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc90615023565b60405180910390fd5b7f12d678f8070ef8806ece075a859cb5bf549212b00ee999963709685a2f71fb83833384846040516115fa949392919061521e565b60405180910390a1505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6116346000801b33611bef565b611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a906150e3565b60405180910390fd5b600081116116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad90615043565b60405180910390fd5b8060048190555050565b6116cd6000801b33611bef565b61170c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611703906150e3565b60405180910390fd5b6000811161174f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174690615043565b60405180910390fd5b8060058190555050565b6117cc33600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613882909392919063ffffffff16565b60016117d782611352565b14611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90614f83565b60405180910390fd5b600061182282611b4d565b14806118365750600161183482611b4d565b145b806118495750600361184782611b4d565b145b611888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187f90615063565b60405180910390fd5b60036040516118979190614ccb565b6040518091039020600960008481526020019081526020016000206000016040516118c29190614ccb565b6040518091039020141561190b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190290615023565b60405180910390fd5b7f12d678f8070ef8806ece075a859cb5bf549212b00ee999963709685a2f71fb83833384846040516119409493929190615160565b60405180910390a1505050565b61195a6000801b33611bef565b611999576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611990906150e3565b60405180910390fd5b60005b8351811015611b405760405180606001604052808583815181106119e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001848381518110611a2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001838381518110611a75577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181525060096000878481518110611abd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000820151816000019080519060200190611aef929190613a8f565b506020820151816001019080519060200190611b0c929190613a8f565b506040820151816002019080519060200190611b29929190613a8f565b509050508080611b38906155d4565b91505061199c565b5050505050565b60065481565b6000806064905060005b600a80549050811015611be5578380519060200120600a8281548110611ba6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001600001604051611bc09190614ccb565b60405180910390201415611bd2578091505b8080611bdd906155d4565b915050611b57565b5080915050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611c666000801b33611bef565b611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c906150e3565b60405180910390fd5b60008111611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90615043565b60405180910390fd5b8060068190555050565b60075481565b6060600a805480602002602001604051908101604052809291908181526020016000905b82821015611ddc57838290600052602060002001604051806020016040529081600082018054611d4b906155a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d77906155a2565b8015611dc45780601f10611d9957610100808354040283529160200191611dc4565b820191906000526020600020905b815481529060010190602001808311611da757829003601f168201915b50505050508152505081526020019060010190611d1c565b50505050905090565b6000801b81565b611df4613b15565b60096000838152602001908152602001600020604051806060016040529081600082018054611e22906155a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611e4e906155a2565b8015611e9b5780601f10611e7057610100808354040283529160200191611e9b565b820191906000526020600020905b815481529060010190602001808311611e7e57829003601f168201915b50505050508152602001600182018054611eb4906155a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611ee0906155a2565b8015611f2d5780601f10611f0257610100808354040283529160200191611f2d565b820191906000526020600020905b815481529060010190602001808311611f1057829003601f168201915b50505050508152602001600282018054611f46906155a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611f72906155a2565b8015611fbf5780601f10611f9457610100808354040283529160200191611fbf565b820191906000526020600020905b815481529060010190602001808311611fa257829003601f168201915b5050505050815250509050919050565b611fdc6000801b33611bef565b61201b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612012906150e3565b60405180910390fd5b60005b81518110156120a6576001600c6000848481518110612066577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550808061209e906155d4565b91505061201e565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915090508060000180546120f3906155a2565b80601f016020809104026020016040519081016040528092919081815260200182805461211f906155a2565b801561216c5780601f106121415761010080835404028352916020019161216c565b820191906000526020600020905b81548152906001019060200180831161214f57829003601f168201915b505050505090806001018054612181906155a2565b80601f01602080910402602001604051908101604052809291908181526020018280546121ad906155a2565b80156121fa5780601f106121cf576101008083540402835291602001916121fa565b820191906000526020600020905b8154815290600101906020018083116121dd57829003601f168201915b50505050509080600201805461220f906155a2565b80601f016020809104026020016040519081016040528092919081815260200182805461223b906155a2565b80156122885780601f1061225d57610100808354040283529160200191612288565b820191906000526020600020905b81548152906001019060200180831161226b57829003601f168201915b5050505050905083565b61229f6000801b33611bef565b6122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d5906150e3565b60405180910390fd5b82600960008681526020019081526020016000206000019080519060200190612308929190613a8f565b5081600960008681526020019081526020016000206001019080519060200190612333929190613a8f565b508060096000868152602001908152602001600020600201908051906020019061235e929190613a8f565b5050505050565b61238f7f20c3b784c1251fbb97fe6db3cfa63383dd3aa172d2b3a79bcdb8ea8c7a384afc33611bef565b6123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590614f23565b60405180910390fd5b825185511480156123e0575082518451145b80156123ed575081518451145b80156123fa575080518451145b612439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243090614f63565b60405180910390fd5b60005b8451811015612c69576001612490848381518110612483577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611352565b146124d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c790614f83565b60405180910390fd5b600061251b84838151811061250e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611b4d565b148061256f5750600161256d848381518110612560577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611b4d565b145b806125c2575060036125c08483815181106125b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611b4d565b145b612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890615063565b60405180910390fd5b60036040516126109190614ccb565b604051809103902060096000868481518110612655577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060000160405161267b9190614ccb565b604051809103902014156126c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bb90615023565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a144819487838151811061273b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015187848151811061277c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b81526004016127a1929190614d19565b600060405180830381600087803b1580156127bb57600080fd5b505af11580156127cf573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d6f5b04f86838151811061284a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015186848151811061288b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600960008987815181106128d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001908152602001600020600001600960008a8881518110612926577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001908152602001600020600101600960008b898151811061297c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206002018988815181106129ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518a8981518110612a0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518863ffffffff1660e01b8152600401612a39979695949392919061527d565b600060405180830381600087803b158015612a5357600080fd5b505af1158015612a67573d6000803e3d6000fd5b505050507f658c45ca4d607dc8ab71f6cc74179867d02df8db1998275b8065c3e349481288868281518110612ac5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151868381518110612b06577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160096000888681518110612b4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060000160096000898781518110612ba1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001908152602001600020600101878681518110612bf3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151878781518110612c34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151604051612c4e96959493929190614daa565b60405180910390a18080612c61906155d4565b91505061243c565b505050505050565b81518351148015612c83575080518351145b612cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb990614f63565b60405180910390fd5b612d3533600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613882909392919063ffffffff16565b60005b83518110156130d0576001612d8c838381518110612d7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611352565b14612dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc390614f83565b60405180910390fd5b6000612e17838381518110612e0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611b4d565b1480612e6b57506001612e69838381518110612e5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611b4d565b145b80612ebe57506003612ebc838381518110612eaf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611b4d565b145b612efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef490615063565b60405180910390fd5b6003604051612f0c9190614ccb565b604051809103902060096000858481518110612f51577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518152602001908152602001600020600001604051612f779190614ccb565b60405180910390201415612fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb790615023565b60405180910390fd5b7f12d678f8070ef8806ece075a859cb5bf549212b00ee999963709685a2f71fb8384828151811061301a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101513385848151811061305c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015185858151811061309d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040516130b59493929190615160565b60405180910390a180806130c8906155d4565b915050612d38565b50505050565b61314933600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613882909392919063ffffffff16565b600161315482611352565b14613194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318b90614f83565b60405180910390fd5b600061319f82611b4d565b14806131b3575060016131b182611b4d565b145b806131c6575060036131c482611b4d565b145b613205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fc90615063565b60405180910390fd5b60036040516132149190614ccb565b60405180910390206009600084815260200190815260200160002060000160405161323f9190614ccb565b60405180910390201415613288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327f90615023565b60405180910390fd5b7f12d678f8070ef8806ece075a859cb5bf549212b00ee999963709685a2f71fb83833384846040516132bd94939291906151bf565b60405180910390a1505050565b6132d76000801b33611bef565b613316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330d906150e3565b60405180910390fd5b60008111613359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335090615043565b60405180910390fd5b8060078190555050565b6133706000801b33611bef565b6133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a6906150e3565b60405180910390fd5b60005b815181101561346357600a6040518060200160405280848481518110613401577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181525090806001815401808255809150506001900390600052602060002001600090919091909150600082015181600001908051906020019061344d929190613a8f565b505050808061345b906155d4565b9150506133b2565b5050565b6134746000801b33611bef565b6134b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134aa906150e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134ed57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61354a61353d836107f0565b6135456136b9565b611bef565b613589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358090614fc3565b60405180910390fd5b61359382826137a1565b5050565b600a81815481106135a757600080fd5b906000526020600020016000915090508060000180546135c6906155a2565b80601f01602080910402602001604051908101604052809291908181526020018280546135f2906155a2565b801561363f5780601f106136145761010080835404028352916020019161363f565b820191906000526020600020905b81548152906001019060200180831161362257829003601f168201915b5050505050905081565b60055481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6136cb8282611bef565b61379d57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137426136b9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6137ab8282611bef565b1561387e57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138236136b9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b613905846323b872dd60e01b8585856040516024016138a393929190614ce2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061390b565b50505050565b61392a8273ffffffffffffffffffffffffffffffffffffffff16613a7c565b613969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613960906150c3565b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516139919190614cb4565b6000604051808303816000865af19150503d80600081146139ce576040519150601f19603f3d011682016040523d82523d6000602084013e6139d3565b606091505b509150915081613a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a0f906150a3565b60405180910390fd5b600081511115613a765780806020019051810190613a3691906141a2565b613a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a6c90615003565b60405180910390fd5b5b50505050565b600080823b905060008111915050919050565b828054613a9b906155a2565b90600052602060002090601f016020900481019282613abd5760008555613b04565b82601f10613ad657805160ff1916838001178555613b04565b82800160010185558215613b04579182015b82811115613b03578251825591602001919060010190613ae8565b5b509050613b119190613b36565b5090565b60405180606001604052806060815260200160608152602001606081525090565b5b80821115613b4f576000816000905550600101613b37565b5090565b6000613b66613b6184615340565b61530f565b90508083825260208201905082856020860282011115613b8557600080fd5b60005b85811015613bb55781613b9b8882613cc6565b845260208401935060208301925050600181019050613b88565b5050509392505050565b6000613bd2613bcd8461536c565b61530f565b9050808382526020820190508260005b85811015613c125781358501613bf88882613d98565b845260208401935060208301925050600181019050613be2565b5050509392505050565b6000613c2f613c2a84615398565b61530f565b90508083825260208201905082856020860282011115613c4e57600080fd5b60005b85811015613c7e5781613c648882613dc2565b845260208401935060208301925050600181019050613c51565b5050509392505050565b6000613c9b613c96846153c4565b61530f565b905082815260208101848484011115613cb357600080fd5b613cbe848285615560565b509392505050565b600081359050613cd5816156bb565b92915050565b600082601f830112613cec57600080fd5b8135613cfc848260208601613b53565b91505092915050565b600082601f830112613d1657600080fd5b8135613d26848260208601613bbf565b91505092915050565b600082601f830112613d4057600080fd5b8135613d50848260208601613c1c565b91505092915050565b600081519050613d68816156d2565b92915050565b600081359050613d7d816156e9565b92915050565b600081359050613d9281615700565b92915050565b600082601f830112613da957600080fd5b8135613db9848260208601613c88565b91505092915050565b600081359050613dd181615717565b92915050565b600060208284031215613de957600080fd5b6000613df784828501613cc6565b91505092915050565b600080600080600060a08688031215613e1857600080fd5b600086013567ffffffffffffffff811115613e3257600080fd5b613e3e88828901613cdb565b955050602086013567ffffffffffffffff811115613e5b57600080fd5b613e6788828901613d2f565b945050604086013567ffffffffffffffff811115613e8457600080fd5b613e9088828901613d2f565b935050606086013567ffffffffffffffff811115613ead57600080fd5b613eb988828901613d05565b925050608086013567ffffffffffffffff811115613ed657600080fd5b613ee288828901613d05565b9150509295509295909350565b600080600080600060a08688031215613f0757600080fd5b600086013567ffffffffffffffff811115613f2157600080fd5b613f2d88828901613cdb565b955050602086013567ffffffffffffffff811115613f4a57600080fd5b613f5688828901613d2f565b945050604086013567ffffffffffffffff811115613f7357600080fd5b613f7f88828901613d2f565b935050606086013567ffffffffffffffff811115613f9c57600080fd5b613fa888828901613d05565b9250506080613fb988828901613dc2565b9150509295509295909350565b600060208284031215613fd857600080fd5b600082013567ffffffffffffffff811115613ff257600080fd5b613ffe84828501613d05565b91505092915050565b60006020828403121561401957600080fd5b600082013567ffffffffffffffff81111561403357600080fd5b61403f84828501613d2f565b91505092915050565b6000806000806080858703121561405e57600080fd5b600085013567ffffffffffffffff81111561407857600080fd5b61408487828801613d2f565b945050602085013567ffffffffffffffff8111156140a157600080fd5b6140ad87828801613d05565b935050604085013567ffffffffffffffff8111156140ca57600080fd5b6140d687828801613d05565b925050606085013567ffffffffffffffff8111156140f357600080fd5b6140ff87828801613d05565b91505092959194509250565b60008060006060848603121561412057600080fd5b600084013567ffffffffffffffff81111561413a57600080fd5b61414686828701613d2f565b935050602084013567ffffffffffffffff81111561416357600080fd5b61416f86828701613d2f565b925050604084013567ffffffffffffffff81111561418c57600080fd5b61419886828701613d05565b9150509250925092565b6000602082840312156141b457600080fd5b60006141c284828501613d59565b91505092915050565b6000602082840312156141dd57600080fd5b60006141eb84828501613d6e565b91505092915050565b6000806040838503121561420757600080fd5b600061421585828601613d6e565b925050602061422685828601613cc6565b9150509250929050565b60006020828403121561424257600080fd5b600061425084828501613d83565b91505092915050565b60006020828403121561426b57600080fd5b600082013567ffffffffffffffff81111561428557600080fd5b61429184828501613d98565b91505092915050565b6000602082840312156142ac57600080fd5b60006142ba84828501613dc2565b91505092915050565b600080604083850312156142d657600080fd5b60006142e485828601613dc2565b925050602083013567ffffffffffffffff81111561430157600080fd5b61430d85828601613d98565b9150509250929050565b6000806000806080858703121561432d57600080fd5b600061433b87828801613dc2565b945050602085013567ffffffffffffffff81111561435857600080fd5b61436487828801613d98565b935050604085013567ffffffffffffffff81111561438157600080fd5b61438d87828801613d98565b925050606085013567ffffffffffffffff8111156143aa57600080fd5b6143b687828801613d98565b91505092959194509250565b6000806000606084860312156143d757600080fd5b60006143e586828701613dc2565b93505060206143f686828701613dc2565b925050604084013567ffffffffffffffff81111561441357600080fd5b61441f86828701613d98565b9150509250925092565b60006144358383614c7b565b905092915050565b6144468161549a565b82525050565b60006144578261542e565b614461818561545c565b935083602082028501614473856153f4565b8060005b858110156144af57848403895281516144908582614429565b945061449b8361544f565b925060208a01995050600181019050614477565b50829750879550505050505092915050565b6144ca816154ac565b82525050565b6144d9816154b8565b82525050565b60006144ea82615439565b6144f4818561546d565b935061450481856020860161556f565b80840191505092915050565b6000815461451d816155a2565b614527818661546d565b94506001821660008114614542576001811461455357614586565b60ff19831686528186019350614586565b61455c85615404565b60005b8381101561457e5781548189015260018201915060208101905061455f565b838801955050505b50505092915050565b61459881615518565b82525050565b6145a78161553c565b82525050565b60006145b882615444565b6145c28185615478565b93506145d281856020860161556f565b6145db816156aa565b840191505092915050565b60006145f182615444565b6145fb8185615489565b935061460b81856020860161556f565b614614816156aa565b840191505092915050565b6000815461462c816155a2565b6146368186615489565b94506001821660008114614651576001811461466357614696565b60ff1983168652602086019350614696565b61466c85615419565b60005b8381101561468e5781548189015260018201915060208101905061466f565b808801955050505b50505092915050565b60006146ac601583615489565b91507f43616c6c6572206973206e6f7420612061646d696e00000000000000000000006000830152602082019050919050565b60006146ec602f83615489565b91507f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60008301527f2061646d696e20746f206772616e7400000000000000000000000000000000006020830152604082019050919050565b6000614752600e83615489565b91507f496e707574206e6f7420747275650000000000000000000000000000000000006000830152602082019050919050565b6000614792600e83615489565b91507f54696572206e6f7420666f756e640000000000000000000000000000000000006000830152602082019050919050565b60006147d2600683615489565b91507f53756d6d6f6e00000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000614812601c83615489565b91507f54696572206973206e6f7420616c6c6f77656420746f206973737565000000006000830152602082019050919050565b6000614852600583615489565b91507f53686172640000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000614892603083615489565b91507f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60008301527f2061646d696e20746f207265766f6b65000000000000000000000000000000006020830152604082019050919050565b60006148f8601583615489565b91507f4368657374496420686173206265656e207573656400000000000000000000006000830152602082019050919050565b6000614938602a83615489565b91507f5361666542455032303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b600061499e600483615489565b91507f43617264000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006149de601083615489565b91507f4865726f6573206e6f7420666f756e64000000000000000000000000000000006000830152602082019050919050565b6000614a1e600c83615489565b91507f6e65656420666565203e203000000000000000000000000000000000000000006000830152602082019050919050565b6000614a5e601c83615489565b91507f74696572206973206e6f7420616c6c6f77656420746f206973737565000000006000830152602082019050919050565b6000614a9e602383615489565b91507f4e756d626572204865726f206973206e6f7420616c6c6f77656420746f20697360008301527f73756500000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614b04602083615489565b91507f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b6000614b44601f83615489565b91507f5361666542455032303a2063616c6c20746f206e6f6e2d636f6e7472616374006000830152602082019050919050565b6000614b84601583615489565b91507f43616c6c6572206973206e6f742061206f776e657200000000000000000000006000830152602082019050919050565b6000614bc4602f83615489565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b60006060830160008301518482036000860152614c3a82826145ad565b91505060208301518482036020860152614c5482826145ad565b91505060408301518482036040860152614c6e82826145ad565b9150508091505092915050565b60006020830160008301518482036000860152614c9882826145ad565b9150508091505092915050565b614cae8161550e565b82525050565b6000614cc082846144df565b915081905092915050565b6000614cd78284614510565b915081905092915050565b6000606082019050614cf7600083018661443d565b614d04602083018561443d565b614d116040830184614ca5565b949350505050565b6000604082019050614d2e600083018561443d565b614d3b6020830184614ca5565b9392505050565b600060a082019050614d57600083018861443d565b614d646020830187614ca5565b8181036040830152614d76818661461f565b90508181036060830152614d8a818561461f565b90508181036080830152614d9e81846145e6565b90509695505050505050565b600060c082019050614dbf600083018961443d565b614dcc6020830188614ca5565b8181036040830152614dde818761461f565b90508181036060830152614df2818661461f565b90508181036080830152614e0681856145e6565b905081810360a0830152614e1a81846145e6565b9050979650505050505050565b60006020820190508181036000830152614e41818461444c565b905092915050565b6000602082019050614e5e60008301846144c1565b92915050565b6000602082019050614e7960008301846144d0565b92915050565b6000602082019050614e94600083018461458f565b92915050565b6000602082019050614eaf600083018461459e565b92915050565b60006020820190508181036000830152614ecf81846145e6565b905092915050565b60006060820190508181036000830152614ef181866145e6565b90508181036020830152614f0581856145e6565b90508181036040830152614f1981846145e6565b9050949350505050565b60006020820190508181036000830152614f3c8161469f565b9050919050565b60006020820190508181036000830152614f5c816146df565b9050919050565b60006020820190508181036000830152614f7c81614745565b9050919050565b60006020820190508181036000830152614f9c81614785565b9050919050565b60006020820190508181036000830152614fbc81614805565b9050919050565b60006020820190508181036000830152614fdc81614885565b9050919050565b60006020820190508181036000830152614ffc816148eb565b9050919050565b6000602082019050818103600083015261501c8161492b565b9050919050565b6000602082019050818103600083015261503c816149d1565b9050919050565b6000602082019050818103600083015261505c81614a11565b9050919050565b6000602082019050818103600083015261507c81614a51565b9050919050565b6000602082019050818103600083015261509c81614a91565b9050919050565b600060208201905081810360008301526150bc81614af7565b9050919050565b600060208201905081810360008301526150dc81614b37565b9050919050565b600060208201905081810360008301526150fc81614b77565b9050919050565b6000602082019050818103600083015261511c81614bb7565b9050919050565b6000602082019050818103600083015261513d8184614c1d565b905092915050565b600060208201905061515a6000830184614ca5565b92915050565b600060a0820190506151756000830187614ca5565b615182602083018661443d565b61518f6040830185614ca5565b81810360608301526151a181846145e6565b905081810360808301526151b4816147c5565b905095945050505050565b600060a0820190506151d46000830187614ca5565b6151e1602083018661443d565b6151ee6040830185614ca5565b818103606083015261520081846145e6565b9050818103608083015261521381614845565b905095945050505050565b600060a0820190506152336000830187614ca5565b615240602083018661443d565b61524d6040830185614ca5565b818103606083015261525f81846145e6565b9050818103608083015261527281614991565b905095945050505050565b600060e082019050615292600083018a614ca5565b61529f6020830189614ca5565b81810360408301526152b1818861461f565b905081810360608301526152c5818761461f565b905081810360808301526152d9818661461f565b905081810360a08301526152ed81856145e6565b905081810360c083015261530181846145e6565b905098975050505050505050565b6000604051905081810181811067ffffffffffffffff821117156153365761533561567b565b5b8060405250919050565b600067ffffffffffffffff82111561535b5761535a61567b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156153875761538661567b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156153b3576153b261567b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156153df576153de61567b565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006154a5826154ee565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006155238261552a565b9050919050565b6000615535826154ee565b9050919050565b60006155478261554e565b9050919050565b6000615559826154ee565b9050919050565b82818337600083830152505050565b60005b8381101561558d578082015181840152602081019050615572565b8381111561559c576000848401525b50505050565b600060028204905060018216806155ba57607f821691505b602082108114156155ce576155cd61564c565b5b50919050565b60006155df8261550e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156156125761561161561d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6156c48161549a565b81146156cf57600080fd5b50565b6156db816154ac565b81146156e657600080fd5b50565b6156f2816154b8565b81146156fd57600080fd5b50565b615709816154c2565b811461571457600080fd5b50565b6157208161550e565b811461572b57600080fd5b5056fea2646970667358221220003289b9966816ce61280e8cd8543a493e1057c7e692b2be713516805923786164736f6c63430008000033000000000000000000000000d998ea274c1edcce9ee97182a112735441f21dbe0000000000000000000000004cd0ce1d5e10afbcaa565a0fe2a810ef0eb9b7e200000000000000000000000020d39a5130f799b95b55a930e5b7ebc589ea9ed8

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

000000000000000000000000d998ea274c1edcce9ee97182a112735441f21dbe0000000000000000000000004cd0ce1d5e10afbcaa565a0fe2a810ef0eb9b7e200000000000000000000000020d39a5130f799b95b55a930e5b7ebc589ea9ed8

-----Decoded View---------------
Arg [0] : minter (address): 0xd998ea274c1edcce9ee97182a112735441f21dbe
Arg [1] : _heroesNft (address): 0x4cd0ce1d5e10afbcaa565a0fe2a810ef0eb9b7e2
Arg [2] : _heroesToken (address): 0x20d39a5130f799b95b55a930e5b7ebc589ea9ed8

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000d998ea274c1edcce9ee97182a112735441f21dbe
Arg [1] : 0000000000000000000000004cd0ce1d5e10afbcaa565a0fe2a810ef0eb9b7e2
Arg [2] : 00000000000000000000000020d39a5130f799b95b55a930e5b7ebc589ea9ed8


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