Contract 0xbbd9786f178e2aebb4b4329c41a821921ca05339 4

Contract Overview

Vending Machines NFT: VMN Token
Balance:
193.137729056588293878 AVAX

AVAX Value:
$2,746.42 (@ $14.22/AVAX)
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x73e5be650ccb9158488a880613f6db5ff8485fb5e9d2fd4542bee60ed8a2cc7fSet Approval For...232174032022-12-04 21:04:339 hrs 49 mins ago0x2f5befeaf4f11b661345b2c72766dbdd8f380817 IN  Vending Machines NFT: VMN Token0 AVAX0.00122080225 26.41
0xb8a0357c3aced909bdc03c2719d1d28bad6c013ac73b56c7eba8f2a4fee22974Claim Mint Rewar...232098862022-12-04 16:46:5114 hrs 7 mins ago0x2f5befeaf4f11b661345b2c72766dbdd8f380817 IN  Vending Machines NFT: VMN Token0 AVAX0.00138604962 26.41
0x26d8b2cbc08960f2736930c111875ca55f1bf791c1ce101562aa865a85dc87aaSet Approval For...231812822022-12-04 0:07:431 day 6 hrs ago0x0eb7e34f2c2be8af190c6bd56fd67e68e1c2200f IN  Vending Machines NFT: VMN Token0 AVAX0.001250735401 27.057553295
0x6c18b619a757b11e8a823c98834415323d95b16d70fbebe38d4d47d043a1bca4Claim Mint Rewar...231476952022-12-03 4:58:152 days 1 hr ago0xbd50a98a99438325067302d987cceba3c7a8a296 IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
0xec632a8864abf1f14f8073a83796ea9c2c54a9b4836fec7acb4ea0f9ec31555fClaim Mint Rewar...231476822022-12-03 4:57:492 days 1 hr ago0xbd50a98a99438325067302d987cceba3c7a8a296 IN  Vending Machines NFT: VMN Token0 AVAX0.00138604962 26.41
0xfc04dea702601b2e4bb18ee393fbc9cb3cbb1d2070094c2df4aa64ff902a7088Claim Mint Rewar...231476772022-12-03 4:57:392 days 1 hr ago0xbd50a98a99438325067302d987cceba3c7a8a296 IN  Vending Machines NFT: VMN Token0 AVAX0.001366809718 26.0434
0xf0479079f7fbd36708fbb6a917eff91cbb46fd6fd98b4121b22bcca6ae14df7bClaim Mint Rewar...231476722022-12-03 4:57:292 days 1 hr ago0xbd50a98a99438325067302d987cceba3c7a8a296 IN  Vending Machines NFT: VMN Token0 AVAX0.001366809718 26.0434
0x49d35e8170a68ab5b5bf8da8dab2e4d1e35f1e50ceb6cf3a01884bd4cc992451Claim Mint Rewar...231476672022-12-03 4:57:192 days 1 hr ago0xbd50a98a99438325067302d987cceba3c7a8a296 IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
0xc14693449974633dc1c915cc0fe9b5804f048c2888eb510242d93bd94ce74337Set Approval For...230888072022-12-01 19:30:583 days 11 hrs ago0xf1732885d4505bee2b00ea27546bf748cc447ea4 IN  Vending Machines NFT: VMN Token0 AVAX0.0012711875 27.5
0xb9f9da5544557bd2c2143e887dab9efb8d6c38d3958f90b0334837e9fa251ab2Set Approval For...230482522022-11-30 20:25:194 days 10 hrs ago0xd0db1f4bd228f09a5e0dbf72e90967ab25cf651b IN  Vending Machines NFT: VMN Token0 AVAX0.0012249625 26.5
0x1492f243a11d76ddf84e70c0475fc9ef9701ce1343970f10c2f0839983d88a1eSafe Transfer Fr...229696892022-11-29 0:01:236 days 6 hrs ago0xddd4b8572c1460accc62a49f4f417777260776db IN  Vending Machines NFT: VMN Token0 AVAX0.0092858975 27.5
0xbad8b15546101c89323956c94099dddc403600022daf536d4a171252d73f3908Set Approval For...229587962022-11-28 17:49:056 days 13 hrs ago0xdb24b411d779fa68c9bda3491fa1fcbfd9964a34 IN  Vending Machines NFT: VMN Token0 AVAX0.00121858381 26.41
0x25fb495dbf79a9739c4f6abc76c79946843134caeebaa9efe44ecda95808b933Set Approval For...229459892022-11-28 10:32:246 days 20 hrs ago0x512589c3329cd446aeeab372b7ce9dd4fe2d1456 IN  Vending Machines NFT: VMN Token0 AVAX0.001227900475 26.563558148
0x685007628cdb130b220390c4d98f41c7841e8f7f9317abb0f26eeae7af5151f2Set Approval For...229391102022-11-28 6:33:317 days 20 mins agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMN Token0 AVAX0.001261095773 27.2816825
0xbb671781778105054e1d9648726db72f4ff313c8ffe716765005ac002bbf5053Air Drop229389522022-11-28 6:28:097 days 25 mins agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMN Token0 AVAX0.012643592 26
0x0866136d8aad4314ce6114cc960133b0156b81964c99e3df6044999fe19dd69fSet Approval For...229217092022-11-27 20:36:267 days 10 hrs ago0x0c573fc3729a7b754ea1ed7c25db55e83d860335 IN  Vending Machines NFT: VMN Token0 AVAX0.001240353133 26.8818
0xc456e0a47ea739d8c3c40904330d8ace5c8fbde3631ecd1502152ccc9b8ddfffClaim Mint Rewar...228871092022-11-27 0:57:038 days 5 hrs ago0x585430660751183cd01c2cc5a71f91471944be6a IN  Vending Machines NFT: VMN Token0 AVAX0.001390773 26.5
0x874cc26386a4b97b67abdef23bea6d96f0c15e9ed092cefdf7d8766dc980746fSet Approval For...228582512022-11-26 8:19:298 days 22 hrs ago0xb46c0ebc623373d60de6c7b555c36fd4c9546d59 IN  Vending Machines NFT: VMN Token0 AVAX0.0007714945 26.5
0x020e9ea92da8df02eec6afd1d7a47943aac649c3cdbdfb7bf4264904450f7d31Set Approval For...228582442022-11-26 8:19:158 days 22 hrs ago0xb46c0ebc623373d60de6c7b555c36fd4c9546d59 IN  Vending Machines NFT: VMN Token0 AVAX0.000780966298 26.825346
0xc74a7ea5d648a7cbd594632f4620f1c152c7a6fbd000723d968c1a758108ab17Set Approval For...228578722022-11-26 8:06:148 days 22 hrs ago0xec5702441bd31ce0c8a6b8b951bb388276f1321d IN  Vending Machines NFT: VMN Token0 AVAX0.00077367653 26.574950378
0x8e82c8f1dc5de0c8b128d0503c512e152b83881c894a595f791db927b5c9a14dSet Approval For...228441922022-11-26 0:04:189 days 6 hrs ago0x3013c5c7bae60b1bb8e33311fe3c14c790beedc7 IN  Vending Machines NFT: VMN Token0 AVAX0.001267720625 27.425
0x98c6a8d487a3a215b01d7c36cfbbef4b02676900bd72b81777af01f10ce8e525Set Approval For...228368762022-11-25 19:50:409 days 11 hrs ago0x3013c5c7bae60b1bb8e33311fe3c14c790beedc7 IN  Vending Machines NFT: VMN Token0 AVAX0.00123501496 26.717468051
0xaf9484279864a67cc09aea21641ac6429cff243c796f6537638d861234d2055eSet Approval For...228057322022-11-25 1:59:5610 days 4 hrs ago0xab7727c55155234b7a53eda30cead15902cca5e8 IN  Vending Machines NFT: VMN Token0 AVAX0.0012249625 26.5
0xd504377548323df1a5b7ab8207db817b3a8b1ac065f434db6751de97d884aeddSet Approval For...228028092022-11-25 0:17:4210 days 6 hrs ago0xfbfbc2ed58848f0870e0b522ddc01ff3695c8d3b IN  Vending Machines NFT: VMN Token0 AVAX0.0012453015 26.94
0x694546abe59a34103b667c9611f66dcd0ab4e2bc4dc90731fa2060f047fc3362Set Approval For...227571132022-11-23 22:07:1111 days 8 hrs ago0xe9676bbf16b78646ba8beda12942740835e920d0 IN  Vending Machines NFT: VMN Token0 AVAX0.001340525 29
[ Download CSV Export 

OVERVIEW

4444 unique Vending Machine NFTs have been introduced to the Avalanche network.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4cc634d0efb80a6be77a7ff66b67ebd91059df813ae71967c1ad7bf1f804ff5f232314382022-12-05 5:08:421 hr 45 mins ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMN Token0.012 AVAX
0xb8a0357c3aced909bdc03c2719d1d28bad6c013ac73b56c7eba8f2a4fee22974232098862022-12-04 16:46:5114 hrs 7 mins ago Vending Machines NFT: VMN Token0x2f5befeaf4f11b661345b2c72766dbdd8f3808170.046057049356887563 AVAX
0x1b2f08abb20e661b8f1c533c9bbc3e02aafaa7bf9e43b5369c4e0604678ce1ed232098382022-12-04 16:45:1514 hrs 8 mins ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMN Token0.012 AVAX
0x6c18b619a757b11e8a823c98834415323d95b16d70fbebe38d4d47d043a1bca4231476952022-12-03 4:58:152 days 1 hr ago Vending Machines NFT: VMN Token0xbd50a98a99438325067302d987cceba3c7a8a2960.003794626045682059 AVAX
0xec632a8864abf1f14f8073a83796ea9c2c54a9b4836fec7acb4ea0f9ec31555f231476822022-12-03 4:57:492 days 1 hr ago Vending Machines NFT: VMN Token0xbd50a98a99438325067302d987cceba3c7a8a2960.0092143899061677 AVAX
0xfc04dea702601b2e4bb18ee393fbc9cb3cbb1d2070094c2df4aa64ff902a7088231476772022-12-03 4:57:392 days 1 hr ago Vending Machines NFT: VMN Token0xbd50a98a99438325067302d987cceba3c7a8a2960.011941748389364399 AVAX
0xf0479079f7fbd36708fbb6a917eff91cbb46fd6fd98b4121b22bcca6ae14df7b231476722022-12-03 4:57:292 days 1 hr ago Vending Machines NFT: VMN Token0xbd50a98a99438325067302d987cceba3c7a8a2960.011941748389364399 AVAX
0x49d35e8170a68ab5b5bf8da8dab2e4d1e35f1e50ceb6cf3a01884bd4cc992451231476672022-12-03 4:57:192 days 1 hr ago Vending Machines NFT: VMN Token0xbd50a98a99438325067302d987cceba3c7a8a2960.011941748389364399 AVAX
0xc456e0a47ea739d8c3c40904330d8ace5c8fbde3631ecd1502152ccc9b8ddfff228871092022-11-27 0:57:038 days 5 hrs ago Vending Machines NFT: VMN Token0x585430660751183cd01c2cc5a71f91471944be6a0.014490827559114885 AVAX
0x3760f4c3f2ad0e033330785246952fccd945b33c18920789a651ee64ef65f373227024212022-11-22 14:57:5312 days 15 hrs ago Vending Machines NFT: VMN TokenVending Machines NFT: Deployer16.541144999960050282 AVAX
0x3760f4c3f2ad0e033330785246952fccd945b33c18920789a651ee64ef65f373227024212022-11-22 14:57:5312 days 15 hrs ago Vending Machines NFT: VMN Token0x1070aa92aa80d0bdf14692352726bc22cd8d91302.75685750001000838 AVAX
0x3760f4c3f2ad0e033330785246952fccd945b33c18920789a651ee64ef65f373227024212022-11-22 14:57:5312 days 15 hrs ago Vending Machines NFT: VMN Token0x4057f6d0c49358b88a318dcb230f7d3140fa78de8.27057250003002514 AVAX
0x09825d479d1d4ffed29268829d6efcb9bd62917ea396d949cfb0d3f659885ab1226793232022-11-22 1:44:2313 days 5 hrs ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMN Token0.0195 AVAX
0x1fb5e8291d4cb2c0fe2732d002bbbb5347bd6f1a2a088a6e80b17b6b55d71159226049802022-11-20 7:16:4714 days 23 hrs ago Vending Machines NFT: VMN Token0x2f5befeaf4f11b661345b2c72766dbdd8f3808170.057221799597431468 AVAX
0x7b267acd6704dffd373c016e3e0e035fc861243800d6be4c86f68fa94038d74d223968912022-11-15 6:02:4920 days 51 mins ago Vending Machines NFT: VMN Token0xb222dae344770da876f1cb0fe11f8dfa9090c56e0.015043923175227241 AVAX
0x091a3bf33a5d66f000dbabd14a07d852fe629215d7ca0c45862a63b71c1028aa223968872022-11-15 6:02:3820 days 51 mins ago Vending Machines NFT: VMN Token0xb222dae344770da876f1cb0fe11f8dfa9090c56e0.015043923175227241 AVAX
0xccef0789db380c9333ff54f3bfafbe5085246b65aeba59ee08802b50fbf410e1223968842022-11-15 6:02:3220 days 51 mins ago Vending Machines NFT: VMN Token0xb222dae344770da876f1cb0fe11f8dfa9090c56e0.015043923175227241 AVAX
0xc198296b7e379a045314ca0a1e1fdeda97b68b5fdee9895bd7aaf51668adb45f223968772022-11-15 6:02:1520 days 51 mins ago Vending Machines NFT: VMN Token0xb222dae344770da876f1cb0fe11f8dfa9090c56e0.015043923175227241 AVAX
0xe7801a4706b7e80a0a69a15a34620f4448bbee67fde82ff30e9bcf9ead3a4a25223968722022-11-15 6:02:0320 days 52 mins ago Vending Machines NFT: VMN Token0xb222dae344770da876f1cb0fe11f8dfa9090c56e0.015043923175227241 AVAX
0x4fa458f3ba9e15d88ce8e34ea4c1b2c73eeaaf1ca0efa5c55fddee34be1d6be7223968592022-11-15 6:01:3720 days 52 mins ago Vending Machines NFT: VMN Token0xb222dae344770da876f1cb0fe11f8dfa9090c56e0.015043923175227241 AVAX
0x377f724a0f041aaff217bb37c7891a96ca8f1fae6136626db5705d47c22838b2223968482022-11-15 6:01:1520 days 52 mins ago Vending Machines NFT: VMN Token0xb222dae344770da876f1cb0fe11f8dfa9090c56e0.015043923175227241 AVAX
0x07a9a423810223f7f9082d9b8f1786e4f2fba132dad4854d5bfc0831b5c98f78223119482022-11-13 5:28:3322 days 1 hr ago Vending Machines NFT: VMN Token0xdce4b61978e3b2f6d135142122e6c78682c598360.001038056438913518 AVAX
0x1ca00961ca936980fba522b95f2be6a119566df76d21d35c122ff6ddeb48bed6223119352022-11-13 5:28:0422 days 1 hr ago Vending Machines NFT: VMN Token0xdce4b61978e3b2f6d135142122e6c78682c598360.085345796787107515 AVAX
0xece2ab81f9f4fce5ef17d128bef3e77e46e014cfe33c4b6bcea109bac84aa4df222506782022-11-11 18:18:3923 days 12 hrs ago Vending Machines NFT: VMN Token0x331f7daf8fb97e8ebb54a422da58d38b30acb3a41.261000000000001389 AVAX
0x8f6febf26f7c8fa7e9a1c87aef98404352f1b41a3fa7f4ab1345c49aaffe28c5221450702022-11-09 7:19:0425 days 23 hrs ago Vending Machines NFT: VMN Token0xc33eec8363ac7db5a707f0cb989bd4b756fd4ac60.356521603718356564 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VendingMachinesNFT

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-01-30
*/

// SPDX-License-Identifier: MIT
// Created by petdomaa100 & xrpant

/*
  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  @@  .******************,       @@
  @@ @@           &@     @@      @@
  @@ @@@@@@@@@@@@@@@@@@@@@@      @@
  @@ @@     @@           @@ (@@& @@
  @@ @@@@@@@@@@@@@@@@@@@@@@ ,@@( @@
  @@ @@                  @@      @@
  @@ @@@@@@@@@@@@@@@@@@@@@@      @@
  @@ @@        @@        @@      @@
  @@ @@@@@@@@@@@@@@@@@@@@@@      @@
  @@ @@                  @@      @@
  @@ @@@@@@@@@@@@@@@@@@@@@@      @@
  @@ @@      @@ @@       @@      @@
  @@  @@@@@@@@@@@@@@@@@@@@       @@
  @@                             @@
  @@    @              @.        @@
  @@    @              @.  ,@@*  @@
  @@    @@@@@@@@@@@@@@@@         @@
  @@                             @@
  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     @.                       (@
*/



pragma solidity 0.8.11;


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);
	}
}

library Address {
	function isContract(address account) internal view returns(bool) {
		return account.code.length > 0;
	}
}

library Counters {
	struct Counter {
		uint256 _value;
	}


	function current(Counter storage counter) internal view returns(uint256) {
		return counter._value;
	}

	function increment(Counter storage counter) internal {
		unchecked {
			counter._value += 1;
		}
	}

	function decrement(Counter storage counter) internal {
		uint256 value = counter._value;
		require(value > 0, "Counter: decrement overflow");

		unchecked {
			counter._value = value - 1;
		}
	}

	function reset(Counter storage counter) internal {
		counter._value = 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;
}

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);
}

interface IERC2981Royalties {
	function royaltyInfo(uint256 tokenID, uint256 value) external view returns(address receiver, uint256 royaltyAmount);
}


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

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

abstract contract Ownable is Context {
	address private _owner;

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


	constructor() {
		_transferOwnership(_msgSender());
	}


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

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


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

		_transferOwnership(newOwner);
	}

	function _transferOwnership(address newOwner) internal virtual {
		address oldOwner = _owner;

		_owner = newOwner;

		emit OwnershipTransferred(oldOwner, newOwner);
	}
}

abstract contract ReentrancyGuard {
	uint256 private constant _NOT_ENTERED = 1;
	uint256 private constant _ENTERED = 2;

	uint256 private _status;

	constructor() {
		_status = _NOT_ENTERED;
	}


	modifier nonReentrant() {
		require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

		_status = _ENTERED;

		_;

		_status = _NOT_ENTERED;
	}
}


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

abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
	using Address for address;
	using Strings for uint256;

	string private _name;
	string private _symbol;

	mapping(uint256 => address) private _owners;
	mapping(address => uint256) private _balances;
	mapping(uint256 => address) private _tokenApprovals;
	mapping(address => mapping(address => bool)) private _operatorApprovals;

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

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

	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 "";
	}

	function approve(address to, uint256 tokenID) public virtual override {
		address owner = ERC721.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 {
		_setApprovalForAll(_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 {
		//solhint-disable-next-line max-line-length
		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 = ERC721.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);

		_afterTokenTransfer(address(0), to, tokenID);
	}

	function _burn(uint256 tokenID) internal virtual {
		address owner = ERC721.ownerOf(tokenID);

		_beforeTokenTransfer(owner, address(0), tokenID);
		_approve(address(0), tokenID);

		_balances[owner] -= 1;
		delete _owners[tokenID];

		emit Transfer(owner, address(0), tokenID);

		_afterTokenTransfer(owner, address(0), tokenID);
	}

	function _transfer(address from, address to, uint256 tokenID) internal virtual {
		require(ERC721.ownerOf(tokenID) == from, "ERC721: transfer from incorrect owner");
		require(to != address(0), "ERC721: transfer to the zero address");

		_beforeTokenTransfer(from, to, tokenID);
		_approve(address(0), tokenID);

		_balances[from] -= 1;
		_balances[to] += 1;
		_owners[tokenID] = to;

		emit Transfer(from, to, tokenID);

		_afterTokenTransfer(from, to, tokenID);
	}

	function _approve(address to, uint256 tokenID) internal virtual {
		_tokenApprovals[tokenID] = to;

		emit Approval(ERC721.ownerOf(tokenID), to, tokenID);
	}

	function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {
		require(owner != operator, "ERC721: approve to caller");

		_operatorApprovals[owner][operator] = approved;

		emit ApprovalForAll(owner, operator, approved);
	}

	function _checkOnERC721Received(address from, address to, uint256 tokenID, bytes memory _data) private returns(bool) {
		if (to.isContract()) {
			try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenID, _data) returns(bytes4 retval) {
				return retval == IERC721Receiver.onERC721Received.selector;
			} catch (bytes memory reason) {
				if (reason.length == 0) revert("ERC721: transfer to non ERC721Receiver implementer");

				else {
					assembly {
						revert(add(32, reason), mload(reason))
					}
				}
			}
		}

		else return true;
	}

	function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}

	function _afterTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}
}



contract VendingMachinesNFT is ERC721, ReentrancyGuard, Ownable {
	using Counters for Counters.Counter;
	using Strings for uint256;


	bool public paused;
	bool public revealed;
	bool public allowListings;
	bool public collectSalesRewardsFromThirdParty;

	string private unrevealedURI;
	string private baseURI;
	string private uriSuffix;

	uint256 public cost;
	uint256 public maxSupply;
	uint256 public reservedSupply;

	uint256 public maxMintAmountPerTX;

	uint256 public royalties;
	uint256 public dust;

	uint256 public mintRewards;
	uint256 public salesRewards;
	uint256 public mintRewardsIndex;
	uint256 public salesRewardsIndex;
	uint256 public totalMintRewardsVault;
	uint256 public totalSalesRewardsVault;

	mapping(uint256 => uint256) private lastCollectedMintRewardIndex;
	mapping(uint256 => uint256) private lastCollectedSalesRewardIndex;


	address private communityAddress;
	address private donationAddress;


	struct Listing {
		uint256 tokenID;
		uint256 price;
		address seller;
		uint256 timestamp;
	}

	Listing[] private listings;

	Counters.Counter private supply;


	uint256 private constant PERCENTAGE_MULTIPLIER = 10000;


	event NewListing(uint256 indexed tokenID, address indexed seller, uint256 price);
	event WithdrawnListing(uint256 indexed tokenID);
	event TokenSold(uint256 indexed tokenID, address indexed from, address indexed to, uint256 price);
	event ClaimedRewards(address indexed wallet, uint256 amount, uint8 indexed rewardType);
	event DisbursedRewards(uint256 amount);


	constructor(string memory _initUnrevealedURI, address _initCommunityAddress, address _initDonationAddress) ERC721("Vending Machines NFT", "VMN") {
		paused = true;
		revealed = false;
		allowListings = true;
		collectSalesRewardsFromThirdParty = true;

		cost = 2 ether;
		maxSupply = 4444;
		reservedSupply = 400;
		maxMintAmountPerTX = 10;

		royalties = 150;
		mintRewards = 1000;
		salesRewards = 150;
		dust = 100000000;

		mintRewardsIndex = 0;
		salesRewardsIndex = 0;

		communityAddress = _initCommunityAddress;
		donationAddress = _initDonationAddress;

		setURIsuffix(".json");
		setUnrevealedURI(_initUnrevealedURI);
	}


	function supportsInterface(bytes4 interfaceID) public view override returns(bool) {
		return interfaceID == type(IERC2981Royalties).interfaceId || super.supportsInterface(interfaceID);
	}


	function mint(uint256 amount) public payable nonReentrant {
		require(amount > 0 && amount <= maxMintAmountPerTX, "Invalid mint amount");

		uint256 newSupply = supply.current() + amount;

		require(newSupply <= maxSupply, "Max token supply exceeded");
		require(newSupply <= maxSupply - reservedSupply, "Remaining tokens are reserved");

		require(!paused, "Minting is paused");
		require(msg.value >= cost * amount, "Insufficient funds");


		uint256 mintRewardValue = 0;
		uint256 tokenIndex = supply.current();

		_mintLoop(_msgSender(), amount);


		for (uint256 i = 0; i < amount; i++) {
			if (tokenIndex > 0) {
				uint256 individualMintRewardValue = msg.value * mintRewards / PERCENTAGE_MULTIPLIER / amount / tokenIndex;

				mintRewardValue += individualMintRewardValue * tokenIndex;
				mintRewardsIndex += individualMintRewardValue;
			}

			tokenIndex++;
			lastCollectedMintRewardIndex[tokenIndex] = mintRewardsIndex;
		}

		totalMintRewardsVault += mintRewardValue;
	}

	function airDrop(address[] calldata addresses, uint8[] calldata amounts) public onlyOwner {
		assert(addresses.length == amounts.length);
		assert(addresses.length > 0 && amounts.length > 0);


		uint256 totalAmount;
		for (uint256 i = 0; i < amounts.length; i++) totalAmount += amounts[i];

		require(supply.current() + totalAmount <= maxSupply, "Max token supply exceeded");


		for (uint256 i = 0; i < addresses.length; i++) {
			uint8 amount = amounts[i];

			for (uint256 j = 0; j < amount; j++) {
				supply.increment();

				uint256 tokenID = supply.current();

				_safeMint(addresses[i], tokenID);

				lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex;
			}
		}
	}


	function flipPausedState() public onlyOwner {
		paused = !paused;
	}

	function flipAllowListingsState() public onlyOwner {
		allowListings = !allowListings;
	}

	function flipCollectSalesRewardsFromThirdParty() public onlyOwner {
		collectSalesRewardsFromThirdParty = !collectSalesRewardsFromThirdParty;
	}

	function reveal(string memory _initBaseURI) public onlyOwner {
		revealed = true;

		setBaseURI(_initBaseURI);
	}

	function claimMintRewards() public payable nonReentrant {
		uint256 reward = getMintRewardsOfAddress(_msgSender());
		require(reward > 0, "You don't have any rewards");


		uint256[] memory tokens = walletOfOwner(_msgSender());

		for (uint256 i = 0; i < tokens.length; i++) {
			uint256 tokenID = tokens[i];

			lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex;
		}

		totalMintRewardsVault -= reward;


		(bool success, ) = payable(_msgSender()).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(_msgSender(), reward, 1);
	}

	function claimMintRewardOfToken(uint256 tokenID) public payable nonReentrant {
		address owner = ownerOf(tokenID);
		require(_msgSender() == owner, "Only the owner of a token can claim rewards");

		uint256 reward = getMintRewardsOfToken(tokenID);
		require(reward > 0, "You don't have any rewards");


		totalMintRewardsVault -= reward;
		lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex;


		(bool success, ) = payable(owner).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(owner, reward, 1);
	}

	function claimSalesRewards() public payable nonReentrant {
		uint256 reward = getSalesRewardsOfAddress(_msgSender());
		require(reward > 0, "You don't have any rewards");


		uint256[] memory tokens = walletOfOwner(_msgSender());

		for (uint256 i = 0; i < tokens.length; i++) {
			uint256 tokenID = tokens[i];

			lastCollectedSalesRewardIndex[tokenID] = salesRewardsIndex;
		}

		totalSalesRewardsVault -= reward;


		(bool success, ) = payable(_msgSender()).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(_msgSender(), reward, 2);
	}

	function claimSalesRewardOfToken(uint256 tokenID) public payable nonReentrant {
		address owner = ownerOf(tokenID);
		require(_msgSender() == owner, "Only the owner of a token can claim rewards");

		uint256 reward = getSalesRewardsOfToken(tokenID);
		require(reward > 0, "You don't have any rewards");


		totalSalesRewardsVault -= reward;
		lastCollectedSalesRewardIndex[tokenID] = salesRewardsIndex;


		(bool success, ) = payable(owner).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(owner, reward, 2);
	}

	function withdraw() public onlyOwner {
		uint256 totalRewards = totalMintRewardsVault + totalSalesRewardsVault;
		uint256 balance_10percent = (address(this).balance - totalRewards) * 10 / 100;

		(bool success1, ) = payable(communityAddress).call{ value: balance_10percent * 3 }("");
		require(success1, "AVAX Transaction: Failed to transfer funds to community wallet!");

		(bool success2, ) = payable(donationAddress).call{ value: balance_10percent }("");
		require(success2, "AVAX Transaction: Failed to transfer funds to donation wallet!");

		(bool success3, ) = payable(owner()).call{ value: address(this).balance - (totalRewards + dust) }("");
		require(success3, "AVAX Transaction: Failed to transfer funds to the owner wallet!");
	}

	function emergencyWithdraw() public payable onlyOwner {
		(bool success, ) = payable(owner()).call{ value: address(this).balance }("");

		require(success, "AVAX Transaction: Failed to transfer funds");
	}

	function disburseRewards() public payable onlyOwner {
		uint256 currentSupply = supply.current();

		uint256 individualRewardValue = msg.value / currentSupply;
		uint256 rewardValue = individualRewardValue * currentSupply;

		mintRewardsIndex += individualRewardValue;
		totalMintRewardsVault += rewardValue;

		emit DisbursedRewards(msg.value);
	}


	function royaltyInfo(uint256, uint256 value) external view returns(address receiver, uint256 royaltyAmount) {
		receiver = address(this);

		royaltyAmount = value * (royalties + salesRewards) / PERCENTAGE_MULTIPLIER;
	}

	function createListing(uint256 tokenID, uint256 price) public nonReentrant {
		require(allowListings, "ERC721 Marketplace: Listings are currently disabled");
		require(price > 0, "ERC721 Marketplace: Invalid listing price");
		require(ownerOf(tokenID) == _msgSender(), "ERC721 Marketplace: Caller is not the owner");

		(bool isListed, ) = isTokenListed(tokenID);
		require(!isListed, "ERC721 Marketplace: Token is already listed");

		Listing memory sale = Listing(tokenID, price, _msgSender(), block.timestamp);

		listings.push(sale);

		emit NewListing(tokenID, _msgSender(), price);
	}

	function withdrawListing(uint256 tokenID) public nonReentrant {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);

		require(isListed, "ERC721 Marketplace: Token is not listed");
		require(listings[listingIndex].seller == _msgSender(), "ERC721 Marketplace: Caller is not the owner");

		listings[listingIndex] = listings[listings.length - 1];
		listings.pop();

		emit WithdrawnListing(tokenID);
	}

	function fulfillListing(uint256 tokenID) public payable nonReentrant {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);
		require(isListed, "ERC721 Marketplace: Token is not listed");

		Listing memory listing = listings[listingIndex];

		require(listing.seller != _msgSender(), "ERC721 Marketplace: Buyer and seller must be be different addresses");
		require(msg.value >= listing.price, "ERC721 Marketplace: Insufficient funds");

		uint256 royaltiesValue = msg.value * royalties / PERCENTAGE_MULTIPLIER;
		uint256 individualSalesRewardValue = msg.value * salesRewards / PERCENTAGE_MULTIPLIER / (supply.current() - 1);
		uint256 salesRewardValue = individualSalesRewardValue * (supply.current() - 1);


		listings[listingIndex] = listings[listings.length - 1];
		listings.pop();


		salesRewardsIndex += individualSalesRewardValue;
		lastCollectedSalesRewardIndex[tokenID] += individualSalesRewardValue;

		totalSalesRewardsVault += salesRewardValue;


		emit TokenSold(tokenID, listing.seller, _msgSender(), msg.value);


		_safeTransfer(listing.seller, _msgSender(), tokenID, "");

		(bool success, ) = payable(listing.seller).call{ value: msg.value - (royaltiesValue + salesRewardValue) }("");
		require(success, "AVAX Transaction: Failed to transfer funds");
	}

	function isTokenListed(uint256 tokenID) public view returns(bool isListed, uint256 index) {
		for (uint256 i = 0; i < listings.length; i++) {
			if (listings[i].tokenID != tokenID) continue;

			isListed = true;
			index = i;

			break;
		}
	}

	function getListings() public view returns(Listing[] memory) {
		return listings;
	}

	function getListingByTokenID(uint256 tokenID) public view returns(Listing memory) {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);
		require(isListed, "ERC721 Marketplace: Token is not listed");

		return listings[listingIndex];
	}

	function tokenURI(uint256 tokenID) public view override returns(string memory) {
		require(_exists(tokenID), "ERC721Metadata: URI query for nonexistent token");

		if (!revealed) return unrevealedURI;

		string memory currentBaseURI = _baseURI();

		return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked(currentBaseURI, tokenID.toString(), uriSuffix) ) : "";
	}

	function totalSupply() public view returns(uint256) {
		return supply.current();
	}

	function walletOfOwner(address _address) public view returns(uint256[] memory) {
		uint256 ownerTokenCount = balanceOf(_address);

		uint256[] memory ownedTokenIDs = new uint256[](ownerTokenCount);


		uint256 tokenIndex = 1;
		uint256 ownedTokenIndex = 0;

		while (ownedTokenIndex < ownerTokenCount && tokenIndex <= maxSupply) {
			address owner = ownerOf(tokenIndex);

			if (owner == _address) {
				ownedTokenIDs[ownedTokenIndex] = tokenIndex;

				ownedTokenIndex++;
			}

			tokenIndex++;
		}


		return ownedTokenIDs;
	}

	function getMintRewardsOfAddress(address _address) public view returns(uint256) {
		uint256[] memory tokens = walletOfOwner(_address);
		uint256 total = 0;

		for (uint256 i = 0; i < tokens.length; i++) {
			total += getMintRewardsOfToken(tokens[i]);
		}

		return total;
	}

	function getSalesRewardsOfAddress(address _address) public view returns(uint256) {
		uint256[] memory tokens = walletOfOwner(_address);
		uint256 total = 0;

		for (uint256 i = 0; i < tokens.length; i++) {
			total += getSalesRewardsOfToken(tokens[i]);
		}

		return total;
	}

	function getMintRewardsOfToken(uint256 tokenID) public view returns(uint256) {
		require(supply.current() >= tokenID, "Query for nonexistent token");

		return mintRewardsIndex - lastCollectedMintRewardIndex[tokenID];
	}

	function getSalesRewardsOfToken(uint256 tokenID) public view returns(uint256) {
		require(supply.current() >= tokenID, "Query for nonexistent token");

		return salesRewardsIndex - lastCollectedSalesRewardIndex[tokenID];
	}


	function setBaseURI(string memory newBaseURI) public onlyOwner {
		baseURI = newBaseURI;
	}

	function setUnrevealedURI(string memory newUnrevealedURI) public onlyOwner {
		unrevealedURI = newUnrevealedURI;
	}

	function setURIsuffix(string memory newSuffix) public onlyOwner {
		uriSuffix = newSuffix;
	}

	function setMaxSupply(uint256 newAmount) public onlyOwner {
		maxSupply = newAmount;
	}

	function setReservedSupply(uint256 newAmount) public onlyOwner {
		reservedSupply = newAmount;
	}

	function setMaxMintAmountPerTX(uint256 newAmount) public onlyOwner {
		maxMintAmountPerTX = newAmount;
	}

	function setCost(uint256 newCost) public onlyOwner {
		cost = newCost;
	}

	function setMintRewards(uint256 newValue) public onlyOwner {
		mintRewards = newValue;
	}

	function setSalesRewards(uint256 newValue) public onlyOwner {
		salesRewards = newValue;
	}

	function setRoyalties(uint256 newValue) public onlyOwner {
		royalties = newValue;
	}

	function setDust(uint256 newValue) public onlyOwner {
		dust = newValue;
	}

	function setMintRewardsIndex(uint256 newAmount) public onlyOwner {
		mintRewardsIndex = newAmount;
	}

	function setSalesRewardsIndex(uint256 newAmount) public onlyOwner {
		salesRewardsIndex = newAmount;
	}

	function setWithdrawAddresses(address newCommunityAddress, address newDonationAddress) public onlyOwner {
		communityAddress = newCommunityAddress;
		donationAddress = newDonationAddress;
	}


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

	function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal override {
		(bool isListed, ) = isTokenListed(tokenID);
		require(!isListed, "ERC721 Marketplace: Unable to transfer a listed token");


		super._beforeTokenTransfer(from, to, tokenID);
	}

	function _mintLoop(address to, uint256 amount) internal {
		for (uint256 i = 0; i < amount; i++) {
			supply.increment();

			_safeMint(to, supply.current());
		}
	}


	receive() external payable {
		uint256 currentSupply = supply.current();

		if (collectSalesRewardsFromThirdParty == true && currentSupply > 0) {
			uint256 individualSalesRewardValue = msg.value / (salesRewards + royalties) * salesRewards / currentSupply;
			uint256 salesRewardValue = individualSalesRewardValue * currentSupply;

			salesRewardsIndex += individualSalesRewardValue;

			totalSalesRewardsVault += salesRewardValue;
		}
	}
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"_initUnrevealedURI","type":"string"},{"internalType":"address","name":"_initCommunityAddress","type":"address"},{"internalType":"address","name":"_initDonationAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"rewardType","type":"uint8"}],"name":"ClaimedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DisbursedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"NewListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"WithdrawnListing","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"amounts","type":"uint8[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowListings","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"uint256","name":"tokenID","type":"uint256"}],"name":"claimMintRewardOfToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimMintRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"claimSalesRewardOfToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimSalesRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"collectSalesRewardsFromThirdParty","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"createListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disburseRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"flipAllowListingsState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipCollectSalesRewardsFromThirdParty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPausedState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"fulfillListing","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getListingByTokenID","outputs":[{"components":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct VendingMachinesNFT.Listing","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getListings","outputs":[{"components":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct VendingMachinesNFT.Listing[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getMintRewardsOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getMintRewardsOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getSalesRewardsOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getSalesRewardsOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"isTokenListed","outputs":[{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintRewardsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royalties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","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":"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":[],"name":"salesRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"salesRewardsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxMintAmountPerTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMintRewardsIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setReservedSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSalesRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSalesRewardsIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSuffix","type":"string"}],"name":"setURIsuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"name":"setUnrevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCommunityAddress","type":"address"},{"internalType":"address","name":"newDonationAddress","type":"address"}],"name":"setWithdrawAddresses","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":"tokenID","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMintRewardsVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSalesRewardsVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"withdrawListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162004b8b38038062004b8b833981016040819052620000349162000370565b604080518082018252601481527f56656e64696e67204d616368696e6573204e46540000000000000000000000006020808301918252835180850190945260038452622b26a760e91b908401528151919291620000949160009162000297565b508051620000aa90600190602084019062000297565b5050600160065550620000bd3362000182565b60078054630101000160a01b63ffffffff60a01b19909116179055671bc16d674ec80000600b5561115c600c55610190600d55600a600e556096600f8190556103e86011556012556305f5e10060105560006013819055601455601980546001600160a01b038085166001600160a01b031992831617909255601a805492841692909116919091179055604080518082019091526005815264173539b7b760d91b60208201526200016e90620001d4565b62000179836200023c565b505050620004b0565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6007546001600160a01b03163314620002235760405162461bcd60e51b8152602060048201819052602482015260008051602062004b6b83398151915260448201526064015b60405180910390fd5b80516200023890600a90602084019062000297565b5050565b6007546001600160a01b03163314620002875760405162461bcd60e51b8152602060048201819052602482015260008051602062004b6b83398151915260448201526064016200021a565b8051620002389060089060208401905b828054620002a59062000473565b90600052602060002090601f016020900481019282620002c9576000855562000314565b82601f10620002e457805160ff191683800117855562000314565b8280016001018555821562000314579182015b8281111562000314578251825591602001919060010190620002f7565b506200032292915062000326565b5090565b5b8082111562000322576000815560010162000327565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200036b57600080fd5b919050565b6000806000606084860312156200038657600080fd5b83516001600160401b03808211156200039e57600080fd5b818601915086601f830112620003b357600080fd5b815181811115620003c857620003c86200033d565b604051601f8201601f19908116603f01168101908382118183101715620003f357620003f36200033d565b816040528281526020935089848487010111156200041057600080fd5b600091505b8282101562000434578482018401518183018501529083019062000415565b82821115620004465760008484830101525b96506200045891505086820162000353565b935050506200046a6040850162000353565b90509250925092565b600181811c908216806200048857607f821691505b60208210811415620004aa57634e487b7160e01b600052602260045260246000fd5b50919050565b6146ab80620004c06000396000f3fe6080604052600436106104145760003560e01c80637ef6f6561161021e578063b5350ebf11610123578063e02f3993116100ab578063f1b2d6a31161007a578063f1b2d6a314610c56578063f2fde38b14610c78578063f9daade414610c98578063fad9aba314610cb8578063fe2c7fee14610cce57600080fd5b8063e02f399314610bf7578063e985e9c514610c0d578063f053dc5c14610c2d578063f1629d1314610c4357600080fd5b8063d5abeb01116100f2578063d5abeb0114610b8d578063d6fb650c14610ba3578063db2e21bc14610bc3578063dceb262914610bcb578063dd76cba314610be157600080fd5b8063b5350ebf14610b2f578063b88d4fde14610b37578063bf72daad14610b57578063c87b56dd14610b6d57600080fd5b80639b83cddc116101a6578063a22cb46511610175578063a22cb46514610a8f578063a79123a914610aaf578063aec6e27314610acf578063aff7214114610aef578063b36a206414610b0f57600080fd5b80639b83cddc14610a0f578063a0712d6814610a46578063a0ba1bbf14610a59578063a17bd78314610a7a57600080fd5b80638d5190d9116101ed5780638d5190d9146109875780638da5cb5b146109a75780638e6fe1a3146109c557806393eff851146109e557806395d89b41146109fa57600080fd5b80637ef6f65614610912578063825875741461093257806384917f4a1461095257806389ac1fa81461097f57600080fd5b80633ccfd60b116103245780634c261247116102ac57806356fcf95b1161027b57806356fcf95b146108715780635c975abb146108915780636352211e146108b25780636f8b44b0146108d257806370a08231146108f257600080fd5b80634c261247146107ef5780634f8a1db51461080f578063518302271461083057806355f804b31461085157600080fd5b8063437552c0116102f3578063437552c01461074c578063438b63001461076c57806344a0d68a1461079957806344d19d2b146107b957806347d616bc146107cf57600080fd5b80633ccfd60b146106fc5780633e57bb141461071157806342842e0e1461071957806342bba11a1461073957600080fd5b806318160ddd116103a757806328e3a0b21161037657806328e3a0b21461065e5780632a55205a146106745780632b80183f146106b35780632dfa9d00146106d35780633912fc85146106e957600080fd5b806318160ddd146105f35780631e13f86b14610608578063234cb0511461062857806323b872dd1461063e57600080fd5b80630798e5c9116103e35780630798e5c91461056e578063081812fc14610585578063095ea7b3146105bd57806313faede6146105dd57600080fd5b806301ffc9a7146104c9578063048d228b146104fe57806305e79db21461052c57806306fdde031461054c57600080fd5b366104c4576000610424601c5490565b600754909150600160b81b900460ff16151560011480156104455750600081115b156104c157600081601254600f546012546104609190613ccf565b61046a9034613cfd565b6104749190613d11565b61047e9190613cfd565b9050600061048c8383613d11565b905081601460008282546104a09190613ccf565b9250508190555080601660008282546104b99190613ccf565b909155505050505b50005b600080fd5b3480156104d557600080fd5b506104e96104e4366004613d46565b610cee565b60405190151581526020015b60405180910390f35b34801561050a57600080fd5b5061051e610519366004613d7f565b610d19565b6040519081526020016104f5565b34801561053857600080fd5b5061051e610547366004613d9a565b610d7c565b34801561055857600080fd5b50610561610df7565b6040516104f59190613e0b565b34801561057a57600080fd5b50610583610e89565b005b34801561059157600080fd5b506105a56105a0366004613d9a565b610ed4565b6040516001600160a01b0390911681526020016104f5565b3480156105c957600080fd5b506105836105d8366004613e1e565b610f69565b3480156105e957600080fd5b5061051e600b5481565b3480156105ff57600080fd5b5061051e61107f565b34801561061457600080fd5b50610583610623366004613d9a565b61108f565b34801561063457600080fd5b5061051e60115481565b34801561064a57600080fd5b50610583610659366004613e48565b6110be565b34801561066a57600080fd5b5061051e60135481565b34801561068057600080fd5b5061069461068f366004613e84565b6110ef565b604080516001600160a01b0390931683526020830191909152016104f5565b3480156106bf57600080fd5b506105836106ce366004613d9a565b611124565b3480156106df57600080fd5b5061051e600e5481565b6105836106f7366004613d9a565b611153565b34801561070857600080fd5b506105836115c6565b610583611883565b34801561072557600080fd5b50610583610734366004613e48565b611a06565b610583610747366004613d9a565b611a21565b34801561075857600080fd5b50610583610767366004613d9a565b611b95565b34801561077857600080fd5b5061078c610787366004613d7f565b611bc4565b6040516104f59190613ea6565b3480156107a557600080fd5b506105836107b4366004613d9a565b611ca5565b3480156107c557600080fd5b5061051e600d5481565b3480156107db57600080fd5b506105836107ea366004613d9a565b611cd4565b3480156107fb57600080fd5b5061058361080a366004613f76565b611d03565b34801561081b57600080fd5b506007546104e990600160b81b900460ff1681565b34801561083c57600080fd5b506007546104e990600160a81b900460ff1681565b34801561085d57600080fd5b5061058361086c366004613f76565b611d4c565b34801561087d57600080fd5b5061058361088c366004613d9a565b611d8d565b34801561089d57600080fd5b506007546104e990600160a01b900460ff1681565b3480156108be57600080fd5b506105a56108cd366004613d9a565b611dbc565b3480156108de57600080fd5b506105836108ed366004613d9a565b611e33565b3480156108fe57600080fd5b5061051e61090d366004613d7f565b611e62565b34801561091e57600080fd5b5061058361092d366004613fbf565b611ee9565b34801561093e57600080fd5b5061051e61094d366004613d9a565b611f41565b34801561095e57600080fd5b5061097261096d366004613d9a565b611fb7565b6040516104f59190613fe9565b61058361207d565b34801561099357600080fd5b506105836109a2366004613d9a565b6121b8565b3480156109b357600080fd5b506007546001600160a01b03166105a5565b3480156109d157600080fd5b506105836109e0366004613d9a565b6121e7565b3480156109f157600080fd5b50610583612216565b348015610a0657600080fd5b50610561612261565b348015610a1b57600080fd5b50610a2f610a2a366004613d9a565b612270565b6040805192151583526020830191909152016104f5565b610583610a54366004613d9a565b6122d4565b348015610a6557600080fd5b506007546104e990600160b01b900460ff1681565b348015610a8657600080fd5b50610583612596565b348015610a9b57600080fd5b50610583610aaa36600461401d565b6125e1565b348015610abb57600080fd5b50610583610aca366004613e84565b6125ec565b348015610adb57600080fd5b50610583610aea366004613d9a565b6128c6565b348015610afb57600080fd5b50610583610b0a366004613f76565b612a7d565b348015610b1b57600080fd5b5061051e610b2a366004613d7f565b612aba565b610583612b15565b348015610b4357600080fd5b50610583610b52366004614059565b612bd0565b348015610b6357600080fd5b5061051e60145481565b348015610b7957600080fd5b50610561610b88366004613d9a565b612c08565b348015610b9957600080fd5b5061051e600c5481565b348015610baf57600080fd5b50610583610bbe366004613d9a565b612d89565b610583612db8565b348015610bd757600080fd5b5061051e60155481565b348015610bed57600080fd5b5061051e60165481565b348015610c0357600080fd5b5061051e60125481565b348015610c1957600080fd5b506104e9610c28366004613fbf565b612e66565b348015610c3957600080fd5b5061051e600f5481565b610583610c51366004613d9a565b612e94565b348015610c6257600080fd5b50610c6b612ff5565b6040516104f591906140d5565b348015610c8457600080fd5b50610583610c93366004613d7f565b61307f565b348015610ca457600080fd5b50610583610cb336600461418a565b613117565b348015610cc457600080fd5b5061051e60105481565b348015610cda57600080fd5b50610583610ce9366004613f76565b6132f1565b60006001600160e01b0319821663152a902d60e11b1480610d135750610d138261332e565b92915050565b600080610d2583611bc4565b90506000805b8251811015610d7457610d56838281518110610d4957610d496141f6565b6020026020010151610d7c565b610d609083613ccf565b915080610d6c8161420c565b915050610d2b565b509392505050565b600081610d88601c5490565b1015610ddb5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e000000000060448201526064015b60405180910390fd5b600082815260186020526040902054601454610d139190614227565b606060008054610e069061423e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e329061423e565b8015610e7f5780601f10610e5457610100808354040283529160200191610e7f565b820191906000526020600020905b815481529060010190602001808311610e6257829003601f168201915b5050505050905090565b6007546001600160a01b03163314610eb35760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000818152600260205260408120546001600160a01b0316610f4d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dd2565b506000908152600460205260409020546001600160a01b031690565b6000610f7482611dbc565b9050806001600160a01b0316836001600160a01b03161415610fe25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610dd2565b336001600160a01b0382161480610ffe5750610ffe8133612e66565b6110705760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610dd2565b61107a838361337e565b505050565b600061108a601c5490565b905090565b6007546001600160a01b031633146110b95760405162461bcd60e51b8152600401610dd290614279565b600d55565b6110c833826133ec565b6110e45760405162461bcd60e51b8152600401610dd2906142ae565b61107a8383836134c3565b601254600f5430916000916127109161110791613ccf565b6111119085613d11565b61111b9190613cfd565b90509250929050565b6007546001600160a01b0316331461114e5760405162461bcd60e51b8152600401610dd290614279565b600f55565b600260065414156111765760405162461bcd60e51b8152600401610dd2906142ff565b600260065560008061118783612270565b91509150816111a85760405162461bcd60e51b8152600401610dd290614336565b6000601b82815481106111bd576111bd6141f6565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b031690820152600390910154606082015290506112103390565b6001600160a01b031681604001516001600160a01b031614156112a75760405162461bcd60e51b815260206004820152604360248201527f455243373231204d61726b6574706c6163653a20427579657220616e6420736560448201527f6c6c6572206d75737420626520626520646966666572656e742061646472657360648201526273657360e81b608482015260a401610dd2565b806020015134101561130a5760405162461bcd60e51b815260206004820152602660248201527f455243373231204d61726b6574706c6163653a20496e73756666696369656e746044820152652066756e647360d01b6064820152608401610dd2565b6000612710600f543461131d9190613d11565b6113279190613cfd565b905060006001611336601c5490565b6113409190614227565b612710601254346113519190613d11565b61135b9190613cfd565b6113659190613cfd565b905060006001611374601c5490565b61137e9190614227565b6113889083613d11565b601b80549192509061139c90600190614227565b815481106113ac576113ac6141f6565b9060005260206000209060040201601b86815481106113cd576113cd6141f6565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601b80548061142c5761142c61437d565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560148054849290611477908490613ccf565b90915550506000878152601860205260408120805484929061149a908490613ccf565b9250508190555080601660008282546114b39190613ccf565b909155503390506001600160a01b031684604001516001600160a01b0316887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af95563460405161150391815260200190565b60405180910390a4611530846040015161151a3390565b896040518060200160405280600081525061366a565b60408401516000906001600160a01b031661154b8386613ccf565b6115559034614227565b604051600081818185875af1925050503d8060008114611591576040519150601f19603f3d011682016040523d82523d6000602084013e611596565b606091505b50509050806115b75760405162461bcd60e51b8152600401610dd290614393565b50506001600655505050505050565b6007546001600160a01b031633146115f05760405162461bcd60e51b8152600401610dd290614279565b60006016546015546116029190613ccf565b9050600060646116128347614227565b61161d90600a613d11565b6116279190613cfd565b6019549091506000906001600160a01b0316611644836003613d11565b604051600081818185875af1925050503d8060008114611680576040519150601f19603f3d011682016040523d82523d6000602084013e611685565b606091505b50509050806116ea5760405162461bcd60e51b815260206004820152603f602482015260008051602061465683398151915260448201527f736665722066756e647320746f20636f6d6d756e6974792077616c6c657421006064820152608401610dd2565b601a546040516000916001600160a01b03169084908381818185875af1925050503d8060008114611737576040519150601f19603f3d011682016040523d82523d6000602084013e61173c565b606091505b50509050806117a15760405162461bcd60e51b815260206004820152603e602482015260008051602061465683398151915260448201527f736665722066756e647320746f20646f6e6174696f6e2077616c6c65742100006064820152608401610dd2565b60006117b56007546001600160a01b031690565b6001600160a01b0316601054866117cc9190613ccf565b6117d69047614227565b604051600081818185875af1925050503d8060008114611812576040519150601f19603f3d011682016040523d82523d6000602084013e611817565b606091505b505090508061187c5760405162461bcd60e51b815260206004820152603f602482015260008051602061465683398151915260448201527f736665722066756e647320746f20746865206f776e65722077616c6c657421006064820152608401610dd2565b5050505050565b600260065414156118a65760405162461bcd60e51b8152600401610dd2906142ff565b600260065560006118b633610d19565b9050600081116118d85760405162461bcd60e51b8152600401610dd2906143cb565b60006118e333611bc4565b905060005b8151811015611936576000828281518110611905576119056141f6565b602090810291909101810151601454600091825260189092526040902055508061192e8161420c565b9150506118e8565b5081601660008282546119499190614227565b9091555050604051600090339084908381818185875af1925050503d8060008114611990576040519150601f19603f3d011682016040523d82523d6000602084013e611995565b606091505b50509050806119b65760405162461bcd60e51b8152600401610dd290614393565b6002335b6001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba9856040516119f491815260200190565b60405180910390a35050600160065550565b61107a83838360405180602001604052806000815250612bd0565b60026006541415611a445760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000611a5482611dbc565b9050336001600160a01b03821614611a7e5760405162461bcd60e51b8152600401610dd290614402565b6000611a8983610d7c565b905060008111611aab5760405162461bcd60e51b8152600401610dd2906143cb565b8060166000828254611abd9190614227565b90915550506014546000848152601860205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114611b1f576040519150601f19603f3d011682016040523d82523d6000602084013e611b24565b606091505b5050905080611b455760405162461bcd60e51b8152600401610dd290614393565b6002836001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba984604051611b8291815260200190565b60405180910390a3505060016006555050565b6007546001600160a01b03163314611bbf5760405162461bcd60e51b8152600401610dd290614279565b601055565b60606000611bd183611e62565b905060008167ffffffffffffffff811115611bee57611bee613eea565b604051908082528060200260200182016040528015611c17578160200160208202803683370190505b509050600160005b8381108015611c305750600c548211155b15611c9b576000611c4083611dbc565b9050866001600160a01b0316816001600160a01b03161415611c885782848381518110611c6f57611c6f6141f6565b602090810291909101015281611c848161420c565b9250505b82611c928161420c565b93505050611c1f565b5090949350505050565b6007546001600160a01b03163314611ccf5760405162461bcd60e51b8152600401610dd290614279565b600b55565b6007546001600160a01b03163314611cfe5760405162461bcd60e51b8152600401610dd290614279565b601355565b6007546001600160a01b03163314611d2d5760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60a81b1916600160a81b179055611d4981611d4c565b50565b6007546001600160a01b03163314611d765760405162461bcd60e51b8152600401610dd290614279565b8051611d89906009906020840190613c20565b5050565b6007546001600160a01b03163314611db75760405162461bcd60e51b8152600401610dd290614279565b601255565b6000818152600260205260408120546001600160a01b031680610d135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610dd2565b6007546001600160a01b03163314611e5d5760405162461bcd60e51b8152600401610dd290614279565b600c55565b60006001600160a01b038216611ecd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610dd2565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b03163314611f135760405162461bcd60e51b8152600401610dd290614279565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b600081611f4d601c5490565b1015611f9b5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610dd2565b600082815260176020526040902054601354610d139190614227565b611feb6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b600080611ff784612270565b91509150816120185760405162461bcd60e51b8152600401610dd290614336565b601b818154811061202b5761202b6141f6565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b0316908201526003909101546060820152949350505050565b600260065414156120a05760405162461bcd60e51b8152600401610dd2906142ff565b600260065560006120b033612aba565b9050600081116120d25760405162461bcd60e51b8152600401610dd2906143cb565b60006120dd33611bc4565b905060005b81518110156121305760008282815181106120ff576120ff6141f6565b60209081029190910181015160135460009182526017909252604090205550806121288161420c565b9150506120e2565b5081601560008282546121439190614227565b9091555050604051600090339084908381818185875af1925050503d806000811461218a576040519150601f19603f3d011682016040523d82523d6000602084013e61218f565b606091505b50509050806121b05760405162461bcd60e51b8152600401610dd290614393565b6001336119ba565b6007546001600160a01b031633146121e25760405162461bcd60e51b8152600401610dd290614279565b601455565b6007546001600160a01b031633146122115760405162461bcd60e51b8152600401610dd290614279565b600e55565b6007546001600160a01b031633146122405760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60a01b198116600160a01b9182900460ff1615909102179055565b606060018054610e069061423e565b60008060005b601b548110156122ce5783601b8281548110612294576122946141f6565b906000526020600020906004020160000154146122b0576122bc565b600192508091506122ce565b806122c68161420c565b915050612276565b50915091565b600260065414156122f75760405162461bcd60e51b8152600401610dd2906142ff565b6002600655801580159061230d5750600e548111155b61234f5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081b5a5b9d08185b5bdd5b9d606a1b6044820152606401610dd2565b60008161235b601c5490565b6123659190613ccf565b9050600c548111156123b55760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dd2565b600d54600c546123c59190614227565b8111156124145760405162461bcd60e51b815260206004820152601d60248201527f52656d61696e696e6720746f6b656e73206172652072657365727665640000006044820152606401610dd2565b600754600160a01b900460ff16156124625760405162461bcd60e51b8152602060048201526011602482015270135a5b9d1a5b99c81a5cc81c185d5cd959607a1b6044820152606401610dd2565b81600b546124709190613d11565b3410156124b45760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610dd2565b6000806124c0601c5490565b90506124cc338561369d565b60005b848110156125735781156125415760008286612710601154346124f29190613d11565b6124fc9190613cfd565b6125069190613cfd565b6125109190613cfd565b905061251c8382613d11565b6125269085613ccf565b9350806013600082825461253a9190613ccf565b9091555050505b8161254b8161420c565b601354600082815260176020526040902055925081905061256b8161420c565b9150506124cf565b5081601560008282546125869190613ccf565b9091555050600160065550505050565b6007546001600160a01b031633146125c05760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60b01b198116600160b01b9182900460ff1615909102179055565b611d893383836136da565b6002600654141561260f5760405162461bcd60e51b8152600401610dd2906142ff565b6002600655600754600160b01b900460ff166126895760405162461bcd60e51b815260206004820152603360248201527f455243373231204d61726b6574706c6163653a204c697374696e6773206172656044820152720818dd5c9c995b9d1b1e48191a5cd8589b1959606a1b6064820152608401610dd2565b600081116126eb5760405162461bcd60e51b815260206004820152602960248201527f455243373231204d61726b6574706c6163653a20496e76616c6964206c697374604482015268696e6720707269636560b81b6064820152608401610dd2565b336126f583611dbc565b6001600160a01b03161461271b5760405162461bcd60e51b8152600401610dd29061444d565b600061272683612270565b509050801561278b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231204d61726b6574706c6163653a20546f6b656e20697320616c7260448201526a1958591e481b1a5cdd195960aa1b6064820152608401610dd2565b600060405180608001604052808581526020018481526020016127ab3390565b6001600160a01b03908116825242602092830152601b805460018101825560009190915283517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1600490920291820155918301517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc283015560408301517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc3830180546001600160a01b0319169190921617905560608201517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc4909101559050336001600160a01b0316847fda5118e11956b6ccec7a349074d6efada2b70b987d2eabba029de60d8f67b1aa85604051611b8291815260200190565b600260065414156128e95760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000806128fa83612270565b915091508161291b5760405162461bcd60e51b8152600401610dd290614336565b336001600160a01b0316601b8281548110612938576129386141f6565b60009182526020909120600260049092020101546001600160a01b0316146129725760405162461bcd60e51b8152600401610dd29061444d565b601b805461298290600190614227565b81548110612992576129926141f6565b9060005260206000209060040201601b82815481106129b3576129b36141f6565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601b805480612a1257612a1261437d565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560405184917fd61f1a8b7be6805af2e554cc25e9395d458bbd556fa7c01c166ffbd9197347de91a25050600160065550565b6007546001600160a01b03163314612aa75760405162461bcd60e51b8152600401610dd290614279565b8051611d8990600a906020840190613c20565b600080612ac683611bc4565b90506000805b8251811015610d7457612af7838281518110612aea57612aea6141f6565b6020026020010151611f41565b612b019083613ccf565b915080612b0d8161420c565b915050612acc565b6007546001600160a01b03163314612b3f5760405162461bcd60e51b8152600401610dd290614279565b6000612b4a601c5490565b90506000612b588234613cfd565b90506000612b668383613d11565b90508160136000828254612b7a9190613ccf565b925050819055508060156000828254612b939190613ccf565b90915550506040513481527ff47d3b5520326a887c3a79604ff206e16718a200fe11d7f3b555b2a4ddd93faa9060200160405180910390a1505050565b612bda33836133ec565b612bf65760405162461bcd60e51b8152600401610dd2906142ae565b612c028484848461366a565b50505050565b6000818152600260205260409020546060906001600160a01b0316612c875760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610dd2565b600754600160a81b900460ff16612d2a5760088054612ca59061423e565b80601f0160208091040260200160405190810160405280929190818152602001828054612cd19061423e565b8015612d1e5780601f10612cf357610100808354040283529160200191612d1e565b820191906000526020600020905b815481529060010190602001808311612d0157829003601f168201915b50505050509050919050565b6000612d346137a9565b90506000815111612d545760405180602001604052806000815250612d82565b80612d5e846137b8565b600a604051602001612d7293929190614498565b6040516020818303038152906040525b9392505050565b6007546001600160a01b03163314612db35760405162461bcd60e51b8152600401610dd290614279565b601155565b6007546001600160a01b03163314612de25760405162461bcd60e51b8152600401610dd290614279565b6000612df66007546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612e40576040519150601f19603f3d011682016040523d82523d6000602084013e612e45565b606091505b5050905080611d495760405162461bcd60e51b8152600401610dd290614393565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60026006541415612eb75760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000612ec782611dbc565b9050336001600160a01b03821614612ef15760405162461bcd60e51b8152600401610dd290614402565b6000612efc83611f41565b905060008111612f1e5760405162461bcd60e51b8152600401610dd2906143cb565b8060156000828254612f309190614227565b90915550506013546000848152601760205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114612f92576040519150601f19603f3d011682016040523d82523d6000602084013e612f97565b606091505b5050905080612fb85760405162461bcd60e51b8152600401610dd290614393565b6001836001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba984604051611b8291815260200190565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156130765760008481526020908190206040805160808101825260048602909201805483526001808201548486015260028201546001600160a01b0316928401929092526003015460608301529083529092019101613019565b50505050905090565b6007546001600160a01b031633146130a95760405162461bcd60e51b8152600401610dd290614279565b6001600160a01b03811661310e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dd2565b611d49816138b6565b6007546001600160a01b031633146131415760405162461bcd60e51b8152600401610dd290614279565b8281146131505761315061455c565b821580159061315e57508015155b61316a5761316a61455c565b6000805b828110156131be57838382818110613188576131886141f6565b905060200201602081019061319d9190614572565b6131aa9060ff1683613ccf565b9150806131b68161420c565b91505061316e565b50600c54816131cc601c5490565b6131d69190613ccf565b11156132205760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dd2565b60005b848110156132e957600084848381811061323f5761323f6141f6565b90506020020160208101906132549190614572565b905060005b8160ff168110156132d457613272601c80546001019055565b600061327d601c5490565b90506132af898986818110613294576132946141f6565b90506020020160208101906132a99190613d7f565b82613908565b60135460009182526017602052604090912055806132cc8161420c565b915050613259565b505080806132e19061420c565b915050613223565b505050505050565b6007546001600160a01b0316331461331b5760405162461bcd60e51b8152600401610dd290614279565b8051611d89906008906020840190613c20565b60006001600160e01b031982166380ac58cd60e01b148061335f57506001600160e01b03198216635b5e139f60e01b145b80610d1357506301ffc9a760e01b6001600160e01b0319831614610d13565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906133b382611dbc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166134655760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dd2565b600061347083611dbc565b9050806001600160a01b0316846001600160a01b031614806134ab5750836001600160a01b03166134a084610ed4565b6001600160a01b0316145b806134bb57506134bb8185612e66565b949350505050565b826001600160a01b03166134d682611dbc565b6001600160a01b03161461353a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dd2565b6001600160a01b03821661359c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610dd2565b6135a7838383613922565b6135b260008261337e565b6001600160a01b03831660009081526003602052604081208054600192906135db908490614227565b90915550506001600160a01b0382166000908152600360205260408120805460019290613609908490613ccf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6136758484846134c3565b613681848484846139a1565b612c025760405162461bcd60e51b8152600401610dd290614595565b60005b8181101561107a576136b6601c80546001019055565b6136c8836136c3601c5490565b613908565b806136d28161420c565b9150506136a0565b816001600160a01b0316836001600160a01b0316141561373c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dd2565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060098054610e069061423e565b6060816137dc5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561380657806137f08161420c565b91506137ff9050600a83613cfd565b91506137e0565b60008167ffffffffffffffff81111561382157613821613eea565b6040519080825280601f01601f19166020018201604052801561384b576020820181803683370190505b5090505b84156134bb57613860600183614227565b915061386d600a866145e7565b613878906030613ccf565b60f81b81838151811061388d5761388d6141f6565b60200101906001600160f81b031916908160001a9053506138af600a86613cfd565b945061384f565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611d89828260405180602001604052806000815250613a9f565b600061392d82612270565b509050801561399c5760405162461bcd60e51b815260206004820152603560248201527f455243373231204d61726b6574706c6163653a20556e61626c6520746f20747260448201527430b739b332b91030903634b9ba32b2103a37b5b2b760591b6064820152608401610dd2565b612c02565b60006001600160a01b0384163b15613a9457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906139e59033908990889088906004016145fb565b6020604051808303816000875af1925050508015613a20575060408051601f3d908101601f19168201909252613a1d91810190614638565b60015b613a7a573d808015613a4e576040519150601f19603f3d011682016040523d82523d6000602084013e613a53565b606091505b508051613a725760405162461bcd60e51b8152600401610dd290614595565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506134bb565b506001949350505050565b613aa98383613ad2565b613ab660008484846139a1565b61107a5760405162461bcd60e51b8152600401610dd290614595565b6001600160a01b038216613b285760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dd2565b6000818152600260205260409020546001600160a01b031615613b8d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dd2565b613b9960008383613922565b6001600160a01b0382166000908152600360205260408120805460019290613bc2908490613ccf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054613c2c9061423e565b90600052602060002090601f016020900481019282613c4e5760008555613c94565b82601f10613c6757805160ff1916838001178555613c94565b82800160010185558215613c94579182015b82811115613c94578251825591602001919060010190613c79565b50613ca0929150613ca4565b5090565b5b80821115613ca05760008155600101613ca5565b634e487b7160e01b600052601160045260246000fd5b60008219821115613ce257613ce2613cb9565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613d0c57613d0c613ce7565b500490565b6000816000190483118215151615613d2b57613d2b613cb9565b500290565b6001600160e01b031981168114611d4957600080fd5b600060208284031215613d5857600080fd5b8135612d8281613d30565b80356001600160a01b0381168114613d7a57600080fd5b919050565b600060208284031215613d9157600080fd5b612d8282613d63565b600060208284031215613dac57600080fd5b5035919050565b60005b83811015613dce578181015183820152602001613db6565b83811115612c025750506000910152565b60008151808452613df7816020860160208601613db3565b601f01601f19169290920160200192915050565b602081526000612d826020830184613ddf565b60008060408385031215613e3157600080fd5b613e3a83613d63565b946020939093013593505050565b600080600060608486031215613e5d57600080fd5b613e6684613d63565b9250613e7460208501613d63565b9150604084013590509250925092565b60008060408385031215613e9757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613ede57835183529284019291840191600101613ec2565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115613f1b57613f1b613eea565b604051601f8501601f19908116603f01168101908282118183101715613f4357613f43613eea565b81604052809350858152868686011115613f5c57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613f8857600080fd5b813567ffffffffffffffff811115613f9f57600080fd5b8201601f81018413613fb057600080fd5b6134bb84823560208401613f00565b60008060408385031215613fd257600080fd5b613fdb83613d63565b915061111b60208401613d63565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610d13565b6000806040838503121561403057600080fd5b61403983613d63565b91506020830135801515811461404e57600080fd5b809150509250929050565b6000806000806080858703121561406f57600080fd5b61407885613d63565b935061408660208601613d63565b925060408501359150606085013567ffffffffffffffff8111156140a957600080fd5b8501601f810187136140ba57600080fd5b6140c987823560208401613f00565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015613ede5761412b83855180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b92840192608092909201916001016140f1565b60008083601f84011261415057600080fd5b50813567ffffffffffffffff81111561416857600080fd5b6020830191508360208260051b850101111561418357600080fd5b9250929050565b600080600080604085870312156141a057600080fd5b843567ffffffffffffffff808211156141b857600080fd5b6141c48883890161413e565b909650945060208701359150808211156141dd57600080fd5b506141ea8782880161413e565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561422057614220613cb9565b5060010190565b60008282101561423957614239613cb9565b500390565b600181811c9082168061425257607f821691505b6020821081141561427357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526027908201527f455243373231204d61726b6574706c6163653a20546f6b656e206973206e6f74604082015266081b1a5cdd195960ca1b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6020808252602a90820152600080516020614656833981519152604082015269736665722066756e647360b01b606082015260800190565b6020808252601a908201527f596f7520646f6e2774206861766520616e792072657761726473000000000000604082015260600190565b6020808252602b908201527f4f6e6c7920746865206f776e6572206f66206120746f6b656e2063616e20636c60408201526a61696d207265776172647360a81b606082015260800190565b6020808252602b908201527f455243373231204d61726b6574706c6163653a2043616c6c6572206973206e6f60408201526a3a103a34329037bbb732b960a91b606082015260800190565b6000845160206144ab8285838a01613db3565b8551918401916144be8184848a01613db3565b8554920191600090600181811c90808316806144db57607f831692505b8583108114156144f957634e487b7160e01b85526022600452602485fd5b80801561450d576001811461451e5761454b565b60ff1985168852838801955061454b565b60008b81526020902060005b858110156145435781548a82015290840190880161452a565b505083880195505b50939b9a5050505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561458457600080fd5b813560ff81168114612d8257600080fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826145f6576145f6613ce7565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061462e90830184613ddf565b9695505050505050565b60006020828403121561464a57600080fd5b8151612d8281613d3056fe41564158205472616e73616374696f6e3a204661696c656420746f207472616ea2646970667358221220231cfdd045f4645ddf8d5ffcdc4d6bf17dfb7d7add3fff60b2a9098ae989e60464736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d5731337876337974445175697a647251425241586836546b51764d5558797131633941375167633378333239000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d5731337876337974445175697a647251425241586836546b51764d5558797131633941375167633378333239000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _initUnrevealedURI (string): QmW13xv3ytDQuizdrQBRAXh6TkQvMUXyq1c9A7Qgc3x329
Arg [1] : _initCommunityAddress (address): 0x4057f6d0c49358b88a318dcb230f7d3140fa78de
Arg [2] : _initDonationAddress (address): 0x1070aa92aa80d0bdf14692352726bc22cd8d9130

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de
Arg [2] : 0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130
Arg [3] : 000000000000000000000000000000000000000000000000000000000000002e
Arg [4] : 516d5731337876337974445175697a647251425241586836546b51764d555879
Arg [5] : 7131633941375167633378333239000000000000000000000000000000000000


Deployed ByteCode Sourcemap

12214:16168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27962:21;27986:16;:6;1612:14;;1527:104;27986:16;28013:33;;27962:40;;-1:-1:-1;;;;28013:33:0;;;;:41;;28050:4;28013:41;:62;;;;;28074:1;28058:13;:17;28013:62;28009:366;;;28083:34;28176:13;28161:12;;28148:9;;28133:12;;:24;;;;:::i;:::-;28120:38;;:9;:38;:::i;:::-;:53;;;;:::i;:::-;:69;;;;:::i;:::-;28083:106;-1:-1:-1;28195:24:0;28222:42;28251:13;28083:106;28222:42;:::i;:::-;28195:69;;28293:26;28272:17;;:47;;;;;;;:::i;:::-;;;;;;;;28353:16;28327:22;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;28009:366:0;27957:422;12214:16168;;;;;14448:189;;;;;;;;;;-1:-1:-1;14448:189:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;14448:189:0;;;;;;;;25126:285;;;;;;;;;;-1:-1:-1;25126:285:0;;;;;:::i;:::-;;:::i;:::-;;;1802:25:1;;;1790:2;1775:18;25126:285:0;1656:177:1;25645:227:0;;;;;;;;;;-1:-1:-1;25645:227:0;;;;;:::i;:::-;;:::i;6513:90::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16546:146::-;;;;;;;;;;;;;:::i;:::-;;7467:205;;;;;;;;;;-1:-1:-1;7467:205:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2938:32:1;;;2920:51;;2908:2;2893:18;7467:205:0;2774:203:1;7115:347:0;;;;;;;;;;-1:-1:-1;7115:347:0;;;;;:::i;:::-;;:::i;12568:19::-;;;;;;;;;;;;;;;;24192:85;;;;;;;;;;;;;:::i;26293:99::-;;;;;;;;;;-1:-1:-1;26293:99:0;;;;;:::i;:::-;;:::i;12746:26::-;;;;;;;;;;;;;;;;7987:284;;;;;;;;;;-1:-1:-1;7987:284:0;;;;;:::i;:::-;;:::i;12807:31::-;;;;;;;;;;;;;;;;20612:223;;;;;;;;;;-1:-1:-1;20612:223:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4019:32:1;;;4001:51;;4083:2;4068:18;;4061:34;;;;3974:18;20612:223:0;3827:274:1;26783:87:0;;;;;;;;;;-1:-1:-1;26783:87:0;;;;;:::i;:::-;;:::i;12654:33::-;;;;;;;;;;;;;;;;21877:1315;;;;;;:::i;:::-;;:::i;19275:753::-;;;;;;;;;;;;;:::i;18042:627::-;;;:::i;8276:142::-;;;;;;;;;;-1:-1:-1;8276:142:0;;;;;:::i;:::-;;:::i;18674:596::-;;;;;;:::i;:::-;;:::i;26875:77::-;;;;;;;;;;-1:-1:-1;26875:77:0;;;;;:::i;:::-;;:::i;24282:551::-;;;;;;;;;;-1:-1:-1;24282:551:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26509:75::-;;;;;;;;;;-1:-1:-1;26509:75:0;;;;;:::i;:::-;;:::i;12619:29::-;;;;;;;;;;;;;;;;26957:103;;;;;;;;;;-1:-1:-1;26957:103:0;;;;;:::i;:::-;;:::i;16697:117::-;;;;;;;;;;-1:-1:-1;16697:117:0;;;;;:::i;:::-;;:::i;12429:45::-;;;;;;;;;;-1:-1:-1;12429:45:0;;;;-1:-1:-1;;;12429:45:0;;;;;;12376:20;;;;;;;;;;-1:-1:-1;12376:20:0;;;;-1:-1:-1;;;12376:20:0;;;;;;25879:93;;;;;;;;;;-1:-1:-1;25879:93:0;;;;;:::i;:::-;;:::i;26685:::-;;;;;;;;;;-1:-1:-1;26685:93:0;;;;;:::i;:::-;;:::i;12354:18::-;;;;;;;;;;-1:-1:-1;12354:18:0;;;;-1:-1:-1;;;12354:18:0;;;;;;6287:221;;;;;;;;;;-1:-1:-1;6287:221:0;;;;;:::i;:::-;;:::i;26199:89::-;;;;;;;;;;-1:-1:-1;26199:89:0;;;;;:::i;:::-;;:::i;6088:194::-;;;;;;;;;;-1:-1:-1;6088:194:0;;;;;:::i;:::-;;:::i;27175:193::-;;;;;;;;;;-1:-1:-1;27175:193:0;;;;;:::i;:::-;;:::i;25416:224::-;;;;;;;;;;-1:-1:-1;25416:224:0;;;;;:::i;:::-;;:::i;23545:255::-;;;;;;;;;;-1:-1:-1;23545:255:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16819:622::-;;;:::i;27065:105::-;;;;;;;;;;-1:-1:-1;27065:105:0;;;;;:::i;:::-;;:::i;4169:77::-;;;;;;;;;;-1:-1:-1;4235:6:0;;-1:-1:-1;;;;;4235:6:0;4169:77;;26397:107;;;;;;;;;;-1:-1:-1;26397:107:0;;;;;:::i;:::-;;:::i;16375:70::-;;;;;;;;;;;;;:::i;6608:94::-;;;;;;;;;;;;;:::i;23197:252::-;;;;;;;;;;-1:-1:-1;23197:252:0;;;;;:::i;:::-;;:::i;:::-;;;;6969:14:1;;6962:22;6944:41;;7016:2;7001:18;;6994:34;;;;6917:18;23197:252:0;6776:258:1;14644:1014:0;;;;;;:::i;:::-;;:::i;12400:25::-;;;;;;;;;;-1:-1:-1;12400:25:0;;;;-1:-1:-1;;;12400:25:0;;;;;;16450:91;;;;;;;;;;;;;:::i;7677:146::-;;;;;;;;;;-1:-1:-1;7677:146:0;;;;;:::i;:::-;;:::i;20840:603::-;;;;;;;;;;-1:-1:-1;20840:603:0;;;;;:::i;:::-;;:::i;21448:424::-;;;;;;;;;;-1:-1:-1;21448:424:0;;;;;:::i;:::-;;:::i;26099:95::-;;;;;;;;;;-1:-1:-1;26099:95:0;;;;;:::i;:::-;;:::i;24838:283::-;;;;;;;;;;-1:-1:-1;24838:283:0;;;;;:::i;:::-;;:::i;20247:358::-;;;:::i;8423:272::-;;;;;;;;;;-1:-1:-1;8423:272:0;;;;;:::i;:::-;;:::i;12842:32::-;;;;;;;;;;;;;;;;23805:382;;;;;;;;;;-1:-1:-1;23805:382:0;;;;;:::i;:::-;;:::i;12591:24::-;;;;;;;;;;;;;;;;26589:91;;;;;;;;;;-1:-1:-1;26589:91:0;;;;;:::i;:::-;;:::i;20033:209::-;;;:::i;12878:36::-;;;;;;;;;;;;;;;;12918:37;;;;;;;;;;;;;;;;12776:27;;;;;;;;;;;;;;;;7828:154;;;;;;;;;;-1:-1:-1;7828:154:0;;;;;:::i;:::-;;:::i;12693:24::-;;;;;;;;;;;;;;;;17446:591;;;;;;:::i;:::-;;:::i;23454:86::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4363:188::-;;;;;;;;;;-1:-1:-1;4363:188:0;;;;;:::i;:::-;;:::i;15663:705::-;;;;;;;;;;-1:-1:-1;15663:705:0;;;;;:::i;:::-;;:::i;12721:19::-;;;;;;;;;;;;;;;;25977:117;;;;;;;;;;-1:-1:-1;25977:117:0;;;;;:::i;:::-;;:::i;14448:189::-;14524:4;-1:-1:-1;;;;;;14542:50:0;;-1:-1:-1;;;14542:50:0;;:90;;;14596:36;14620:11;14596:23;:36::i;:::-;14535:97;14448:189;-1:-1:-1;;14448:189:0:o;25126:285::-;25198:7;25212:23;25238;25252:8;25238:13;:23::i;:::-;25212:49;;25266:13;25295:9;25290:98;25314:6;:13;25310:1;:17;25290:98;;;25349:33;25372:6;25379:1;25372:9;;;;;;;;:::i;:::-;;;;;;;25349:22;:33::i;:::-;25340:42;;;;:::i;:::-;;-1:-1:-1;25329:3:0;;;;:::i;:::-;;;;25290:98;;;-1:-1:-1;25401:5:0;25126:285;-1:-1:-1;;;25126:285:0:o;25645:227::-;25714:7;25756;25736:16;:6;1612:14;;1527:104;25736:16;:27;;25728:67;;;;-1:-1:-1;;;25728:67:0;;10393:2:1;25728:67:0;;;10375:21:1;10432:2;10412:18;;;10405:30;10471:29;10451:18;;;10444:57;10518:18;;25728:67:0;;;;;;;;;25829:38;;;;:29;:38;;;;;;25809:17;;:58;;25829:38;25809:58;:::i;6513:90::-;6566:13;6593:5;6586:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6513:90;:::o;16546:146::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16654:33:::1;::::0;;-1:-1:-1;;;;16617:70:0;::::1;-1:-1:-1::0;;;16654:33:0;;;::::1;;;16653:34;16617:70:::0;;::::1;;::::0;;16546:146::o;7467:205::-;7542:7;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;7556:73;;;;-1:-1:-1;;;7556:73:0;;11625:2:1;7556:73:0;;;11607:21:1;11664:2;11644:18;;;11637:30;11703:34;11683:18;;;11676:62;-1:-1:-1;;;11754:18:1;;;11747:42;11806:19;;7556:73:0;11423:408:1;7556:73:0;-1:-1:-1;7643:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;7643:24:0;;7467:205::o;7115:347::-;7190:13;7206:23;7221:7;7206:14;:23::i;:::-;7190:39;;7248:5;-1:-1:-1;;;;;7242:11:0;:2;-1:-1:-1;;;;;7242:11:0;;;7234:57;;;;-1:-1:-1;;;7234:57:0;;12038:2:1;7234:57:0;;;12020:21:1;12077:2;12057:18;;;12050:30;12116:34;12096:18;;;12089:62;-1:-1:-1;;;12167:18:1;;;12160:31;12208:19;;7234:57:0;11836:397:1;7234:57:0;3828:10;-1:-1:-1;;;;;7306:21:0;;;;:62;;-1:-1:-1;7331:37:0;7348:5;3828:10;7828:154;:::i;7331:37::-;7298:131;;;;-1:-1:-1;;;7298:131:0;;12440:2:1;7298:131:0;;;12422:21:1;12479:2;12459:18;;;12452:30;12518:34;12498:18;;;12491:62;12589:26;12569:18;;;12562:54;12633:19;;7298:131:0;12238:420:1;7298:131:0;7436:21;7445:2;7449:7;7436:8;:21::i;:::-;7185:277;7115:347;;:::o;24192:85::-;24235:7;24256:16;:6;1612:14;;1527:104;24256:16;24249:23;;24192:85;:::o;26293:99::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26361:14:::1;:26:::0;26293:99::o;7987:284::-;8136:41;3828:10;8169:7;8136:18;:41::i;:::-;8128:103;;;;-1:-1:-1;;;8128:103:0;;;;;;;:::i;:::-;8238:28;8248:4;8254:2;8258:7;8238:9;:28::i;20612:223::-;20793:12;;20781:9;;20744:4;;20679:16;;13401:5;;20781:24;;;:::i;:::-;20772:34;;:5;:34;:::i;:::-;:58;;;;:::i;:::-;20756:74;;20612:223;;;;;:::o;26783:87::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26845:9:::1;:20:::0;26783:87::o;21877:1315::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;21952:13:::1;::::0;21991:22:::1;22005:7:::0;21991:13:::1;:22::i;:::-;21951:62;;;;22026:8;22018:60;;;;-1:-1:-1::0;;;22018:60:0::1;;;;;;;:::i;:::-;22085:22;22110:8;22119:12;22110:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;22085:47:::1;::::0;;::::1;::::0;::::1;::::0;;22110:22:::1;::::0;;::::1;::::0;;::::1;22085:47:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;22085:47:0::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;22165:12:0::1;3828:10:::0;;3755:88;22165:12:::1;-1:-1:-1::0;;;;;22147:30:0::1;:7;:14;;;-1:-1:-1::0;;;;;22147:30:0::1;;;22139:110;;;::::0;-1:-1:-1;;;22139:110:0;;14051:2:1;22139:110:0::1;::::0;::::1;14033:21:1::0;14090:2;14070:18;;;14063:30;14129:34;14109:18;;;14102:62;14200:34;14180:18;;;14173:62;-1:-1:-1;;;14251:19:1;;;14244:34;14295:19;;22139:110:0::1;13849:471:1::0;22139:110:0::1;22275:7;:13;;;22262:9;:26;;22254:77;;;::::0;-1:-1:-1;;;22254:77:0;;14527:2:1;22254:77:0::1;::::0;::::1;14509:21:1::0;14566:2;14546:18;;;14539:30;14605:34;14585:18;;;14578:62;-1:-1:-1;;;14656:18:1;;;14649:36;14702:19;;22254:77:0::1;14325:402:1::0;22254:77:0::1;22338:22;13401:5;22375:9;;22363;:21;;;;:::i;:::-;:45;;;;:::i;:::-;22338:70;;22413:34;22521:1;22502:16;:6;1612:14:::0;;1527:104;22502:16:::1;:20;;;;:::i;:::-;13401:5;22462:12;;22450:9;:24;;;;:::i;:::-;:48;;;;:::i;:::-;:73;;;;:::i;:::-;22413:110;;22528:24;22604:1;22585:16;:6;1612:14:::0;;1527:104;22585:16:::1;:20;;;;:::i;:::-;22555:51;::::0;:26;:51:::1;:::i;:::-;22640:8;22649:15:::0;;22528:78;;-1:-1:-1;22640:8:0;22649:19:::1;::::0;22667:1:::1;::::0;22649:19:::1;:::i;:::-;22640:29;;;;;;;;:::i;:::-;;;;;;;;;;;22615:8;22624:12;22615:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:54;;:22:::1;::::0;;::::1;;:54:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;22615:54:0::1;-1:-1:-1::0;;;;;22615:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;22674:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;22674:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;22674:14:0::1;::::0;;::::1;;::::0;;;;;22697:17:::1;:47:::0;;22718:26;;22674:14;22697:47:::1;::::0;22718:26;;22697:47:::1;:::i;:::-;::::0;;;-1:-1:-1;;22749:38:0::1;::::0;;;:29:::1;:38;::::0;;;;:68;;22791:26;;22749:38;:68:::1;::::0;22791:26;;22749:68:::1;:::i;:::-;;;;;;;;22850:16;22824:22;;:42;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;3828:10:0;;-1:-1:-1;;;;;;22880:59:0::1;22899:7;:14;;;-1:-1:-1::0;;;;;22880:59:0::1;22890:7;22880:59;22929:9;22880:59;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;22880:59:0::1;;;;;;;;22948:56;22962:7;:14;;;22978:12;3828:10:::0;;3755:88;22978:12:::1;22992:7;22948:56;;;;;;;;;;;::::0;:13:::1;:56::i;:::-;23038:14;::::0;::::1;::::0;23012:12:::1;::::0;-1:-1:-1;;;;;23030:28:0::1;23080:33;23097:16:::0;23080:14;:33:::1;:::i;:::-;23067:47;::::0;:9:::1;:47;:::i;:::-;23030:90;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23011:109;;;23133:7;23125:62;;;;-1:-1:-1::0;;;23125:62:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;;;;;;21877:1315:0:o;19275:753::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;19317:20:::1;19364:22;;19340:21;;:46;;;;:::i;:::-;19317:69:::0;-1:-1:-1;19391:25:0::1;19465:3;19420:36;19317:69:::0;19420:21:::1;:36;:::i;:::-;19419:43;::::0;19460:2:::1;19419:43;:::i;:::-;:49;;;;:::i;:::-;19503:16;::::0;19391:77;;-1:-1:-1;19476:13:0::1;::::0;-1:-1:-1;;;;;19503:16:0::1;19534:21;19391:77:::0;19554:1:::1;19534:21;:::i;:::-;19495:66;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19475:86;;;19574:8;19566:84;;;::::0;-1:-1:-1;;;19566:84:0;;15687:2:1;19566:84:0::1;::::0;::::1;15669:21:1::0;15726:2;15706:18;;;15699:30;-1:-1:-1;;;;;;;;;;;15745:18:1;;;15738:62;15836:33;15816:18;;;15809:61;15887:19;;19566:84:0::1;15485:427:1::0;19566:84:0::1;19685:15;::::0;19677:61:::1;::::0;19658:13:::1;::::0;-1:-1:-1;;;;;19685:15:0::1;::::0;19715:17;;19658:13;19677:61;19658:13;19677:61;19715:17;19685:15;19677:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19657:81;;;19751:8;19743:83;;;::::0;-1:-1:-1;;;19743:83:0;;16119:2:1;19743:83:0::1;::::0;::::1;16101:21:1::0;16158:2;16138:18;;;16131:30;-1:-1:-1;;;;;;;;;;;16177:18:1;;;16170:62;16268:32;16248:18;;;16241:60;16318:19;;19743:83:0::1;15917:426:1::0;19743:83:0::1;19834:13;19861:7;4235:6:::0;;-1:-1:-1;;;;;4235:6:0;;4169:77;19861:7:::1;-1:-1:-1::0;;;;;19853:21:0::1;19923:4;;19908:12;:19;;;;:::i;:::-;19883:45;::::0;:21:::1;:45;:::i;:::-;19853:81;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19833:101;;;19947:8;19939:84;;;::::0;-1:-1:-1;;;19939:84:0;;16550:2:1;19939:84:0::1;::::0;::::1;16532:21:1::0;16589:2;16569:18;;;16562:30;-1:-1:-1;;;;;;;;;;;16608:18:1;;;16601:62;16699:33;16679:18;;;16672:61;16750:19;;19939:84:0::1;16348:427:1::0;19939:84:0::1;19312:716;;;;;19275:753::o:0;18042:627::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;18104:14:::1;18121:38;3828:10:::0;25126:285;:::i;18121:38::-:1;18104:55;;18181:1;18172:6;:10;18164:49;;;;-1:-1:-1::0;;;18164:49:0::1;;;;;;;:::i;:::-;18222:23;18248:27;3828:10:::0;24282:551;:::i;18248:27::-:1;18222:53;;18287:9;18282:149;18306:6;:13;18302:1;:17;18282:149;;;18332:15;18350:6;18357:1;18350:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;18408:17:::1;::::0;18367:38:::1;::::0;;;:29:::1;:38:::0;;;;;;:58;-1:-1:-1;18321:3:0;::::1;::::0;::::1;:::i;:::-;;;;18282:149;;;;18463:6;18437:22;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;18497:47:0::1;::::0;18479:12:::1;::::0;3828:10;;18532:6;;18479:12;18497:47;18479:12;18497:47;18532:6;3828:10;18497:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18478:66;;;18557:7;18549:62;;;;-1:-1:-1::0;;;18549:62:0::1;;;;;;;:::i;:::-;18662:1;3828:10:::0;18640:12:::1;-1:-1:-1::0;;;;;18625:39:0::1;;18654:6;18625:39;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;18625:39:0::1;;;;;;;;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;18042:627:0:o;8276:142::-;8374:39;8391:4;8397:2;8401:7;8374:39;;;;;;;;;;;;:16;:39::i;18674:596::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;18757:13:::1;18773:16;18781:7:::0;18773::::1;:16::i;:::-;18757:32:::0;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;18802:21:0;::::1;;18794:77;;;;-1:-1:-1::0;;;18794:77:0::1;;;;;;;:::i;:::-;18878:14;18895:31;18918:7;18895:22;:31::i;:::-;18878:48;;18948:1;18939:6;:10;18931:49;;;;-1:-1:-1::0;;;18931:49:0::1;;;;;;;:::i;:::-;19015:6;18989:22;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;19067:17:0::1;::::0;19026:38:::1;::::0;;;:29:::1;:38;::::0;;;;;:58;;;;19112:40;;-1:-1:-1;;;;;19112:19:0;::::1;::::0;19140:6;;19026:38;19112:40;19026:38;19112:40;19140:6;19112:19;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19093:59;;;19165:7;19157:62;;;;-1:-1:-1::0;;;19157:62:0::1;;;;;;;:::i;:::-;19263:1;19248:5;-1:-1:-1::0;;;;;19233:32:0::1;;19255:6;19233:32;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;19233:32:0::1;;;;;;;;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;;18674:596:0:o;26875:77::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26932:4:::1;:15:::0;26875:77::o;24282:551::-;24343:16;24366:23;24392:19;24402:8;24392:9;:19::i;:::-;24366:45;;24418:30;24465:15;24451:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24451:30:0;-1:-1:-1;24418:63:0;-1:-1:-1;24511:1:0;24490:18;24551:249;24576:15;24558;:33;:60;;;;;24609:9;;24595:10;:23;;24558:60;24551:249;;;24626:13;24642:19;24650:10;24642:7;:19::i;:::-;24626:35;;24682:8;-1:-1:-1;;;;;24673:17:0;:5;-1:-1:-1;;;;;24673:17:0;;24669:106;;;24732:10;24699:13;24713:15;24699:30;;;;;;;;:::i;:::-;;;;;;;;;;:43;24751:17;;;;:::i;:::-;;;;24669:106;24782:12;;;;:::i;:::-;;;;24620:180;24551:249;;;-1:-1:-1;24815:13:0;;24282:551;-1:-1:-1;;;;24282:551:0:o;26509:75::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26565:4:::1;:14:::0;26509:75::o;26957:103::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27027:16:::1;:28:::0;26957:103::o;16697:117::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16763:8:::1;:15:::0;;-1:-1:-1;;;;16763:15:0::1;-1:-1:-1::0;;;16763:15:0::1;::::0;;16785:24:::1;16796:12:::0;16785:10:::1;:24::i;:::-;16697:117:::0;:::o;25879:93::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;25947:20;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;;25879:93:::0;:::o;26685:::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26750:12:::1;:23:::0;26685:93::o;6287:221::-;6358:7;6388:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6388:16:0;6419:19;6411:73;;;;-1:-1:-1;;;6411:73:0;;17749:2:1;6411:73:0;;;17731:21:1;17788:2;17768:18;;;17761:30;17827:34;17807:18;;;17800:62;-1:-1:-1;;;17878:18:1;;;17871:39;17927:19;;6411:73:0;17547:405:1;26199:89:0;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26262:9:::1;:21:::0;26199:89::o;6088:194::-;6159:7;-1:-1:-1;;;;;6181:19:0;;6173:74;;;;-1:-1:-1;;;6173:74:0;;18159:2:1;6173:74:0;;;18141:21:1;18198:2;18178:18;;;18171:30;18237:34;18217:18;;;18210:62;-1:-1:-1;;;18288:18:1;;;18281:40;18338:19;;6173:74:0;17957:406:1;6173:74:0;-1:-1:-1;;;;;;6261:16:0;;;;;:9;:16;;;;;;;6088:194::o;27175:193::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27284:16:::1;:38:::0;;-1:-1:-1;;;;;27284:38:0;;::::1;-1:-1:-1::0;;;;;;27284:38:0;;::::1;;::::0;;;27327:15:::1;:36:::0;;;;;::::1;::::0;::::1;;::::0;;27175:193::o;25416:224::-;25484:7;25526;25506:16;:6;1612:14;;1527:104;25506:16;:27;;25498:67;;;;-1:-1:-1;;;25498:67:0;;10393:2:1;25498:67:0;;;10375:21:1;10432:2;10412:18;;;10405:30;10471:29;10451:18;;;10444:57;10518:18;;25498:67:0;10191:351:1;25498:67:0;25598:37;;;;:28;:37;;;;;;25579:16;;:56;;25598:37;25579:56;:::i;23545:255::-;23611:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23611:14:0;23633:13;23648:20;23672:22;23686:7;23672:13;:22::i;:::-;23632:62;;;;23707:8;23699:60;;;;-1:-1:-1;;;23699:60:0;;;;;;;:::i;:::-;23773:8;23782:12;23773:22;;;;;;;;:::i;:::-;;;;;;;;;;23766:29;;;;;;;;23773:22;;;;;;;23766:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23766:29:0;;;;;;;;;;;;;;;23545:255;-1:-1:-1;;;;23545:255:0:o;16819:622::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;16880:14:::1;16897:37;3828:10:::0;24838:283;:::i;16897:37::-:1;16880:54;;16956:1;16947:6;:10;16939:49;;;;-1:-1:-1::0;;;16939:49:0::1;;;;;;;:::i;:::-;16997:23;17023:27;3828:10:::0;24282:551;:::i;17023:27::-:1;16997:53;;17062:9;17057:147;17081:6;:13;17077:1;:17;17057:147;;;17107:15;17125:6;17132:1;17125:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;17182:16:::1;::::0;17142:37:::1;::::0;;;:28:::1;:37:::0;;;;;;:56;-1:-1:-1;17096:3:0;::::1;::::0;::::1;:::i;:::-;;;;17057:147;;;;17235:6;17210:21;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17269:47:0::1;::::0;17251:12:::1;::::0;3828:10;;17304:6;;17251:12;17269:47;17251:12;17269:47;17304:6;3828:10;17269:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17250:66;;;17329:7;17321:62;;;;-1:-1:-1::0;;;17321:62:0::1;;;;;;;:::i;:::-;17434:1;3828:10:::0;17412:12:::1;3755:88:::0;27065:105;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27136:17:::1;:29:::0;27065:105::o;26397:107::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26469:18:::1;:30:::0;26397:107::o;16375:70::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16434:6:::1;::::0;;-1:-1:-1;;;;16424:16:0;::::1;-1:-1:-1::0;;;16434:6:0;;;::::1;;;16433:7;16424:16:::0;;::::1;;::::0;;16375:70::o;6608:94::-;6663:13;6690:7;6683:14;;;;;:::i;23197:252::-;23257:13;23272;23297:9;23292:153;23316:8;:15;23312:19;;23292:153;;;23371:7;23348:8;23357:1;23348:11;;;;;;;;:::i;:::-;;;;;;;;;;;:19;;;:30;23344:44;;23380:8;;23344:44;23407:4;23396:15;;23425:1;23417:9;;23434:5;;23292:153;23333:3;;;;:::i;:::-;;;;23292:153;;;;23197:252;;;:::o;14644:1014::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;14715:10;;;;;:42:::1;;;14739:18;;14729:6;:28;;14715:42;14707:74;;;::::0;-1:-1:-1;;;14707:74:0;;18570:2:1;14707:74:0::1;::::0;::::1;18552:21:1::0;18609:2;18589:18;;;18582:30;-1:-1:-1;;;18628:18:1;;;18621:49;18687:18;;14707:74:0::1;18368:343:1::0;14707:74:0::1;14788:17;14827:6;14808:16;:6;1612:14:::0;;1527:104;14808:16:::1;:25;;;;:::i;:::-;14788:45;;14861:9;;14848;:22;;14840:60;;;::::0;-1:-1:-1;;;14840:60:0;;18918:2:1;14840:60:0::1;::::0;::::1;18900:21:1::0;18957:2;18937:18;;;18930:30;-1:-1:-1;;;18976:18:1;;;18969:55;19041:18;;14840:60:0::1;18716:349:1::0;14840:60:0::1;14938:14;;14926:9;;:26;;;;:::i;:::-;14913:9;:39;;14905:81;;;::::0;-1:-1:-1;;;14905:81:0;;19272:2:1;14905:81:0::1;::::0;::::1;19254:21:1::0;19311:2;19291:18;;;19284:30;19350:31;19330:18;;;19323:59;19399:18;;14905:81:0::1;19070:353:1::0;14905:81:0::1;15002:6;::::0;-1:-1:-1;;;15002:6:0;::::1;;;15001:7;14993:37;;;::::0;-1:-1:-1;;;14993:37:0;;19630:2:1;14993:37:0::1;::::0;::::1;19612:21:1::0;19669:2;19649:18;;;19642:30;-1:-1:-1;;;19688:18:1;;;19681:47;19745:18;;14993:37:0::1;19428:341:1::0;14993:37:0::1;15063:6;15056:4;;:13;;;;:::i;:::-;15043:9;:26;;15035:57;;;::::0;-1:-1:-1;;;15035:57:0;;19976:2:1;15035:57:0::1;::::0;::::1;19958:21:1::0;20015:2;19995:18;;;19988:30;-1:-1:-1;;;20034:18:1;;;20027:48;20092:18;;15035:57:0::1;19774:342:1::0;15035:57:0::1;15101:23;15133:18:::0;15154:16:::1;:6;1612:14:::0;;1527:104;15154:16:::1;15133:37:::0;-1:-1:-1;15177:31:0::1;3828:10:::0;15201:6:::1;15177:9;:31::i;:::-;15222:9;15217:390;15241:6;15237:1;:10;15217:390;;;15264:14:::0;;15260:257:::1;;15287:33;15382:10;15373:6;13401:5;15335:11;;15323:9;:23;;;;:::i;:::-;:47;;;;:::i;:::-;:56;;;;:::i;:::-;:69;;;;:::i;:::-;15287:105:::0;-1:-1:-1;15420:38:0::1;15448:10:::0;15287:105;15420:38:::1;:::i;:::-;15401:57;::::0;;::::1;:::i;:::-;;;15485:25;15465:16;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;15260:257:0::1;15524:12:::0;::::1;::::0;::::1;:::i;:::-;15585:16;::::0;15542:40:::1;::::0;;;:28:::1;:40;::::0;;;;:59;15524:12;-1:-1:-1;15249:3:0;;-1:-1:-1;15249:3:0::1;::::0;::::1;:::i;:::-;;;;15217:390;;;;15638:15;15613:21;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;4815:1:0;5077:7;:22;-1:-1:-1;;;;14644:1014:0:o;16450:91::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16523:13:::1;::::0;;-1:-1:-1;;;;16506:30:0;::::1;-1:-1:-1::0;;;16523:13:0;;;::::1;;;16522:14;16506:30:::0;;::::1;;::::0;;16450:91::o;7677:146::-;7766:52;3828:10;7799:8;7809;7766:18;:52::i;20840:603::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;20928:13:::1;::::0;-1:-1:-1;;;20928:13:0;::::1;;;20920:77;;;::::0;-1:-1:-1;;;20920:77:0;;20323:2:1;20920:77:0::1;::::0;::::1;20305:21:1::0;20362:2;20342:18;;;20335:30;20401:34;20381:18;;;20374:62;-1:-1:-1;;;20452:18:1;;;20445:49;20511:19;;20920:77:0::1;20121:415:1::0;20920:77:0::1;21018:1;21010:5;:9;21002:63;;;::::0;-1:-1:-1;;;21002:63:0;;20743:2:1;21002:63:0::1;::::0;::::1;20725:21:1::0;20782:2;20762:18;;;20755:30;20821:34;20801:18;;;20794:62;-1:-1:-1;;;20872:18:1;;;20865:39;20921:19;;21002:63:0::1;20541:405:1::0;21002:63:0::1;3828:10:::0;21078:16:::1;21086:7:::0;21078::::1;:16::i;:::-;-1:-1:-1::0;;;;;21078:32:0::1;;21070:88;;;;-1:-1:-1::0;;;21070:88:0::1;;;;;;;:::i;:::-;21166:13;21185:22;21199:7;21185:13;:22::i;:::-;21165:42;;;21221:8;21220:9;21212:65;;;::::0;-1:-1:-1;;;21212:65:0;;21565:2:1;21212:65:0::1;::::0;::::1;21547:21:1::0;21604:2;21584:18;;;21577:30;21643:34;21623:18;;;21616:62;-1:-1:-1;;;21694:18:1;;;21687:41;21745:19;;21212:65:0::1;21363:407:1::0;21212:65:0::1;21284:19;21306:54;;;;;;;;21314:7;21306:54;;;;21323:5;21306:54;;;;21330:12;3828:10:::0;;3755:88;21330:12:::1;-1:-1:-1::0;;;;;21306:54:0;;::::1;::::0;;21344:15:::1;21306:54;::::0;;::::1;::::0;21367:8:::1;:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;21367:19:0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;;;;;21367:19:0::1;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;21398:40:0::1;21409:7;21398:40;21432:5;21398:40;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;21448:424:0;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;21516:13:::1;::::0;21555:22:::1;21569:7:::0;21555:13:::1;:22::i;:::-;21515:62;;;;21592:8;21584:60;;;;-1:-1:-1::0;;;21584:60:0::1;;;;;;;:::i;:::-;3828:10:::0;-1:-1:-1;;;;;21657:45:0::1;:8;21666:12;21657:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:29:::1;:22;::::0;;::::1;;:29;::::0;-1:-1:-1;;;;;21657:29:0::1;:45;21649:101;;;;-1:-1:-1::0;;;21649:101:0::1;;;;;;;:::i;:::-;21782:8;21791:15:::0;;:19:::1;::::0;21809:1:::1;::::0;21791:19:::1;:::i;:::-;21782:29;;;;;;;;:::i;:::-;;;;;;;;;;;21757:8;21766:12;21757:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:54;;:22:::1;::::0;;::::1;;:54:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;21757:54:0::1;-1:-1:-1::0;;;;;21757:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;21816:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;21816:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;21816:14:0::1;::::0;;::::1;;::::0;;;;;21842:25:::1;::::0;21859:7;;21842:25:::1;::::0;::::1;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;21448:424:0:o;26099:95::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26168:21;;::::1;::::0;:9:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;24838:283::-:0;24909:7;24923:23;24949;24963:8;24949:13;:23::i;:::-;24923:49;;24977:13;25006:9;25001:97;25025:6;:13;25021:1;:17;25001:97;;;25060:32;25082:6;25089:1;25082:9;;;;;;;;:::i;:::-;;;;;;;25060:21;:32::i;:::-;25051:41;;;;:::i;:::-;;-1:-1:-1;25040:3:0;;;;:::i;:::-;;;;25001:97;;20247:358;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;20304:21:::1;20328:16;:6;1612:14:::0;;1527:104;20328:16:::1;20304:40:::0;-1:-1:-1;20351:29:0::1;20383:25;20304:40:::0;20383:9:::1;:25;:::i;:::-;20351:57:::0;-1:-1:-1;20413:19:0::1;20435:37;20459:13:::0;20351:57;20435:37:::1;:::i;:::-;20413:59;;20499:21;20479:16;;:41;;;;;;;:::i;:::-;;;;;;;;20550:11;20525:21;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20573:27:0::1;::::0;20590:9:::1;1802:25:1::0;;20573:27:0::1;::::0;1790:2:1;1775:18;20573:27:0::1;;;;;;;20299:306;;;20247:358::o:0;8423:272::-;8549:41;3828:10;8582:7;8549:18;:41::i;:::-;8541:103;;;;-1:-1:-1;;;8541:103:0;;;;;;;:::i;:::-;8651:39;8665:4;8671:2;8675:7;8684:5;8651:13;:39::i;:::-;8423:272;;;;:::o;23805:382::-;9028:4;9046:16;;;:7;:16;;;;;;23869:13;;-1:-1:-1;;;;;9046:16:0;23889:76;;;;-1:-1:-1;;;23889:76:0;;21977:2:1;23889:76:0;;;21959:21:1;22016:2;21996:18;;;21989:30;22055:34;22035:18;;;22028:62;-1:-1:-1;;;22106:18:1;;;22099:45;22161:19;;23889:76:0;21775:411:1;23889:76:0;23977:8;;-1:-1:-1;;;23977:8:0;;;;23972:35;;23994:13;23987:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23805:382;;;:::o;23972:35::-;24014:28;24045:10;:8;:10::i;:::-;24014:41;;24100:1;24075:14;24069:28;:32;:113;;;;;;;;;;;;;;;;;24129:14;24145:18;:7;:16;:18::i;:::-;24165:9;24112:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24069:113;24062:120;23805:382;-1:-1:-1;;;23805:382:0:o;26589:91::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26653:11:::1;:22:::0;26589:91::o;20033:209::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;20093:12:::1;20119:7;4235:6:::0;;-1:-1:-1;;;;;4235:6:0;;4169:77;20119:7:::1;-1:-1:-1::0;;;;;20111:21:0::1;20141;20111:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20092:76;;;20183:7;20175:62;;;;-1:-1:-1::0;;;20175:62:0::1;;;;;;;:::i;7828:154::-:0;-1:-1:-1;;;;;7942:25:0;;;7924:4;7942:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7828:154::o;17446:591::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;17528:13:::1;17544:16;17552:7:::0;17544::::1;:16::i;:::-;17528:32:::0;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;17573:21:0;::::1;;17565:77;;;;-1:-1:-1::0;;;17565:77:0::1;;;;;;;:::i;:::-;17649:14;17666:30;17688:7;17666:21;:30::i;:::-;17649:47;;17718:1;17709:6;:10;17701:49;;;;-1:-1:-1::0;;;17701:49:0::1;;;;;;;:::i;:::-;17784:6;17759:21;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17835:16:0::1;::::0;17795:37:::1;::::0;;;:28:::1;:37;::::0;;;;;:56;;;;17879:40;;-1:-1:-1;;;;;17879:19:0;::::1;::::0;17907:6;;17795:37;17879:40;17795:37;17879:40;17907:6;17879:19;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17860:59;;;17932:7;17924:62;;;;-1:-1:-1::0;;;17924:62:0::1;;;;;;;:::i;:::-;18030:1;18015:5;-1:-1:-1::0;;;;;18000:32:0::1;;18022:6;18000:32;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;23454:86:0;23497:16;23527:8;23520:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23520:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23454:86;:::o;4363:188::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4446:22:0;::::1;4438:73;;;::::0;-1:-1:-1;;;4438:73:0;;24051:2:1;4438:73:0::1;::::0;::::1;24033:21:1::0;24090:2;24070:18;;;24063:30;24129:34;24109:18;;;24102:62;-1:-1:-1;;;24180:18:1;;;24173:36;24226:19;;4438:73:0::1;23849:402:1::0;4438:73:0::1;4518:28;4537:8;4518:18;:28::i;15663:705::-:0;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;15765:34;;::::1;15758:42;;;;:::i;:::-;15812:20:::0;;;;;:42:::1;;-1:-1:-1::0;15836:18:0;;;15812:42:::1;15805:50;;;;:::i;:::-;15864:19;::::0;15888:70:::1;15908:18:::0;;::::1;15888:70;;;15948:7;;15956:1;15948:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15933:25;::::0;::::1;;::::0;::::1;:::i;:::-;::::0;-1:-1:-1;15928:3:0;::::1;::::0;::::1;:::i;:::-;;;;15888:70;;;;16007:9;;15992:11;15973:16;:6;1612:14:::0;;1527:104;15973:16:::1;:30;;;;:::i;:::-;:43;;15965:81;;;::::0;-1:-1:-1;;;15965:81:0;;18918:2:1;15965:81:0::1;::::0;::::1;18900:21:1::0;18957:2;18937:18;;;18930:30;-1:-1:-1;;;18976:18:1;;;18969:55;19041:18;;15965:81:0::1;18716:349:1::0;15965:81:0::1;16060:9;16055:309;16075:20:::0;;::::1;16055:309;;;16108:12;16123:7;;16131:1;16123:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16108:25;;16146:9;16141:218;16165:6;16161:10;;:1;:10;16141:218;;;16185:18;:6;1710:19:::0;;1728:1;1710:19;;;1636:103;16185:18:::1;16212:15;16230:16;:6;1612:14:::0;;1527:104;16230:16:::1;16212:34;;16255:32;16265:9;;16275:1;16265:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16279:7;16255:9;:32::i;:::-;16336:16;::::0;16296:37:::1;::::0;;;:28:::1;:37;::::0;;;;;:56;16173:3;::::1;::::0;::::1;:::i;:::-;;;;16141:218;;;;16102:262;16097:3;;;;;:::i;:::-;;;;16055:309;;;;15753:615;15663:705:::0;;;;:::o;25977:117::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26057:32;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;5827:256::-:0;5928:4;-1:-1:-1;;;;;;5946:40:0;;-1:-1:-1;;;5946:40:0;;:92;;-1:-1:-1;;;;;;;5990:48:0;;-1:-1:-1;;;5990:48:0;5946:92;:132;;;-1:-1:-1;;;;;;;;;;5255:40:0;;;6042:36;5153:147;11003:161;11072:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11072:29:0;-1:-1:-1;;;;;11072:29:0;;;;;;;;:24;;11122:23;11072:24;11122:14;:23::i;:::-;-1:-1:-1;;;;;11113:46:0;;;;;;;;;;;11003:161;;:::o;9086:330::-;9178:4;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;9189:73;;;;-1:-1:-1;;;9189:73:0;;24864:2:1;9189:73:0;;;24846:21:1;24903:2;24883:18;;;24876:30;24942:34;24922:18;;;24915:62;-1:-1:-1;;;24993:18:1;;;24986:42;25045:19;;9189:73:0;24662:408:1;9189:73:0;9269:13;9285:23;9300:7;9285:14;:23::i;:::-;9269:39;;9334:5;-1:-1:-1;;;;;9323:16:0;:7;-1:-1:-1;;;;;9323:16:0;;:51;;;;9367:7;-1:-1:-1;;;;;9343:31:0;:20;9355:7;9343:11;:20::i;:::-;-1:-1:-1;;;;;9343:31:0;;9323:51;:87;;;;9378:32;9395:5;9402:7;9378:16;:32::i;:::-;9315:96;9086:330;-1:-1:-1;;;;9086:330:0:o;10518:480::-;10637:4;-1:-1:-1;;;;;10610:31:0;:23;10625:7;10610:14;:23::i;:::-;-1:-1:-1;;;;;10610:31:0;;10602:81;;;;-1:-1:-1;;;10602:81:0;;25277:2:1;10602:81:0;;;25259:21:1;25316:2;25296:18;;;25289:30;25355:34;25335:18;;;25328:62;-1:-1:-1;;;25406:18:1;;;25399:35;25451:19;;10602:81:0;25075:401:1;10602:81:0;-1:-1:-1;;;;;10696:16:0;;10688:65;;;;-1:-1:-1;;;10688:65:0;;25683:2:1;10688:65:0;;;25665:21:1;25722:2;25702:18;;;25695:30;25761:34;25741:18;;;25734:62;-1:-1:-1;;;25812:18:1;;;25805:34;25856:19;;10688:65:0;25481:400:1;10688:65:0;10760:39;10781:4;10787:2;10791:7;10760:20;:39::i;:::-;10804:29;10821:1;10825:7;10804:8;:29::i;:::-;-1:-1:-1;;;;;10840:15:0;;;;;;:9;:15;;;;;:20;;10859:1;;10840:15;:20;;10859:1;;10840:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10865:13:0;;;;;;:9;:13;;;;;:18;;10882:1;;10865:13;:18;;10882:1;;10865:18;:::i;:::-;;;;-1:-1:-1;;10888:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10888:21:0;-1:-1:-1;;;;;10888:21:0;;;;;;;;;10921:27;;10888:16;;10921:27;;;;;;;7185:277;7115:347;;:::o;8700:259::-;8808:28;8818:4;8824:2;8828:7;8808:9;:28::i;:::-;8851:48;8874:4;8880:2;8884:7;8893:5;8851:22;:48::i;:::-;8843:111;;;;-1:-1:-1;;;8843:111:0;;;;;;;:::i;27752:171::-;27818:9;27813:106;27837:6;27833:1;:10;27813:106;;;27856:18;:6;1710:19;;1728:1;1710:19;;;1636:103;27856:18;27882:31;27892:2;27896:16;:6;1612:14;;1527:104;27896:16;27882:9;:31::i;:::-;27845:3;;;;:::i;:::-;;;;27813:106;;11169:264;11284:8;-1:-1:-1;;;;;11275:17:0;:5;-1:-1:-1;;;;;11275:17:0;;;11267:55;;;;-1:-1:-1;;;11267:55:0;;26507:2:1;11267:55:0;;;26489:21:1;26546:2;26526:18;;;26519:30;26585:27;26565:18;;;26558:55;26630:18;;11267:55:0;26305:349:1;11267:55:0;-1:-1:-1;;;;;11329:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11329:46:0;;;;;;;;;;11387:41;;1235::1;;;11387::0;;1208:18:1;11387:41:0;;;;;;;11169:264;;;:::o;27375:90::-;27426:13;27453:7;27446:14;;;;;:::i;908:413::-;963:13;987:10;983:26;;-1:-1:-1;;999:10:0;;;;;;;;;;;;-1:-1:-1;;;999:10:0;;;;;908:413::o;983:26::-;1031:5;1016:12;1062:54;1069:9;;1062:54;;1086:8;;;;:::i;:::-;;-1:-1:-1;1100:10:0;;-1:-1:-1;1108:2:0;1100:10;;:::i;:::-;;;1062:54;;;1122:19;1154:6;1144:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1144:17:0;;1122:39;;1168:121;1175:10;;1168:121;;1193:11;1203:1;1193:11;;:::i;:::-;;-1:-1:-1;1253:10:0;1261:2;1253:5;:10;:::i;:::-;1240:24;;:2;:24;:::i;:::-;1227:39;;1210:6;1217;1210:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1210:56:0;;;;;;;;-1:-1:-1;1272:11:0;1281:2;1272:11;;:::i;:::-;;;1168:121;;4556:174;4643:6;;;-1:-1:-1;;;;;4656:17:0;;;-1:-1:-1;;;;;;4656:17:0;;;;;;;4685:40;;4643:6;;;4656:17;4643:6;;4685:40;;4624:16;;4685:40;4619:111;4556:174;:::o;9421:101::-;9491:26;9501:2;9505:7;9491:26;;;;;;;;;;;;:9;:26::i;27470:277::-;27567:13;27586:22;27600:7;27586:13;:22::i;:::-;27566:42;;;27622:8;27621:9;27613:75;;;;-1:-1:-1;;;27613:75:0;;26978:2:1;27613:75:0;;;26960:21:1;27017:2;26997:18;;;26990:30;27056:34;27036:18;;;27029:62;-1:-1:-1;;;27107:18:1;;;27100:51;27168:19;;27613:75:0;26776:417:1;27613:75:0;27697:45;7115:347;11438:572;11549:4;-1:-1:-1;;;;;11564:13:0;;1425:19;:23;11560:445;;11591:72;;-1:-1:-1;;;11591:72:0;;-1:-1:-1;;;;;11591:36:0;;;;;:72;;3828:10;;11642:4;;11648:7;;11657:5;;11591:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11591:72:0;;;;;;;;-1:-1:-1;;11591:72:0;;;;;;;;;;;;:::i;:::-;;;11587:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11799:13:0;;11795:177;;11819:60;;-1:-1:-1;;;11819:60:0;;;;;;;:::i;11795:177::-;11949:6;11943:13;11934:6;11930:2;11926:15;11919:38;11587:391;-1:-1:-1;;;;;;11701:51:0;-1:-1:-1;;;11701:51:0;;-1:-1:-1;11694:58:0;;11560:445;-1:-1:-1;12001:4:0;11438:572;;;;;;:::o;9527:237::-;9617:18;9623:2;9627:7;9617:5;:18::i;:::-;9650:54;9681:1;9685:2;9689:7;9698:5;9650:22;:54::i;:::-;9642:117;;;;-1:-1:-1;;;9642:117:0;;;;;;;:::i;9769:394::-;-1:-1:-1;;;;;9843:16:0;;9835:61;;;;-1:-1:-1;;;9835:61:0;;28148:2:1;9835:61:0;;;28130:21:1;;;28167:18;;;28160:30;28226:34;28206:18;;;28199:62;28278:18;;9835:61:0;27946:356:1;9835:61:0;9028:4;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;:30;9901:58;;;;-1:-1:-1;;;9901:58:0;;28509:2:1;9901:58:0;;;28491:21:1;28548:2;28528:18;;;28521:30;28587;28567:18;;;28560:58;28635:18;;9901:58:0;28307:352:1;9901:58:0;9966:45;9995:1;9999:2;10003:7;9966:20;:45::i;:::-;-1:-1:-1;;;;;10018:13:0;;;;;;:9;:13;;;;;:18;;10035:1;;10018:13;:18;;10035:1;;10018:18;:::i;:::-;;;;-1:-1:-1;;10041:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10041:21:0;-1:-1:-1;;;;;10041:21:0;;;;;;;;10074:33;;10041:16;;;10074:33;;10041:16;;10074:33;25947:20:::1;25879:93:::0;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:128;186:3;217:1;213:6;210:1;207:13;204:39;;;223:18;;:::i;:::-;-1:-1:-1;259:9:1;;146:128::o;279:127::-;340:10;335:3;331:20;328:1;321:31;371:4;368:1;361:15;395:4;392:1;385:15;411:120;451:1;477;467:35;;482:18;;:::i;:::-;-1:-1:-1;516:9:1;;411:120::o;536:168::-;576:7;642:1;638;634:6;630:14;627:1;624:21;619:1;612:9;605:17;601:45;598:71;;;649:18;;:::i;:::-;-1:-1:-1;689:9:1;;536:168::o;709:131::-;-1:-1:-1;;;;;;783:32:1;;773:43;;763:71;;830:1;827;820:12;845:245;903:6;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;1011:9;998:23;1030:30;1054:5;1030:30;:::i;1287:173::-;1355:20;;-1:-1:-1;;;;;1404:31:1;;1394:42;;1384:70;;1450:1;1447;1440:12;1384:70;1287:173;;;:::o;1465:186::-;1524:6;1577:2;1565:9;1556:7;1552:23;1548:32;1545:52;;;1593:1;1590;1583:12;1545:52;1616:29;1635:9;1616:29;:::i;1838:180::-;1897:6;1950:2;1938:9;1929:7;1925:23;1921:32;1918:52;;;1966:1;1963;1956:12;1918:52;-1:-1:-1;1989:23:1;;1838:180;-1:-1:-1;1838:180:1:o;2023:258::-;2095:1;2105:113;2119:6;2116:1;2113:13;2105:113;;;2195:11;;;2189:18;2176:11;;;2169:39;2141:2;2134:10;2105:113;;;2236:6;2233:1;2230:13;2227:48;;;-1:-1:-1;;2271:1:1;2253:16;;2246:27;2023:258::o;2286:::-;2328:3;2366:5;2360:12;2393:6;2388:3;2381:19;2409:63;2465:6;2458:4;2453:3;2449:14;2442:4;2435:5;2431:16;2409:63;:::i;:::-;2526:2;2505:15;-1:-1:-1;;2501:29:1;2492:39;;;;2533:4;2488:50;;2286:258;-1:-1:-1;;2286:258:1:o;2549:220::-;2698:2;2687:9;2680:21;2661:4;2718:45;2759:2;2748:9;2744:18;2736:6;2718:45;:::i;2982:254::-;3050:6;3058;3111:2;3099:9;3090:7;3086:23;3082:32;3079:52;;;3127:1;3124;3117:12;3079:52;3150:29;3169:9;3150:29;:::i;:::-;3140:39;3226:2;3211:18;;;;3198:32;;-1:-1:-1;;;2982:254:1:o;3241:328::-;3318:6;3326;3334;3387:2;3375:9;3366:7;3362:23;3358:32;3355:52;;;3403:1;3400;3393:12;3355:52;3426:29;3445:9;3426:29;:::i;:::-;3416:39;;3474:38;3508:2;3497:9;3493:18;3474:38;:::i;:::-;3464:48;;3559:2;3548:9;3544:18;3531:32;3521:42;;3241:328;;;;;:::o;3574:248::-;3642:6;3650;3703:2;3691:9;3682:7;3678:23;3674:32;3671:52;;;3719:1;3716;3709:12;3671:52;-1:-1:-1;;3742:23:1;;;3812:2;3797:18;;;3784:32;;-1:-1:-1;3574:248:1:o;4106:632::-;4277:2;4329:21;;;4399:13;;4302:18;;;4421:22;;;4248:4;;4277:2;4500:15;;;;4474:2;4459:18;;;4248:4;4543:169;4557:6;4554:1;4551:13;4543:169;;;4618:13;;4606:26;;4687:15;;;;4652:12;;;;4579:1;4572:9;4543:169;;;-1:-1:-1;4729:3:1;;4106:632;-1:-1:-1;;;;;;4106:632:1:o;4743:127::-;4804:10;4799:3;4795:20;4792:1;4785:31;4835:4;4832:1;4825:15;4859:4;4856:1;4849:15;4875:632;4940:5;4970:18;5011:2;5003:6;5000:14;4997:40;;;5017:18;;:::i;:::-;5092:2;5086:9;5060:2;5146:15;;-1:-1:-1;;5142:24:1;;;5168:2;5138:33;5134:42;5122:55;;;5192:18;;;5212:22;;;5189:46;5186:72;;;5238:18;;:::i;:::-;5278:10;5274:2;5267:22;5307:6;5298:15;;5337:6;5329;5322:22;5377:3;5368:6;5363:3;5359:16;5356:25;5353:45;;;5394:1;5391;5384:12;5353:45;5444:6;5439:3;5432:4;5424:6;5420:17;5407:44;5499:1;5492:4;5483:6;5475;5471:19;5467:30;5460:41;;;;4875:632;;;;;:::o;5512:451::-;5581:6;5634:2;5622:9;5613:7;5609:23;5605:32;5602:52;;;5650:1;5647;5640:12;5602:52;5690:9;5677:23;5723:18;5715:6;5712:30;5709:50;;;5755:1;5752;5745:12;5709:50;5778:22;;5831:4;5823:13;;5819:27;-1:-1:-1;5809:55:1;;5860:1;5857;5850:12;5809:55;5883:74;5949:7;5944:2;5931:16;5926:2;5922;5918:11;5883:74;:::i;5968:260::-;6036:6;6044;6097:2;6085:9;6076:7;6072:23;6068:32;6065:52;;;6113:1;6110;6103:12;6065:52;6136:29;6155:9;6136:29;:::i;:::-;6126:39;;6184:38;6218:2;6207:9;6203:18;6184:38;:::i;6524:247::-;6306:12;;6294:25;;6368:4;6357:16;;;6351:23;6335:14;;;6328:47;6428:4;6417:16;;;6411:23;-1:-1:-1;;;;;6407:49:1;6391:14;;;6384:73;6506:4;6495:16;;;6489:23;6473:14;;;6466:47;6708:3;6693:19;;6721:44;6233:286;7039:347;7104:6;7112;7165:2;7153:9;7144:7;7140:23;7136:32;7133:52;;;7181:1;7178;7171:12;7133:52;7204:29;7223:9;7204:29;:::i;:::-;7194:39;;7283:2;7272:9;7268:18;7255:32;7330:5;7323:13;7316:21;7309:5;7306:32;7296:60;;7352:1;7349;7342:12;7296:60;7375:5;7365:15;;;7039:347;;;;;:::o;7391:667::-;7486:6;7494;7502;7510;7563:3;7551:9;7542:7;7538:23;7534:33;7531:53;;;7580:1;7577;7570:12;7531:53;7603:29;7622:9;7603:29;:::i;:::-;7593:39;;7651:38;7685:2;7674:9;7670:18;7651:38;:::i;:::-;7641:48;;7736:2;7725:9;7721:18;7708:32;7698:42;;7791:2;7780:9;7776:18;7763:32;7818:18;7810:6;7807:30;7804:50;;;7850:1;7847;7840:12;7804:50;7873:22;;7926:4;7918:13;;7914:27;-1:-1:-1;7904:55:1;;7955:1;7952;7945:12;7904:55;7978:74;8044:7;8039:2;8026:16;8021:2;8017;8013:11;7978:74;:::i;:::-;7968:84;;;7391:667;;;;;;;:::o;8063:703::-;8284:2;8336:21;;;8406:13;;8309:18;;;8428:22;;;8255:4;;8284:2;8507:15;;;;8481:2;8466:18;;;8255:4;8550:190;8564:6;8561:1;8558:13;8550:190;;;8613:45;8654:3;8645:6;8639:13;6306:12;;6294:25;;6368:4;6357:16;;;6351:23;6335:14;;;6328:47;6428:4;6417:16;;;6411:23;-1:-1:-1;;;;;6407:49:1;6391:14;;;6384:73;6506:4;6495:16;;;6489:23;6473:14;;6466:47;6233:286;8613:45;8715:15;;;;8687:4;8678:14;;;;;8586:1;8579:9;8550:190;;8771:367;8834:8;8844:6;8898:3;8891:4;8883:6;8879:17;8875:27;8865:55;;8916:1;8913;8906:12;8865:55;-1:-1:-1;8939:20:1;;8982:18;8971:30;;8968:50;;;9014:1;9011;9004:12;8968:50;9051:4;9043:6;9039:17;9027:29;;9111:3;9104:4;9094:6;9091:1;9087:14;9079:6;9075:27;9071:38;9068:47;9065:67;;;9128:1;9125;9118:12;9065:67;8771:367;;;;;:::o;9143:771::-;9263:6;9271;9279;9287;9340:2;9328:9;9319:7;9315:23;9311:32;9308:52;;;9356:1;9353;9346:12;9308:52;9396:9;9383:23;9425:18;9466:2;9458:6;9455:14;9452:34;;;9482:1;9479;9472:12;9452:34;9521:70;9583:7;9574:6;9563:9;9559:22;9521:70;:::i;:::-;9610:8;;-1:-1:-1;9495:96:1;-1:-1:-1;9698:2:1;9683:18;;9670:32;;-1:-1:-1;9714:16:1;;;9711:36;;;9743:1;9740;9733:12;9711:36;;9782:72;9846:7;9835:8;9824:9;9820:24;9782:72;:::i;:::-;9143:771;;;;-1:-1:-1;9873:8:1;-1:-1:-1;;;;9143:771:1:o;9919:127::-;9980:10;9975:3;9971:20;9968:1;9961:31;10011:4;10008:1;10001:15;10035:4;10032:1;10025:15;10051:135;10090:3;-1:-1:-1;;10111:17:1;;10108:43;;;10131:18;;:::i;:::-;-1:-1:-1;10178:1:1;10167:13;;10051:135::o;10547:125::-;10587:4;10615:1;10612;10609:8;10606:34;;;10620:18;;:::i;:::-;-1:-1:-1;10657:9:1;;10547:125::o;10677:380::-;10756:1;10752:12;;;;10799;;;10820:61;;10874:4;10866:6;10862:17;10852:27;;10820:61;10927:2;10919:6;10916:14;10896:18;10893:38;10890:161;;;10973:10;10968:3;10964:20;10961:1;10954:31;11008:4;11005:1;10998:15;11036:4;11033:1;11026:15;10890:161;;10677:380;;;:::o;11062:356::-;11264:2;11246:21;;;11283:18;;;11276:30;11342:34;11337:2;11322:18;;11315:62;11409:2;11394:18;;11062:356::o;12663:413::-;12865:2;12847:21;;;12904:2;12884:18;;;12877:30;12943:34;12938:2;12923:18;;12916:62;-1:-1:-1;;;13009:2:1;12994:18;;12987:47;13066:3;13051:19;;12663:413::o;13081:355::-;13283:2;13265:21;;;13322:2;13302:18;;;13295:30;13361:33;13356:2;13341:18;;13334:61;13427:2;13412:18;;13081:355::o;13441:403::-;13643:2;13625:21;;;13682:2;13662:18;;;13655:30;13721:34;13716:2;13701:18;;13694:62;-1:-1:-1;;;13787:2:1;13772:18;;13765:37;13834:3;13819:19;;13441:403::o;14732:127::-;14793:10;14788:3;14784:20;14781:1;14774:31;14824:4;14821:1;14814:15;14848:4;14845:1;14838:15;15074:406;15276:2;15258:21;;;15315:2;15295:18;;;15288:30;-1:-1:-1;;;;;;;;;;;15349:2:1;15334:18;;15327:62;-1:-1:-1;;;15420:2:1;15405:18;;15398:40;15470:3;15455:19;;15074:406::o;16780:350::-;16982:2;16964:21;;;17021:2;17001:18;;;16994:30;17060:28;17055:2;17040:18;;17033:56;17121:2;17106:18;;16780:350::o;17135:407::-;17337:2;17319:21;;;17376:2;17356:18;;;17349:30;17415:34;17410:2;17395:18;;17388:62;-1:-1:-1;;;17481:2:1;17466:18;;17459:41;17532:3;17517:19;;17135:407::o;20951:::-;21153:2;21135:21;;;21192:2;21172:18;;;21165:30;21231:34;21226:2;21211:18;;21204:62;-1:-1:-1;;;21297:2:1;21282:18;;21275:41;21348:3;21333:19;;20951:407::o;22317:1527::-;22541:3;22579:6;22573:13;22605:4;22618:51;22662:6;22657:3;22652:2;22644:6;22640:15;22618:51;:::i;:::-;22732:13;;22691:16;;;;22754:55;22732:13;22691:16;22776:15;;;22754:55;:::i;:::-;22898:13;;22831:20;;;22871:1;;22958;22980:18;;;;23033;;;;23060:93;;23138:4;23128:8;23124:19;23112:31;;23060:93;23201:2;23191:8;23188:16;23168:18;23165:40;23162:167;;;-1:-1:-1;;;23228:33:1;;23284:4;23281:1;23274:15;23314:4;23235:3;23302:17;23162:167;23345:18;23372:110;;;;23496:1;23491:328;;;;23338:481;;23372:110;-1:-1:-1;;23407:24:1;;23393:39;;23452:20;;;;-1:-1:-1;23372:110:1;;23491:328;22264:1;22257:14;;;22301:4;22288:18;;23586:1;23600:169;23614:8;23611:1;23608:15;23600:169;;;23696:14;;23681:13;;;23674:37;23739:16;;;;23631:10;;23600:169;;;23604:3;;23800:8;23793:5;23789:20;23782:27;;23338:481;-1:-1:-1;23835:3:1;;22317:1527;-1:-1:-1;;;;;;;;;;;22317:1527:1:o;24256:127::-;24317:10;24312:3;24308:20;24305:1;24298:31;24348:4;24345:1;24338:15;24372:4;24369:1;24362:15;24388:269;24445:6;24498:2;24486:9;24477:7;24473:23;24469:32;24466:52;;;24514:1;24511;24504:12;24466:52;24553:9;24540:23;24603:4;24596:5;24592:16;24585:5;24582:27;24572:55;;24623:1;24620;24613:12;25886:414;26088:2;26070:21;;;26127:2;26107:18;;;26100:30;26166:34;26161:2;26146:18;;26139:62;-1:-1:-1;;;26232:2:1;26217:18;;26210:48;26290:3;26275:19;;25886:414::o;26659:112::-;26691:1;26717;26707:35;;26722:18;;:::i;:::-;-1:-1:-1;26756:9:1;;26659:112::o;27198:489::-;-1:-1:-1;;;;;27467:15:1;;;27449:34;;27519:15;;27514:2;27499:18;;27492:43;27566:2;27551:18;;27544:34;;;27614:3;27609:2;27594:18;;27587:31;;;27392:4;;27635:46;;27661:19;;27653:6;27635:46;:::i;:::-;27627:54;27198:489;-1:-1:-1;;;;;;27198:489:1:o;27692:249::-;27761:6;27814:2;27802:9;27793:7;27789:23;27785:32;27782:52;;;27830:1;27827;27820:12;27782:52;27862:9;27856:16;27881:30;27905:5;27881:30;:::i

Swarm Source

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