Overview
APE Balance
APE Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Cancel Match | 9008111 | 27 days ago | IN | 0 APE | 0.00237264 | ||||
Pick Winner | 9008036 | 27 days ago | IN | 0 APE | 0.00291898 | ||||
Enroll | 9008013 | 27 days ago | IN | 1 wei | 0.00254433 | ||||
Enroll | 9007997 | 27 days ago | IN | 1 wei | 0.00341371 | ||||
Create Match | 9007442 | 27 days ago | IN | 0 APE | 0.00665051 | ||||
Add Tier | 9007379 | 27 days ago | IN | 0 APE | 0.00256868 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ApeRoyale
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2025-01-31 */ // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, * consider using {ReentrancyGuardTransient} instead. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; uint256 private _status; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); constructor() { _status = NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be NOT_ENTERED if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail _status = ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ 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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ 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); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: contracts/Winpadv1.sol pragma solidity ^0.8.26; interface INft { function transferFrom(address from, address to, uint256 tokenId) external; function ownerOf(uint256 tokenId) external view returns (address); } contract ApeRoyale is Ownable, ReentrancyGuard { using SafeMath for uint256; // Revenue distribution percentages uint8 public constant FEE_PERCENT = 8; uint8 public constant TREASURY_PERCENT = 72; uint8 public constant OPERATIONS_PERCENT = 20; // Revenue distribution addresses address payable public feeAccount; address payable public treasuryAccount; address payable public operationsAccount; // Entry tier structure struct EntryTier { uint256 apeCost; uint256 baseEntries; uint256 bonusEntries; bool exists; } // Match structure struct Match { bytes32 id; uint256[] allowedTiers; address nftAddress; uint256 nftId; uint256 totalEntries; uint256 targetEntries; uint256 endDate; bool isEnded; bool exists; } // Participant tracking struct Participation { address participant; uint256 tierId; } // Storage mapping(uint256 => EntryTier) public tiers; uint256 public nextTierId = 1; mapping(bytes32 => Match) public matches; mapping(bytes32 => Participation[]) public participations; bytes32[] public allMatchIds; mapping(address => bool) public authorizedCallers; // Events event MatchCreated(bytes32 indexed matchId, address nftAddress, uint256 nftId, uint256 targetEntries, uint256 endDate); event ParticipantEnrolled(bytes32 indexed matchId, address participant, uint256 tierId, uint256 totalEntries); event MatchCanceled(bytes32 indexed matchId, uint256 totalRefunded); event WinnerSelected(bytes32 indexed matchId, address winner, uint256 totalEntries); event FundsDistributed(bytes32 indexed matchId, uint256 totalAmount, uint256 fee, uint256 treasury, uint256 operations); event TierUpdated(uint256 indexed tierId, uint256 apeCost, uint256 baseEntries, uint256 bonusEntries); event CallerUpdated(address indexed caller, bool status); modifier onlyCaller() { require(owner() == msg.sender || authorizedCallers[msg.sender], "Unauthorized"); _; } constructor( address _initialOwner, address payable _feeAccount, address payable _treasuryAccount, address payable _operationsAccount ) Ownable(_initialOwner) { feeAccount = _feeAccount; treasuryAccount = _treasuryAccount; operationsAccount = _operationsAccount; } // Tier management function addTier( uint256 apeCost, uint256 baseEntries, uint256 bonusEntries ) external onlyOwner { tiers[nextTierId] = EntryTier(apeCost, baseEntries, bonusEntries, true); emit TierUpdated(nextTierId, apeCost, baseEntries, bonusEntries); nextTierId++; } // Match creation function createMatch( uint256[] memory allowedTiers, address nftAddress, uint256 nftId, uint256 targetEntries, uint256 duration ) external onlyOwner returns (bytes32 matchId) { require(targetEntries > 0, "Invalid target"); require(duration > 0, "Invalid duration"); require(INft(nftAddress).ownerOf(nftId) == address(this), "NFT not owned"); matchId = keccak256(abi.encodePacked( block.timestamp, nftAddress, nftId, msg.sender )); matches[matchId] = Match({ id: matchId, allowedTiers: allowedTiers, nftAddress: nftAddress, nftId: nftId, totalEntries: 0, targetEntries: targetEntries, endDate: block.timestamp + duration, isEnded: false, exists: true }); allMatchIds.push(matchId); emit MatchCreated(matchId, nftAddress, nftId, targetEntries, block.timestamp + duration); } // Participant enrollment function enroll(bytes32 matchId, uint256 tierId) external payable nonReentrant { Match storage m = matches[matchId]; EntryTier memory tier = tiers[tierId]; require(m.exists, "Invalid match"); require(!m.isEnded, "Match ended"); require(block.timestamp < m.endDate, "Enrollment closed"); require(tier.exists, "Invalid tier"); require(contains(m.allowedTiers, tierId), "Tier not allowed"); require(msg.value == tier.apeCost, "Incorrect APE amount"); uint256 totalEntries = tier.baseEntries + tier.bonusEntries; participations[matchId].push(Participation(msg.sender, tierId)); m.totalEntries += totalEntries; emit ParticipantEnrolled(matchId, msg.sender, tierId, totalEntries); } // Match resolution function pickWinner(bytes32 matchId, uint256 randomSeed) external onlyCaller nonReentrant { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); require(m.totalEntries >= m.targetEntries || block.timestamp >= m.endDate, "Not ready"); uint256 randomNumber = uint256(keccak256(abi.encodePacked(randomSeed, block.timestamp))) % m.totalEntries; uint256 cumulative; address winner; uint256 winnerEntries; for(uint256 i = 0; i < participations[matchId].length; i++) { Participation memory p = participations[matchId][i]; EntryTier memory tier = tiers[p.tierId]; uint256 entries = tier.baseEntries + tier.bonusEntries; if(randomNumber < cumulative + entries) { winner = p.participant; winnerEntries = entries; break; } cumulative += entries; } uint256 totalPrizePool = address(this).balance; uint256 feeAmount = totalPrizePool.mul(FEE_PERCENT).div(100); uint256 treasuryAmount = totalPrizePool.mul(TREASURY_PERCENT).div(100); uint256 operationsAmount = totalPrizePool.sub(feeAmount).sub(treasuryAmount); feeAccount.transfer(feeAmount); treasuryAccount.transfer(treasuryAmount); operationsAccount.transfer(operationsAmount); INft(m.nftAddress).transferFrom(address(this), winner, m.nftId); m.isEnded = true; emit FundsDistributed(matchId, totalPrizePool, feeAmount, treasuryAmount, operationsAmount); emit WinnerSelected(matchId, winner, winnerEntries); } // Match cancellation function cancelMatch(bytes32 matchId) external onlyCaller nonReentrant { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); uint256 totalRefunded; for(uint256 i = 0; i < participations[matchId].length; i++) { Participation memory p = participations[matchId][i]; EntryTier memory tier = tiers[p.tierId]; payable(p.participant).transfer(tier.apeCost); totalRefunded += tier.apeCost; } INft(m.nftAddress).transferFrom(address(this), owner(), m.nftId); m.isEnded = true; emit MatchCanceled(matchId, totalRefunded); } // View functions function getEntryTypes() public view returns (EntryTier[] memory) { EntryTier[] memory types = new EntryTier[](nextTierId-1); for(uint256 i = 1; i < nextTierId; i++) { types[i-1] = tiers[i]; } return types; } function getOngoingMatches() public view returns (Match[] memory) { return _filterMatches(0); } function getMatchHistory() public view returns (Match[] memory) { return _filterMatches(1); } function getReadyMatches() public view returns (Match[] memory) { return _filterMatches(2); } // Internal helpers function _filterMatches(uint8 filterType) private view returns (Match[] memory) { Match[] memory result = new Match[](allMatchIds.length); uint256 count = 0; for(uint256 i = 0; i < allMatchIds.length; i++) { bytes32 id = allMatchIds[i]; Match storage m = matches[id]; bool include; if(filterType == 0) { // Ongoing include = !m.isEnded && block.timestamp < m.endDate; } else if(filterType == 1) { // History include = m.isEnded; } else if(filterType == 2) { // Ready include = !m.isEnded && (m.totalEntries >= m.targetEntries || block.timestamp >= m.endDate); } if(include) { result[count] = m; count++; } } Match[] memory trimmed = new Match[](count); for(uint256 i = 0; i < count; i++) { trimmed[i] = result[i]; } return trimmed; } function contains(uint256[] memory arr, uint256 value) private pure returns (bool) { for(uint256 i = 0; i < arr.length; i++) { if(arr[i] == value) return true; } return false; } // Authorization management function updateCaller(address caller, bool status) external onlyOwner { authorizedCallers[caller] = status; emit CallerUpdated(caller, status); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"address payable","name":"_feeAccount","type":"address"},{"internalType":"address payable","name":"_treasuryAccount","type":"address"},{"internalType":"address payable","name":"_operationsAccount","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"CallerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"operations","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalRefunded","type":"uint256"}],"name":"MatchCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"nftId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"targetEntries","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"MatchCreated","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":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"participant","type":"address"},{"indexed":false,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalEntries","type":"uint256"}],"name":"ParticipantEnrolled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"apeCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"baseEntries","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonusEntries","type":"uint256"}],"name":"TierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalEntries","type":"uint256"}],"name":"WinnerSelected","type":"event"},{"inputs":[],"name":"FEE_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATIONS_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"}],"name":"addTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMatchIds","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedCallers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"name":"cancelMatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"createMatch","outputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"enroll","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feeAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntryTypes","outputs":[{"components":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct ApeRoyale.EntryTier[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMatchHistory","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct ApeRoyale.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOngoingMatches","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct ApeRoyale.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReadyMatches","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct ApeRoyale.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"matches","outputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"targetEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextTierId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"participations","outputs":[{"internalType":"address","name":"participant","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"randomSeed","type":"uint256"}],"name":"pickWinner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600655348015610014575f80fd5b506040516138f83803806138f8833981810160405281019061003691906102e1565b835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a7575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009e9190610354565b60405180910390fd5b6100b68161018760201b60201c565b50600180819055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505061036d565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102758261024c565b9050919050565b6102858161026b565b811461028f575f80fd5b50565b5f815190506102a08161027c565b92915050565b5f6102b08261024c565b9050919050565b6102c0816102a6565b81146102ca575f80fd5b50565b5f815190506102db816102b7565b92915050565b5f805f80608085870312156102f9576102f8610248565b5b5f61030687828801610292565b9450506020610317878288016102cd565b9350506040610328878288016102cd565b9250506060610339878288016102cd565b91505092959194509250565b61034e8161026b565b82525050565b5f6020820190506103675f830184610345565b92915050565b61357e8061037a5f395ff3fe608060405260043610610169575f3560e01c806380e36dd8116100d0578063cb525a3f11610089578063e7e8517c11610063578063e7e8517c14610520578063eaf98d231461054a578063ecdc2c0114610574578063f2fde38b146105b157610170565b8063cb525a3f146104a0578063dc3a4e9b146104dc578063dfbed623146104f857610170565b806380e36dd81461038d57806383d5e726146103b75780638da5cb5b146103e15780639a1564f01461040b5780639fe9ada314610435578063c82db8f91461047857610170565b8063536fff6c11610122578063536fff6c1461028357806354f276b9146102bf57806361eba652146102fb5780636358ec571461032557806365e17c9d1461034d578063715018a61461037757610170565b8063039af9eb146101745780630594fd04146101b35780630a47f932146101dd5780630f5f1dbc146102075780631966cdbe14610231578063339b2cff1461025957610170565b3661017057005b5f80fd5b34801561017f575f80fd5b5061019a600480360381019061019591906122c1565b6105d9565b6040516101aa9493929190612315565b60405180910390f35b3480156101be575f80fd5b506101c7610611565b6040516101d49190612358565b60405180910390f35b3480156101e8575f80fd5b506101f1610617565b6040516101fe919061260b565b60405180910390f35b348015610212575f80fd5b5061021b610628565b604051610228919061264b565b60405180910390f35b34801561023c575f80fd5b506102576004803603810190610252919061268e565b61064d565b005b348015610264575f80fd5b5061026d610c79565b60405161027a919061264b565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a491906126f6565b610c9e565b6040516102b69190612721565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e091906122c1565b610cbb565b6040516102f29190612749565b60405180910390f35b348015610306575f80fd5b5061030f610cdb565b60405161031c919061260b565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612762565b610cec565b005b348015610358575f80fd5b50610361610dc3565b60405161036e919061264b565b60405180910390f35b348015610382575f80fd5b5061038b610de8565b005b348015610398575f80fd5b506103a1610dfb565b6040516103ae91906128ad565b60405180910390f35b3480156103c2575f80fd5b506103cb610f04565b6040516103d891906128e8565b60405180910390f35b3480156103ec575f80fd5b506103f5610f09565b6040516104029190612910565b60405180910390f35b348015610416575f80fd5b5061041f610f30565b60405161042c919061260b565b60405180910390f35b348015610440575f80fd5b5061045b60048036038101906104569190612929565b610f40565b60405161046f989796959493929190612954565b60405180910390f35b348015610483575f80fd5b5061049e60048036038101906104999190612929565b610fbc565b005b3480156104ab575f80fd5b506104c660048036038101906104c19190612b20565b61136a565b6040516104d39190612749565b60405180910390f35b6104f660048036038101906104f1919061268e565b6116d0565b005b348015610503575f80fd5b5061051e60048036038101906105199190612bdd565b611a7a565b005b34801561052b575f80fd5b50610534611b28565b60405161054191906128e8565b60405180910390f35b348015610555575f80fd5b5061055e611b2d565b60405161056b91906128e8565b60405180910390f35b34801561057f575f80fd5b5061059a6004803603810190610595919061268e565b611b32565b6040516105a8929190612c1b565b60405180910390f35b3480156105bc575f80fd5b506105d760048036038101906105d291906126f6565b611b8b565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b60606106236001611c0f565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1661066c610f09565b73ffffffffffffffffffffffffffffffffffffffff1614806106d45750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a90612c9c565b60405180910390fd5b61071b611f61565b5f60075f8481526020019081526020015f209050806007015f9054906101000a900460ff1615610780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077790612d04565b60405180910390fd5b8060050154816004015410158061079b575080600601544210155b6107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190612d6c565b60405180910390fd5b5f816004015483426040516020016107f3929190612daa565b604051602081830303815290604052805190602001205f1c6108159190612e02565b90505f805f805f90505b60085f8981526020019081526020015f2080549050811015610989575f60085f8a81526020019081526020015f20828154811061085f5761085e612e32565b5b905f5260205f2090600202016040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090505f816040015182602001516109459190612e8c565b905080876109539190612e8c565b88101561096b57825f01519550809450505050610989565b80876109779190612e8c565b9650505050808060010191505061081f565b505f4790505f6109b960646109ab600860ff1685611fa790919063ffffffff16565b611fbc90919063ffffffff16565b90505f6109e660646109d8604860ff1686611fa790919063ffffffff16565b611fbc90919063ffffffff16565b90505f610a0e82610a008587611fd190919063ffffffff16565b611fd190919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610a74573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610ad9573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b3e573d5f803e3d5ffd5b50886002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30888c600301546040518463ffffffff1660e01b8152600401610ba393929190612ebf565b5f604051808303815f87803b158015610bba575f80fd5b505af1158015610bcc573d5f803e3d5ffd5b505050506001896007015f6101000a81548160ff0219169083151502179055508a7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610c229493929190612ef4565b60405180910390a28a7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8787604051610c5c929190612c1b565b60405180910390a2505050505050505050610c75611fe6565b5050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b60098181548110610cca575f80fd5b905f5260205f20015f915090505481565b6060610ce76002611c0f565b905090565b610cf4611fef565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a848484604051610d9f93929190612f37565b60405180910390a260065f815480929190610db990612f6c565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610df0611fef565b610df95f612076565b565b60605f6001600654610e0d9190612fb3565b67ffffffffffffffff811115610e2657610e256129e4565b5b604051908082528060200260200182016040528015610e5f57816020015b610e4c612190565b815260200190600190039081610e445790505b5090505f600190505b600654811015610efc5760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505082600183610ed39190612fb3565b81518110610ee457610ee3612e32565b5b60200260200101819052508080600101915050610e68565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060610f3b5f611c0f565b905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015490806007015f9054906101000a900460ff16908060070160019054906101000a900460ff16905088565b3373ffffffffffffffffffffffffffffffffffffffff16610fdb610f09565b73ffffffffffffffffffffffffffffffffffffffff1614806110435750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107990612c9c565b60405180910390fd5b61108a611f61565b5f60075f8381526020019081526020015f209050806007015f9054906101000a900460ff16156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612d04565b60405180910390fd5b5f805f90505b60085f8581526020019081526020015f2080549050811015611270575f60085f8681526020019081526020015f20828154811061113557611134612e32565b5b905f5260205f2090600202016040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f1935050505015801561124f573d5f803e3d5ffd5b50805f01518461125f9190612e8c565b9350505080806001019150506110f5565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd306112b9610f09565b85600301546040518463ffffffff1660e01b81526004016112dc93929190612ebf565b5f604051808303815f87803b1580156112f3575f80fd5b505af1158015611305573d5f803e3d5ffd5b505050506001826007015f6101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e6826040516113559190612358565b60405180910390a25050611367611fe6565b50565b5f611373611fef565b5f83116113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90613030565b60405180910390fd5b5f82116113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90613098565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b81526004016114479190612358565b602060405180830381865afa158015611462573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148691906130ca565b73ffffffffffffffffffffffffffffffffffffffff16146114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d39061313f565b60405180910390fd5b428585336040516020016114f394939291906131a2565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020015f8152602001848152602001834261155d9190612e8c565b81526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f015560208201518160010190805190602001906115a69291906121b6565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015f6101000a81548160ff0219169083151502179055506101008201518160070160016101000a81548160ff021916908315150217905550905050600981908060018154018082558091505060019003905f5260205f20015f9091909190915055807f3b7847a02041ae017dcb9db9abe0e7ebc764ea42cb2b7a56f1ac3f17ba74655886868686426116af9190612e8c565b6040516116bf94939291906131ef565b60405180910390a295945050505050565b6116d8611f61565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160070160019054906101000a900460ff16611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a9061327c565b60405180910390fd5b816007015f9054906101000a900460ff16156117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db906132e4565b60405180910390fd5b8160060154421061182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061334c565b60405180910390fd5b806060015161186e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611865906133b4565b60405180910390fd5b6118c8826001018054806020026020016040519081016040528092919081815260200182805480156118bd57602002820191905f5260205f20905b8154815260200190600101908083116118a9575b505050505084612137565b611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe9061341c565b60405180910390fd5b805f0151341461194c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194390613484565b60405180910390fd5b5f816040015182602001516119619190612e8c565b905060085f8681526020019081526020015f2060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505080836004015f828254611a289190612e8c565b92505081905550847f6a810537082cf3ed66b6537e8e7f1fdd1de31103c52234d2ddaf8e96c46c0f6f338684604051611a63939291906134a2565b60405180910390a2505050611a76611fe6565b5050565b611a82611fef565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c279682604051611b1c9190612721565b60405180910390a25050565b601481565b600881565b6008602052815f5260405f208181548110611b4b575f80fd5b905f5260205f2090600202015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b611b93611fef565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c03575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611bfa9190612910565b60405180910390fd5b611c0c81612076565b50565b60605f60098054905067ffffffffffffffff811115611c3157611c306129e4565b5b604051908082528060200260200182016040528015611c6a57816020015b611c57612201565b815260200190600190039081611c4f5790505b5090505f805b600980549050811015611ead575f60098281548110611c9257611c91612e32565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff1603611ce457816007015f9054906101000a900460ff16158015611cdd5750816006015442105b9050611d4c565b60018860ff1603611d0757816007015f9054906101000a900460ff169050611d4b565b60028860ff1603611d4a57816007015f9054906101000a900460ff16158015611d47575081600501548260040154101580611d46575081600601544210155b5b90505b5b5b8015611e9d5781604051806101200160405290815f820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db557602002820191905f5260205f20905b815481526020019060010190808311611da1575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff161515151581526020016007820160019054906101000a900460ff161515151581525050868681518110611e8357611e82612e32565b5b60200260200101819052508480611e9990612f6c565b9550505b5050508080600101915050611c70565b505f8167ffffffffffffffff811115611ec957611ec86129e4565b5b604051908082528060200260200182016040528015611f0257816020015b611eef612201565b815260200190600190039081611ee75790505b5090505f5b82811015611f5557838181518110611f2257611f21612e32565b5b6020026020010151828281518110611f3d57611f3c612e32565b5b60200260200101819052508080600101915050611f07565b50809350505050919050565b600260015403611f9d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183611fb491906134d7565b905092915050565b5f8183611fc99190613518565b905092915050565b5f8183611fde9190612fb3565b905092915050565b60018081905550565b611ff7612189565b73ffffffffffffffffffffffffffffffffffffffff16612015610f09565b73ffffffffffffffffffffffffffffffffffffffff161461207457612038612189565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161206b9190612910565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b835181101561217e578284828151811061215a57612159612e32565b5b602002602001015103612171576001915050612183565b808060010191505061213d565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f209081019282156121f0579160200282015b828111156121ef5782518255916020019190600101906121d4565b5b5090506121fd9190612262565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f151581526020015f151581525090565b5b80821115612279575f815f905550600101612263565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6122a08161228e565b81146122aa575f80fd5b50565b5f813590506122bb81612297565b92915050565b5f602082840312156122d6576122d5612286565b5b5f6122e3848285016122ad565b91505092915050565b6122f58161228e565b82525050565b5f8115159050919050565b61230f816122fb565b82525050565b5f6080820190506123285f8301876122ec565b61233560208301866122ec565b61234260408301856122ec565b61234f6060830184612306565b95945050505050565b5f60208201905061236b5f8301846122ec565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6123ac8161239a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6123e48161228e565b82525050565b5f6123f583836123db565b60208301905092915050565b5f602082019050919050565b5f612417826123b2565b61242181856123bc565b935061242c836123cc565b805f5b8381101561245c57815161244388826123ea565b975061244e83612401565b92505060018101905061242f565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249282612469565b9050919050565b6124a281612488565b82525050565b6124b1816122fb565b82525050565b5f61012083015f8301516124cd5f8601826123a3565b50602083015184820360208601526124e5828261240d565b91505060408301516124fa6040860182612499565b50606083015161250d60608601826123db565b50608083015161252060808601826123db565b5060a083015161253360a08601826123db565b5060c083015161254660c08601826123db565b5060e083015161255960e08601826124a8565b5061010083015161256e6101008601826124a8565b508091505092915050565b5f61258483836124b7565b905092915050565b5f602082019050919050565b5f6125a282612371565b6125ac818561237b565b9350836020820285016125be8561238b565b805f5b858110156125f957848403895281516125da8582612579565b94506125e58361258c565b925060208a019950506001810190506125c1565b50829750879550505050505092915050565b5f6020820190508181035f8301526126238184612598565b905092915050565b5f61263582612469565b9050919050565b6126458161262b565b82525050565b5f60208201905061265e5f83018461263c565b92915050565b61266d8161239a565b8114612677575f80fd5b50565b5f8135905061268881612664565b92915050565b5f80604083850312156126a4576126a3612286565b5b5f6126b18582860161267a565b92505060206126c2858286016122ad565b9150509250929050565b6126d581612488565b81146126df575f80fd5b50565b5f813590506126f0816126cc565b92915050565b5f6020828403121561270b5761270a612286565b5b5f612718848285016126e2565b91505092915050565b5f6020820190506127345f830184612306565b92915050565b6127438161239a565b82525050565b5f60208201905061275c5f83018461273a565b92915050565b5f805f6060848603121561277957612778612286565b5b5f612786868287016122ad565b9350506020612797868287016122ad565b92505060406127a8868287016122ad565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f8201516127ef5f8501826123db565b50602082015161280260208501826123db565b50604082015161281560408501826123db565b50606082015161282860608501826124a8565b50505050565b5f61283983836127db565b60808301905092915050565b5f602082019050919050565b5f61285b826127b2565b61286581856127bc565b9350612870836127cc565b805f5b838110156128a0578151612887888261282e565b975061289283612845565b925050600181019050612873565b5085935050505092915050565b5f6020820190508181035f8301526128c58184612851565b905092915050565b5f60ff82169050919050565b6128e2816128cd565b82525050565b5f6020820190506128fb5f8301846128d9565b92915050565b61290a81612488565b82525050565b5f6020820190506129235f830184612901565b92915050565b5f6020828403121561293e5761293d612286565b5b5f61294b8482850161267a565b91505092915050565b5f610100820190506129685f83018b61273a565b612975602083018a612901565b61298260408301896122ec565b61298f60608301886122ec565b61299c60808301876122ec565b6129a960a08301866122ec565b6129b660c0830185612306565b6129c360e0830184612306565b9998505050505050505050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a1a826129d4565b810181811067ffffffffffffffff82111715612a3957612a386129e4565b5b80604052505050565b5f612a4b61227d565b9050612a578282612a11565b919050565b5f67ffffffffffffffff821115612a7657612a756129e4565b5b602082029050602081019050919050565b5f80fd5b5f612a9d612a9884612a5c565b612a42565b90508083825260208201905060208402830185811115612ac057612abf612a87565b5b835b81811015612ae95780612ad588826122ad565b845260208401935050602081019050612ac2565b5050509392505050565b5f82601f830112612b0757612b066129d0565b5b8135612b17848260208601612a8b565b91505092915050565b5f805f805f60a08688031215612b3957612b38612286565b5b5f86013567ffffffffffffffff811115612b5657612b5561228a565b5b612b6288828901612af3565b9550506020612b73888289016126e2565b9450506040612b84888289016122ad565b9350506060612b95888289016122ad565b9250506080612ba6888289016122ad565b9150509295509295909350565b612bbc816122fb565b8114612bc6575f80fd5b50565b5f81359050612bd781612bb3565b92915050565b5f8060408385031215612bf357612bf2612286565b5b5f612c00858286016126e2565b9250506020612c1185828601612bc9565b9150509250929050565b5f604082019050612c2e5f830185612901565b612c3b60208301846122ec565b9392505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f612c86600c83612c42565b9150612c9182612c52565b602082019050919050565b5f6020820190508181035f830152612cb381612c7a565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f612cee601383612c42565b9150612cf982612cba565b602082019050919050565b5f6020820190508181035f830152612d1b81612ce2565b9050919050565b7f4e6f7420726561647900000000000000000000000000000000000000000000005f82015250565b5f612d56600983612c42565b9150612d6182612d22565b602082019050919050565b5f6020820190508181035f830152612d8381612d4a565b9050919050565b5f819050919050565b612da4612d9f8261228e565b612d8a565b82525050565b5f612db58285612d93565b602082019150612dc58284612d93565b6020820191508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e0c8261228e565b9150612e178361228e565b925082612e2757612e26612dd5565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e968261228e565b9150612ea18361228e565b9250828201905080821115612eb957612eb8612e5f565b5b92915050565b5f606082019050612ed25f830186612901565b612edf6020830185612901565b612eec60408301846122ec565b949350505050565b5f608082019050612f075f8301876122ec565b612f1460208301866122ec565b612f2160408301856122ec565b612f2e60608301846122ec565b95945050505050565b5f606082019050612f4a5f8301866122ec565b612f5760208301856122ec565b612f6460408301846122ec565b949350505050565b5f612f768261228e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fa857612fa7612e5f565b5b600182019050919050565b5f612fbd8261228e565b9150612fc88361228e565b9250828203905081811115612fe057612fdf612e5f565b5b92915050565b7f496e76616c6964207461726765740000000000000000000000000000000000005f82015250565b5f61301a600e83612c42565b915061302582612fe6565b602082019050919050565b5f6020820190508181035f8301526130478161300e565b9050919050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f613082601083612c42565b915061308d8261304e565b602082019050919050565b5f6020820190508181035f8301526130af81613076565b9050919050565b5f815190506130c4816126cc565b92915050565b5f602082840312156130df576130de612286565b5b5f6130ec848285016130b6565b91505092915050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f613129600d83612c42565b9150613134826130f5565b602082019050919050565b5f6020820190508181035f8301526131568161311d565b9050919050565b5f8160601b9050919050565b5f6131738261315d565b9050919050565b5f61318482613169565b9050919050565b61319c61319782612488565b61317a565b82525050565b5f6131ad8287612d93565b6020820191506131bd828661318b565b6014820191506131cd8285612d93565b6020820191506131dd828461318b565b60148201915081905095945050505050565b5f6080820190506132025f830187612901565b61320f60208301866122ec565b61321c60408301856122ec565b61322960608301846122ec565b95945050505050565b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f613266600d83612c42565b915061327182613232565b602082019050919050565b5f6020820190508181035f8301526132938161325a565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f6132ce600b83612c42565b91506132d98261329a565b602082019050919050565b5f6020820190508181035f8301526132fb816132c2565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f613336601183612c42565b915061334182613302565b602082019050919050565b5f6020820190508181035f8301526133638161332a565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f61339e600c83612c42565b91506133a98261336a565b602082019050919050565b5f6020820190508181035f8301526133cb81613392565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f613406601083612c42565b9150613411826133d2565b602082019050919050565b5f6020820190508181035f830152613433816133fa565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f61346e601483612c42565b91506134798261343a565b602082019050919050565b5f6020820190508181035f83015261349b81613462565b9050919050565b5f6060820190506134b55f830186612901565b6134c260208301856122ec565b6134cf60408301846122ec565b949350505050565b5f6134e18261228e565b91506134ec8361228e565b92508282026134fa8161228e565b9150828204841483151761351157613510612e5f565b5b5092915050565b5f6135228261228e565b915061352d8361228e565b92508261353d5761353c612dd5565b5b82820490509291505056fea26469706673582212203823f8db320d08afe9602fd438d88c1685f0e26c5ec40089bf106cbd7cf4782864736f6c634300081a0033000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode
0x608060405260043610610169575f3560e01c806380e36dd8116100d0578063cb525a3f11610089578063e7e8517c11610063578063e7e8517c14610520578063eaf98d231461054a578063ecdc2c0114610574578063f2fde38b146105b157610170565b8063cb525a3f146104a0578063dc3a4e9b146104dc578063dfbed623146104f857610170565b806380e36dd81461038d57806383d5e726146103b75780638da5cb5b146103e15780639a1564f01461040b5780639fe9ada314610435578063c82db8f91461047857610170565b8063536fff6c11610122578063536fff6c1461028357806354f276b9146102bf57806361eba652146102fb5780636358ec571461032557806365e17c9d1461034d578063715018a61461037757610170565b8063039af9eb146101745780630594fd04146101b35780630a47f932146101dd5780630f5f1dbc146102075780631966cdbe14610231578063339b2cff1461025957610170565b3661017057005b5f80fd5b34801561017f575f80fd5b5061019a600480360381019061019591906122c1565b6105d9565b6040516101aa9493929190612315565b60405180910390f35b3480156101be575f80fd5b506101c7610611565b6040516101d49190612358565b60405180910390f35b3480156101e8575f80fd5b506101f1610617565b6040516101fe919061260b565b60405180910390f35b348015610212575f80fd5b5061021b610628565b604051610228919061264b565b60405180910390f35b34801561023c575f80fd5b506102576004803603810190610252919061268e565b61064d565b005b348015610264575f80fd5b5061026d610c79565b60405161027a919061264b565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a491906126f6565b610c9e565b6040516102b69190612721565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e091906122c1565b610cbb565b6040516102f29190612749565b60405180910390f35b348015610306575f80fd5b5061030f610cdb565b60405161031c919061260b565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612762565b610cec565b005b348015610358575f80fd5b50610361610dc3565b60405161036e919061264b565b60405180910390f35b348015610382575f80fd5b5061038b610de8565b005b348015610398575f80fd5b506103a1610dfb565b6040516103ae91906128ad565b60405180910390f35b3480156103c2575f80fd5b506103cb610f04565b6040516103d891906128e8565b60405180910390f35b3480156103ec575f80fd5b506103f5610f09565b6040516104029190612910565b60405180910390f35b348015610416575f80fd5b5061041f610f30565b60405161042c919061260b565b60405180910390f35b348015610440575f80fd5b5061045b60048036038101906104569190612929565b610f40565b60405161046f989796959493929190612954565b60405180910390f35b348015610483575f80fd5b5061049e60048036038101906104999190612929565b610fbc565b005b3480156104ab575f80fd5b506104c660048036038101906104c19190612b20565b61136a565b6040516104d39190612749565b60405180910390f35b6104f660048036038101906104f1919061268e565b6116d0565b005b348015610503575f80fd5b5061051e60048036038101906105199190612bdd565b611a7a565b005b34801561052b575f80fd5b50610534611b28565b60405161054191906128e8565b60405180910390f35b348015610555575f80fd5b5061055e611b2d565b60405161056b91906128e8565b60405180910390f35b34801561057f575f80fd5b5061059a6004803603810190610595919061268e565b611b32565b6040516105a8929190612c1b565b60405180910390f35b3480156105bc575f80fd5b506105d760048036038101906105d291906126f6565b611b8b565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b60606106236001611c0f565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1661066c610f09565b73ffffffffffffffffffffffffffffffffffffffff1614806106d45750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a90612c9c565b60405180910390fd5b61071b611f61565b5f60075f8481526020019081526020015f209050806007015f9054906101000a900460ff1615610780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077790612d04565b60405180910390fd5b8060050154816004015410158061079b575080600601544210155b6107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190612d6c565b60405180910390fd5b5f816004015483426040516020016107f3929190612daa565b604051602081830303815290604052805190602001205f1c6108159190612e02565b90505f805f805f90505b60085f8981526020019081526020015f2080549050811015610989575f60085f8a81526020019081526020015f20828154811061085f5761085e612e32565b5b905f5260205f2090600202016040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090505f816040015182602001516109459190612e8c565b905080876109539190612e8c565b88101561096b57825f01519550809450505050610989565b80876109779190612e8c565b9650505050808060010191505061081f565b505f4790505f6109b960646109ab600860ff1685611fa790919063ffffffff16565b611fbc90919063ffffffff16565b90505f6109e660646109d8604860ff1686611fa790919063ffffffff16565b611fbc90919063ffffffff16565b90505f610a0e82610a008587611fd190919063ffffffff16565b611fd190919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610a74573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610ad9573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b3e573d5f803e3d5ffd5b50886002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30888c600301546040518463ffffffff1660e01b8152600401610ba393929190612ebf565b5f604051808303815f87803b158015610bba575f80fd5b505af1158015610bcc573d5f803e3d5ffd5b505050506001896007015f6101000a81548160ff0219169083151502179055508a7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610c229493929190612ef4565b60405180910390a28a7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8787604051610c5c929190612c1b565b60405180910390a2505050505050505050610c75611fe6565b5050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915054906101000a900460ff1681565b60098181548110610cca575f80fd5b905f5260205f20015f915090505481565b6060610ce76002611c0f565b905090565b610cf4611fef565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a848484604051610d9f93929190612f37565b60405180910390a260065f815480929190610db990612f6c565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610df0611fef565b610df95f612076565b565b60605f6001600654610e0d9190612fb3565b67ffffffffffffffff811115610e2657610e256129e4565b5b604051908082528060200260200182016040528015610e5f57816020015b610e4c612190565b815260200190600190039081610e445790505b5090505f600190505b600654811015610efc5760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505082600183610ed39190612fb3565b81518110610ee457610ee3612e32565b5b60200260200101819052508080600101915050610e68565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060610f3b5f611c0f565b905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015490806007015f9054906101000a900460ff16908060070160019054906101000a900460ff16905088565b3373ffffffffffffffffffffffffffffffffffffffff16610fdb610f09565b73ffffffffffffffffffffffffffffffffffffffff1614806110435750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107990612c9c565b60405180910390fd5b61108a611f61565b5f60075f8381526020019081526020015f209050806007015f9054906101000a900460ff16156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612d04565b60405180910390fd5b5f805f90505b60085f8581526020019081526020015f2080549050811015611270575f60085f8681526020019081526020015f20828154811061113557611134612e32565b5b905f5260205f2090600202016040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f1935050505015801561124f573d5f803e3d5ffd5b50805f01518461125f9190612e8c565b9350505080806001019150506110f5565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd306112b9610f09565b85600301546040518463ffffffff1660e01b81526004016112dc93929190612ebf565b5f604051808303815f87803b1580156112f3575f80fd5b505af1158015611305573d5f803e3d5ffd5b505050506001826007015f6101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e6826040516113559190612358565b60405180910390a25050611367611fe6565b50565b5f611373611fef565b5f83116113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90613030565b60405180910390fd5b5f82116113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90613098565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b81526004016114479190612358565b602060405180830381865afa158015611462573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148691906130ca565b73ffffffffffffffffffffffffffffffffffffffff16146114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d39061313f565b60405180910390fd5b428585336040516020016114f394939291906131a2565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020015f8152602001848152602001834261155d9190612e8c565b81526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f015560208201518160010190805190602001906115a69291906121b6565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015f6101000a81548160ff0219169083151502179055506101008201518160070160016101000a81548160ff021916908315150217905550905050600981908060018154018082558091505060019003905f5260205f20015f9091909190915055807f3b7847a02041ae017dcb9db9abe0e7ebc764ea42cb2b7a56f1ac3f17ba74655886868686426116af9190612e8c565b6040516116bf94939291906131ef565b60405180910390a295945050505050565b6116d8611f61565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160070160019054906101000a900460ff16611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a9061327c565b60405180910390fd5b816007015f9054906101000a900460ff16156117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db906132e4565b60405180910390fd5b8160060154421061182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061334c565b60405180910390fd5b806060015161186e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611865906133b4565b60405180910390fd5b6118c8826001018054806020026020016040519081016040528092919081815260200182805480156118bd57602002820191905f5260205f20905b8154815260200190600101908083116118a9575b505050505084612137565b611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe9061341c565b60405180910390fd5b805f0151341461194c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194390613484565b60405180910390fd5b5f816040015182602001516119619190612e8c565b905060085f8681526020019081526020015f2060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155505080836004015f828254611a289190612e8c565b92505081905550847f6a810537082cf3ed66b6537e8e7f1fdd1de31103c52234d2ddaf8e96c46c0f6f338684604051611a63939291906134a2565b60405180910390a2505050611a76611fe6565b5050565b611a82611fef565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c279682604051611b1c9190612721565b60405180910390a25050565b601481565b600881565b6008602052815f5260405f208181548110611b4b575f80fd5b905f5260205f2090600202015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b611b93611fef565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c03575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611bfa9190612910565b60405180910390fd5b611c0c81612076565b50565b60605f60098054905067ffffffffffffffff811115611c3157611c306129e4565b5b604051908082528060200260200182016040528015611c6a57816020015b611c57612201565b815260200190600190039081611c4f5790505b5090505f805b600980549050811015611ead575f60098281548110611c9257611c91612e32565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff1603611ce457816007015f9054906101000a900460ff16158015611cdd5750816006015442105b9050611d4c565b60018860ff1603611d0757816007015f9054906101000a900460ff169050611d4b565b60028860ff1603611d4a57816007015f9054906101000a900460ff16158015611d47575081600501548260040154101580611d46575081600601544210155b5b90505b5b5b8015611e9d5781604051806101200160405290815f820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db557602002820191905f5260205f20905b815481526020019060010190808311611da1575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff161515151581526020016007820160019054906101000a900460ff161515151581525050868681518110611e8357611e82612e32565b5b60200260200101819052508480611e9990612f6c565b9550505b5050508080600101915050611c70565b505f8167ffffffffffffffff811115611ec957611ec86129e4565b5b604051908082528060200260200182016040528015611f0257816020015b611eef612201565b815260200190600190039081611ee75790505b5090505f5b82811015611f5557838181518110611f2257611f21612e32565b5b6020026020010151828281518110611f3d57611f3c612e32565b5b60200260200101819052508080600101915050611f07565b50809350505050919050565b600260015403611f9d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183611fb491906134d7565b905092915050565b5f8183611fc99190613518565b905092915050565b5f8183611fde9190612fb3565b905092915050565b60018081905550565b611ff7612189565b73ffffffffffffffffffffffffffffffffffffffff16612015610f09565b73ffffffffffffffffffffffffffffffffffffffff161461207457612038612189565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161206b9190612910565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b835181101561217e578284828151811061215a57612159612e32565b5b602002602001015103612171576001915050612183565b808060010191505061213d565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f209081019282156121f0579160200282015b828111156121ef5782518255916020019190600101906121d4565b5b5090506121fd9190612262565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81526020015f151581526020015f151581525090565b5b80821115612279575f815f905550600101612263565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6122a08161228e565b81146122aa575f80fd5b50565b5f813590506122bb81612297565b92915050565b5f602082840312156122d6576122d5612286565b5b5f6122e3848285016122ad565b91505092915050565b6122f58161228e565b82525050565b5f8115159050919050565b61230f816122fb565b82525050565b5f6080820190506123285f8301876122ec565b61233560208301866122ec565b61234260408301856122ec565b61234f6060830184612306565b95945050505050565b5f60208201905061236b5f8301846122ec565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b6123ac8161239a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6123e48161228e565b82525050565b5f6123f583836123db565b60208301905092915050565b5f602082019050919050565b5f612417826123b2565b61242181856123bc565b935061242c836123cc565b805f5b8381101561245c57815161244388826123ea565b975061244e83612401565b92505060018101905061242f565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249282612469565b9050919050565b6124a281612488565b82525050565b6124b1816122fb565b82525050565b5f61012083015f8301516124cd5f8601826123a3565b50602083015184820360208601526124e5828261240d565b91505060408301516124fa6040860182612499565b50606083015161250d60608601826123db565b50608083015161252060808601826123db565b5060a083015161253360a08601826123db565b5060c083015161254660c08601826123db565b5060e083015161255960e08601826124a8565b5061010083015161256e6101008601826124a8565b508091505092915050565b5f61258483836124b7565b905092915050565b5f602082019050919050565b5f6125a282612371565b6125ac818561237b565b9350836020820285016125be8561238b565b805f5b858110156125f957848403895281516125da8582612579565b94506125e58361258c565b925060208a019950506001810190506125c1565b50829750879550505050505092915050565b5f6020820190508181035f8301526126238184612598565b905092915050565b5f61263582612469565b9050919050565b6126458161262b565b82525050565b5f60208201905061265e5f83018461263c565b92915050565b61266d8161239a565b8114612677575f80fd5b50565b5f8135905061268881612664565b92915050565b5f80604083850312156126a4576126a3612286565b5b5f6126b18582860161267a565b92505060206126c2858286016122ad565b9150509250929050565b6126d581612488565b81146126df575f80fd5b50565b5f813590506126f0816126cc565b92915050565b5f6020828403121561270b5761270a612286565b5b5f612718848285016126e2565b91505092915050565b5f6020820190506127345f830184612306565b92915050565b6127438161239a565b82525050565b5f60208201905061275c5f83018461273a565b92915050565b5f805f6060848603121561277957612778612286565b5b5f612786868287016122ad565b9350506020612797868287016122ad565b92505060406127a8868287016122ad565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f8201516127ef5f8501826123db565b50602082015161280260208501826123db565b50604082015161281560408501826123db565b50606082015161282860608501826124a8565b50505050565b5f61283983836127db565b60808301905092915050565b5f602082019050919050565b5f61285b826127b2565b61286581856127bc565b9350612870836127cc565b805f5b838110156128a0578151612887888261282e565b975061289283612845565b925050600181019050612873565b5085935050505092915050565b5f6020820190508181035f8301526128c58184612851565b905092915050565b5f60ff82169050919050565b6128e2816128cd565b82525050565b5f6020820190506128fb5f8301846128d9565b92915050565b61290a81612488565b82525050565b5f6020820190506129235f830184612901565b92915050565b5f6020828403121561293e5761293d612286565b5b5f61294b8482850161267a565b91505092915050565b5f610100820190506129685f83018b61273a565b612975602083018a612901565b61298260408301896122ec565b61298f60608301886122ec565b61299c60808301876122ec565b6129a960a08301866122ec565b6129b660c0830185612306565b6129c360e0830184612306565b9998505050505050505050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a1a826129d4565b810181811067ffffffffffffffff82111715612a3957612a386129e4565b5b80604052505050565b5f612a4b61227d565b9050612a578282612a11565b919050565b5f67ffffffffffffffff821115612a7657612a756129e4565b5b602082029050602081019050919050565b5f80fd5b5f612a9d612a9884612a5c565b612a42565b90508083825260208201905060208402830185811115612ac057612abf612a87565b5b835b81811015612ae95780612ad588826122ad565b845260208401935050602081019050612ac2565b5050509392505050565b5f82601f830112612b0757612b066129d0565b5b8135612b17848260208601612a8b565b91505092915050565b5f805f805f60a08688031215612b3957612b38612286565b5b5f86013567ffffffffffffffff811115612b5657612b5561228a565b5b612b6288828901612af3565b9550506020612b73888289016126e2565b9450506040612b84888289016122ad565b9350506060612b95888289016122ad565b9250506080612ba6888289016122ad565b9150509295509295909350565b612bbc816122fb565b8114612bc6575f80fd5b50565b5f81359050612bd781612bb3565b92915050565b5f8060408385031215612bf357612bf2612286565b5b5f612c00858286016126e2565b9250506020612c1185828601612bc9565b9150509250929050565b5f604082019050612c2e5f830185612901565b612c3b60208301846122ec565b9392505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f612c86600c83612c42565b9150612c9182612c52565b602082019050919050565b5f6020820190508181035f830152612cb381612c7a565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f612cee601383612c42565b9150612cf982612cba565b602082019050919050565b5f6020820190508181035f830152612d1b81612ce2565b9050919050565b7f4e6f7420726561647900000000000000000000000000000000000000000000005f82015250565b5f612d56600983612c42565b9150612d6182612d22565b602082019050919050565b5f6020820190508181035f830152612d8381612d4a565b9050919050565b5f819050919050565b612da4612d9f8261228e565b612d8a565b82525050565b5f612db58285612d93565b602082019150612dc58284612d93565b6020820191508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e0c8261228e565b9150612e178361228e565b925082612e2757612e26612dd5565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e968261228e565b9150612ea18361228e565b9250828201905080821115612eb957612eb8612e5f565b5b92915050565b5f606082019050612ed25f830186612901565b612edf6020830185612901565b612eec60408301846122ec565b949350505050565b5f608082019050612f075f8301876122ec565b612f1460208301866122ec565b612f2160408301856122ec565b612f2e60608301846122ec565b95945050505050565b5f606082019050612f4a5f8301866122ec565b612f5760208301856122ec565b612f6460408301846122ec565b949350505050565b5f612f768261228e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fa857612fa7612e5f565b5b600182019050919050565b5f612fbd8261228e565b9150612fc88361228e565b9250828203905081811115612fe057612fdf612e5f565b5b92915050565b7f496e76616c6964207461726765740000000000000000000000000000000000005f82015250565b5f61301a600e83612c42565b915061302582612fe6565b602082019050919050565b5f6020820190508181035f8301526130478161300e565b9050919050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f613082601083612c42565b915061308d8261304e565b602082019050919050565b5f6020820190508181035f8301526130af81613076565b9050919050565b5f815190506130c4816126cc565b92915050565b5f602082840312156130df576130de612286565b5b5f6130ec848285016130b6565b91505092915050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f613129600d83612c42565b9150613134826130f5565b602082019050919050565b5f6020820190508181035f8301526131568161311d565b9050919050565b5f8160601b9050919050565b5f6131738261315d565b9050919050565b5f61318482613169565b9050919050565b61319c61319782612488565b61317a565b82525050565b5f6131ad8287612d93565b6020820191506131bd828661318b565b6014820191506131cd8285612d93565b6020820191506131dd828461318b565b60148201915081905095945050505050565b5f6080820190506132025f830187612901565b61320f60208301866122ec565b61321c60408301856122ec565b61322960608301846122ec565b95945050505050565b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f613266600d83612c42565b915061327182613232565b602082019050919050565b5f6020820190508181035f8301526132938161325a565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f6132ce600b83612c42565b91506132d98261329a565b602082019050919050565b5f6020820190508181035f8301526132fb816132c2565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f613336601183612c42565b915061334182613302565b602082019050919050565b5f6020820190508181035f8301526133638161332a565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f61339e600c83612c42565b91506133a98261336a565b602082019050919050565b5f6020820190508181035f8301526133cb81613392565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f613406601083612c42565b9150613411826133d2565b602082019050919050565b5f6020820190508181035f830152613433816133fa565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f61346e601483612c42565b91506134798261343a565b602082019050919050565b5f6020820190508181035f83015261349b81613462565b9050919050565b5f6060820190506134b55f830186612901565b6134c260208301856122ec565b6134cf60408301846122ec565b949350505050565b5f6134e18261228e565b91506134ec8361228e565b92508282026134fa8161228e565b9150828204841483151761351157613510612e5f565b5b5092915050565b5f6135228261228e565b915061352d8361228e565b92508261353d5761353c612dd5565b5b82820490509291505056fea26469706673582212203823f8db320d08afe9602fd438d88c1685f0e26c5ec40089bf106cbd7cf4782864736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
-----Decoded View---------------
Arg [0] : _initialOwner (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [1] : _feeAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [2] : _treasuryAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [3] : _operationsAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [1] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [2] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [3] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode Sourcemap
14886:9643:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15943:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15992:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22708:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15288:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19815:1730;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15243:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16174:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16139:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22823:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17500:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15203:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6865:103;;;;;;;;;;;;;:::i;:::-;;22321:262;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15060:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6190:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22591:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16028:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;21580:710;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17849:1083;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18971:811;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24321:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15110:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15016:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16075:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7123:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15943:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15992:29::-;;;;:::o;22708:107::-;22756:14;22790:17;22805:1;22790:14;:17::i;:::-;22783:24;;22708:107;:::o;15288:40::-;;;;;;;;;;;;;:::o;19815:1730::-;17043:10;17032:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;17057:17;:29;17075:10;17057:29;;;;;;;;;;;;;;;;;;;;;;;;;17032:54;17024:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;2589:21:::1;:19;:21::i;:::-;19916:15:::2;19934:7;:16;19942:7;19934:16;;;;;;;;;;;19916:34;;19970:1;:9;;;;;;;;;;;;19969:10;19961:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;20040:1;:15;;;20022:1;:14;;;:33;;:65;;;;20078:1;:9;;;20059:15;:28;;20022:65;20014:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20122:20;20213:1;:14;;;20180:10;20192:15;20163:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20153:56;;;;;;20145:65;;:82;;;;:::i;:::-;20122:105;;20238:18;20267:14:::0;20292:21:::2;20330:9:::0;20342:1:::2;20330:13;;20326:488;20349:14;:23;20364:7;20349:23;;;;;;;;;;;:30;;;;20345:1;:34;20326:488;;;20401:22;20426:14;:23;20441:7;20426:23;;;;;;;;;;;20450:1;20426:26;;;;;;;;:::i;:::-;;;;;;;;;;;;20401:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;20467:21;20491:5;:15;20497:1;:8;;;20491:15;;;;;;;;;;;20467:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;20521:15;20558:4;:17;;;20539:4;:16;;;:36;;;;:::i;:::-;20521:54;;20635:7;20622:10;:20;;;;:::i;:::-;20607:12;:35;20604:163;;;20672:1;:13;;;20663:22;;20720:7;20704:23;;20746:5;;;;;20604:163;20795:7;20781:21;;;;;:::i;:::-;;;20386:428;;;20381:3;;;;;;;20326:488;;;;20826:22;20851:21;20826:46;;20883:17;20903:40;20939:3;20903:31;15052:1;20903:31;;:14;:18;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;20883:60;;20954:22;20979:45;21020:3;20979:36;15101:2;20979:36;;:14;:18;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;20954:70;;21035:24;21062:49;21096:14;21062:29;21081:9;21062:14;:18;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;21035:76;;21124:10;;;;;;;;;;;:19;;:30;21144:9;21124:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;21165:15;;;;;;;;;;;:24;;:40;21190:14;21165:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;21216:17;;;;;;;;;;;:26;;:44;21243:16;21216:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;21278:1;:12;;;;;;;;;;;;21273:31;;;21313:4;21320:6;21328:1;:7;;;21273:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;21359:4;21347:1;:9;;;:16;;;;;;;;;;;;;;;;;;21406:7;21389:86;21415:14;21431:9;21442:14;21458:16;21389:86;;;;;;;;;:::i;:::-;;;;;;;;21506:7;21491:46;21515:6;21523:13;21491:46;;;;;;;:::i;:::-;;;;;;;;19905:1640;;;;;;;;;2633:20:::1;:18;:20::i;:::-;19815:1730:::0;;:::o;15243:38::-;;;;;;;;;;;;;:::o;16174:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;16139:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22823:107::-;22871:14;22905:17;22920:1;22905:14;:17::i;:::-;22898:24;;22823:107;:::o;17500:318::-;6076:13;:11;:13::i;:::-;17661:51:::1;;;;;;;;17671:7;17661:51;;;;17680:11;17661:51;;;;17693:12;17661:51;;;;17707:4;17661:51;;;;::::0;17641:5:::1;:17;17647:10;;17641:17;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17740:10;;17728:59;17752:7;17761:11;17774:12;17728:59;;;;;;;;:::i;:::-;;;;;;;;17798:10;;:12;;;;;;;;;:::i;:::-;;;;;;17500:318:::0;;;:::o;15203:33::-;;;;;;;;;;;;;:::o;6865:103::-;6076:13;:11;:13::i;:::-;6930:30:::1;6957:1;6930:18;:30::i;:::-;6865:103::o:0;22321:262::-;22367:18;22398:24;22452:1;22441:10;;:12;;;;:::i;:::-;22425:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;22398:56;;22469:9;22481:1;22469:13;;22465:88;22488:10;;22484:1;:14;22465:88;;;22533:5;:8;22539:1;22533:8;;;;;;;;;;;22520:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;22528:1;22526;:3;;;;:::i;:::-;22520:10;;;;;;;;:::i;:::-;;;;;;;:21;;;;22500:3;;;;;;;22465:88;;;;22570:5;22563:12;;;22321:262;:::o;15060:43::-;15101:2;15060:43;:::o;6190:87::-;6236:7;6263:6;;;;;;;;;;;6256:13;;6190:87;:::o;22591:109::-;22641:14;22675:17;22690:1;22675:14;:17::i;:::-;22668:24;;22591:109;:::o;16028:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21580:710::-;17043:10;17032:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;17057:17;:29;17075:10;17057:29;;;;;;;;;;;;;;;;;;;;;;;;;17032:54;17024:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;2589:21:::1;:19;:21::i;:::-;21662:15:::2;21680:7;:16;21688:7;21680:16;;;;;;;;;;;21662:34;;21716:1;:9;;;;;;;;;;;;21715:10;21707:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;21770:21;21816:9:::0;21828:1:::2;21816:13;;21812:296;21835:14;:23;21850:7;21835:23;;;;;;;;;;;:30;;;;21831:1;:34;21812:296;;;21887:22;21912:14;:23;21927:7;21912:23;;;;;;;;;;;21936:1;21912:26;;;;;;;;:::i;:::-;;;;;;;;;;;;21887:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;21953:21;21977:5;:15;21983:1;:8;;;21977:15;;;;;;;;;;;21953:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;22015:1;:13;;;22007:31;;:45;22039:4;:12;;;22007:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;22084:4;:12;;;22067:29;;;;;:::i;:::-;;;21872:236;;21867:3;;;;;;;21812:296;;;;22133:1;:12;;;;;;;;;;;;22128:31;;;22168:4;22175:7;:5;:7::i;:::-;22184:1;:7;;;22128:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;22215:4;22203:1;:9;;;:16;;;;;;;;;;;;;;;;;;22259:7;22245:37;22268:13;22245:37;;;;;;:::i;:::-;;;;;;;;21651:639;;2633:20:::1;:18;:20::i;:::-;21580:710:::0;:::o;17849:1083::-;18057:15;6076:13;:11;:13::i;:::-;18109:1:::1;18093:13;:17;18085:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;18159:1;18148:8;:12;18140:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18243:4;18200:48;;18205:10;18200:24;;;18225:5;18200:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;18192:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18330:15;18360:10;18385:5;18405:10;18299:127;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18289:138;;;;;;18279:148;;18459:328;;;;;;;;18484:7;18459:328;;;;18520:12;18459:328;;;;18559:10;18459:328;;;;;;18591:5;18459:328;;;;18625:1;18459:328;;;;18656:13;18459:328;;;;18711:8;18693:15;:26;;;;:::i;:::-;18459:328;;;;18743:5;18459:328;;;;;;18771:4;18459:328;;;;::::0;18440:7:::1;:16;18448:7;18440:16;;;;;;;;;;;:347;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18800:11;18817:7;18800:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18854:7;18841:83;18863:10;18875:5;18882:13;18915:8;18897:15;:26;;;;:::i;:::-;18841:83;;;;;;;;;:::i;:::-;;;;;;;;17849:1083:::0;;;;;;;:::o;18971:811::-;2589:21;:19;:21::i;:::-;19061:15:::1;19079:7;:16;19087:7;19079:16;;;;;;;;;;;19061:34;;19106:21;19130:5;:13;19136:6;19130:13;;;;;;;;;;;19106:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;19172:1;:8;;;;;;;;;;;;19164:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;19218:1;:9;;;;;;;;;;;;19217:10;19209:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;19280:1;:9;;;19262:15;:27;19254:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;19330:4;:11;;;19322:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;19377:32;19386:1;:14;;19377:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19402:6;19377:8;:32::i;:::-;19369:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19462:4;:12;;;19449:9;:25;19441:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19512:20;19554:4;:17;;;19535:4;:16;;;:36;;;;:::i;:::-;19512:59;;19582:14;:23;19597:7;19582:23;;;;;;;;;;;19611:33;;;;;;;;19625:10;19611:33;;;;;;19637:6;19611:33;;::::0;19582:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19674:12;19656:1;:14;;;:30;;;;;;;:::i;:::-;;;;;;;;19732:7;19712:62;19741:10;19753:6;19761:12;19712:62;;;;;;;;:::i;:::-;;;;;;;;19050:732;;;2633:20:::0;:18;:20::i;:::-;18971:811;;:::o;24321:168::-;6076:13;:11;:13::i;:::-;24430:6:::1;24402:17;:25;24420:6;24402:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24466:6;24452:29;;;24474:6;24452:29;;;;;;:::i;:::-;;;;;;;;24321:168:::0;;:::o;15110:45::-;15153:2;15110:45;:::o;15016:37::-;15052:1;15016:37;:::o;16075:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7123:220::-;6076:13;:11;:13::i;:::-;7228:1:::1;7208:22;;:8;:22;;::::0;7204:93:::1;;7282:1;7254:31;;;;;;;;;;;:::i;:::-;;;;;;;;7204:93;7307:28;7326:8;7307:18;:28::i;:::-;7123:220:::0;:::o;22963:1087::-;23027:14;23054:21;23090:11;:18;;;;23078:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;23054:55;;23120:13;23162:9;23158:710;23181:11;:18;;;;23177:1;:22;23158:710;;;23221:10;23234:11;23246:1;23234:14;;;;;;;;:::i;:::-;;;;;;;;;;23221:27;;23263:15;23281:7;:11;23289:2;23281:11;;;;;;;;;;;23263:29;;23321:12;23365:1;23351:10;:15;;;23348:391;;23409:1;:9;;;;;;;;;;;;23408:10;:41;;;;;23440:1;:9;;;23422:15;:27;23408:41;23398:51;;23348:391;;;23488:1;23474:10;:15;;;23471:268;;23531:1;:9;;;;;;;;;;;;23521:19;;23471:268;;;23579:1;23565:10;:15;;;23562:177;;23621:1;:9;;;;;;;;;;;;23620:10;:103;;;;;23675:1;:15;;;23657:1;:14;;;:33;;:65;;;;23713:1;:9;;;23694:15;:28;;23657:65;23620:103;23610:113;;23562:177;23471:268;23348:391;23770:7;23767:90;;;23814:1;23798:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;23805:5;23798:13;;;;;;;;:::i;:::-;;;;;;;:17;;;;23834:7;;;;;:::i;:::-;;;;23767:90;23206:662;;;23201:3;;;;;;;23158:710;;;;23880:22;23917:5;23905:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;23880:43;;23938:9;23934:84;23957:5;23953:1;:9;23934:84;;;23997:6;24004:1;23997:9;;;;;;;;:::i;:::-;;;;;;;;23984:7;23992:1;23984:10;;;;;;;;:::i;:::-;;;;;;;:22;;;;23964:3;;;;;;;23934:84;;;;24035:7;24028:14;;;;;22963:1087;;;:::o;2669:315::-;1967:1;2798:7;;:18;2794:88;;2840:30;;;;;;;;;;;;;;2794:88;1967:1;2959:7;:17;;;;2669:315::o;11315:98::-;11373:7;11404:1;11400;:5;;;;:::i;:::-;11393:12;;11315:98;;;;:::o;11714:::-;11772:7;11803:1;11799;:5;;;;:::i;:::-;11792:12;;11714:98;;;;:::o;10958:::-;11016:7;11047:1;11043;:5;;;;:::i;:::-;11036:12;;10958:98;;;;:::o;2992:212::-;1924:1;3175:7;:21;;;;2992:212::o;6355:166::-;6426:12;:10;:12::i;:::-;6415:23;;:7;:5;:7::i;:::-;:23;;;6411:103;;6489:12;:10;:12::i;:::-;6462:40;;;;;;;;;;;:::i;:::-;;;;;;;;6411:103;6355:166::o;7503:191::-;7577:16;7596:6;;;;;;;;;;;7577:25;;7622:8;7613:6;;:17;;;;;;;;;;;;;;;;;;7677:8;7646:40;;7667:8;7646:40;;;;;;;;;;;;7566:128;7503:191;:::o;24058:222::-;24135:4;24156:9;24168:1;24156:13;;24152:98;24175:3;:10;24171:1;:14;24152:98;;;24220:5;24210:3;24214:1;24210:6;;;;;;;;:::i;:::-;;;;;;;;:15;24207:31;;24234:4;24227:11;;;;;24207:31;24187:3;;;;;;;24152:98;;;;24267:5;24260:12;;24058:222;;;;;:::o;4199:98::-;4252:7;4279:10;4272:17;;4199:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:90::-;1183:7;1226:5;1219:13;1212:21;1201:32;;1149:90;;;:::o;1245:109::-;1326:21;1341:5;1326:21;:::i;:::-;1321:3;1314:34;1245:109;;:::o;1360:541::-;1531:4;1569:3;1558:9;1554:19;1546:27;;1583:71;1651:1;1640:9;1636:17;1627:6;1583:71;:::i;:::-;1664:72;1732:2;1721:9;1717:18;1708:6;1664:72;:::i;:::-;1746;1814:2;1803:9;1799:18;1790:6;1746:72;:::i;:::-;1828:66;1890:2;1879:9;1875:18;1866:6;1828:66;:::i;:::-;1360:541;;;;;;;:::o;1907:222::-;2000:4;2038:2;2027:9;2023:18;2015:26;;2051:71;2119:1;2108:9;2104:17;2095:6;2051:71;:::i;:::-;1907:222;;;;:::o;2135:136::-;2224:6;2258:5;2252:12;2242:22;;2135:136;;;:::o;2277:206::-;2398:11;2432:6;2427:3;2420:19;2472:4;2467:3;2463:14;2448:29;;2277:206;;;;:::o;2489:154::-;2578:4;2601:3;2593:11;;2631:4;2626:3;2622:14;2614:22;;2489:154;;;:::o;2649:77::-;2686:7;2715:5;2704:16;;2649:77;;;:::o;2732:108::-;2809:24;2827:5;2809:24;:::i;:::-;2804:3;2797:37;2732:108;;:::o;2846:114::-;2913:6;2947:5;2941:12;2931:22;;2846:114;;;:::o;2966:174::-;3055:11;3089:6;3084:3;3077:19;3129:4;3124:3;3120:14;3105:29;;2966:174;;;;:::o;3146:132::-;3213:4;3236:3;3228:11;;3266:4;3261:3;3257:14;3249:22;;3146:132;;;:::o;3284:108::-;3361:24;3379:5;3361:24;:::i;:::-;3356:3;3349:37;3284:108;;:::o;3398:179::-;3467:10;3488:46;3530:3;3522:6;3488:46;:::i;:::-;3566:4;3561:3;3557:14;3543:28;;3398:179;;;;:::o;3583:113::-;3653:4;3685;3680:3;3676:14;3668:22;;3583:113;;;:::o;3732:712::-;3841:3;3870:54;3918:5;3870:54;:::i;:::-;3940:76;4009:6;4004:3;3940:76;:::i;:::-;3933:83;;4040:56;4090:5;4040:56;:::i;:::-;4119:7;4150:1;4135:284;4160:6;4157:1;4154:13;4135:284;;;4236:6;4230:13;4263:63;4322:3;4307:13;4263:63;:::i;:::-;4256:70;;4349:60;4402:6;4349:60;:::i;:::-;4339:70;;4195:224;4182:1;4179;4175:9;4170:14;;4135:284;;;4139:14;4435:3;4428:10;;3846:598;;;3732:712;;;;:::o;4450:126::-;4487:7;4527:42;4520:5;4516:54;4505:65;;4450:126;;;:::o;4582:96::-;4619:7;4648:24;4666:5;4648:24;:::i;:::-;4637:35;;4582:96;;;:::o;4684:108::-;4761:24;4779:5;4761:24;:::i;:::-;4756:3;4749:37;4684:108;;:::o;4798:99::-;4869:21;4884:5;4869:21;:::i;:::-;4864:3;4857:34;4798:99;;:::o;4959:1870::-;5062:3;5098:6;5093:3;5089:16;5185:4;5178:5;5174:16;5168:23;5204:63;5261:4;5256:3;5252:14;5238:12;5204:63;:::i;:::-;5115:162;5367:4;5360:5;5356:16;5350:23;5420:3;5414:4;5410:14;5403:4;5398:3;5394:14;5387:38;5446:103;5544:4;5530:12;5446:103;:::i;:::-;5438:111;;5287:273;5648:4;5641:5;5637:16;5631:23;5667:63;5724:4;5719:3;5715:14;5701:12;5667:63;:::i;:::-;5570:170;5823:4;5816:5;5812:16;5806:23;5842:63;5899:4;5894:3;5890:14;5876:12;5842:63;:::i;:::-;5750:165;6005:4;5998:5;5994:16;5988:23;6024:63;6081:4;6076:3;6072:14;6058:12;6024:63;:::i;:::-;5925:172;6188:4;6181:5;6177:16;6171:23;6207:63;6264:4;6259:3;6255:14;6241:12;6207:63;:::i;:::-;6107:173;6365:4;6358:5;6354:16;6348:23;6384:63;6441:4;6436:3;6432:14;6418:12;6384:63;:::i;:::-;6290:167;6542:4;6535:5;6531:16;6525:23;6561:57;6612:4;6607:3;6603:14;6589:12;6561:57;:::i;:::-;6467:161;6712:6;6705:5;6701:18;6695:25;6733:59;6784:6;6779:3;6775:16;6761:12;6733:59;:::i;:::-;6638:164;6819:4;6812:11;;5067:1762;4959:1870;;;;:::o;6835:244::-;6948:10;6983:90;7069:3;7061:6;6983:90;:::i;:::-;6969:104;;6835:244;;;;:::o;7085:135::-;7177:4;7209;7204:3;7200:14;7192:22;;7085:135;;;:::o;7286:1087::-;7449:3;7478:76;7548:5;7478:76;:::i;:::-;7570:108;7671:6;7666:3;7570:108;:::i;:::-;7563:115;;7704:3;7749:4;7741:6;7737:17;7732:3;7728:27;7779:78;7851:5;7779:78;:::i;:::-;7880:7;7911:1;7896:432;7921:6;7918:1;7915:13;7896:432;;;7992:9;7986:4;7982:20;7977:3;7970:33;8043:6;8037:13;8071:108;8174:4;8159:13;8071:108;:::i;:::-;8063:116;;8202:82;8277:6;8202:82;:::i;:::-;8192:92;;8313:4;8308:3;8304:14;8297:21;;7956:372;7943:1;7940;7936:9;7931:14;;7896:432;;;7900:14;8344:4;8337:11;;8364:3;8357:10;;7454:919;;;;;7286:1087;;;;:::o;8379:461::-;8566:4;8604:2;8593:9;8589:18;8581:26;;8653:9;8647:4;8643:20;8639:1;8628:9;8624:17;8617:47;8681:152;8828:4;8819:6;8681:152;:::i;:::-;8673:160;;8379:461;;;;:::o;8846:104::-;8891:7;8920:24;8938:5;8920:24;:::i;:::-;8909:35;;8846:104;;;:::o;8956:142::-;9059:32;9085:5;9059:32;:::i;:::-;9054:3;9047:45;8956:142;;:::o;9104:254::-;9213:4;9251:2;9240:9;9236:18;9228:26;;9264:87;9348:1;9337:9;9333:17;9324:6;9264:87;:::i;:::-;9104:254;;;;:::o;9364:122::-;9437:24;9455:5;9437:24;:::i;:::-;9430:5;9427:35;9417:63;;9476:1;9473;9466:12;9417:63;9364:122;:::o;9492:139::-;9538:5;9576:6;9563:20;9554:29;;9592:33;9619:5;9592:33;:::i;:::-;9492:139;;;;:::o;9637:474::-;9705:6;9713;9762:2;9750:9;9741:7;9737:23;9733:32;9730:119;;;9768:79;;:::i;:::-;9730:119;9888:1;9913:53;9958:7;9949:6;9938:9;9934:22;9913:53;:::i;:::-;9903:63;;9859:117;10015:2;10041:53;10086:7;10077:6;10066:9;10062:22;10041:53;:::i;:::-;10031:63;;9986:118;9637:474;;;;;:::o;10117:122::-;10190:24;10208:5;10190:24;:::i;:::-;10183:5;10180:35;10170:63;;10229:1;10226;10219:12;10170:63;10117:122;:::o;10245:139::-;10291:5;10329:6;10316:20;10307:29;;10345:33;10372:5;10345:33;:::i;:::-;10245:139;;;;:::o;10390:329::-;10449:6;10498:2;10486:9;10477:7;10473:23;10469:32;10466:119;;;10504:79;;:::i;:::-;10466:119;10624:1;10649:53;10694:7;10685:6;10674:9;10670:22;10649:53;:::i;:::-;10639:63;;10595:117;10390:329;;;;:::o;10725:210::-;10812:4;10850:2;10839:9;10835:18;10827:26;;10863:65;10925:1;10914:9;10910:17;10901:6;10863:65;:::i;:::-;10725:210;;;;:::o;10941:118::-;11028:24;11046:5;11028:24;:::i;:::-;11023:3;11016:37;10941:118;;:::o;11065:222::-;11158:4;11196:2;11185:9;11181:18;11173:26;;11209:71;11277:1;11266:9;11262:17;11253:6;11209:71;:::i;:::-;11065:222;;;;:::o;11293:619::-;11370:6;11378;11386;11435:2;11423:9;11414:7;11410:23;11406:32;11403:119;;;11441:79;;:::i;:::-;11403:119;11561:1;11586:53;11631:7;11622:6;11611:9;11607:22;11586:53;:::i;:::-;11576:63;;11532:117;11688:2;11714:53;11759:7;11750:6;11739:9;11735:22;11714:53;:::i;:::-;11704:63;;11659:118;11816:2;11842:53;11887:7;11878:6;11867:9;11863:22;11842:53;:::i;:::-;11832:63;;11787:118;11293:619;;;;;:::o;11918:140::-;12011:6;12045:5;12039:12;12029:22;;11918:140;;;:::o;12064:210::-;12189:11;12223:6;12218:3;12211:19;12263:4;12258:3;12254:14;12239:29;;12064:210;;;;:::o;12280:158::-;12373:4;12396:3;12388:11;;12426:4;12421:3;12417:14;12409:22;;12280:158;;;:::o;12508:861::-;12647:4;12642:3;12638:14;12737:4;12730:5;12726:16;12720:23;12756:63;12813:4;12808:3;12804:14;12790:12;12756:63;:::i;:::-;12662:167;12918:4;12911:5;12907:16;12901:23;12937:63;12994:4;12989:3;12985:14;12971:12;12937:63;:::i;:::-;12839:171;13100:4;13093:5;13089:16;13083:23;13119:63;13176:4;13171:3;13167:14;13153:12;13119:63;:::i;:::-;13020:172;13276:4;13269:5;13265:16;13259:23;13295:57;13346:4;13341:3;13337:14;13323:12;13295:57;:::i;:::-;13202:160;12616:753;12508:861;;:::o;13375:283::-;13496:10;13517:98;13611:3;13603:6;13517:98;:::i;:::-;13647:4;13642:3;13638:14;13624:28;;13375:283;;;;:::o;13664:139::-;13760:4;13792;13787:3;13783:14;13775:22;;13664:139;;;:::o;13877:940::-;14048:3;14077:80;14151:5;14077:80;:::i;:::-;14173:112;14278:6;14273:3;14173:112;:::i;:::-;14166:119;;14309:82;14385:5;14309:82;:::i;:::-;14414:7;14445:1;14430:362;14455:6;14452:1;14449:13;14430:362;;;14531:6;14525:13;14558:115;14669:3;14654:13;14558:115;:::i;:::-;14551:122;;14696:86;14775:6;14696:86;:::i;:::-;14686:96;;14490:302;14477:1;14474;14470:9;14465:14;;14430:362;;;14434:14;14808:3;14801:10;;14053:764;;;13877:940;;;;:::o;14823:477::-;15018:4;15056:2;15045:9;15041:18;15033:26;;15105:9;15099:4;15095:20;15091:1;15080:9;15076:17;15069:47;15133:160;15288:4;15279:6;15133:160;:::i;:::-;15125:168;;14823:477;;;;:::o;15306:86::-;15341:7;15381:4;15374:5;15370:16;15359:27;;15306:86;;;:::o;15398:112::-;15481:22;15497:5;15481:22;:::i;:::-;15476:3;15469:35;15398:112;;:::o;15516:214::-;15605:4;15643:2;15632:9;15628:18;15620:26;;15656:67;15720:1;15709:9;15705:17;15696:6;15656:67;:::i;:::-;15516:214;;;;:::o;15736:118::-;15823:24;15841:5;15823:24;:::i;:::-;15818:3;15811:37;15736:118;;:::o;15860:222::-;15953:4;15991:2;15980:9;15976:18;15968:26;;16004:71;16072:1;16061:9;16057:17;16048:6;16004:71;:::i;:::-;15860:222;;;;:::o;16088:329::-;16147:6;16196:2;16184:9;16175:7;16171:23;16167:32;16164:119;;;16202:79;;:::i;:::-;16164:119;16322:1;16347:53;16392:7;16383:6;16372:9;16368:22;16347:53;:::i;:::-;16337:63;;16293:117;16088:329;;;;:::o;16423:973::-;16700:4;16738:3;16727:9;16723:19;16715:27;;16752:71;16820:1;16809:9;16805:17;16796:6;16752:71;:::i;:::-;16833:72;16901:2;16890:9;16886:18;16877:6;16833:72;:::i;:::-;16915;16983:2;16972:9;16968:18;16959:6;16915:72;:::i;:::-;16997;17065:2;17054:9;17050:18;17041:6;16997:72;:::i;:::-;17079:73;17147:3;17136:9;17132:19;17123:6;17079:73;:::i;:::-;17162;17230:3;17219:9;17215:19;17206:6;17162:73;:::i;:::-;17245:67;17307:3;17296:9;17292:19;17283:6;17245:67;:::i;:::-;17322;17384:3;17373:9;17369:19;17360:6;17322:67;:::i;:::-;16423:973;;;;;;;;;;;:::o;17402:117::-;17511:1;17508;17501:12;17525:102;17566:6;17617:2;17613:7;17608:2;17601:5;17597:14;17593:28;17583:38;;17525:102;;;:::o;17633:180::-;17681:77;17678:1;17671:88;17778:4;17775:1;17768:15;17802:4;17799:1;17792:15;17819:281;17902:27;17924:4;17902:27;:::i;:::-;17894:6;17890:40;18032:6;18020:10;18017:22;17996:18;17984:10;17981:34;17978:62;17975:88;;;18043:18;;:::i;:::-;17975:88;18083:10;18079:2;18072:22;17862:238;17819:281;;:::o;18106:129::-;18140:6;18167:20;;:::i;:::-;18157:30;;18196:33;18224:4;18216:6;18196:33;:::i;:::-;18106:129;;;:::o;18241:311::-;18318:4;18408:18;18400:6;18397:30;18394:56;;;18430:18;;:::i;:::-;18394:56;18480:4;18472:6;18468:17;18460:25;;18540:4;18534;18530:15;18522:23;;18241:311;;;:::o;18558:117::-;18667:1;18664;18657:12;18698:710;18794:5;18819:81;18835:64;18892:6;18835:64;:::i;:::-;18819:81;:::i;:::-;18810:90;;18920:5;18949:6;18942:5;18935:21;18983:4;18976:5;18972:16;18965:23;;19036:4;19028:6;19024:17;19016:6;19012:30;19065:3;19057:6;19054:15;19051:122;;;19084:79;;:::i;:::-;19051:122;19199:6;19182:220;19216:6;19211:3;19208:15;19182:220;;;19291:3;19320:37;19353:3;19341:10;19320:37;:::i;:::-;19315:3;19308:50;19387:4;19382:3;19378:14;19371:21;;19258:144;19242:4;19237:3;19233:14;19226:21;;19182:220;;;19186:21;18800:608;;18698:710;;;;;:::o;19431:370::-;19502:5;19551:3;19544:4;19536:6;19532:17;19528:27;19518:122;;19559:79;;:::i;:::-;19518:122;19676:6;19663:20;19701:94;19791:3;19783:6;19776:4;19768:6;19764:17;19701:94;:::i;:::-;19692:103;;19508:293;19431:370;;;;:::o;19807:1121::-;19927:6;19935;19943;19951;19959;20008:3;19996:9;19987:7;19983:23;19979:33;19976:120;;;20015:79;;:::i;:::-;19976:120;20163:1;20152:9;20148:17;20135:31;20193:18;20185:6;20182:30;20179:117;;;20215:79;;:::i;:::-;20179:117;20320:78;20390:7;20381:6;20370:9;20366:22;20320:78;:::i;:::-;20310:88;;20106:302;20447:2;20473:53;20518:7;20509:6;20498:9;20494:22;20473:53;:::i;:::-;20463:63;;20418:118;20575:2;20601:53;20646:7;20637:6;20626:9;20622:22;20601:53;:::i;:::-;20591:63;;20546:118;20703:2;20729:53;20774:7;20765:6;20754:9;20750:22;20729:53;:::i;:::-;20719:63;;20674:118;20831:3;20858:53;20903:7;20894:6;20883:9;20879:22;20858:53;:::i;:::-;20848:63;;20802:119;19807:1121;;;;;;;;:::o;20934:116::-;21004:21;21019:5;21004:21;:::i;:::-;20997:5;20994:32;20984:60;;21040:1;21037;21030:12;20984:60;20934:116;:::o;21056:133::-;21099:5;21137:6;21124:20;21115:29;;21153:30;21177:5;21153:30;:::i;:::-;21056:133;;;;:::o;21195:468::-;21260:6;21268;21317:2;21305:9;21296:7;21292:23;21288:32;21285:119;;;21323:79;;:::i;:::-;21285:119;21443:1;21468:53;21513:7;21504:6;21493:9;21489:22;21468:53;:::i;:::-;21458:63;;21414:117;21570:2;21596:50;21638:7;21629:6;21618:9;21614:22;21596:50;:::i;:::-;21586:60;;21541:115;21195:468;;;;;:::o;21669:332::-;21790:4;21828:2;21817:9;21813:18;21805:26;;21841:71;21909:1;21898:9;21894:17;21885:6;21841:71;:::i;:::-;21922:72;21990:2;21979:9;21975:18;21966:6;21922:72;:::i;:::-;21669:332;;;;;:::o;22007:169::-;22091:11;22125:6;22120:3;22113:19;22165:4;22160:3;22156:14;22141:29;;22007:169;;;;:::o;22182:162::-;22322:14;22318:1;22310:6;22306:14;22299:38;22182:162;:::o;22350:366::-;22492:3;22513:67;22577:2;22572:3;22513:67;:::i;:::-;22506:74;;22589:93;22678:3;22589:93;:::i;:::-;22707:2;22702:3;22698:12;22691:19;;22350:366;;;:::o;22722:419::-;22888:4;22926:2;22915:9;22911:18;22903:26;;22975:9;22969:4;22965:20;22961:1;22950:9;22946:17;22939:47;23003:131;23129:4;23003:131;:::i;:::-;22995:139;;22722:419;;;:::o;23147:169::-;23287:21;23283:1;23275:6;23271:14;23264:45;23147:169;:::o;23322:366::-;23464:3;23485:67;23549:2;23544:3;23485:67;:::i;:::-;23478:74;;23561:93;23650:3;23561:93;:::i;:::-;23679:2;23674:3;23670:12;23663:19;;23322:366;;;:::o;23694:419::-;23860:4;23898:2;23887:9;23883:18;23875:26;;23947:9;23941:4;23937:20;23933:1;23922:9;23918:17;23911:47;23975:131;24101:4;23975:131;:::i;:::-;23967:139;;23694:419;;;:::o;24119:159::-;24259:11;24255:1;24247:6;24243:14;24236:35;24119:159;:::o;24284:365::-;24426:3;24447:66;24511:1;24506:3;24447:66;:::i;:::-;24440:73;;24522:93;24611:3;24522:93;:::i;:::-;24640:2;24635:3;24631:12;24624:19;;24284:365;;;:::o;24655:419::-;24821:4;24859:2;24848:9;24844:18;24836:26;;24908:9;24902:4;24898:20;24894:1;24883:9;24879:17;24872:47;24936:131;25062:4;24936:131;:::i;:::-;24928:139;;24655:419;;;:::o;25080:79::-;25119:7;25148:5;25137:16;;25080:79;;;:::o;25165:157::-;25270:45;25290:24;25308:5;25290:24;:::i;:::-;25270:45;:::i;:::-;25265:3;25258:58;25165:157;;:::o;25328:397::-;25468:3;25483:75;25554:3;25545:6;25483:75;:::i;:::-;25583:2;25578:3;25574:12;25567:19;;25596:75;25667:3;25658:6;25596:75;:::i;:::-;25696:2;25691:3;25687:12;25680:19;;25716:3;25709:10;;25328:397;;;;;:::o;25731:180::-;25779:77;25776:1;25769:88;25876:4;25873:1;25866:15;25900:4;25897:1;25890:15;25917:176;25949:1;25966:20;25984:1;25966:20;:::i;:::-;25961:25;;26000:20;26018:1;26000:20;:::i;:::-;25995:25;;26039:1;26029:35;;26044:18;;:::i;:::-;26029:35;26085:1;26082;26078:9;26073:14;;25917:176;;;;:::o;26099:180::-;26147:77;26144:1;26137:88;26244:4;26241:1;26234:15;26268:4;26265:1;26258:15;26285:180;26333:77;26330:1;26323:88;26430:4;26427:1;26420:15;26454:4;26451:1;26444:15;26471:191;26511:3;26530:20;26548:1;26530:20;:::i;:::-;26525:25;;26564:20;26582:1;26564:20;:::i;:::-;26559:25;;26607:1;26604;26600:9;26593:16;;26628:3;26625:1;26622:10;26619:36;;;26635:18;;:::i;:::-;26619:36;26471:191;;;;:::o;26668:442::-;26817:4;26855:2;26844:9;26840:18;26832:26;;26868:71;26936:1;26925:9;26921:17;26912:6;26868:71;:::i;:::-;26949:72;27017:2;27006:9;27002:18;26993:6;26949:72;:::i;:::-;27031;27099:2;27088:9;27084:18;27075:6;27031:72;:::i;:::-;26668:442;;;;;;:::o;27116:553::-;27293:4;27331:3;27320:9;27316:19;27308:27;;27345:71;27413:1;27402:9;27398:17;27389:6;27345:71;:::i;:::-;27426:72;27494:2;27483:9;27479:18;27470:6;27426:72;:::i;:::-;27508;27576:2;27565:9;27561:18;27552:6;27508:72;:::i;:::-;27590;27658:2;27647:9;27643:18;27634:6;27590:72;:::i;:::-;27116:553;;;;;;;:::o;27675:442::-;27824:4;27862:2;27851:9;27847:18;27839:26;;27875:71;27943:1;27932:9;27928:17;27919:6;27875:71;:::i;:::-;27956:72;28024:2;28013:9;28009:18;28000:6;27956:72;:::i;:::-;28038;28106:2;28095:9;28091:18;28082:6;28038:72;:::i;:::-;27675:442;;;;;;:::o;28123:233::-;28162:3;28185:24;28203:5;28185:24;:::i;:::-;28176:33;;28231:66;28224:5;28221:77;28218:103;;28301:18;;:::i;:::-;28218:103;28348:1;28341:5;28337:13;28330:20;;28123:233;;;:::o;28362:194::-;28402:4;28422:20;28440:1;28422:20;:::i;:::-;28417:25;;28456:20;28474:1;28456:20;:::i;:::-;28451:25;;28500:1;28497;28493:9;28485:17;;28524:1;28518:4;28515:11;28512:37;;;28529:18;;:::i;:::-;28512:37;28362:194;;;;:::o;28562:164::-;28702:16;28698:1;28690:6;28686:14;28679:40;28562:164;:::o;28732:366::-;28874:3;28895:67;28959:2;28954:3;28895:67;:::i;:::-;28888:74;;28971:93;29060:3;28971:93;:::i;:::-;29089:2;29084:3;29080:12;29073:19;;28732:366;;;:::o;29104:419::-;29270:4;29308:2;29297:9;29293:18;29285:26;;29357:9;29351:4;29347:20;29343:1;29332:9;29328:17;29321:47;29385:131;29511:4;29385:131;:::i;:::-;29377:139;;29104:419;;;:::o;29529:166::-;29669:18;29665:1;29657:6;29653:14;29646:42;29529:166;:::o;29701:366::-;29843:3;29864:67;29928:2;29923:3;29864:67;:::i;:::-;29857:74;;29940:93;30029:3;29940:93;:::i;:::-;30058:2;30053:3;30049:12;30042:19;;29701:366;;;:::o;30073:419::-;30239:4;30277:2;30266:9;30262:18;30254:26;;30326:9;30320:4;30316:20;30312:1;30301:9;30297:17;30290:47;30354:131;30480:4;30354:131;:::i;:::-;30346:139;;30073:419;;;:::o;30498:143::-;30555:5;30586:6;30580:13;30571:22;;30602:33;30629:5;30602:33;:::i;:::-;30498:143;;;;:::o;30647:351::-;30717:6;30766:2;30754:9;30745:7;30741:23;30737:32;30734:119;;;30772:79;;:::i;:::-;30734:119;30892:1;30917:64;30973:7;30964:6;30953:9;30949:22;30917:64;:::i;:::-;30907:74;;30863:128;30647:351;;;;:::o;31004:163::-;31144:15;31140:1;31132:6;31128:14;31121:39;31004:163;:::o;31173:366::-;31315:3;31336:67;31400:2;31395:3;31336:67;:::i;:::-;31329:74;;31412:93;31501:3;31412:93;:::i;:::-;31530:2;31525:3;31521:12;31514:19;;31173:366;;;:::o;31545:419::-;31711:4;31749:2;31738:9;31734:18;31726:26;;31798:9;31792:4;31788:20;31784:1;31773:9;31769:17;31762:47;31826:131;31952:4;31826:131;:::i;:::-;31818:139;;31545:419;;;:::o;31970:94::-;32003:8;32051:5;32047:2;32043:14;32022:35;;31970:94;;;:::o;32070:::-;32109:7;32138:20;32152:5;32138:20;:::i;:::-;32127:31;;32070:94;;;:::o;32170:100::-;32209:7;32238:26;32258:5;32238:26;:::i;:::-;32227:37;;32170:100;;;:::o;32276:157::-;32381:45;32401:24;32419:5;32401:24;:::i;:::-;32381:45;:::i;:::-;32376:3;32369:58;32276:157;;:::o;32439:679::-;32635:3;32650:75;32721:3;32712:6;32650:75;:::i;:::-;32750:2;32745:3;32741:12;32734:19;;32763:75;32834:3;32825:6;32763:75;:::i;:::-;32863:2;32858:3;32854:12;32847:19;;32876:75;32947:3;32938:6;32876:75;:::i;:::-;32976:2;32971:3;32967:12;32960:19;;32989:75;33060:3;33051:6;32989:75;:::i;:::-;33089:2;33084:3;33080:12;33073:19;;33109:3;33102:10;;32439:679;;;;;;;:::o;33124:553::-;33301:4;33339:3;33328:9;33324:19;33316:27;;33353:71;33421:1;33410:9;33406:17;33397:6;33353:71;:::i;:::-;33434:72;33502:2;33491:9;33487:18;33478:6;33434:72;:::i;:::-;33516;33584:2;33573:9;33569:18;33560:6;33516:72;:::i;:::-;33598;33666:2;33655:9;33651:18;33642:6;33598:72;:::i;:::-;33124:553;;;;;;;:::o;33683:163::-;33823:15;33819:1;33811:6;33807:14;33800:39;33683:163;:::o;33852:366::-;33994:3;34015:67;34079:2;34074:3;34015:67;:::i;:::-;34008:74;;34091:93;34180:3;34091:93;:::i;:::-;34209:2;34204:3;34200:12;34193:19;;33852:366;;;:::o;34224:419::-;34390:4;34428:2;34417:9;34413:18;34405:26;;34477:9;34471:4;34467:20;34463:1;34452:9;34448:17;34441:47;34505:131;34631:4;34505:131;:::i;:::-;34497:139;;34224:419;;;:::o;34649:161::-;34789:13;34785:1;34777:6;34773:14;34766:37;34649:161;:::o;34816:366::-;34958:3;34979:67;35043:2;35038:3;34979:67;:::i;:::-;34972:74;;35055:93;35144:3;35055:93;:::i;:::-;35173:2;35168:3;35164:12;35157:19;;34816:366;;;:::o;35188:419::-;35354:4;35392:2;35381:9;35377:18;35369:26;;35441:9;35435:4;35431:20;35427:1;35416:9;35412:17;35405:47;35469:131;35595:4;35469:131;:::i;:::-;35461:139;;35188:419;;;:::o;35613:167::-;35753:19;35749:1;35741:6;35737:14;35730:43;35613:167;:::o;35786:366::-;35928:3;35949:67;36013:2;36008:3;35949:67;:::i;:::-;35942:74;;36025:93;36114:3;36025:93;:::i;:::-;36143:2;36138:3;36134:12;36127:19;;35786:366;;;:::o;36158:419::-;36324:4;36362:2;36351:9;36347:18;36339:26;;36411:9;36405:4;36401:20;36397:1;36386:9;36382:17;36375:47;36439:131;36565:4;36439:131;:::i;:::-;36431:139;;36158:419;;;:::o;36583:162::-;36723:14;36719:1;36711:6;36707:14;36700:38;36583:162;:::o;36751:366::-;36893:3;36914:67;36978:2;36973:3;36914:67;:::i;:::-;36907:74;;36990:93;37079:3;36990:93;:::i;:::-;37108:2;37103:3;37099:12;37092:19;;36751:366;;;:::o;37123:419::-;37289:4;37327:2;37316:9;37312:18;37304:26;;37376:9;37370:4;37366:20;37362:1;37351:9;37347:17;37340:47;37404:131;37530:4;37404:131;:::i;:::-;37396:139;;37123:419;;;:::o;37548:166::-;37688:18;37684:1;37676:6;37672:14;37665:42;37548:166;:::o;37720:366::-;37862:3;37883:67;37947:2;37942:3;37883:67;:::i;:::-;37876:74;;37959:93;38048:3;37959:93;:::i;:::-;38077:2;38072:3;38068:12;38061:19;;37720:366;;;:::o;38092:419::-;38258:4;38296:2;38285:9;38281:18;38273:26;;38345:9;38339:4;38335:20;38331:1;38320:9;38316:17;38309:47;38373:131;38499:4;38373:131;:::i;:::-;38365:139;;38092:419;;;:::o;38517:170::-;38657:22;38653:1;38645:6;38641:14;38634:46;38517:170;:::o;38693:366::-;38835:3;38856:67;38920:2;38915:3;38856:67;:::i;:::-;38849:74;;38932:93;39021:3;38932:93;:::i;:::-;39050:2;39045:3;39041:12;39034:19;;38693:366;;;:::o;39065:419::-;39231:4;39269:2;39258:9;39254:18;39246:26;;39318:9;39312:4;39308:20;39304:1;39293:9;39289:17;39282:47;39346:131;39472:4;39346:131;:::i;:::-;39338:139;;39065:419;;;:::o;39490:442::-;39639:4;39677:2;39666:9;39662:18;39654:26;;39690:71;39758:1;39747:9;39743:17;39734:6;39690:71;:::i;:::-;39771:72;39839:2;39828:9;39824:18;39815:6;39771:72;:::i;:::-;39853;39921:2;39910:9;39906:18;39897:6;39853:72;:::i;:::-;39490:442;;;;;;:::o;39938:410::-;39978:7;40001:20;40019:1;40001:20;:::i;:::-;39996:25;;40035:20;40053:1;40035:20;:::i;:::-;40030:25;;40090:1;40087;40083:9;40112:30;40130:11;40112:30;:::i;:::-;40101:41;;40291:1;40282:7;40278:15;40275:1;40272:22;40252:1;40245:9;40225:83;40202:139;;40321:18;;:::i;:::-;40202:139;39986:362;39938:410;;;;:::o;40354:185::-;40394:1;40411:20;40429:1;40411:20;:::i;:::-;40406:25;;40445:20;40463:1;40445:20;:::i;:::-;40440:25;;40484:1;40474:35;;40489:18;;:::i;:::-;40474:35;40531:1;40528;40524:9;40519:14;;40354:185;;;;:::o
Swarm Source
ipfs://3823f8db320d08afe9602fd438d88c1685f0e26c5ec40089bf106cbd7cf47828
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.