Contract
0xcbedee9c29e92d61add691de46bc6d4f4bb070a7
5
Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 23 internal transactions
[ Download CSV Export ]
Contract Name:
OkseCardPriceOracle
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan on 2022-10-19 */ // Sources flattened with hardhat v2.9.6 https://hardhat.org // File contracts/interfaces/ERC20Interface.sol //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.7.0; interface ERC20Interface { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File contracts/libraries/SafeMath.sol pragma solidity ^0.7.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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 add(a, b, "SafeMath: addition overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File contracts/interfaces/PriceOracle.sol pragma solidity ^0.7.0; abstract contract PriceOracle { /// @notice Indicator that this is a PriceOracle contract (for inspection) bool public constant isPriceOracle = true; /** * @notice Get the underlying price of a cToken asset * @param market The cToken to get the underlying price of * @return The underlying asset price mantissa (scaled by 1e18). * Zero means the price is unavailable. */ function getUnderlyingPrice(address market) external virtual view returns (uint); } // File contracts/interfaces/AggregatorV3Interface.sol pragma solidity ^0.7.0; interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); // getRoundData and latestRoundData should both raise "No data present" // if they do not have data to report, instead of returning unset values // which could be misinterpreted as actual reported values. function getRoundData(uint80 _roundId) external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); } // File contracts/MultiSigOwner.sol pragma solidity ^0.7.0; pragma abicoder v2; // 2/3 Multi Sig Owner contract MultiSigOwner { address[] public owners; mapping(uint256 => bool) public signatureId; bool private initialized; // events event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); event SignValidTimeChanged(uint256 newValue); modifier validSignOfOwner( bytes calldata signData, bytes calldata keys, string memory functionName ) { require(isOwner(msg.sender), "on"); address signer = getSigner(signData, keys); require( signer != msg.sender && isOwner(signer) && signer != address(0), "is" ); (bytes4 method, uint256 id, uint256 validTime, ) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); require( signatureId[id] == false && method == bytes4(keccak256(bytes(functionName))), "sru" ); require(validTime > block.timestamp, "ep"); signatureId[id] = true; _; } function isOwner(address addr) public view returns (bool) { bool _isOwner = false; for (uint256 i = 0; i < owners.length; i++) { if (owners[i] == addr) { _isOwner = true; } } return _isOwner; } constructor() {} function initializeOwners(address[3] memory _owners) public { require( !initialized && _owners[0] != address(0) && _owners[1] != address(0) && _owners[2] != address(0), "ai" ); owners = [_owners[0], _owners[1], _owners[2]]; initialized = true; } function getSigner(bytes calldata _data, bytes calldata keys) public view returns (address) { uint256 chainId; assembly { chainId := chainid() } (uint8 v, bytes32 r, bytes32 s) = abi.decode( keys, (uint8, bytes32, bytes32) ); return ecrecover( toEthSignedMessageHash( keccak256(abi.encodePacked(this, chainId, _data)) ), v, r, s ); } function encodePackedData(bytes calldata _data) public view returns (bytes32) { uint256 chainId; assembly { chainId := chainid() } return keccak256(abi.encodePacked(this, chainId, _data)); } function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { return keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", hash) ); } // Set functions // verified function transferOwnership(bytes calldata signData, bytes calldata keys) public validSignOfOwner(signData, keys, "transferOwnership") { (, , , bytes memory params) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); address newOwner = abi.decode(params, (address)); uint256 index; for (uint256 i = 0; i < owners.length; i++) { if (owners[i] == msg.sender) { index = i; } } address oldOwner = owners[index]; owners[index] = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File contracts/OkseCardPriceOracle.sol pragma solidity ^0.7.0; pragma experimental ABIEncoderV2; contract OkseCardPriceOracle is PriceOracle, MultiSigOwner { using SafeMath for uint256; mapping(address => uint256) prices; event PricePosted( address asset, uint256 previousPriceMantissa, uint256 requestedPriceMantissa, uint256 newPriceMantissa ); mapping(address => address) priceFeeds; event PriceFeedChanged( address asset, address previousPriceFeed, address newPriceFeed ); constructor() { uint256 chainId; assembly { chainId := chainid() } //////bsc/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (chainId == 56) { priceFeeds[ 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c ] = 0x0567F2323251f0Aab15c8dFb1967E4e8A7D42aeE; // BNB/USD priceFeeds[ 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d ] = 0x51597f405303C4377E36123cBc172b13269EA163; // USDC/USD priceFeeds[ 0x55d398326f99059fF775485246999027B3197955 ] = 0xB97Ad0E74fa7d920791E90258A6E2085088b4320; // USDT/USD priceFeeds[ 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56 ] = 0xcBb98864Ef56E9042e7d2efef76141f15731B82f; // BUSD/USD priceFeeds[ 0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c ] = 0x264990fbd0A4796A3E3d8E37C4d5F87a3aCa5Ebf; // WBTC/USD priceFeeds[ 0x2170Ed0880ac9A755fd29B2688956BD959F933F8 ] = 0x9ef1B8c0E4F7dc8bF5719Ea496883DC6401d5b2e; // ETH/USD } //// matic ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (chainId == 137) { priceFeeds[ 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270 ] = 0xAB594600376Ec9fD91F8e885dADF0CE036862dE0; // MATIC/USD priceFeeds[ 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 ] = 0xfE4A8cc5b5B2366C1B58Bea3858e81843581b2F7; // USDC/USD priceFeeds[ 0xc2132D05D31c914a87C6611C10748AEb04B58e8F ] = 0x0A6513e40db6EB1b165753AD52E80663aeA50545; // USDT/USD priceFeeds[ 0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6 ] = 0xDE31F8bFBD8c84b5360CFACCa3539B938dd78ae6; // WBTC/USD priceFeeds[ 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619 ] = 0xF9680D99D6C9589e2a93a78A04A279e509205945; // ETH/USD priceFeeds[ 0x0b3F868E0BE5597D5DB7fEB59E1CADBb0fdDa50a ] = 0x49B0c695039243BBfEb8EcD054EB70061fd54aa0; // SUSHI/USD priceFeeds[ 0xa3Fa99A148fA48D14Ed51d610c367C61876997F1 ] = 0xd8d483d813547CfB624b8Dc33a00F2fcbCd2D428; // MIMATIC/USD } //// fantom ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (chainId == 250) { priceFeeds[ 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83 ] = 0xf4766552D15AE4d256Ad41B6cf2933482B0680dc; // FTM/USD priceFeeds[ 0x04068DA6C83AFCFA0e13ba15A6696662335D5B75 ] = 0x2553f4eeb82d5A26427b8d1106C51499CBa5D99c; // USDC/USD priceFeeds[ 0x049d68029688eAbF473097a2fC38ef61633A3C7A ] = 0xF64b636c5dFe1d3555A847341cDC449f612307d0; // fUSDT/USD priceFeeds[ 0x321162Cd933E2Be498Cd2267a90534A804051b11 ] = 0x8e94C22142F4A64b99022ccDd994f4e9EC86E4B4; // WBTC/USD priceFeeds[ 0x74b23882a30290451A17c44f4F05243b6b58C76d ] = 0x11DdD3d147E5b83D01cee7070027092397d63658; // WETH/USD priceFeeds[ 0xae75A438b2E0cB8Bb01Ec1E1e376De11D44477CC ] = 0xCcc059a1a17577676c8673952Dc02070D29e5a66; // SUSHI/USD } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } //return usd price of asset , decimal is 8 function getUnderlyingPrice(address market) public view override returns (uint256) { uint80 roundID; int256 price; uint256 startedAt; uint256 timeStamp; uint80 answeredInRound; uint256 resultPrice; if (prices[market] != 0) { resultPrice = prices[market]; } else { if (priceFeeds[market] != address(0)) { ( roundID, price, startedAt, timeStamp, answeredInRound ) = AggregatorV3Interface(priceFeeds[market]).latestRoundData(); } else { price = 0; } resultPrice = uint256(price); } uint256 defaultDecimal = 18; ERC20Interface token = ERC20Interface(market); uint256 tokenDecimal = uint256(token.decimals()); if (defaultDecimal == tokenDecimal) { return resultPrice; } else if (defaultDecimal > tokenDecimal) { return resultPrice.mul(10**(defaultDecimal.sub(tokenDecimal))); } else { return resultPrice.div(10**(tokenDecimal.sub(defaultDecimal))); } } function assetPrices(address asset) external view returns (uint256) { return prices[asset]; } function setDirectPrice(bytes calldata signData, bytes calldata keys) external validSignOfOwner(signData, keys, "setDirectPrice") { (, , , bytes memory params) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); (address asset, uint256 price) = abi.decode(params, (address, uint256)); setDirectPriceInternal(asset, price); } function setBatchDirectPrice(bytes calldata signData, bytes calldata keys) external validSignOfOwner(signData, keys, "setBatchDirectPrice") { (, , , bytes memory params) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); (address[] memory _assets, uint256[] memory _prices) = abi.decode( params, (address[], uint256[]) ); require(_assets.length == _prices.length, "le"); for (uint256 i = 0; i < _assets.length; i++) { setDirectPriceInternal(_assets[i], _prices[i]); } } function setDirectPriceInternal(address asset, uint256 price) internal { emit PricePosted(asset, prices[asset], price, price); prices[asset] = price; } function setPriceFeed(bytes calldata signData, bytes calldata keys) external validSignOfOwner(signData, keys, "setPriceFeed") { (, , , bytes memory params) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); (address asset, address priceFeed) = abi.decode( params, (address, address) ); emit PriceFeedChanged(asset, priceFeeds[asset], priceFeed); priceFeeds[asset] = priceFeed; } }
[{"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"address","name":"previousPriceFeed","type":"address"},{"indexed":false,"internalType":"address","name":"newPriceFeed","type":"address"}],"name":"PriceFeedChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousPriceMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requestedPriceMantissa","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPriceMantissa","type":"uint256"}],"name":"PricePosted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"SignValidTimeChanged","type":"event"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"assetPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"encodePackedData","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"getSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"getUnderlyingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[3]","name":"_owners","type":"address[3]"}],"name":"initializeOwners","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPriceOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"signData","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"setBatchDirectPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"signData","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"setDirectPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"signData","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"setPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"signatureId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"signData","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b504660388114156101b35760046020527f1acf883629f7ed31fc27a2a0d2390e0929c545d19e7d64611602179e5f371fc380546001600160a01b0319908116730567f2323251f0aab15c8dfb1967e4e8a7d42aee179091557fe7531ef9abb867ffffe9c0dc73f8bc2e15cf41f7bf2ce99fbae639d4d5c15951805482167351597f405303c4377e36123cbc172b13269ea1631790557f7ef95397d98fffb4a12a466d73a89d3cf49fa95ff4ba0aa1db6aaf272b7982158054821673b97ad0e74fa7d920791e90258a6e2085088b43201790557fa385b31964328f61c2cdab127c54249f573b192161d52b1f3d552db32224bd428054821673cbb98864ef56e9042e7d2efef76141f15731b82f1790557f020d60ee64c79b1375e5b7d880a4827df313abb64d06701957dd261da203f45e8054821673264990fbd0a4796a3e3d8e37c4d5f87a3aca5ebf179055732170ed0880ac9a755fd29b2688956bd959f933f86000527fc6506420c2e525e11abab334c5da9ffdfef09d269838135bdaff4ded0cbdcfbe8054909116739ef1b8c0e4f7dc8bf5719ea496883dc6401d5b2e1790555b80608914156103915760046020527f3e73a25e817bd097e8eaf0ac0076d088e058dae47a20d23b0f0cc945791a958880546001600160a01b031990811673ab594600376ec9fd91f8e885dadf0ce036862de0179091557f3d6c902089d5053230afb20d03add215c708a8333f93f9395a50fea0c3493a618054821673fe4a8cc5b5b2366c1b58bea3858e81843581b2f71790557fb19cf2e52982b41c5e63c8d2b213089d6b958993eb55c34ad5b9543558dda2fa80548216730a6513e40db6eb1b165753ad52e80663aea505451790557f4655629ab7fde6a4c7d505e4f879f599cb39edaf37d2017a04c0c67e011b69f98054821673de31f8bfbd8c84b5360cfacca3539b938dd78ae61790557f69bc9a80c51a557b6c5a4b7c71ffdcd97cc91b2bda5dc1b0da50dd9e6ab212398054821673f9680d99d6c9589e2a93a78a04a279e5092059451790557f8f67c9166672753481b743e70d49ed1e0464ddaeb739a5cd718076f135074cc6805482167349b0c695039243bbfeb8ecd054eb70061fd54aa017905573a3fa99a148fa48d14ed51d610c367c61876997f16000527f20e02f917f07e17fb180b6093b6423142e105bf752801ba208c36be43824768b805490911673d8d483d813547cfb624b8dc33a00f2fcbcd2d4281790555b8060fa14156105325760046020527f0b9faaabb35afcb5b88fd7f020fd7dfd8a958e160264ae061d1e9bb4e5d6675180546001600160a01b031990811673f4766552d15ae4d256ad41b6cf2933482b0680dc179091557f3b7092b3eb898e18f44882f95a8634f1ba4b032c0d87f900d85e0f87543b6bd980548216732553f4eeb82d5a26427b8d1106c51499cba5d99c1790557f637dbce3a8159991551711c7adbf6bfe1abbe71372e794a5ba29e20a3ea920c28054821673f64b636c5dfe1d3555a847341cdc449f612307d01790557f0369097c5e974ef9a3fc85f421fd301a694a7c2e04ac79523a86359c300542ad80548216738e94c22142f4a64b99022ccdd994f4e9ec86e4b41790557f581cbbe5fc00e4850b1816bf3ebe10fc9d4faf709e3aeb25b014f03aea5ecd6c805482167311ddd3d147e5b83d01cee7070027092397d6365817905573ae75a438b2e0cb8bb01ec1e1e376de11d44477cc6000527f47b0a9bccdd4e05f323849d9b69a2807df6d3d074c44cc985561ddaac7fce297805490911673ccc059a1a17577676c8673952dc02070d29e5a661790555b506117fa806105426000396000f3fe608060405234801561001057600080fd5b50600436106100bf5760003560e01c806368af81e61161007c57806368af81e61461015d5780636f9e4f0b1461017057806371340e471461018357806375e16b1714610196578063b2b9f0ed146101a9578063d1f21f4f146101bc578063fc57d4df146101cf576100bf565b8063025e7c27146100c45780632f54bf6e146100ed57806333a80e7f1461010d5780635e9a523c14610122578063656503ca1461014257806366331bba14610155575b600080fd5b6100d76100d2366004611476565b6101e2565b6040516100e49190611591565b60405180910390f35b6101006100fb366004611132565b61020c565b6040516100e491906115ee565b61012061011b36600461140e565b610263565b005b610135610130366004611132565b610478565b6040516100e491906115f9565b61012061015036600461140e565b610493565b610100610628565b61013561016b3660046113cf565b61062d565b61012061017e3660046111d0565b610669565b61012061019136600461140e565b610721565b6100d76101a436600461140e565b610917565b6101006101b7366004611476565b6109c0565b6101206101ca36600461140e565b6109d5565b6101356101dd366004611132565b610c34565b600081815481106101f257600080fd5b6000918252602090912001546001600160a01b0316905081565b600080805b60005481101561025a57836001600160a01b03166000828154811061023257fe5b6000918252602090912001546001600160a01b0316141561025257600191505b600101610211565b5090505b919050565b838383836040518060400160405280600c81526020016b1cd95d141c9a58d95199595960a21b8152506102953361020c565b6102ba5760405162461bcd60e51b81526004016102b19061168f565b60405180910390fd5b60006102c886868686610917565b90506001600160a01b03811633148015906102e757506102e78161020c565b80156102fb57506001600160a01b03811615155b6103175760405162461bcd60e51b81526004016102b1906116c7565b60008080610327888a018a611317565b50600082815260016020526040902054929550909350915060ff161580156103615750845160208601206001600160e01b03198481169116145b61037d5760405162461bcd60e51b81526004016102b190611740565b42811161039c5760405162461bcd60e51b81526004016102b1906116ab565b60008281526001602081905260408220805460ff191690911790556103c38d8f018f611317565b9350505050600080828060200190518101906103df919061116a565b6001600160a01b03808316600090815260046020526040908190205490519395509193507fe1fa38e9855b53a19aafc2f021c7981bc99455513b8684a8ec1f5233e7c123d892610434928692169085906115a5565b60405180910390a16001600160a01b03918216600090815260046020526040902080546001600160a01b031916919092161790555050505050505050505050505050565b6001600160a01b031660009081526003602052604090205490565b838383836040518060400160405280600e81526020016d736574446972656374507269636560901b8152506104c73361020c565b6104e35760405162461bcd60e51b81526004016102b19061168f565b60006104f186868686610917565b90506001600160a01b038116331480159061051057506105108161020c565b801561052457506001600160a01b03811615155b6105405760405162461bcd60e51b81526004016102b1906116c7565b60008080610550888a018a611317565b50600082815260016020526040902054929550909350915060ff1615801561058a5750845160208601206001600160e01b03198481169116145b6105a65760405162461bcd60e51b81526004016102b190611740565b4281116105c55760405162461bcd60e51b81526004016102b1906116ab565b60008281526001602081905260408220805460ff191690911790556105ec8d8f018f611317565b93505050506000808280602001905181019061060891906111a3565b915091506106168282610e21565b50505050505050505050505050505050565b600181565b604051600090469061064990309083908790879060200161152d565b604051602081830303815290604052805190602001209150505b92915050565b60025460ff16158015610685575080516001600160a01b031615155b801561069d575060208101516001600160a01b031615155b80156106b5575060408101516001600160a01b031615155b6106d15760405162461bcd60e51b81526004016102b190611724565b6040805160608101825282516001600160a01b039081168252602080850151821690830152838301511691810191909152610710906000906003610fec565b50506002805460ff19166001179055565b83838383604051806040016040528060138152602001727365744261746368446972656374507269636560681b81525061075a3361020c565b6107765760405162461bcd60e51b81526004016102b19061168f565b600061078486868686610917565b90506001600160a01b03811633148015906107a357506107a38161020c565b80156107b757506001600160a01b03811615155b6107d35760405162461bcd60e51b81526004016102b1906116c7565b600080806107e3888a018a611317565b50600082815260016020526040902054929550909350915060ff1615801561081d5750845160208601206001600160e01b03198481169116145b6108395760405162461bcd60e51b81526004016102b190611740565b4281116108585760405162461bcd60e51b81526004016102b1906116ab565b60008281526001602081905260408220805460ff1916909117905561087f8d8f018f611317565b93505050506000808280602001905181019061089b9190611255565b9150915080518251146108c05760405162461bcd60e51b81526004016102b190611673565b60005b8251811015610904576108fc8382815181106108db57fe5b60200260200101518383815181106108ef57fe5b6020026020010151610e21565b6001016108c3565b5050505050505050505050505050505050565b600046818080610929868801886114f9565b925092509250600161096630868c8c60405160200161094b949392919061152d565b60405160208183030381529060405280519060200120610e94565b848484604051600081526020016040526040516109869493929190611602565b6020604051602081039080840390855afa1580156109a8573d6000803e3d6000fd5b5050604051601f1901519a9950505050505050505050565b60016020526000908152604090205460ff1681565b838383836040518060400160405280601181526020017007472616e736665724f776e65727368697607c1b815250610a0c3361020c565b610a285760405162461bcd60e51b81526004016102b19061168f565b6000610a3686868686610917565b90506001600160a01b0381163314801590610a555750610a558161020c565b8015610a6957506001600160a01b03811615155b610a855760405162461bcd60e51b81526004016102b1906116c7565b60008080610a95888a018a611317565b50600082815260016020526040902054929550909350915060ff16158015610acf5750845160208601206001600160e01b03198481169116145b610aeb5760405162461bcd60e51b81526004016102b190611740565b428111610b0a5760405162461bcd60e51b81526004016102b1906116ab565b60008281526001602081905260408220805460ff19169091179055610b318d8f018f611317565b9350505050600081806020019051810190610b4c919061114e565b90506000805b600054811015610b9a57336001600160a01b031660008281548110610b7357fe5b6000918252602090912001546001600160a01b03161415610b92578091505b600101610b52565b506000808281548110610ba957fe5b600091825260208220015481546001600160a01b03909116925084919084908110610bd057fe5b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051858316928416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050505050505050505050505050505050565b6001600160a01b03811660009081526003602052604081205481908190819081908190819015610c7d57506001600160a01b038716600090815260036020526040902054610d3f565b6001600160a01b038881166000908152600460205260409020541615610d37576001600160a01b03808916600090815260046020819052604091829020548251633fabe5a360e21b8152925193169263feaf968c928083019260a09291829003018186803b158015610cee57600080fd5b505afa158015610d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d26919061148e565b939950919750955093509150610d3c565b600094505b50835b60006012905060008990506000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbd91906114dd565b60ff16905080831415610ddb5783995050505050505050505061025e565b80831115610e0a57610dfa610df08483610ec4565b8590600a0a610f0d565b995050505050505050505061025e565b610dfa610e178285610ec4565b8590600a0a610f47565b6001600160a01b038216600090815260036020526040908190205490517fdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae791610e7091859190859081906115c8565b60405180910390a16001600160a01b03909116600090815260036020526040902055565b600081604051602001610ea79190611560565b604051602081830303815290604052805190602001209050919050565b6000610f0683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f89565b9392505050565b600082610f1c57506000610663565b82820282848281610f2957fe5b0414610f065760405162461bcd60e51b81526004016102b1906116e3565b6000610f0683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610fb5565b60008184841115610fad5760405162461bcd60e51b81526004016102b19190611620565b505050900390565b60008183610fd65760405162461bcd60e51b81526004016102b19190611620565b506000838581610fe257fe5b0495945050505050565b828054828255906000526020600020908101928215611041579160200282015b8281111561104157825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061100c565b5061104d929150611051565b5090565b5b8082111561104d5760008155600101611052565b600082601f830112611076578081fd5b8151602061108b61108683611780565b61175d565b82815281810190858301838502870184018810156110a7578586fd5b855b858110156110c5578151845292840192908401906001016110a9565b5090979650505050505050565b60008083601f8401126110e3578182fd5b5081356001600160401b038111156110f9578182fd5b60208301915083602082850101111561111157600080fd5b9250929050565b805169ffffffffffffffffffff8116811461025e57600080fd5b600060208284031215611143578081fd5b8135610f068161179d565b60006020828403121561115f578081fd5b8151610f068161179d565b6000806040838503121561117c578081fd5b82516111878161179d565b60208401519092506111988161179d565b809150509250929050565b600080604083850312156111b5578182fd5b82516111c08161179d565b6020939093015192949293505050565b6000606082840312156111e1578081fd5b82601f8301126111ef578081fd5b604051606081018181106001600160401b038211171561120b57fe5b60405280836060810186101561121f578384fd5b835b600381101561124a5781356112358161179d565b83526020928301929190910190600101611221565b509195945050505050565b60008060408385031215611267578182fd5b82516001600160401b038082111561127d578384fd5b818501915085601f830112611290578384fd5b815160206112a061108683611780565b82815281810190858301838502870184018b10156112bc578889fd5b8896505b848710156112e75780516112d38161179d565b8352600196909601959183019183016112c0565b5091880151919650909350505080821115611300578283fd5b5061130d85828601611066565b9150509250929050565b6000806000806080858703121561132c578182fd5b84356001600160e01b031981168114611343578283fd5b935060208581013593506040860135925060608601356001600160401b038082111561136d578384fd5b818801915088601f830112611380578384fd5b81358181111561138c57fe5b61139e601f8201601f1916850161175d565b915080825289848285010111156113b3578485fd5b8084840185840137810190920192909252939692955090935050565b600080602083850312156113e1578182fd5b82356001600160401b038111156113f6578283fd5b611402858286016110d2565b90969095509350505050565b60008060008060408587031215611423578182fd5b84356001600160401b0380821115611439578384fd5b611445888389016110d2565b9096509450602087013591508082111561145d578384fd5b5061146a878288016110d2565b95989497509550505050565b600060208284031215611487578081fd5b5035919050565b600080600080600060a086880312156114a5578283fd5b6114ae86611118565b94506020860151935060408601519250606086015191506114d160808701611118565b90509295509295909350565b6000602082840312156114ee578081fd5b8151610f06816117b5565b60008060006060848603121561150d578081fd5b8335611518816117b5565b95602085013595506040909401359392505050565b60006bffffffffffffffffffffffff198660601b1682528460148301528284603484013791016034019081529392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b901515815260200190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b8181101561164c57858101830151858201604001528201611630565b8181111561165d5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600290820152616c6560f01b604082015260600190565b60208082526002908201526137b760f11b604082015260600190565b602080825260029082015261065760f41b604082015260600190565b602080825260029082015261697360f01b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260029082015261616960f01b604082015260600190565b60208082526003908201526273727560e81b604082015260600190565b6040518181016001600160401b038111828210171561177857fe5b604052919050565b60006001600160401b0382111561179357fe5b5060209081020190565b6001600160a01b03811681146117b257600080fd5b50565b60ff811681146117b257600080fdfea2646970667358221220c3f668a455fc3a249371830b2efa8f8063ca9d6752e38a50802f94634dfcd5c364736f6c63430007060033
Deployed ByteCode Sourcemap
14044:7542:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10323:23;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11398:277;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21061:522::-;;;;;;:::i;:::-;;:::i;:::-;;19690:107;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19805:423::-;;;;;;:::i;:::-;;:::i;8837:41::-;;;:::i;12681:276::-;;;;;;:::i;:::-;;:::i;11707:363::-;;;;;;:::i;:::-;;:::i;20236:635::-;;;;;;:::i;:::-;;:::i;12078:595::-;;;;;;:::i;:::-;;:::i;10353:43::-;;;;;;:::i;:::-;;:::i;13262:668::-;;;;;;:::i;:::-;;:::i;18381:1301::-;;;;;;:::i;:::-;;:::i;10323:23::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10323:23:0;;-1:-1:-1;10323:23:0;:::o;11398:277::-;11450:4;;;11499:143;11523:6;:13;11519:17;;11499:143;;;11575:4;-1:-1:-1;;;;;11562:17:0;:6;11569:1;11562:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11562:9:0;:17;11558:73;;;11611:4;11600:15;;11558:73;11538:3;;11499:143;;;-1:-1:-1;11659:8:0;-1:-1:-1;11398:277:0;;;;:::o;21061:522::-;21173:8;;21183:4;;10615:775;;;;;;;;;;;;;-1:-1:-1;;;10615:775:0;;;10768:19;10776:10;10768:7;:19::i;:::-;10760:34;;;;-1:-1:-1;;;10760:34:0;;;;;;;:::i;:::-;;;;;;;;;10805:14;10822:25;10832:8;;10842:4;;10822:9;:25::i;:::-;10805:42;-1:-1:-1;;;;;;10880:20:0;;10890:10;10880:20;;;;:39;;;10904:15;10912:6;10904:7;:15::i;:::-;10880:63;;;;-1:-1:-1;;;;;;10923:20:0;;;;10880:63;10858:115;;;;-1:-1:-1;;;10858:115:0;;;;;;;:::i;:::-;10985:13;;;11035:92;;;;11060:8;11035:92;:::i;:::-;-1:-1:-1;11160:15:0;;;;:11;:15;;;;;;10984:143;;-1:-1:-1;10984:143:0;;-1:-1:-1;10984:143:0;-1:-1:-1;11160:15:0;;:24;;;:93;;-1:-1:-1;11222:30:0;;;;;;-1:-1:-1;;;;;;11205:48:0;;;;;;11160:93;11138:146;;;;-1:-1:-1;;;11138:146:0;;;;;;;:::i;:::-;11315:15;11303:9;:27;11295:42;;;;-1:-1:-1;;;11295:42:0;;;;;;;:::i;:::-;11348:15;;;;11366:4;11348:15;;;;;;;:22;;-1:-1:-1;;11348:22:0;;;;;;21251:92:::1;::::0;;::::1;21276:8:::0;21251:92:::1;:::i;:::-;21221:122;;;;;21355:13;21370:17:::0;21416:6:::1;21391:75;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21506:17:0;;::::1;;::::0;;;:10:::1;:17;::::0;;;;;;;21482:53;;21354:112;;-1:-1:-1;21354:112:0;;-1:-1:-1;21482:53:0::1;::::0;::::1;::::0;21354:112;;21506:17:::1;::::0;21354:112;;21482:53:::1;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;21546:17:0;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:29;;-1:-1:-1;;;;;;21546:29:0::1;::::0;;;::::1;;::::0;;-1:-1:-1;;;;;;;;;;;;;;21061:522:0:o;19690:107::-;-1:-1:-1;;;;;19776:13:0;19749:7;19776:13;;;:6;:13;;;;;;;19690:107::o;19805:423::-;19919:8;;19929:4;;10615:775;;;;;;;;;;;;;-1:-1:-1;;;10615:775:0;;;10768:19;10776:10;10768:7;:19::i;:::-;10760:34;;;;-1:-1:-1;;;10760:34:0;;;;;;;:::i;:::-;10805:14;10822:25;10832:8;;10842:4;;10822:9;:25::i;:::-;10805:42;-1:-1:-1;;;;;;10880:20:0;;10890:10;10880:20;;;;:39;;;10904:15;10912:6;10904:7;:15::i;:::-;10880:63;;;;-1:-1:-1;;;;;;10923:20:0;;;;10880:63;10858:115;;;;-1:-1:-1;;;10858:115:0;;;;;;;:::i;:::-;10985:13;;;11035:92;;;;11060:8;11035:92;:::i;:::-;-1:-1:-1;11160:15:0;;;;:11;:15;;;;;;10984:143;;-1:-1:-1;10984:143:0;;-1:-1:-1;10984:143:0;-1:-1:-1;11160:15:0;;:24;;;:93;;-1:-1:-1;11222:30:0;;;;;;-1:-1:-1;;;;;;11205:48:0;;;;;;11160:93;11138:146;;;;-1:-1:-1;;;11138:146:0;;;;;;;:::i;:::-;11315:15;11303:9;:27;11295:42;;;;-1:-1:-1;;;11295:42:0;;;;;;;:::i;:::-;11348:15;;;;11366:4;11348:15;;;;;;;:22;;-1:-1:-1;;11348:22:0;;;;;;19999:92:::1;::::0;;::::1;20024:8:::0;19999:92:::1;:::i;:::-;19969:122;;;;;20103:13;20118::::0;20146:6:::1;20135:38;;;;;;;;;;;;:::i;:::-;20102:71;;;;20184:36;20207:5;20214;20184:22;:36::i;:::-;11381:1;;;19805:423:::0;;;;;;;;;;;;;:::o;8837:41::-;8874:4;8837:41;:::o;12681:276::-;12910:38;;12777:7;;12863:9;;12910:38;;12927:4;;12863:9;;12942:5;;;;12910:38;;;:::i;:::-;;;;;;;;;;;;;12900:49;;;;;;12893:56;;;12681:276;;;;;:::o;11707:363::-;11801:11;;;;11800:12;:57;;;;-1:-1:-1;11833:10:0;;-1:-1:-1;;;;;11833:24:0;;;11800:57;:102;;;;-1:-1:-1;11878:10:0;;;;-1:-1:-1;;;;;11878:24:0;;;11800:102;:147;;;;-1:-1:-1;11923:10:0;;;;-1:-1:-1;;;;;11923:24:0;;;11800:147;11778:199;;;;-1:-1:-1;;;11778:199:0;;;;;;;:::i;:::-;11988:45;;;;;;;;11998:10;;-1:-1:-1;;;;;11988:45:0;;;;;11998:10;12010;;;;11988:45;;;;;;12022:10;;;;11988:45;;;;;;;;;;-1:-1:-1;;11988:45:0;;:::i;:::-;-1:-1:-1;;12044:11:0;:18;;-1:-1:-1;;12044:18:0;12058:4;12044:18;;;11707:363::o;20236:635::-;20355:8;;20365:4;;10615:775;;;;;;;;;;;;;-1:-1:-1;;;10615:775:0;;;10768:19;10776:10;10768:7;:19::i;:::-;10760:34;;;;-1:-1:-1;;;10760:34:0;;;;;;;:::i;:::-;10805:14;10822:25;10832:8;;10842:4;;10822:9;:25::i;:::-;10805:42;-1:-1:-1;;;;;;10880:20:0;;10890:10;10880:20;;;;:39;;;10904:15;10912:6;10904:7;:15::i;:::-;10880:63;;;;-1:-1:-1;;;;;;10923:20:0;;;;10880:63;10858:115;;;;-1:-1:-1;;;10858:115:0;;;;;;;:::i;:::-;10985:13;;;11035:92;;;;11060:8;11035:92;:::i;:::-;-1:-1:-1;11160:15:0;;;;:11;:15;;;;;;10984:143;;-1:-1:-1;10984:143:0;;-1:-1:-1;10984:143:0;-1:-1:-1;11160:15:0;;:24;;;:93;;-1:-1:-1;11222:30:0;;;;;;-1:-1:-1;;;;;;11205:48:0;;;;;;11160:93;11138:146;;;;-1:-1:-1;;;11138:146:0;;;;;;;:::i;:::-;11315:15;11303:9;:27;11295:42;;;;-1:-1:-1;;;11295:42:0;;;;;;;:::i;:::-;11348:15;;;;11366:4;11348:15;;;;;;;:22;;-1:-1:-1;;11348:22:0;;;;;;20440:92:::1;::::0;;::::1;20465:8:::0;20440:92:::1;:::i;:::-;20410:122;;;;;20544:24;20570::::0;20623:6:::1;20598:79;;;;;;;;;;;;:::i;:::-;20543:134;;;;20714:7;:14;20696:7;:14;:32;20688:47;;;;-1:-1:-1::0;;;20688:47:0::1;;;;;;;:::i;:::-;20751:9;20746:118;20770:7;:14;20766:1;:18;20746:118;;;20806:46;20829:7;20837:1;20829:10;;;;;;;;;;;;;;20841:7;20849:1;20841:10;;;;;;;;;;;;;;20806:22;:46::i;:::-;20786:3;;20746:118;;;;11381:1;;;20236:635:::0;;;;;;;;;;;;;:::o;12078:595::-;12188:7;12274:9;12188:7;;;12338:80;;;;12363:4;12338:80;:::i;:::-;12304:114;;;;;;12449:216;12477:113;12549:4;12555:7;12564:5;;12532:38;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12522:49;;;;;;12477:22;:113::i;:::-;12609:1;12629;12649;12449:216;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12449:216:0;;-1:-1:-1;;12449:216:0;;;12078:595;-1:-1:-1;;;;;;;;;;12078:595:0:o;10353:43::-;;;;;;;;;;;;;;;:::o;13262:668::-;13377:8;;13387:4;;10615:775;;;;;;;;;;;;;-1:-1:-1;;;10615:775:0;;;10768:19;10776:10;10768:7;:19::i;:::-;10760:34;;;;-1:-1:-1;;;10760:34:0;;;;;;;:::i;:::-;10805:14;10822:25;10832:8;;10842:4;;10822:9;:25::i;:::-;10805:42;-1:-1:-1;;;;;;10880:20:0;;10890:10;10880:20;;;;:39;;;10904:15;10912:6;10904:7;:15::i;:::-;10880:63;;;;-1:-1:-1;;;;;;10923:20:0;;;;10880:63;10858:115;;;;-1:-1:-1;;;10858:115:0;;;;;;;:::i;:::-;10985:13;;;11035:92;;;;11060:8;11035:92;:::i;:::-;-1:-1:-1;11160:15:0;;;;:11;:15;;;;;;10984:143;;-1:-1:-1;10984:143:0;;-1:-1:-1;10984:143:0;-1:-1:-1;11160:15:0;;:24;;;:93;;-1:-1:-1;11222:30:0;;;;;;-1:-1:-1;;;;;;11205:48:0;;;;;;11160:93;11138:146;;;;-1:-1:-1;;;11138:146:0;;;;;;;:::i;:::-;11315:15;11303:9;:27;11295:42;;;;-1:-1:-1;;;11295:42:0;;;;;;;:::i;:::-;11348:15;;;;11366:4;11348:15;;;;;;;:22;;-1:-1:-1;;11348:22:0;;;;;;13460:92:::1;::::0;;::::1;13485:8:::0;13460:92:::1;:::i;:::-;13430:122;;;;;13563:16;13593:6;13582:29;;;;;;;;;;;;:::i;:::-;13563:48:::0;-1:-1:-1;13622:13:0::1;::::0;13646:143:::1;13670:6;:13:::0;13666:17;::::1;13646:143;;;13722:10;-1:-1:-1::0;;;;;13709:23:0::1;:6;13716:1;13709:9;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;13709:9:0::1;:23;13705:73;;;13761:1;13753:9;;13705:73;13685:3;;13646:143;;;;13799:16;13818:6:::0;13825:5:::1;13818:13;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;13842;;-1:-1:-1;;;;;13818:13:0;;::::1;::::0;-1:-1:-1;13858:8:0;;13818:13;13849:5;;13842:13;::::1;;;;;;::::0;;;::::1;::::0;;::::1;:24:::0;;-1:-1:-1;;;;;;13842:24:0::1;-1:-1:-1::0;;;;;13842:24:0;;::::1;;::::0;;13882:40:::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;11381:1;;;;13262:668:::0;;;;;;;;;;;;;:::o;18381:1301::-;-1:-1:-1;;;;;18691:14:0;;18491:7;18691:14;;;:6;:14;;;;;;18491:7;;;;;;;;;;;;18691:19;18687:519;;-1:-1:-1;;;;;;18741:14:0;;;;;;:6;:14;;;;;;18687:519;;;-1:-1:-1;;;;;18792:18:0;;;18822:1;18792:18;;;:10;:18;;;;;;;:32;18788:364;;-1:-1:-1;;;;;19049:18:0;;;;;;;:10;:18;;;;;;;;;;19027:59;;-1:-1:-1;;;19027:59:0;;;;19049:18;;;19027:57;;:59;;;;;;;;;;;;19049:18;19027:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18845:241;;-1:-1:-1;18845:241:0;;-1:-1:-1;18845:241:0;-1:-1:-1;18845:241:0;-1:-1:-1;18845:241:0;-1:-1:-1;18788:364:0;;;19135:1;19127:9;;18788:364;-1:-1:-1;19188:5:0;18687:519;19216:22;19241:2;19216:27;;19254:20;19292:6;19254:45;;19310:20;19341:5;-1:-1:-1;;;;;19341:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19333:25;;19310:48;;19391:12;19373:14;:30;19369:306;;;19427:11;19420:18;;;;;;;;;;;;;19369:306;19477:12;19460:14;:29;19456:219;;;19513:55;19534:32;:14;19553:12;19534:18;:32::i;:::-;19513:11;;19529:2;:38;19513:15;:55::i;:::-;19506:62;;;;;;;;;;;;;19456:219;19608:55;19629:32;:12;19646:14;19629:16;:32::i;:::-;19608:11;;19624:2;:38;19608:15;:55::i;20879:174::-;-1:-1:-1;;;;;20985:13:0;;;;;;:6;:13;;;;;;;;20966:47;;;;;;20978:5;;20985:13;21000:5;;;;20966:47;:::i;:::-;;;;;;;;-1:-1:-1;;;;;21024:13:0;;;;;;;:6;:13;;;;;:21;20879:174::o;12965:250::-;13061:7;13187:4;13134:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;13106:101;;;;;;13086:121;;12965:250;;;:::o;4868:130::-;4926:7;4949:43;4953:1;4956;4949:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4942:50;4868:130;-1:-1:-1;;;4868:130:0:o;5682:431::-;5740:7;5969:6;5965:37;;-1:-1:-1;5993:1:0;5986:8;;5965:37;6022:5;;;6026:1;6022;:5;:1;6042:5;;;;;:10;6034:56;;;;-1:-1:-1;;;6034:56:0;;;;;;;:::i;6557:126::-;6615:7;6638:39;6642:1;6645;6638:39;;;;;;;;;;;;;;;;;:3;:39::i;5273:178::-;5359:7;5391:12;5383:6;;;;5375:29;;;;-1:-1:-1;;;5375:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;5423:5:0;;;5273:178::o;7147:323::-;7233:7;7327:12;7320:5;7312:28;;;;-1:-1:-1;;;7312:28:0;;;;;;;;:::i;:::-;;7347:9;7363:1;7359;:5;;;;;;;7147:323;-1:-1:-1;;;;;7147:323:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:702:1;;138:3;131:4;123:6;119:17;115:27;105:2;;160:5;153;146:20;105:2;193:6;187:13;219:4;243:65;258:49;304:2;258:49;:::i;:::-;243:65;:::i;:::-;342:15;;;373:12;;;;405:15;;;451:11;;;439:24;;435:33;;432:42;-1:-1:-1;429:2:1;;;491:5;484;477:20;429:2;517:5;531:156;545:2;542:1;539:9;531:156;;;602:10;;590:23;;633:12;;;;665;;;;563:1;556:9;531:156;;;-1:-1:-1;705:5:1;;95:621;-1:-1:-1;;;;;;;95:621:1:o;721:377::-;;;838:3;831:4;823:6;819:17;815:27;805:2;;863:8;853;846:26;805:2;-1:-1:-1;893:20:1;;-1:-1:-1;;;;;925:30:1;;922:2;;;975:8;965;958:26;922:2;1019:4;1011:6;1007:17;995:29;;1071:3;1064:4;1055:6;1047;1043:19;1039:30;1036:39;1033:2;;;1088:1;1085;1078:12;1033:2;795:303;;;;;:::o;1103:181::-;1183:13;;1236:22;1225:34;;1215:45;;1205:2;;1274:1;1271;1264:12;1289:259;;1401:2;1389:9;1380:7;1376:23;1372:32;1369:2;;;1422:6;1414;1407:22;1369:2;1466:9;1453:23;1485:33;1512:5;1485:33;:::i;1553:271::-;;1684:2;1672:9;1663:7;1659:23;1655:32;1652:2;;;1705:6;1697;1690:22;1652:2;1742:9;1736:16;1761:33;1788:5;1761:33;:::i;1829:415::-;;;1985:2;1973:9;1964:7;1960:23;1956:32;1953:2;;;2006:6;1998;1991:22;1953:2;2043:9;2037:16;2062:33;2089:5;2062:33;:::i;:::-;2164:2;2149:18;;2143:25;2114:5;;-1:-1:-1;2177:35:1;2143:25;2177:35;:::i;:::-;2231:7;2221:17;;;1943:301;;;;;:::o;2249:332::-;;;2397:2;2385:9;2376:7;2372:23;2368:32;2365:2;;;2418:6;2410;2403:22;2365:2;2455:9;2449:16;2474:33;2501:5;2474:33;:::i;:::-;2571:2;2556:18;;;;2550:25;2526:5;;2550:25;;-1:-1:-1;;;2355:226:1:o;2586:897::-;;2721:2;2709:9;2700:7;2696:23;2692:32;2689:2;;;2742:6;2734;2727:22;2689:2;2796:7;2789:4;2778:9;2774:20;2770:34;2760:2;;2823:6;2815;2808:22;2760:2;2861;2855:9;2903:2;2895:6;2891:15;2972:6;2960:10;2957:22;-1:-1:-1;;;;;2924:10:1;2921:34;2918:62;2915:2;;;2983:9;2915:2;3010;3003:22;3045:6;3071:9;3110:2;3095:18;;3092:31;-1:-1:-1;3089:2:1;;;3141:6;3133;3126:22;3089:2;3168:6;3183:269;3197:4;3194:1;3191:11;3183:269;;;3270:3;3257:17;3287:33;3314:5;3287:33;:::i;:::-;3333:18;;3374:4;3398:12;;;;3430;;;;;3217:1;3210:9;3183:269;;;-1:-1:-1;3471:6:1;;2679:804;-1:-1:-1;;;;;2679:804:1:o;3488:1289::-;;;3678:2;3666:9;3657:7;3653:23;3649:32;3646:2;;;3699:6;3691;3684:22;3646:2;3737:9;3731:16;-1:-1:-1;;;;;3807:2:1;3799:6;3796:14;3793:2;;;3828:6;3820;3813:22;3793:2;3871:6;3860:9;3856:22;3846:32;;3916:7;3909:4;3905:2;3901:13;3897:27;3887:2;;3943:6;3935;3928:22;3887:2;3977;3971:9;3999:4;4023:65;4038:49;4084:2;4038:49;:::i;4023:65::-;4122:15;;;4153:12;;;;4185:11;;;4223;;;4215:20;;4211:29;;4208:42;-1:-1:-1;4205:2:1;;;4268:6;4260;4253:22;4205:2;4295:6;4286:15;;4310:233;4324:2;4321:1;4318:9;4310:233;;;4388:3;4382:10;4405:33;4432:5;4405:33;:::i;:::-;4451:18;;4342:1;4335:9;;;;;4489:12;;;;4521;;4310:233;;;-1:-1:-1;4598:18:1;;;4592:25;4562:5;;-1:-1:-1;4592:25:1;;-1:-1:-1;;;4629:16:1;;;4626:2;;;4663:6;4655;4648:22;4626:2;;4691:80;4763:7;4752:8;4741:9;4737:24;4691:80;:::i;:::-;4681:90;;;3636:1141;;;;;:::o;4782:1119::-;;;;;4953:3;4941:9;4932:7;4928:23;4924:33;4921:2;;;4975:6;4967;4960:22;4921:2;5006:23;;-1:-1:-1;;;;;;5058:32:1;;5048:43;;5038:2;;5110:6;5102;5095:22;5038:2;5138:5;-1:-1:-1;5162:2:1;5196:18;;;5183:32;;-1:-1:-1;5262:2:1;5247:18;;5234:32;;-1:-1:-1;5317:2:1;5302:18;;5289:32;-1:-1:-1;;;;;5370:14:1;;;5367:2;;;5402:6;5394;5387:22;5367:2;5445:6;5434:9;5430:22;5420:32;;5490:7;5483:4;5479:2;5475:13;5471:27;5461:2;;5517:6;5509;5502:22;5461:2;5558;5545:16;5580:2;5576;5573:10;5570:2;;;5586:9;5570:2;5619:52;5661:2;5642:13;;-1:-1:-1;;5638:27:1;5634:36;;5619:52;:::i;:::-;5606:65;;5694:2;5687:5;5680:17;5734:7;5729:2;5724;5720;5716:11;5712:20;5709:33;5706:2;;;5760:6;5752;5745:22;5706:2;5820;5815;5811;5807:11;5802:2;5795:5;5791:14;5778:45;5843:14;;5839:23;;;5832:39;;;;4911:990;;;;-1:-1:-1;4911:990:1;;-1:-1:-1;;4911:990:1:o;5906:431::-;;;6037:2;6025:9;6016:7;6012:23;6008:32;6005:2;;;6058:6;6050;6043:22;6005:2;6103:9;6090:23;-1:-1:-1;;;;;6128:6:1;6125:30;6122:2;;;6173:6;6165;6158:22;6122:2;6217:60;6269:7;6260:6;6249:9;6245:22;6217:60;:::i;:::-;6296:8;;6191:86;;-1:-1:-1;5995:342:1;-1:-1:-1;;;;5995:342:1:o;6342:751::-;;;;;6509:2;6497:9;6488:7;6484:23;6480:32;6477:2;;;6530:6;6522;6515:22;6477:2;6575:9;6562:23;-1:-1:-1;;;;;6645:2:1;6637:6;6634:14;6631:2;;;6666:6;6658;6651:22;6631:2;6710:60;6762:7;6753:6;6742:9;6738:22;6710:60;:::i;:::-;6789:8;;-1:-1:-1;6684:86:1;-1:-1:-1;6877:2:1;6862:18;;6849:32;;-1:-1:-1;6893:16:1;;;6890:2;;;6927:6;6919;6912:22;6890:2;;6971:62;7025:7;7014:8;7003:9;6999:24;6971:62;:::i;:::-;6467:626;;;;-1:-1:-1;7052:8:1;-1:-1:-1;;;;6467:626:1:o;7098:190::-;;7210:2;7198:9;7189:7;7185:23;7181:32;7178:2;;;7231:6;7223;7216:22;7178:2;-1:-1:-1;7259:23:1;;7168:120;-1:-1:-1;7168:120:1:o;7293:487::-;;;;;;7481:3;7469:9;7460:7;7456:23;7452:33;7449:2;;;7503:6;7495;7488:22;7449:2;7531:41;7562:9;7531:41;:::i;:::-;7521:51;;7612:2;7601:9;7597:18;7591:25;7581:35;;7656:2;7645:9;7641:18;7635:25;7625:35;;7700:2;7689:9;7685:18;7679:25;7669:35;;7723:51;7769:3;7758:9;7754:19;7723:51;:::i;:::-;7713:61;;7439:341;;;;;;;;:::o;7785:259::-;;7906:2;7894:9;7885:7;7881:23;7877:32;7874:2;;;7927:6;7919;7912:22;7874:2;7964:9;7958:16;7983:31;8008:5;7983:31;:::i;8049:391::-;;;;8193:2;8181:9;8172:7;8168:23;8164:32;8161:2;;;8214:6;8206;8199:22;8161:2;8258:9;8245:23;8277:31;8302:5;8277:31;:::i;:::-;8327:5;8379:2;8364:18;;8351:32;;-1:-1:-1;8430:2:1;8415:18;;;8402:32;;8151:289;-1:-1:-1;;;8151:289:1:o;8445:480::-;;8716:26;8712:31;8703:6;8699:2;8695:15;8691:53;8686:3;8679:66;8775:6;8770:2;8765:3;8761:12;8754:28;8826:6;8818;8813:2;8808:3;8804:12;8791:42;8856:16;;8874:2;8852:25;8886:15;;;8852:25;8669:256;-1:-1:-1;;;8669:256:1:o;8930:380::-;9172:66;9160:79;;9264:2;9255:12;;9248:28;;;;9301:2;9292:12;;9150:160::o;9315:203::-;-1:-1:-1;;;;;9479:32:1;;;;9461:51;;9449:2;9434:18;;9416:102::o;9523:384::-;-1:-1:-1;;;;;9781:15:1;;;9763:34;;9833:15;;;9828:2;9813:18;;9806:43;9885:15;;;9880:2;9865:18;;9858:43;9713:2;9698:18;;9680:227::o;9912:417::-;-1:-1:-1;;;;;10161:32:1;;;;10143:51;;10225:2;10210:18;;10203:34;;;;10268:2;10253:18;;10246:34;10311:2;10296:18;;10289:34;10130:3;10115:19;;10097:232::o;10334:187::-;10499:14;;10492:22;10474:41;;10462:2;10447:18;;10429:92::o;10526:177::-;10672:25;;;10660:2;10645:18;;10627:76::o;10708:398::-;10935:25;;;11008:4;10996:17;;;;10991:2;10976:18;;10969:45;11045:2;11030:18;;11023:34;11088:2;11073:18;;11066:34;10922:3;10907:19;;10889:217::o;11111:603::-;;11252:2;11281;11270:9;11263:21;11313:6;11307:13;11356:6;11351:2;11340:9;11336:18;11329:34;11381:4;11394:140;11408:6;11405:1;11402:13;11394:140;;;11503:14;;;11499:23;;11493:30;11469:17;;;11488:2;11465:26;11458:66;11423:10;;11394:140;;;11552:6;11549:1;11546:13;11543:2;;;11622:4;11617:2;11608:6;11597:9;11593:22;11589:31;11582:45;11543:2;-1:-1:-1;11698:2:1;11677:15;-1:-1:-1;;11673:29:1;11658:45;;;;11705:2;11654:54;;11232:482;-1:-1:-1;;;11232:482:1:o;11719:325::-;11921:2;11903:21;;;11960:1;11940:18;;;11933:29;-1:-1:-1;;;11993:2:1;11978:18;;11971:32;12035:2;12020:18;;11893:151::o;12049:325::-;12251:2;12233:21;;;12290:1;12270:18;;;12263:29;-1:-1:-1;;;12323:2:1;12308:18;;12301:32;12365:2;12350:18;;12223:151::o;12379:325::-;12581:2;12563:21;;;12620:1;12600:18;;;12593:29;-1:-1:-1;;;12653:2:1;12638:18;;12631:32;12695:2;12680:18;;12553:151::o;12709:325::-;12911:2;12893:21;;;12950:1;12930:18;;;12923:29;-1:-1:-1;;;12983:2:1;12968:18;;12961:32;13025:2;13010:18;;12883:151::o;13039:397::-;13241:2;13223:21;;;13280:2;13260:18;;;13253:30;13319:34;13314:2;13299:18;;13292:62;-1:-1:-1;;;13385:2:1;13370:18;;13363:31;13426:3;13411:19;;13213:223::o;13441:325::-;13643:2;13625:21;;;13682:1;13662:18;;;13655:29;-1:-1:-1;;;13715:2:1;13700:18;;13693:32;13757:2;13742:18;;13615:151::o;13771:326::-;13973:2;13955:21;;;14012:1;13992:18;;;13985:29;-1:-1:-1;;;14045:2:1;14030:18;;14023:33;14088:2;14073:18;;13945:152::o;14284:242::-;14354:2;14348:9;14384:17;;;-1:-1:-1;;;;;14416:34:1;;14452:22;;;14413:62;14410:2;;;14478:9;14410:2;14505;14498:22;14328:198;;-1:-1:-1;14328:198:1:o;14531:183::-;;-1:-1:-1;;;;;14622:6:1;14619:30;14616:2;;;14652:9;14616:2;-1:-1:-1;14703:4:1;14684:17;;;14680:28;;14606:108::o;14719:133::-;-1:-1:-1;;;;;14796:31:1;;14786:42;;14776:2;;14842:1;14839;14832:12;14776:2;14766:86;:::o;14857:116::-;14943:4;14936:5;14932:16;14925:5;14922:27;14912:2;;14963:1;14960;14953:12
Metadata Hash
c3f668a455fc3a249371830b2efa8f8063ca9d6752e38a50802f94634dfcd5c3
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.