More Info
Private Name Tags
ContractCreator
TokenTracker
Multichain Info
1 address found via
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x379cba40e880f65ac1f0db8e30004058e0b0acf2c85f7328aa56f79fbc2a85f9 | Take Token | (pending) | 7 days ago | IN | 0 ETH | (Pending) | |||
0xcf90fad41cebc13cad6a88b35850307c3cf7fce71f294a77cd38a99ec4fe30e3 | Take Token | (pending) | 7 days ago | IN | 0 ETH | (Pending) | |||
Set Approval For... | 21361732 | 111 days ago | IN | 0 ETH | 0.0005878 | ||||
Transfer From | 21332324 | 116 days ago | IN | 0 ETH | 0.00198241 | ||||
Transfer From | 19821424 | 327 days ago | IN | 0 ETH | 0.00031208 | ||||
Set Approval For... | 18792109 | 471 days ago | IN | 0 ETH | 0.00289259 | ||||
Set Approval For... | 18045718 | 575 days ago | IN | 0 ETH | 0.00047237 | ||||
Safe Transfer Fr... | 17607999 | 637 days ago | IN | 0 ETH | 0.001365 | ||||
Transfer From | 17289754 | 682 days ago | IN | 0 ETH | 0.00338461 | ||||
Set Approval For... | 17271858 | 684 days ago | IN | 0 ETH | 0.00242615 | ||||
Safe Transfer Fr... | 17028275 | 718 days ago | IN | 0 ETH | 0.00181563 | ||||
Transfer From | 16944138 | 730 days ago | IN | 0 ETH | 0.00237292 | ||||
Transfer From | 16310010 | 819 days ago | IN | 0 ETH | 0.00134333 | ||||
Take Token | 16029112 | 858 days ago | IN | 0 ETH | 0.0027658 | ||||
Take Token | 16029087 | 858 days ago | IN | 0 ETH | 0.0026454 | ||||
Take Token | 15990273 | 864 days ago | IN | 0 ETH | 0.00370787 | ||||
Take Token | 15990268 | 864 days ago | IN | 0 ETH | 0.00348338 | ||||
Take Token | 15882112 | 879 days ago | IN | 0 ETH | 0.00244568 | ||||
Take Token | 15869259 | 881 days ago | IN | 0 ETH | 0.00468197 | ||||
Take Token | 15631522 | 914 days ago | IN | 0 ETH | 0.00276976 | ||||
Take Token | 15630952 | 914 days ago | IN | 0 ETH | 0.0031766 | ||||
Take Token | 15617306 | 916 days ago | IN | 0 ETH | 0.00149626 | ||||
Take Token | 15370117 | 954 days ago | IN | 0 ETH | 0.00330213 | ||||
Transfer | 15290949 | 967 days ago | IN | 0 ETH | 0.00005608 | ||||
Take Token | 15201949 | 980 days ago | IN | 0 ETH | 0.00247461 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xA35ba05b...310890F7c The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
MultiHandler
Compiler Version
v0.8.1+commit.df193b15
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-25 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.1; /* VERSION DATE: 24/03/2021 */ library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } } library Strings { function toString(uint256 value) internal pure returns (string memory) { if (value == 0) return "0"; uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } interface IERC721 is IERC165 { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom(address from, address to, uint256 tokenId) external; function transferFrom(address from, address to, uint256 tokenId) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } interface IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } contract ERC721Full is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable, IERC721Receiver { using Address for address; using Strings for uint256; string private _name; string private _symbol; string private _baseTokenURI; mapping (uint256 => address) private _owners; // Mapping from token ID to owner address mapping (address => uint256) private _balances; // Mapping owner address to token count mapping (uint256 => address) private _tokenApprovals; // Mapping from token ID to approved address mapping (address => mapping (address => bool)) private _operatorApprovals; // Mapping from owner to operator approvals uint256[] private _allTokens; // Array with all token ids, used for enumeration mapping(uint256 => uint256) private _allTokensIndex; // Mapping from token id to position in the allTokens array mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from owner to list of owned token IDs mapping(uint256 => uint256) private _ownedTokensIndex; // Mapping from token ID to index of the owner tokens list constructor(string memory name_, string memory symbol_, string memory baseTokenURI_) { _name = name_; _symbol = symbol_; _baseTokenURI = baseTokenURI_; } function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes calldata _data ) external pure override returns(bytes4) { _operator; _from; _tokenId; _data; return 0x150b7a02; } // 0x01ffc9a7 = ERC165 // 0x80ac58cd = ERC721 // 0x780e9d63 = ERC721Enumerable // 0x5b5e139f = ERC721Metadata // 0x150b7a02 = ERC721Receiver function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || interfaceId == type(IERC721Receiver).interfaceId || super.supportsInterface(interfaceId); } function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256 tokenId) { require(index < balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ''; } function _baseURI() internal view virtual returns (string memory) { return _baseTokenURI; } function approve(address to, uint256 tokenId) public virtual override { address owner = ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom(address from, address to, uint256 tokenId) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual { _mint(to, tokenId); require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } function _transfer(address from, address to, uint256 tokenId) internal virtual { require(ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); if (_tokenApprovals[tokenId] != address(0)) _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ownerOf(tokenId), to, tokenId); } function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { // solhint-disable-next-line no-inline-assembly assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { require( to != address(0), "forbidden transfer to address(0)" ); require( from != to, "from equal to" ); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else { _removeTokenFromOwnerEnumeration(from, tokenId); } _addTokenToOwnerEnumeration(to, tokenId); } function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { uint256 lastTokenIndex = balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; _ownedTokensIndex[lastTokenId] = tokenIndex; } delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } } abstract contract CheckAccess { function isAdmin(address addr) public virtual view returns (bool); } contract MultiHandler is ERC721Full { using Strings for uint256; using Address for address; address checkAccessContract; struct Type { string name; string URI; string IPFSHash; uint issuedCount; uint minBound; uint maxBound; } Type[] typesById; uint public endPoint = 0; mapping (uint256 => uint256) public tokenType; // idToken => idType mapping (uint64 => bool) public nonces; constructor( string memory _name, string memory _symbol, string memory _tokenURI, address _checkAccessContract ) ERC721Full(_name, _symbol, _tokenURI) { checkAccessContract = _checkAccessContract; require(checkAccessContract.isContract(), "checkAccessContract is not found"); } event CreateType(uint typeId, string name, uint count, uint min, uint max); function checkAdmin(address addr) public view returns (bool) { CheckAccess check = CheckAccess(checkAccessContract); return( check.isAdmin(addr) ); } modifier onlyAdmin() { require( checkAdmin(_msgSender()), "wrong admin" ); _; } function createType( string memory _name, string memory _uri, string memory _ipfs, uint _startPoint, uint _count) public onlyAdmin { require( bytes(_name).length >= 3, "wrong length" ); require( bytes(_ipfs).length >= 3, "wrong length" ); require( _count > 0, "count must not be zero" ); require( _startPoint > endPoint, "wrong startPoint" ); uint id = typesById.length; if ( bytes(_uri).length == 0 ) _uri = _baseURI(); uint minBound = _startPoint; uint maxBound = _startPoint + _count - 1; endPoint = maxBound; Type memory _type = Type({ name: _name, URI: _uri, IPFSHash: _ipfs, issuedCount: 0, minBound: minBound, maxBound: maxBound }); typesById.push( _type ); emit CreateType(id, _name, _count, minBound, maxBound); } function getTypeById(uint256 typeId) public view returns ( string memory name, string memory URI, string memory IPFSHash, uint maxCount, uint issuedCount, uint minBound, uint maxBound ){ require( typeId < typesById.length, "query for nonexistent type" ); name = typesById[typeId].name; URI = typesById[typeId].URI; IPFSHash = typesById[typeId].IPFSHash; maxCount = typesById[typeId].maxBound - typesById[typeId].minBound + 1; issuedCount = typesById[typeId].issuedCount; minBound = typesById[typeId].minBound; maxBound = typesById[typeId].maxBound; } function tokenURI(uint256 tokenId) public view override returns (string memory) { require(_exists(tokenId), "query for nonexistent token"); uint typeId = tokenType[tokenId]; return string(abi.encodePacked( typesById[typeId].URI, tokenId.toString())); } function tokenIPFSHash(uint256 tokenId) public view returns (string memory hash) { require(_exists(tokenId), "query for nonexistent token"); uint typeId = tokenType[tokenId]; return typesById[typeId].IPFSHash; } function issueToken(address addr, uint typeId, uint256 tokenId) internal { require( typeId < typesById.length, "query for nonexistent type" ); require( tokenId >= typesById[typeId].minBound, "min overrun" ); require( tokenId <= typesById[typeId].maxBound, "max overrun" ); if (_exists(tokenId)) { _transfer(address(this), addr, tokenId); } else { tokenType[tokenId] = typeId; typesById[typeId].issuedCount++; _mint(addr, tokenId); } } function giveTokenTo(address to, uint typeId, uint tokenId) public onlyAdmin { issueToken(to, typeId, tokenId); } function giveTokens(address[] memory addrs, uint typeId, uint[] memory idTokens) public onlyAdmin { require(addrs.length>0, "length is 0"); require(addrs.length == idTokens.length, "arrays are not equal"); uint count = addrs.length; for(uint i = 0; i < count; i++) { issueToken(addrs[i], typeId, idTokens[i]); } } function takeToken(uint256 typeId, uint256 tokenId, uint64 nonce, bytes32 r, bytes32 s, uint8 v) public { bytes memory prefix = "\x19Ethereum Signed Message:\n32"; bytes32 hash = keccak256( abi.encodePacked(address(this), _msgSender(), nonce, typeId, tokenId) ); address signer = ecrecover(keccak256(abi.encodePacked(prefix,hash)), v, r, s); require( nonces[nonce] == false, "wrong nonce" ); nonces[nonce] = true; require( checkAdmin(signer), "wrong admin" ); issueToken(_msgSender(), typeId, tokenId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"address","name":"_checkAccessContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"typeId","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"min","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"max","type":"uint256"}],"name":"CreateType","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"checkAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_uri","type":"string"},{"internalType":"string","name":"_ipfs","type":"string"},{"internalType":"uint256","name":"_startPoint","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"createType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"getTypeById","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"URI","type":"string"},{"internalType":"string","name":"IPFSHash","type":"string"},{"internalType":"uint256","name":"maxCount","type":"uint256"},{"internalType":"uint256","name":"issuedCount","type":"uint256"},{"internalType":"uint256","name":"minBound","type":"uint256"},{"internalType":"uint256","name":"maxBound","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"giveTokenTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256[]","name":"idTokens","type":"uint256[]"}],"name":"giveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"nonces","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"uint8","name":"v","type":"uint8"}],"name":"takeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenIPFSHash","outputs":[{"internalType":"string","name":"hash","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063b6aa991611610097578063d371663011610071578063d371663014610396578063d50df00d146103a9578063e6c3b1f6146103bc578063e985e9c5146103cf576101a9565b8063b6aa99161461034a578063b88d4fde14610370578063c87b56dd14610383576101a9565b806395d89b41116100d357806395d89b411461031457806399e51e1c1461031c578063a22cb46514610324578063a55e7be614610337576101a9565b806370a08231146102db5780638819a12f146102ee5780639026dee814610301576101a9565b806323b872dd1161016657806342842e0e1161014057806342842e0e1461028f5780634400c82c146102a25780634f6ccce7146102b55780636352211e146102c8576101a9565b806323b872dd146102565780632afac9af146102695780632f745c591461027c576101a9565b806301ffc9a7146101ae57806306fdde03146101d7578063081812fc146101ec578063095ea7b31461020c578063150b7a021461022157806318160ddd14610241575b600080fd5b6101c16101bc3660046120a5565b6103e2565b6040516101ce91906123af565b60405180910390f35b6101df610460565b6040516101ce91906123ed565b6101ff6101fa366004612173565b6104f2565b6040516101ce919061235e565b61021f61021a366004611f67565b61053e565b005b61023461022f366004611e22565b6105d6565b6040516101ce91906123d8565b6102496105e7565b6040516101ce9190612ac4565b61021f610264366004611de7565b6105ed565b61021f610277366004611fc2565b610625565b61024961028a366004611f67565b61070d565b61021f61029d366004611de7565b61075f565b61021f6102b0366004611f90565b61077a565b6102496102c3366004612173565b6107ac565b6101ff6102d6366004612173565b610807565b6102496102e9366004611d9b565b61083c565b61021f6102fc3660046120dd565b610880565b6101c161030f366004611d9b565b610a7d565b6101df610b07565b610249610b16565b61021f610332366004611f31565b610b1c565b61021f61034536600461218b565b610bea565b61035d610358366004612173565b610d77565b6040516101ce9796959493929190612400565b61021f61037e366004611eb8565b611104565b6101df610391366004612173565b611143565b6101df6103a4366004612173565b6111dd565b6101c16103b73660046121eb565b6112d7565b6102496103ca366004612173565b6112ec565b6101c16103dd366004611db5565b6112fe565b60006001600160e01b031982166380ac58cd60e01b148061041357506001600160e01b03198216635b5e139f60e01b145b8061042e57506001600160e01b0319821663780e9d6360e01b145b8061044957506001600160e01b03198216630a85bd0160e11b145b80610458575061045882611332565b90505b919050565b60606000805461046f90612bd3565b80601f016020809104026020016040519081016040528092919081815260200182805461049b90612bd3565b80156104e85780601f106104bd576101008083540402835291602001916104e8565b820191906000526020600020905b8154815290600101906020018083116104cb57829003601f168201915b5050505050905090565b60006104fd8261134b565b6105225760405162461bcd60e51b8152600401610519906128d0565b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061054982610807565b9050806001600160a01b0316836001600160a01b0316141561057d5760405162461bcd60e51b81526004016105199061298a565b806001600160a01b031661058f611368565b6001600160a01b031614806105ab57506105ab816103dd611368565b6105c75760405162461bcd60e51b8152600401610519906126fe565b6105d1838361136c565b505050565b630a85bd0160e11b95945050505050565b60075490565b6105fe6105f8611368565b826113da565b61061a5760405162461bcd60e51b8152600401610519906129cb565b6105d183838361145f565b61063061030f611368565b61064c5760405162461bcd60e51b81526004016105199061291c565b600083511161066d5760405162461bcd60e51b81526004016105199061281c565b805183511461068e5760405162461bcd60e51b81526004016105199061275b565b825160005b81811015610706576106f48582815181106106be57634e487b7160e01b600052603260045260246000fd5b6020026020010151858584815181106106e757634e487b7160e01b600052603260045260246000fd5b60200260200101516115a9565b806106fe81612c0e565b915050610693565b5050505050565b60006107188361083c565b82106107365760405162461bcd60e51b815260040161051990612460565b506001600160a01b03919091166000908152600960209081526040808320938352929052205490565b6105d183838360405180602001604052806000815250611104565b61078561030f611368565b6107a15760405162461bcd60e51b81526004016105199061291c565b6105d18383836115a9565b60006107b66105e7565b82106107d45760405162461bcd60e51b815260040161051990612a1c565b600782815481106107f557634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000818152600360205260408120546001600160a01b0316806104585760405162461bcd60e51b8152600401610519906127d3565b60006001600160a01b0382166108645760405162461bcd60e51b815260040161051990612789565b506001600160a01b031660009081526004602052604090205490565b61088b61030f611368565b6108a75760405162461bcd60e51b81526004016105199061291c565b6003855110156108c95760405162461bcd60e51b8152600401610519906126a8565b6003835110156108eb5760405162461bcd60e51b8152600401610519906126a8565b6000811161090b5760405162461bcd60e51b8152600401610519906126ce565b600d54821161092c5760405162461bcd60e51b8152600401610519906124fd565b600c5484516109405761093d6116ec565b94505b826000600161094f8584612b64565b6109599190612b90565b600d8190556040805160c0810182528a815260208082018b90529181018990526000606082018190526080820186905260a08201849052600c80546001810182559152815180519495509193849360069092027fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c701926109dd928492910190611bf0565b5060208281015180516109f69260018501920190611bf0565b5060408201518051610a12916002840191602090910190611bf0565b50606082015181600301556080820151816004015560a0820151816005015550507f215b5066ded56c7fc073dbdda4d09e3a6f644406a2e5bc085a7d7b23ba4b2a9e848a878686604051610a6a959493929190612acd565b60405180910390a1505050505050505050565b600b54604051630935e01b60e21b81526000916001600160a01b03169081906324d7806c90610ab090869060040161235e565b60206040518083038186803b158015610ac857600080fd5b505afa158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b009190612089565b9392505050565b60606001805461046f90612bd3565b600d5481565b610b24611368565b6001600160a01b0316826001600160a01b03161415610b555760405162461bcd60e51b8152600401610519906125c9565b8060066000610b62611368565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610ba6611368565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610bde91906123af565b60405180910390a35050565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152600030610c29611368565b878a8a604051602001610c4095949392919061224d565b604051602081830303815290604052805190602001209050600060018383604051602001610c6f929190612296565b6040516020818303038152906040528051906020012085888860405160008152602001604052604051610ca594939291906123ba565b6020604051602081039080840390855afa158015610cc7573d6000803e3d6000fd5b505060408051601f19015167ffffffffffffffff8a166000908152600f602052919091205490925060ff16159050610d115760405162461bcd60e51b815260040161051990612841565b67ffffffffffffffff87166000908152600f60205260409020805460ff19166001179055610d3e81610a7d565b610d5a5760405162461bcd60e51b81526004016105199061291c565b610d6c610d65611368565b8a8a6115a9565b505050505050505050565b6060806060600080600080600c805490508810610da65760405162461bcd60e51b815260040161051990612a68565b600c8881548110610dc757634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016000018054610de390612bd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0f90612bd3565b8015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b820191906000526020600020905b815481529060010190602001808311610e3f57829003601f168201915b50505050509650600c8881548110610e8457634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016001018054610ea090612bd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecc90612bd3565b8015610f195780601f10610eee57610100808354040283529160200191610f19565b820191906000526020600020905b815481529060010190602001808311610efc57829003601f168201915b50505050509550600c8881548110610f4157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016002018054610f5d90612bd3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8990612bd3565b8015610fd65780601f10610fab57610100808354040283529160200191610fd6565b820191906000526020600020905b815481529060010190602001808311610fb957829003601f168201915b50505050509450600c8881548110610ffe57634e487b7160e01b600052603260045260246000fd5b906000526020600020906006020160040154600c898154811061103157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016005015461104d9190612b90565b611058906001612b64565b9350600c888154811061107b57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600301549250600c88815481106110b057634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600401549150600c88815481106110e557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600501549050919395979092949650565b61111561110f611368565b836113da565b6111315760405162461bcd60e51b8152600401610519906129cb565b61113d848484846116fb565b50505050565b606061114e8261134b565b61116a5760405162461bcd60e51b815260040161051990612671565b6000828152600e6020526040902054600c80548290811061119b57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016001016111b58461172e565b6040516020016111c69291906122b8565b604051602081830303815290604052915050919050565b60606111e88261134b565b6112045760405162461bcd60e51b815260040161051990612671565b6000828152600e6020526040902054600c80548290811061123557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060060201600201805461125190612bd3565b80601f016020809104026020016040519081016040528092919081815260200182805461127d90612bd3565b80156112ca5780601f1061129f576101008083540402835291602001916112ca565b820191906000526020600020905b8154815290600101906020018083116112ad57829003601f168201915b5050505050915050919050565b600f6020526000908152604090205460ff1681565b600e6020526000908152604090205481565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3b151590565b6001600160e01b031981166301ffc9a760e01b14919050565b6000908152600360205260409020546001600160a01b0316151590565b3390565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906113a182610807565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006113e58261134b565b6114015760405162461bcd60e51b815260040161051990612625565b600061140c83610807565b9050806001600160a01b0316846001600160a01b031614806114475750836001600160a01b031661143c846104f2565b6001600160a01b0316145b80611457575061145781856112fe565b949350505050565b826001600160a01b031661147282610807565b6001600160a01b0316146114985760405162461bcd60e51b815260040161051990612941565b6001600160a01b0382166114be5760405162461bcd60e51b815260040161051990612585565b6114c9838383611849565b6000818152600560205260409020546001600160a01b0316156114f1576114f160008261136c565b6001600160a01b038316600090815260046020526040812080546001929061151a908490612b90565b90915550506001600160a01b0382166000908152600460205260408120805460019290611548908490612b64565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600c5482106115ca5760405162461bcd60e51b815260040161051990612a68565b600c82815481106115eb57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016004015481101561161c5760405162461bcd60e51b815260040161051990612a9f565b600c828154811061163d57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600602016005015481111561166e5760405162461bcd60e51b815260040161051990612600565b6116778161134b565b1561168c5761168730848361145f565b6105d1565b6000818152600e60205260409020829055600c8054839081106116bf57634e487b7160e01b600052603260045260246000fd5b6000918252602082206003600690920201018054916116dd83612c0e565b91905055506105d183826118d1565b60606002805461046f90612bd3565b61170684848461145f565b611712848484846119b0565b61113d5760405162461bcd60e51b8152600401610519906124ab565b60608161175357506040805180820190915260018152600360fc1b602082015261045b565b8160005b811561177d578061176781612c0e565b91506117769050600a83612b7c565b9150611757565b60008167ffffffffffffffff8111156117a657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156117d0576020820181803683370190505b5090505b8415611457576117e5600183612b90565b91506117f2600a86612c29565b6117fd906030612b64565b60f81b81838151811061182057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611842600a86612b7c565b94506117d4565b6001600160a01b03821661186f5760405162461bcd60e51b815260040161051990612866565b816001600160a01b0316836001600160a01b031614156118a15760405162461bcd60e51b81526004016105199061255e565b6001600160a01b0383166118bd576118b881611acb565b6118c7565b6118c78382611b0f565b6105d18282611bac565b6001600160a01b0382166118f75760405162461bcd60e51b81526004016105199061289b565b6119008161134b565b1561191d5760405162461bcd60e51b815260040161051990612527565b61192960008383611849565b6001600160a01b0382166000908152600460205260408120805460019290611952908490612b64565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006119c4846001600160a01b031661132c565b15611ac057836001600160a01b031663150b7a026119e0611368565b8786866040518563ffffffff1660e01b8152600401611a029493929190612372565b602060405180830381600087803b158015611a1c57600080fd5b505af1925050508015611a4c575060408051601f3d908101601f19168201909252611a49918101906120c1565b60015b611aa6573d808015611a7a576040519150601f19603f3d011682016040523d82523d6000602084013e611a7f565b606091505b508051611a9e5760405162461bcd60e51b8152600401610519906124ab565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611457565b506001949350505050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b60006001611b1c8461083c565b611b269190612b90565b6000838152600a6020526040902054909150808214611b79576001600160a01b03841660009081526009602090815260408083208584528252808320548484528184208190558352600a90915290208190555b506000918252600a602090815260408084208490556001600160a01b039094168352600981528383209183525290812055565b6000611bb78361083c565b6001600160a01b0390931660009081526009602090815260408083208684528252808320859055938252600a9052919091209190915550565b828054611bfc90612bd3565b90600052602060002090601f016020900481019282611c1e5760008555611c64565b82601f10611c3757805160ff1916838001178555611c64565b82800160010185558215611c64579182015b82811115611c64578251825591602001919060010190611c49565b50611c70929150611c74565b5090565b5b80821115611c705760008155600101611c75565b600067ffffffffffffffff831115611ca357611ca3612c69565b611cb6601f8401601f1916602001612b03565b9050828152838383011115611cca57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461045b57600080fd5b600082601f830112611d08578081fd5b81356020611d1d611d1883612b34565b612b03565b8281528181019085830183850287018401881015611d39578586fd5b855b85811015611d5757813584529284019290840190600101611d3b565b5090979650505050505050565b600082601f830112611d74578081fd5b610b0083833560208501611c89565b803567ffffffffffffffff8116811461045b57600080fd5b600060208284031215611dac578081fd5b610b0082611ce1565b60008060408385031215611dc7578081fd5b611dd083611ce1565b9150611dde60208401611ce1565b90509250929050565b600080600060608486031215611dfb578081fd5b611e0484611ce1565b9250611e1260208501611ce1565b9150604084013590509250925092565b600080600080600060808688031215611e39578081fd5b611e4286611ce1565b9450611e5060208701611ce1565b935060408601359250606086013567ffffffffffffffff80821115611e73578283fd5b818801915088601f830112611e86578283fd5b813581811115611e94578384fd5b896020828501011115611ea5578384fd5b9699959850939650602001949392505050565b60008060008060808587031215611ecd578384fd5b611ed685611ce1565b9350611ee460208601611ce1565b925060408501359150606085013567ffffffffffffffff811115611f06578182fd5b8501601f81018713611f16578182fd5b611f2587823560208401611c89565b91505092959194509250565b60008060408385031215611f43578182fd5b611f4c83611ce1565b91506020830135611f5c81612c7f565b809150509250929050565b60008060408385031215611f79578182fd5b611f8283611ce1565b946020939093013593505050565b600080600060608486031215611fa4578081fd5b611fad84611ce1565b95602085013595506040909401359392505050565b600080600060608486031215611fd6578081fd5b833567ffffffffffffffff80821115611fed578283fd5b818601915086601f830112612000578283fd5b81356020612010611d1883612b34565b82815281810190858301838502870184018c101561202c578788fd5b8796505b848710156120555761204181611ce1565b835260019690960195918301918301612030565b509750508701359450506040860135915080821115612072578283fd5b5061207f86828701611cf8565b9150509250925092565b60006020828403121561209a578081fd5b8151610b0081612c7f565b6000602082840312156120b6578081fd5b8135610b0081612c90565b6000602082840312156120d2578081fd5b8151610b0081612c90565b600080600080600060a086880312156120f4578283fd5b853567ffffffffffffffff8082111561210b578485fd5b61211789838a01611d64565b9650602088013591508082111561212c578485fd5b61213889838a01611d64565b9550604088013591508082111561214d578485fd5b5061215a88828901611d64565b9598949750949560608101359550608001359392505050565b600060208284031215612184578081fd5b5035919050565b60008060008060008060c087890312156121a3578384fd5b86359550602087013594506121ba60408801611d83565b9350606087013592506080870135915060a087013560ff811681146121dd578182fd5b809150509295509295509295565b6000602082840312156121fc578081fd5b610b0082611d83565b6000815180845261221d816020860160208601612ba7565b601f01601f19169290920160200192915050565b60008151612243818560208601612ba7565b9290920192915050565b606095861b6bffffffffffffffffffffffff1990811682529490951b909316601485015260c09190911b6001600160c01b03191660288401526030830152605082015260700190565b600083516122a8818460208801612ba7565b9190910191825250602001919050565b82546000908190600281046001808316806122d457607f831692505b60208084108214156122f457634e487b7160e01b87526022600452602487fd5b818015612308576001811461231957612345565b60ff19861689528489019650612345565b6123228b612b58565b885b8681101561233d5781548b820152908501908301612324565b505084890196505b5050505050506123558185612231565b95945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123a590830184612205565b9695505050505050565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6001600160e01b031991909116815260200190565b600060208252610b006020830184612205565b600060e0825261241360e083018a612205565b8281036020840152612425818a612205565b905082810360408401526124398189612205565b9150508560608301528460808301528360a08301528260c083015298975050505050505050565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526010908201526f1ddc9bdb99c81cdd185c9d141bda5b9d60821b604082015260600190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252600d908201526c66726f6d20657175616c20746f60981b604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252600b908201526a36b0bc1037bb32b9393ab760a91b604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252601b908201527f717565727920666f72206e6f6e6578697374656e7420746f6b656e0000000000604082015260600190565b6020808252600c908201526b0eee4dedcce40d8cadccee8d60a31b604082015260600190565b602080825260169082015275636f756e74206d757374206e6f74206265207a65726f60501b604082015260600190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b602080825260149082015273185c9c985e5cc8185c99481b9bdd08195c5d585b60621b604082015260600190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252600b908201526a06c656e67746820697320360ac1b604082015260600190565b6020808252600b908201526a77726f6e67206e6f6e636560a81b604082015260600190565b6020808252818101527f666f7262696464656e207472616e7366657220746f2061646472657373283029604082015260600190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252600b908201526a3bb937b7339030b236b4b760a91b604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b6020808252601a908201527f717565727920666f72206e6f6e6578697374656e742074797065000000000000604082015260600190565b6020808252600b908201526a36b4b71037bb32b9393ab760a91b604082015260600190565b90815260200190565b600086825260a06020830152612ae660a0830187612205565b604083019590955250606081019290925260809091015292915050565b604051601f8201601f1916810167ffffffffffffffff81118282101715612b2c57612b2c612c69565b604052919050565b600067ffffffffffffffff821115612b4e57612b4e612c69565b5060209081020190565b60009081526020902090565b60008219821115612b7757612b77612c3d565b500190565b600082612b8b57612b8b612c53565b500490565b600082821015612ba257612ba2612c3d565b500390565b60005b83811015612bc2578181015183820152602001612baa565b8381111561113d5750506000910152565b600281046001821680612be757607f821691505b60208210811415612c0857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c2257612c22612c3d565b5060010190565b600082612c3857612c38612c53565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114612c8d57600080fd5b50565b6001600160e01b031981168114612c8d57600080fdfea2646970667358221220d080b7f27b056eae7b9dd1abbcce4c2827f4121da0b87bc109610d22c148b1d764736f6c63430008010033
Deployed Bytecode Sourcemap
13432:4601:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:426;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6261:102;;;:::i;:::-;;;;;;;:::i;7370:223::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6970:392::-;;;;;;:::i;:::-;;:::i;:::-;;4379:220;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5193:106::-;;;:::i;:::-;;;;;;;:::i;8080:254::-;;;;;;:::i;:::-;;:::i;17128:353::-;;;;;;:::i;:::-;;:::i;5307:256::-;;;;;;:::i;:::-;;:::i;8342:153::-;;;;;;:::i;:::-;;:::i;17002:120::-;;;;;;:::i;:::-;;:::i;5571:215::-;;;;;;:::i;:::-;;:::i;6012:241::-;;;;;;:::i;:::-;;:::i;5794:210::-;;;;;;:::i;:::-;;:::i;14550:820::-;;;;;;:::i;:::-;;:::i;14291:159::-;;;;;;:::i;:::-;;:::i;6371:106::-;;;:::i;13749:24::-;;;:::i;7601:297::-;;;;;;:::i;:::-;;:::i;17487:543::-;;;;;;:::i;:::-;;:::i;15375:603::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;8503:287::-;;;;;;:::i;:::-;;:::i;15987:274::-;;;;;;:::i;:::-;;:::i;16267:224::-;;;;;;:::i;:::-;;:::i;13850:38::-;;;;;;:::i;:::-;;:::i;13780:45::-;;;;;;:::i;:::-;;:::i;7906:166::-;;;;;;:::i;:::-;;:::i;4759:426::-;4861:4;-1:-1:-1;;;;;;4887:40:0;;-1:-1:-1;;;4887:40:0;;:105;;-1:-1:-1;;;;;;;4944:48:0;;-1:-1:-1;;;4944:48:0;4887:105;:172;;;-1:-1:-1;;;;;;;5009:50:0;;-1:-1:-1;;;5009:50:0;4887:172;:237;;;-1:-1:-1;;;;;;;5076:48:0;;-1:-1:-1;;;5076:48:0;4887:237;:290;;;;5141:36;5165:11;5141:23;:36::i;:::-;4880:297;;4759:426;;;;:::o;6261:102::-;6315:13;6350:5;6343:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6261:102;:::o;7370:223::-;7446:7;7476:16;7484:7;7476;:16::i;:::-;7468:73;;;;-1:-1:-1;;;7468:73:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;7561:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;7561:24:0;;7370:223::o;6970:392::-;7053:13;7069:16;7077:7;7069;:16::i;:::-;7053:32;;7110:5;-1:-1:-1;;;;;7104:11:0;:2;-1:-1:-1;;;;;7104:11:0;;;7096:57;;;;-1:-1:-1;;;7096:57:0;;;;;;;:::i;:::-;7190:5;-1:-1:-1;;;;;7174:21:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;7174:21:0;;:62;;;;7199:37;7216:5;7223:12;:10;:12::i;7199:37::-;7166:154;;;;-1:-1:-1;;;7166:154:0;;;;;;;:::i;:::-;7333:21;7342:2;7346:7;7333:8;:21::i;:::-;6970:392;;;:::o;4379:220::-;-1:-1:-1;;;4379:220:0;;;;;;;:::o;5193:106::-;5277:10;:17;5193:106;:::o;8080:254::-;8190:41;8209:12;:10;:12::i;:::-;8223:7;8190:18;:41::i;:::-;8182:103;;;;-1:-1:-1;;;8182:103:0;;;;;;;:::i;:::-;8298:28;8308:4;8314:2;8318:7;8298:9;:28::i;17128:353::-;14492:24;14503:12;:10;:12::i;14492:24::-;14483:50;;;;-1:-1:-1;;;14483:50:0;;;;;;;:::i;:::-;17254:1:::1;17241:5;:12;:14;17233:38;;;;-1:-1:-1::0;;;17233:38:0::1;;;;;;;:::i;:::-;17300:8;:15;17284:5;:12;:31;17276:64;;;;-1:-1:-1::0;;;17276:64:0::1;;;;;;;:::i;:::-;17362:12:::0;;17349:10:::1;17379:95;17399:5;17395:1;:9;17379:95;;;17421:41;17432:5;17438:1;17432:8;;;;;;-1:-1:-1::0;;;17432:8:0::1;;;;;;;;;;;;;;;17442:6;17450:8;17459:1;17450:11;;;;;;-1:-1:-1::0;;;17450:11:0::1;;;;;;;;;;;;;;;17421:10;:41::i;:::-;17406:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17379:95;;;;14538:1;17128:353:::0;;;:::o;5307:256::-;5404:15;5450:16;5460:5;5450:9;:16::i;:::-;5442:5;:24;5434:80;;;;-1:-1:-1;;;5434:80:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5532:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;5307:256::o;8342:153::-;8448:39;8465:4;8471:2;8475:7;8448:39;;;;;;;;;;;;:16;:39::i;17002:120::-;14492:24;14503:12;:10;:12::i;14492:24::-;14483:50;;;;-1:-1:-1;;;14483:50:0;;;;;;;:::i;:::-;17086:31:::1;17097:2;17101:6;17109:7;17086:10;:31::i;5571:215::-:0;5646:7;5684:13;:11;:13::i;:::-;5676:5;:21;5668:78;;;;-1:-1:-1;;;5668:78:0;;;;;;;:::i;:::-;5764:10;5775:5;5764:17;;;;;;-1:-1:-1;;;5764:17:0;;;;;;;;;;;;;;;;;5757:24;;5571:215;;;:::o;6012:241::-;6084:7;6122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6122:16:0;6157:19;6149:73;;;;-1:-1:-1;;;6149:73:0;;;;;;;:::i;5794:210::-;5866:7;-1:-1:-1;;;;;5896:19:0;;5888:74;;;;-1:-1:-1;;;5888:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5980:16:0;;;;;:9;:16;;;;;;;5794:210::o;14550:820::-;14492:24;14503:12;:10;:12::i;14492:24::-;14483:50;;;;-1:-1:-1;;;14483:50:0;;;;;;;:::i;:::-;14735:1:::1;14718:5;14712:19;:24;;14703:51;;;;-1:-1:-1::0;;;14703:51:0::1;;;;;;;:::i;:::-;14791:1;14774:5;14768:19;:24;;14759:51;;;;-1:-1:-1::0;;;14759:51:0::1;;;;;;;:::i;:::-;14833:1;14824:6;:10;14815:47;;;;-1:-1:-1::0;;;14815:47:0::1;;;;;;;:::i;:::-;14890:8;;14876:11;:22;14867:53;;;;-1:-1:-1::0;;;14867:53:0::1;;;;;;;:::i;:::-;14939:9;:16:::0;14965:18;;14960:48:::1;;14998:10;:8;:10::i;:::-;14991:17;;14960:48;15031:11:::0;15015:13:::1;15086:1;15063:20;15077:6:::0;15031:11;15063:20:::1;:::i;:::-;:24;;;;:::i;:::-;15092:8;:19:::0;;;15140:132:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;15120:17:::1;15140:132:::0;;;;;;;;;;;;;;;;;;15279:9:::1;:23:::0;;::::1;::::0;::::1;::::0;;;;;;;;15047:40;;-1:-1:-1;15140:132:0;;;;15279:23:::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;15279:23:0::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;15279:23:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15316:49;15327:2;15331:5;15338:6;15346:8;15356;15316:49;;;;;;;;;;:::i;:::-;;;;;;;;14538:1;;;;14550:820:::0;;;;;:::o;14291:159::-;14391:19;;14424;;-1:-1:-1;;;14424:19:0;;14346:4;;-1:-1:-1;;;;;14391:19:0;;;;14424:13;;:19;;14438:4;;14424:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14416:29;14291:159;-1:-1:-1;;;14291:159:0:o;6371:106::-;6427:13;6462:7;6455:14;;;;;:::i;13749:24::-;;;;:::o;7601:297::-;7718:12;:10;:12::i;:::-;-1:-1:-1;;;;;7706:24:0;:8;-1:-1:-1;;;;;7706:24:0;;;7698:62;;;;-1:-1:-1;;;7698:62:0;;;;;;;:::i;:::-;7818:8;7773:18;:32;7792:12;:10;:12::i;:::-;-1:-1:-1;;;;;7773:32:0;;;;;;;;;;;;;;;;;-1:-1:-1;7773:32:0;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7773:53:0;;;;;;;;;;;7857:12;:10;:12::i;:::-;-1:-1:-1;;;;;7842:48:0;;7881:8;7842:48;;;;;;:::i;:::-;;;;;;;;7601:297;;:::o;17487:543::-;17598:56;;;;;;;;;;;;;;;;;:19;17710:4;17717:12;:10;:12::i;:::-;17731:5;17738:6;17746:7;17685:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17674:82;;;;;;17659:97;;17767:14;17784:60;17821:6;17828:4;17804:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17794:40;;;;;;17836:1;17839;17842;17784:60;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17784:60:0;;;-1:-1:-1;;17784:60:0;;17860:13;;;;;;;:6;17784:60;17860:13;;;;;;17784:60;;-1:-1:-1;17860:13:0;;:22;;-1:-1:-1;17851:48:0;;;;-1:-1:-1;;;17851:48:0;;;;;;;:::i;:::-;17904:13;;;;;;;:6;:13;;;;;:20;;-1:-1:-1;;17904:20:0;17920:4;17904:20;;;17940:18;17951:6;17940:10;:18::i;:::-;17931:44;;;;-1:-1:-1;;;17931:44:0;;;;;;;:::i;:::-;17984:41;17995:12;:10;:12::i;:::-;18009:6;18017:7;17984:10;:41::i;:::-;17487:543;;;;;;;;;:::o;15375:603::-;15437:18;15460:17;15482:22;15509:13;15527:16;15548:13;15566;15606:9;:16;;;;15597:6;:25;15588:66;;;;-1:-1:-1;;;15588:66:0;;;;;;;:::i;:::-;15670:9;15680:6;15670:17;;;;;;-1:-1:-1;;;15670:17:0;;;;;;;;;;;;;;;;;;;:22;;15663:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15703:9;15713:6;15703:17;;;;;;-1:-1:-1;;;15703:17:0;;;;;;;;;;;;;;;;;;;:21;;15697:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15740:9;15750:6;15740:17;;;;;;-1:-1:-1;;;15740:17:0;;;;;;;;;;;;;;;;;;;:26;;15729:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15811:9;15821:6;15811:17;;;;;;-1:-1:-1;;;15811:17:0;;;;;;;;;;;;;;;;;;;:26;;;15782:9;15792:6;15782:17;;;;;;-1:-1:-1;;;15782:17:0;;;;;;;;;;;;;;;;;;;:26;;;:55;;;;:::i;:::-;:59;;15840:1;15782:59;:::i;:::-;15771:70;;15860:9;15870:6;15860:17;;;;;;-1:-1:-1;;;15860:17:0;;;;;;;;;;;;;;;;;;;:29;;;15846:43;;15905:9;15915:6;15905:17;;;;;;-1:-1:-1;;;15905:17:0;;;;;;;;;;;;;;;;;;;:26;;;15894:37;;15947:9;15957:6;15947:17;;;;;;-1:-1:-1;;;15947:17:0;;;;;;;;;;;;;;;;;;;:26;;;15936:37;;15375:603;;;;;;;;;:::o;8503:287::-;8637:41;8656:12;:10;:12::i;:::-;8670:7;8637:18;:41::i;:::-;8629:103;;;;-1:-1:-1;;;8629:103:0;;;;;;;:::i;:::-;8743:39;8757:4;8763:2;8767:7;8776:5;8743:13;:39::i;:::-;8503:287;;;;:::o;15987:274::-;16052:13;16088:16;16096:7;16088;:16::i;:::-;16080:56;;;;-1:-1:-1;;;16080:56:0;;;;;;;:::i;:::-;16141:11;16155:18;;;:9;:18;;;;;;16210:9;:17;;16155:18;;16210:17;;;;-1:-1:-1;;;16210:17:0;;;;;;;;;;;;;;;;;;;:21;;16233:18;:7;:16;:18::i;:::-;16192:60;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16178:75;;;15987:274;;;:::o;16267:224::-;16328:18;16363:16;16371:7;16363;:16::i;:::-;16355:56;;;;-1:-1:-1;;;16355:56:0;;;;;;;:::i;:::-;16416:11;16430:18;;;:9;:18;;;;;;16460:9;:17;;16430:18;;16460:17;;;;-1:-1:-1;;;16460:17:0;;;;;;;;;;;;;;;;;;;:26;;16453:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16267:224;;;:::o;13850:38::-;;;;;;;;;;;;;;;:::o;13780:45::-;;;;;;;;;;;;;:::o;7906:166::-;-1:-1:-1;;;;;8029:25:0;;;8003:4;8029:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7906:166::o;122:176::-;243:20;282:8;;;122:176::o;1144:159::-;-1:-1:-1;;;;;;1255:40:0;;-1:-1:-1;;;1255:40:0;1144:159;;;:::o;9080:129::-;9145:4;9171:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9171:16:0;:30;;;9080:129::o;884:100::-;966:10;884:100;:::o;10879:169::-;10956:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;10956:29:0;-1:-1:-1;;;;;10956:29:0;;;;;;;;:24;;11010:16;10956:24;11010:7;:16::i;:::-;-1:-1:-1;;;;;11001:39:0;;;;;;;;;;;10879:169;;:::o;9217:343::-;9310:4;9337:16;9345:7;9337;:16::i;:::-;9329:73;;;;-1:-1:-1;;;9329:73:0;;;;;;;:::i;:::-;9413:13;9429:16;9437:7;9429;:16::i;:::-;9413:32;;9475:5;-1:-1:-1;;;;;9464:16:0;:7;-1:-1:-1;;;;;9464:16:0;;:51;;;;9508:7;-1:-1:-1;;;;;9484:31:0;:20;9496:7;9484:11;:20::i;:::-;-1:-1:-1;;;;;9484:31:0;;9464:51;:87;;;;9519:32;9536:5;9543:7;9519:16;:32::i;:::-;9456:96;9217:343;-1:-1:-1;;;;9217:343:0:o;10340:531::-;10460:4;-1:-1:-1;;;;;10440:24:0;:16;10448:7;10440;:16::i;:::-;-1:-1:-1;;;;;10440:24:0;;10432:78;;;;-1:-1:-1;;;10432:78:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10529:16:0;;10521:65;;;;-1:-1:-1;;;10521:65:0;;;;;;;:::i;:::-;10599:39;10620:4;10626:2;10630:7;10599:20;:39::i;:::-;10691:1;10655:24;;;:15;:24;;;;;;-1:-1:-1;;;;;10655:24:0;:38;10651:73;;10695:29;10712:1;10716:7;10695:8;:29::i;:::-;-1:-1:-1;;;;;10737:15:0;;;;;;:9;:15;;;;;:20;;10756:1;;10737:15;:20;;10756:1;;10737:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10768:13:0;;;;;;:9;:13;;;;;:18;;10785:1;;10768:13;:18;;10785:1;;10768:18;:::i;:::-;;;;-1:-1:-1;;10797:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10797:21:0;-1:-1:-1;;;;;10797:21:0;;;;;;;;;10836:27;;10797:16;;10836:27;;;;;;;10340:531;;;:::o;16497:499::-;16595:9;:16;16586:25;;16577:66;;;;-1:-1:-1;;;16577:66:0;;;;;;;:::i;:::-;16672:9;16682:6;16672:17;;;;;;-1:-1:-1;;;16672:17:0;;;;;;;;;;;;;;;;;;;:26;;;16661:7;:37;;16652:63;;;;-1:-1:-1;;;16652:63:0;;;;;;;:::i;:::-;16740:9;16750:6;16740:17;;;;;;-1:-1:-1;;;16740:17:0;;;;;;;;;;;;;;;;;;;:26;;;16729:7;:37;;16720:63;;;;-1:-1:-1;;;16720:63:0;;;;;;;:::i;:::-;16796:16;16804:7;16796;:16::i;:::-;16792:200;;;16823:39;16841:4;16848;16854:7;16823:9;:39::i;:::-;16792:200;;;16886:18;;;;:9;:18;;;;;:27;;;16924:9;:17;;16907:6;;16924:17;;;;-1:-1:-1;;;16924:17:0;;;;;;;;;;;;;;;;:29;:17;;;;;:29;:31;;;;;;:::i;:::-;;;;;;16966:20;16972:4;16978:7;16966:5;:20::i;6855:107::-;6906:13;6941;6934:20;;;;;:::i;8798:274::-;8914:28;8924:4;8930:2;8934:7;8914:9;:28::i;:::-;8961:48;8984:4;8990:2;8994:7;9003:5;8961:22;:48::i;:::-;8953:111;;;;-1:-1:-1;;;8953:111:0;;;;;;;:::i;329:514::-;385:13;417:10;413:26;;-1:-1:-1;429:10:0;;;;;;;;;;;;-1:-1:-1;;;429:10:0;;;;;;413:26;465:5;450:12;506:81;513:9;;506:81;;542:8;;;;:::i;:::-;;-1:-1:-1;565:10:0;;-1:-1:-1;573:2:0;565:10;;:::i;:::-;;;506:81;;;597:19;629:6;619:17;;;;;;-1:-1:-1;;;619:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;619:17:0;;597:39;;647:157;654:10;;647:157;;684:11;694:1;684:11;;:::i;:::-;;-1:-1:-1;753:10:0;761:2;753:5;:10;:::i;:::-;740:24;;:2;:24;:::i;:::-;727:39;;710:6;717;710:14;;;;;;-1:-1:-1;;;710:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;710:56:0;;;;;;;;-1:-1:-1;781:11:0;790:2;781:11;;:::i;:::-;;;647:157;;11910:445;-1:-1:-1;;;;;12016:16:0;;12007:63;;;;-1:-1:-1;;;12007:63:0;;;;;;;:::i;:::-;12092:2;-1:-1:-1;;;;;12084:10:0;:4;-1:-1:-1;;;;;12084:10:0;;;12075:38;;;;-1:-1:-1;;;12075:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12132:18:0;;12128:171;;12167:40;12199:7;12167:31;:40::i;:::-;12128:171;;;12240:47;12273:4;12279:7;12240:32;:47::i;:::-;12307:40;12335:2;12339:7;12307:27;:40::i;9948:384::-;-1:-1:-1;;;;;10030:16:0;;10022:61;;;;-1:-1:-1;;;10022:61:0;;;;;;;:::i;:::-;10103:16;10111:7;10103;:16::i;:::-;10102:17;10094:58;;;;-1:-1:-1;;;10094:58:0;;;;;;;:::i;:::-;10165:45;10194:1;10198:2;10202:7;10165:20;:45::i;:::-;-1:-1:-1;;;;;10223:13:0;;;;;;:9;:13;;;;;:18;;10240:1;;10223:13;:18;;10240:1;;10223:18;:::i;:::-;;;;-1:-1:-1;;10252:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10252:21:0;-1:-1:-1;;;;;10252:21:0;;;;;;;;10291:33;;10252:16;;;10291:33;;10252:16;;10291:33;9948:384;;:::o;11056:845::-;11168:4;11194:15;:2;-1:-1:-1;;;;;11194:13:0;;:15::i;:::-;11190:704;;;11250:2;-1:-1:-1;;;;;11234:36:0;;11271:12;:10;:12::i;:::-;11285:4;11291:7;11300:5;11234:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11234:72:0;;;;;;;;-1:-1:-1;;11234:72:0;;;;;;;;;;;;:::i;:::-;;;11230:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11480:13:0;;11476:341;;11523:60;;-1:-1:-1;;;11523:60:0;;;;;;;:::i;11476:341::-;11767:6;11761:13;11752:6;11748:2;11744:15;11737:38;11230:602;-1:-1:-1;;;;;;11357:55:0;-1:-1:-1;;;11357:55:0;;-1:-1:-1;11350:62:0;;11190:704;-1:-1:-1;11878:4:0;11056:845;;;;;;:::o;12364:166::-;12470:10;:17;;12443:24;;;;:15;:24;;;;;:44;;;12498:24;;;;;;;;;;;;12364:166::o;12539:550::-;12633:22;12676:1;12658:15;12668:4;12658:9;:15::i;:::-;:19;;;;:::i;:::-;12688:18;12709:26;;;:17;:26;;;;;;12633:44;;-1:-1:-1;12752:28:0;;;12748:236;;-1:-1:-1;;;;;12819:18:0;;12797:19;12819:18;;;:12;:18;;;;;;;;:34;;;;;;;;;12870:30;;;;;;:44;;;12929:30;;:17;:30;;;;;:43;;;12748:236;-1:-1:-1;13003:26:0;;;;:17;:26;;;;;;;;12996:33;;;-1:-1:-1;;;;;13047:18:0;;;;;:12;:18;;;;;:34;;;;;;;13040:41;12539:550::o;13097:216::-;13184:14;13201:13;13211:2;13201:9;:13::i;:::-;-1:-1:-1;;;;;13225:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;13270:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;13097:216:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:408:1;;114:18;106:6;103:30;100:2;;;136:18;;:::i;:::-;174:57;219:2;198:15;;-1:-1:-1;;194:29:1;225:4;190:40;174:57;:::i;:::-;165:66;;254:6;247:5;240:21;294:3;285:6;280:3;276:16;273:25;270:2;;;311:1;308;301:12;270:2;360:6;355:3;348:4;341:5;337:16;324:43;414:1;407:4;398:6;391:5;387:18;383:29;376:40;90:332;;;;;:::o;427:175::-;497:20;;-1:-1:-1;;;;;546:31:1;;536:42;;526:2;;592:1;589;582:12;607:706;;720:3;713:4;705:6;701:17;697:27;687:2;;742:5;735;728:20;687:2;782:6;769:20;808:4;832:66;848:49;894:2;848:49;:::i;:::-;832:66;:::i;:::-;932:15;;;963:12;;;;995:15;;;1041:11;;;1029:24;;1025:33;;1022:42;-1:-1:-1;1019:2:1;;;1081:5;1074;1067:20;1019:2;1107:5;1121:163;1135:2;1132:1;1129:9;1121:163;;;1192:17;;1180:30;;1230:12;;;;1262;;;;1153:1;1146:9;1121:163;;;-1:-1:-1;1302:5:1;;677:636;-1:-1:-1;;;;;;;677:636:1:o;1318:233::-;;1416:3;1409:4;1401:6;1397:17;1393:27;1383:2;;1438:5;1431;1424:20;1383:2;1464:81;1541:3;1532:6;1519:20;1512:4;1504:6;1500:17;1464:81;:::i;1556:173::-;1625:20;;1685:18;1674:30;;1664:41;;1654:2;;1719:1;1716;1709:12;1734:198;;1846:2;1834:9;1825:7;1821:23;1817:32;1814:2;;;1867:6;1859;1852:22;1814:2;1895:31;1916:9;1895:31;:::i;1937:274::-;;;2066:2;2054:9;2045:7;2041:23;2037:32;2034:2;;;2087:6;2079;2072:22;2034:2;2115:31;2136:9;2115:31;:::i;:::-;2105:41;;2165:40;2201:2;2190:9;2186:18;2165:40;:::i;:::-;2155:50;;2024:187;;;;;:::o;2216:342::-;;;;2362:2;2350:9;2341:7;2337:23;2333:32;2330:2;;;2383:6;2375;2368:22;2330:2;2411:31;2432:9;2411:31;:::i;:::-;2401:41;;2461:40;2497:2;2486:9;2482:18;2461:40;:::i;:::-;2451:50;;2548:2;2537:9;2533:18;2520:32;2510:42;;2320:238;;;;;:::o;2563:862::-;;;;;;2745:3;2733:9;2724:7;2720:23;2716:33;2713:2;;;2767:6;2759;2752:22;2713:2;2795:31;2816:9;2795:31;:::i;:::-;2785:41;;2845:40;2881:2;2870:9;2866:18;2845:40;:::i;:::-;2835:50;;2932:2;2921:9;2917:18;2904:32;2894:42;;2987:2;2976:9;2972:18;2959:32;3010:18;3051:2;3043:6;3040:14;3037:2;;;3072:6;3064;3057:22;3037:2;3115:6;3104:9;3100:22;3090:32;;3160:7;3153:4;3149:2;3145:13;3141:27;3131:2;;3187:6;3179;3172:22;3131:2;3232;3219:16;3258:2;3250:6;3247:14;3244:2;;;3279:6;3271;3264:22;3244:2;3329:7;3324:2;3315:6;3311:2;3307:15;3303:24;3300:37;3297:2;;;3355:6;3347;3340:22;3297:2;2703:722;;;;-1:-1:-1;2703:722:1;;-1:-1:-1;3391:2:1;3383:11;;3413:6;2703:722;-1:-1:-1;;;2703:722:1:o;3430:702::-;;;;;3602:3;3590:9;3581:7;3577:23;3573:33;3570:2;;;3624:6;3616;3609:22;3570:2;3652:31;3673:9;3652:31;:::i;:::-;3642:41;;3702:40;3738:2;3727:9;3723:18;3702:40;:::i;:::-;3692:50;;3789:2;3778:9;3774:18;3761:32;3751:42;;3844:2;3833:9;3829:18;3816:32;3871:18;3863:6;3860:30;3857:2;;;3908:6;3900;3893:22;3857:2;3936:22;;3989:4;3981:13;;3977:27;-1:-1:-1;3967:2:1;;4023:6;4015;4008:22;3967:2;4051:75;4118:7;4113:2;4100:16;4095:2;4091;4087:11;4051:75;:::i;:::-;4041:85;;;3560:572;;;;;;;:::o;4137:329::-;;;4263:2;4251:9;4242:7;4238:23;4234:32;4231:2;;;4284:6;4276;4269:22;4231:2;4312:31;4333:9;4312:31;:::i;:::-;4302:41;;4393:2;4382:9;4378:18;4365:32;4406:30;4430:5;4406:30;:::i;:::-;4455:5;4445:15;;;4221:245;;;;;:::o;4471:266::-;;;4600:2;4588:9;4579:7;4575:23;4571:32;4568:2;;;4621:6;4613;4606:22;4568:2;4649:31;4670:9;4649:31;:::i;:::-;4639:41;4727:2;4712:18;;;;4699:32;;-1:-1:-1;;;4558:179:1:o;4742:334::-;;;;4888:2;4876:9;4867:7;4863:23;4859:32;4856:2;;;4909:6;4901;4894:22;4856:2;4937:31;4958:9;4937:31;:::i;:::-;4927:41;5015:2;5000:18;;4987:32;;-1:-1:-1;5066:2:1;5051:18;;;5038:32;;4846:230;-1:-1:-1;;;4846:230:1:o;5081:1295::-;;;;5277:2;5265:9;5256:7;5252:23;5248:32;5245:2;;;5298:6;5290;5283:22;5245:2;5343:9;5330:23;5372:18;5413:2;5405:6;5402:14;5399:2;;;5434:6;5426;5419:22;5399:2;5477:6;5466:9;5462:22;5452:32;;5522:7;5515:4;5511:2;5507:13;5503:27;5493:2;;5549:6;5541;5534:22;5493:2;5590;5577:16;5612:4;5636:66;5652:49;5698:2;5652:49;:::i;5636:66::-;5736:15;;;5767:12;;;;5799:11;;;5837;;;5829:20;;5825:29;;5822:42;-1:-1:-1;5819:2:1;;;5882:6;5874;5867:22;5819:2;5909:6;5900:15;;5924:171;5938:2;5935:1;5932:9;5924:171;;;5995:25;6016:3;5995:25;:::i;:::-;5983:38;;5956:1;5949:9;;;;;6041:12;;;;6073;;5924:171;;;-1:-1:-1;6114:5:1;-1:-1:-1;;6151:18:1;;6138:32;;-1:-1:-1;;6223:2:1;6208:18;;6195:32;;-1:-1:-1;6239:16:1;;;6236:2;;;6273:6;6265;6258:22;6236:2;;6301:69;6362:7;6351:8;6340:9;6336:24;6301:69;:::i;:::-;6291:79;;;5235:1141;;;;;:::o;6381:257::-;;6501:2;6489:9;6480:7;6476:23;6472:32;6469:2;;;6522:6;6514;6507:22;6469:2;6559:9;6553:16;6578:30;6602:5;6578:30;:::i;6643:257::-;;6754:2;6742:9;6733:7;6729:23;6725:32;6722:2;;;6775:6;6767;6760:22;6722:2;6819:9;6806:23;6838:32;6864:5;6838:32;:::i;6905:261::-;;7027:2;7015:9;7006:7;7002:23;6998:32;6995:2;;;7048:6;7040;7033:22;6995:2;7085:9;7079:16;7104:32;7130:5;7104:32;:::i;7171:927::-;;;;;;7381:3;7369:9;7360:7;7356:23;7352:33;7349:2;;;7403:6;7395;7388:22;7349:2;7448:9;7435:23;7477:18;7518:2;7510:6;7507:14;7504:2;;;7539:6;7531;7524:22;7504:2;7567:52;7611:7;7602:6;7591:9;7587:22;7567:52;:::i;:::-;7557:62;;7672:2;7661:9;7657:18;7644:32;7628:48;;7701:2;7691:8;7688:16;7685:2;;;7722:6;7714;7707:22;7685:2;7750:54;7796:7;7785:8;7774:9;7770:24;7750:54;:::i;:::-;7740:64;;7857:2;7846:9;7842:18;7829:32;7813:48;;7886:2;7876:8;7873:16;7870:2;;;7907:6;7899;7892:22;7870:2;;7935:54;7981:7;7970:8;7959:9;7955:24;7935:54;:::i;:::-;7339:759;;;;-1:-1:-1;7925:64:1;;8036:2;8021:18;;8008:32;;-1:-1:-1;8087:3:1;8072:19;8059:33;;7339:759;-1:-1:-1;;;7339:759:1:o;8103:190::-;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8236:6;8228;8221:22;8183:2;-1:-1:-1;8264:23:1;;8173:120;-1:-1:-1;8173:120:1:o;8298:638::-;;;;;;;8492:3;8480:9;8471:7;8467:23;8463:33;8460:2;;;8514:6;8506;8499:22;8460:2;8555:9;8542:23;8532:33;;8612:2;8601:9;8597:18;8584:32;8574:42;;8635:39;8670:2;8659:9;8655:18;8635:39;:::i;:::-;8625:49;;8721:2;8710:9;8706:18;8693:32;8683:42;;8772:3;8761:9;8757:19;8744:33;8734:43;;8827:3;8816:9;8812:19;8799:33;8872:4;8865:5;8861:16;8854:5;8851:27;8841:2;;8897:6;8889;8882:22;8841:2;8925:5;8915:15;;;8450:486;;;;;;;;:::o;8941:196::-;;9052:2;9040:9;9031:7;9027:23;9023:32;9020:2;;;9073:6;9065;9058:22;9020:2;9101:30;9121:9;9101:30;:::i;9142:270::-;;9234:5;9228:12;9261:6;9256:3;9249:19;9277:63;9333:6;9326:4;9321:3;9317:14;9310:4;9303:5;9299:16;9277:63;:::i;:::-;9394:2;9373:15;-1:-1:-1;;9369:29:1;9360:39;;;;9401:4;9356:50;;9204:208;-1:-1:-1;;9204:208:1:o;9417:186::-;;9498:5;9492:12;9513:52;9558:6;9553:3;9546:4;9539:5;9535:16;9513:52;:::i;:::-;9581:16;;;;;9468:135;-1:-1:-1;;9468:135:1:o;9608:572::-;9917:2;9913:15;;;-1:-1:-1;;9909:24:1;;;9897:37;;9968:15;;;;9964:24;;;9959:2;9950:12;;9943:46;10045:3;10023:16;;;;-1:-1:-1;;;;;;10019:51:1;10014:2;10005:12;;9998:73;10096:2;10087:12;;10080:28;10133:2;10124:12;;10117:28;10170:3;10161:13;;9837:343::o;10185:370::-;;10380:6;10374:13;10396:53;10442:6;10437:3;10430:4;10422:6;10418:17;10396:53;:::i;:::-;10471:16;;;;10496:21;;;-1:-1:-1;10544:4:1;10533:16;;10350:205;-1:-1:-1;10350:205:1:o;10560:1180::-;10794:13;;10560:1180;;;;10867:1;10852:17;;10888:1;10924:18;;;;10951:2;;11005:4;10997:6;10993:17;10983:27;;10951:2;11031;11079;11071:6;11068:14;11048:18;11045:38;11042:2;;;-1:-1:-1;;;11106:33:1;;11162:4;11159:1;11152:15;11192:4;11113:3;11180:17;11042:2;11223:18;11250:104;;;;11368:1;11363:324;;;;11216:471;;11250:104;-1:-1:-1;;11283:24:1;;11271:37;;11328:16;;;;-1:-1:-1;11250:104:1;;11363:324;11399:39;11431:6;11399:39;:::i;:::-;11460:3;11476:165;11490:6;11487:1;11484:13;11476:165;;;11568:14;;11555:11;;;11548:35;11611:16;;;;11505:10;;11476:165;;;11480:3;;11670:6;11665:3;11661:16;11654:23;;11216:471;;;;;;;11703:31;11730:3;11722:6;11703:31;:::i;:::-;11696:38;10744:996;-1:-1:-1;;;;;10744:996:1:o;11745:203::-;-1:-1:-1;;;;;11909:32:1;;;;11891:51;;11879:2;11864:18;;11846:102::o;11953:501::-;-1:-1:-1;;;;;12222:15:1;;;12204:34;;12274:15;;12269:2;12254:18;;12247:43;12321:2;12306:18;;12299:34;;;12369:3;12364:2;12349:18;;12342:31;;;11953:501;;12390:58;;12428:19;;12420:6;12390:58;:::i;:::-;12382:66;12156:298;-1:-1:-1;;;;;;12156:298:1:o;12459:187::-;12624:14;;12617:22;12599:41;;12587:2;12572:18;;12554:92::o;12651:398::-;12878:25;;;12951:4;12939:17;;;;12934:2;12919:18;;12912:45;12988:2;12973:18;;12966:34;13031:2;13016:18;;13009:34;12865:3;12850:19;;12832:217::o;13054:202::-;-1:-1:-1;;;;;;13216:33:1;;;;13198:52;;13186:2;13171:18;;13153:103::o;13261:232::-;;13410:2;13399:9;13392:21;13430:57;13483:2;13472:9;13468:18;13460:6;13430:57;:::i;13498:871::-;;13855:3;13844:9;13837:22;13882:58;13935:3;13924:9;13920:19;13912:6;13882:58;:::i;:::-;13988:9;13980:6;13976:22;13971:2;13960:9;13956:18;13949:50;14022:45;14060:6;14052;14022:45;:::i;:::-;14008:59;;14115:9;14107:6;14103:22;14098:2;14087:9;14083:18;14076:50;14143:45;14181:6;14173;14143:45;:::i;:::-;14135:53;;;14224:6;14219:2;14208:9;14204:18;14197:34;14268:6;14262:3;14251:9;14247:19;14240:35;14312:6;14306:3;14295:9;14291:19;14284:35;14356:6;14350:3;14339:9;14335:19;14328:35;13827:542;;;;;;;;;;:::o;14374:407::-;14576:2;14558:21;;;14615:2;14595:18;;;14588:30;14654:34;14649:2;14634:18;;14627:62;-1:-1:-1;;;14720:2:1;14705:18;;14698:41;14771:3;14756:19;;14548:233::o;14786:414::-;14988:2;14970:21;;;15027:2;15007:18;;;15000:30;15066:34;15061:2;15046:18;;15039:62;-1:-1:-1;;;15132:2:1;15117:18;;15110:48;15190:3;15175:19;;14960:240::o;15205:340::-;15407:2;15389:21;;;15446:2;15426:18;;;15419:30;-1:-1:-1;;;15480:2:1;15465:18;;15458:46;15536:2;15521:18;;15379:166::o;15550:352::-;15752:2;15734:21;;;15791:2;15771:18;;;15764:30;15830;15825:2;15810:18;;15803:58;15893:2;15878:18;;15724:178::o;15907:337::-;16109:2;16091:21;;;16148:2;16128:18;;;16121:30;-1:-1:-1;;;16182:2:1;16167:18;;16160:43;16235:2;16220:18;;16081:163::o;16249:400::-;16451:2;16433:21;;;16490:2;16470:18;;;16463:30;16529:34;16524:2;16509:18;;16502:62;-1:-1:-1;;;16595:2:1;16580:18;;16573:34;16639:3;16624:19;;16423:226::o;16654:349::-;16856:2;16838:21;;;16895:2;16875:18;;;16868:30;16934:27;16929:2;16914:18;;16907:55;16994:2;16979:18;;16828:175::o;17008:335::-;17210:2;17192:21;;;17249:2;17229:18;;;17222:30;-1:-1:-1;;;17283:2:1;17268:18;;17261:41;17334:2;17319:18;;17182:161::o;17348:408::-;17550:2;17532:21;;;17589:2;17569:18;;;17562:30;17628:34;17623:2;17608:18;;17601:62;-1:-1:-1;;;17694:2:1;17679:18;;17672:42;17746:3;17731:19;;17522:234::o;17761:351::-;17963:2;17945:21;;;18002:2;17982:18;;;17975:30;18041:29;18036:2;18021:18;;18014:57;18103:2;18088:18;;17935:177::o;18117:336::-;18319:2;18301:21;;;18358:2;18338:18;;;18331:30;-1:-1:-1;;;18392:2:1;18377:18;;18370:42;18444:2;18429:18;;18291:162::o;18458:346::-;18660:2;18642:21;;;18699:2;18679:18;;;18672:30;-1:-1:-1;;;18733:2:1;18718:18;;18711:52;18795:2;18780:18;;18632:172::o;18809:420::-;19011:2;18993:21;;;19050:2;19030:18;;;19023:30;19089:34;19084:2;19069:18;;19062:62;19160:26;19155:2;19140:18;;19133:54;19219:3;19204:19;;18983:246::o;19234:344::-;19436:2;19418:21;;;19475:2;19455:18;;;19448:30;-1:-1:-1;;;19509:2:1;19494:18;;19487:50;19569:2;19554:18;;19408:170::o;19583:406::-;19785:2;19767:21;;;19824:2;19804:18;;;19797:30;19863:34;19858:2;19843:18;;19836:62;-1:-1:-1;;;19929:2:1;19914:18;;19907:40;19979:3;19964:19;;19757:232::o;19994:405::-;20196:2;20178:21;;;20235:2;20215:18;;;20208:30;20274:34;20269:2;20254:18;;20247:62;-1:-1:-1;;;20340:2:1;20325:18;;20318:39;20389:3;20374:19;;20168:231::o;20404:335::-;20606:2;20588:21;;;20645:2;20625:18;;;20618:30;-1:-1:-1;;;20679:2:1;20664:18;;20657:41;20730:2;20715:18;;20578:161::o;20744:335::-;20946:2;20928:21;;;20985:2;20965:18;;;20958:30;-1:-1:-1;;;21019:2:1;21004:18;;20997:41;21070:2;21055:18;;20918:161::o;21084:356::-;21286:2;21268:21;;;21305:18;;;21298:30;21364:34;21359:2;21344:18;;21337:62;21431:2;21416:18;;21258:182::o;21445:356::-;21647:2;21629:21;;;21666:18;;;21659:30;21725:34;21720:2;21705:18;;21698:62;21792:2;21777:18;;21619:182::o;21806:408::-;22008:2;21990:21;;;22047:2;22027:18;;;22020:30;22086:34;22081:2;22066:18;;22059:62;-1:-1:-1;;;22152:2:1;22137:18;;22130:42;22204:3;22189:19;;21980:234::o;22219:335::-;22421:2;22403:21;;;22460:2;22440:18;;;22433:30;-1:-1:-1;;;22494:2:1;22479:18;;22472:41;22545:2;22530:18;;22393:161::o;22559:405::-;22761:2;22743:21;;;22800:2;22780:18;;;22773:30;22839:34;22834:2;22819:18;;22812:62;-1:-1:-1;;;22905:2:1;22890:18;;22883:39;22954:3;22939:19;;22733:231::o;22969:397::-;23171:2;23153:21;;;23210:2;23190:18;;;23183:30;23249:34;23244:2;23229:18;;23222:62;-1:-1:-1;;;23315:2:1;23300:18;;23293:31;23356:3;23341:19;;23143:223::o;23371:413::-;23573:2;23555:21;;;23612:2;23592:18;;;23585:30;23651:34;23646:2;23631:18;;23624:62;-1:-1:-1;;;23717:2:1;23702:18;;23695:47;23774:3;23759:19;;23545:239::o;23789:408::-;23991:2;23973:21;;;24030:2;24010:18;;;24003:30;24069:34;24064:2;24049:18;;24042:62;-1:-1:-1;;;24135:2:1;24120:18;;24113:42;24187:3;24172:19;;23963:234::o;24202:350::-;24404:2;24386:21;;;24443:2;24423:18;;;24416:30;24482:28;24477:2;24462:18;;24455:56;24543:2;24528:18;;24376:176::o;24557:335::-;24759:2;24741:21;;;24798:2;24778:18;;;24771:30;-1:-1:-1;;;24832:2:1;24817:18;;24810:41;24883:2;24868:18;;24731:161::o;24897:177::-;25043:25;;;25031:2;25016:18;;24998:76::o;25079:519::-;;25340:6;25329:9;25322:25;25383:3;25378:2;25367:9;25363:18;25356:31;25404:58;25457:3;25446:9;25442:19;25434:6;25404:58;:::i;:::-;25493:2;25478:18;;25471:34;;;;-1:-1:-1;25536:2:1;25521:18;;25514:34;;;;25579:3;25564:19;;;25557:35;25396:66;25312:286;-1:-1:-1;;25312:286:1:o;25603:275::-;25674:2;25668:9;25739:2;25720:13;;-1:-1:-1;;25716:27:1;25704:40;;25774:18;25759:34;;25795:22;;;25756:62;25753:2;;;25821:18;;:::i;:::-;25857:2;25850:22;25648:230;;-1:-1:-1;25648:230:1:o;25883:192::-;;25982:18;25974:6;25971:30;25968:2;;;26004:18;;:::i;:::-;-1:-1:-1;26064:4:1;26045:17;;;26041:28;;25958:117::o;26080:129::-;;26148:17;;;26198:4;26182:21;;;26138:71::o;26214:128::-;;26285:1;26281:6;26278:1;26275:13;26272:2;;;26291:18;;:::i;:::-;-1:-1:-1;26327:9:1;;26262:80::o;26347:120::-;;26413:1;26403:2;;26418:18;;:::i;:::-;-1:-1:-1;26452:9:1;;26393:74::o;26472:125::-;;26540:1;26537;26534:8;26531:2;;;26545:18;;:::i;:::-;-1:-1:-1;26582:9:1;;26521:76::o;26602:258::-;26674:1;26684:113;26698:6;26695:1;26692:13;26684:113;;;26774:11;;;26768:18;26755:11;;;26748:39;26720:2;26713:10;26684:113;;;26815:6;26812:1;26809:13;26806:2;;;-1:-1:-1;;26850:1:1;26832:16;;26825:27;26655:205::o;26865:380::-;26950:1;26940:12;;26997:1;26987:12;;;27008:2;;27062:4;27054:6;27050:17;27040:27;;27008:2;27115;27107:6;27104:14;27084:18;27081:38;27078:2;;;27161:10;27156:3;27152:20;27149:1;27142:31;27196:4;27193:1;27186:15;27224:4;27221:1;27214:15;27078:2;;26920:325;;;:::o;27250:135::-;;-1:-1:-1;;27310:17:1;;27307:2;;;27330:18;;:::i;:::-;-1:-1:-1;27377:1:1;27366:13;;27297:88::o;27390:112::-;;27448:1;27438:2;;27453:18;;:::i;:::-;-1:-1:-1;27487:9:1;;27428:74::o;27507:127::-;27568:10;27563:3;27559:20;27556:1;27549:31;27599:4;27596:1;27589:15;27623:4;27620:1;27613:15;27639:127;27700:10;27695:3;27691:20;27688:1;27681:31;27731:4;27728:1;27721:15;27755:4;27752:1;27745:15;27771:127;27832:10;27827:3;27823:20;27820:1;27813:31;27863:4;27860:1;27853:15;27887:4;27884:1;27877:15;27903:120;27991:5;27984:13;27977:21;27970:5;27967:32;27957:2;;28013:1;28010;28003:12;27957:2;27947:76;:::o;28028:133::-;-1:-1:-1;;;;;;28104:32:1;;28094:43;;28084:2;;28151:1;28148;28141:12
Swarm Source
ipfs://d080b7f27b056eae7b9dd1abbcce4c2827f4121da0b87bc109610d22c148b1d7
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.