Source Code
Overview
APE Balance
APE Value
$0.00Multichain Info
N/A
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
SportsOracle
Compiler Version
v0.8.33+commit.64118f21
Contract Source Code (Solidity)
/**
*Submitted for verification at apescan.io on 2026-01-19
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.33;
/**
* @dev Interface of the ERC-165 standard
*/
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
interface IAccessControl {
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
error AccessControlBadConfirmation();
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
function hasRole(bytes32 role, address account) external view returns (bool);
function getRoleAdmin(bytes32 role) external view returns (bytes32);
function grantRole(bytes32 role, address account) external;
function revokeRole(bytes32 role, address account) external;
function renounceRole(bytes32 role, address callerConfirmation) external;
}
abstract contract AccessControl is Context, IAccessControl, ERC165 {
struct RoleData {
mapping(address account => bool) hasRole;
bytes32 adminRole;
}
mapping(bytes32 role => RoleData) private _roles;
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
modifier onlyRole(bytes32 role) {
_checkRole(role);
_;
}
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
}
function hasRole(bytes32 role, address account) public view virtual returns (bool) {
return _roles[role].hasRole[account];
}
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
function _checkRole(bytes32 role, address account) internal view virtual {
if (!hasRole(role, account)) {
revert AccessControlUnauthorizedAccount(account, role);
}
}
function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {
return _roles[role].adminRole;
}
function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {
_grantRole(role, account);
}
function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {
_revokeRole(role, account);
}
function renounceRole(bytes32 role, address callerConfirmation) public virtual {
if (callerConfirmation != _msgSender()) {
revert AccessControlBadConfirmation();
}
_revokeRole(role, callerConfirmation);
}
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
bytes32 previousAdminRole = getRoleAdmin(role);
_roles[role].adminRole = adminRole;
emit RoleAdminChanged(role, previousAdminRole, adminRole);
}
function _grantRole(bytes32 role, address account) internal virtual returns (bool) {
if (!hasRole(role, account)) {
_roles[role].hasRole[account] = true;
emit RoleGranted(role, account, _msgSender());
return true;
} else {
return false;
}
}
function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {
if (hasRole(role, account)) {
_roles[role].hasRole[account] = false;
emit RoleRevoked(role, account, _msgSender());
return true;
} else {
return false;
}
}
}
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 value, bytes calldata data) external;
function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata values, bytes calldata data) external;
}
interface IConditionalTokens is IERC1155 {
function payoutNumerators(bytes32) external returns (uint256[] memory);
function payoutDenominator(bytes32) external returns (uint256);
function prepareCondition(address oracle, bytes32 questionId, uint256 outcomeSlotCount) external;
function reportPayouts(bytes32 questionId, uint256[] calldata payouts) external;
function getOutcomeSlotCount(bytes32 conditionId) external view returns (uint256);
function getConditionId(address oracle, bytes32 questionId, uint256 outcomeSlotCount) external pure returns (bytes32);
function getCollectionId(bytes32 parentCollectionId, bytes32 conditionId, uint256 indexSet) external view returns (bytes32);
}
contract Access is AccessControl {
bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE");
constructor() {
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(ADMIN_ROLE, msg.sender);
}
function transferOwnership(address newOwner) public onlyRole(DEFAULT_ADMIN_ROLE) {
require(newOwner != address(0), "New owner cannot be zero address");
_revokeRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(DEFAULT_ADMIN_ROLE, newOwner);
}
function addAdmin(address account) public onlyRole(DEFAULT_ADMIN_ROLE) {
grantRole(ADMIN_ROLE, account);
}
function removeAdmin(address account) public onlyRole(DEFAULT_ADMIN_ROLE) {
revokeRole(ADMIN_ROLE, account);
}
function isAdmin(address account) external view returns (bool) {
return hasRole(ADMIN_ROLE, account);
}
function isOwner(address account) external view returns (bool) {
return hasRole(DEFAULT_ADMIN_ROLE, account);
}
}
/**
* @title SportsEventData
* @dev Data structure for storing sports event information
*/
struct SportsEventData {
uint256 createdAt;
uint256 deadline;
uint8 numOutcomes;
bool initialized;
bool resolved;
bool cancelled;
address creator;
uint8 winningOutcome;
string description;
string externalId;
}
/**
* @title ISportsOracleEvents
* @dev Events emitted by the SportsOracle contract
*/
interface ISportsOracleEvents {
event EventCreated(
bytes32 indexed eventId,
address indexed creator,
string description,
string externalId,
uint256 deadline,
uint8 numOutcomes
);
event EventResolved(
bytes32 indexed eventId,
uint8 winningOutcome,
address resolver
);
event EventCancelled(
bytes32 indexed eventId,
address canceller
);
}
/**
* @title ISportsOracleErrors
* @dev Custom errors for the SportsOracle contract
*/
interface ISportsOracleErrors {
error NotInitialized();
error AlreadyInitialized();
error AlreadyResolved();
error AlreadyCancelled();
error InvalidOutcome();
error InvalidNumOutcomes();
error InvalidDeadline();
error DeadlineNotPassed();
error NotOperator();
}
/**
* @title SportsOracle
* @dev A manual resolution oracle for sports events that integrates with the
* Conditional Tokens Framework. Unlike PriceOracle which uses Pyth for automated
* resolution, this oracle allows operators to manually resolve events.
*
* Key Features:
* - Manual event creation with custom descriptions
* - Operator-controlled resolution (simple outcome input: 1, 2, etc.)
* - Support for 2+ outcomes (home/away, or with draw)
* - Event cancellation for voided games
* - Compatible with existing CTF infrastructure
* - Easy to call from ApeScan/block explorer
*
* Resolution Outcomes:
* - 0 = Push/Void (refund scenario - both outcomes get equal payout)
* - 1 = Outcome 1 wins (e.g., Home team)
* - 2 = Outcome 2 wins (e.g., Away team)
* - 3+ = Additional outcomes if numOutcomes > 2
*/
contract SportsOracle is ISportsOracleEvents, ISportsOracleErrors, Access {
/// @notice Reference to the Conditional Tokens Framework contract
IConditionalTokens public immutable ctf;
/// @notice Role identifier for operators who can create and resolve events
bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE");
/// @notice Stores all event data indexed by eventId
mapping(bytes32 => SportsEventData) public events;
/// @notice Counter for generating unique event IDs
uint256 public eventCount;
/**
* @dev Constructor initializes the contract with required dependencies
* @param _ctf Address of the Conditional Tokens Framework contract
*/
constructor(address _ctf) {
ctf = IConditionalTokens(_ctf);
_grantRole(OPERATOR_ROLE, msg.sender);
}
/*///////////////////////////////////////////////////////////////////
MODIFIERS
//////////////////////////////////////////////////////////////////*/
modifier onlyOperator() {
if (!hasRole(OPERATOR_ROLE, msg.sender) && !hasRole(ADMIN_ROLE, msg.sender)) {
revert NotOperator();
}
_;
}
/*///////////////////////////////////////////////////////////////////
OPERATOR FUNCTIONS
//////////////////////////////////////////////////////////////////*/
/**
* @notice Creates a new sports event
* @dev Callable by operators. Prepares condition in CTF automatically.
* @param eventId Unique identifier for the event (can be derived from external source)
* @param description Human-readable description (e.g., "Lakers vs Celtics - Jan 20")
* @param externalId Optional external reference ID (e.g., Polymarket event ID)
* @param deadline Unix timestamp when betting closes / event starts
* @param numOutcomes Number of possible outcomes (typically 2 for home/away)
*/
function createEvent(
bytes32 eventId,
string calldata description,
string calldata externalId,
uint256 deadline,
uint8 numOutcomes
) external onlyOperator {
if (events[eventId].initialized) revert AlreadyInitialized();
if (numOutcomes < 2 || numOutcomes > 8) revert InvalidNumOutcomes();
if (deadline <= block.timestamp) revert InvalidDeadline();
events[eventId] = SportsEventData({
createdAt: block.timestamp,
deadline: deadline,
numOutcomes: numOutcomes,
initialized: true,
resolved: false,
cancelled: false,
creator: msg.sender,
winningOutcome: 0,
description: description,
externalId: externalId
});
eventCount++;
ctf.prepareCondition(address(this), eventId, numOutcomes);
emit EventCreated(eventId, msg.sender, description, externalId, deadline, numOutcomes);
}
/**
* @notice Creates a new sports event with auto-generated eventId
* @dev Convenience function that generates eventId from inputs
* @param description Human-readable description
* @param externalId Optional external reference ID
* @param deadline Unix timestamp when betting closes
* @param numOutcomes Number of possible outcomes
* @return eventId The generated event ID
*/
function createEventAuto(
string calldata description,
string calldata externalId,
uint256 deadline,
uint8 numOutcomes
) external onlyOperator returns (bytes32 eventId) {
eventId = keccak256(abi.encodePacked(
description,
externalId,
deadline,
block.timestamp,
eventCount
));
if (events[eventId].initialized) revert AlreadyInitialized();
if (numOutcomes < 2 || numOutcomes > 8) revert InvalidNumOutcomes();
if (deadline <= block.timestamp) revert InvalidDeadline();
events[eventId] = SportsEventData({
createdAt: block.timestamp,
deadline: deadline,
numOutcomes: numOutcomes,
initialized: true,
resolved: false,
cancelled: false,
creator: msg.sender,
winningOutcome: 0,
description: description,
externalId: externalId
});
eventCount++;
ctf.prepareCondition(address(this), eventId, numOutcomes);
emit EventCreated(eventId, msg.sender, description, externalId, deadline, numOutcomes);
return eventId;
}
/**
* @notice Resolves an event with the winning outcome
* @dev This is the main function you'll call on ApeScan to settle events.
* Simply enter the eventId and the winning outcome number.
* @param eventId The event to resolve
* @param winningOutcome The winning outcome index:
* - 0 = Push/Void (equal payout to all outcomes)
* - 1 = Outcome 1 wins (e.g., Home team)
* - 2 = Outcome 2 wins (e.g., Away team)
* - 3+ = Additional outcomes if applicable
*/
function resolve(bytes32 eventId, uint8 winningOutcome) external onlyOperator {
SportsEventData storage eventData = events[eventId];
if (!eventData.initialized) revert NotInitialized();
if (eventData.resolved) revert AlreadyResolved();
if (eventData.cancelled) revert AlreadyCancelled();
if (winningOutcome > eventData.numOutcomes) revert InvalidOutcome();
eventData.resolved = true;
eventData.winningOutcome = winningOutcome;
uint256[] memory payouts = new uint256[](eventData.numOutcomes);
if (winningOutcome == 0) {
for (uint8 i = 0; i < eventData.numOutcomes; i++) {
payouts[i] = 1;
}
} else {
payouts[winningOutcome - 1] = 1;
}
ctf.reportPayouts(eventId, payouts);
emit EventResolved(eventId, winningOutcome, msg.sender);
}
/**
* @notice Cancels an event (e.g., game postponed, voided)
* @dev Reports equal payouts to all outcomes, effectively refunding bettors
* @param eventId The event to cancel
*/
function cancel(bytes32 eventId) external onlyOperator {
SportsEventData storage eventData = events[eventId];
if (!eventData.initialized) revert NotInitialized();
if (eventData.resolved) revert AlreadyResolved();
if (eventData.cancelled) revert AlreadyCancelled();
eventData.cancelled = true;
eventData.resolved = true;
uint256[] memory payouts = new uint256[](eventData.numOutcomes);
for (uint8 i = 0; i < eventData.numOutcomes; i++) {
payouts[i] = 1;
}
ctf.reportPayouts(eventId, payouts);
emit EventCancelled(eventId, msg.sender);
}
/*///////////////////////////////////////////////////////////////////
ADMIN FUNCTIONS
//////////////////////////////////////////////////////////////////*/
/**
* @notice Adds an operator who can create and resolve events
* @param operator Address to grant operator role
*/
function addOperator(address operator) external onlyRole(ADMIN_ROLE) {
_grantRole(OPERATOR_ROLE, operator);
}
/**
* @notice Removes an operator
* @param operator Address to revoke operator role from
*/
function removeOperator(address operator) external onlyRole(ADMIN_ROLE) {
_revokeRole(OPERATOR_ROLE, operator);
}
/**
* @notice Checks if an address is an operator
* @param account Address to check
* @return bool True if the address has operator role
*/
function isOperator(address account) external view returns (bool) {
return hasRole(OPERATOR_ROLE, account) || hasRole(ADMIN_ROLE, account);
}
/*///////////////////////////////////////////////////////////////////
VIEW FUNCTIONS
//////////////////////////////////////////////////////////////////*/
/**
* @notice Gets the full event data for a given eventId
* @param eventId The event to query
* @return eventData The complete event data struct
*/
function getEvent(bytes32 eventId) external view returns (SportsEventData memory) {
return events[eventId];
}
/**
* @notice Gets the condition ID for an event (used by CTF)
* @param eventId The event to get condition for
* @return conditionId The CTF condition ID
*/
function getConditionId(bytes32 eventId) external view returns (bytes32) {
SportsEventData storage eventData = events[eventId];
if (!eventData.initialized) revert NotInitialized();
return ctf.getConditionId(address(this), eventId, eventData.numOutcomes);
}
/**
* @notice Checks if an event is ready to be resolved
* @param eventId The event to check
* @return bool True if the event can be resolved
*/
function canResolve(bytes32 eventId) external view returns (bool) {
SportsEventData storage eventData = events[eventId];
return eventData.initialized &&
!eventData.resolved &&
!eventData.cancelled;
}
/**
* @notice Gets the status of an event
* @param eventId The event to check
* @return initialized Whether the event exists
* @return resolved Whether the event has been resolved
* @return cancelled Whether the event was cancelled
* @return winningOutcome The winning outcome (0 if not resolved or push)
*/
function getEventStatus(bytes32 eventId) external view returns (
bool initialized,
bool resolved,
bool cancelled,
uint8 winningOutcome
) {
SportsEventData storage eventData = events[eventId];
return (
eventData.initialized,
eventData.resolved,
eventData.cancelled,
eventData.winningOutcome
);
}
/**
* @notice Generates an eventId from parameters (for off-chain use)
* @dev Useful for creating deterministic event IDs
* @param description Event description
* @param externalId External reference ID
* @param deadline Event deadline
* @return eventId The generated event ID
*/
function generateEventId(
string calldata description,
string calldata externalId,
uint256 deadline
) external view returns (bytes32) {
return keccak256(abi.encodePacked(
description,
externalId,
deadline,
block.timestamp,
eventCount
));
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_ctf","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"AlreadyCancelled","type":"error"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"AlreadyResolved","type":"error"},{"inputs":[],"name":"DeadlineNotPassed","type":"error"},{"inputs":[],"name":"InvalidDeadline","type":"error"},{"inputs":[],"name":"InvalidNumOutcomes","type":"error"},{"inputs":[],"name":"InvalidOutcome","type":"error"},{"inputs":[],"name":"NotInitialized","type":"error"},{"inputs":[],"name":"NotOperator","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"eventId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"canceller","type":"address"}],"name":"EventCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"eventId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"string","name":"description","type":"string"},{"indexed":false,"internalType":"string","name":"externalId","type":"string"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"numOutcomes","type":"uint8"}],"name":"EventCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"eventId","type":"bytes32"},{"indexed":false,"internalType":"uint8","name":"winningOutcome","type":"uint8"},{"indexed":false,"internalType":"address","name":"resolver","type":"address"}],"name":"EventResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"addOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventId","type":"bytes32"}],"name":"canResolve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventId","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventId","type":"bytes32"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"externalId","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"numOutcomes","type":"uint8"}],"name":"createEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"externalId","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"numOutcomes","type":"uint8"}],"name":"createEventAuto","outputs":[{"internalType":"bytes32","name":"eventId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ctf","outputs":[{"internalType":"contract IConditionalTokens","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eventCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"events","outputs":[{"internalType":"uint256","name":"createdAt","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"numOutcomes","type":"uint8"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"bool","name":"resolved","type":"bool"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint8","name":"winningOutcome","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"externalId","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"externalId","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"generateEventId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventId","type":"bytes32"}],"name":"getConditionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventId","type":"bytes32"}],"name":"getEvent","outputs":[{"components":[{"internalType":"uint256","name":"createdAt","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"numOutcomes","type":"uint8"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"bool","name":"resolved","type":"bool"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint8","name":"winningOutcome","type":"uint8"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"externalId","type":"string"}],"internalType":"struct SportsEventData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventId","type":"bytes32"}],"name":"getEventStatus","outputs":[{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"bool","name":"resolved","type":"bool"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint8","name":"winningOutcome","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventId","type":"bytes32"},{"internalType":"uint8","name":"winningOutcome","type":"uint8"}],"name":"resolve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561000f575f5ffd5b5060405161257c38038061257c83398101604081905261002e9161014b565b6100385f336100a2565b506100637fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336100a2565b506001600160a01b03811660805261009b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336100a2565b5050610178565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16610142575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100fa3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610145565b505f5b92915050565b5f6020828403121561015b575f5ffd5b81516001600160a01b0381168114610171575f5ffd5b9392505050565b6080516123c96101b35f395f818161022d0152818161061c0152818161098601528181610de6015281816112c501526119c601526123c95ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c806370480275116100fe578063a217fddf1161009e578063c4d252f51161006e578063c4d252f5146104a9578063d547741f146104bc578063f2fde38b146104cf578063f5b541a6146104e2575f5ffd5b8063a217fddf14610453578063a80f0a861461045a578063ac8a584a1461046d578063bfdc4a6114610480575f5ffd5b806375b238fc116100d957806375b238fc146103c35780638c172fa2146103ea57806391d148541461040a5780639870d7fe14610440575f5ffd5b80637048027514610394578063708faf69146103a757806371be2e4a146103ba575f5ffd5b80632f2ff15d116101695780634b0ecb30116101445780634b0ecb30146102e85780635e94dd961461035b5780636d70f7ae1461036e5780636ee50aa714610381575f5ffd5b80632f2ff15d146102af5780632f54bf6e146102c257806336568abe146102d5575f5ffd5b806322a9339f116101a457806322a9339f14610228578063248a9ca31461026757806324d7806c1461028957806328ee29361461029c575f5ffd5b806301ffc9a7146101ca57806304329c03146101f25780631785f53c14610213575b5f5ffd5b6101dd6101d8366004611cbc565b610509565b60405190151581526020015b60405180910390f35b610205610200366004611cfb565b6105a1565b6040519081526020016101e9565b610226610221366004611d2d565b610694565b005b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e9565b610205610275366004611cfb565b5f9081526020819052604090206001015490565b6101dd610297366004611d2d565b6106cc565b6102266102aa366004611d56565b61070b565b6102266102bd366004611d80565b610a2d565b6101dd6102d0366004611d2d565b610a57565b6102266102e3366004611d80565b610a96565b6103306102f6366004611cfb565b5f9081526001602052604090206002015460ff610100820481169262010000830482169263010000008104831692600160c01b9091041690565b60408051941515855292151560208501529015159183019190915260ff1660608201526080016101e9565b610226610369366004611de6565b610ae7565b6101dd61037c366004611d2d565b610e9a565b61020561038f366004611e77565b610f19565b6102266103a2366004611d2d565b610f5a565b6102056103b5366004611eea565b610f8e565b61020560025481565b6102057fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6103fd6103f8366004611cfb565b61137a565b6040516101e99190611f9f565b6101dd610418366004611d80565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61022661044e366004611d2d565b611588565b6102055f81565b6101dd610468366004611cfb565b6115dc565b61022661047b366004611d2d565b611629565b61049361048e366004611cfb565b61167d565b6040516101e99a9998979695949392919061205e565b6102266104b7366004611cfb565b6117f5565b6102266104ca366004611d80565b611a64565b6102266104dd366004611d2d565b611a88565b6102057f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f8181526001602052604081206002810154610100900460ff166105d8576040516321c4e35760e21b815260040160405180910390fd5b60028101546040517f852c6ae20000000000000000000000000000000000000000000000000000000081523060048201526024810185905260ff90911660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063852c6ae290606401602060405180830381865afa158015610669573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068d91906120dc565b9392505050565b5f61069e81611b1c565b6106c87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583611a64565b5050565b6001600160a01b0381165f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604081205460ff1661059b565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604090205460ff161580156107775750335f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff16155b1561079557604051631f0853c160e21b815260040160405180910390fd5b5f8281526001602052604090206002810154610100900460ff166107cc576040516321c4e35760e21b815260040160405180910390fd5b600281015462010000900460ff16156107f8576040516336ab81e160e11b815260040160405180910390fd5b60028101546301000000900460ff1615610825576040516354e3762560e01b815260040160405180910390fd5b600281015460ff908116908316111561086a576040517fc74a206d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101805460ff848116600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffff909216919091176201000017918290555f911667ffffffffffffffff8111156108c7576108c76120f3565b6040519080825280602002602001820160405280156108f0578160200160208202803683370190505b5090508260ff165f03610942575f5b600283015460ff908116908216101561093c576001828260ff168151811061092957610929612107565b60209081029190910101526001016108ff565b5061096f565b60018161094f828661212f565b60ff168151811061096257610962612107565b6020026020010181815250505b604051633124a62b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c49298ac906109bd9087908590600401612148565b5f604051808303815f87803b1580156109d4575f5ffd5b505af11580156109e6573d5f5f3e3d5ffd5b50506040805160ff871681523360208201528793507ff294ef099f1e92c4c392d0e748047330ca09e5f7c752e2f305866a4ee101515e92500160405180910390a250505050565b5f82815260208190526040902060010154610a4781611b1c565b610a518383611b29565b50505050565b6001600160a01b0381165f9081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff1661059b565b6001600160a01b0381163314610ad8576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae28282611bd0565b505050565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604090205460ff16158015610b535750335f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff16155b15610b7157604051631f0853c160e21b815260040160405180910390fd5b5f87815260016020526040902060020154610100900460ff1615610ba75760405162dc149f60e41b815260040160405180910390fd5b60028160ff161080610bbc575060088160ff16115b15610bda5760405163566f431760e11b815260040160405180910390fd5b428211610bfa57604051631da7447960e21b815260040160405180910390fd5b6040805161014081018252428152602080820185905260ff841682840152600160608301525f6080830181905260a083018190523360c084015260e08301528251601f8901829004820281018201909352878352909161010083019189908990819084018382808284375f92019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284375f92018290525093909452505089815260016020818152604092839020855181559085015191810191909155908301516002820180546060860151608087015160a088015160c089015160e08a015160ff97881661ffff199096169590951761010094151585021763ffff00001916620100009315159390930263ff000000191692909217630100000091151591909102177fffffffffffffff000000000000000000000000000000000000000000ffffffff166401000000006001600160a01b039092169190910260ff60c01b191617600160c01b94909216939093021790558301519091506003820190610d949082612223565b506101208201516004820190610daa9082612223565b50506002805491505f610dbc836122e2565b909155505060405163365bb9d560e21b81523060048201526024810188905260ff821660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d96ee754906064015f604051808303815f87803b158015610e2f575f5ffd5b505af1158015610e41573d5f5f3e3d5ffd5b50505050336001600160a01b0316877fded2a7fa6450010db63d57ae15df2de88ec3c5b7b3b91a89a3d5e3dc0db38c3d888888888888604051610e8996959493929190612322565b60405180910390a350505050505050565b6001600160a01b0381165f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604081205460ff168061059b57506001600160a01b0382165f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff1661059b565b5f858585858542600254604051602001610f399796959493929190612365565b60405160208183030381529060405280519060200120905095945050505050565b5f610f6481611b1c565b6106c87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610a2d565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604081205460ff16158015610ffa5750335f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff16155b1561101857604051631f0853c160e21b815260040160405180910390fd5b8686868686426002546040516020016110379796959493929190612365565b60408051808303601f1901815291815281516020928301205f8181526001909352912060020154909150610100900460ff16156110865760405162dc149f60e41b815260040160405180910390fd5b60028260ff16108061109b575060088260ff16115b156110b95760405163566f431760e11b815260040160405180910390fd5b4283116110d957604051631da7447960e21b815260040160405180910390fd5b6040805161014081018252428152602080820186905260ff851682840152600160608301525f6080830181905260a083018190523360c084015260e08301528251601f8a0182900482028101820190935288835290916101008301918a908a90819084018382808284375f92019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284375f92018290525093909452505083815260016020818152604092839020855181559085015191810191909155908301516002820180546060860151608087015160a088015160c089015160e08a015160ff97881661ffff199096169590951761010094151585021763ffff00001916620100009315159390930263ff000000191692909217630100000091151591909102177fffffffffffffff000000000000000000000000000000000000000000ffffffff166401000000006001600160a01b039092169190910260ff60c01b191617600160c01b949092169390930217905583015190915060038201906112739082612223565b5061012082015160048201906112899082612223565b50506002805491505f61129b836122e2565b909155505060405163365bb9d560e21b81523060048201526024810182905260ff831660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d96ee754906064015f604051808303815f87803b15801561130e575f5ffd5b505af1158015611320573d5f5f3e3d5ffd5b50505050336001600160a01b0316817fded2a7fa6450010db63d57ae15df2de88ec3c5b7b3b91a89a3d5e3dc0db38c3d89898989898960405161136896959493929190612322565b60405180910390a39695505050505050565b60408051610140810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082019290925261010081018290526101208101919091525f82815260016020818152604092839020835161014081018552815481529281015491830191909152600281015460ff80821694840194909452610100808204851615156060850152620100008204851615156080850152630100000082048516151560a08501526001600160a01b0364010000000083041660c0850152600160c01b90910490931660e0830152600381018054929391929184019161147190612195565b80601f016020809104026020016040519081016040528092919081815260200182805461149d90612195565b80156114e85780601f106114bf576101008083540402835291602001916114e8565b820191905f5260205f20905b8154815290600101906020018083116114cb57829003601f168201915b5050505050815260200160048201805461150190612195565b80601f016020809104026020016040519081016040528092919081815260200182805461152d90612195565b80156115785780601f1061154f57610100808354040283529160200191611578565b820191905f5260205f20905b81548152906001019060200180831161155b57829003601f168201915b5050505050815250509050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756115b281611b1c565b610ae27f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611b29565b5f8181526001602052604081206002810154610100900460ff16801561160d5750600281015462010000900460ff16155b801561068d5750600201546301000000900460ff161592915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561165381611b1c565b610ae27f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611bd0565b600160208190525f91825260409091208054918101546002820154600383018054929360ff808416946101008504821694620100008104831694630100000082048416946001600160a01b0364010000000084041694600160c01b909304909216926116e890612195565b80601f016020809104026020016040519081016040528092919081815260200182805461171490612195565b801561175f5780601f106117365761010080835404028352916020019161175f565b820191905f5260205f20905b81548152906001019060200180831161174257829003601f168201915b50505050509080600401805461177490612195565b80601f01602080910402602001604051908101604052809291908181526020018280546117a090612195565b80156117eb5780601f106117c2576101008083540402835291602001916117eb565b820191905f5260205f20905b8154815290600101906020018083116117ce57829003601f168201915b505050505090508a565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604090205460ff161580156118615750335f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff16155b1561187f57604051631f0853c160e21b815260040160405180910390fd5b5f8181526001602052604090206002810154610100900460ff166118b6576040516321c4e35760e21b815260040160405180910390fd5b600281015462010000900460ff16156118e2576040516336ab81e160e11b815260040160405180910390fd5b60028101546301000000900460ff161561190f576040516354e3762560e01b815260040160405180910390fd5b600281018054630101000063ffff0000198216179091555f9060ff1667ffffffffffffffff811115611943576119436120f3565b60405190808252806020026020018201604052801561196c578160200160208202803683370190505b5090505f5b600283015460ff90811690821610156119ae576001828260ff168151811061199b5761199b612107565b6020908102919091010152600101611971565b50604051633124a62b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c49298ac906119fd9086908590600401612148565b5f604051808303815f87803b158015611a14575f5ffd5b505af1158015611a26573d5f5f3e3d5ffd5b50506040513381528592507f144a6f592b28f8e6ddc409e1bfeae9138e3bcc5f4982ba712e59903615a15ba1915060200160405180910390a2505050565b5f82815260208190526040902060010154611a7e81611b1c565b610a518383611bd0565b5f611a9281611b1c565b6001600160a01b038216611b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4e6577206f776e65722063616e6e6f74206265207a65726f206164647265737360448201526064015b60405180910390fd5b611b115f33611bd0565b50610ae25f83611b29565b611b268133611c51565b50565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16611bc9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611b813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161059b565b505f61059b565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1615611bc9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161059b565b5f828152602081815260408083206001600160a01b038516845290915290205460ff166106c8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611afe565b5f60208284031215611ccc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068d575f5ffd5b5f60208284031215611d0b575f5ffd5b5035919050565b80356001600160a01b0381168114611d28575f5ffd5b919050565b5f60208284031215611d3d575f5ffd5b61068d82611d12565b803560ff81168114611d28575f5ffd5b5f5f60408385031215611d67575f5ffd5b82359150611d7760208401611d46565b90509250929050565b5f5f60408385031215611d91575f5ffd5b82359150611d7760208401611d12565b5f5f83601f840112611db1575f5ffd5b50813567ffffffffffffffff811115611dc8575f5ffd5b602083019150836020828501011115611ddf575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215611dfc575f5ffd5b87359650602088013567ffffffffffffffff811115611e19575f5ffd5b611e258a828b01611da1565b909750955050604088013567ffffffffffffffff811115611e44575f5ffd5b611e508a828b01611da1565b90955093505060608801359150611e6960808901611d46565b905092959891949750929550565b5f5f5f5f5f60608688031215611e8b575f5ffd5b853567ffffffffffffffff811115611ea1575f5ffd5b611ead88828901611da1565b909650945050602086013567ffffffffffffffff811115611ecc575f5ffd5b611ed888828901611da1565b96999598509660400135949350505050565b5f5f5f5f5f5f60808789031215611eff575f5ffd5b863567ffffffffffffffff811115611f15575f5ffd5b611f2189828a01611da1565b909750955050602087013567ffffffffffffffff811115611f40575f5ffd5b611f4c89828a01611da1565b90955093505060408701359150611f6560608801611d46565b90509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815281516020820152602082015160408201525f6040830151611fc9606084018260ff169052565b506060830151801515608084015250608083015180151560a08401525060a083015180151560c08401525060c08301516001600160a01b03811660e08401525060e083015160ff811661010084015250610100830151610140610120840152612036610160840182611f71565b9050610120840151601f19848303016101408501526120558282611f71565b95945050505050565b8a815289602082015260ff891660408201528715156060820152861515608082015285151560a08201526001600160a01b03851660c082015260ff841660e08201526101406101008201525f6120b8610140830185611f71565b8281036101208401526120cb8185611f71565b9d9c50505050505050505050505050565b5f602082840312156120ec575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff828116828216039081111561059b5761059b61211b565b5f60408201848352604060208401528084518083526060850191506020860192505f5b8181101561218957835183526020938401939092019160010161216b565b50909695505050505050565b600181811c908216806121a957607f821691505b6020821081036121c757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610ae25782821115610ae257805f5260205f20601f840160051c60208510156121f857505f5b90810190601f840160051c035f5b8181101561221b575f83820155600101612206565b505050505050565b815167ffffffffffffffff81111561223d5761223d6120f3565b6122518161224b8454612195565b846121cd565b6020601f821160018114612283575f831561226c5750848201515b5f19600385901b1c1916600184901b1784556122db565b5f84815260208120601f198516915b828110156122b25787850151825560209485019460019092019101612292565b50848210156122cf57868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b5f600182016122f3576122f361211b565b5060010190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f61233560808301888a6122fa565b82810360208401526123488187896122fa565b91505083604083015260ff83166060830152979650505050505050565b868882375f8782015f815286888237909501938452506020830191909152604082015260600194935050505056fea2646970667358221220a7d3ad74e15a6308bf26a548df1a95acb17c8357fc885e0ffa1f66d84f5923ad64736f6c634300082100330000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c806370480275116100fe578063a217fddf1161009e578063c4d252f51161006e578063c4d252f5146104a9578063d547741f146104bc578063f2fde38b146104cf578063f5b541a6146104e2575f5ffd5b8063a217fddf14610453578063a80f0a861461045a578063ac8a584a1461046d578063bfdc4a6114610480575f5ffd5b806375b238fc116100d957806375b238fc146103c35780638c172fa2146103ea57806391d148541461040a5780639870d7fe14610440575f5ffd5b80637048027514610394578063708faf69146103a757806371be2e4a146103ba575f5ffd5b80632f2ff15d116101695780634b0ecb30116101445780634b0ecb30146102e85780635e94dd961461035b5780636d70f7ae1461036e5780636ee50aa714610381575f5ffd5b80632f2ff15d146102af5780632f54bf6e146102c257806336568abe146102d5575f5ffd5b806322a9339f116101a457806322a9339f14610228578063248a9ca31461026757806324d7806c1461028957806328ee29361461029c575f5ffd5b806301ffc9a7146101ca57806304329c03146101f25780631785f53c14610213575b5f5ffd5b6101dd6101d8366004611cbc565b610509565b60405190151581526020015b60405180910390f35b610205610200366004611cfb565b6105a1565b6040519081526020016101e9565b610226610221366004611d2d565b610694565b005b61024f7f0000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f81565b6040516001600160a01b0390911681526020016101e9565b610205610275366004611cfb565b5f9081526020819052604090206001015490565b6101dd610297366004611d2d565b6106cc565b6102266102aa366004611d56565b61070b565b6102266102bd366004611d80565b610a2d565b6101dd6102d0366004611d2d565b610a57565b6102266102e3366004611d80565b610a96565b6103306102f6366004611cfb565b5f9081526001602052604090206002015460ff610100820481169262010000830482169263010000008104831692600160c01b9091041690565b60408051941515855292151560208501529015159183019190915260ff1660608201526080016101e9565b610226610369366004611de6565b610ae7565b6101dd61037c366004611d2d565b610e9a565b61020561038f366004611e77565b610f19565b6102266103a2366004611d2d565b610f5a565b6102056103b5366004611eea565b610f8e565b61020560025481565b6102057fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6103fd6103f8366004611cfb565b61137a565b6040516101e99190611f9f565b6101dd610418366004611d80565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61022661044e366004611d2d565b611588565b6102055f81565b6101dd610468366004611cfb565b6115dc565b61022661047b366004611d2d565b611629565b61049361048e366004611cfb565b61167d565b6040516101e99a9998979695949392919061205e565b6102266104b7366004611cfb565b6117f5565b6102266104ca366004611d80565b611a64565b6102266104dd366004611d2d565b611a88565b6102057f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f8181526001602052604081206002810154610100900460ff166105d8576040516321c4e35760e21b815260040160405180910390fd5b60028101546040517f852c6ae20000000000000000000000000000000000000000000000000000000081523060048201526024810185905260ff90911660448201527f0000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f6001600160a01b03169063852c6ae290606401602060405180830381865afa158015610669573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068d91906120dc565b9392505050565b5f61069e81611b1c565b6106c87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583611a64565b5050565b6001600160a01b0381165f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604081205460ff1661059b565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604090205460ff161580156107775750335f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff16155b1561079557604051631f0853c160e21b815260040160405180910390fd5b5f8281526001602052604090206002810154610100900460ff166107cc576040516321c4e35760e21b815260040160405180910390fd5b600281015462010000900460ff16156107f8576040516336ab81e160e11b815260040160405180910390fd5b60028101546301000000900460ff1615610825576040516354e3762560e01b815260040160405180910390fd5b600281015460ff908116908316111561086a576040517fc74a206d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101805460ff848116600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00ffff909216919091176201000017918290555f911667ffffffffffffffff8111156108c7576108c76120f3565b6040519080825280602002602001820160405280156108f0578160200160208202803683370190505b5090508260ff165f03610942575f5b600283015460ff908116908216101561093c576001828260ff168151811061092957610929612107565b60209081029190910101526001016108ff565b5061096f565b60018161094f828661212f565b60ff168151811061096257610962612107565b6020026020010181815250505b604051633124a62b60e21b81526001600160a01b037f0000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f169063c49298ac906109bd9087908590600401612148565b5f604051808303815f87803b1580156109d4575f5ffd5b505af11580156109e6573d5f5f3e3d5ffd5b50506040805160ff871681523360208201528793507ff294ef099f1e92c4c392d0e748047330ca09e5f7c752e2f305866a4ee101515e92500160405180910390a250505050565b5f82815260208190526040902060010154610a4781611b1c565b610a518383611b29565b50505050565b6001600160a01b0381165f9081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff1661059b565b6001600160a01b0381163314610ad8576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae28282611bd0565b505050565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604090205460ff16158015610b535750335f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff16155b15610b7157604051631f0853c160e21b815260040160405180910390fd5b5f87815260016020526040902060020154610100900460ff1615610ba75760405162dc149f60e41b815260040160405180910390fd5b60028160ff161080610bbc575060088160ff16115b15610bda5760405163566f431760e11b815260040160405180910390fd5b428211610bfa57604051631da7447960e21b815260040160405180910390fd5b6040805161014081018252428152602080820185905260ff841682840152600160608301525f6080830181905260a083018190523360c084015260e08301528251601f8901829004820281018201909352878352909161010083019189908990819084018382808284375f92019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284375f92018290525093909452505089815260016020818152604092839020855181559085015191810191909155908301516002820180546060860151608087015160a088015160c089015160e08a015160ff97881661ffff199096169590951761010094151585021763ffff00001916620100009315159390930263ff000000191692909217630100000091151591909102177fffffffffffffff000000000000000000000000000000000000000000ffffffff166401000000006001600160a01b039092169190910260ff60c01b191617600160c01b94909216939093021790558301519091506003820190610d949082612223565b506101208201516004820190610daa9082612223565b50506002805491505f610dbc836122e2565b909155505060405163365bb9d560e21b81523060048201526024810188905260ff821660448201527f0000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f6001600160a01b03169063d96ee754906064015f604051808303815f87803b158015610e2f575f5ffd5b505af1158015610e41573d5f5f3e3d5ffd5b50505050336001600160a01b0316877fded2a7fa6450010db63d57ae15df2de88ec3c5b7b3b91a89a3d5e3dc0db38c3d888888888888604051610e8996959493929190612322565b60405180910390a350505050505050565b6001600160a01b0381165f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604081205460ff168061059b57506001600160a01b0382165f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff1661059b565b5f858585858542600254604051602001610f399796959493929190612365565b60405160208183030381529060405280519060200120905095945050505050565b5f610f6481611b1c565b6106c87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610a2d565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604081205460ff16158015610ffa5750335f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff16155b1561101857604051631f0853c160e21b815260040160405180910390fd5b8686868686426002546040516020016110379796959493929190612365565b60408051808303601f1901815291815281516020928301205f8181526001909352912060020154909150610100900460ff16156110865760405162dc149f60e41b815260040160405180910390fd5b60028260ff16108061109b575060088260ff16115b156110b95760405163566f431760e11b815260040160405180910390fd5b4283116110d957604051631da7447960e21b815260040160405180910390fd5b6040805161014081018252428152602080820186905260ff851682840152600160608301525f6080830181905260a083018190523360c084015260e08301528251601f8a0182900482028101820190935288835290916101008301918a908a90819084018382808284375f92019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284375f92018290525093909452505083815260016020818152604092839020855181559085015191810191909155908301516002820180546060860151608087015160a088015160c089015160e08a015160ff97881661ffff199096169590951761010094151585021763ffff00001916620100009315159390930263ff000000191692909217630100000091151591909102177fffffffffffffff000000000000000000000000000000000000000000ffffffff166401000000006001600160a01b039092169190910260ff60c01b191617600160c01b949092169390930217905583015190915060038201906112739082612223565b5061012082015160048201906112899082612223565b50506002805491505f61129b836122e2565b909155505060405163365bb9d560e21b81523060048201526024810182905260ff831660448201527f0000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f6001600160a01b03169063d96ee754906064015f604051808303815f87803b15801561130e575f5ffd5b505af1158015611320573d5f5f3e3d5ffd5b50505050336001600160a01b0316817fded2a7fa6450010db63d57ae15df2de88ec3c5b7b3b91a89a3d5e3dc0db38c3d89898989898960405161136896959493929190612322565b60405180910390a39695505050505050565b60408051610140810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082019290925261010081018290526101208101919091525f82815260016020818152604092839020835161014081018552815481529281015491830191909152600281015460ff80821694840194909452610100808204851615156060850152620100008204851615156080850152630100000082048516151560a08501526001600160a01b0364010000000083041660c0850152600160c01b90910490931660e0830152600381018054929391929184019161147190612195565b80601f016020809104026020016040519081016040528092919081815260200182805461149d90612195565b80156114e85780601f106114bf576101008083540402835291602001916114e8565b820191905f5260205f20905b8154815290600101906020018083116114cb57829003601f168201915b5050505050815260200160048201805461150190612195565b80601f016020809104026020016040519081016040528092919081815260200182805461152d90612195565b80156115785780601f1061154f57610100808354040283529160200191611578565b820191905f5260205f20905b81548152906001019060200180831161155b57829003601f168201915b5050505050815250509050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756115b281611b1c565b610ae27f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611b29565b5f8181526001602052604081206002810154610100900460ff16801561160d5750600281015462010000900460ff16155b801561068d5750600201546301000000900460ff161592915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561165381611b1c565b610ae27f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611bd0565b600160208190525f91825260409091208054918101546002820154600383018054929360ff808416946101008504821694620100008104831694630100000082048416946001600160a01b0364010000000084041694600160c01b909304909216926116e890612195565b80601f016020809104026020016040519081016040528092919081815260200182805461171490612195565b801561175f5780601f106117365761010080835404028352916020019161175f565b820191905f5260205f20905b81548152906001019060200180831161174257829003601f168201915b50505050509080600401805461177490612195565b80601f01602080910402602001604051908101604052809291908181526020018280546117a090612195565b80156117eb5780601f106117c2576101008083540402835291602001916117eb565b820191905f5260205f20905b8154815290600101906020018083116117ce57829003601f168201915b505050505090508a565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604090205460ff161580156118615750335f9081527f7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec602052604090205460ff16155b1561187f57604051631f0853c160e21b815260040160405180910390fd5b5f8181526001602052604090206002810154610100900460ff166118b6576040516321c4e35760e21b815260040160405180910390fd5b600281015462010000900460ff16156118e2576040516336ab81e160e11b815260040160405180910390fd5b60028101546301000000900460ff161561190f576040516354e3762560e01b815260040160405180910390fd5b600281018054630101000063ffff0000198216179091555f9060ff1667ffffffffffffffff811115611943576119436120f3565b60405190808252806020026020018201604052801561196c578160200160208202803683370190505b5090505f5b600283015460ff90811690821610156119ae576001828260ff168151811061199b5761199b612107565b6020908102919091010152600101611971565b50604051633124a62b60e21b81526001600160a01b037f0000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f169063c49298ac906119fd9086908590600401612148565b5f604051808303815f87803b158015611a14575f5ffd5b505af1158015611a26573d5f5f3e3d5ffd5b50506040513381528592507f144a6f592b28f8e6ddc409e1bfeae9138e3bcc5f4982ba712e59903615a15ba1915060200160405180910390a2505050565b5f82815260208190526040902060010154611a7e81611b1c565b610a518383611bd0565b5f611a9281611b1c565b6001600160a01b038216611b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4e6577206f776e65722063616e6e6f74206265207a65726f206164647265737360448201526064015b60405180910390fd5b611b115f33611bd0565b50610ae25f83611b29565b611b268133611c51565b50565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16611bc9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611b813390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161059b565b505f61059b565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1615611bc9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161059b565b5f828152602081815260408083206001600160a01b038516845290915290205460ff166106c8576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401611afe565b5f60208284031215611ccc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068d575f5ffd5b5f60208284031215611d0b575f5ffd5b5035919050565b80356001600160a01b0381168114611d28575f5ffd5b919050565b5f60208284031215611d3d575f5ffd5b61068d82611d12565b803560ff81168114611d28575f5ffd5b5f5f60408385031215611d67575f5ffd5b82359150611d7760208401611d46565b90509250929050565b5f5f60408385031215611d91575f5ffd5b82359150611d7760208401611d12565b5f5f83601f840112611db1575f5ffd5b50813567ffffffffffffffff811115611dc8575f5ffd5b602083019150836020828501011115611ddf575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215611dfc575f5ffd5b87359650602088013567ffffffffffffffff811115611e19575f5ffd5b611e258a828b01611da1565b909750955050604088013567ffffffffffffffff811115611e44575f5ffd5b611e508a828b01611da1565b90955093505060608801359150611e6960808901611d46565b905092959891949750929550565b5f5f5f5f5f60608688031215611e8b575f5ffd5b853567ffffffffffffffff811115611ea1575f5ffd5b611ead88828901611da1565b909650945050602086013567ffffffffffffffff811115611ecc575f5ffd5b611ed888828901611da1565b96999598509660400135949350505050565b5f5f5f5f5f5f60808789031215611eff575f5ffd5b863567ffffffffffffffff811115611f15575f5ffd5b611f2189828a01611da1565b909750955050602087013567ffffffffffffffff811115611f40575f5ffd5b611f4c89828a01611da1565b90955093505060408701359150611f6560608801611d46565b90509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815281516020820152602082015160408201525f6040830151611fc9606084018260ff169052565b506060830151801515608084015250608083015180151560a08401525060a083015180151560c08401525060c08301516001600160a01b03811660e08401525060e083015160ff811661010084015250610100830151610140610120840152612036610160840182611f71565b9050610120840151601f19848303016101408501526120558282611f71565b95945050505050565b8a815289602082015260ff891660408201528715156060820152861515608082015285151560a08201526001600160a01b03851660c082015260ff841660e08201526101406101008201525f6120b8610140830185611f71565b8281036101208401526120cb8185611f71565b9d9c50505050505050505050505050565b5f602082840312156120ec575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff828116828216039081111561059b5761059b61211b565b5f60408201848352604060208401528084518083526060850191506020860192505f5b8181101561218957835183526020938401939092019160010161216b565b50909695505050505050565b600181811c908216806121a957607f821691505b6020821081036121c757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610ae25782821115610ae257805f5260205f20601f840160051c60208510156121f857505f5b90810190601f840160051c035f5b8181101561221b575f83820155600101612206565b505050505050565b815167ffffffffffffffff81111561223d5761223d6120f3565b6122518161224b8454612195565b846121cd565b6020601f821160018114612283575f831561226c5750848201515b5f19600385901b1c1916600184901b1784556122db565b5f84815260208120601f198516915b828110156122b25787850151825560209485019460019092019101612292565b50848210156122cf57868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b5f600182016122f3576122f361211b565b5060010190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f61233560808301888a6122fa565b82810360208401526123488187896122fa565b91505083604083015260ff83166060830152979650505050505050565b868882375f8782015f815286888237909501938452506020830191909152604082015260600194935050505056fea2646970667358221220a7d3ad74e15a6308bf26a548df1a95acb17c8357fc885e0ffa1f66d84f5923ad64736f6c63430008210033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f
-----Decoded View---------------
Arg [0] : _ctf (address): 0x5AF41FE438BE6C20896d4bD5Dc5F9D05D55a298f
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005af41fe438be6c20896d4bd5dc5f9d05d55a298f
Deployed Bytecode Sourcemap
9304:11058:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1996:204;;;;;;:::i;:::-;;:::i;:::-;;;612:14:1;;605:22;587:41;;575:2;560:18;1996:204:0;;;;;;;;18157:288;;;;;;:::i;:::-;;:::i;:::-;;;1016:25:1;;;1004:2;989:18;18157:288:0;870:177:1;6723:124:0;;;;;;:::i;:::-;;:::i;:::-;;9457:39;;;;;;;;-1:-1:-1;;;;;1634:55:1;;;1616:74;;1604:2;1589:18;9457:39:0;1444:252:1;2676:122:0;;;;;;:::i;:::-;2741:7;2768:12;;;;;;;;;;:22;;;;2676:122;6855:117;;;;;;:::i;:::-;;:::i;14591:934::-;;;;;;:::i;:::-;;:::i;2806:138::-;;;;;;:::i;:::-;;:::i;6980:125::-;;;;;;:::i;:::-;;:::i;3100:249::-;;;;;;:::i;:::-;;:::i;19246:419::-;;;;;;:::i;:::-;19320:16;19471:15;;;:6;:15;;;;;19519:21;;;;;;;;;;19555:18;;;;;;19588:19;;;;;;-1:-1:-1;;;19622:24:0;;;;;19246:419;;;;;2782:14:1;;2775:22;2757:41;;2841:14;;2834:22;2829:2;2814:18;;2807:50;2900:14;;2893:22;2873:18;;;2866:50;;;;2964:4;2952:17;2947:2;2932:18;;2925:45;2744:3;2729:19;19246:419:0;2548:428:1;11306:1032:0;;;;;;:::i;:::-;;:::i;17304:155::-;;;;;;:::i;:::-;;:::i;20000:359::-;;;;;;:::i;:::-;;:::i;6595:120::-;;;;;;:::i;:::-;;:::i;12776:1253::-;;;;;;:::i;:::-;;:::i;9834:25::-;;;;;;6118:60;;6155:23;6118:60;;17840:123;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2208:138::-;;;;;;:::i;:::-;2285:4;2309:12;;;;;;;;;;;-1:-1:-1;;;;;2309:29:0;;;;;;;;;;;;;;;2208:138;16754:123;;;;;;:::i;:::-;;:::i;1851:49::-;;1896:4;1851:49;;18627:256;;;;;;:::i;:::-;;:::i;17000:127::-;;;;;;:::i;:::-;;:::i;9719:49::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;15740:670::-;;;;;;:::i;:::-;;:::i;2952:140::-;;;;;;:::i;:::-;;:::i;6315:272::-;;;;;;:::i;:::-;;:::i;9586:66::-;;9626:26;9586:66;;1996:204;2081:4;2105:47;;;2120:32;2105:47;;:87;;-1:-1:-1;380:25:0;365:40;;;;2156:36;2098:94;1996:204;-1:-1:-1;;1996:204:0:o;18157:288::-;18221:7;18277:15;;;:6;:15;;;;;18308:21;;;;;;;;;18303:51;;18338:16;;-1:-1:-1;;;18338:16:0;;;;;;;;;;;18303:51;18415:21;;;;18372:65;;;;;18399:4;18372:65;;;9335:74:1;9425:18;;;9418:34;;;18415:21:0;;;;9468:18:1;;;9461:45;18372:3:0;-1:-1:-1;;;;;18372:18:0;;;;9308::1;;18372:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18365:72;18157:288;-1:-1:-1;;;18157:288:0:o;6723:124::-;1896:4;1952:16;1896:4;1952:10;:16::i;:::-;6808:31:::1;6155:23;6831:7;6808:10;:31::i;:::-;6723:124:::0;;:::o;6855:117::-;-1:-1:-1;;;;;2309:29:0;;6912:4;2309:29;;;:12;;:29;:12;:29;;;;;6936:28;2208:138;14591:934;10420:10;2285:4;2309:29;;;:12;;:29;:12;:29;;;;;10396:35;:71;;;;-1:-1:-1;10456:10:0;2285:4;2309:29;;;:12;;:29;:12;:29;;;;;10435:32;10396:71;10392:124;;;10491:13;;-1:-1:-1;;;10491:13:0;;;;;;;;;;;10392:124;14680:33:::1;14716:15:::0;;;:6:::1;:15;::::0;;;;14757:21:::1;::::0;::::1;::::0;::::1;::::0;::::1;;;14752:51;;14787:16;;-1:-1:-1::0;;;14787:16:0::1;;;;;;;;;;;14752:51;14818:18;::::0;::::1;::::0;;;::::1;;;14814:48;;;14845:17;;-1:-1:-1::0;;;14845:17:0::1;;;;;;;;;;;14814:48;14877:19;::::0;::::1;::::0;;;::::1;;;14873:50;;;14905:18;;-1:-1:-1::0;;;14905:18:0::1;;;;;;;;;;;14873:50;14955:21;::::0;::::1;::::0;::::1;::::0;;::::1;14938:38:::0;;::::1;;14934:67;;;14985:16;;;;;;;;;;;;;;14934:67;15014:18;::::0;::::1;:25:::0;;::::1;15050:41:::0;;::::1;-1:-1:-1::0;;;15050:41:0::1;::::0;;;;;;;;15014:25;15050:41;;;;;15014:25;;15145:21:::1;15131:36;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;15131:36:0::1;;15104:63;;15192:14;:19;;15210:1;15192:19:::0;15188:214:::1;;15233:7;15228:99;15250:21;::::0;::::1;::::0;::::1;::::0;;::::1;15246:25:::0;;::::1;;15228:99;;;15310:1;15297:7;15305:1;15297:10;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:14;15273:3:::1;;15228:99;;;;15188:214;;;15389:1;15359:7:::0;15367:18:::1;15389:1:::0;15367:14;:18:::1;:::i;:::-;15359:27;;;;;;;;;;:::i;:::-;;;;;;:31;;;::::0;::::1;15188:214;15414:35;::::0;-1:-1:-1;;;15414:35:0;;-1:-1:-1;;;;;15414:3:0::1;:17;::::0;::::1;::::0;:35:::1;::::0;15432:7;;15441;;15414:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15467:50:0::1;::::0;;11316:4:1;11304:17;;11286:36;;15506:10:0::1;11353:2:1::0;11338:18;;11331:83;15481:7:0;;-1:-1:-1;15467:50:0::1;::::0;-1:-1:-1;11259:18:1;15467:50:0::1;;;;;;;14669:856;;14591:934:::0;;:::o;2806:138::-;2741:7;2768:12;;;;;;;;;;:22;;;1952:16;1963:4;1952:10;:16::i;:::-;2911:25:::1;2922:4;2928:7;2911:10;:25::i;:::-;;2806:138:::0;;;:::o;6980:125::-;-1:-1:-1;;;;;2309:29:0;;7037:4;2309:29;;;:12;;:29;:12;:29;;;;;7061:36;2208:138;3100:249;-1:-1:-1;;;;;3194:34:0;;533:10;3194:34;3190:104;;3252:30;;;;;;;;;;;;;;3190:104;3304:37;3316:4;3322:18;3304:11;:37::i;:::-;;3100:249;;:::o;11306:1032::-;10420:10;2285:4;2309:29;;;:12;;:29;:12;:29;;;;;10396:35;:71;;;;-1:-1:-1;10456:10:0;2285:4;2309:29;;;:12;;:29;:12;:29;;;;;10435:32;10396:71;10392:124;;;10491:13;;-1:-1:-1;;;10491:13:0;;;;;;;;;;;10392:124;11527:15:::1;::::0;;;:6:::1;:15;::::0;;;;:27:::1;;::::0;::::1;::::0;::::1;;;11523:60;;;11563:20;;-1:-1:-1::0;;;11563:20:0::1;;;;;;;;;;;11523:60;11612:1;11598:11;:15;;;:34;;;;11631:1;11617:11;:15;;;11598:34;11594:67;;;11641:20;;-1:-1:-1::0;;;11641:20:0::1;;;;;;;;;;;11594:67;11688:15;11676:8;:27;11672:57;;11712:17;;-1:-1:-1::0;;;11712:17:0::1;;;;;;;;;;;11672:57;11760:376;::::0;;::::1;::::0;::::1;::::0;;11802:15:::1;11760:376:::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;11917:4:::1;11760:376:::0;;;;-1:-1:-1;11760:376:0;;;;;;;;;;;;12006:10:::1;11760:376:::0;;;;;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;12076:11;;;;;;11760:376;::::1;12076:11:::0;;;;11760:376;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;;;11760:376:0;;;-1:-1:-1;11760:376:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;::::0;;12114:10;;;;;;11760:376;::::1;12114:10:::0;;;;11760:376;::::1;;::::0;::::1;::::0;;;-1:-1:-1;11760:376:0;;;;-1:-1:-1;;11742:15:0;;;:6:::1;:15;::::0;;;;;;;;:394;;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;11742:394:0;;;;;;;::::1;::::0;::::1;;::::0;::::1;;-1:-1:-1::0;;11742:394:0;;;::::1;;::::0;;;::::1;-1:-1:-1::0;;11742:394:0;;;;;;;::::1;;::::0;;;::::1;;::::0;;;-1:-1:-1;;;;;11742:394:0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;11742:394:0;;-1:-1:-1;;;11742:394:0;;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;:15;;-1:-1:-1;11742:394:0::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;11742:394:0::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;12149:10:0::1;:12:::0;;;-1:-1:-1;12149:10:0::1;:12;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;12174:57:0::1;::::0;-1:-1:-1;;;12174:57:0;;12203:4:::1;12174:57;::::0;::::1;9335:74:1::0;9425:18;;;9418:34;;;9500:4;9488:17;;9468:18;;;9461:45;12174:3:0::1;-1:-1:-1::0;;;;;12174:20:0::1;::::0;::::1;::::0;9308:18:1;;12174:57:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12271:10;-1:-1:-1::0;;;;;12249:81:0::1;12262:7;12249:81;12283:11;;12296:10;;12308:8;12318:11;12249:81;;;;;;;;;;;:::i;:::-;;;;;;;;11306:1032:::0;;;;;;;:::o;17304:155::-;-1:-1:-1;;;;;2309:29:0;;17364:4;2309:29;;;:12;;:29;:12;:29;;;;;17388:63;;;-1:-1:-1;;;;;;2309:29:0;;2285:4;2309:29;;;:12;;:29;:12;:29;;;;;17423:28;2208:138;20000:359;20157:7;20225:11;;20251:10;;20276:8;20299:15;20329:10;;20194:156;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20184:167;;;;;;20177:174;;20000:359;;;;;;;:::o;6595:120::-;1896:4;1952:16;1896:4;1952:10;:16::i;:::-;6677:30:::1;6155:23;6699:7;6677:9;:30::i;12776:1253::-:0;10420:10;12969:15;2309:29;;;:12;;:29;:12;:29;;;;;10396:35;:71;;;;-1:-1:-1;10456:10:0;2285:4;2309:29;;;:12;;:29;:12;:29;;;;;10435:32;10396:71;10392:124;;;10491:13;;-1:-1:-1;;;10491:13:0;;;;;;;;;;;10392:124;13048:11:::1;;13074:10;;13099:8;13122:15;13152:10;;13017:156;;;;;;;;;;;;;;:::i;:::-;;::::0;;;;::::1;-1:-1:-1::0;;13017:156:0;;;;;;13007:167;;13017:156:::1;13007:167:::0;;::::1;::::0;13191:15:::1;::::0;;;:6:::1;:15:::0;;;;;:27:::1;;::::0;13007:167;;-1:-1:-1;13191:27:0::1;::::0;::::1;;;13187:60;;;13227:20;;-1:-1:-1::0;;;13227:20:0::1;;;;;;;;;;;13187:60;13276:1;13262:11;:15;;;:34;;;;13295:1;13281:11;:15;;;13262:34;13258:67;;;13305:20;;-1:-1:-1::0;;;13305:20:0::1;;;;;;;;;;;13258:67;13352:15;13340:8;:27;13336:57;;13376:17;;-1:-1:-1::0;;;13376:17:0::1;;;;;;;;;;;13336:57;13424:376;::::0;;::::1;::::0;::::1;::::0;;13466:15:::1;13424:376:::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;13581:4:::1;13424:376:::0;;;;-1:-1:-1;13424:376:0;;;;;;;;;;;;13670:10:::1;13424:376:::0;;;;;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;13740:11;;;;;;13424:376;::::1;13740:11:::0;;;;13424:376;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;;;13424:376:0;;;-1:-1:-1;13424:376:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;::::0;;13778:10;;;;;;13424:376;::::1;13778:10:::0;;;;13424:376;::::1;;::::0;::::1;::::0;;;-1:-1:-1;13424:376:0;;;;-1:-1:-1;;13406:15:0;;;:6:::1;:15;::::0;;;;;;;;:394;;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;13406:394:0;;;;;;;::::1;::::0;::::1;;::::0;::::1;;-1:-1:-1::0;;13406:394:0;;;::::1;;::::0;;;::::1;-1:-1:-1::0;;13406:394:0;;;;;;;::::1;;::::0;;;::::1;;::::0;;;-1:-1:-1;;;;;13406:394:0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;13406:394:0;;-1:-1:-1;;;13406:394:0;;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;:15;;-1:-1:-1;13406:394:0::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;13406:394:0::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;13813:10:0::1;:12:::0;;;-1:-1:-1;13813:10:0::1;:12;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;13838:57:0::1;::::0;-1:-1:-1;;;13838:57:0;;13867:4:::1;13838:57;::::0;::::1;9335:74:1::0;9425:18;;;9418:34;;;9500:4;9488:17;;9468:18;;;9461:45;13838:3:0::1;-1:-1:-1::0;;;;;13838:20:0::1;::::0;::::1;::::0;9308:18:1;;13838:57:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13935:10;-1:-1:-1::0;;;;;13913:81:0::1;13926:7;13913:81;13947:11;;13960:10;;13972:8;13982:11;13913:81;;;;;;;;;;;:::i;:::-;;;;;;;;12776:1253:::0;;;;;;;;:::o;17840:123::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17940:15:0;;;;:6;:15;;;;;;;;;17933:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17933:22:0;;;;;;;;-1:-1:-1;;;17933:22:0;;;;;;;;;;;;;;;;;17940:15;;17933:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17840:123;;;:::o;16754:::-;6155:23;1952:16;1963:4;1952:10;:16::i;:::-;16834:35:::1;9626:26;16860:8;16834:10;:35::i;18627:256::-:0;18687:4;18740:15;;;:6;:15;;;;;18773:21;;;;;;;;;:61;;;;-1:-1:-1;18816:18:0;;;;;;;;;18815:19;18773:61;:102;;;;-1:-1:-1;18856:19:0;;;;;;;;18855:20;;18766:109;-1:-1:-1;;18627:256:0:o;17000:127::-;6155:23;1952:16;1963:4;1952:10;:16::i;:::-;17083:36:::1;9626:26;17110:8;17083:11;:36::i;9719:49::-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9719:49:0;;;;;-1:-1:-1;;;9719:49:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15740:670::-;10420:10;2285:4;2309:29;;;:12;;:29;:12;:29;;;;;10396:35;:71;;;;-1:-1:-1;10456:10:0;2285:4;2309:29;;;:12;;:29;:12;:29;;;;;10435:32;10396:71;10392:124;;;10491:13;;-1:-1:-1;;;10491:13:0;;;;;;;;;;;10392:124;15806:33:::1;15842:15:::0;;;:6:::1;:15;::::0;;;;15883:21:::1;::::0;::::1;::::0;::::1;::::0;::::1;;;15878:51;;15913:16;;-1:-1:-1::0;;;15913:16:0::1;;;;;;;;;;;15878:51;15944:18;::::0;::::1;::::0;;;::::1;;;15940:48;;;15971:17;;-1:-1:-1::0;;;15971:17:0::1;;;;;;;;;;;15940:48;16003:19;::::0;::::1;::::0;;;::::1;;;15999:50;;;16031:18;;-1:-1:-1::0;;;16031:18:0::1;;;;;;;;;;;15999:50;16062:19;::::0;::::1;:26:::0;;16099:25;-1:-1:-1;;16099:25:0;;;;;;16062:26;;::::1;16178:21:::0;16164:36:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;16164:36:0::1;-1:-1:-1::0;16137:63:0;-1:-1:-1;16216:7:0::1;16211:91;16233:21;::::0;::::1;::::0;::::1;::::0;;::::1;16229:25:::0;;::::1;;16211:91;;;16289:1;16276:7;16284:1;16276:10;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:14;16256:3:::1;;16211:91;;;-1:-1:-1::0;16314:35:0::1;::::0;-1:-1:-1;;;16314:35:0;;-1:-1:-1;;;;;16314:3:0::1;:17;::::0;::::1;::::0;:35:::1;::::0;16332:7;;16341;;16314:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16367:35:0::1;::::0;16391:10:::1;1616:74:1::0;;16382:7:0;;-1:-1:-1;16367:35:0::1;::::0;-1:-1:-1;1604:2:1;1589:18;16367:35:0::1;;;;;;;15795:615;;15740:670:::0;:::o;2952:140::-;2741:7;2768:12;;;;;;;;;;:22;;;1952:16;1963:4;1952:10;:16::i;:::-;3058:26:::1;3070:4;3076:7;3058:11;:26::i;6315:272::-:0;1896:4;1952:16;1896:4;1952:10;:16::i;:::-;-1:-1:-1;;;;;6415:22:0;::::1;6407:67;;;::::0;::::1;::::0;;16206:2:1;6407:67:0::1;::::0;::::1;16188:21:1::0;;;16225:18;;;16218:30;16284:34;16264:18;;;16257:62;16336:18;;6407:67:0::1;;;;;;;;;6485:43;1896:4;6517:10;6485:11;:43::i;:::-;-1:-1:-1::0;6539:40:0::1;1896:4;6570:8:::0;6539:10:::1;:40::i;2354:105::-:0;2421:30;2432:4;533:10;2421;:30::i;:::-;2354:105;:::o;3616:324::-;3693:4;2309:12;;;;;;;;;;;-1:-1:-1;;;;;2309:29:0;;;;;;;;;;;;3710:223;;3754:6;:12;;;;;;;;;;;-1:-1:-1;;;;;3754:29:0;;;;;;;;;:36;;-1:-1:-1;;3754:36:0;3786:4;3754:36;;;3837:12;533:10;;453:98;3837:12;-1:-1:-1;;;;;3810:40:0;3828:7;-1:-1:-1;;;;;3810:40:0;3822:4;3810:40;;;;;;;;;;-1:-1:-1;3872:4:0;3865:11;;3710:223;-1:-1:-1;3916:5:0;3909:12;;3948:325;4026:4;2309:12;;;;;;;;;;;-1:-1:-1;;;;;2309:29:0;;;;;;;;;;;;4043:223;;;4118:5;4086:12;;;;;;;;;;;-1:-1:-1;;;;;4086:29:0;;;;;;;;;;:37;;-1:-1:-1;;4086:37:0;;;4143:40;533:10;;4086:12;;4143:40;;4118:5;4143:40;-1:-1:-1;4205:4:0;4198:11;;2467:201;2285:4;2309:12;;;;;;;;;;;-1:-1:-1;;;;;2309:29:0;;;;;;;;;;;;2551:110;;2602:47;;;;;-1:-1:-1;;;;;16557:55:1;;2602:47:0;;;16539:74:1;16629:18;;;16622:34;;;16512:18;;2602:47:0;16365:297:1;14:332;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;639:226;698:6;751:2;739:9;730:7;726:23;722:32;719:52;;;767:1;764;757:12;719:52;-1:-1:-1;812:23:1;;639:226;-1:-1:-1;639:226:1:o;1052:196::-;1120:20;;-1:-1:-1;;;;;1169:54:1;;1159:65;;1149:93;;1238:1;1235;1228:12;1149:93;1052:196;;;:::o;1253:186::-;1312:6;1365:2;1353:9;1344:7;1340:23;1336:32;1333:52;;;1381:1;1378;1371:12;1333:52;1404:29;1423:9;1404:29;:::i;1701:156::-;1767:20;;1827:4;1816:16;;1806:27;;1796:55;;1847:1;1844;1837:12;1862:296;1928:6;1936;1989:2;1977:9;1968:7;1964:23;1960:32;1957:52;;;2005:1;2002;1995:12;1957:52;2050:23;;;-1:-1:-1;2116:36:1;2148:2;2133:18;;2116:36;:::i;:::-;2106:46;;1862:296;;;;;:::o;2163:300::-;2231:6;2239;2292:2;2280:9;2271:7;2267:23;2263:32;2260:52;;;2308:1;2305;2298:12;2260:52;2353:23;;;-1:-1:-1;2419:38:1;2453:2;2438:18;;2419:38;:::i;2981:348::-;3033:8;3043:6;3097:3;3090:4;3082:6;3078:17;3074:27;3064:55;;3115:1;3112;3105:12;3064:55;-1:-1:-1;3138:20:1;;3181:18;3170:30;;3167:50;;;3213:1;3210;3203:12;3167:50;3250:4;3242:6;3238:17;3226:29;;3302:3;3295:4;3286:6;3278;3274:19;3270:30;3267:39;3264:59;;;3319:1;3316;3309:12;3264:59;2981:348;;;;;:::o;3334:1022::-;3451:6;3459;3467;3475;3483;3491;3499;3552:3;3540:9;3531:7;3527:23;3523:33;3520:53;;;3569:1;3566;3559:12;3520:53;3614:23;;;-1:-1:-1;3712:2:1;3697:18;;3684:32;3739:18;3728:30;;3725:50;;;3771:1;3768;3761:12;3725:50;3810:59;3861:7;3852:6;3841:9;3837:22;3810:59;:::i;:::-;3888:8;;-1:-1:-1;3784:85:1;-1:-1:-1;;3976:2:1;3961:18;;3948:32;4005:18;3992:32;;3989:52;;;4037:1;4034;4027:12;3989:52;4076:61;4129:7;4118:8;4107:9;4103:24;4076:61;:::i;:::-;4156:8;;-1:-1:-1;4050:87:1;-1:-1:-1;;4264:2:1;4249:18;;4236:32;;-1:-1:-1;4313:37:1;4345:3;4330:19;;4313:37;:::i;:::-;4303:47;;3334:1022;;;;;;;;;;:::o;4361:830::-;4462:6;4470;4478;4486;4494;4547:2;4535:9;4526:7;4522:23;4518:32;4515:52;;;4563:1;4560;4553:12;4515:52;4603:9;4590:23;4636:18;4628:6;4625:30;4622:50;;;4668:1;4665;4658:12;4622:50;4707:59;4758:7;4749:6;4738:9;4734:22;4707:59;:::i;:::-;4785:8;;-1:-1:-1;4681:85:1;-1:-1:-1;;4873:2:1;4858:18;;4845:32;4902:18;4889:32;;4886:52;;;4934:1;4931;4924:12;4886:52;4973:61;5026:7;5015:8;5004:9;5000:24;4973:61;:::i;:::-;4361:830;;;;-1:-1:-1;5053:8:1;5157:2;5142:18;5129:32;;4361:830;-1:-1:-1;;;;4361:830:1:o;5196:901::-;5304:6;5312;5320;5328;5336;5344;5397:3;5385:9;5376:7;5372:23;5368:33;5365:53;;;5414:1;5411;5404:12;5365:53;5454:9;5441:23;5487:18;5479:6;5476:30;5473:50;;;5519:1;5516;5509:12;5473:50;5558:59;5609:7;5600:6;5589:9;5585:22;5558:59;:::i;:::-;5636:8;;-1:-1:-1;5532:85:1;-1:-1:-1;;5724:2:1;5709:18;;5696:32;5753:18;5740:32;;5737:52;;;5785:1;5782;5775:12;5737:52;5824:61;5877:7;5866:8;5855:9;5851:24;5824:61;:::i;:::-;5904:8;;-1:-1:-1;5798:87:1;-1:-1:-1;;6008:2:1;5993:18;;5980:32;;-1:-1:-1;6055:36:1;6087:2;6072:18;;6055:36;:::i;:::-;6045:46;;5196:901;;;;;;;;:::o;6416:289::-;6458:3;6496:5;6490:12;6523:6;6518:3;6511:19;6579:6;6572:4;6565:5;6561:16;6554:4;6549:3;6545:14;6539:47;6631:1;6624:4;6615:6;6610:3;6606:16;6602:27;6595:38;6694:4;6687:2;6683:7;6678:2;6670:6;6666:15;6662:29;6657:3;6653:39;6649:50;6642:57;;;6416:289;;;;:::o;6710:1363::-;6903:2;6892:9;6885:21;6948:6;6942:13;6937:2;6926:9;6922:18;6915:41;7010:2;7002:6;6998:15;6992:22;6987:2;6976:9;6972:18;6965:50;6866:4;7062:2;7054:6;7050:15;7044:22;7075:50;7121:2;7110:9;7106:18;7092:12;2535:4;2524:16;2512:29;;2468:75;7075:50;-1:-1:-1;7174:2:1;7162:15;;7156:22;421:13;;414:21;7234:3;7219:19;;402:34;-1:-1:-1;7288:3:1;7276:16;;7270:23;421:13;;414:21;7349:3;7334:19;;402:34;-1:-1:-1;7403:3:1;7391:16;;7385:23;421:13;;414:21;7464:3;7449:19;;402:34;-1:-1:-1;7518:3:1;7506:16;;7500:23;-1:-1:-1;;;;;6350:54:1;;7582:3;7567:19;;6338:67;-1:-1:-1;7636:3:1;7624:16;;7618:23;2535:4;2524:16;;7698:3;7683:19;;2512:29;7650:53;7752:3;7744:6;7740:16;7734:23;7794:6;7788:3;7777:9;7773:19;7766:35;7824:54;7873:3;7862:9;7858:19;7842:14;7824:54;:::i;:::-;7810:68;;7927:3;7919:6;7915:16;7909:23;8004:2;8000:7;7988:9;7980:6;7976:22;7972:36;7963:6;7952:9;7948:22;7941:68;8026:41;8060:6;8044:14;8026:41;:::i;:::-;8018:49;6710:1363;-1:-1:-1;;;;;6710:1363:1:o;8078:1052::-;8473:6;8462:9;8455:25;8516:6;8511:2;8500:9;8496:18;8489:34;8571:4;8563:6;8559:17;8554:2;8543:9;8539:18;8532:45;8627:6;8620:14;8613:22;8608:2;8597:9;8593:18;8586:50;8687:6;8680:14;8673:22;8667:3;8656:9;8652:19;8645:51;8747:6;8740:14;8733:22;8727:3;8716:9;8712:19;8705:51;-1:-1:-1;;;;;8797:6:1;8793:55;8787:3;8776:9;8772:19;8765:84;8898:4;8890:6;8886:17;8880:3;8869:9;8865:19;8858:46;8941:3;8935;8924:9;8920:19;8913:32;8436:4;8968:46;9009:3;8998:9;8994:19;8986:6;8968:46;:::i;:::-;9063:9;9055:6;9051:22;9045:3;9034:9;9030:19;9023:51;9091:33;9117:6;9109;9091:33;:::i;:::-;9083:41;8078:1052;-1:-1:-1;;;;;;;;;;;;;8078:1052:1:o;9517:184::-;9587:6;9640:2;9628:9;9619:7;9615:23;9611:32;9608:52;;;9656:1;9653;9646:12;9608:52;-1:-1:-1;9679:16:1;;9517:184;-1:-1:-1;9517:184:1:o;9706:::-;-1:-1:-1;;;9755:1:1;9748:88;9855:4;9852:1;9845:15;9879:4;9876:1;9869:15;9895:184;-1:-1:-1;;;9944:1:1;9937:88;10044:4;10041:1;10034:15;10068:4;10065:1;10058:15;10084:184;-1:-1:-1;;;10133:1:1;10126:88;10233:4;10230:1;10223:15;10257:4;10254:1;10247:15;10273:151;10363:4;10356:12;;;10342;;;10338:31;;10381:14;;10378:40;;;10398:18;;:::i;10429:682::-;10599:4;10647:2;10636:9;10632:18;10677:6;10666:9;10659:25;10720:2;10715;10704:9;10700:18;10693:30;10743:6;10778;10772:13;10809:6;10801;10794:22;10847:2;10836:9;10832:18;10825:25;;10885:2;10877:6;10873:15;10859:29;;10906:1;10916:169;10930:6;10927:1;10924:13;10916:169;;;10991:13;;10979:26;;11034:2;11060:15;;;;11025:12;;;;10952:1;10945:9;10916:169;;;-1:-1:-1;11102:3:1;;10429:682;-1:-1:-1;;;;;;10429:682:1:o;11425:437::-;11504:1;11500:12;;;;11547;;;11568:61;;11622:4;11614:6;11610:17;11600:27;;11568:61;11675:2;11667:6;11664:14;11644:18;11641:38;11638:218;;-1:-1:-1;;;11709:1:1;11702:88;11813:4;11810:1;11803:15;11841:4;11838:1;11831:15;11638:218;;11425:437;;;:::o;11993:692::-;12095:2;12090:3;12087:11;12084:595;;;12132:10;12127:3;12124:19;12121:548;;;12184:5;12181:1;12174:16;12232:4;12229:1;12219:18;12297:2;12285:10;12281:19;12278:1;12274:27;12336:4;12324:10;12321:20;12318:45;;;-1:-1:-1;12360:1:1;12318:45;12399:23;;;;12469:2;12460:12;;12457:1;12453:20;12449:39;12514:1;12532:123;12546:2;12543:1;12540:9;12532:123;;;12635:1;12614:19;;;12607:30;12564:1;12557:9;12532:123;;;12536:3;;;11993:692;;;:::o;12861:1299::-;12987:3;12981:10;13014:18;13006:6;13003:30;13000:56;;;13036:18;;:::i;:::-;13065:97;13155:6;13115:38;13147:4;13141:11;13115:38;:::i;:::-;13109:4;13065:97;:::i;:::-;13211:4;13242:2;13231:14;;13259:1;13254:649;;;;13947:1;13964:6;13961:89;;;-1:-1:-1;14016:19:1;;;14010:26;13961:89;-1:-1:-1;;12818:1:1;12814:11;;;12810:24;12806:29;12796:40;12842:1;12838:11;;;12793:57;14063:81;;13224:930;;13254:649;11940:1;11933:14;;;11977:4;11964:18;;-1:-1:-1;;13290:20:1;;;13408:222;13422:7;13419:1;13416:14;13408:222;;;13504:19;;;13498:26;13483:42;;13611:4;13596:20;;;;13564:1;13552:14;;;;13438:12;13408:222;;;13412:3;13658:6;13649:7;13646:19;13643:201;;;13719:19;;;13713:26;-1:-1:-1;;13802:1:1;13798:14;;;13814:3;13794:24;13790:37;13786:42;13771:58;13756:74;;13643:201;;;13890:1;13881:6;13878:1;13874:14;13870:22;13864:4;13857:36;13224:930;;;;12861:1299;;:::o;14165:135::-;14204:3;14225:17;;;14222:43;;14245:18;;:::i;:::-;-1:-1:-1;14292:1:1;14281:13;;14165:135::o;14305:267::-;14394:6;14389:3;14382:19;14446:6;14439:5;14432:4;14427:3;14423:14;14410:43;-1:-1:-1;14498:1:1;14473:16;;;14491:4;14469:27;;;14462:38;;;;14554:2;14533:15;;;-1:-1:-1;;14529:29:1;14520:39;;;14516:50;;14305:267::o;14577:588::-;14846:3;14835:9;14828:22;14809:4;14873:63;14931:3;14920:9;14916:19;14908:6;14900;14873:63;:::i;:::-;14984:9;14976:6;14972:22;14967:2;14956:9;14952:18;14945:50;15012;15055:6;15047;15039;15012:50;:::i;:::-;15004:58;;;15098:6;15093:2;15082:9;15078:18;15071:34;15153:4;15145:6;15141:17;15136:2;15125:9;15121:18;15114:45;14577:588;;;;;;;;;:::o;15170:598::-;15497:6;15489;15484:3;15471:33;15453:3;15532:6;15527:3;15523:16;15559:1;15555:2;15548:13;15595:6;15587;15583:2;15570:32;15621:15;;;15645:18;;;-1:-1:-1;15687:2:1;15679:11;;15672:27;;;;15723:2;15715:11;;15708:27;15759:2;15751:11;;15170:598;-1:-1:-1;;;;15170:598:1:o
Swarm Source
ipfs://a7d3ad74e15a6308bf26a548df1a95acb17c8357fc885e0ffa1f66d84f5923ad
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.