Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 568 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake | 15916205 | 655 days ago | IN | 0 ETH | 0.0004374 | ||||
Stake | 15916101 | 655 days ago | IN | 0 ETH | 0.00037795 | ||||
Stake | 15916079 | 655 days ago | IN | 0 ETH | 0.00043612 | ||||
Stake | 15916078 | 655 days ago | IN | 0 ETH | 0.00044727 | ||||
Stake | 15916078 | 655 days ago | IN | 0 ETH | 0.00044742 | ||||
Stake | 15916077 | 655 days ago | IN | 0 ETH | 0.00040839 | ||||
Stake | 15916077 | 655 days ago | IN | 0 ETH | 0.00043695 | ||||
Stake | 15916077 | 655 days ago | IN | 0 ETH | 0.0028626 | ||||
Stake | 15916077 | 655 days ago | IN | 0 ETH | 0.0004371 | ||||
Stake | 15916076 | 655 days ago | IN | 0 ETH | 0.00044196 | ||||
Stake | 15916075 | 655 days ago | IN | 0 ETH | 0.00044452 | ||||
Stake | 15916075 | 655 days ago | IN | 0 ETH | 0.00291635 | ||||
Stake | 15916075 | 655 days ago | IN | 0 ETH | 0.0004465 | ||||
Stake | 15916073 | 655 days ago | IN | 0 ETH | 0.00209307 | ||||
Stake | 15916072 | 655 days ago | IN | 0 ETH | 0.00034185 | ||||
Stake | 15916072 | 655 days ago | IN | 0 ETH | 0.0004227 | ||||
Stake | 15916071 | 655 days ago | IN | 0 ETH | 0.00217044 | ||||
Stake | 15916070 | 655 days ago | IN | 0 ETH | 0.00043979 | ||||
Stake | 15916069 | 655 days ago | IN | 0 ETH | 0.00044701 | ||||
Stake | 15916069 | 655 days ago | IN | 0 ETH | 0.00045082 | ||||
Stake | 15916069 | 655 days ago | IN | 0 ETH | 0.00292642 | ||||
Stake | 15916069 | 655 days ago | IN | 0 ETH | 0.00044685 | ||||
Stake | 15916068 | 655 days ago | IN | 0 ETH | 0.00043109 | ||||
Stake | 15916068 | 655 days ago | IN | 0 ETH | 0.00043109 | ||||
Stake | 15916068 | 655 days ago | IN | 0 ETH | 0.00043124 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DigitsRedeemer
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-05 */ // SPDX-License-Identifier: GPL-3.0 // File: @openzeppelin/contracts/utils/Strings.sol /// @title Digits Redeemer /// @author André Costa @ DigitsBrands // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ 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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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: raribots.sol // File: @openzeppelin/contracts/utils/Strings.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; function transferToStakingPool( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } interface IAgentsRaffle { function addToStakers(address newStaker) external; } interface IDigitsRedeemer { /** * @dev Returns if the `tokenId` has been staked and therefore blocking transfers. */ function isStaked(uint tokenId) external view returns (bool); } contract DigitsRedeemer is IDigitsRedeemer, Ownable { struct StakeInfo { uint timePeriod; //the option selected for staking (30, 60, 90, ... days) uint[] tokens; //list of all the tokens that are staked] uint256 endTime; //unix timestamp of end of staking } //get information for each address and each type of token mapping(address => StakeInfo) private addressToFoundingAgentsStaked; mapping(address => StakeInfo) private addressToDigitsAgentsStaked; //see if a token is staked or not mapping(uint => bool) private stakedTokens; //if a time period exists mapping(uint => bool) public timePeriodOptions; //dummy address that we use to sign the mint transaction to make sure it is valid address private dummy = 0x80E4929c869102140E69550BBECC20bEd61B080c; uint256 public nonce; IERC721Enumerable public DigitsAgents; IERC721Enumerable public FoundingAgents; IAgentsRaffle public AgentsRaffle; constructor() { DigitsAgents = IERC721Enumerable(0x3F39ca26C1f4A213E96b3676412A41969EC2BB2A); FoundingAgents = IERC721Enumerable(0x226a8FF878737179101701Ac16d071cD80cEc1E2); AgentsRaffle = IAgentsRaffle(0x45581C6Aa05E288E2Ed95636E9E4C7ab21AA237A); } //set ERC721Enumerable function setDigitsAgents(address newInterface) public onlyOwner { DigitsAgents = IERC721Enumerable(newInterface); } //set ERC721Enumerable function setAgentsRaffle(address newInterface) public onlyOwner { AgentsRaffle = IAgentsRaffle(newInterface); } //set signer public address function setDummy(address newDummy) external onlyOwner { dummy = newDummy; } //add time periods to the options function addTimePeriods(uint[] calldata timePeriods) public onlyOwner { for (uint i; i < timePeriods.length; i++) { timePeriodOptions[timePeriods[i]] = true; } } //remove time periods from the options function removeTimePeriods(uint[] calldata timePeriods) public onlyOwner { for (uint i; i < timePeriods.length; i++) { timePeriodOptions[timePeriods[i]] = false; } } //see if a time period is a current option function isTimePeriod(uint timePeriod) external view returns(bool) { return timePeriodOptions[timePeriod]; } modifier onlyValidAccess(uint8 _v, bytes32 _r, bytes32 _s) { require( isValidAccessMessage(msg.sender,_v,_r,_s), 'Invalid Signature' ); _; } /* * @dev Verifies if message was signed by owner to give access to _add for this contract. * Assumes Geth signature prefix. * @param _add Address of agent with access * @param _v ECDSA signature parameter v. * @param _r ECDSA signature parameters r. * @param _s ECDSA signature parameters s. * @return Validity of access message for a given address. */ function isValidAccessMessage(address _add, uint8 _v, bytes32 _r, bytes32 _s) view public returns (bool) { bytes32 hash = keccak256(abi.encodePacked(address(this), _add, nonce)); return dummy == ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)), _v, _r, _s); } //stake specific tokenIds and for specific timeperiods function stake(uint[] calldata tokenIds, bool isFoundingAgents, uint timePeriod, uint8 _v, bytes32 _r, bytes32 _s) onlyValidAccess(_v, _r, _s) external { require(timePeriodOptions[timePeriod], "Invalid Time Period!"); if (isFoundingAgents) { require(addressToFoundingAgentsStaked[msg.sender].endTime <= block.timestamp + (timePeriod * 86400), "New time period must be equal or greater!"); for (uint i = 0; i < tokenIds.length; i++) { require(msg.sender == DigitsAgents.ownerOf(tokenIds[i]), "Sender must be owner"); require(!stakedTokens[tokenIds[i]], "Token is already Staked!"); addressToFoundingAgentsStaked[msg.sender].tokens.push(tokenIds[i]); //set the info for the stake stakedTokens[tokenIds[i]] = true; } addressToFoundingAgentsStaked[msg.sender].timePeriod = timePeriod; addressToFoundingAgentsStaked[msg.sender].endTime = block.timestamp + (timePeriod * 86400); } else { require(addressToDigitsAgentsStaked[msg.sender].endTime <= block.timestamp + (timePeriod * 86400), "New time period must be equal or greater!"); for (uint i = 0; i < tokenIds.length; i++) { require(msg.sender == DigitsAgents.ownerOf(tokenIds[i]), "Sender must be owner"); require(!stakedTokens[tokenIds[i]], "Token is already Staked!"); addressToDigitsAgentsStaked[msg.sender].tokens.push(tokenIds[i]); //set the info for the stake stakedTokens[tokenIds[i]] = true; } addressToDigitsAgentsStaked[msg.sender].timePeriod = timePeriod; addressToDigitsAgentsStaked[msg.sender].endTime = block.timestamp + (timePeriod * 86400); } AgentsRaffle.addToStakers(msg.sender); nonce++; } //unstake all nfts somebody has function unstake(bool isFoundingAgents) public { if (isFoundingAgents) { require(block.timestamp >= addressToFoundingAgentsStaked[msg.sender].endTime, "Staking Period is not over yet!"); } else { require(block.timestamp >= addressToDigitsAgentsStaked[msg.sender].endTime, "Staking Period is not over yet!"); } _unstake(msg.sender, isFoundingAgents); } //emergency unstake nft for a set of addresses function emergencyUnstake(address[] calldata unstakers, bool isFoundingAgents) external onlyOwner { for (uint i; i < unstakers.length; i++) { _unstake(unstakers[i], isFoundingAgents); } } function _unstake(address unstaker, bool isFoundingAgents) internal { if (isFoundingAgents) { for (uint i; i < addressToFoundingAgentsStaked[unstaker].tokens.length; i++) { stakedTokens[addressToFoundingAgentsStaked[unstaker].tokens[i]] = false; } addressToFoundingAgentsStaked[unstaker].timePeriod = 0; addressToFoundingAgentsStaked[unstaker].endTime = 0; delete addressToFoundingAgentsStaked[unstaker].tokens; } else { for (uint i; i < addressToDigitsAgentsStaked[unstaker].tokens.length; i++) { stakedTokens[addressToDigitsAgentsStaked[unstaker].tokens[i]] = false; } addressToDigitsAgentsStaked[unstaker].timePeriod = 0; addressToDigitsAgentsStaked[unstaker].endTime = 0; delete addressToDigitsAgentsStaked[unstaker].tokens; } } //get the info for a staked token function getStakedInfo(address staker, bool isFoundingAgents) external view returns(StakeInfo memory) { if (isFoundingAgents) { return addressToFoundingAgentsStaked[staker]; } else { return addressToDigitsAgentsStaked[staker]; } } //Returns if the `tokenId` has been staked and therefore blocking transfers. function isStaked(uint tokenId) public view returns (bool) { return stakedTokens[tokenId]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"AgentsRaffle","outputs":[{"internalType":"contract IAgentsRaffle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DigitsAgents","outputs":[{"internalType":"contract IERC721Enumerable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FoundingAgents","outputs":[{"internalType":"contract IERC721Enumerable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"timePeriods","type":"uint256[]"}],"name":"addTimePeriods","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"unstakers","type":"address[]"},{"internalType":"bool","name":"isFoundingAgents","type":"bool"}],"name":"emergencyUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"bool","name":"isFoundingAgents","type":"bool"}],"name":"getStakedInfo","outputs":[{"components":[{"internalType":"uint256","name":"timePeriod","type":"uint256"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"internalType":"struct DigitsRedeemer.StakeInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"isStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timePeriod","type":"uint256"}],"name":"isTimePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_add","type":"address"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"isValidAccessMessage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"timePeriods","type":"uint256[]"}],"name":"removeTimePeriods","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newInterface","type":"address"}],"name":"setAgentsRaffle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newInterface","type":"address"}],"name":"setDigitsAgents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDummy","type":"address"}],"name":"setDummy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bool","name":"isFoundingAgents","type":"bool"},{"internalType":"uint256","name":"timePeriod","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"timePeriodOptions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isFoundingAgents","type":"bool"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040527380e4929c869102140e69550bbecc20bed61b080c600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50620000876200007b6200018c60201b60201c565b6200019460201b60201c565b733f39ca26c1f4a213e96b3676412a41969ec2bb2a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073226a8ff878737179101701ac16d071cd80cec1e2600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507345581c6aa05e288e2ed95636e9e4c7ab21aa237a600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000258565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612af480620002686000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063780eac0b116100ad578063ccd4b9af11610071578063ccd4b9af1461031d578063d320becc14610339578063d6d6c6c114610369578063e5d318d114610385578063f2fde38b146103a15761012c565b8063780eac0b1461027957806384e230a8146102955780638da5cb5b146102b1578063affed0e0146102cf578063baa51f86146102ed5761012c565b8063259dcec7116100f4578063259dcec7146101e757806332624114146102055780633faf410c146102355780636a6f797a14610251578063715018a61461026f5761012c565b8063088abb8d146101315780630f8e15c51461014d578063144787ec1461017d5780631598b88a1461019b5780631accc396146101cb575b600080fd5b61014b60048036038101906101469190611d15565b6103bd565b005b61016760048036038101906101629190611d78565b6104e0565b6040516101749190611db4565b60405180910390f35b61018561050a565b6040516101929190611e4e565b60405180910390f35b6101b560048036038101906101b09190611ea7565b610530565b6040516101c29190611ff5565b60405180910390f35b6101e560048036038101906101e0919061207c565b6106ba565b005b6101ef61078e565b6040516101fc91906120fd565b60405180910390f35b61021f600480360381019061021a9190612187565b6107b4565b60405161022c9190611db4565b60405180910390f35b61024f600480360381019061024a9190612244565b6108b6565b005b61025961099d565b60405161026691906120fd565b60405180910390f35b6102776109c3565b005b610293600480360381019061028e9190612291565b610a4b565b005b6102af60048036038101906102aa9190612244565b610b0b565b005b6102b9610bf2565b6040516102c691906122cd565b60405180910390f35b6102d7610c1b565b6040516102e491906122f7565b60405180910390f35b61030760048036038101906103029190611d78565b610c21565b6040516103149190611db4565b60405180910390f35b61033760048036038101906103329190612291565b610c4b565b005b610353600480360381019061034e9190611d78565b610d0b565b6040516103609190611db4565b60405180910390f35b610383600480360381019061037e9190612291565b610d2b565b005b61039f600480360381019061039a9190612312565b610deb565b005b6103bb60048036038101906103b69190612291565b611708565b005b801561044d57600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154421015610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043f9061241e565b60405180910390fd5b6104d3565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201544210156104d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c99061241e565b60405180910390fd5b5b6104dd3382611800565b50565b60006004600083815260200190815260200160002060009054906101000a900460ff169050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610538611c74565b81156105fb57600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052908160008201548152602001600182018054806020026020016040519081016040528092919081815260200182805480156105e157602002820191906000526020600020905b8154815260200190600101908083116105cd575b5050505050815260200160028201548152505090506106b4565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040529081600082015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561069e57602002820191906000526020600020905b81548152602001906001019080831161068a575b5050505050815260200160028201548152505090505b92915050565b6106c2611ba8565b73ffffffffffffffffffffffffffffffffffffffff166106e0610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d9061248a565b60405180910390fd5b60005b838390508110156107885761077584848381811061075a576107596124aa565b5b905060200201602081019061076f9190612291565b83611800565b808061078090612508565b915050610739565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008030866006546040516020016107ce939291906125ba565b6040516020818303038152906040528051906020012090506001816040516020016107f9919061266f565b604051602081830303815290604052805190602001208686866040516000815260200160405260405161082f94939291906126b3565b6020604051602081039080840390855afa158015610851573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614915050949350505050565b6108be611ba8565b73ffffffffffffffffffffffffffffffffffffffff166108dc610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109299061248a565b60405180910390fd5b60005b8282905081101561099857600160046000858585818110610959576109586124aa565b5b90506020020135815260200190815260200160002060006101000a81548160ff021916908315150217905550808061099090612508565b915050610935565b505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109cb611ba8565b73ffffffffffffffffffffffffffffffffffffffff166109e9610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a369061248a565b60405180910390fd5b610a496000611bb0565b565b610a53611ba8565b73ffffffffffffffffffffffffffffffffffffffff16610a71610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe9061248a565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b13611ba8565b73ffffffffffffffffffffffffffffffffffffffff16610b31610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7e9061248a565b60405180910390fd5b60005b82829050811015610bed57600060046000858585818110610bae57610bad6124aa565b5b90506020020135815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610be590612508565b915050610b8a565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b60006003600083815260200190815260200160002060009054906101000a900460ff169050919050565b610c53611ba8565b73ffffffffffffffffffffffffffffffffffffffff16610c71610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe9061248a565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915054906101000a900460ff1681565b610d33611ba8565b73ffffffffffffffffffffffffffffffffffffffff16610d51610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e9061248a565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828282610dfa338484846107b4565b610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090612744565b60405180910390fd5b6004600088815260200190815260200160002060009054906101000a900460ff16610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e90906127b0565b60405180910390fd5b871561127d576201518087610eae91906127d0565b42610eb9919061282a565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541115610f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f34906128f2565b60405180910390fd5b60005b8a8a90508110156111d057600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c8c84818110610f9c57610f9b6124aa565b5b905060200201356040518263ffffffff1660e01b8152600401610fbf91906122f7565b60206040518083038186803b158015610fd757600080fd5b505afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f9190612927565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461107c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611073906129a0565b60405180910390fd5b600360008c8c84818110611093576110926124aa565b5b90506020020135815260200190815260200160002060009054906101000a900460ff16156110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ed90612a0c565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b8b8381811061114b5761114a6124aa565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150556001600360008d8d85818110611191576111906124aa565b5b90506020020135815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111c890612508565b915050610f40565b5086600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550620151808761122791906127d0565b42611232919061282a565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611657565b620151808761128c91906127d0565b42611297919061282a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154111561131b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611312906128f2565b60405180910390fd5b60005b8a8a90508110156115ae57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c8c8481811061137a576113796124aa565b5b905060200201356040518263ffffffff1660e01b815260040161139d91906122f7565b60206040518083038186803b1580156113b557600080fd5b505afa1580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed9190612927565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461145a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611451906129a0565b60405180910390fd5b600360008c8c84818110611471576114706124aa565b5b90506020020135815260200190815260200160002060009054906101000a900460ff16156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90612a0c565b60405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b8b83818110611529576115286124aa565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150556001600360008d8d8581811061156f5761156e6124aa565b5b90506020020135815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115a690612508565b91505061131e565b5086600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550620151808761160591906127d0565b42611610919061282a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663472d0529336040518263ffffffff1660e01b81526004016116b291906122cd565b600060405180830381600087803b1580156116cc57600080fd5b505af11580156116e0573d6000803e3d6000fd5b50505050600660008154809291906116f790612508565b919050555050505050505050505050565b611710611ba8565b73ffffffffffffffffffffffffffffffffffffffff1661172e610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b9061248a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90612a9e565b60405180910390fd5b6117fd81611bb0565b50565b80156119d75760005b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110156118f357600060036000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010184815481106118b0576118af6124aa565b5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555080806118eb90612508565b915050611809565b506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006119d29190611c95565b611ba4565b60005b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050811015611ac457600060036000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018481548110611a8157611a806124aa565b5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611abc90612508565b9150506119da565b506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000611ba39190611c95565b5b5050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60405180606001604052806000815260200160608152602001600081525090565b5080546000825590600052602060002090810190611cb39190611cb6565b50565b5b80821115611ccf576000816000905550600101611cb7565b5090565b600080fd5b600080fd5b60008115159050919050565b611cf281611cdd565b8114611cfd57600080fd5b50565b600081359050611d0f81611ce9565b92915050565b600060208284031215611d2b57611d2a611cd3565b5b6000611d3984828501611d00565b91505092915050565b6000819050919050565b611d5581611d42565b8114611d6057600080fd5b50565b600081359050611d7281611d4c565b92915050565b600060208284031215611d8e57611d8d611cd3565b5b6000611d9c84828501611d63565b91505092915050565b611dae81611cdd565b82525050565b6000602082019050611dc96000830184611da5565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611e14611e0f611e0a84611dcf565b611def565b611dcf565b9050919050565b6000611e2682611df9565b9050919050565b6000611e3882611e1b565b9050919050565b611e4881611e2d565b82525050565b6000602082019050611e636000830184611e3f565b92915050565b6000611e7482611dcf565b9050919050565b611e8481611e69565b8114611e8f57600080fd5b50565b600081359050611ea181611e7b565b92915050565b60008060408385031215611ebe57611ebd611cd3565b5b6000611ecc85828601611e92565b9250506020611edd85828601611d00565b9150509250929050565b611ef081611d42565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000611f2e8383611ee7565b60208301905092915050565b6000602082019050919050565b6000611f5282611ef6565b611f5c8185611f01565b9350611f6783611f12565b8060005b83811015611f98578151611f7f8882611f22565b9750611f8a83611f3a565b925050600181019050611f6b565b5085935050505092915050565b6000606083016000830151611fbd6000860182611ee7565b5060208301518482036020860152611fd58282611f47565b9150506040830151611fea6040860182611ee7565b508091505092915050565b6000602082019050818103600083015261200f8184611fa5565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261203c5761203b612017565b5b8235905067ffffffffffffffff8111156120595761205861201c565b5b60208301915083602082028301111561207557612074612021565b5b9250929050565b60008060006040848603121561209557612094611cd3565b5b600084013567ffffffffffffffff8111156120b3576120b2611cd8565b5b6120bf86828701612026565b935093505060206120d286828701611d00565b9150509250925092565b60006120e782611e1b565b9050919050565b6120f7816120dc565b82525050565b600060208201905061211260008301846120ee565b92915050565b600060ff82169050919050565b61212e81612118565b811461213957600080fd5b50565b60008135905061214b81612125565b92915050565b6000819050919050565b61216481612151565b811461216f57600080fd5b50565b6000813590506121818161215b565b92915050565b600080600080608085870312156121a1576121a0611cd3565b5b60006121af87828801611e92565b94505060206121c08782880161213c565b93505060406121d187828801612172565b92505060606121e287828801612172565b91505092959194509250565b60008083601f84011261220457612203612017565b5b8235905067ffffffffffffffff8111156122215761222061201c565b5b60208301915083602082028301111561223d5761223c612021565b5b9250929050565b6000806020838503121561225b5761225a611cd3565b5b600083013567ffffffffffffffff81111561227957612278611cd8565b5b612285858286016121ee565b92509250509250929050565b6000602082840312156122a7576122a6611cd3565b5b60006122b584828501611e92565b91505092915050565b6122c781611e69565b82525050565b60006020820190506122e260008301846122be565b92915050565b6122f181611d42565b82525050565b600060208201905061230c60008301846122e8565b92915050565b600080600080600080600060c0888a03121561233157612330611cd3565b5b600088013567ffffffffffffffff81111561234f5761234e611cd8565b5b61235b8a828b016121ee565b9750975050602061236e8a828b01611d00565b955050604061237f8a828b01611d63565b94505060606123908a828b0161213c565b93505060806123a18a828b01612172565b92505060a06123b28a828b01612172565b91505092959891949750929550565b600082825260208201905092915050565b7f5374616b696e6720506572696f64206973206e6f74206f766572207965742100600082015250565b6000612408601f836123c1565b9150612413826123d2565b602082019050919050565b60006020820190508181036000830152612437816123fb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006124746020836123c1565b915061247f8261243e565b602082019050919050565b600060208201905081810360008301526124a381612467565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061251382611d42565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612546576125456124d9565b5b600182019050919050565b60008160601b9050919050565b600061256982612551565b9050919050565b600061257b8261255e565b9050919050565b61259361258e82611e69565b612570565b82525050565b6000819050919050565b6125b46125af82611d42565b612599565b82525050565b60006125c68286612582565b6014820191506125d68285612582565b6014820191506125e682846125a3565b602082019150819050949350505050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612638601c836125f7565b915061264382612602565b601c82019050919050565b6000819050919050565b61266961266482612151565b61264e565b82525050565b600061267a8261262b565b91506126868284612658565b60208201915081905092915050565b61269e81612151565b82525050565b6126ad81612118565b82525050565b60006080820190506126c86000830187612695565b6126d560208301866126a4565b6126e26040830185612695565b6126ef6060830184612695565b95945050505050565b7f496e76616c6964205369676e6174757265000000000000000000000000000000600082015250565b600061272e6011836123c1565b9150612739826126f8565b602082019050919050565b6000602082019050818103600083015261275d81612721565b9050919050565b7f496e76616c69642054696d6520506572696f6421000000000000000000000000600082015250565b600061279a6014836123c1565b91506127a582612764565b602082019050919050565b600060208201905081810360008301526127c98161278d565b9050919050565b60006127db82611d42565b91506127e683611d42565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561281f5761281e6124d9565b5b828202905092915050565b600061283582611d42565b915061284083611d42565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612875576128746124d9565b5b828201905092915050565b7f4e65772074696d6520706572696f64206d75737420626520657175616c206f7260008201527f2067726561746572210000000000000000000000000000000000000000000000602082015250565b60006128dc6029836123c1565b91506128e782612880565b604082019050919050565b6000602082019050818103600083015261290b816128cf565b9050919050565b60008151905061292181611e7b565b92915050565b60006020828403121561293d5761293c611cd3565b5b600061294b84828501612912565b91505092915050565b7f53656e646572206d757374206265206f776e6572000000000000000000000000600082015250565b600061298a6014836123c1565b915061299582612954565b602082019050919050565b600060208201905081810360008301526129b98161297d565b9050919050565b7f546f6b656e20697320616c7265616479205374616b6564210000000000000000600082015250565b60006129f66018836123c1565b9150612a01826129c0565b602082019050919050565b60006020820190508181036000830152612a25816129e9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a886026836123c1565b9150612a9382612a2c565b604082019050919050565b60006020820190508181036000830152612ab781612a7b565b905091905056fea2646970667358221220c5fb1a2ddb3e8f1cb077b0214919ecbd196dd02dc54e04cb91db0e989362575e64736f6c63430008090033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063780eac0b116100ad578063ccd4b9af11610071578063ccd4b9af1461031d578063d320becc14610339578063d6d6c6c114610369578063e5d318d114610385578063f2fde38b146103a15761012c565b8063780eac0b1461027957806384e230a8146102955780638da5cb5b146102b1578063affed0e0146102cf578063baa51f86146102ed5761012c565b8063259dcec7116100f4578063259dcec7146101e757806332624114146102055780633faf410c146102355780636a6f797a14610251578063715018a61461026f5761012c565b8063088abb8d146101315780630f8e15c51461014d578063144787ec1461017d5780631598b88a1461019b5780631accc396146101cb575b600080fd5b61014b60048036038101906101469190611d15565b6103bd565b005b61016760048036038101906101629190611d78565b6104e0565b6040516101749190611db4565b60405180910390f35b61018561050a565b6040516101929190611e4e565b60405180910390f35b6101b560048036038101906101b09190611ea7565b610530565b6040516101c29190611ff5565b60405180910390f35b6101e560048036038101906101e0919061207c565b6106ba565b005b6101ef61078e565b6040516101fc91906120fd565b60405180910390f35b61021f600480360381019061021a9190612187565b6107b4565b60405161022c9190611db4565b60405180910390f35b61024f600480360381019061024a9190612244565b6108b6565b005b61025961099d565b60405161026691906120fd565b60405180910390f35b6102776109c3565b005b610293600480360381019061028e9190612291565b610a4b565b005b6102af60048036038101906102aa9190612244565b610b0b565b005b6102b9610bf2565b6040516102c691906122cd565b60405180910390f35b6102d7610c1b565b6040516102e491906122f7565b60405180910390f35b61030760048036038101906103029190611d78565b610c21565b6040516103149190611db4565b60405180910390f35b61033760048036038101906103329190612291565b610c4b565b005b610353600480360381019061034e9190611d78565b610d0b565b6040516103609190611db4565b60405180910390f35b610383600480360381019061037e9190612291565b610d2b565b005b61039f600480360381019061039a9190612312565b610deb565b005b6103bb60048036038101906103b69190612291565b611708565b005b801561044d57600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154421015610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043f9061241e565b60405180910390fd5b6104d3565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201544210156104d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c99061241e565b60405180910390fd5b5b6104dd3382611800565b50565b60006004600083815260200190815260200160002060009054906101000a900460ff169050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610538611c74565b81156105fb57600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052908160008201548152602001600182018054806020026020016040519081016040528092919081815260200182805480156105e157602002820191906000526020600020905b8154815260200190600101908083116105cd575b5050505050815260200160028201548152505090506106b4565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040529081600082015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561069e57602002820191906000526020600020905b81548152602001906001019080831161068a575b5050505050815260200160028201548152505090505b92915050565b6106c2611ba8565b73ffffffffffffffffffffffffffffffffffffffff166106e0610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d9061248a565b60405180910390fd5b60005b838390508110156107885761077584848381811061075a576107596124aa565b5b905060200201602081019061076f9190612291565b83611800565b808061078090612508565b915050610739565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008030866006546040516020016107ce939291906125ba565b6040516020818303038152906040528051906020012090506001816040516020016107f9919061266f565b604051602081830303815290604052805190602001208686866040516000815260200160405260405161082f94939291906126b3565b6020604051602081039080840390855afa158015610851573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614915050949350505050565b6108be611ba8565b73ffffffffffffffffffffffffffffffffffffffff166108dc610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109299061248a565b60405180910390fd5b60005b8282905081101561099857600160046000858585818110610959576109586124aa565b5b90506020020135815260200190815260200160002060006101000a81548160ff021916908315150217905550808061099090612508565b915050610935565b505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109cb611ba8565b73ffffffffffffffffffffffffffffffffffffffff166109e9610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a369061248a565b60405180910390fd5b610a496000611bb0565b565b610a53611ba8565b73ffffffffffffffffffffffffffffffffffffffff16610a71610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe9061248a565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b13611ba8565b73ffffffffffffffffffffffffffffffffffffffff16610b31610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7e9061248a565b60405180910390fd5b60005b82829050811015610bed57600060046000858585818110610bae57610bad6124aa565b5b90506020020135815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610be590612508565b915050610b8a565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b60006003600083815260200190815260200160002060009054906101000a900460ff169050919050565b610c53611ba8565b73ffffffffffffffffffffffffffffffffffffffff16610c71610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe9061248a565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915054906101000a900460ff1681565b610d33611ba8565b73ffffffffffffffffffffffffffffffffffffffff16610d51610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e9061248a565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828282610dfa338484846107b4565b610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090612744565b60405180910390fd5b6004600088815260200190815260200160002060009054906101000a900460ff16610e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e90906127b0565b60405180910390fd5b871561127d576201518087610eae91906127d0565b42610eb9919061282a565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541115610f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f34906128f2565b60405180910390fd5b60005b8a8a90508110156111d057600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c8c84818110610f9c57610f9b6124aa565b5b905060200201356040518263ffffffff1660e01b8152600401610fbf91906122f7565b60206040518083038186803b158015610fd757600080fd5b505afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100f9190612927565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461107c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611073906129a0565b60405180910390fd5b600360008c8c84818110611093576110926124aa565b5b90506020020135815260200190815260200160002060009054906101000a900460ff16156110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ed90612a0c565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b8b8381811061114b5761114a6124aa565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150556001600360008d8d85818110611191576111906124aa565b5b90506020020135815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111c890612508565b915050610f40565b5086600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550620151808761122791906127d0565b42611232919061282a565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611657565b620151808761128c91906127d0565b42611297919061282a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154111561131b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611312906128f2565b60405180910390fd5b60005b8a8a90508110156115ae57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c8c8481811061137a576113796124aa565b5b905060200201356040518263ffffffff1660e01b815260040161139d91906122f7565b60206040518083038186803b1580156113b557600080fd5b505afa1580156113c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ed9190612927565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461145a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611451906129a0565b60405180910390fd5b600360008c8c84818110611471576114706124aa565b5b90506020020135815260200190815260200160002060009054906101000a900460ff16156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90612a0c565b60405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018b8b83818110611529576115286124aa565b5b9050602002013590806001815401808255809150506001900390600052602060002001600090919091909150556001600360008d8d8581811061156f5761156e6124aa565b5b90506020020135815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115a690612508565b91505061131e565b5086600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550620151808761160591906127d0565b42611610919061282a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663472d0529336040518263ffffffff1660e01b81526004016116b291906122cd565b600060405180830381600087803b1580156116cc57600080fd5b505af11580156116e0573d6000803e3d6000fd5b50505050600660008154809291906116f790612508565b919050555050505050505050505050565b611710611ba8565b73ffffffffffffffffffffffffffffffffffffffff1661172e610bf2565b73ffffffffffffffffffffffffffffffffffffffff1614611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b9061248a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90612a9e565b60405180910390fd5b6117fd81611bb0565b50565b80156119d75760005b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805490508110156118f357600060036000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010184815481106118b0576118af6124aa565b5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555080806118eb90612508565b915050611809565b506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006119d29190611c95565b611ba4565b60005b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050811015611ac457600060036000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018481548110611a8157611a806124aa565b5b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611abc90612508565b9150506119da565b506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000611ba39190611c95565b5b5050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60405180606001604052806000815260200160608152602001600081525090565b5080546000825590600052602060002090810190611cb39190611cb6565b50565b5b80821115611ccf576000816000905550600101611cb7565b5090565b600080fd5b600080fd5b60008115159050919050565b611cf281611cdd565b8114611cfd57600080fd5b50565b600081359050611d0f81611ce9565b92915050565b600060208284031215611d2b57611d2a611cd3565b5b6000611d3984828501611d00565b91505092915050565b6000819050919050565b611d5581611d42565b8114611d6057600080fd5b50565b600081359050611d7281611d4c565b92915050565b600060208284031215611d8e57611d8d611cd3565b5b6000611d9c84828501611d63565b91505092915050565b611dae81611cdd565b82525050565b6000602082019050611dc96000830184611da5565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611e14611e0f611e0a84611dcf565b611def565b611dcf565b9050919050565b6000611e2682611df9565b9050919050565b6000611e3882611e1b565b9050919050565b611e4881611e2d565b82525050565b6000602082019050611e636000830184611e3f565b92915050565b6000611e7482611dcf565b9050919050565b611e8481611e69565b8114611e8f57600080fd5b50565b600081359050611ea181611e7b565b92915050565b60008060408385031215611ebe57611ebd611cd3565b5b6000611ecc85828601611e92565b9250506020611edd85828601611d00565b9150509250929050565b611ef081611d42565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000611f2e8383611ee7565b60208301905092915050565b6000602082019050919050565b6000611f5282611ef6565b611f5c8185611f01565b9350611f6783611f12565b8060005b83811015611f98578151611f7f8882611f22565b9750611f8a83611f3a565b925050600181019050611f6b565b5085935050505092915050565b6000606083016000830151611fbd6000860182611ee7565b5060208301518482036020860152611fd58282611f47565b9150506040830151611fea6040860182611ee7565b508091505092915050565b6000602082019050818103600083015261200f8184611fa5565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261203c5761203b612017565b5b8235905067ffffffffffffffff8111156120595761205861201c565b5b60208301915083602082028301111561207557612074612021565b5b9250929050565b60008060006040848603121561209557612094611cd3565b5b600084013567ffffffffffffffff8111156120b3576120b2611cd8565b5b6120bf86828701612026565b935093505060206120d286828701611d00565b9150509250925092565b60006120e782611e1b565b9050919050565b6120f7816120dc565b82525050565b600060208201905061211260008301846120ee565b92915050565b600060ff82169050919050565b61212e81612118565b811461213957600080fd5b50565b60008135905061214b81612125565b92915050565b6000819050919050565b61216481612151565b811461216f57600080fd5b50565b6000813590506121818161215b565b92915050565b600080600080608085870312156121a1576121a0611cd3565b5b60006121af87828801611e92565b94505060206121c08782880161213c565b93505060406121d187828801612172565b92505060606121e287828801612172565b91505092959194509250565b60008083601f84011261220457612203612017565b5b8235905067ffffffffffffffff8111156122215761222061201c565b5b60208301915083602082028301111561223d5761223c612021565b5b9250929050565b6000806020838503121561225b5761225a611cd3565b5b600083013567ffffffffffffffff81111561227957612278611cd8565b5b612285858286016121ee565b92509250509250929050565b6000602082840312156122a7576122a6611cd3565b5b60006122b584828501611e92565b91505092915050565b6122c781611e69565b82525050565b60006020820190506122e260008301846122be565b92915050565b6122f181611d42565b82525050565b600060208201905061230c60008301846122e8565b92915050565b600080600080600080600060c0888a03121561233157612330611cd3565b5b600088013567ffffffffffffffff81111561234f5761234e611cd8565b5b61235b8a828b016121ee565b9750975050602061236e8a828b01611d00565b955050604061237f8a828b01611d63565b94505060606123908a828b0161213c565b93505060806123a18a828b01612172565b92505060a06123b28a828b01612172565b91505092959891949750929550565b600082825260208201905092915050565b7f5374616b696e6720506572696f64206973206e6f74206f766572207965742100600082015250565b6000612408601f836123c1565b9150612413826123d2565b602082019050919050565b60006020820190508181036000830152612437816123fb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006124746020836123c1565b915061247f8261243e565b602082019050919050565b600060208201905081810360008301526124a381612467565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061251382611d42565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612546576125456124d9565b5b600182019050919050565b60008160601b9050919050565b600061256982612551565b9050919050565b600061257b8261255e565b9050919050565b61259361258e82611e69565b612570565b82525050565b6000819050919050565b6125b46125af82611d42565b612599565b82525050565b60006125c68286612582565b6014820191506125d68285612582565b6014820191506125e682846125a3565b602082019150819050949350505050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612638601c836125f7565b915061264382612602565b601c82019050919050565b6000819050919050565b61266961266482612151565b61264e565b82525050565b600061267a8261262b565b91506126868284612658565b60208201915081905092915050565b61269e81612151565b82525050565b6126ad81612118565b82525050565b60006080820190506126c86000830187612695565b6126d560208301866126a4565b6126e26040830185612695565b6126ef6060830184612695565b95945050505050565b7f496e76616c6964205369676e6174757265000000000000000000000000000000600082015250565b600061272e6011836123c1565b9150612739826126f8565b602082019050919050565b6000602082019050818103600083015261275d81612721565b9050919050565b7f496e76616c69642054696d6520506572696f6421000000000000000000000000600082015250565b600061279a6014836123c1565b91506127a582612764565b602082019050919050565b600060208201905081810360008301526127c98161278d565b9050919050565b60006127db82611d42565b91506127e683611d42565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561281f5761281e6124d9565b5b828202905092915050565b600061283582611d42565b915061284083611d42565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612875576128746124d9565b5b828201905092915050565b7f4e65772074696d6520706572696f64206d75737420626520657175616c206f7260008201527f2067726561746572210000000000000000000000000000000000000000000000602082015250565b60006128dc6029836123c1565b91506128e782612880565b604082019050919050565b6000602082019050818103600083015261290b816128cf565b9050919050565b60008151905061292181611e7b565b92915050565b60006020828403121561293d5761293c611cd3565b5b600061294b84828501612912565b91505092915050565b7f53656e646572206d757374206265206f776e6572000000000000000000000000600082015250565b600061298a6014836123c1565b915061299582612954565b602082019050919050565b600060208201905081810360008301526129b98161297d565b9050919050565b7f546f6b656e20697320616c7265616479205374616b6564210000000000000000600082015250565b60006129f66018836123c1565b9150612a01826129c0565b602082019050919050565b60006020820190508181036000830152612a25816129e9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a886026836123c1565b9150612a9382612a2c565b604082019050919050565b60006020820190508181036000830152612ab781612a7b565b905091905056fea2646970667358221220c5fb1a2ddb3e8f1cb077b0214919ecbd196dd02dc54e04cb91db0e989362575e64736f6c63430008090033
Deployed Bytecode Sourcemap
10319:7663:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15744:447;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12632:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11299:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17482:297;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16251:223;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11209:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13339:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12126:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11253:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2768:103;;;:::i;:::-;;11823:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12375:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2117:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11180:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17873:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11658:129;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10963:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11989:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13720:1979;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3026:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15744:447;15806:16;15802:313;;;15866:29;:41;15896:10;15866:41;;;;;;;;;;;;;;;:49;;;15847:15;:68;;15839:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;15802:313;;;16020:27;:39;16048:10;16020:39;;;;;;;;;;;;;;;:47;;;16001:15;:66;;15993:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;15802:313;16135:38;16144:10;16156:16;16135:8;:38::i;:::-;15744:447;:::o;12632:122::-;12693:4;12717:17;:29;12735:10;12717:29;;;;;;;;;;;;;;;;;;;;;12710:36;;12632:122;;;:::o;11299:33::-;;;;;;;;;;;;;:::o;17482:297::-;17566:16;;:::i;:::-;17599;17595:177;;;17639:29;:37;17669:6;17639:37;;;;;;;;;;;;;;;17632:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17595:177;17725:27;:35;17753:6;17725:35;;;;;;;;;;;;;;;17718:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17482:297;;;;;:::o;16251:223::-;2348:12;:10;:12::i;:::-;2337:23;;:7;:5;:7::i;:::-;:23;;;2329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16365:6:::1;16360:107;16377:9;;:16;;16373:1;:20;16360:107;;;16415:40;16424:9;;16434:1;16424:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16438:16;16415:8;:40::i;:::-;16395:3;;;;;:::i;:::-;;;;16360:107;;;;16251:223:::0;;;:::o;11209:37::-;;;;;;;;;;;;;:::o;13339:313::-;13438:4;13455:12;13505:4;13512;13518:5;;13480:44;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13470:55;;;;;;13455:70;;13552:92;13625:4;13572:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;13562:69;;;;;;13633:2;13637;13641;13552:92;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13543:101;;:5;;;;;;;;;;;:101;;;13536:108;;;13339:313;;;;;;:::o;12126:197::-;2348:12;:10;:12::i;:::-;2337:23;;:7;:5;:7::i;:::-;:23;;;2329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12212:6:::1;12207:109;12224:11;;:18;;12220:1;:22;12207:109;;;12300:4;12264:17;:33;12282:11;;12294:1;12282:14;;;;;;;:::i;:::-;;;;;;;;12264:33;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12244:3;;;;;:::i;:::-;;;;12207:109;;;;12126:197:::0;;:::o;11253:39::-;;;;;;;;;;;;;:::o;2768:103::-;2348:12;:10;:12::i;:::-;2337:23;;:7;:5;:7::i;:::-;:23;;;2329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2833:30:::1;2860:1;2833:18;:30::i;:::-;2768:103::o:0;11823:125::-;2348:12;:10;:12::i;:::-;2337:23;;:7;:5;:7::i;:::-;:23;;;2329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11927:12:::1;11898;;:42;;;;;;;;;;;;;;;;;;11823:125:::0;:::o;12375:201::-;2348:12;:10;:12::i;:::-;2337:23;;:7;:5;:7::i;:::-;:23;;;2329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12464:6:::1;12459:110;12476:11;;:18;;12472:1;:22;12459:110;;;12552:5;12516:17;:33;12534:11;;12546:1;12534:14;;;;;;;:::i;:::-;;;;;;;;12516:33;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12496:3;;;;;:::i;:::-;;;;12459:110;;;;12375:201:::0;;:::o;2117:87::-;2163:7;2190:6;;;;;;;;;;;2183:13;;2117:87;:::o;11180:20::-;;;;:::o;17873:106::-;17926:4;17950:12;:21;17963:7;17950:21;;;;;;;;;;;;;;;;;;;;;17943:28;;17873:106;;;:::o;11658:129::-;2348:12;:10;:12::i;:::-;2337:23;;:7;:5;:7::i;:::-;:23;;;2329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11766:12:::1;11733;;:46;;;;;;;;;;;;;;;;;;11658:129:::0;:::o;10963:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;11989:90::-;2348:12;:10;:12::i;:::-;2337:23;;:7;:5;:7::i;:::-;:23;;;2329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12063:8:::1;12055:5;;:16;;;;;;;;;;;;;;;;;;11989:90:::0;:::o;13720:1979::-;13851:2;13856;13860;12841:41;12862:10;12873:2;12876;12879;12841:20;:41::i;:::-;12832:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13892:17:::1;:29;13910:10;13892:29;;;;;;;;;;;;;;;;;;;;;13884:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13961:16;13957:1655;;;14087:5;14074:10;:18;;;;:::i;:::-;14055:15;:38;;;;:::i;:::-;14002:29;:41;14032:10;14002:41;;;;;;;;;;;;;;;:49;;;:91;;13994:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;14161:6;14156:440;14177:8;;:15;;14173:1;:19;14156:440;;;14240:12;;;;;;;;;;;:20;;;14261:8;;14270:1;14261:11;;;;;;;:::i;:::-;;;;;;;;14240:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14226:47;;:10;:47;;;14218:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;14326:12;:25;14339:8;;14348:1;14339:11;;;;;;;:::i;:::-;;;;;;;;14326:25;;;;;;;;;;;;;;;;;;;;;14325:26;14317:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:29;:41;14447:10;14417:41;;;;;;;;;;;;;;;:48;;14471:8;;14480:1;14471:11;;;;;;;:::i;:::-;;;;;;;;14417:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14576:4;14548:12;:25;14561:8;;14570:1;14561:11;;;;;;;:::i;:::-;;;;;;;;14548:25;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14194:3;;;;;:::i;:::-;;;;14156:440;;;;14665:10;14610:29;:41;14640:10;14610:41;;;;;;;;;;;;;;;:52;;:65;;;;14774:5;14761:10;:18;;;;:::i;:::-;14742:15;:38;;;;:::i;:::-;14690:29;:41;14720:10;14690:41;;;;;;;;;;;;;;;:49;;:90;;;;13957:1655;;;14913:5;14900:10;:18;;;;:::i;:::-;14881:15;:38;;;;:::i;:::-;14830:27;:39;14858:10;14830:39;;;;;;;;;;;;;;;:47;;;:89;;14822:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;14987:6;14982:438;15003:8;;:15;;14999:1;:19;14982:438;;;15066:12;;;;;;;;;;;:20;;;15087:8;;15096:1;15087:11;;;;;;;:::i;:::-;;;;;;;;15066:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15052:47;;:10;:47;;;15044:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;15152:12;:25;15165:8;;15174:1;15165:11;;;;;;;:::i;:::-;;;;;;;;15152:25;;;;;;;;;;;;;;;;;;;;;15151:26;15143:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15243:27;:39;15271:10;15243:39;;;;;;;;;;;;;;;:46;;15295:8;;15304:1;15295:11;;;;;;;:::i;:::-;;;;;;;;15243:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15400:4;15372:12;:25;15385:8;;15394:1;15385:11;;;;;;;:::i;:::-;;;;;;;;15372:25;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15020:3;;;;;:::i;:::-;;;;14982:438;;;;15487:10;15434:27;:39;15462:10;15434:39;;;;;;;;;;;;;;;:50;;:63;;;;15594:5;15581:10;:18;;;;:::i;:::-;15562:15;:38;;;;:::i;:::-;15512:27;:39;15540:10;15512:39;;;;;;;;;;;;;;;:47;;:88;;;;13957:1655;15624:12;;;;;;;;;;;:25;;;15650:10;15624:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15672:5;;:7;;;;;;;;;:::i;:::-;;;;;;13720:1979:::0;;;;;;;;;;:::o;3026:201::-;2348:12;:10;:12::i;:::-;2337:23;;:7;:5;:7::i;:::-;:23;;;2329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3135:1:::1;3115:22;;:8;:22;;;;3107:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3191:28;3210:8;3191:18;:28::i;:::-;3026:201:::0;:::o;16482:953::-;16565:16;16561:857;;;16603:6;16598:183;16615:29;:39;16645:8;16615:39;;;;;;;;;;;;;;;:46;;:53;;;;16611:1;:57;16598:183;;;16760:5;16694:12;:63;16707:29;:39;16737:8;16707:39;;;;;;;;;;;;;;;:46;;16754:1;16707:49;;;;;;;;:::i;:::-;;;;;;;;;;16694:63;;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;16670:3;;;;;:::i;:::-;;;;16598:183;;;;16850:1;16797:29;:39;16827:8;16797:39;;;;;;;;;;;;;;;:50;;:54;;;;16916:1;16866:29;:39;16896:8;16866:39;;;;;;;;;;;;;;;:47;;:51;;;;16939:29;:39;16969:8;16939:39;;;;;;;;;;;;;;;:46;;;16932:53;;;;:::i;:::-;16561:857;;;17033:6;17028:179;17045:27;:37;17073:8;17045:37;;;;;;;;;;;;;;;:44;;:51;;;;17041:1;:55;17028:179;;;17186:5;17122:12;:61;17135:27;:37;17163:8;17135:37;;;;;;;;;;;;;;;:44;;17180:1;17135:47;;;;;;;;:::i;:::-;;;;;;;;;;17122:61;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;17098:3;;;;;:::i;:::-;;;;17028:179;;;;17274:1;17223:27;:37;17251:8;17223:37;;;;;;;;;;;;;;;:48;;:52;;;;17338:1;17290:27;:37;17318:8;17290:37;;;;;;;;;;;;;;;:45;;:49;;;;17361:27;:37;17389:8;17361:37;;;;;;;;;;;;;;;:44;;;17354:51;;;;:::i;:::-;16561:857;16482:953;;:::o;841:98::-;894:7;921:10;914:17;;841:98;:::o;3387:191::-;3461:16;3480:6;;;;;;;;;;;3461:25;;3506:8;3497:6;;:17;;;;;;;;;;;;;;;;;;3561:8;3530:40;;3551:8;3530:40;;;;;;;;;;;;3450:128;3387:191;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:77::-;1057:7;1086:5;1075:16;;1020:77;;;:::o;1103:122::-;1176:24;1194:5;1176:24;:::i;:::-;1169:5;1166:35;1156:63;;1215:1;1212;1205:12;1156:63;1103:122;:::o;1231:139::-;1277:5;1315:6;1302:20;1293:29;;1331:33;1358:5;1331:33;:::i;:::-;1231:139;;;;:::o;1376:329::-;1435:6;1484:2;1472:9;1463:7;1459:23;1455:32;1452:119;;;1490:79;;:::i;:::-;1452:119;1610:1;1635:53;1680:7;1671:6;1660:9;1656:22;1635:53;:::i;:::-;1625:63;;1581:117;1376:329;;;;:::o;1711:109::-;1792:21;1807:5;1792:21;:::i;:::-;1787:3;1780:34;1711:109;;:::o;1826:210::-;1913:4;1951:2;1940:9;1936:18;1928:26;;1964:65;2026:1;2015:9;2011:17;2002:6;1964:65;:::i;:::-;1826:210;;;;:::o;2042:126::-;2079:7;2119:42;2112:5;2108:54;2097:65;;2042:126;;;:::o;2174:60::-;2202:3;2223:5;2216:12;;2174:60;;;:::o;2240:142::-;2290:9;2323:53;2341:34;2350:24;2368:5;2350:24;:::i;:::-;2341:34;:::i;:::-;2323:53;:::i;:::-;2310:66;;2240:142;;;:::o;2388:126::-;2438:9;2471:37;2502:5;2471:37;:::i;:::-;2458:50;;2388:126;;;:::o;2520:147::-;2591:9;2624:37;2655:5;2624:37;:::i;:::-;2611:50;;2520:147;;;:::o;2673:173::-;2781:58;2833:5;2781:58;:::i;:::-;2776:3;2769:71;2673:173;;:::o;2852:264::-;2966:4;3004:2;2993:9;2989:18;2981:26;;3017:92;3106:1;3095:9;3091:17;3082:6;3017:92;:::i;:::-;2852:264;;;;:::o;3122:96::-;3159:7;3188:24;3206:5;3188:24;:::i;:::-;3177:35;;3122:96;;;:::o;3224:122::-;3297:24;3315:5;3297:24;:::i;:::-;3290:5;3287:35;3277:63;;3336:1;3333;3326:12;3277:63;3224:122;:::o;3352:139::-;3398:5;3436:6;3423:20;3414:29;;3452:33;3479:5;3452:33;:::i;:::-;3352:139;;;;:::o;3497:468::-;3562:6;3570;3619:2;3607:9;3598:7;3594:23;3590:32;3587:119;;;3625:79;;:::i;:::-;3587:119;3745:1;3770:53;3815:7;3806:6;3795:9;3791:22;3770:53;:::i;:::-;3760:63;;3716:117;3872:2;3898:50;3940:7;3931:6;3920:9;3916:22;3898:50;:::i;:::-;3888:60;;3843:115;3497:468;;;;;:::o;3971:108::-;4048:24;4066:5;4048:24;:::i;:::-;4043:3;4036:37;3971:108;;:::o;4085:114::-;4152:6;4186:5;4180:12;4170:22;;4085:114;;;:::o;4205:174::-;4294:11;4328:6;4323:3;4316:19;4368:4;4363:3;4359:14;4344:29;;4205:174;;;;:::o;4385:132::-;4452:4;4475:3;4467:11;;4505:4;4500:3;4496:14;4488:22;;4385:132;;;:::o;4523:179::-;4592:10;4613:46;4655:3;4647:6;4613:46;:::i;:::-;4691:4;4686:3;4682:14;4668:28;;4523:179;;;;:::o;4708:113::-;4778:4;4810;4805:3;4801:14;4793:22;;4708:113;;;:::o;4857:712::-;4966:3;4995:54;5043:5;4995:54;:::i;:::-;5065:76;5134:6;5129:3;5065:76;:::i;:::-;5058:83;;5165:56;5215:5;5165:56;:::i;:::-;5244:7;5275:1;5260:284;5285:6;5282:1;5279:13;5260:284;;;5361:6;5355:13;5388:63;5447:3;5432:13;5388:63;:::i;:::-;5381:70;;5474:60;5527:6;5474:60;:::i;:::-;5464:70;;5320:224;5307:1;5304;5300:9;5295:14;;5260:284;;;5264:14;5560:3;5553:10;;4971:598;;;4857:712;;;;:::o;5649:823::-;5770:3;5806:4;5801:3;5797:14;5899:4;5892:5;5888:16;5882:23;5918:63;5975:4;5970:3;5966:14;5952:12;5918:63;:::i;:::-;5821:170;6075:4;6068:5;6064:16;6058:23;6128:3;6122:4;6118:14;6111:4;6106:3;6102:14;6095:38;6154:103;6252:4;6238:12;6154:103;:::i;:::-;6146:111;;6001:267;6353:4;6346:5;6342:16;6336:23;6372:63;6429:4;6424:3;6420:14;6406:12;6372:63;:::i;:::-;6278:167;6462:4;6455:11;;5775:697;5649:823;;;;:::o;6478:377::-;6623:4;6661:2;6650:9;6646:18;6638:26;;6710:9;6704:4;6700:20;6696:1;6685:9;6681:17;6674:47;6738:110;6843:4;6834:6;6738:110;:::i;:::-;6730:118;;6478:377;;;;:::o;6861:117::-;6970:1;6967;6960:12;6984:117;7093:1;7090;7083:12;7107:117;7216:1;7213;7206:12;7247:568;7320:8;7330:6;7380:3;7373:4;7365:6;7361:17;7357:27;7347:122;;7388:79;;:::i;:::-;7347:122;7501:6;7488:20;7478:30;;7531:18;7523:6;7520:30;7517:117;;;7553:79;;:::i;:::-;7517:117;7667:4;7659:6;7655:17;7643:29;;7721:3;7713:4;7705:6;7701:17;7691:8;7687:32;7684:41;7681:128;;;7728:79;;:::i;:::-;7681:128;7247:568;;;;;:::o;7821:698::-;7913:6;7921;7929;7978:2;7966:9;7957:7;7953:23;7949:32;7946:119;;;7984:79;;:::i;:::-;7946:119;8132:1;8121:9;8117:17;8104:31;8162:18;8154:6;8151:30;8148:117;;;8184:79;;:::i;:::-;8148:117;8297:80;8369:7;8360:6;8349:9;8345:22;8297:80;:::i;:::-;8279:98;;;;8075:312;8426:2;8452:50;8494:7;8485:6;8474:9;8470:22;8452:50;:::i;:::-;8442:60;;8397:115;7821:698;;;;;:::o;8525:151::-;8600:9;8633:37;8664:5;8633:37;:::i;:::-;8620:50;;8525:151;;;:::o;8682:181::-;8794:62;8850:5;8794:62;:::i;:::-;8789:3;8782:75;8682:181;;:::o;8869:272::-;8987:4;9025:2;9014:9;9010:18;9002:26;;9038:96;9131:1;9120:9;9116:17;9107:6;9038:96;:::i;:::-;8869:272;;;;:::o;9147:86::-;9182:7;9222:4;9215:5;9211:16;9200:27;;9147:86;;;:::o;9239:118::-;9310:22;9326:5;9310:22;:::i;:::-;9303:5;9300:33;9290:61;;9347:1;9344;9337:12;9290:61;9239:118;:::o;9363:135::-;9407:5;9445:6;9432:20;9423:29;;9461:31;9486:5;9461:31;:::i;:::-;9363:135;;;;:::o;9504:77::-;9541:7;9570:5;9559:16;;9504:77;;;:::o;9587:122::-;9660:24;9678:5;9660:24;:::i;:::-;9653:5;9650:35;9640:63;;9699:1;9696;9689:12;9640:63;9587:122;:::o;9715:139::-;9761:5;9799:6;9786:20;9777:29;;9815:33;9842:5;9815:33;:::i;:::-;9715:139;;;;:::o;9860:761::-;9944:6;9952;9960;9968;10017:3;10005:9;9996:7;9992:23;9988:33;9985:120;;;10024:79;;:::i;:::-;9985:120;10144:1;10169:53;10214:7;10205:6;10194:9;10190:22;10169:53;:::i;:::-;10159:63;;10115:117;10271:2;10297:51;10340:7;10331:6;10320:9;10316:22;10297:51;:::i;:::-;10287:61;;10242:116;10397:2;10423:53;10468:7;10459:6;10448:9;10444:22;10423:53;:::i;:::-;10413:63;;10368:118;10525:2;10551:53;10596:7;10587:6;10576:9;10572:22;10551:53;:::i;:::-;10541:63;;10496:118;9860:761;;;;;;;:::o;10644:568::-;10717:8;10727:6;10777:3;10770:4;10762:6;10758:17;10754:27;10744:122;;10785:79;;:::i;:::-;10744:122;10898:6;10885:20;10875:30;;10928:18;10920:6;10917:30;10914:117;;;10950:79;;:::i;:::-;10914:117;11064:4;11056:6;11052:17;11040:29;;11118:3;11110:4;11102:6;11098:17;11088:8;11084:32;11081:41;11078:128;;;11125:79;;:::i;:::-;11078:128;10644:568;;;;;:::o;11218:559::-;11304:6;11312;11361:2;11349:9;11340:7;11336:23;11332:32;11329:119;;;11367:79;;:::i;:::-;11329:119;11515:1;11504:9;11500:17;11487:31;11545:18;11537:6;11534:30;11531:117;;;11567:79;;:::i;:::-;11531:117;11680:80;11752:7;11743:6;11732:9;11728:22;11680:80;:::i;:::-;11662:98;;;;11458:312;11218:559;;;;;:::o;11783:329::-;11842:6;11891:2;11879:9;11870:7;11866:23;11862:32;11859:119;;;11897:79;;:::i;:::-;11859:119;12017:1;12042:53;12087:7;12078:6;12067:9;12063:22;12042:53;:::i;:::-;12032:63;;11988:117;11783:329;;;;:::o;12118:118::-;12205:24;12223:5;12205:24;:::i;:::-;12200:3;12193:37;12118:118;;:::o;12242:222::-;12335:4;12373:2;12362:9;12358:18;12350:26;;12386:71;12454:1;12443:9;12439:17;12430:6;12386:71;:::i;:::-;12242:222;;;;:::o;12470:118::-;12557:24;12575:5;12557:24;:::i;:::-;12552:3;12545:37;12470:118;;:::o;12594:222::-;12687:4;12725:2;12714:9;12710:18;12702:26;;12738:71;12806:1;12795:9;12791:17;12782:6;12738:71;:::i;:::-;12594:222;;;;:::o;12822:1277::-;12948:6;12956;12964;12972;12980;12988;12996;13045:3;13033:9;13024:7;13020:23;13016:33;13013:120;;;13052:79;;:::i;:::-;13013:120;13200:1;13189:9;13185:17;13172:31;13230:18;13222:6;13219:30;13216:117;;;13252:79;;:::i;:::-;13216:117;13365:80;13437:7;13428:6;13417:9;13413:22;13365:80;:::i;:::-;13347:98;;;;13143:312;13494:2;13520:50;13562:7;13553:6;13542:9;13538:22;13520:50;:::i;:::-;13510:60;;13465:115;13619:2;13645:53;13690:7;13681:6;13670:9;13666:22;13645:53;:::i;:::-;13635:63;;13590:118;13747:2;13773:51;13816:7;13807:6;13796:9;13792:22;13773:51;:::i;:::-;13763:61;;13718:116;13873:3;13900:53;13945:7;13936:6;13925:9;13921:22;13900:53;:::i;:::-;13890:63;;13844:119;14002:3;14029:53;14074:7;14065:6;14054:9;14050:22;14029:53;:::i;:::-;14019:63;;13973:119;12822:1277;;;;;;;;;;:::o;14105:169::-;14189:11;14223:6;14218:3;14211:19;14263:4;14258:3;14254:14;14239:29;;14105:169;;;;:::o;14280:181::-;14420:33;14416:1;14408:6;14404:14;14397:57;14280:181;:::o;14467:366::-;14609:3;14630:67;14694:2;14689:3;14630:67;:::i;:::-;14623:74;;14706:93;14795:3;14706:93;:::i;:::-;14824:2;14819:3;14815:12;14808:19;;14467:366;;;:::o;14839:419::-;15005:4;15043:2;15032:9;15028:18;15020:26;;15092:9;15086:4;15082:20;15078:1;15067:9;15063:17;15056:47;15120:131;15246:4;15120:131;:::i;:::-;15112:139;;14839:419;;;:::o;15264:182::-;15404:34;15400:1;15392:6;15388:14;15381:58;15264:182;:::o;15452:366::-;15594:3;15615:67;15679:2;15674:3;15615:67;:::i;:::-;15608:74;;15691:93;15780:3;15691:93;:::i;:::-;15809:2;15804:3;15800:12;15793:19;;15452:366;;;:::o;15824:419::-;15990:4;16028:2;16017:9;16013:18;16005:26;;16077:9;16071:4;16067:20;16063:1;16052:9;16048:17;16041:47;16105:131;16231:4;16105:131;:::i;:::-;16097:139;;15824:419;;;:::o;16249:180::-;16297:77;16294:1;16287:88;16394:4;16391:1;16384:15;16418:4;16415:1;16408:15;16435:180;16483:77;16480:1;16473:88;16580:4;16577:1;16570:15;16604:4;16601:1;16594:15;16621:233;16660:3;16683:24;16701:5;16683:24;:::i;:::-;16674:33;;16729:66;16722:5;16719:77;16716:103;;;16799:18;;:::i;:::-;16716:103;16846:1;16839:5;16835:13;16828:20;;16621:233;;;:::o;16860:94::-;16893:8;16941:5;16937:2;16933:14;16912:35;;16860:94;;;:::o;16960:::-;16999:7;17028:20;17042:5;17028:20;:::i;:::-;17017:31;;16960:94;;;:::o;17060:100::-;17099:7;17128:26;17148:5;17128:26;:::i;:::-;17117:37;;17060:100;;;:::o;17166:157::-;17271:45;17291:24;17309:5;17291:24;:::i;:::-;17271:45;:::i;:::-;17266:3;17259:58;17166:157;;:::o;17329:79::-;17368:7;17397:5;17386:16;;17329:79;;;:::o;17414:157::-;17519:45;17539:24;17557:5;17539:24;:::i;:::-;17519:45;:::i;:::-;17514:3;17507:58;17414:157;;:::o;17577:538::-;17745:3;17760:75;17831:3;17822:6;17760:75;:::i;:::-;17860:2;17855:3;17851:12;17844:19;;17873:75;17944:3;17935:6;17873:75;:::i;:::-;17973:2;17968:3;17964:12;17957:19;;17986:75;18057:3;18048:6;17986:75;:::i;:::-;18086:2;18081:3;18077:12;18070:19;;18106:3;18099:10;;17577:538;;;;;;:::o;18121:148::-;18223:11;18260:3;18245:18;;18121:148;;;;:::o;18275:214::-;18415:66;18411:1;18403:6;18399:14;18392:90;18275:214;:::o;18495:402::-;18655:3;18676:85;18758:2;18753:3;18676:85;:::i;:::-;18669:92;;18770:93;18859:3;18770:93;:::i;:::-;18888:2;18883:3;18879:12;18872:19;;18495:402;;;:::o;18903:79::-;18942:7;18971:5;18960:16;;18903:79;;;:::o;18988:157::-;19093:45;19113:24;19131:5;19113:24;:::i;:::-;19093:45;:::i;:::-;19088:3;19081:58;18988:157;;:::o;19151:522::-;19364:3;19386:148;19530:3;19386:148;:::i;:::-;19379:155;;19544:75;19615:3;19606:6;19544:75;:::i;:::-;19644:2;19639:3;19635:12;19628:19;;19664:3;19657:10;;19151:522;;;;:::o;19679:118::-;19766:24;19784:5;19766:24;:::i;:::-;19761:3;19754:37;19679:118;;:::o;19803:112::-;19886:22;19902:5;19886:22;:::i;:::-;19881:3;19874:35;19803:112;;:::o;19921:545::-;20094:4;20132:3;20121:9;20117:19;20109:27;;20146:71;20214:1;20203:9;20199:17;20190:6;20146:71;:::i;:::-;20227:68;20291:2;20280:9;20276:18;20267:6;20227:68;:::i;:::-;20305:72;20373:2;20362:9;20358:18;20349:6;20305:72;:::i;:::-;20387;20455:2;20444:9;20440:18;20431:6;20387:72;:::i;:::-;19921:545;;;;;;;:::o;20472:167::-;20612:19;20608:1;20600:6;20596:14;20589:43;20472:167;:::o;20645:366::-;20787:3;20808:67;20872:2;20867:3;20808:67;:::i;:::-;20801:74;;20884:93;20973:3;20884:93;:::i;:::-;21002:2;20997:3;20993:12;20986:19;;20645:366;;;:::o;21017:419::-;21183:4;21221:2;21210:9;21206:18;21198:26;;21270:9;21264:4;21260:20;21256:1;21245:9;21241:17;21234:47;21298:131;21424:4;21298:131;:::i;:::-;21290:139;;21017:419;;;:::o;21442:170::-;21582:22;21578:1;21570:6;21566:14;21559:46;21442:170;:::o;21618:366::-;21760:3;21781:67;21845:2;21840:3;21781:67;:::i;:::-;21774:74;;21857:93;21946:3;21857:93;:::i;:::-;21975:2;21970:3;21966:12;21959:19;;21618:366;;;:::o;21990:419::-;22156:4;22194:2;22183:9;22179:18;22171:26;;22243:9;22237:4;22233:20;22229:1;22218:9;22214:17;22207:47;22271:131;22397:4;22271:131;:::i;:::-;22263:139;;21990:419;;;:::o;22415:348::-;22455:7;22478:20;22496:1;22478:20;:::i;:::-;22473:25;;22512:20;22530:1;22512:20;:::i;:::-;22507:25;;22700:1;22632:66;22628:74;22625:1;22622:81;22617:1;22610:9;22603:17;22599:105;22596:131;;;22707:18;;:::i;:::-;22596:131;22755:1;22752;22748:9;22737:20;;22415:348;;;;:::o;22769:305::-;22809:3;22828:20;22846:1;22828:20;:::i;:::-;22823:25;;22862:20;22880:1;22862:20;:::i;:::-;22857:25;;23016:1;22948:66;22944:74;22941:1;22938:81;22935:107;;;23022:18;;:::i;:::-;22935:107;23066:1;23063;23059:9;23052:16;;22769:305;;;;:::o;23080:228::-;23220:34;23216:1;23208:6;23204:14;23197:58;23289:11;23284:2;23276:6;23272:15;23265:36;23080:228;:::o;23314:366::-;23456:3;23477:67;23541:2;23536:3;23477:67;:::i;:::-;23470:74;;23553:93;23642:3;23553:93;:::i;:::-;23671:2;23666:3;23662:12;23655:19;;23314:366;;;:::o;23686:419::-;23852:4;23890:2;23879:9;23875:18;23867:26;;23939:9;23933:4;23929:20;23925:1;23914:9;23910:17;23903:47;23967:131;24093:4;23967:131;:::i;:::-;23959:139;;23686:419;;;:::o;24111:143::-;24168:5;24199:6;24193:13;24184:22;;24215:33;24242:5;24215:33;:::i;:::-;24111:143;;;;:::o;24260:351::-;24330:6;24379:2;24367:9;24358:7;24354:23;24350:32;24347:119;;;24385:79;;:::i;:::-;24347:119;24505:1;24530:64;24586:7;24577:6;24566:9;24562:22;24530:64;:::i;:::-;24520:74;;24476:128;24260:351;;;;:::o;24617:170::-;24757:22;24753:1;24745:6;24741:14;24734:46;24617:170;:::o;24793:366::-;24935:3;24956:67;25020:2;25015:3;24956:67;:::i;:::-;24949:74;;25032:93;25121:3;25032:93;:::i;:::-;25150:2;25145:3;25141:12;25134:19;;24793:366;;;:::o;25165:419::-;25331:4;25369:2;25358:9;25354:18;25346:26;;25418:9;25412:4;25408:20;25404:1;25393:9;25389:17;25382:47;25446:131;25572:4;25446:131;:::i;:::-;25438:139;;25165:419;;;:::o;25590:174::-;25730:26;25726:1;25718:6;25714:14;25707:50;25590:174;:::o;25770:366::-;25912:3;25933:67;25997:2;25992:3;25933:67;:::i;:::-;25926:74;;26009:93;26098:3;26009:93;:::i;:::-;26127:2;26122:3;26118:12;26111:19;;25770:366;;;:::o;26142:419::-;26308:4;26346:2;26335:9;26331:18;26323:26;;26395:9;26389:4;26385:20;26381:1;26370:9;26366:17;26359:47;26423:131;26549:4;26423:131;:::i;:::-;26415:139;;26142:419;;;:::o;26567:225::-;26707:34;26703:1;26695:6;26691:14;26684:58;26776:8;26771:2;26763:6;26759:15;26752:33;26567:225;:::o;26798:366::-;26940:3;26961:67;27025:2;27020:3;26961:67;:::i;:::-;26954:74;;27037:93;27126:3;27037:93;:::i;:::-;27155:2;27150:3;27146:12;27139:19;;26798:366;;;:::o;27170:419::-;27336:4;27374:2;27363:9;27359:18;27351:26;;27423:9;27417:4;27413:20;27409:1;27398:9;27394:17;27387:47;27451:131;27577:4;27451:131;:::i;:::-;27443:139;;27170:419;;;:::o
Swarm Source
ipfs://c5fb1a2ddb3e8f1cb077b0214919ecbd196dd02dc54e04cb91db0e989362575e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.