Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 24 from a total of 24 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Flip Public Paus... | 14674519 | 1379 days ago | IN | 0 ETH | 0.00145956 | ||||
| Withdraw | 14637380 | 1385 days ago | IN | 0 ETH | 0.00379231 | ||||
| Safe Transfer Fr... | 14624813 | 1387 days ago | IN | 0 ETH | 0.00330064 | ||||
| Safe Transfer Fr... | 14624730 | 1387 days ago | IN | 0 ETH | 0.00232198 | ||||
| Flip Private Pau... | 14618970 | 1387 days ago | IN | 0 ETH | 0.00123243 | ||||
| Flip Public Paus... | 14618954 | 1387 days ago | IN | 0 ETH | 0.00134126 | ||||
| Flip Private Pau... | 14618946 | 1387 days ago | IN | 0 ETH | 0.00110496 | ||||
| Flip Public Paus... | 14618935 | 1387 days ago | IN | 0 ETH | 0.00157974 | ||||
| Set Public Max | 14618912 | 1387 days ago | IN | 0 ETH | 0.00116077 | ||||
| Flip Public Paus... | 14618897 | 1387 days ago | IN | 0 ETH | 0.00107962 | ||||
| Flip Private Pau... | 14618891 | 1387 days ago | IN | 0 ETH | 0.00115077 | ||||
| Private Mint | 14615987 | 1388 days ago | IN | 0.1 ETH | 0.00804046 | ||||
| Private Mint | 14613231 | 1388 days ago | IN | 0.1 ETH | 0.0029314 | ||||
| Private Mint | 14613139 | 1388 days ago | IN | 0.1 ETH | 0.00376553 | ||||
| Private Mint | 14612784 | 1388 days ago | IN | 0.1 ETH | 0.00306517 | ||||
| Safe Transfer Fr... | 14612765 | 1388 days ago | IN | 0 ETH | 0.00151164 | ||||
| Private Mint | 14612692 | 1388 days ago | IN | 0.2 ETH | 0.00439858 | ||||
| Private Mint | 14612639 | 1388 days ago | IN | 0.2 ETH | 0.00485786 | ||||
| Private Mint | 14612530 | 1388 days ago | IN | 0.2 ETH | 0.00419299 | ||||
| Flip Private Pau... | 14612526 | 1388 days ago | IN | 0 ETH | 0.00087079 | ||||
| Private Mint | 14612127 | 1389 days ago | IN | 0.1 ETH | 0.00219784 | ||||
| Private Mint | 14611852 | 1389 days ago | IN | 0.1 ETH | 0.00326355 | ||||
| Admin Mint | 14611488 | 1389 days ago | IN | 0 ETH | 0.00185433 | ||||
| Admin Mint | 14610604 | 1389 days ago | IN | 0 ETH | 0.00435869 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SYGHTPASSES
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-04-18
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
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);
}
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
interface IERC1155Receiver is IERC165 {
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
) external returns (bytes4);
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
) external returns (bytes4);
}
interface IERC1155 is IERC165 {
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
event TransferBatch(
address indexed operator,
address indexed from,
address indexed to,
uint256[] ids,
uint256[] values
);
event ApprovalForAll(address indexed account, address indexed operator, bool approved);
event URI(string value, uint256 indexed id);
function balanceOf(address account, uint256 id) external view returns (uint256);
function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
external
view
returns (uint256[] memory);
function setApprovalForAll(address operator, bool approved) external;
function isApprovedForAll(address account, address operator) external view returns (bool);
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes calldata data
) external;
function safeBatchTransferFrom(
address from,
address to,
uint256[] calldata ids,
uint256[] calldata amounts,
bytes calldata data
) external;
}
interface IERC1155MetadataURI is IERC1155 {
function uri(uint256 id) external view returns (string memory);
}
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
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);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
using Address for address;
// Mapping from token ID to account balances
mapping(uint256 => mapping(address => uint256)) private _balances;
// Mapping from account to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
// Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
string private _uri;
/**
* @dev See {_setURI}.
*/
constructor(string memory uri_) {
_setURI(uri_);
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC1155).interfaceId ||
interfaceId == type(IERC1155MetadataURI).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC1155MetadataURI-uri}.
*
* This implementation returns the same URI for *all* token types. It relies
* on the token type ID substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* Clients calling this function must replace the `\{id\}` substring with the
* actual token type ID.
*/
function uri(uint256) public view virtual override returns (string memory) {
return _uri;
}
/**
* @dev See {IERC1155-balanceOf}.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
require(account != address(0), "ERC1155: balance query for the zero address");
return _balances[id][account];
}
/**
* @dev See {IERC1155-balanceOfBatch}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
public
view
virtual
override
returns (uint256[] memory)
{
require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");
uint256[] memory batchBalances = new uint256[](accounts.length);
for (uint256 i = 0; i < accounts.length; ++i) {
batchBalances[i] = balanceOf(accounts[i], ids[i]);
}
return batchBalances;
}
/**
* @dev See {IERC1155-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
require(_msgSender() != operator, "ERC1155: setting approval status for self");
_operatorApprovals[_msgSender()][operator] = approved;
emit ApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC1155-isApprovedForAll}.
*/
function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
return _operatorApprovals[account][operator];
}
/**
* @dev See {IERC1155-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: caller is not owner nor approved"
);
_safeTransferFrom(from, to, id, amount, data);
}
/**
* @dev See {IERC1155-safeBatchTransferFrom}.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: transfer caller is not owner nor approved"
);
_safeBatchTransferFrom(from, to, ids, amounts, data);
}
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
unchecked {
_balances[id][from] = fromBalance - amount;
}
_balances[id][to] += amount;
emit TransferSingle(operator, from, to, id, amount);
_doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; ++i) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
unchecked {
_balances[id][from] = fromBalance - amount;
}
_balances[id][to] += amount;
}
emit TransferBatch(operator, from, to, ids, amounts);
_doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
}
/**
* @dev Sets a new URI for all token types, by relying on the token type ID
* substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* By this mechanism, any occurrence of the `\{id\}` substring in either the
* URI or any of the amounts in the JSON file at said URI will be replaced by
* clients with the token type ID.
*
* For example, the `https://token-cdn-domain/\{id\}.json` URI would be
* interpreted by clients as
* `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
* for token type ID 0x4cce0.
*
* See {uri}.
*
* Because these URIs cannot be meaningfully represented by the {URI} event,
* this function emits no events.
*/
function _setURI(string memory newuri) internal virtual {
_uri = newuri;
}
/**
* @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _mint(
address account,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(account != address(0), "ERC1155: mint to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);
_balances[id][account] += amount;
emit TransferSingle(operator, address(0), account, id, amount);
_doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _mintBatch(
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; i++) {
_balances[ids[i]][to] += amounts[i];
}
emit TransferBatch(operator, address(0), to, ids, amounts);
_doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
}
/**
* @dev Destroys `amount` tokens of token type `id` from `account`
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens of token type `id`.
*/
function _burn(
address account,
uint256 id,
uint256 amount
) internal virtual {
require(account != address(0), "ERC1155: burn from the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");
uint256 accountBalance = _balances[id][account];
require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
unchecked {
_balances[id][account] = accountBalance - amount;
}
emit TransferSingle(operator, account, address(0), id, amount);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
*/
function _burnBatch(
address account,
uint256[] memory ids,
uint256[] memory amounts
) internal virtual {
require(account != address(0), "ERC1155: burn from the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, account, address(0), ids, amounts, "");
for (uint256 i = 0; i < ids.length; i++) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 accountBalance = _balances[id][account];
require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
unchecked {
_balances[id][account] = accountBalance - amount;
}
}
emit TransferBatch(operator, account, address(0), ids, amounts);
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {}
function _doSafeTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
if (response != IERC1155Receiver.onERC1155Received.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _doSafeBatchTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
bytes4 response
) {
if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
uint256[] memory array = new uint256[](1);
array[0] = element;
return array;
}
}
abstract contract ERC1155Supply is ERC1155 {
mapping(uint256 => uint256) private _totalSupply;
/**
* @dev Total amount of tokens in with a given id.
*/
function totalSupply(uint256 id) public view virtual returns (uint256) {
return _totalSupply[id];
}
function exists(uint256 id) public view virtual returns (bool) {
return ERC1155Supply.totalSupply(id) > 0;
}
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual override {
super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
if (from == address(0)) {
for (uint256 i = 0; i < ids.length; ++i) {
_totalSupply[ids[i]] += amounts[i];
}
}
if (to == address(0)) {
for (uint256 i = 0; i < ids.length; ++i) {
_totalSupply[ids[i]] -= amounts[i];
}
}
}
}
library Base64 {
bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
/// @notice Encodes some bytes to the base64 representation
function encode(bytes memory data) internal pure returns (string memory) {
uint256 len = data.length;
if (len == 0) return "";
// multiply by 4/3 rounded up
uint256 encodedLen = 4 * ((len + 2) / 3);
// Add some extra buffer at the end
bytes memory result = new bytes(encodedLen + 32);
bytes memory table = TABLE;
assembly {
let tablePtr := add(table, 1)
let resultPtr := add(result, 32)
for {
let i := 0
} lt(i, len) {
} {
i := add(i, 3)
let input := and(mload(add(data, i)), 0xffffff)
let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
out := shl(8, out)
out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))
out := shl(8, out)
out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))
out := shl(8, out)
out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))
out := shl(224, out)
mstore(resultPtr, out)
resultPtr := add(resultPtr, 4)
}
switch mod(len, 3)
case 1 {
mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
}
case 2 {
mstore(sub(resultPtr, 1), shl(248, 0x3d))
}
mstore(result, encodedLen)
}
return string(result);
}
}
library MerkleProof {
/**
* @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
* defined by `root`. For this, a `proof` must be provided, containing
* sibling hashes on the branch from the leaf to the root of the tree. Each
* pair of leaves and each pair of pre-images are assumed to be sorted.
*/
function verify(
bytes32[] memory proof,
bytes32 root,
bytes32 leaf
) internal pure returns (bool) {
return processProof(proof, leaf) == root;
}
/**
* @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
* from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
* hash matches the root of the tree. When processing the proof, the pairs
* of leafs & pre-images are assumed to be sorted.
*
* _Available since v4.4._
*/
function processProof(bytes32[] memory proof, bytes32 leaf)
internal
pure
returns (bytes32)
{
bytes32 computedHash = leaf;
for (uint256 i = 0; i < proof.length; i++) {
bytes32 proofElement = proof[i];
if (computedHash <= proofElement) {
// Hash(current computed hash + current element of the proof)
computedHash = _efficientHash(computedHash, proofElement);
} else {
// Hash(current element of the proof + current computed hash)
computedHash = _efficientHash(proofElement, computedHash);
}
}
return computedHash;
}
function _efficientHash(bytes32 a, bytes32 b)
private
pure
returns (bytes32 value)
{
assembly {
mstore(0x00, a)
mstore(0x20, b)
value := keccak256(0x00, 0x40)
}
}
}
contract SYGHTPASSES is ERC1155, Ownable, ERC1155Supply {
string public name;
string public symbol;
uint public constant _TOTALSUPPLY = 999;
uint public tid = 1;
uint public reserved = 49;
uint256 public privatePrice = 0.1 ether;
uint256 public publicPrice = 0.12 ether;
uint256 public privateMax = 2;
uint256 public publicMax = 5;
bool public isPrivatePaused=true; // true -pause false - Mint Active
bool public isPublicPaused=true; // true -pause false - Mint Active
address freeFlowAddress = 0x5B588e36FF358D4376A76FB163fd69Da02A2A9a5;
address developerAddress = 0x1259c499b5c4F574313c9670C7b25a193137a188;
string baseuri;
bytes32 public rootHash;
struct userAddress {
address userAddress;
uint256 counter;
}
mapping(address => userAddress) public _SaleAddresses;
mapping(address => bool) public _SaleAddressExist;
mapping(address => userAddress) public _PrivateSaleAddresses;
mapping(address => bool) public _PrivateSaleAddressExist;
constructor(string memory _baseURI, bytes32 finalRootHash) ERC1155(_baseURI) {
name = "SYGHTLINE: //SYMBOL_PASS//";
symbol = "SYMBOL PASS";
baseuri = _baseURI;
rootHash = finalRootHash;
}
function updateRoothash(bytes32 root) public onlyOwner{
rootHash = root;
}
function setPublicPrice(uint256 _price) public onlyOwner{
publicPrice = _price;
}
function setPrivatePrice(uint256 _price) public onlyOwner{
privatePrice = _price;
}
function getPublicPrice() public view returns(uint256){
return publicPrice;
}
function getPrivatePrice() public view returns(uint256){
return privatePrice;
}
function getPublicPrice(uint256 quantity) public view returns (uint256) {
return quantity * publicPrice;
}
function getPrivatePrice(uint256 quantity) public view returns (uint256) {
return quantity * privatePrice;
}
function flipPublicPauseStatus() public onlyOwner {
isPublicPaused = !isPublicPaused;
}
function flipPrivatePauseStatus() public onlyOwner {
isPrivatePaused = !isPrivatePaused;
}
function setPublicMax(uint256 max) public onlyOwner {
publicMax = max;
}
function setPrivateMax(uint256 max) public onlyOwner {
privateMax = max;
}
function setURI(string memory newuri) public onlyOwner {
baseuri = newuri;
}
function publicMint(uint256 amount) public payable {
if (_SaleAddressExist[msg.sender] == false) {
_SaleAddresses[msg.sender] = userAddress({
userAddress: msg.sender,
counter: 0
});
_SaleAddressExist[msg.sender] = true;
}
require(_SaleAddresses[msg.sender].counter + amount <= publicMax, "Max mints per wallet is 5");
require(isPublicPaused == false, "Sale is not active at the moment");
require(totalSupply(tid) + amount <= _TOTALSUPPLY - reserved, "Selected Quantity must be lesser than Total Supply");
require(totalSupply(tid) != _TOTALSUPPLY, "All the nfts have been minted");
require(amount > 0, "Number of tokens can not be less than or equal to 0");
require((publicPrice*amount) <= msg.value, "Insufficient Ethers Sent");
_mint(msg.sender, tid, amount, "");
_SaleAddresses[msg.sender].counter += amount;
}
function privateMint(bytes32[] calldata _merkleProof, uint256 amount) public payable {
if (_PrivateSaleAddressExist[msg.sender] == false) {
_PrivateSaleAddresses[msg.sender] = userAddress({
userAddress: msg.sender,
counter: 0
});
_PrivateSaleAddressExist[msg.sender] = true;
}
require(isPrivatePaused == false, "Sale is not active at the moment");
require(_PrivateSaleAddresses[msg.sender].counter + amount <= privateMax, "Max mints per wallet is 1");
require(totalSupply(tid) + amount <= _TOTALSUPPLY - reserved, "Selected Quantity must be lesser than Total Supply");
require(totalSupply(tid) != _TOTALSUPPLY, "All the nfts have been minted");
require((privatePrice) <= msg.value, "Insufficient Ethers Sent");
bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
require(
MerkleProof.verify(_merkleProof, rootHash, leaf),
"Invalid Proof"
);
_mint(msg.sender, tid, amount, "");
_PrivateSaleAddresses[msg.sender].counter += amount;
}
function adminMint(uint256 amount) public onlyOwner {
require(totalSupply(tid) + amount <= _TOTALSUPPLY - reserved, "Selected Quantity must be lesser than Total Supply");
require(totalSupply(tid) != _TOTALSUPPLY, "All the nfts have been minted");
require(amount > 0, "Number of tokens can not be less than or equal to 0");
_mint(msg.sender, tid, amount, "");
reserved -= amount;
}
function _beforeTokenTransfer(address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
internal
override(ERC1155, ERC1155Supply) {
super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
}
function uri(uint256 tokenId) override public view returns (string memory) {
return bytes(baseuri).length > 0 ? string(abi.encodePacked(baseuri)) : "";
}
function totalSupply() public view returns (uint256) {
return totalSupply(tid);
}
function withdraw() public onlyOwner {
uint totalBalance = address(this).balance;
uint ownerBalance = totalBalance * 92 / 100;
uint remainingBalance = totalBalance * 8 / 100;
uint developerBalance = remainingBalance * 85 / 100;
uint freeFLowBalance = remainingBalance * 15 / 100;
payable(msg.sender).transfer(ownerBalance);
payable(developerAddress).transfer(developerBalance);
payable(freeFlowAddress).transfer(freeFLowBalance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"bytes32","name":"finalRootHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PrivateSaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PrivateSaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_SaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_SaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TOTALSUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"adminMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPrivatePauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPublicPauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPrivatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"getPrivatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"getPublicPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPublicPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPrivatePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPublicPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"privateMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"privatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rootHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"setPrivateMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrivatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"setPublicMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPublicPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newuri","type":"string"}],"name":"setURI","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":[],"name":"tid","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":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"updateRoothash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526001600755603160085567016345785d8a00006009556701aa535d3d0c0000600a556002600b556005600c556001600d60006101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff021916908315150217905550735b588e36ff358d4376a76fb163fd69da02a2a9a5600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731259c499b5c4f574313c9670c7b25a193137a188600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200011d57600080fd5b506040516200585438038062005854833981810160405281019062000143919062000434565b816200015581620002cb60201b60201c565b50600062000168620002e760201b60201c565b905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280601a81526020017f53594748544c494e453a202f2f53594d424f4c5f504153532f2f0000000000008152506005908051906020019062000254929190620002ef565b506040518060400160405280600b81526020017f53594d424f4c205041535300000000000000000000000000000000000000000081525060069080519060200190620002a2929190620002ef565b5081600f9080519060200190620002bb929190620002ef565b5080601081905550505062000642565b8060029080519060200190620002e3929190620002ef565b5050565b600033905090565b828054620002fd9062000539565b90600052602060002090601f0160209004810192826200032157600085556200036d565b82601f106200033c57805160ff19168380011785556200036d565b828001600101855582156200036d579182015b828111156200036c5782518255916020019190600101906200034f565b5b5090506200037c919062000380565b5090565b5b808211156200039b57600081600090555060010162000381565b5090565b6000620003b6620003b084620004c3565b6200049a565b905082815260208101848484011115620003d557620003d462000608565b5b620003e284828562000503565b509392505050565b600081519050620003fb8162000628565b92915050565b600082601f83011262000419576200041862000603565b5b81516200042b8482602086016200039f565b91505092915050565b600080604083850312156200044e576200044d62000612565b5b600083015167ffffffffffffffff8111156200046f576200046e6200060d565b5b6200047d8582860162000401565b92505060206200049085828601620003ea565b9150509250929050565b6000620004a6620004b9565b9050620004b482826200056f565b919050565b6000604051905090565b600067ffffffffffffffff821115620004e157620004e0620005d4565b5b620004ec8262000617565b9050602081019050919050565b6000819050919050565b60005b838110156200052357808201518184015260208101905062000506565b8381111562000533576000848401525b50505050565b600060028204905060018216806200055257607f821691505b60208210811415620005695762000568620005a5565b5b50919050565b6200057a8262000617565b810181811067ffffffffffffffff821117156200059c576200059b620005d4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200063381620004f9565b81146200063f57600080fd5b50565b61520280620006526000396000f3fe6080604052600436106102715760003560e01c80638164669e1161014f578063bd85b039116100c1578063e985e9c51161007a578063e985e9c51461095e578063f242432a1461099b578063f2fde38b146109c4578063f4656c6e146109ed578063fb58604914610a18578063fe60d12c14610a5657610271565b8063bd85b03914610862578063c1f261231461089f578063c6275255146108c8578063db4568e2146108f1578063e03bf0a71461091c578063e527c6dd1461093357610271565b806395d89b411161011357806395d89b4114610754578063a10f151e1461077f578063a22cb465146107a8578063a5f0211c146107d1578063a62f1d04146107fa578063a945bf801461083757610271565b80638164669e1461067e57806384371231146106bc57806384b344aa146106e757806387c0568b146106fe5780638da5cb5b1461072957610271565b80632db11544116101e85780634e1273f4116101ac5780634e1273f4146105485780634f558e791461058557806360702f7c146105c257806366566046146105ed57806367eae4ad14610616578063722d0c8e1461064157610271565b80632db11544146104845780632eb2c2d6146104a057806330a3f446146104c9578063363e86fe146105065780633ccfd60b1461053157610271565b80630e89341c1161023a5780630e89341c1461036d57806316f8a0d1146103aa57806318160ddd146103e75780631b09299c146104125780631d80009a1461043d57806328818b961461046857610271565b8062fdd58e1461027657806301ffc9a7146102b35780630212d8f3146102f057806302fe53051461031957806306fdde0314610342575b600080fd5b34801561028257600080fd5b5061029d60048036038101906102989190613a5d565b610a81565b6040516102aa91906145a3565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613ba2565b610b4a565b6040516102e791906142ab565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613b75565b610c2c565b005b34801561032557600080fd5b50610340600480360381019061033b9190613bfc565b610cb2565b005b34801561034e57600080fd5b50610357610d48565b60405161036491906142e1565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f9190613c45565b610dd6565b6040516103a191906142e1565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061384a565b610e2c565b6040516103de91906142ab565b60405180910390f35b3480156103f357600080fd5b506103fc610e4c565b60405161040991906145a3565b60405180910390f35b34801561041e57600080fd5b50610427610e5e565b60405161043491906142ab565b60405180910390f35b34801561044957600080fd5b50610452610e71565b60405161045f91906142c6565b60405180910390f35b610482600480360381019061047d9190613b15565b610e77565b005b61049e60048036038101906104999190613c45565b6112ff565b005b3480156104ac57600080fd5b506104c760048036038101906104c291906138b7565b61171a565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190613c45565b6117bb565b6040516104fd91906145a3565b60405180910390f35b34801561051257600080fd5b5061051b6117d2565b60405161052891906145a3565b60405180910390f35b34801561053d57600080fd5b506105466117dc565b005b34801561055457600080fd5b5061056f600480360381019061056a9190613a9d565b6119f1565b60405161057c9190614252565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190613c45565b611b0a565b6040516105b991906142ab565b60405180910390f35b3480156105ce57600080fd5b506105d7611b1e565b6040516105e491906145a3565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190613c45565b611b28565b005b34801561062257600080fd5b5061062b611bae565b60405161063891906142ab565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190613c45565b611bc1565b60405161067591906145a3565b60405180910390f35b34801561068a57600080fd5b506106a560048036038101906106a0919061384a565b611bd8565b6040516106b3929190614229565b60405180910390f35b3480156106c857600080fd5b506106d1611c1c565b6040516106de91906145a3565b60405180910390f35b3480156106f357600080fd5b506106fc611c22565b005b34801561070a57600080fd5b50610713611cca565b60405161072091906145a3565b60405180910390f35b34801561073557600080fd5b5061073e611cd0565b60405161074b919061414c565b60405180910390f35b34801561076057600080fd5b50610769611cfa565b60405161077691906142e1565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190613c45565b611d88565b005b3480156107b457600080fd5b506107cf60048036038101906107ca9190613a1d565b611e0e565b005b3480156107dd57600080fd5b506107f860048036038101906107f39190613c45565b611f8f565b005b34801561080657600080fd5b50610821600480360381019061081c919061384a565b612015565b60405161082e91906142ab565b60405180910390f35b34801561084357600080fd5b5061084c612035565b60405161085991906145a3565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190613c45565b61203b565b60405161089691906145a3565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c19190613c45565b612058565b005b3480156108d457600080fd5b506108ef60048036038101906108ea9190613c45565b612206565b005b3480156108fd57600080fd5b5061090661228c565b60405161091391906145a3565b60405180910390f35b34801561092857600080fd5b50610931612292565b005b34801561093f57600080fd5b5061094861233a565b60405161095591906145a3565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613877565b612340565b60405161099291906142ab565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd9190613986565b6123d4565b005b3480156109d057600080fd5b506109eb60048036038101906109e6919061384a565b612475565b005b3480156109f957600080fd5b50610a0261256d565b604051610a0f91906145a3565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a919061384a565b612573565b604051610a4d929190614229565b60405180910390f35b348015610a6257600080fd5b50610a6b6125b7565b604051610a7891906145a3565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990614383565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c1557507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c255750610c24826125bd565b5b9050919050565b610c34612627565b73ffffffffffffffffffffffffffffffffffffffff16610c52611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f906144c3565b60405180910390fd5b8060108190555050565b610cba612627565b73ffffffffffffffffffffffffffffffffffffffff16610cd8611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614610d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d25906144c3565b60405180910390fd5b80600f9080519060200190610d449291906134b7565b5050565b60058054610d559061492c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d819061492c565b8015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b505050505081565b60606000600f8054610de79061492c565b905011610e035760405180602001604052806000815250610e25565b600f604051602001610e159190614135565b6040516020818303038152906040525b9050919050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000610e5960075461203b565b905090565b600d60019054906101000a900460ff1681565b60105481565b60001515601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610fe85760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600d60009054906101000a900460ff1615151461103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590614583565b60405180910390fd5b600b5481601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461108f9190614757565b11156110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790614403565b60405180910390fd5b6008546103e76110e09190614838565b816110ec60075461203b565b6110f69190614757565b1115611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e906143e3565b60405180910390fd5b6103e761114560075461203b565b1415611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90614363565b60405180910390fd5b3460095411156111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290614463565b60405180910390fd5b6000336040516020016111de919061411a565b604051602081830303815290604052805190602001209050611244848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506010548361262f565b611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127a906144e3565b60405180910390fd5b6112a0336007548460405180602001604052806000815250612646565b81601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546112f29190614757565b9250508190555050505050565b60001515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156114705760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600c5481601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546114c19190614757565b1115611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f9906144a3565b60405180910390fd5b60001515600d60019054906101000a900460ff16151514611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90614583565b60405180910390fd5b6008546103e76115689190614838565b8161157460075461203b565b61157e9190614757565b11156115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b6906143e3565b60405180910390fd5b6103e76115cd60075461203b565b141561160e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160590614363565b60405180910390fd5b60008111611651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164890614343565b60405180910390fd5b3481600a5461166091906147de565b11156116a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169890614463565b60405180910390fd5b6116be336007548360405180602001604052806000815250612646565b80601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546117109190614757565b9250508190555050565b611722612627565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611768575061176785611762612627565b612340565b5b6117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e90614443565b60405180910390fd5b6117b485858585856127dc565b5050505050565b6000600a54826117cb91906147de565b9050919050565b6000600a54905090565b6117e4612627565b73ffffffffffffffffffffffffffffffffffffffff16611802611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f906144c3565b60405180910390fd5b600047905060006064605c8361186e91906147de565b61187891906147ad565b90506000606460088461188b91906147de565b61189591906147ad565b9050600060646055836118a891906147de565b6118b291906147ad565b905060006064600f846118c591906147de565b6118cf91906147ad565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611917573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611980573d6000803e3d6000fd5b50600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119e9573d6000803e3d6000fd5b505050505050565b60608151835114611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e90614523565b60405180910390fd5b6000835167ffffffffffffffff811115611a5457611a53614ab8565b5b604051908082528060200260200182016040528015611a825781602001602082028036833780820191505090505b50905060005b8451811015611aff57611acf858281518110611aa757611aa6614a89565b5b6020026020010151858381518110611ac257611ac1614a89565b5b6020026020010151610a81565b828281518110611ae257611ae1614a89565b5b60200260200101818152505080611af89061498f565b9050611a88565b508091505092915050565b600080611b168361203b565b119050919050565b6000600954905090565b611b30612627565b73ffffffffffffffffffffffffffffffffffffffff16611b4e611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b906144c3565b60405180910390fd5b80600c8190555050565b600d60009054906101000a900460ff1681565b600060095482611bd191906147de565b9050919050565b60116020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60075481565b611c2a612627565b73ffffffffffffffffffffffffffffffffffffffff16611c48611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c95906144c3565b60405180910390fd5b600d60019054906101000a900460ff1615600d60016101000a81548160ff021916908315150217905550565b60095481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60068054611d079061492c565b80601f0160208091040260200160405190810160405280929190818152602001828054611d339061492c565b8015611d805780601f10611d5557610100808354040283529160200191611d80565b820191906000526020600020905b815481529060010190602001808311611d6357829003601f168201915b505050505081565b611d90612627565b73ffffffffffffffffffffffffffffffffffffffff16611dae611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb906144c3565b60405180910390fd5b8060098190555050565b8173ffffffffffffffffffffffffffffffffffffffff16611e2d612627565b73ffffffffffffffffffffffffffffffffffffffff161415611e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7b90614503565b60405180910390fd5b8060016000611e91612627565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611f3e612627565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f8391906142ab565b60405180910390a35050565b611f97612627565b73ffffffffffffffffffffffffffffffffffffffff16611fb5611cd0565b73ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906144c3565b60405180910390fd5b80600b8190555050565b60146020528060005260406000206000915054906101000a900460ff1681565b600a5481565b600060046000838152602001908152602001600020549050919050565b612060612627565b73ffffffffffffffffffffffffffffffffffffffff1661207e611cd0565b73ffffffffffffffffffffffffffffffffffffffff16146120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb906144c3565b60405180910390fd5b6008546103e76120e49190614838565b816120f060075461203b565b6120fa9190614757565b111561213b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612132906143e3565b60405180910390fd5b6103e761214960075461203b565b141561218a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218190614363565b60405180910390fd5b600081116121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c490614343565b60405180910390fd5b6121ea336007548360405180602001604052806000815250612646565b80600860008282546121fc9190614838565b9250508190555050565b61220e612627565b73ffffffffffffffffffffffffffffffffffffffff1661222c611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614612282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612279906144c3565b60405180910390fd5b80600a8190555050565b6103e781565b61229a612627565b73ffffffffffffffffffffffffffffffffffffffff166122b8611cd0565b73ffffffffffffffffffffffffffffffffffffffff161461230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305906144c3565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6123dc612627565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061242257506124218561241c612627565b612340565b5b612461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612458906143c3565b60405180910390fd5b61246e8585858585612af0565b5050505050565b61247d612627565b73ffffffffffffffffffffffffffffffffffffffff1661249b611cd0565b73ffffffffffffffffffffffffffffffffffffffff16146124f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e8906144c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612561576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612558906143a3565b60405180910390fd5b61256a81612d72565b50565b600b5481565b60136020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60085481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b60008261263c8584612e38565b1490509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ad90614563565b60405180910390fd5b60006126c0612627565b90506126e1816000876126d288612ead565b6126db88612ead565b87612f27565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127409190614757565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516127be9291906145be565b60405180910390a46127d581600087878787612f3d565b5050505050565b8151835114612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790614543565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288790614423565b60405180910390fd5b600061289a612627565b90506128aa818787878787612f27565b60005b8451811015612a5b5760008582815181106128cb576128ca614a89565b5b6020026020010151905060008583815181106128ea576128e9614a89565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561298b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298290614483565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a409190614757565b9250508190555050505080612a549061498f565b90506128ad565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612ad2929190614274565b60405180910390a4612ae8818787878787613124565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5790614423565b60405180910390fd5b6000612b6a612627565b9050612b8a818787612b7b88612ead565b612b8488612ead565b87612f27565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015612c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1890614483565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cd69190614757565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051612d539291906145be565b60405180910390a4612d69828888888888612f3d565b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008082905060005b8451811015612ea2576000858281518110612e5f57612e5e614a89565b5b60200260200101519050808311612e8157612e7a838261330b565b9250612e8e565b612e8b818461330b565b92505b508080612e9a9061498f565b915050612e41565b508091505092915050565b60606000600167ffffffffffffffff811115612ecc57612ecb614ab8565b5b604051908082528060200260200182016040528015612efa5781602001602082028036833780820191505090505b5090508281600081518110612f1257612f11614a89565b5b60200260200101818152505080915050919050565b612f35868686868686613322565b505050505050565b612f5c8473ffffffffffffffffffffffffffffffffffffffff1661349c565b1561311c578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612fa29594939291906141cf565b602060405180830381600087803b158015612fbc57600080fd5b505af1925050508015612fed57506040513d601f19601f82011682018060405250810190612fea9190613bcf565b60015b61309357612ff9614ae7565b806308c379a01415613056575061300e6150c3565b806130195750613058565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304d91906142e1565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308a90614303565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461311a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311190614323565b60405180910390fd5b505b505050505050565b6131438473ffffffffffffffffffffffffffffffffffffffff1661349c565b15613303578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401613189959493929190614167565b602060405180830381600087803b1580156131a357600080fd5b505af19250505080156131d457506040513d601f19601f820116820180604052508101906131d19190613bcf565b60015b61327a576131e0614ae7565b806308c379a0141561323d57506131f56150c3565b80613200575061323f565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323491906142e1565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327190614303565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f890614323565b60405180910390fd5b505b505050505050565b600082600052816020526040600020905092915050565b6133308686868686866134af565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156133e25760005b83518110156133e05782818151811061338457613383614a89565b5b6020026020010151600460008684815181106133a3576133a2614a89565b5b6020026020010151815260200190815260200160002060008282546133c89190614757565b92505081905550806133d99061498f565b9050613368565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156134945760005b83518110156134925782818151811061343657613435614a89565b5b60200260200101516004600086848151811061345557613454614a89565b5b60200260200101518152602001908152602001600020600082825461347a9190614838565b925050819055508061348b9061498f565b905061341a565b505b505050505050565b600080823b905060008111915050919050565b505050505050565b8280546134c39061492c565b90600052602060002090601f0160209004810192826134e5576000855561352c565b82601f106134fe57805160ff191683800117855561352c565b8280016001018555821561352c579182015b8281111561352b578251825591602001919060010190613510565b5b509050613539919061353d565b5090565b5b8082111561355657600081600090555060010161353e565b5090565b600061356d6135688461460c565b6145e7565b905080838252602082019050828560208602820111156135905761358f614b13565b5b60005b858110156135c057816135a688826136be565b845260208401935060208301925050600181019050613593565b5050509392505050565b60006135dd6135d884614638565b6145e7565b90508083825260208201905082856020860282011115613600576135ff614b13565b5b60005b8581101561363057816136168882613835565b845260208401935060208301925050600181019050613603565b5050509392505050565b600061364d61364884614664565b6145e7565b90508281526020810184848401111561366957613668614b18565b5b6136748482856148ea565b509392505050565b600061368f61368a84614695565b6145e7565b9050828152602081018484840111156136ab576136aa614b18565b5b6136b68482856148ea565b509392505050565b6000813590506136cd81615159565b92915050565b600082601f8301126136e8576136e7614b0e565b5b81356136f884826020860161355a565b91505092915050565b60008083601f84011261371757613716614b0e565b5b8235905067ffffffffffffffff81111561373457613733614b09565b5b6020830191508360208202830111156137505761374f614b13565b5b9250929050565b600082601f83011261376c5761376b614b0e565b5b813561377c8482602086016135ca565b91505092915050565b60008135905061379481615170565b92915050565b6000813590506137a981615187565b92915050565b6000813590506137be8161519e565b92915050565b6000815190506137d38161519e565b92915050565b600082601f8301126137ee576137ed614b0e565b5b81356137fe84826020860161363a565b91505092915050565b600082601f83011261381c5761381b614b0e565b5b813561382c84826020860161367c565b91505092915050565b600081359050613844816151b5565b92915050565b6000602082840312156138605761385f614b22565b5b600061386e848285016136be565b91505092915050565b6000806040838503121561388e5761388d614b22565b5b600061389c858286016136be565b92505060206138ad858286016136be565b9150509250929050565b600080600080600060a086880312156138d3576138d2614b22565b5b60006138e1888289016136be565b95505060206138f2888289016136be565b945050604086013567ffffffffffffffff81111561391357613912614b1d565b5b61391f88828901613757565b935050606086013567ffffffffffffffff8111156139405761393f614b1d565b5b61394c88828901613757565b925050608086013567ffffffffffffffff81111561396d5761396c614b1d565b5b613979888289016137d9565b9150509295509295909350565b600080600080600060a086880312156139a2576139a1614b22565b5b60006139b0888289016136be565b95505060206139c1888289016136be565b94505060406139d288828901613835565b93505060606139e388828901613835565b925050608086013567ffffffffffffffff811115613a0457613a03614b1d565b5b613a10888289016137d9565b9150509295509295909350565b60008060408385031215613a3457613a33614b22565b5b6000613a42858286016136be565b9250506020613a5385828601613785565b9150509250929050565b60008060408385031215613a7457613a73614b22565b5b6000613a82858286016136be565b9250506020613a9385828601613835565b9150509250929050565b60008060408385031215613ab457613ab3614b22565b5b600083013567ffffffffffffffff811115613ad257613ad1614b1d565b5b613ade858286016136d3565b925050602083013567ffffffffffffffff811115613aff57613afe614b1d565b5b613b0b85828601613757565b9150509250929050565b600080600060408486031215613b2e57613b2d614b22565b5b600084013567ffffffffffffffff811115613b4c57613b4b614b1d565b5b613b5886828701613701565b93509350506020613b6b86828701613835565b9150509250925092565b600060208284031215613b8b57613b8a614b22565b5b6000613b998482850161379a565b91505092915050565b600060208284031215613bb857613bb7614b22565b5b6000613bc6848285016137af565b91505092915050565b600060208284031215613be557613be4614b22565b5b6000613bf3848285016137c4565b91505092915050565b600060208284031215613c1257613c11614b22565b5b600082013567ffffffffffffffff811115613c3057613c2f614b1d565b5b613c3c84828501613807565b91505092915050565b600060208284031215613c5b57613c5a614b22565b5b6000613c6984828501613835565b91505092915050565b6000613c7e83836140fc565b60208301905092915050565b613c938161486c565b82525050565b613caa613ca58261486c565b6149d8565b82525050565b6000613cbb826146eb565b613cc58185614719565b9350613cd0836146c6565b8060005b83811015613d01578151613ce88882613c72565b9750613cf38361470c565b925050600181019050613cd4565b5085935050505092915050565b613d178161487e565b82525050565b613d268161488a565b82525050565b6000613d37826146f6565b613d41818561472a565b9350613d518185602086016148f9565b613d5a81614b27565b840191505092915050565b6000613d7082614701565b613d7a818561473b565b9350613d8a8185602086016148f9565b613d9381614b27565b840191505092915050565b60008154613dab8161492c565b613db5818661474c565b94506001821660008114613dd05760018114613de157613e14565b60ff19831686528186019350613e14565b613dea856146d6565b60005b83811015613e0c57815481890152600182019150602081019050613ded565b838801955050505b50505092915050565b6000613e2a60348361473b565b9150613e3582614b52565b604082019050919050565b6000613e4d60288361473b565b9150613e5882614ba1565b604082019050919050565b6000613e7060338361473b565b9150613e7b82614bf0565b604082019050919050565b6000613e93601d8361473b565b9150613e9e82614c3f565b602082019050919050565b6000613eb6602b8361473b565b9150613ec182614c68565b604082019050919050565b6000613ed960268361473b565b9150613ee482614cb7565b604082019050919050565b6000613efc60298361473b565b9150613f0782614d06565b604082019050919050565b6000613f1f60328361473b565b9150613f2a82614d55565b604082019050919050565b6000613f4260198361473b565b9150613f4d82614da4565b602082019050919050565b6000613f6560258361473b565b9150613f7082614dcd565b604082019050919050565b6000613f8860328361473b565b9150613f9382614e1c565b604082019050919050565b6000613fab60188361473b565b9150613fb682614e6b565b602082019050919050565b6000613fce602a8361473b565b9150613fd982614e94565b604082019050919050565b6000613ff160198361473b565b9150613ffc82614ee3565b602082019050919050565b600061401460208361473b565b915061401f82614f0c565b602082019050919050565b6000614037600d8361473b565b915061404282614f35565b602082019050919050565b600061405a60298361473b565b915061406582614f5e565b604082019050919050565b600061407d60298361473b565b915061408882614fad565b604082019050919050565b60006140a060288361473b565b91506140ab82614ffc565b604082019050919050565b60006140c360218361473b565b91506140ce8261504b565b604082019050919050565b60006140e660208361473b565b91506140f18261509a565b602082019050919050565b614105816148e0565b82525050565b614114816148e0565b82525050565b60006141268284613c99565b60148201915081905092915050565b60006141418284613d9e565b915081905092915050565b60006020820190506141616000830184613c8a565b92915050565b600060a08201905061417c6000830188613c8a565b6141896020830187613c8a565b818103604083015261419b8186613cb0565b905081810360608301526141af8185613cb0565b905081810360808301526141c38184613d2c565b90509695505050505050565b600060a0820190506141e46000830188613c8a565b6141f16020830187613c8a565b6141fe604083018661410b565b61420b606083018561410b565b818103608083015261421d8184613d2c565b90509695505050505050565b600060408201905061423e6000830185613c8a565b61424b602083018461410b565b9392505050565b6000602082019050818103600083015261426c8184613cb0565b905092915050565b6000604082019050818103600083015261428e8185613cb0565b905081810360208301526142a28184613cb0565b90509392505050565b60006020820190506142c06000830184613d0e565b92915050565b60006020820190506142db6000830184613d1d565b92915050565b600060208201905081810360008301526142fb8184613d65565b905092915050565b6000602082019050818103600083015261431c81613e1d565b9050919050565b6000602082019050818103600083015261433c81613e40565b9050919050565b6000602082019050818103600083015261435c81613e63565b9050919050565b6000602082019050818103600083015261437c81613e86565b9050919050565b6000602082019050818103600083015261439c81613ea9565b9050919050565b600060208201905081810360008301526143bc81613ecc565b9050919050565b600060208201905081810360008301526143dc81613eef565b9050919050565b600060208201905081810360008301526143fc81613f12565b9050919050565b6000602082019050818103600083015261441c81613f35565b9050919050565b6000602082019050818103600083015261443c81613f58565b9050919050565b6000602082019050818103600083015261445c81613f7b565b9050919050565b6000602082019050818103600083015261447c81613f9e565b9050919050565b6000602082019050818103600083015261449c81613fc1565b9050919050565b600060208201905081810360008301526144bc81613fe4565b9050919050565b600060208201905081810360008301526144dc81614007565b9050919050565b600060208201905081810360008301526144fc8161402a565b9050919050565b6000602082019050818103600083015261451c8161404d565b9050919050565b6000602082019050818103600083015261453c81614070565b9050919050565b6000602082019050818103600083015261455c81614093565b9050919050565b6000602082019050818103600083015261457c816140b6565b9050919050565b6000602082019050818103600083015261459c816140d9565b9050919050565b60006020820190506145b8600083018461410b565b92915050565b60006040820190506145d3600083018561410b565b6145e0602083018461410b565b9392505050565b60006145f1614602565b90506145fd828261495e565b919050565b6000604051905090565b600067ffffffffffffffff82111561462757614626614ab8565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561465357614652614ab8565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561467f5761467e614ab8565b5b61468882614b27565b9050602081019050919050565b600067ffffffffffffffff8211156146b0576146af614ab8565b5b6146b982614b27565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614762826148e0565b915061476d836148e0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147a2576147a16149fc565b5b828201905092915050565b60006147b8826148e0565b91506147c3836148e0565b9250826147d3576147d2614a2b565b5b828204905092915050565b60006147e9826148e0565b91506147f4836148e0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561482d5761482c6149fc565b5b828202905092915050565b6000614843826148e0565b915061484e836148e0565b925082821015614861576148606149fc565b5b828203905092915050565b6000614877826148c0565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156149175780820151818401526020810190506148fc565b83811115614926576000848401525b50505050565b6000600282049050600182168061494457607f821691505b6020821081141561495857614957614a5a565b5b50919050565b61496782614b27565b810181811067ffffffffffffffff8211171561498657614985614ab8565b5b80604052505050565b600061499a826148e0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156149cd576149cc6149fc565b5b600182019050919050565b60006149e3826149ea565b9050919050565b60006149f582614b38565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115614b065760046000803e614b03600051614b45565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f4e756d626572206f6620746f6b656e732063616e206e6f74206265206c65737360008201527f207468616e206f7220657175616c20746f203000000000000000000000000000602082015250565b7f416c6c20746865206e6674732068617665206265656e206d696e746564000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f53656c6563746564205175616e74697479206d757374206265206c657373657260008201527f207468616e20546f74616c20537570706c790000000000000000000000000000602082015250565b7f4d6178206d696e7473207065722077616c6c6574206973203100000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f496e73756666696369656e74204574686572732053656e740000000000000000600082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4d6178206d696e7473207065722077616c6c6574206973203500000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f53616c65206973206e6f742061637469766520617420746865206d6f6d656e74600082015250565b600060443d10156150d357615156565b6150db614602565b60043d036004823e80513d602482011167ffffffffffffffff82111715615103575050615156565b808201805167ffffffffffffffff8111156151215750505050615156565b80602083010160043d03850181111561513e575050505050615156565b61514d8260200185018661495e565b82955050505050505b90565b6151628161486c565b811461516d57600080fd5b50565b6151798161487e565b811461518457600080fd5b50565b6151908161488a565b811461519b57600080fd5b50565b6151a781614894565b81146151b257600080fd5b50565b6151be816148e0565b81146151c957600080fd5b5056fea2646970667358221220da5a36aa4ca3b2319c526e751109fc08f27a6e4ab1f704644ec5887217d0dc4164736f6c63430008070033000000000000000000000000000000000000000000000000000000000000004025e5d8bbd0313546f3284ec0bac51cf251006fac6a16b3246be7b86f021209ba000000000000000000000000000000000000000000000000000000000000005468747470733a2f2f73796768746c696e652e6d7970696e6174612e636c6f75642f697066732f516d6350694b4c4d4a446561694c6461664e776d36756d31723774704575524464365647364d31504e4474627852000000000000000000000000
Deployed Bytecode
0x6080604052600436106102715760003560e01c80638164669e1161014f578063bd85b039116100c1578063e985e9c51161007a578063e985e9c51461095e578063f242432a1461099b578063f2fde38b146109c4578063f4656c6e146109ed578063fb58604914610a18578063fe60d12c14610a5657610271565b8063bd85b03914610862578063c1f261231461089f578063c6275255146108c8578063db4568e2146108f1578063e03bf0a71461091c578063e527c6dd1461093357610271565b806395d89b411161011357806395d89b4114610754578063a10f151e1461077f578063a22cb465146107a8578063a5f0211c146107d1578063a62f1d04146107fa578063a945bf801461083757610271565b80638164669e1461067e57806384371231146106bc57806384b344aa146106e757806387c0568b146106fe5780638da5cb5b1461072957610271565b80632db11544116101e85780634e1273f4116101ac5780634e1273f4146105485780634f558e791461058557806360702f7c146105c257806366566046146105ed57806367eae4ad14610616578063722d0c8e1461064157610271565b80632db11544146104845780632eb2c2d6146104a057806330a3f446146104c9578063363e86fe146105065780633ccfd60b1461053157610271565b80630e89341c1161023a5780630e89341c1461036d57806316f8a0d1146103aa57806318160ddd146103e75780631b09299c146104125780631d80009a1461043d57806328818b961461046857610271565b8062fdd58e1461027657806301ffc9a7146102b35780630212d8f3146102f057806302fe53051461031957806306fdde0314610342575b600080fd5b34801561028257600080fd5b5061029d60048036038101906102989190613a5d565b610a81565b6040516102aa91906145a3565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613ba2565b610b4a565b6040516102e791906142ab565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190613b75565b610c2c565b005b34801561032557600080fd5b50610340600480360381019061033b9190613bfc565b610cb2565b005b34801561034e57600080fd5b50610357610d48565b60405161036491906142e1565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f9190613c45565b610dd6565b6040516103a191906142e1565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061384a565b610e2c565b6040516103de91906142ab565b60405180910390f35b3480156103f357600080fd5b506103fc610e4c565b60405161040991906145a3565b60405180910390f35b34801561041e57600080fd5b50610427610e5e565b60405161043491906142ab565b60405180910390f35b34801561044957600080fd5b50610452610e71565b60405161045f91906142c6565b60405180910390f35b610482600480360381019061047d9190613b15565b610e77565b005b61049e60048036038101906104999190613c45565b6112ff565b005b3480156104ac57600080fd5b506104c760048036038101906104c291906138b7565b61171a565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190613c45565b6117bb565b6040516104fd91906145a3565b60405180910390f35b34801561051257600080fd5b5061051b6117d2565b60405161052891906145a3565b60405180910390f35b34801561053d57600080fd5b506105466117dc565b005b34801561055457600080fd5b5061056f600480360381019061056a9190613a9d565b6119f1565b60405161057c9190614252565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190613c45565b611b0a565b6040516105b991906142ab565b60405180910390f35b3480156105ce57600080fd5b506105d7611b1e565b6040516105e491906145a3565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190613c45565b611b28565b005b34801561062257600080fd5b5061062b611bae565b60405161063891906142ab565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190613c45565b611bc1565b60405161067591906145a3565b60405180910390f35b34801561068a57600080fd5b506106a560048036038101906106a0919061384a565b611bd8565b6040516106b3929190614229565b60405180910390f35b3480156106c857600080fd5b506106d1611c1c565b6040516106de91906145a3565b60405180910390f35b3480156106f357600080fd5b506106fc611c22565b005b34801561070a57600080fd5b50610713611cca565b60405161072091906145a3565b60405180910390f35b34801561073557600080fd5b5061073e611cd0565b60405161074b919061414c565b60405180910390f35b34801561076057600080fd5b50610769611cfa565b60405161077691906142e1565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190613c45565b611d88565b005b3480156107b457600080fd5b506107cf60048036038101906107ca9190613a1d565b611e0e565b005b3480156107dd57600080fd5b506107f860048036038101906107f39190613c45565b611f8f565b005b34801561080657600080fd5b50610821600480360381019061081c919061384a565b612015565b60405161082e91906142ab565b60405180910390f35b34801561084357600080fd5b5061084c612035565b60405161085991906145a3565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190613c45565b61203b565b60405161089691906145a3565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c19190613c45565b612058565b005b3480156108d457600080fd5b506108ef60048036038101906108ea9190613c45565b612206565b005b3480156108fd57600080fd5b5061090661228c565b60405161091391906145a3565b60405180910390f35b34801561092857600080fd5b50610931612292565b005b34801561093f57600080fd5b5061094861233a565b60405161095591906145a3565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613877565b612340565b60405161099291906142ab565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd9190613986565b6123d4565b005b3480156109d057600080fd5b506109eb60048036038101906109e6919061384a565b612475565b005b3480156109f957600080fd5b50610a0261256d565b604051610a0f91906145a3565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a919061384a565b612573565b604051610a4d929190614229565b60405180910390f35b348015610a6257600080fd5b50610a6b6125b7565b604051610a7891906145a3565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990614383565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c1557507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c255750610c24826125bd565b5b9050919050565b610c34612627565b73ffffffffffffffffffffffffffffffffffffffff16610c52611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f906144c3565b60405180910390fd5b8060108190555050565b610cba612627565b73ffffffffffffffffffffffffffffffffffffffff16610cd8611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614610d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d25906144c3565b60405180910390fd5b80600f9080519060200190610d449291906134b7565b5050565b60058054610d559061492c565b80601f0160208091040260200160405190810160405280929190818152602001828054610d819061492c565b8015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b505050505081565b60606000600f8054610de79061492c565b905011610e035760405180602001604052806000815250610e25565b600f604051602001610e159190614135565b6040516020818303038152906040525b9050919050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000610e5960075461203b565b905090565b600d60019054906101000a900460ff1681565b60105481565b60001515601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610fe85760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600d60009054906101000a900460ff1615151461103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590614583565b60405180910390fd5b600b5481601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461108f9190614757565b11156110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790614403565b60405180910390fd5b6008546103e76110e09190614838565b816110ec60075461203b565b6110f69190614757565b1115611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e906143e3565b60405180910390fd5b6103e761114560075461203b565b1415611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90614363565b60405180910390fd5b3460095411156111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290614463565b60405180910390fd5b6000336040516020016111de919061411a565b604051602081830303815290604052805190602001209050611244848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506010548361262f565b611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127a906144e3565b60405180910390fd5b6112a0336007548460405180602001604052806000815250612646565b81601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546112f29190614757565b9250508190555050505050565b60001515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156114705760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600c5481601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546114c19190614757565b1115611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f9906144a3565b60405180910390fd5b60001515600d60019054906101000a900460ff16151514611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90614583565b60405180910390fd5b6008546103e76115689190614838565b8161157460075461203b565b61157e9190614757565b11156115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b6906143e3565b60405180910390fd5b6103e76115cd60075461203b565b141561160e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160590614363565b60405180910390fd5b60008111611651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164890614343565b60405180910390fd5b3481600a5461166091906147de565b11156116a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169890614463565b60405180910390fd5b6116be336007548360405180602001604052806000815250612646565b80601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546117109190614757565b9250508190555050565b611722612627565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611768575061176785611762612627565b612340565b5b6117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e90614443565b60405180910390fd5b6117b485858585856127dc565b5050505050565b6000600a54826117cb91906147de565b9050919050565b6000600a54905090565b6117e4612627565b73ffffffffffffffffffffffffffffffffffffffff16611802611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f906144c3565b60405180910390fd5b600047905060006064605c8361186e91906147de565b61187891906147ad565b90506000606460088461188b91906147de565b61189591906147ad565b9050600060646055836118a891906147de565b6118b291906147ad565b905060006064600f846118c591906147de565b6118cf91906147ad565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611917573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611980573d6000803e3d6000fd5b50600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119e9573d6000803e3d6000fd5b505050505050565b60608151835114611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e90614523565b60405180910390fd5b6000835167ffffffffffffffff811115611a5457611a53614ab8565b5b604051908082528060200260200182016040528015611a825781602001602082028036833780820191505090505b50905060005b8451811015611aff57611acf858281518110611aa757611aa6614a89565b5b6020026020010151858381518110611ac257611ac1614a89565b5b6020026020010151610a81565b828281518110611ae257611ae1614a89565b5b60200260200101818152505080611af89061498f565b9050611a88565b508091505092915050565b600080611b168361203b565b119050919050565b6000600954905090565b611b30612627565b73ffffffffffffffffffffffffffffffffffffffff16611b4e611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b906144c3565b60405180910390fd5b80600c8190555050565b600d60009054906101000a900460ff1681565b600060095482611bd191906147de565b9050919050565b60116020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60075481565b611c2a612627565b73ffffffffffffffffffffffffffffffffffffffff16611c48611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c95906144c3565b60405180910390fd5b600d60019054906101000a900460ff1615600d60016101000a81548160ff021916908315150217905550565b60095481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60068054611d079061492c565b80601f0160208091040260200160405190810160405280929190818152602001828054611d339061492c565b8015611d805780601f10611d5557610100808354040283529160200191611d80565b820191906000526020600020905b815481529060010190602001808311611d6357829003601f168201915b505050505081565b611d90612627565b73ffffffffffffffffffffffffffffffffffffffff16611dae611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb906144c3565b60405180910390fd5b8060098190555050565b8173ffffffffffffffffffffffffffffffffffffffff16611e2d612627565b73ffffffffffffffffffffffffffffffffffffffff161415611e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7b90614503565b60405180910390fd5b8060016000611e91612627565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611f3e612627565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f8391906142ab565b60405180910390a35050565b611f97612627565b73ffffffffffffffffffffffffffffffffffffffff16611fb5611cd0565b73ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906144c3565b60405180910390fd5b80600b8190555050565b60146020528060005260406000206000915054906101000a900460ff1681565b600a5481565b600060046000838152602001908152602001600020549050919050565b612060612627565b73ffffffffffffffffffffffffffffffffffffffff1661207e611cd0565b73ffffffffffffffffffffffffffffffffffffffff16146120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb906144c3565b60405180910390fd5b6008546103e76120e49190614838565b816120f060075461203b565b6120fa9190614757565b111561213b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612132906143e3565b60405180910390fd5b6103e761214960075461203b565b141561218a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218190614363565b60405180910390fd5b600081116121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c490614343565b60405180910390fd5b6121ea336007548360405180602001604052806000815250612646565b80600860008282546121fc9190614838565b9250508190555050565b61220e612627565b73ffffffffffffffffffffffffffffffffffffffff1661222c611cd0565b73ffffffffffffffffffffffffffffffffffffffff1614612282576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612279906144c3565b60405180910390fd5b80600a8190555050565b6103e781565b61229a612627565b73ffffffffffffffffffffffffffffffffffffffff166122b8611cd0565b73ffffffffffffffffffffffffffffffffffffffff161461230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305906144c3565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6123dc612627565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061242257506124218561241c612627565b612340565b5b612461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612458906143c3565b60405180910390fd5b61246e8585858585612af0565b5050505050565b61247d612627565b73ffffffffffffffffffffffffffffffffffffffff1661249b611cd0565b73ffffffffffffffffffffffffffffffffffffffff16146124f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e8906144c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612561576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612558906143a3565b60405180910390fd5b61256a81612d72565b50565b600b5481565b60136020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60085481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b60008261263c8584612e38565b1490509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156126b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ad90614563565b60405180910390fd5b60006126c0612627565b90506126e1816000876126d288612ead565b6126db88612ead565b87612f27565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127409190614757565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516127be9291906145be565b60405180910390a46127d581600087878787612f3d565b5050505050565b8151835114612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790614543565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288790614423565b60405180910390fd5b600061289a612627565b90506128aa818787878787612f27565b60005b8451811015612a5b5760008582815181106128cb576128ca614a89565b5b6020026020010151905060008583815181106128ea576128e9614a89565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561298b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298290614483565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a409190614757565b9250508190555050505080612a549061498f565b90506128ad565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612ad2929190614274565b60405180910390a4612ae8818787878787613124565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5790614423565b60405180910390fd5b6000612b6a612627565b9050612b8a818787612b7b88612ead565b612b8488612ead565b87612f27565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015612c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1890614483565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cd69190614757565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051612d539291906145be565b60405180910390a4612d69828888888888612f3d565b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008082905060005b8451811015612ea2576000858281518110612e5f57612e5e614a89565b5b60200260200101519050808311612e8157612e7a838261330b565b9250612e8e565b612e8b818461330b565b92505b508080612e9a9061498f565b915050612e41565b508091505092915050565b60606000600167ffffffffffffffff811115612ecc57612ecb614ab8565b5b604051908082528060200260200182016040528015612efa5781602001602082028036833780820191505090505b5090508281600081518110612f1257612f11614a89565b5b60200260200101818152505080915050919050565b612f35868686868686613322565b505050505050565b612f5c8473ffffffffffffffffffffffffffffffffffffffff1661349c565b1561311c578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612fa29594939291906141cf565b602060405180830381600087803b158015612fbc57600080fd5b505af1925050508015612fed57506040513d601f19601f82011682018060405250810190612fea9190613bcf565b60015b61309357612ff9614ae7565b806308c379a01415613056575061300e6150c3565b806130195750613058565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304d91906142e1565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308a90614303565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461311a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311190614323565b60405180910390fd5b505b505050505050565b6131438473ffffffffffffffffffffffffffffffffffffffff1661349c565b15613303578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401613189959493929190614167565b602060405180830381600087803b1580156131a357600080fd5b505af19250505080156131d457506040513d601f19601f820116820180604052508101906131d19190613bcf565b60015b61327a576131e0614ae7565b806308c379a0141561323d57506131f56150c3565b80613200575061323f565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323491906142e1565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327190614303565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614613301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f890614323565b60405180910390fd5b505b505050505050565b600082600052816020526040600020905092915050565b6133308686868686866134af565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156133e25760005b83518110156133e05782818151811061338457613383614a89565b5b6020026020010151600460008684815181106133a3576133a2614a89565b5b6020026020010151815260200190815260200160002060008282546133c89190614757565b92505081905550806133d99061498f565b9050613368565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156134945760005b83518110156134925782818151811061343657613435614a89565b5b60200260200101516004600086848151811061345557613454614a89565b5b60200260200101518152602001908152602001600020600082825461347a9190614838565b925050819055508061348b9061498f565b905061341a565b505b505050505050565b600080823b905060008111915050919050565b505050505050565b8280546134c39061492c565b90600052602060002090601f0160209004810192826134e5576000855561352c565b82601f106134fe57805160ff191683800117855561352c565b8280016001018555821561352c579182015b8281111561352b578251825591602001919060010190613510565b5b509050613539919061353d565b5090565b5b8082111561355657600081600090555060010161353e565b5090565b600061356d6135688461460c565b6145e7565b905080838252602082019050828560208602820111156135905761358f614b13565b5b60005b858110156135c057816135a688826136be565b845260208401935060208301925050600181019050613593565b5050509392505050565b60006135dd6135d884614638565b6145e7565b90508083825260208201905082856020860282011115613600576135ff614b13565b5b60005b8581101561363057816136168882613835565b845260208401935060208301925050600181019050613603565b5050509392505050565b600061364d61364884614664565b6145e7565b90508281526020810184848401111561366957613668614b18565b5b6136748482856148ea565b509392505050565b600061368f61368a84614695565b6145e7565b9050828152602081018484840111156136ab576136aa614b18565b5b6136b68482856148ea565b509392505050565b6000813590506136cd81615159565b92915050565b600082601f8301126136e8576136e7614b0e565b5b81356136f884826020860161355a565b91505092915050565b60008083601f84011261371757613716614b0e565b5b8235905067ffffffffffffffff81111561373457613733614b09565b5b6020830191508360208202830111156137505761374f614b13565b5b9250929050565b600082601f83011261376c5761376b614b0e565b5b813561377c8482602086016135ca565b91505092915050565b60008135905061379481615170565b92915050565b6000813590506137a981615187565b92915050565b6000813590506137be8161519e565b92915050565b6000815190506137d38161519e565b92915050565b600082601f8301126137ee576137ed614b0e565b5b81356137fe84826020860161363a565b91505092915050565b600082601f83011261381c5761381b614b0e565b5b813561382c84826020860161367c565b91505092915050565b600081359050613844816151b5565b92915050565b6000602082840312156138605761385f614b22565b5b600061386e848285016136be565b91505092915050565b6000806040838503121561388e5761388d614b22565b5b600061389c858286016136be565b92505060206138ad858286016136be565b9150509250929050565b600080600080600060a086880312156138d3576138d2614b22565b5b60006138e1888289016136be565b95505060206138f2888289016136be565b945050604086013567ffffffffffffffff81111561391357613912614b1d565b5b61391f88828901613757565b935050606086013567ffffffffffffffff8111156139405761393f614b1d565b5b61394c88828901613757565b925050608086013567ffffffffffffffff81111561396d5761396c614b1d565b5b613979888289016137d9565b9150509295509295909350565b600080600080600060a086880312156139a2576139a1614b22565b5b60006139b0888289016136be565b95505060206139c1888289016136be565b94505060406139d288828901613835565b93505060606139e388828901613835565b925050608086013567ffffffffffffffff811115613a0457613a03614b1d565b5b613a10888289016137d9565b9150509295509295909350565b60008060408385031215613a3457613a33614b22565b5b6000613a42858286016136be565b9250506020613a5385828601613785565b9150509250929050565b60008060408385031215613a7457613a73614b22565b5b6000613a82858286016136be565b9250506020613a9385828601613835565b9150509250929050565b60008060408385031215613ab457613ab3614b22565b5b600083013567ffffffffffffffff811115613ad257613ad1614b1d565b5b613ade858286016136d3565b925050602083013567ffffffffffffffff811115613aff57613afe614b1d565b5b613b0b85828601613757565b9150509250929050565b600080600060408486031215613b2e57613b2d614b22565b5b600084013567ffffffffffffffff811115613b4c57613b4b614b1d565b5b613b5886828701613701565b93509350506020613b6b86828701613835565b9150509250925092565b600060208284031215613b8b57613b8a614b22565b5b6000613b998482850161379a565b91505092915050565b600060208284031215613bb857613bb7614b22565b5b6000613bc6848285016137af565b91505092915050565b600060208284031215613be557613be4614b22565b5b6000613bf3848285016137c4565b91505092915050565b600060208284031215613c1257613c11614b22565b5b600082013567ffffffffffffffff811115613c3057613c2f614b1d565b5b613c3c84828501613807565b91505092915050565b600060208284031215613c5b57613c5a614b22565b5b6000613c6984828501613835565b91505092915050565b6000613c7e83836140fc565b60208301905092915050565b613c938161486c565b82525050565b613caa613ca58261486c565b6149d8565b82525050565b6000613cbb826146eb565b613cc58185614719565b9350613cd0836146c6565b8060005b83811015613d01578151613ce88882613c72565b9750613cf38361470c565b925050600181019050613cd4565b5085935050505092915050565b613d178161487e565b82525050565b613d268161488a565b82525050565b6000613d37826146f6565b613d41818561472a565b9350613d518185602086016148f9565b613d5a81614b27565b840191505092915050565b6000613d7082614701565b613d7a818561473b565b9350613d8a8185602086016148f9565b613d9381614b27565b840191505092915050565b60008154613dab8161492c565b613db5818661474c565b94506001821660008114613dd05760018114613de157613e14565b60ff19831686528186019350613e14565b613dea856146d6565b60005b83811015613e0c57815481890152600182019150602081019050613ded565b838801955050505b50505092915050565b6000613e2a60348361473b565b9150613e3582614b52565b604082019050919050565b6000613e4d60288361473b565b9150613e5882614ba1565b604082019050919050565b6000613e7060338361473b565b9150613e7b82614bf0565b604082019050919050565b6000613e93601d8361473b565b9150613e9e82614c3f565b602082019050919050565b6000613eb6602b8361473b565b9150613ec182614c68565b604082019050919050565b6000613ed960268361473b565b9150613ee482614cb7565b604082019050919050565b6000613efc60298361473b565b9150613f0782614d06565b604082019050919050565b6000613f1f60328361473b565b9150613f2a82614d55565b604082019050919050565b6000613f4260198361473b565b9150613f4d82614da4565b602082019050919050565b6000613f6560258361473b565b9150613f7082614dcd565b604082019050919050565b6000613f8860328361473b565b9150613f9382614e1c565b604082019050919050565b6000613fab60188361473b565b9150613fb682614e6b565b602082019050919050565b6000613fce602a8361473b565b9150613fd982614e94565b604082019050919050565b6000613ff160198361473b565b9150613ffc82614ee3565b602082019050919050565b600061401460208361473b565b915061401f82614f0c565b602082019050919050565b6000614037600d8361473b565b915061404282614f35565b602082019050919050565b600061405a60298361473b565b915061406582614f5e565b604082019050919050565b600061407d60298361473b565b915061408882614fad565b604082019050919050565b60006140a060288361473b565b91506140ab82614ffc565b604082019050919050565b60006140c360218361473b565b91506140ce8261504b565b604082019050919050565b60006140e660208361473b565b91506140f18261509a565b602082019050919050565b614105816148e0565b82525050565b614114816148e0565b82525050565b60006141268284613c99565b60148201915081905092915050565b60006141418284613d9e565b915081905092915050565b60006020820190506141616000830184613c8a565b92915050565b600060a08201905061417c6000830188613c8a565b6141896020830187613c8a565b818103604083015261419b8186613cb0565b905081810360608301526141af8185613cb0565b905081810360808301526141c38184613d2c565b90509695505050505050565b600060a0820190506141e46000830188613c8a565b6141f16020830187613c8a565b6141fe604083018661410b565b61420b606083018561410b565b818103608083015261421d8184613d2c565b90509695505050505050565b600060408201905061423e6000830185613c8a565b61424b602083018461410b565b9392505050565b6000602082019050818103600083015261426c8184613cb0565b905092915050565b6000604082019050818103600083015261428e8185613cb0565b905081810360208301526142a28184613cb0565b90509392505050565b60006020820190506142c06000830184613d0e565b92915050565b60006020820190506142db6000830184613d1d565b92915050565b600060208201905081810360008301526142fb8184613d65565b905092915050565b6000602082019050818103600083015261431c81613e1d565b9050919050565b6000602082019050818103600083015261433c81613e40565b9050919050565b6000602082019050818103600083015261435c81613e63565b9050919050565b6000602082019050818103600083015261437c81613e86565b9050919050565b6000602082019050818103600083015261439c81613ea9565b9050919050565b600060208201905081810360008301526143bc81613ecc565b9050919050565b600060208201905081810360008301526143dc81613eef565b9050919050565b600060208201905081810360008301526143fc81613f12565b9050919050565b6000602082019050818103600083015261441c81613f35565b9050919050565b6000602082019050818103600083015261443c81613f58565b9050919050565b6000602082019050818103600083015261445c81613f7b565b9050919050565b6000602082019050818103600083015261447c81613f9e565b9050919050565b6000602082019050818103600083015261449c81613fc1565b9050919050565b600060208201905081810360008301526144bc81613fe4565b9050919050565b600060208201905081810360008301526144dc81614007565b9050919050565b600060208201905081810360008301526144fc8161402a565b9050919050565b6000602082019050818103600083015261451c8161404d565b9050919050565b6000602082019050818103600083015261453c81614070565b9050919050565b6000602082019050818103600083015261455c81614093565b9050919050565b6000602082019050818103600083015261457c816140b6565b9050919050565b6000602082019050818103600083015261459c816140d9565b9050919050565b60006020820190506145b8600083018461410b565b92915050565b60006040820190506145d3600083018561410b565b6145e0602083018461410b565b9392505050565b60006145f1614602565b90506145fd828261495e565b919050565b6000604051905090565b600067ffffffffffffffff82111561462757614626614ab8565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561465357614652614ab8565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561467f5761467e614ab8565b5b61468882614b27565b9050602081019050919050565b600067ffffffffffffffff8211156146b0576146af614ab8565b5b6146b982614b27565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614762826148e0565b915061476d836148e0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147a2576147a16149fc565b5b828201905092915050565b60006147b8826148e0565b91506147c3836148e0565b9250826147d3576147d2614a2b565b5b828204905092915050565b60006147e9826148e0565b91506147f4836148e0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561482d5761482c6149fc565b5b828202905092915050565b6000614843826148e0565b915061484e836148e0565b925082821015614861576148606149fc565b5b828203905092915050565b6000614877826148c0565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156149175780820151818401526020810190506148fc565b83811115614926576000848401525b50505050565b6000600282049050600182168061494457607f821691505b6020821081141561495857614957614a5a565b5b50919050565b61496782614b27565b810181811067ffffffffffffffff8211171561498657614985614ab8565b5b80604052505050565b600061499a826148e0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156149cd576149cc6149fc565b5b600182019050919050565b60006149e3826149ea565b9050919050565b60006149f582614b38565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115614b065760046000803e614b03600051614b45565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f4e756d626572206f6620746f6b656e732063616e206e6f74206265206c65737360008201527f207468616e206f7220657175616c20746f203000000000000000000000000000602082015250565b7f416c6c20746865206e6674732068617665206265656e206d696e746564000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f53656c6563746564205175616e74697479206d757374206265206c657373657260008201527f207468616e20546f74616c20537570706c790000000000000000000000000000602082015250565b7f4d6178206d696e7473207065722077616c6c6574206973203100000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f496e73756666696369656e74204574686572732053656e740000000000000000600082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4d6178206d696e7473207065722077616c6c6574206973203500000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f53616c65206973206e6f742061637469766520617420746865206d6f6d656e74600082015250565b600060443d10156150d357615156565b6150db614602565b60043d036004823e80513d602482011167ffffffffffffffff82111715615103575050615156565b808201805167ffffffffffffffff8111156151215750505050615156565b80602083010160043d03850181111561513e575050505050615156565b61514d8260200185018661495e565b82955050505050505b90565b6151628161486c565b811461516d57600080fd5b50565b6151798161487e565b811461518457600080fd5b50565b6151908161488a565b811461519b57600080fd5b50565b6151a781614894565b81146151b257600080fd5b50565b6151be816148e0565b81146151c957600080fd5b5056fea2646970667358221220da5a36aa4ca3b2319c526e751109fc08f27a6e4ab1f704644ec5887217d0dc4164736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004025e5d8bbd0313546f3284ec0bac51cf251006fac6a16b3246be7b86f021209ba000000000000000000000000000000000000000000000000000000000000005468747470733a2f2f73796768746c696e652e6d7970696e6174612e636c6f75642f697066732f516d6350694b4c4d4a446561694c6461664e776d36756d31723774704575524464365647364d31504e4474627852000000000000000000000000
-----Decoded View---------------
Arg [0] : _baseURI (string): https://syghtline.mypinata.cloud/ipfs/QmcPiKLMJDeaiLdafNwm6um1r7tpEuRDd6VG6M1PNDtbxR
Arg [1] : finalRootHash (bytes32): 0x25e5d8bbd0313546f3284ec0bac51cf251006fac6a16b3246be7b86f021209ba
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 25e5d8bbd0313546f3284ec0bac51cf251006fac6a16b3246be7b86f021209ba
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000054
Arg [3] : 68747470733a2f2f73796768746c696e652e6d7970696e6174612e636c6f7564
Arg [4] : 2f697066732f516d6350694b4c4d4a446561694c6461664e776d36756d317237
Arg [5] : 74704575524464365647364d31504e4474627852000000000000000000000000
Deployed Bytecode Sourcemap
32098:6303:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14014:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13037:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33428:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34602:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32163:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37580:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33000:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37756:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32565:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32817:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35689:1147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34701:980;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16109:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33932:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33732:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37859:539;;;;;;;;;;;;;:::i;:::-;;14411:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27610:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33831:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34411:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32488:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34060:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32940:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;32261:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34190:101;;;;;;;;;;;;;:::i;:::-;;32321:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10898:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32188:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33627:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15008:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34505:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33125:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32367:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27489:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36844:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33524:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32215:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34299:104;;;;;;;;;;;;;:::i;:::-;;32451:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15391:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15631:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11698:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32415:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33058:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;32287:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14014:231;14100:7;14147:1;14128:21;;:7;:21;;;;14120:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;14215:9;:13;14225:2;14215:13;;;;;;;;;;;:22;14229:7;14215:22;;;;;;;;;;;;;;;;14208:29;;14014:231;;;;:::o;13037:310::-;13139:4;13191:26;13176:41;;;:11;:41;;;;:110;;;;13249:37;13234:52;;;:11;:52;;;;13176:110;:163;;;;13303:36;13327:11;13303:23;:36::i;:::-;13176:163;13156:183;;13037:310;;;:::o;33428:88::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33504:4:::1;33493:8;:15;;;;33428:88:::0;:::o;34602:90::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34678:6:::1;34668:7;:16;;;;;;;;;;;;:::i;:::-;;34602:90:::0;:::o;32163:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;37580:168::-;37640:13;37698:1;37680:7;37674:21;;;;;:::i;:::-;;;:25;:66;;;;;;;;;;;;;;;;;37726:7;37709:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;37674:66;37667:73;;37580:168;;;:::o;33000:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;37756:95::-;37800:7;37827:16;37839:3;;37827:11;:16::i;:::-;37820:23;;37756:95;:::o;32565:31::-;;;;;;;;;;;;;:::o;32817:23::-;;;;:::o;35689:1147::-;35829:5;35789:45;;:24;:36;35814:10;35789:36;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;35785:271;;;35887:99;;;;;;;;35931:10;35887:99;;;;;;35969:1;35887:99;;;35851:21;:33;35873:10;35851:33;;;;;;;;;;;;;;;:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36040:4;36001:24;:36;36026:10;36001:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;35785:271;36093:5;36074:24;;:15;;;;;;;;;;;:24;;;36066:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;36208:10;;36198:6;36154:21;:33;36176:10;36154:33;;;;;;;;;;;;;;;:41;;;:50;;;;:::i;:::-;:64;;36146:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;36311:8;;32251:3;36296:23;;;;:::i;:::-;36286:6;36267:16;36279:3;;36267:11;:16::i;:::-;:25;;;;:::i;:::-;:52;;36259:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;32251:3;36393:16;36405:3;;36393:11;:16::i;:::-;:32;;36385:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;36496:9;36479:12;;36478:27;;36470:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;36545:12;36587:10;36570:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;36560:39;;;;;;36545:54;;36632:48;36651:12;;36632:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36665:8;;36675:4;36632:18;:48::i;:::-;36610:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;36732:34;36738:10;36750:3;;36755:6;36732:34;;;;;;;;;;;;:5;:34::i;:::-;36822:6;36777:21;:33;36799:10;36777:33;;;;;;;;;;;;;;;:41;;;:51;;;;;;;:::i;:::-;;;;;;;;35774:1062;35689:1147;;;:::o;34701:980::-;34800:5;34767:38;;:17;:29;34785:10;34767:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;34763:250;;;34851:99;;;;;;;;34895:10;34851:99;;;;;;34933:1;34851:99;;;34822:14;:26;34837:10;34822:26;;;;;;;;;;;;;;;:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34997:4;34965:17;:29;34983:10;34965:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;34763:250;35078:9;;35068:6;35031:14;:26;35046:10;35031:26;;;;;;;;;;;;;;;:34;;;:43;;;;:::i;:::-;:56;;35023:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;35154:5;35136:23;;:14;;;;;;;;;;;:23;;;35128:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35259:8;;32251:3;35244:23;;;;:::i;:::-;35234:6;35215:16;35227:3;;35215:11;:16::i;:::-;:25;;;;:::i;:::-;:52;;35207:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;32251:3;35341:16;35353:3;;35341:11;:16::i;:::-;:32;;35333:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;35435:1;35426:6;:10;35418:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;35535:9;35524:6;35512:11;;:18;;;;:::i;:::-;35511:33;;35503:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;35584:34;35590:10;35602:3;;35607:6;35584:34;;;;;;;;;;;;:5;:34::i;:::-;35667:6;35629:14;:26;35644:10;35629:26;;;;;;;;;;;;;;;:34;;;:44;;;;;;;:::i;:::-;;;;;;;;34701:980;:::o;16109:442::-;16350:12;:10;:12::i;:::-;16342:20;;:4;:20;;;:60;;;;16366:36;16383:4;16389:12;:10;:12::i;:::-;16366:16;:36::i;:::-;16342:60;16320:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;16491:52;16514:4;16520:2;16524:3;16529:7;16538:4;16491:22;:52::i;:::-;16109:442;;;;;:::o;33932:120::-;33995:7;34033:11;;34022:8;:22;;;;:::i;:::-;34015:29;;33932:120;;;:::o;33732:91::-;33778:7;33804:11;;33797:18;;33732:91;:::o;37859:539::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37907:17:::1;37933:21;37907:47;;37965:17;38011:3;38006:2;37991:12;:17;;;;:::i;:::-;:23;;;;:::i;:::-;37965:49;;38025:21;38070:3;38066:1;38051:12;:16;;;;:::i;:::-;:22;;;;:::i;:::-;38025:48;;38086:21;38136:3;38131:2;38112:16;:21;;;;:::i;:::-;:27;;;;:::i;:::-;38086:53;;38150:20;38200:3;38195:2;38176:16;:21;;;;:::i;:::-;:27;;;;:::i;:::-;38150:53;;38232:10;38224:28;;:42;38253:12;38224:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;38285:16;;;;;;;;;;;38277:34;;:52;38312:16;38277:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;38348:15;;;;;;;;;;;38340:33;;:50;38374:15;38340:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;37896:502;;;;;37859:539::o:0;14411:524::-;14567:16;14628:3;:10;14609:8;:15;:29;14601:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;14697:30;14744:8;:15;14730:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14697:63;;14778:9;14773:122;14797:8;:15;14793:1;:19;14773:122;;;14853:30;14863:8;14872:1;14863:11;;;;;;;;:::i;:::-;;;;;;;;14876:3;14880:1;14876:6;;;;;;;;:::i;:::-;;;;;;;;14853:9;:30::i;:::-;14834:13;14848:1;14834:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;14814:3;;;;:::i;:::-;;;14773:122;;;;14914:13;14907:20;;;14411:524;;;;:::o;27610:122::-;27667:4;27723:1;27691:29;27717:2;27691:25;:29::i;:::-;:33;27684:40;;27610:122;;;:::o;33831:93::-;33878:7;33904:12;;33897:19;;33831:93;:::o;34411:86::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34486:3:::1;34474:9;:15;;;;34411:86:::0;:::o;32488:32::-;;;;;;;;;;;;;:::o;34060:122::-;34124:7;34162:12;;34151:8;:23;;;;:::i;:::-;34144:30;;34060:122;;;:::o;32940:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32261:19::-;;;;:::o;34190:101::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34269:14:::1;;;;;;;;;;;34268:15;34251:14;;:32;;;;;;;;;;;;;;;;;;34190:101::o:0;32321:39::-;;;;:::o;10898:87::-;10944:7;10971:6;;;;;;;;;;;10964:13;;10898:87;:::o;32188:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;33627:97::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33710:6:::1;33695:12;:21;;;;33627:97:::0;:::o;15008:311::-;15127:8;15111:24;;:12;:10;:12::i;:::-;:24;;;;15103:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15239:8;15194:18;:32;15213:12;:10;:12::i;:::-;15194:32;;;;;;;;;;;;;;;:42;15227:8;15194:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;15292:8;15263:48;;15278:12;:10;:12::i;:::-;15263:48;;;15302:8;15263:48;;;;;;:::i;:::-;;;;;;;;15008:311;;:::o;34505:88::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34582:3:::1;34569:10;:16;;;;34505:88:::0;:::o;33125:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;32367:39::-;;;;:::o;27489:113::-;27551:7;27578:12;:16;27591:2;27578:16;;;;;;;;;;;;27571:23;;27489:113;;;:::o;36844:430::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36959:8:::1;;32251:3;36944:23;;;;:::i;:::-;36934:6;36915:16;36927:3;;36915:11;:16::i;:::-;:25;;;;:::i;:::-;:52;;36907:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;32251:3;37041:16;37053:3;;37041:11;:16::i;:::-;:32;;37033:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;37135:1;37126:6;:10;37118:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;37203:34;37209:10;37221:3;;37226:6;37203:34;;;;;;;;;;;::::0;:5:::1;:34::i;:::-;37260:6;37248:8;;:18;;;;;;;:::i;:::-;;;;;;;;36844:430:::0;:::o;33524:95::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33605:6:::1;33591:11;:20;;;;33524:95:::0;:::o;32215:39::-;32251:3;32215:39;:::o;34299:104::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34380:15:::1;;;;;;;;;;;34379:16;34361:15;;:34;;;;;;;;;;;;;;;;;;34299:104::o:0;32451:28::-;;;;:::o;15391:168::-;15490:4;15514:18;:27;15533:7;15514:27;;;;;;;;;;;;;;;:37;15542:8;15514:37;;;;;;;;;;;;;;;;;;;;;;;;;15507:44;;15391:168;;;;:::o;15631:401::-;15847:12;:10;:12::i;:::-;15839:20;;:4;:20;;;:60;;;;15863:36;15880:4;15886:12;:10;:12::i;:::-;15863:16;:36::i;:::-;15839:60;15817:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;15979:45;15997:4;16003:2;16007;16011:6;16019:4;15979:17;:45::i;:::-;15631:401;;;;;:::o;11698:192::-;11129:12;:10;:12::i;:::-;11118:23;;:7;:5;:7::i;:::-;:23;;;11110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11807:1:::1;11787:22;;:8;:22;;;;11779:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11863:19;11873:8;11863:9;:19::i;:::-;11698:192:::0;:::o;32415:29::-;;;;:::o;33058:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32287:25::-;;;;:::o;12185:157::-;12270:4;12309:25;12294:40;;;:11;:40;;;;12287:47;;12185:157;;;:::o;10183:98::-;10236:7;10263:10;10256:17;;10183:98;:::o;30569:190::-;30694:4;30747;30718:25;30731:5;30738:4;30718:12;:25::i;:::-;:33;30711:40;;30569:190;;;;;:::o;20600:599::-;20777:1;20758:21;;:7;:21;;;;20750:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20830:16;20849:12;:10;:12::i;:::-;20830:31;;20874:107;20895:8;20913:1;20917:7;20926:21;20944:2;20926:17;:21::i;:::-;20949:25;20967:6;20949:17;:25::i;:::-;20976:4;20874:20;:107::i;:::-;21020:6;20994:9;:13;21004:2;20994:13;;;;;;;;;;;:22;21008:7;20994:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;21079:7;21042:57;;21075:1;21042:57;;21057:8;21042:57;;;21088:2;21092:6;21042:57;;;;;;;:::i;:::-;;;;;;;;21112:79;21143:8;21161:1;21165:7;21174:2;21178:6;21186:4;21112:30;:79::i;:::-;20739:460;20600:599;;;;:::o;18193:1074::-;18420:7;:14;18406:3;:10;:28;18398:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;18512:1;18498:16;;:2;:16;;;;18490:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18569:16;18588:12;:10;:12::i;:::-;18569:31;;18613:60;18634:8;18644:4;18650:2;18654:3;18659:7;18668:4;18613:20;:60::i;:::-;18691:9;18686:421;18710:3;:10;18706:1;:14;18686:421;;;18742:10;18755:3;18759:1;18755:6;;;;;;;;:::i;:::-;;;;;;;;18742:19;;18776:14;18793:7;18801:1;18793:10;;;;;;;;:::i;:::-;;;;;;;;18776:27;;18820:19;18842:9;:13;18852:2;18842:13;;;;;;;;;;;:19;18856:4;18842:19;;;;;;;;;;;;;;;;18820:41;;18899:6;18884:11;:21;;18876:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19032:6;19018:11;:20;18996:9;:13;19006:2;18996:13;;;;;;;;;;;:19;19010:4;18996:19;;;;;;;;;;;;;;;:42;;;;19089:6;19068:9;:13;19078:2;19068:13;;;;;;;;;;;:17;19082:2;19068:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;18727:380;;;18722:3;;;;:::i;:::-;;;18686:421;;;;19154:2;19124:47;;19148:4;19124:47;;19138:8;19124:47;;;19158:3;19163:7;19124:47;;;;;;;:::i;:::-;;;;;;;;19184:75;19220:8;19230:4;19236:2;19240:3;19245:7;19254:4;19184:35;:75::i;:::-;18387:880;18193:1074;;;;;:::o;17015:820::-;17217:1;17203:16;;:2;:16;;;;17195:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17274:16;17293:12;:10;:12::i;:::-;17274:31;;17318:96;17339:8;17349:4;17355:2;17359:21;17377:2;17359:17;:21::i;:::-;17382:25;17400:6;17382:17;:25::i;:::-;17409:4;17318:20;:96::i;:::-;17427:19;17449:9;:13;17459:2;17449:13;;;;;;;;;;;:19;17463:4;17449:19;;;;;;;;;;;;;;;;17427:41;;17502:6;17487:11;:21;;17479:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;17627:6;17613:11;:20;17591:9;:13;17601:2;17591:13;;;;;;;;;;;:19;17605:4;17591:19;;;;;;;;;;;;;;;:42;;;;17676:6;17655:9;:13;17665:2;17655:13;;;;;;;;;;;:17;17669:2;17655:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;17731:2;17700:46;;17725:4;17700:46;;17715:8;17700:46;;;17735:2;17739:6;17700:46;;;;;;;:::i;:::-;;;;;;;;17759:68;17790:8;17800:4;17806:2;17810;17814:6;17822:4;17759:30;:68::i;:::-;17184:651;;17015:820;;;;;:::o;11898:173::-;11954:16;11973:6;;;;;;;;;;;11954:25;;11999:8;11990:6;;:17;;;;;;;;;;;;;;;;;;12054:8;12023:40;;12044:8;12023:40;;;;;;;;;;;;11943:128;11898:173;:::o;31120:707::-;31230:7;31255:20;31278:4;31255:27;;31298:9;31293:497;31317:5;:12;31313:1;:16;31293:497;;;31351:20;31374:5;31380:1;31374:8;;;;;;;;:::i;:::-;;;;;;;;31351:31;;31417:12;31401;:28;31397:382;;31544:42;31559:12;31573;31544:14;:42::i;:::-;31529:57;;31397:382;;;31721:42;31736:12;31750;31721:14;:42::i;:::-;31706:57;;31397:382;31336:454;31331:3;;;;;:::i;:::-;;;;31293:497;;;;31807:12;31800:19;;;31120:707;;;;:::o;27103:198::-;27169:16;27198:22;27237:1;27223:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27198:41;;27261:7;27250:5;27256:1;27250:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;27288:5;27281:12;;;27103:198;;;:::o;37282:286::-;37494:66;37521:8;37531:4;37537:2;37541:3;37546:7;37555:4;37494:26;:66::i;:::-;37282:286;;;;;;:::o;25530:744::-;25745:15;:2;:13;;;:15::i;:::-;25741:526;;;25798:2;25781:38;;;25820:8;25830:4;25836:2;25840:6;25848:4;25781:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;25777:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;26129:6;26122:14;;;;;;;;;;;:::i;:::-;;;;;;;;25777:479;;;26178:62;;;;;;;;;;:::i;:::-;;;;;;;;25777:479;25915:43;;;25903:55;;;:8;:55;;;;25899:154;;25983:50;;;;;;;;;;:::i;:::-;;;;;;;;25899:154;25854:214;25741:526;25530:744;;;;;;:::o;26282:813::-;26522:15;:2;:13;;;:15::i;:::-;26518:570;;;26575:2;26558:43;;;26602:8;26612:4;26618:3;26623:7;26632:4;26558:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26554:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;26950:6;26943:14;;;;;;;;;;;:::i;:::-;;;;;;;;26554:523;;;26999:62;;;;;;;;;;:::i;:::-;;;;;;;;26554:523;26731:48;;;26719:60;;;:8;:60;;;;26715:159;;26804:50;;;;;;;;;;:::i;:::-;;;;;;;;26715:159;26638:251;26518:570;26282:813;;;;;;:::o;31835:256::-;31930:13;31998:1;31992:4;31985:15;32027:1;32021:4;32014:15;32068:4;32062;32052:21;32043:30;;31835:256;;;;:::o;27738:655::-;27977:66;28004:8;28014:4;28020:2;28024:3;28029:7;28038:4;27977:26;:66::i;:::-;28076:1;28060:18;;:4;:18;;;28056:160;;;28100:9;28095:110;28119:3;:10;28115:1;:14;28095:110;;;28179:7;28187:1;28179:10;;;;;;;;:::i;:::-;;;;;;;;28155:12;:20;28168:3;28172:1;28168:6;;;;;;;;:::i;:::-;;;;;;;;28155:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;28131:3;;;;:::i;:::-;;;28095:110;;;;28056:160;28246:1;28232:16;;:2;:16;;;28228:158;;;28270:9;28265:110;28289:3;:10;28285:1;:14;28265:110;;;28349:7;28357:1;28349:10;;;;;;;;:::i;:::-;;;;;;;;28325:12;:20;28338:3;28342:1;28338:6;;;;;;;;:::i;:::-;;;;;;;;28325:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;28301:3;;;;:::i;:::-;;;28265:110;;;;28228:158;27738:655;;;;;;:::o;5887:198::-;5947:4;5966:12;6033:7;6021:20;6013:28;;6076:1;6069:4;:8;6062:15;;;5887:198;;;:::o;25301:221::-;;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:568::-;2959:8;2969:6;3019:3;3012:4;3004:6;3000:17;2996:27;2986:122;;3027:79;;:::i;:::-;2986:122;3140:6;3127:20;3117:30;;3170:18;3162:6;3159:30;3156:117;;;3192:79;;:::i;:::-;3156:117;3306:4;3298:6;3294:17;3282:29;;3360:3;3352:4;3344:6;3340:17;3330:8;3326:32;3323:41;3320:128;;;3367:79;;:::i;:::-;3320:128;2886:568;;;;;:::o;3477:370::-;3548:5;3597:3;3590:4;3582:6;3578:17;3574:27;3564:122;;3605:79;;:::i;:::-;3564:122;3722:6;3709:20;3747:94;3837:3;3829:6;3822:4;3814:6;3810:17;3747:94;:::i;:::-;3738:103;;3554:293;3477:370;;;;:::o;3853:133::-;3896:5;3934:6;3921:20;3912:29;;3950:30;3974:5;3950:30;:::i;:::-;3853:133;;;;:::o;3992:139::-;4038:5;4076:6;4063:20;4054:29;;4092:33;4119:5;4092:33;:::i;:::-;3992:139;;;;:::o;4137:137::-;4182:5;4220:6;4207:20;4198:29;;4236:32;4262:5;4236:32;:::i;:::-;4137:137;;;;:::o;4280:141::-;4336:5;4367:6;4361:13;4352:22;;4383:32;4409:5;4383:32;:::i;:::-;4280:141;;;;:::o;4440:338::-;4495:5;4544:3;4537:4;4529:6;4525:17;4521:27;4511:122;;4552:79;;:::i;:::-;4511:122;4669:6;4656:20;4694:78;4768:3;4760:6;4753:4;4745:6;4741:17;4694:78;:::i;:::-;4685:87;;4501:277;4440:338;;;;:::o;4798:340::-;4854:5;4903:3;4896:4;4888:6;4884:17;4880:27;4870:122;;4911:79;;:::i;:::-;4870:122;5028:6;5015:20;5053:79;5128:3;5120:6;5113:4;5105:6;5101:17;5053:79;:::i;:::-;5044:88;;4860:278;4798:340;;;;:::o;5144:139::-;5190:5;5228:6;5215:20;5206:29;;5244:33;5271:5;5244:33;:::i;:::-;5144:139;;;;:::o;5289:329::-;5348:6;5397:2;5385:9;5376:7;5372:23;5368:32;5365:119;;;5403:79;;:::i;:::-;5365:119;5523:1;5548:53;5593:7;5584:6;5573:9;5569:22;5548:53;:::i;:::-;5538:63;;5494:117;5289:329;;;;:::o;5624:474::-;5692:6;5700;5749:2;5737:9;5728:7;5724:23;5720:32;5717:119;;;5755:79;;:::i;:::-;5717:119;5875:1;5900:53;5945:7;5936:6;5925:9;5921:22;5900:53;:::i;:::-;5890:63;;5846:117;6002:2;6028:53;6073:7;6064:6;6053:9;6049:22;6028:53;:::i;:::-;6018:63;;5973:118;5624:474;;;;;:::o;6104:1509::-;6258:6;6266;6274;6282;6290;6339:3;6327:9;6318:7;6314:23;6310:33;6307:120;;;6346:79;;:::i;:::-;6307:120;6466:1;6491:53;6536:7;6527:6;6516:9;6512:22;6491:53;:::i;:::-;6481:63;;6437:117;6593:2;6619:53;6664:7;6655:6;6644:9;6640:22;6619:53;:::i;:::-;6609:63;;6564:118;6749:2;6738:9;6734:18;6721:32;6780:18;6772:6;6769:30;6766:117;;;6802:79;;:::i;:::-;6766:117;6907:78;6977:7;6968:6;6957:9;6953:22;6907:78;:::i;:::-;6897:88;;6692:303;7062:2;7051:9;7047:18;7034:32;7093:18;7085:6;7082:30;7079:117;;;7115:79;;:::i;:::-;7079:117;7220:78;7290:7;7281:6;7270:9;7266:22;7220:78;:::i;:::-;7210:88;;7005:303;7375:3;7364:9;7360:19;7347:33;7407:18;7399:6;7396:30;7393:117;;;7429:79;;:::i;:::-;7393:117;7534:62;7588:7;7579:6;7568:9;7564:22;7534:62;:::i;:::-;7524:72;;7318:288;6104:1509;;;;;;;;:::o;7619:1089::-;7723:6;7731;7739;7747;7755;7804:3;7792:9;7783:7;7779:23;7775:33;7772:120;;;7811:79;;:::i;:::-;7772:120;7931:1;7956:53;8001:7;7992:6;7981:9;7977:22;7956:53;:::i;:::-;7946:63;;7902:117;8058:2;8084:53;8129:7;8120:6;8109:9;8105:22;8084:53;:::i;:::-;8074:63;;8029:118;8186:2;8212:53;8257:7;8248:6;8237:9;8233:22;8212:53;:::i;:::-;8202:63;;8157:118;8314:2;8340:53;8385:7;8376:6;8365:9;8361:22;8340:53;:::i;:::-;8330:63;;8285:118;8470:3;8459:9;8455:19;8442:33;8502:18;8494:6;8491:30;8488:117;;;8524:79;;:::i;:::-;8488:117;8629:62;8683:7;8674:6;8663:9;8659:22;8629:62;:::i;:::-;8619:72;;8413:288;7619:1089;;;;;;;;:::o;8714:468::-;8779:6;8787;8836:2;8824:9;8815:7;8811:23;8807:32;8804:119;;;8842:79;;:::i;:::-;8804:119;8962:1;8987:53;9032:7;9023:6;9012:9;9008:22;8987:53;:::i;:::-;8977:63;;8933:117;9089:2;9115:50;9157:7;9148:6;9137:9;9133:22;9115:50;:::i;:::-;9105:60;;9060:115;8714:468;;;;;:::o;9188:474::-;9256:6;9264;9313:2;9301:9;9292:7;9288:23;9284:32;9281:119;;;9319:79;;:::i;:::-;9281:119;9439:1;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9410:117;9566:2;9592:53;9637:7;9628:6;9617:9;9613:22;9592:53;:::i;:::-;9582:63;;9537:118;9188:474;;;;;:::o;9668:894::-;9786:6;9794;9843:2;9831:9;9822:7;9818:23;9814:32;9811:119;;;9849:79;;:::i;:::-;9811:119;9997:1;9986:9;9982:17;9969:31;10027:18;10019:6;10016:30;10013:117;;;10049:79;;:::i;:::-;10013:117;10154:78;10224:7;10215:6;10204:9;10200:22;10154:78;:::i;:::-;10144:88;;9940:302;10309:2;10298:9;10294:18;10281:32;10340:18;10332:6;10329:30;10326:117;;;10362:79;;:::i;:::-;10326:117;10467:78;10537:7;10528:6;10517:9;10513:22;10467:78;:::i;:::-;10457:88;;10252:303;9668:894;;;;;:::o;10568:704::-;10663:6;10671;10679;10728:2;10716:9;10707:7;10703:23;10699:32;10696:119;;;10734:79;;:::i;:::-;10696:119;10882:1;10871:9;10867:17;10854:31;10912:18;10904:6;10901:30;10898:117;;;10934:79;;:::i;:::-;10898:117;11047:80;11119:7;11110:6;11099:9;11095:22;11047:80;:::i;:::-;11029:98;;;;10825:312;11176:2;11202:53;11247:7;11238:6;11227:9;11223:22;11202:53;:::i;:::-;11192:63;;11147:118;10568:704;;;;;:::o;11278:329::-;11337:6;11386:2;11374:9;11365:7;11361:23;11357:32;11354:119;;;11392:79;;:::i;:::-;11354:119;11512:1;11537:53;11582:7;11573:6;11562:9;11558:22;11537:53;:::i;:::-;11527:63;;11483:117;11278:329;;;;:::o;11613:327::-;11671:6;11720:2;11708:9;11699:7;11695:23;11691:32;11688:119;;;11726:79;;:::i;:::-;11688:119;11846:1;11871:52;11915:7;11906:6;11895:9;11891:22;11871:52;:::i;:::-;11861:62;;11817:116;11613:327;;;;:::o;11946:349::-;12015:6;12064:2;12052:9;12043:7;12039:23;12035:32;12032:119;;;12070:79;;:::i;:::-;12032:119;12190:1;12215:63;12270:7;12261:6;12250:9;12246:22;12215:63;:::i;:::-;12205:73;;12161:127;11946:349;;;;:::o;12301:509::-;12370:6;12419:2;12407:9;12398:7;12394:23;12390:32;12387:119;;;12425:79;;:::i;:::-;12387:119;12573:1;12562:9;12558:17;12545:31;12603:18;12595:6;12592:30;12589:117;;;12625:79;;:::i;:::-;12589:117;12730:63;12785:7;12776:6;12765:9;12761:22;12730:63;:::i;:::-;12720:73;;12516:287;12301:509;;;;:::o;12816:329::-;12875:6;12924:2;12912:9;12903:7;12899:23;12895:32;12892:119;;;12930:79;;:::i;:::-;12892:119;13050:1;13075:53;13120:7;13111:6;13100:9;13096:22;13075:53;:::i;:::-;13065:63;;13021:117;12816:329;;;;:::o;13151:179::-;13220:10;13241:46;13283:3;13275:6;13241:46;:::i;:::-;13319:4;13314:3;13310:14;13296:28;;13151:179;;;;:::o;13336:118::-;13423:24;13441:5;13423:24;:::i;:::-;13418:3;13411:37;13336:118;;:::o;13460:157::-;13565:45;13585:24;13603:5;13585:24;:::i;:::-;13565:45;:::i;:::-;13560:3;13553:58;13460:157;;:::o;13653:732::-;13772:3;13801:54;13849:5;13801:54;:::i;:::-;13871:86;13950:6;13945:3;13871:86;:::i;:::-;13864:93;;13981:56;14031:5;13981:56;:::i;:::-;14060:7;14091:1;14076:284;14101:6;14098:1;14095:13;14076:284;;;14177:6;14171:13;14204:63;14263:3;14248:13;14204:63;:::i;:::-;14197:70;;14290:60;14343:6;14290:60;:::i;:::-;14280:70;;14136:224;14123:1;14120;14116:9;14111:14;;14076:284;;;14080:14;14376:3;14369:10;;13777:608;;;13653:732;;;;:::o;14391:109::-;14472:21;14487:5;14472:21;:::i;:::-;14467:3;14460:34;14391:109;;:::o;14506:118::-;14593:24;14611:5;14593:24;:::i;:::-;14588:3;14581:37;14506:118;;:::o;14630:360::-;14716:3;14744:38;14776:5;14744:38;:::i;:::-;14798:70;14861:6;14856:3;14798:70;:::i;:::-;14791:77;;14877:52;14922:6;14917:3;14910:4;14903:5;14899:16;14877:52;:::i;:::-;14954:29;14976:6;14954:29;:::i;:::-;14949:3;14945:39;14938:46;;14720:270;14630:360;;;;:::o;14996:364::-;15084:3;15112:39;15145:5;15112:39;:::i;:::-;15167:71;15231:6;15226:3;15167:71;:::i;:::-;15160:78;;15247:52;15292:6;15287:3;15280:4;15273:5;15269:16;15247:52;:::i;:::-;15324:29;15346:6;15324:29;:::i;:::-;15319:3;15315:39;15308:46;;15088:272;14996:364;;;;:::o;15390:845::-;15493:3;15530:5;15524:12;15559:36;15585:9;15559:36;:::i;:::-;15611:89;15693:6;15688:3;15611:89;:::i;:::-;15604:96;;15731:1;15720:9;15716:17;15747:1;15742:137;;;;15893:1;15888:341;;;;15709:520;;15742:137;15826:4;15822:9;15811;15807:25;15802:3;15795:38;15862:6;15857:3;15853:16;15846:23;;15742:137;;15888:341;15955:38;15987:5;15955:38;:::i;:::-;16015:1;16029:154;16043:6;16040:1;16037:13;16029:154;;;16117:7;16111:14;16107:1;16102:3;16098:11;16091:35;16167:1;16158:7;16154:15;16143:26;;16065:4;16062:1;16058:12;16053:17;;16029:154;;;16212:6;16207:3;16203:16;16196:23;;15895:334;;15709:520;;15497:738;;15390:845;;;;:::o;16241:366::-;16383:3;16404:67;16468:2;16463:3;16404:67;:::i;:::-;16397:74;;16480:93;16569:3;16480:93;:::i;:::-;16598:2;16593:3;16589:12;16582:19;;16241:366;;;:::o;16613:::-;16755:3;16776:67;16840:2;16835:3;16776:67;:::i;:::-;16769:74;;16852:93;16941:3;16852:93;:::i;:::-;16970:2;16965:3;16961:12;16954:19;;16613:366;;;:::o;16985:::-;17127:3;17148:67;17212:2;17207:3;17148:67;:::i;:::-;17141:74;;17224:93;17313:3;17224:93;:::i;:::-;17342:2;17337:3;17333:12;17326:19;;16985:366;;;:::o;17357:::-;17499:3;17520:67;17584:2;17579:3;17520:67;:::i;:::-;17513:74;;17596:93;17685:3;17596:93;:::i;:::-;17714:2;17709:3;17705:12;17698:19;;17357:366;;;:::o;17729:::-;17871:3;17892:67;17956:2;17951:3;17892:67;:::i;:::-;17885:74;;17968:93;18057:3;17968:93;:::i;:::-;18086:2;18081:3;18077:12;18070:19;;17729:366;;;:::o;18101:::-;18243:3;18264:67;18328:2;18323:3;18264:67;:::i;:::-;18257:74;;18340:93;18429:3;18340:93;:::i;:::-;18458:2;18453:3;18449:12;18442:19;;18101:366;;;:::o;18473:::-;18615:3;18636:67;18700:2;18695:3;18636:67;:::i;:::-;18629:74;;18712:93;18801:3;18712:93;:::i;:::-;18830:2;18825:3;18821:12;18814:19;;18473:366;;;:::o;18845:::-;18987:3;19008:67;19072:2;19067:3;19008:67;:::i;:::-;19001:74;;19084:93;19173:3;19084:93;:::i;:::-;19202:2;19197:3;19193:12;19186:19;;18845:366;;;:::o;19217:::-;19359:3;19380:67;19444:2;19439:3;19380:67;:::i;:::-;19373:74;;19456:93;19545:3;19456:93;:::i;:::-;19574:2;19569:3;19565:12;19558:19;;19217:366;;;:::o;19589:::-;19731:3;19752:67;19816:2;19811:3;19752:67;:::i;:::-;19745:74;;19828:93;19917:3;19828:93;:::i;:::-;19946:2;19941:3;19937:12;19930:19;;19589:366;;;:::o;19961:::-;20103:3;20124:67;20188:2;20183:3;20124:67;:::i;:::-;20117:74;;20200:93;20289:3;20200:93;:::i;:::-;20318:2;20313:3;20309:12;20302:19;;19961:366;;;:::o;20333:::-;20475:3;20496:67;20560:2;20555:3;20496:67;:::i;:::-;20489:74;;20572:93;20661:3;20572:93;:::i;:::-;20690:2;20685:3;20681:12;20674:19;;20333:366;;;:::o;20705:::-;20847:3;20868:67;20932:2;20927:3;20868:67;:::i;:::-;20861:74;;20944:93;21033:3;20944:93;:::i;:::-;21062:2;21057:3;21053:12;21046:19;;20705:366;;;:::o;21077:::-;21219:3;21240:67;21304:2;21299:3;21240:67;:::i;:::-;21233:74;;21316:93;21405:3;21316:93;:::i;:::-;21434:2;21429:3;21425:12;21418:19;;21077:366;;;:::o;21449:::-;21591:3;21612:67;21676:2;21671:3;21612:67;:::i;:::-;21605:74;;21688:93;21777:3;21688:93;:::i;:::-;21806:2;21801:3;21797:12;21790:19;;21449:366;;;:::o;21821:::-;21963:3;21984:67;22048:2;22043:3;21984:67;:::i;:::-;21977:74;;22060:93;22149:3;22060:93;:::i;:::-;22178:2;22173:3;22169:12;22162:19;;21821:366;;;:::o;22193:::-;22335:3;22356:67;22420:2;22415:3;22356:67;:::i;:::-;22349:74;;22432:93;22521:3;22432:93;:::i;:::-;22550:2;22545:3;22541:12;22534:19;;22193:366;;;:::o;22565:::-;22707:3;22728:67;22792:2;22787:3;22728:67;:::i;:::-;22721:74;;22804:93;22893:3;22804:93;:::i;:::-;22922:2;22917:3;22913:12;22906:19;;22565:366;;;:::o;22937:::-;23079:3;23100:67;23164:2;23159:3;23100:67;:::i;:::-;23093:74;;23176:93;23265:3;23176:93;:::i;:::-;23294:2;23289:3;23285:12;23278:19;;22937:366;;;:::o;23309:::-;23451:3;23472:67;23536:2;23531:3;23472:67;:::i;:::-;23465:74;;23548:93;23637:3;23548:93;:::i;:::-;23666:2;23661:3;23657:12;23650:19;;23309:366;;;:::o;23681:::-;23823:3;23844:67;23908:2;23903:3;23844:67;:::i;:::-;23837:74;;23920:93;24009:3;23920:93;:::i;:::-;24038:2;24033:3;24029:12;24022:19;;23681:366;;;:::o;24053:108::-;24130:24;24148:5;24130:24;:::i;:::-;24125:3;24118:37;24053:108;;:::o;24167:118::-;24254:24;24272:5;24254:24;:::i;:::-;24249:3;24242:37;24167:118;;:::o;24291:256::-;24403:3;24418:75;24489:3;24480:6;24418:75;:::i;:::-;24518:2;24513:3;24509:12;24502:19;;24538:3;24531:10;;24291:256;;;;:::o;24553:269::-;24682:3;24704:92;24792:3;24783:6;24704:92;:::i;:::-;24697:99;;24813:3;24806:10;;24553:269;;;;:::o;24828:222::-;24921:4;24959:2;24948:9;24944:18;24936:26;;24972:71;25040:1;25029:9;25025:17;25016:6;24972:71;:::i;:::-;24828:222;;;;:::o;25056:1053::-;25379:4;25417:3;25406:9;25402:19;25394:27;;25431:71;25499:1;25488:9;25484:17;25475:6;25431:71;:::i;:::-;25512:72;25580:2;25569:9;25565:18;25556:6;25512:72;:::i;:::-;25631:9;25625:4;25621:20;25616:2;25605:9;25601:18;25594:48;25659:108;25762:4;25753:6;25659:108;:::i;:::-;25651:116;;25814:9;25808:4;25804:20;25799:2;25788:9;25784:18;25777:48;25842:108;25945:4;25936:6;25842:108;:::i;:::-;25834:116;;25998:9;25992:4;25988:20;25982:3;25971:9;25967:19;25960:49;26026:76;26097:4;26088:6;26026:76;:::i;:::-;26018:84;;25056:1053;;;;;;;;:::o;26115:751::-;26338:4;26376:3;26365:9;26361:19;26353:27;;26390:71;26458:1;26447:9;26443:17;26434:6;26390:71;:::i;:::-;26471:72;26539:2;26528:9;26524:18;26515:6;26471:72;:::i;:::-;26553;26621:2;26610:9;26606:18;26597:6;26553:72;:::i;:::-;26635;26703:2;26692:9;26688:18;26679:6;26635:72;:::i;:::-;26755:9;26749:4;26745:20;26739:3;26728:9;26724:19;26717:49;26783:76;26854:4;26845:6;26783:76;:::i;:::-;26775:84;;26115:751;;;;;;;;:::o;26872:332::-;26993:4;27031:2;27020:9;27016:18;27008:26;;27044:71;27112:1;27101:9;27097:17;27088:6;27044:71;:::i;:::-;27125:72;27193:2;27182:9;27178:18;27169:6;27125:72;:::i;:::-;26872:332;;;;;:::o;27210:373::-;27353:4;27391:2;27380:9;27376:18;27368:26;;27440:9;27434:4;27430:20;27426:1;27415:9;27411:17;27404:47;27468:108;27571:4;27562:6;27468:108;:::i;:::-;27460:116;;27210:373;;;;:::o;27589:634::-;27810:4;27848:2;27837:9;27833:18;27825:26;;27897:9;27891:4;27887:20;27883:1;27872:9;27868:17;27861:47;27925:108;28028:4;28019:6;27925:108;:::i;:::-;27917:116;;28080:9;28074:4;28070:20;28065:2;28054:9;28050:18;28043:48;28108:108;28211:4;28202:6;28108:108;:::i;:::-;28100:116;;27589:634;;;;;:::o;28229:210::-;28316:4;28354:2;28343:9;28339:18;28331:26;;28367:65;28429:1;28418:9;28414:17;28405:6;28367:65;:::i;:::-;28229:210;;;;:::o;28445:222::-;28538:4;28576:2;28565:9;28561:18;28553:26;;28589:71;28657:1;28646:9;28642:17;28633:6;28589:71;:::i;:::-;28445:222;;;;:::o;28673:313::-;28786:4;28824:2;28813:9;28809:18;28801:26;;28873:9;28867:4;28863:20;28859:1;28848:9;28844:17;28837:47;28901:78;28974:4;28965:6;28901:78;:::i;:::-;28893:86;;28673:313;;;;:::o;28992:419::-;29158:4;29196:2;29185:9;29181:18;29173:26;;29245:9;29239:4;29235:20;29231:1;29220:9;29216:17;29209:47;29273:131;29399:4;29273:131;:::i;:::-;29265:139;;28992:419;;;:::o;29417:::-;29583:4;29621:2;29610:9;29606:18;29598:26;;29670:9;29664:4;29660:20;29656:1;29645:9;29641:17;29634:47;29698:131;29824:4;29698:131;:::i;:::-;29690:139;;29417:419;;;:::o;29842:::-;30008:4;30046:2;30035:9;30031:18;30023:26;;30095:9;30089:4;30085:20;30081:1;30070:9;30066:17;30059:47;30123:131;30249:4;30123:131;:::i;:::-;30115:139;;29842:419;;;:::o;30267:::-;30433:4;30471:2;30460:9;30456:18;30448:26;;30520:9;30514:4;30510:20;30506:1;30495:9;30491:17;30484:47;30548:131;30674:4;30548:131;:::i;:::-;30540:139;;30267:419;;;:::o;30692:::-;30858:4;30896:2;30885:9;30881:18;30873:26;;30945:9;30939:4;30935:20;30931:1;30920:9;30916:17;30909:47;30973:131;31099:4;30973:131;:::i;:::-;30965:139;;30692:419;;;:::o;31117:::-;31283:4;31321:2;31310:9;31306:18;31298:26;;31370:9;31364:4;31360:20;31356:1;31345:9;31341:17;31334:47;31398:131;31524:4;31398:131;:::i;:::-;31390:139;;31117:419;;;:::o;31542:::-;31708:4;31746:2;31735:9;31731:18;31723:26;;31795:9;31789:4;31785:20;31781:1;31770:9;31766:17;31759:47;31823:131;31949:4;31823:131;:::i;:::-;31815:139;;31542:419;;;:::o;31967:::-;32133:4;32171:2;32160:9;32156:18;32148:26;;32220:9;32214:4;32210:20;32206:1;32195:9;32191:17;32184:47;32248:131;32374:4;32248:131;:::i;:::-;32240:139;;31967:419;;;:::o;32392:::-;32558:4;32596:2;32585:9;32581:18;32573:26;;32645:9;32639:4;32635:20;32631:1;32620:9;32616:17;32609:47;32673:131;32799:4;32673:131;:::i;:::-;32665:139;;32392:419;;;:::o;32817:::-;32983:4;33021:2;33010:9;33006:18;32998:26;;33070:9;33064:4;33060:20;33056:1;33045:9;33041:17;33034:47;33098:131;33224:4;33098:131;:::i;:::-;33090:139;;32817:419;;;:::o;33242:::-;33408:4;33446:2;33435:9;33431:18;33423:26;;33495:9;33489:4;33485:20;33481:1;33470:9;33466:17;33459:47;33523:131;33649:4;33523:131;:::i;:::-;33515:139;;33242:419;;;:::o;33667:::-;33833:4;33871:2;33860:9;33856:18;33848:26;;33920:9;33914:4;33910:20;33906:1;33895:9;33891:17;33884:47;33948:131;34074:4;33948:131;:::i;:::-;33940:139;;33667:419;;;:::o;34092:::-;34258:4;34296:2;34285:9;34281:18;34273:26;;34345:9;34339:4;34335:20;34331:1;34320:9;34316:17;34309:47;34373:131;34499:4;34373:131;:::i;:::-;34365:139;;34092:419;;;:::o;34517:::-;34683:4;34721:2;34710:9;34706:18;34698:26;;34770:9;34764:4;34760:20;34756:1;34745:9;34741:17;34734:47;34798:131;34924:4;34798:131;:::i;:::-;34790:139;;34517:419;;;:::o;34942:::-;35108:4;35146:2;35135:9;35131:18;35123:26;;35195:9;35189:4;35185:20;35181:1;35170:9;35166:17;35159:47;35223:131;35349:4;35223:131;:::i;:::-;35215:139;;34942:419;;;:::o;35367:::-;35533:4;35571:2;35560:9;35556:18;35548:26;;35620:9;35614:4;35610:20;35606:1;35595:9;35591:17;35584:47;35648:131;35774:4;35648:131;:::i;:::-;35640:139;;35367:419;;;:::o;35792:::-;35958:4;35996:2;35985:9;35981:18;35973:26;;36045:9;36039:4;36035:20;36031:1;36020:9;36016:17;36009:47;36073:131;36199:4;36073:131;:::i;:::-;36065:139;;35792:419;;;:::o;36217:::-;36383:4;36421:2;36410:9;36406:18;36398:26;;36470:9;36464:4;36460:20;36456:1;36445:9;36441:17;36434:47;36498:131;36624:4;36498:131;:::i;:::-;36490:139;;36217:419;;;:::o;36642:::-;36808:4;36846:2;36835:9;36831:18;36823:26;;36895:9;36889:4;36885:20;36881:1;36870:9;36866:17;36859:47;36923:131;37049:4;36923:131;:::i;:::-;36915:139;;36642:419;;;:::o;37067:::-;37233:4;37271:2;37260:9;37256:18;37248:26;;37320:9;37314:4;37310:20;37306:1;37295:9;37291:17;37284:47;37348:131;37474:4;37348:131;:::i;:::-;37340:139;;37067:419;;;:::o;37492:::-;37658:4;37696:2;37685:9;37681:18;37673:26;;37745:9;37739:4;37735:20;37731:1;37720:9;37716:17;37709:47;37773:131;37899:4;37773:131;:::i;:::-;37765:139;;37492:419;;;:::o;37917:222::-;38010:4;38048:2;38037:9;38033:18;38025:26;;38061:71;38129:1;38118:9;38114:17;38105:6;38061:71;:::i;:::-;37917:222;;;;:::o;38145:332::-;38266:4;38304:2;38293:9;38289:18;38281:26;;38317:71;38385:1;38374:9;38370:17;38361:6;38317:71;:::i;:::-;38398:72;38466:2;38455:9;38451:18;38442:6;38398:72;:::i;:::-;38145:332;;;;;:::o;38483:129::-;38517:6;38544:20;;:::i;:::-;38534:30;;38573:33;38601:4;38593:6;38573:33;:::i;:::-;38483:129;;;:::o;38618:75::-;38651:6;38684:2;38678:9;38668:19;;38618:75;:::o;38699:311::-;38776:4;38866:18;38858:6;38855:30;38852:56;;;38888:18;;:::i;:::-;38852:56;38938:4;38930:6;38926:17;38918:25;;38998:4;38992;38988:15;38980:23;;38699:311;;;:::o;39016:::-;39093:4;39183:18;39175:6;39172:30;39169:56;;;39205:18;;:::i;:::-;39169:56;39255:4;39247:6;39243:17;39235:25;;39315:4;39309;39305:15;39297:23;;39016:311;;;:::o;39333:307::-;39394:4;39484:18;39476:6;39473:30;39470:56;;;39506:18;;:::i;:::-;39470:56;39544:29;39566:6;39544:29;:::i;:::-;39536:37;;39628:4;39622;39618:15;39610:23;;39333:307;;;:::o;39646:308::-;39708:4;39798:18;39790:6;39787:30;39784:56;;;39820:18;;:::i;:::-;39784:56;39858:29;39880:6;39858:29;:::i;:::-;39850:37;;39942:4;39936;39932:15;39924:23;;39646:308;;;:::o;39960:132::-;40027:4;40050:3;40042:11;;40080:4;40075:3;40071:14;40063:22;;39960:132;;;:::o;40098:141::-;40147:4;40170:3;40162:11;;40193:3;40190:1;40183:14;40227:4;40224:1;40214:18;40206:26;;40098:141;;;:::o;40245:114::-;40312:6;40346:5;40340:12;40330:22;;40245:114;;;:::o;40365:98::-;40416:6;40450:5;40444:12;40434:22;;40365:98;;;:::o;40469:99::-;40521:6;40555:5;40549:12;40539:22;;40469:99;;;:::o;40574:113::-;40644:4;40676;40671:3;40667:14;40659:22;;40574:113;;;:::o;40693:184::-;40792:11;40826:6;40821:3;40814:19;40866:4;40861:3;40857:14;40842:29;;40693:184;;;;:::o;40883:168::-;40966:11;41000:6;40995:3;40988:19;41040:4;41035:3;41031:14;41016:29;;40883:168;;;;:::o;41057:169::-;41141:11;41175:6;41170:3;41163:19;41215:4;41210:3;41206:14;41191:29;;41057:169;;;;:::o;41232:148::-;41334:11;41371:3;41356:18;;41232:148;;;;:::o;41386:305::-;41426:3;41445:20;41463:1;41445:20;:::i;:::-;41440:25;;41479:20;41497:1;41479:20;:::i;:::-;41474:25;;41633:1;41565:66;41561:74;41558:1;41555:81;41552:107;;;41639:18;;:::i;:::-;41552:107;41683:1;41680;41676:9;41669:16;;41386:305;;;;:::o;41697:185::-;41737:1;41754:20;41772:1;41754:20;:::i;:::-;41749:25;;41788:20;41806:1;41788:20;:::i;:::-;41783:25;;41827:1;41817:35;;41832:18;;:::i;:::-;41817:35;41874:1;41871;41867:9;41862:14;;41697:185;;;;:::o;41888:348::-;41928:7;41951:20;41969:1;41951:20;:::i;:::-;41946:25;;41985:20;42003:1;41985:20;:::i;:::-;41980:25;;42173:1;42105:66;42101:74;42098:1;42095:81;42090:1;42083:9;42076:17;42072:105;42069:131;;;42180:18;;:::i;:::-;42069:131;42228:1;42225;42221:9;42210:20;;41888:348;;;;:::o;42242:191::-;42282:4;42302:20;42320:1;42302:20;:::i;:::-;42297:25;;42336:20;42354:1;42336:20;:::i;:::-;42331:25;;42375:1;42372;42369:8;42366:34;;;42380:18;;:::i;:::-;42366:34;42425:1;42422;42418:9;42410:17;;42242:191;;;;:::o;42439:96::-;42476:7;42505:24;42523:5;42505:24;:::i;:::-;42494:35;;42439:96;;;:::o;42541:90::-;42575:7;42618:5;42611:13;42604:21;42593:32;;42541:90;;;:::o;42637:77::-;42674:7;42703:5;42692:16;;42637:77;;;:::o;42720:149::-;42756:7;42796:66;42789:5;42785:78;42774:89;;42720:149;;;:::o;42875:126::-;42912:7;42952:42;42945:5;42941:54;42930:65;;42875:126;;;:::o;43007:77::-;43044:7;43073:5;43062:16;;43007:77;;;:::o;43090:154::-;43174:6;43169:3;43164;43151:30;43236:1;43227:6;43222:3;43218:16;43211:27;43090:154;;;:::o;43250:307::-;43318:1;43328:113;43342:6;43339:1;43336:13;43328:113;;;43427:1;43422:3;43418:11;43412:18;43408:1;43403:3;43399:11;43392:39;43364:2;43361:1;43357:10;43352:15;;43328:113;;;43459:6;43456:1;43453:13;43450:101;;;43539:1;43530:6;43525:3;43521:16;43514:27;43450:101;43299:258;43250:307;;;:::o;43563:320::-;43607:6;43644:1;43638:4;43634:12;43624:22;;43691:1;43685:4;43681:12;43712:18;43702:81;;43768:4;43760:6;43756:17;43746:27;;43702:81;43830:2;43822:6;43819:14;43799:18;43796:38;43793:84;;;43849:18;;:::i;:::-;43793:84;43614:269;43563:320;;;:::o;43889:281::-;43972:27;43994:4;43972:27;:::i;:::-;43964:6;43960:40;44102:6;44090:10;44087:22;44066:18;44054:10;44051:34;44048:62;44045:88;;;44113:18;;:::i;:::-;44045:88;44153:10;44149:2;44142:22;43932:238;43889:281;;:::o;44176:233::-;44215:3;44238:24;44256:5;44238:24;:::i;:::-;44229:33;;44284:66;44277:5;44274:77;44271:103;;;44354:18;;:::i;:::-;44271:103;44401:1;44394:5;44390:13;44383:20;;44176:233;;;:::o;44415:100::-;44454:7;44483:26;44503:5;44483:26;:::i;:::-;44472:37;;44415:100;;;:::o;44521:94::-;44560:7;44589:20;44603:5;44589:20;:::i;:::-;44578:31;;44521:94;;;:::o;44621:180::-;44669:77;44666:1;44659:88;44766:4;44763:1;44756:15;44790:4;44787:1;44780:15;44807:180;44855:77;44852:1;44845:88;44952:4;44949:1;44942:15;44976:4;44973:1;44966:15;44993:180;45041:77;45038:1;45031:88;45138:4;45135:1;45128:15;45162:4;45159:1;45152:15;45179:180;45227:77;45224:1;45217:88;45324:4;45321:1;45314:15;45348:4;45345:1;45338:15;45365:180;45413:77;45410:1;45403:88;45510:4;45507:1;45500:15;45534:4;45531:1;45524:15;45551:183;45586:3;45624:1;45606:16;45603:23;45600:128;;;45662:1;45659;45656;45641:23;45684:34;45715:1;45709:8;45684:34;:::i;:::-;45677:41;;45600:128;45551:183;:::o;45740:117::-;45849:1;45846;45839:12;45863:117;45972:1;45969;45962:12;45986:117;46095:1;46092;46085:12;46109:117;46218:1;46215;46208:12;46232:117;46341:1;46338;46331:12;46355:117;46464:1;46461;46454:12;46478:102;46519:6;46570:2;46566:7;46561:2;46554:5;46550:14;46546:28;46536:38;;46478:102;;;:::o;46586:94::-;46619:8;46667:5;46663:2;46659:14;46638:35;;46586:94;;;:::o;46686:106::-;46730:8;46779:5;46774:3;46770:15;46749:36;;46686:106;;;:::o;46798:239::-;46938:34;46934:1;46926:6;46922:14;46915:58;47007:22;47002:2;46994:6;46990:15;46983:47;46798:239;:::o;47043:227::-;47183:34;47179:1;47171:6;47167:14;47160:58;47252:10;47247:2;47239:6;47235:15;47228:35;47043:227;:::o;47276:238::-;47416:34;47412:1;47404:6;47400:14;47393:58;47485:21;47480:2;47472:6;47468:15;47461:46;47276:238;:::o;47520:179::-;47660:31;47656:1;47648:6;47644:14;47637:55;47520:179;:::o;47705:230::-;47845:34;47841:1;47833:6;47829:14;47822:58;47914:13;47909:2;47901:6;47897:15;47890:38;47705:230;:::o;47941:225::-;48081:34;48077:1;48069:6;48065:14;48058:58;48150:8;48145:2;48137:6;48133:15;48126:33;47941:225;:::o;48172:228::-;48312:34;48308:1;48300:6;48296:14;48289:58;48381:11;48376:2;48368:6;48364:15;48357:36;48172:228;:::o;48406:237::-;48546:34;48542:1;48534:6;48530:14;48523:58;48615:20;48610:2;48602:6;48598:15;48591:45;48406:237;:::o;48649:175::-;48789:27;48785:1;48777:6;48773:14;48766:51;48649:175;:::o;48830:224::-;48970:34;48966:1;48958:6;48954:14;48947:58;49039:7;49034:2;49026:6;49022:15;49015:32;48830:224;:::o;49060:237::-;49200:34;49196:1;49188:6;49184:14;49177:58;49269:20;49264:2;49256:6;49252:15;49245:45;49060:237;:::o;49303:174::-;49443:26;49439:1;49431:6;49427:14;49420:50;49303:174;:::o;49483:229::-;49623:34;49619:1;49611:6;49607:14;49600:58;49692:12;49687:2;49679:6;49675:15;49668:37;49483:229;:::o;49718:175::-;49858:27;49854:1;49846:6;49842:14;49835:51;49718:175;:::o;49899:182::-;50039:34;50035:1;50027:6;50023:14;50016:58;49899:182;:::o;50087:163::-;50227:15;50223:1;50215:6;50211:14;50204:39;50087:163;:::o;50256:228::-;50396:34;50392:1;50384:6;50380:14;50373:58;50465:11;50460:2;50452:6;50448:15;50441:36;50256:228;:::o;50490:::-;50630:34;50626:1;50618:6;50614:14;50607:58;50699:11;50694:2;50686:6;50682:15;50675:36;50490:228;:::o;50724:227::-;50864:34;50860:1;50852:6;50848:14;50841:58;50933:10;50928:2;50920:6;50916:15;50909:35;50724:227;:::o;50957:220::-;51097:34;51093:1;51085:6;51081:14;51074:58;51166:3;51161:2;51153:6;51149:15;51142:28;50957:220;:::o;51183:182::-;51323:34;51319:1;51311:6;51307:14;51300:58;51183:182;:::o;51371:711::-;51410:3;51448:4;51430:16;51427:26;51424:39;;;51456:5;;51424:39;51485:20;;:::i;:::-;51560:1;51542:16;51538:24;51535:1;51529:4;51514:49;51593:4;51587:11;51692:16;51685:4;51677:6;51673:17;51670:39;51637:18;51629:6;51626:30;51610:113;51607:146;;;51738:5;;;;51607:146;51784:6;51778:4;51774:17;51820:3;51814:10;51847:18;51839:6;51836:30;51833:43;;;51869:5;;;;;;51833:43;51917:6;51910:4;51905:3;51901:14;51897:27;51976:1;51958:16;51954:24;51948:4;51944:35;51939:3;51936:44;51933:57;;;51983:5;;;;;;;51933:57;52000;52048:6;52042:4;52038:17;52030:6;52026:30;52020:4;52000:57;:::i;:::-;52073:3;52066:10;;51414:668;;;;;51371:711;;:::o;52088:122::-;52161:24;52179:5;52161:24;:::i;:::-;52154:5;52151:35;52141:63;;52200:1;52197;52190:12;52141:63;52088:122;:::o;52216:116::-;52286:21;52301:5;52286:21;:::i;:::-;52279:5;52276:32;52266:60;;52322:1;52319;52312:12;52266:60;52216:116;:::o;52338:122::-;52411:24;52429:5;52411:24;:::i;:::-;52404:5;52401:35;52391:63;;52450:1;52447;52440:12;52391:63;52338:122;:::o;52466:120::-;52538:23;52555:5;52538:23;:::i;:::-;52531:5;52528:34;52518:62;;52576:1;52573;52566:12;52518:62;52466:120;:::o;52592:122::-;52665:24;52683:5;52665:24;:::i;:::-;52658:5;52655:35;52645:63;;52704:1;52701;52694:12;52645:63;52592:122;:::o
Swarm Source
ipfs://da5a36aa4ca3b2319c526e751109fc08f27a6e4ab1f704644ec5887217d0dc41
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.