Contract Overview
Balance:
0 CRO
CRO Value:
$0.00
[ Download CSV Export ]
Contract Name:
BUCK
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-05-29 */ // SPDX-License-Identifier: MIT pragma solidity ^0.7.0; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } pragma solidity ^0.7.0; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } pragma solidity ^0.7.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.7.0; library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity ^0.7.0; contract ERC20Custom is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowances; uint256 private _totalSupply; function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } function burnFrom(address account, uint256 amount) public virtual { uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "ERC20: burn amount exceeds allowance"); _approve(account, _msgSender(), decreasedAllowance); _burn(account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _burnFrom(address account, uint256 amount) internal virtual { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } pragma solidity ^0.7.0; contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _decimals = 18; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } pragma solidity 0.7.6; interface IBUCKPool { function toggleRecollateralize() external; function getRecollateralizePaused() external view returns (bool); function collatDollarBalance() external view returns (uint256); function getCollateralPrice() external view returns (uint256); function getMissingDecimals() external view returns(uint256); function sendExcessCollatToTreasury(uint256 _amount) external; } pragma solidity >=0.6.7; //CHAINLINK interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); 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 ); } pragma solidity >=0.6.7; //BAND interface IStdReference { /// A structure returned whenever someone requests for standard reference data. struct ReferenceData { uint256 rate; // base/quote exchange rate, multiplied by 1e18. uint256 lastUpdatedBase; // UNIX epoch of the last time when base price gets updated. uint256 lastUpdatedQuote; // UNIX epoch of the last time when quote price gets updated. } /// Returns the price data for the given base/quote pair. Revert if not available. function getReferenceData(string memory _base, string memory _quote) external view returns (ReferenceData memory); /// Similar to getReferenceData, but with multiple base/quote pairs at once. function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes) external view returns (ReferenceData[] memory); } pragma solidity 0.7.6; interface ITreasury { function getCollateralSupply() external view returns (uint); function withdraw(uint) external; } pragma solidity 0.7.6; interface V2Oracle { function assetToAsset(address, uint, address, uint32) external view returns (uint, uint); } pragma solidity 0.7.6; pragma experimental ABIEncoderV2; contract BUCK is ERC20Custom { using SafeMath for uint256; /* ========== STATE VARIABLES ========== */ enum PriceChoice { BUCK, HERD } AggregatorV3Interface private cro_usd_chainlink; IStdReference private cro_usd_band; uint8 private cro_usd_chainlink_decimals; V2Oracle public oracle; ITreasury public treasury; string public symbol; string public name; uint8 public constant decimals = 18; uint256 public oracleMode; uint256 public cro_usd_oracle; address public owner_address; address public timelock_address; // Governance timelock address address public controller_address; // Controller contract to dynamically adjust system parameters automatically address public herd_address; address public wcro_address; address public cro_usd_chainlink_address; address public cro_usd_band_address; uint256 public immutable genesis_supply; // This is to help with establishing the Uniswap pools, as they need liquidity // The addresses in this array are added by the oracle and these contracts are able to mint buck address[] public buck_pools_array; // Mapping is also used for faster verification mapping(address => bool) public buck_pools; // Constants for various precisions uint256 private constant PRICE_PRECISION = 1e6; uint256 private constant COLLATERAL_RATIO_PRECISION = 1e6; uint256 public global_collateral_ratio; // 6 decimals of precision, e.g. 924102 = 0.924102 uint256 public buck_step; // Amount to change the collateralization ratio by upon refreshCollateralRatio() uint256 public refresh_cooldown; // Seconds to wait before being able to run refreshCollateralRatio() again uint256 public price_target; // The price of BUCK at which the collateral ratio will respond to; this value is only used for the collateral ratio mechanism and not for minting and redeeming which are hardcoded at USD 1 uint256 public price_band; // The bound above and below the price target at which the refreshCollateralRatio() will not change the collateral ratio uint256 public twap_period; // The twap period in seconds bool public collateral_ratio_paused = false; /* ========== MODIFIERS ========== */ modifier onlyPools() { require(buck_pools[msg.sender] == true, "Only buck pools can call this function"); _; } modifier onlyByOwnerOrGovernance() { require(msg.sender == owner_address || msg.sender == timelock_address || msg.sender == controller_address, "You are not the owner, controller, or the governance timelock"); _; } modifier onlyByOwnerGovernanceOrPool() { require( msg.sender == owner_address || msg.sender == timelock_address || buck_pools[msg.sender] == true, "You are not the owner, the governance timelock, or a pool"); _; } /* ========== CONSTRUCTOR ========== */ constructor( string memory _name, string memory _symbol, uint256 _genesis_supply, address _wcro, address _oracle, address _treasury, address _cro_usd_band, address _timelock_address ) { name = _name; symbol = _symbol; genesis_supply = _genesis_supply; wcro_address = _wcro; oracle = V2Oracle(_oracle); oracleMode = 0; // Default to Twap cro_usd_oracle = 1; // Default to Band treasury = ITreasury(_treasury); timelock_address = _timelock_address; owner_address = msg.sender; _mint(owner_address, _genesis_supply); buck_step = 2500; // 6 decimals of precision, equal to 0.25% global_collateral_ratio = 1000000; // BUCK system starts off fully collateralized (6 decimals of precision) > 100% refresh_cooldown = 3600; // Refresh cooldown period is set to 1 hour (3600 seconds) at genesis price_target = 1000000; // Collateral ratio will adjust according to the USD 1 price target at genesis price_band = 5000; // Collateral ratio will not adjust if between USD 0.995 and USD 1.005 at genesis twap_period = 3600; // default 3600 seconds (1 hour) twap period // CRO/USD Price Feed cro_usd_band_address = _cro_usd_band; cro_usd_band = IStdReference(cro_usd_band_address); } /* ========== VIEWS ========== */ function getLatestPriceChainlink() internal view returns (int) { (,int price,,,) = cro_usd_chainlink.latestRoundData(); return price; } function getLatestPriceBand() internal view returns (uint256) { IStdReference.ReferenceData memory data = cro_usd_band.getReferenceData("CRO","USD"); return data.rate; } function getDecimals() internal view returns (uint8) { return cro_usd_chainlink.decimals(); } function effectiveCollateralRatio() public view returns (uint){ return globalCollateralValue().mul(1e6).div(totalSupply()); } // Choice = 'BUCK' or 'HERD' for now function oracle_price(PriceChoice choice) internal view returns (uint256) { require(address(oracle) != address(0), "Oracle address have not set yet"); require(herd_address != address(0), "HERD address have not set yet"); uint256 price_vs_cro; if (choice == PriceChoice.BUCK) { // How much BUCK if you put in PRICE_PRECISION WCRO (uint p0, uint p1) = oracle.assetToAsset(wcro_address, PRICE_PRECISION, address(this), uint32(twap_period)); if(oracleMode == 0){ price_vs_cro = p0; } else if(oracleMode == 1){ price_vs_cro = p1; } } else if (choice == PriceChoice.HERD) { // How much HERD if you put in PRICE_PRECISION WCRO (uint p0, uint p1) = oracle.assetToAsset(wcro_address, PRICE_PRECISION, herd_address, uint32(twap_period)); if(oracleMode == 0){ price_vs_cro = p0; } else if(oracleMode == 1){ price_vs_cro = p1; } } else revert("INVALID PRICE CHOICE. Needs to be either 0 (BUCK) or 1 (HERD)"); // Will be in 1e6 format return cro_usd_price().mul(PRICE_PRECISION).div(price_vs_cro); } function buck_price() public view returns (uint256) { return oracle_price(PriceChoice.BUCK); } function herd_price() public view returns (uint256) { return oracle_price(PriceChoice.HERD); } function cro_usd_price() public view returns (uint256) { uint256 croUsdPrice = 0; //chainlink if(cro_usd_oracle == 0) { croUsdPrice = uint256(getLatestPriceChainlink()).mul(PRICE_PRECISION).div(uint256(10) ** cro_usd_chainlink_decimals); } //band else if(cro_usd_oracle == 1) { croUsdPrice = uint256(getLatestPriceBand()).mul(PRICE_PRECISION).div(1e18); } return croUsdPrice; } // This is needed to avoid costly repeat calls to different getter functions // It is cheaper gas-wise to just dump everything and only use some of the info function buck_info() public view returns (uint256, uint256, uint256, uint256, uint256, uint256) { uint256 cro_usd_latest_price = 0; if(cro_usd_oracle == 0) { cro_usd_latest_price = uint256(getLatestPriceChainlink()).mul(PRICE_PRECISION).div(uint256(10) ** cro_usd_chainlink_decimals); } //band else if(cro_usd_oracle == 1) { cro_usd_latest_price = uint256(getLatestPriceBand()).mul(PRICE_PRECISION).div(1e18); } return ( oracle_price(PriceChoice.BUCK), // buck_price() oracle_price(PriceChoice.HERD), // herd_price() totalSupply(), // totalSupply() global_collateral_ratio, // global_collateral_ratio() globalCollateralValue(), // globalCollateralValue cro_usd_latest_price ); } // Iterate through all buck pools and calculate all value of collateral in all pools globally function globalCollateralValue() public view returns (uint256) { uint256 total_collateral_value_d18 = 0; for (uint i = 0; i < buck_pools_array.length; i++){ // Exclude null addresses if (buck_pools_array[i] != address(0)){ total_collateral_value_d18 = total_collateral_value_d18.add(IBUCKPool(buck_pools_array[i]).collatDollarBalance()); } } return total_collateral_value_d18; } /* ========== PUBLIC FUNCTIONS ========== */ // There needs to be a time interval that this can be called. Otherwise it can be called multiple times per expansion. uint256 public last_call_time; // Last time the refreshCollateralRatio function was called function refreshCollateralRatio() public { require(collateral_ratio_paused == false, "Collateral Ratio has been paused"); require(address(treasury) != address(0), "Treasury have not set yet"); uint256 buck_price_cur = buck_price(); require(block.timestamp - last_call_time >= refresh_cooldown, "Must wait for the refresh cooldown since last refresh"); // Step increments are 0.25% (upon genesis, changable by setBUCKStep()) if (buck_price_cur > price_target.add(price_band)) { //decrease collateral ratio if(global_collateral_ratio <= buck_step){ //if within a step of 0, go to 0 global_collateral_ratio = 0; } else { global_collateral_ratio = global_collateral_ratio.sub(buck_step); } } else if (buck_price_cur < price_target.sub(price_band)) { //increase collateral ratio if(global_collateral_ratio.add(buck_step) >= 1000000){ global_collateral_ratio = 1000000; // cap collateral ratio at 1.000000 } else { global_collateral_ratio = global_collateral_ratio.add(buck_step); } } last_call_time = block.timestamp; // Set the time of the last expansion // Target CR VS Effective CR if(global_collateral_ratio < effectiveCollateralRatio()){ // if collateral is excess and send it to treasury if(availableExcessCollatDV() > 0){ IBUCKPool(buck_pools_array[0]).sendExcessCollatToTreasury(availableExcessCollatDV()); } // Disable Recollaterize if(IBUCKPool(buck_pools_array[0]).getRecollateralizePaused() == false) { IBUCKPool(buck_pools_array[0]).toggleRecollateralize(); } } else{ // if collateral is insufficient then withdraw it from treasury to Pool uint256 recollat_possible = (global_collateral_ratio.mul(totalSupply()).sub(totalSupply().mul((effectiveCollateralRatio().add(1))))).div(1e6); uint256 treasuryCollateralBalance = treasury.getCollateralSupply(); if(treasuryCollateralBalance > 0){ if(treasuryCollateralBalance >= recollat_possible){ uint256 amount_to_recollat = recollat_possible.mul(1e6).div(IBUCKPool(buck_pools_array[0]).getCollateralPrice()); treasury.withdraw(amount_to_recollat.div(10 ** IBUCKPool(buck_pools_array[0]).getMissingDecimals())); } else{ // Enable Recollaterize if(IBUCKPool(buck_pools_array[0]).getRecollateralizePaused() == true) { IBUCKPool(buck_pools_array[0]).toggleRecollateralize(); } } } } } // Returns the value of excess collateral held in this Buck pool, compared to what is needed to maintain the global collateral ratio function availableExcessCollatDV() public view returns (uint256) { uint256 globalCollateralRatio = global_collateral_ratio; if (globalCollateralRatio > COLLATERAL_RATIO_PRECISION) globalCollateralRatio = COLLATERAL_RATIO_PRECISION; // Handles an overcollateralized contract with CR > 1 uint256 required_collat_dollar_value_d18 = (totalSupply().mul(globalCollateralRatio)).div(COLLATERAL_RATIO_PRECISION); // Calculates collateral needed to back each 1 BUCK with USD 1 of collateral at current collat ratio if (globalCollateralValue() > required_collat_dollar_value_d18) return globalCollateralValue().sub(required_collat_dollar_value_d18); else return 0; } /* ========== RESTRICTED FUNCTIONS ========== */ // Used by pools when user redeems function pool_burn_from(address b_address, uint256 b_amount) public onlyPools { super._burnFrom(b_address, b_amount); emit BUCKBurned(b_address, msg.sender, b_amount); } // This function is what other buck pools will call to mint new BUCK function pool_mint(address m_address, uint256 m_amount) public onlyPools { super._mint(m_address, m_amount); emit BUCKMinted(msg.sender, m_address, m_amount); } // Adds pool addresses supported, such as tether and busd, must be ERC20 function addPool(address pool_address) public onlyByOwnerOrGovernance { require(buck_pools[pool_address] == false, "address already exists"); buck_pools[pool_address] = true; buck_pools_array.push(pool_address); emit PoolAdded(buck_pools_array.length-1, pool_address); } // Change pool address on specific index function changePool(uint index, address new_pool_address) public onlyByOwnerOrGovernance { require(index < buck_pools_array.length, "index not found"); address oldPool = buck_pools_array[index]; require(buck_pools[oldPool] == true, "old address doesn't exist"); // Delete from the mapping delete buck_pools[oldPool]; // Update to new pool buck_pools[new_pool_address] = true; buck_pools_array[index] = new_pool_address; emit PoolChanged(index, oldPool, new_pool_address); } // Remove a pool function removePool(address pool_address) public onlyByOwnerOrGovernance { require(buck_pools[pool_address] == true, "address doesn't exist already"); // Delete from the mapping delete buck_pools[pool_address]; uint deletedIndex; // 'Delete' from the array by setting the address to 0x0 for (uint i = 0; i < buck_pools_array.length; i++){ if (buck_pools_array[i] == pool_address) { buck_pools_array[i] = address(0); // This will leave a null in the array and keep the indices the same deletedIndex = i; break; } } emit PoolRemoved(deletedIndex, pool_address); } function setOwner(address _owner_address) external onlyByOwnerOrGovernance { owner_address = _owner_address; } function setTreasury(address _treasury) public onlyByOwnerOrGovernance { treasury = ITreasury(_treasury); } function setAssetCroOracle(address _oracle) public onlyByOwnerOrGovernance{ oracle = V2Oracle(_oracle); } function setBUCKStep(uint256 _new_step) public onlyByOwnerOrGovernance { buck_step = _new_step; } function setPriceTarget(uint256 _new_price_target) public onlyByOwnerOrGovernance { price_target = _new_price_target; } function setRefreshCooldown(uint256 _new_cooldown) public onlyByOwnerOrGovernance { refresh_cooldown = _new_cooldown; } function setTwapPeriod(uint256 _new_twap_period) public onlyByOwnerOrGovernance { twap_period = _new_twap_period; } function setHERDAddress(address _herd_address) public onlyByOwnerOrGovernance { herd_address = _herd_address; } function setCroUsdChainlinkAddress(address _cro_usd_chainlink_address) public onlyByOwnerOrGovernance { cro_usd_chainlink_address = _cro_usd_chainlink_address; cro_usd_chainlink = AggregatorV3Interface(cro_usd_chainlink_address); cro_usd_chainlink_decimals = getDecimals(); } function setCroUsdBandAddress(address _cro_usd_band_address) public onlyByOwnerOrGovernance { cro_usd_band_address = _cro_usd_band_address; cro_usd_band = IStdReference(cro_usd_band_address); } function setTimelock(address new_timelock) external onlyByOwnerOrGovernance { timelock_address = new_timelock; } function setController(address _controller_address) external onlyByOwnerOrGovernance { controller_address = _controller_address; } function setPriceBand(uint256 _price_band) external onlyByOwnerOrGovernance { price_band = _price_band; } function setWCRO(address _wcro_address) public onlyByOwnerOrGovernance { wcro_address = _wcro_address; } function toggleCollateralRatio() public onlyByOwnerOrGovernance { collateral_ratio_paused = !collateral_ratio_paused; } function setOracleMode(uint256 _mode) public onlyByOwnerOrGovernance{ require(_mode < 2, "Choose between 0 or 1"); // Mode Number Rules // 0 = Twap // 1 = Spot oracleMode = _mode; } function setCroUsdOracleProtocol(uint256 _oracle) public onlyByOwnerOrGovernance{ require(_oracle < 2, "Choose between 0 or 1"); // 0 = Chainlink // 1 = Band cro_usd_oracle = _oracle; } /* ========== EVENTS ========== */ // Track BUCK burned event BUCKBurned(address indexed from, address indexed to, uint256 amount); // Track BUCK minted event BUCKMinted(address indexed from, address indexed to, uint256 amount); // Track Pool added event PoolAdded(uint index, address indexed pool); // Track Pool changed event PoolChanged(uint index, address indexed old_pool, address indexed new_pool); // Track Pool removed event PoolRemoved(uint index, address indexed pool); }
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_genesis_supply","type":"uint256"},{"internalType":"address","name":"_wcro","type":"address"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"address","name":"_cro_usd_band","type":"address"},{"internalType":"address","name":"_timelock_address","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BUCKBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BUCKMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"old_pool","type":"address"},{"indexed":true,"internalType":"address","name":"new_pool","type":"address"}],"name":"PoolChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"pool_address","type":"address"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"availableExcessCollatDV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buck_info","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"buck_pools","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"buck_pools_array","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buck_price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buck_step","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"new_pool_address","type":"address"}],"name":"changePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collateral_ratio_paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controller_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cro_usd_band_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cro_usd_chainlink_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cro_usd_oracle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cro_usd_price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"effectiveCollateralRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalCollateralValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"global_collateral_ratio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"herd_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"herd_price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"last_call_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract V2Oracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleMode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"b_address","type":"address"},{"internalType":"uint256","name":"b_amount","type":"uint256"}],"name":"pool_burn_from","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"m_address","type":"address"},{"internalType":"uint256","name":"m_amount","type":"uint256"}],"name":"pool_mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price_band","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price_target","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refreshCollateralRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"refresh_cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool_address","type":"address"}],"name":"removePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setAssetCroOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new_step","type":"uint256"}],"name":"setBUCKStep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller_address","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_cro_usd_band_address","type":"address"}],"name":"setCroUsdBandAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_cro_usd_chainlink_address","type":"address"}],"name":"setCroUsdChainlinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_oracle","type":"uint256"}],"name":"setCroUsdOracleProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_herd_address","type":"address"}],"name":"setHERDAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mode","type":"uint256"}],"name":"setOracleMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner_address","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price_band","type":"uint256"}],"name":"setPriceBand","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new_price_target","type":"uint256"}],"name":"setPriceTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new_cooldown","type":"uint256"}],"name":"setRefreshCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_timelock","type":"address"}],"name":"setTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new_twap_period","type":"uint256"}],"name":"setTwapPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wcro_address","type":"address"}],"name":"setWCRO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelock_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleCollateralRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"contract ITreasury","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"twap_period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wcro_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a0604052601a805460ff191690553480156200001b57600080fd5b5060405162003843380380620038438339810160408190526200003e91620003be565b8751620000539060089060208b01906200025a565b508651620000699060079060208a01906200025a565b506080869052600f80546001600160a01b038088166001600160a01b0319928316179092556005805487841690831617905560006009556001600a5560068054868416908316179055600c8054848416908316179055600b8054909116331790819055620000d99116876200013a565b506109c4601555620f42406014819055610e106016819055601791909155611388601855601955601180546001600160a01b03199081166001600160a01b039384161791829055600480549290931691161790555062000503945050505050565b6001600160a01b0382166200016c5760405162461bcd60e51b81526004016200016390620004c3565b60405180910390fd5b6200017a6000838362000226565b62000196816002546200022b60201b6200218b1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620001c99183906200218b6200022b821b17901c565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200021a908590620004fa565b60405180910390a35050565b505050565b600082820183811015620002535760405162461bcd60e51b815260040162000163906200048c565b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002925760008555620002dd565b82601f10620002ad57805160ff1916838001178555620002dd565b82800160010185558215620002dd579182015b82811115620002dd578251825591602001919060010190620002c0565b50620002eb929150620002ef565b5090565b5b80821115620002eb5760008155600101620002f0565b80516001600160a01b03811681146200031e57600080fd5b919050565b600082601f83011262000334578081fd5b81516001600160401b03808211156200034957fe5b6040516020601f8401601f19168201810183811183821017156200036957fe5b604052838252858401810187101562000380578485fd5b8492505b83831015620003a3578583018101518284018201529182019162000384565b83831115620003b457848185840101525b5095945050505050565b600080600080600080600080610100898b031215620003db578384fd5b88516001600160401b0380821115620003f2578586fd5b620004008c838d0162000323565b995060208b015191508082111562000416578586fd5b50620004258b828c0162000323565b975050604089015195506200043d60608a0162000306565b94506200044d60808a0162000306565b93506200045d60a08a0162000306565b92506200046d60c08a0162000306565b91506200047d60e08a0162000306565b90509295985092959890939650565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b6080516133256200051e600039806114bb52506133256000f3fe608060405234801561001057600080fd5b50600436106103db5760003560e01c806379cc67901161020a578063c03f7be311610125578063e87cd367116100b8578063f2f33cb111610087578063f2f33cb114610768578063f607f01914610770578063f61adab214610783578063f976c5461461078b578063ffd5b49514610793576103db565b8063e87cd36714610732578063eadf46cf14610745578063ee9253791461074d578063f0f4426014610755576103db565b8063d2d97b06116100f4578063d2d97b06146106fc578063d914cd4b14610704578063dc6663c714610717578063dd62ed3e1461071f576103db565b8063c03f7be3146106d1578063c478c9fc146106d9578063c5bef1a7146106e1578063d10b3ca8146106e9576103db565b8063a8a778ae1161019d578063b4f56b261161016c578063b4f56b261461069b578063bdacb303146106ae578063bef40ec8146106c1578063bf6e4fea146106c9576103db565b8063a8a778ae1461065a578063a9059cbb1461066d578063b08deba214610680578063b16e9fd414610688576103db565b806387a140c3116101d957806387a140c31461062457806392eefe9b1461062c57806395d89b411461063f578063a457c2d714610647576103db565b806379cc6790146105f95780637dc0d1d01461060c57806380edef8e14610614578063879e2e391461061c576103db565b806339509351116102fa57806351e238e31161028d5780636140133b1161025c5780636140133b146105c357806361d027b3146105d657806367feda3e146105de57806370a08231146105e6576103db565b806351e238e31461057b578063559457261461058357806359af9966146105965780635e657adf146105b0576103db565b80634013124a116102c95780634013124a14610545578063408ab10f1461054d57806342966c681461056057806350f2441114610573576103db565b806339509351146104f95780633af52d001461050c5780633b7d09461461051f5780633e8ddb8014610532576103db565b80632258750a116103725780632853fb10116103415780632853fb10146104cc5780632cb4f63e146104d45780632eb9771b146104dc578063313ce567146104e4576103db565b80632258750a1461048b57806323b872dd1461049357806327f004a1146104a657806328340186146104b9576103db565b806318160ddd116103ae57806318160ddd146104465780631a25da281461045b5780631c5df1e5146104705780632075d8a714610483576103db565b806305a6410a146103e057806306fdde03146103f5578063095ea7b31461041357806313af403514610433575b600080fd5b6103f36103ee3660046129f2565b6107a6565b005b6103fd610832565b60405161040a9190612c4a565b60405180910390f35b610426610421366004612a79565b6108c0565b60405161040a9190612c3f565b6103f36104413660046129f2565b6108de565b61044e610954565b60405161040a91906131f7565b61046361095b565b60405161040a9190612bfc565b6103f361047e366004612b17565b61096a565b61044e6109c3565b61044e6109c9565b6104266104a1366004612a3e565b6109cf565b6103f36104b4366004612b17565b610a56565b6103f36104c73660046129f2565b610acf565b61044e610b77565b61044e610b7d565b61044e610b83565b6104ec610b89565b60405161040a9190613228565b610426610507366004612a79565b610b8e565b61042661051a3660046129f2565b610bdc565b6103f361052d3660046129f2565b610bf1565b6103f36105403660046129f2565b610d73565b6103f3610de9565b6103f361055b366004612b17565b611449565b6103f361056e366004612b17565b6114a2565b61044e6114b3565b61044e6114b9565b6103f3610591366004612b17565b6114dd565b61059e611556565b60405161040a96959493929190613200565b6103f36105be366004612b17565b6115fa565b6103f36105d1366004612b17565b611653565b6104636116ac565b6104636116bb565b61044e6105f43660046129f2565b6116ca565b6103f3610607366004612a79565b6116e9565b610463611739565b610463611748565b610463611757565b610426611766565b6103f361063a3660046129f2565b61176f565b6103fd6117e5565b610426610655366004612a79565b611840565b6103f3610668366004612a79565b6118a8565b61042661067b366004612a79565b611935565b61044e611949565b6103f3610696366004612b47565b61194f565b6103f36106a9366004612a79565b611acf565b6103f36106bc3660046129f2565b611b50565b6103f3611bc6565b61044e611c2e565b61044e611c92565b610463611c98565b610463611ca7565b6103f36106f73660046129f2565b611cb6565b61044e611d2c565b6103f36107123660046129f2565b611e16565b610463611f4b565b61044e61072d366004612a0c565b611f5a565b610463610740366004612b17565b611f85565b61044e611faf565b61044e611fb5565b6103f36107633660046129f2565b611fd1565b61044e612047565b6103f361077e3660046129f2565b612053565b61044e6120c9565b61044e612126565b6103f36107a1366004612b17565b612132565b600b546001600160a01b03163314806107c95750600c546001600160a01b031633145b806107de5750600d546001600160a01b031633145b6108035760405162461bcd60e51b81526004016107fa90612e8a565b60405180910390fd5b601180546001600160a01b03199081166001600160a01b03938416179182905560048054929093169116179055565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108b85780601f1061088d576101008083540402835291602001916108b8565b820191906000526020600020905b81548152906001019060200180831161089b57829003601f168201915b505050505081565b60006108d46108cd6121b7565b84846121bb565b5060015b92915050565b600b546001600160a01b03163314806109015750600c546001600160a01b031633145b806109165750600d546001600160a01b031633145b6109325760405162461bcd60e51b81526004016107fa90612e8a565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6002545b90565b6011546001600160a01b031681565b600b546001600160a01b031633148061098d5750600c546001600160a01b031633145b806109a25750600d546001600160a01b031633145b6109be5760405162461bcd60e51b81526004016107fa90612e8a565b601655565b60095481565b601b5481565b60006109dc848484612262565b610a4c846109e86121b7565b610a478560405180606001604052806028815260200161327f602891396001600160a01b038a16600090815260016020526040812090610a266121b7565b6001600160a01b031681526020810191909152604001600020549190612377565b6121bb565b5060019392505050565b600b546001600160a01b0316331480610a795750600c546001600160a01b031633145b80610a8e5750600d546001600160a01b031633145b610aaa5760405162461bcd60e51b81526004016107fa90612e8a565b60028110610aca5760405162461bcd60e51b81526004016107fa90612e24565b600a55565b600b546001600160a01b0316331480610af25750600c546001600160a01b031633145b80610b075750600d546001600160a01b031633145b610b235760405162461bcd60e51b81526004016107fa90612e8a565b601080546001600160a01b038084166001600160a01b03199283161792839055600380549092169216919091179055610b5a6123a3565b600460146101000a81548160ff021916908360ff16021790555050565b60185481565b60175481565b60145481565b601281565b60006108d4610b9b6121b7565b84610a478560016000610bac6121b7565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061218b565b60136020526000908152604090205460ff1681565b600b546001600160a01b0316331480610c145750600c546001600160a01b031633145b80610c295750600d546001600160a01b031633145b610c455760405162461bcd60e51b81526004016107fa90612e8a565b6001600160a01b03811660009081526013602052604090205460ff161515600114610c825760405162461bcd60e51b81526004016107fa90612ded565b6001600160a01b0381166000908152601360205260408120805460ff19169055805b601254811015610d2d57826001600160a01b031660128281548110610cc557fe5b6000918252602090912001546001600160a01b03161415610d2557600060128281548110610cef57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550809150610d2d565b600101610ca4565b50816001600160a01b03167f18e9d3644c306f9be50ade92ee325ee173812431fa971a0b8d46f9eb7073960182604051610d6791906131f7565b60405180910390a25050565b600b546001600160a01b0316331480610d965750600c546001600160a01b031633145b80610dab5750600d546001600160a01b031633145b610dc75760405162461bcd60e51b81526004016107fa90612e8a565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b601a5460ff1615610e0c5760405162461bcd60e51b81526004016107fa9061315b565b6006546001600160a01b0316610e345760405162461bcd60e51b81526004016107fa90612e53565b6000610e3e612047565b9050601654601b5442031015610e665760405162461bcd60e51b81526004016107fa90613098565b601854601754610e759161218b565b811115610ea95760155460145411610e91576000601455610ea4565b601554601454610ea091612420565b6014555b610efe565b601854601754610eb891612420565b811015610efe57620f4240610eda60155460145461218b90919063ffffffff16565b10610eeb57620f4240601455610efe565b601554601454610efa9161218b565b6014555b42601b55610f0a611fb5565b60145410156110a9576000610f1d6120c9565b1115610fa2576012600081548110610f3157fe5b6000918252602090912001546001600160a01b031663ea17b98b610f536120c9565b6040518263ffffffff1660e01b8152600401610f6f91906131f7565b600060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b505050505b6012600081548110610fb057fe5b6000918252602091829020015460408051636192b39160e11b815290516001600160a01b039092169263c325672292600480840193829003018186803b158015610ff957600080fd5b505afa15801561100d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110319190612aa2565b6110a457601260008154811061104357fe5b6000918252602082200154604080516310b456bb60e21b815290516001600160a01b03909216926342d15aec9260048084019382900301818387803b15801561108b57600080fd5b505af115801561109f573d6000803e3d6000fd5b505050505b611446565b60006110f9620f42406110f36110d96110cb60016110c5611fb5565b9061218b565b6110d3610954565b90612462565b6110ed6110e4610954565b60145490612462565b90612420565b9061249c565b90506000600660009054906101000a90046001600160a01b03166001600160a01b031663b782035a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114b57600080fd5b505afa15801561115f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111839190612b2f565b905080156114435781811061133b57600061123360126000815481106111a557fe5b6000918252602091829020015460408051633dda0eef60e21b815290516001600160a01b039092169263f7683bbc92600480840193829003018186803b1580156111ee57600080fd5b505afa158015611202573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112269190612b2f565b6110f385620f4240612462565b600654601280549293506001600160a01b0390911691632e1a7d4d916112e79160009061125c57fe5b6000918252602091829020015460408051637d6fd13760e01b815290516001600160a01b0390921692637d6fd13792600480840193829003018186803b1580156112a557600080fd5b505afa1580156112b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112dd9190612b2f565b8490600a0a61249c565b6040518263ffffffff1660e01b815260040161130391906131f7565b600060405180830381600087803b15801561131d57600080fd5b505af1158015611331573d6000803e3d6000fd5b5050505050611443565b601260008154811061134957fe5b6000918252602091829020015460408051636192b39160e11b815290516001600160a01b039092169263c325672292600480840193829003018186803b15801561139257600080fd5b505afa1580156113a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ca9190612aa2565b1515600114156114435760126000815481106113e257fe5b6000918252602082200154604080516310b456bb60e21b815290516001600160a01b03909216926342d15aec9260048084019382900301818387803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b505050505b50505b50565b600b546001600160a01b031633148061146c5750600c546001600160a01b031633145b806114815750600d546001600160a01b031633145b61149d5760405162461bcd60e51b81526004016107fa90612e8a565b601755565b6114466114ad6121b7565b826124de565b60155481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b546001600160a01b03163314806115005750600c546001600160a01b031633145b806115155750600d546001600160a01b031633145b6115315760405162461bcd60e51b81526004016107fa90612e8a565b600281106115515760405162461bcd60e51b81526004016107fa90612e24565b600955565b6000806000806000806000600a54600014156115965760045461158f90600160a01b900460ff16600a0a6110f3620f42406110d36125b4565b90506115bf565b600a54600114156115bf576115bc670de0b6b3a76400006110f3620f42406110d3612648565b90505b6115c960006126cf565b6115d360016126cf565b6115db610954565b6014546115e6611d2c565b939b929a5090985096509094509092509050565b600b546001600160a01b031633148061161d5750600c546001600160a01b031633145b806116325750600d546001600160a01b031633145b61164e5760405162461bcd60e51b81526004016107fa90612e8a565b601955565b600b546001600160a01b03163314806116765750600c546001600160a01b031633145b8061168b5750600d546001600160a01b031633145b6116a75760405162461bcd60e51b81526004016107fa90612e8a565b601855565b6006546001600160a01b031681565b600d546001600160a01b031681565b6001600160a01b0381166000908152602081905260409020545b919050565b600061171b826040518060600160405280602481526020016132a7602491396117148661072d6121b7565b9190612377565b905061172f836117296121b7565b836121bb565b61144383836124de565b6005546001600160a01b031681565b600b546001600160a01b031681565b6010546001600160a01b031681565b601a5460ff1681565b600b546001600160a01b03163314806117925750600c546001600160a01b031633145b806117a75750600d546001600160a01b031633145b6117c35760405162461bcd60e51b81526004016107fa90612e8a565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108b85780601f1061088d576101008083540402835291602001916108b8565b60006108d461184d6121b7565b84610a47856040518060600160405280602581526020016132cb60259139600160006118776121b7565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612377565b3360009081526013602052604090205460ff1615156001146118dc5760405162461bcd60e51b81526004016107fa90612f28565b6118e6828261287e565b336001600160a01b0316826001600160a01b03167f949ce2429afe7d81b7cc5613973f218675b8b45bffecd5316f16dbdb0365f8cf8360405161192991906131f7565b60405180910390a35050565b60006108d46119426121b7565b8484612262565b600a5481565b600b546001600160a01b03163314806119725750600c546001600160a01b031633145b806119875750600d546001600160a01b031633145b6119a35760405162461bcd60e51b81526004016107fa90612e8a565b60125482106119c45760405162461bcd60e51b81526004016107fa90612f6e565b6000601283815481106119d357fe5b60009182526020808320909101546001600160a01b0316808352601390915260409091205490915060ff161515600114611a1f5760405162461bcd60e51b81526004016107fa9061301d565b6001600160a01b03808216600090815260136020526040808220805460ff1990811690915592851682529020805490911660011790556012805483919085908110611a6657fe5b600091825260209091200180546001600160a01b0319166001600160a01b03928316179055604051838216918316907ff1580dd2a3f4cd145bc898095c2ec5574500b176eeae1d9abba5fbb8c94e131290611ac29087906131f7565b60405180910390a3505050565b3360009081526013602052604090205460ff161515600114611b035760405162461bcd60e51b81526004016107fa90612f28565b611b0d82826128d6565b816001600160a01b0316336001600160a01b03167f53787c8037ce19635748f3c64c7a00563007fb9067090c4479b4d690ea9e85948360405161192991906131f7565b600b546001600160a01b0316331480611b735750600c546001600160a01b031633145b80611b885750600d546001600160a01b031633145b611ba45760405162461bcd60e51b81526004016107fa90612e8a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b0316331480611be95750600c546001600160a01b031633145b80611bfe5750600d546001600160a01b031633145b611c1a5760405162461bcd60e51b81526004016107fa90612e8a565b601a805460ff19811660ff90911615179055565b600a546000908190611c6457600454611c5d90600160a01b900460ff16600a0a6110f3620f42406110d36125b4565b9050611c8d565b600a5460011415611c8d57611c8a670de0b6b3a76400006110f3620f42406110d3612648565b90505b905090565b60165481565b600e546001600160a01b031681565b600f546001600160a01b031681565b600b546001600160a01b0316331480611cd95750600c546001600160a01b031633145b80611cee5750600d546001600160a01b031633145b611d0a5760405162461bcd60e51b81526004016107fa90612e8a565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600080805b601254811015611e105760006001600160a01b031660128281548110611d5357fe5b6000918252602090912001546001600160a01b031614611e0857611e0560128281548110611d7d57fe5b60009182526020918290200154604080516305ca132560e21b815290516001600160a01b03909216926317284c9492600480840193829003018186803b158015611dc657600080fd5b505afa158015611dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfe9190612b2f565b839061218b565b91505b600101611d31565b50905090565b600b546001600160a01b0316331480611e395750600c546001600160a01b031633145b80611e4e5750600d546001600160a01b031633145b611e6a5760405162461bcd60e51b81526004016107fa90612e8a565b6001600160a01b03811660009081526013602052604090205460ff1615611ea35760405162461bcd60e51b81526004016107fa90613190565b6001600160a01b038116600081815260136020526040808220805460ff19166001908117909155601280549182018155928390527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b03191684179055905490517f1f1f6396247a5ba59b7b1e094ec3a8e439d4dace0c5ac4fe3ecfde3e68e03a8a91611f409160001991909101906131f7565b60405180910390a250565b600c546001600160a01b031681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60128181548110611f9557600080fd5b6000918252602090912001546001600160a01b0316905081565b60195481565b6000611c8d611fc2610954565b6110f3620f42406110d3611d2c565b600b546001600160a01b0316331480611ff45750600c546001600160a01b031633145b806120095750600d546001600160a01b031633145b6120255760405162461bcd60e51b81526004016107fa90612e8a565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c8d60006126cf565b600b546001600160a01b03163314806120765750600c546001600160a01b031633145b8061208b5750600d546001600160a01b031633145b6120a75760405162461bcd60e51b81526004016107fa90612e8a565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b601454600090620f42408111156120e05750620f42405b60006120f5620f42406110f3846110d3610954565b905080612100611d2c565b111561211b57612112816110ed611d2c565b92505050610958565b600092505050610958565b6000611c8d60016126cf565b600b546001600160a01b03163314806121555750600c546001600160a01b031633145b8061216a5750600d546001600160a01b031633145b6121865760405162461bcd60e51b81526004016107fa90612e8a565b601555565b6000828201838110156121b05760405162461bcd60e51b81526004016107fa90612db6565b9392505050565b3390565b6001600160a01b0383166121e15760405162461bcd60e51b81526004016107fa90613054565b6001600160a01b0382166122075760405162461bcd60e51b81526004016107fa90612d17565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611ac29085906131f7565b6001600160a01b0383166122885760405162461bcd60e51b81526004016107fa90612fd8565b6001600160a01b0382166122ae5760405162461bcd60e51b81526004016107fa90612c9d565b6122b9838383611443565b6122f681604051806060016040528060268152602001613259602691396001600160a01b0386166000908152602081905260409020549190612377565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612325908261218b565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ac29085906131f7565b6000818484111561239b5760405162461bcd60e51b81526004016107fa9190612c4a565b505050900390565b6003546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b1580156123e857600080fd5b505afa1580156123fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8d9190612bdb565b60006121b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612377565b600082612471575060006108d8565b8282028284828161247e57fe5b04146121b05760405162461bcd60e51b81526004016107fa90612ee7565b60006121b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061298a565b6001600160a01b0382166125045760405162461bcd60e51b81526004016107fa90612f97565b61251082600083611443565b61254d81604051806060016040528060228152602001613237602291396001600160a01b0385166000908152602081905260409020549190612377565b6001600160a01b0383166000908152602081905260409020556002546125739082612420565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119299085906131f7565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561260557600080fd5b505afa158015612619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263d9190612b8c565b509194505050505090565b6004805460405163195556f360e21b815260009283926001600160a01b0316916365555bcc9161267891016130ed565b60606040518083038186803b15801561269057600080fd5b505afa1580156126a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c89190612ac2565b5191505090565b6005546000906001600160a01b03166126fa5760405162461bcd60e51b81526004016107fa90612ce0565b600e546001600160a01b03166127225760405162461bcd60e51b81526004016107fa90613124565b60008083600181111561273157fe5b14156127f757600554600f546019546040516358fac00360e01b815260009384936001600160a01b03918216936358fac0039361277b9390921691620f4240913091600401612c10565b604080518083038186803b15801561279257600080fd5b505afa1580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190612b69565b91509150600954600014156127e1578192506127f0565b600954600114156127f0578092505b505061286b565b600183600181111561280557fe5b141561285357600554600f54600e546019546040516358fac00360e01b815260009485946001600160a01b03918216946358fac0039461277b9492841693620f424093921691600401612c10565b60405162461bcd60e51b81526004016107fa90612d59565b6121b0816110f3620f42406110d3611c2e565b61288882826124de565b6128d2826128946121b7565b610a47846040518060600160405280602481526020016132a7602491396001600160a01b038816600090815260016020526040812090610a266121b7565b5050565b6001600160a01b0382166128fc5760405162461bcd60e51b81526004016107fa906131c0565b61290860008383611443565b600254612915908261218b565b6002556001600160a01b03821660009081526020819052604090205461293b908261218b565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119299085906131f7565b600081836129ab5760405162461bcd60e51b81526004016107fa9190612c4a565b5060008385816129b757fe5b0495945050505050565b80356001600160a01b03811681146116e457600080fd5b805169ffffffffffffffffffff811681146116e457600080fd5b600060208284031215612a03578081fd5b6121b0826129c1565b60008060408385031215612a1e578081fd5b612a27836129c1565b9150612a35602084016129c1565b90509250929050565b600080600060608486031215612a52578081fd5b612a5b846129c1565b9250612a69602085016129c1565b9150604084013590509250925092565b60008060408385031215612a8b578182fd5b612a94836129c1565b946020939093013593505050565b600060208284031215612ab3578081fd5b815180151581146121b0578182fd5b600060608284031215612ad3578081fd5b6040516060810181811067ffffffffffffffff82111715612af057fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215612b28578081fd5b5035919050565b600060208284031215612b40578081fd5b5051919050565b60008060408385031215612b59578182fd5b82359150612a35602084016129c1565b60008060408385031215612b7b578182fd5b505080516020909101519092909150565b600080600080600060a08688031215612ba3578081fd5b612bac866129d8565b9450602086015193506040860151925060608601519150612bcf608087016129d8565b90509295509295909350565b600060208284031215612bec578081fd5b815160ff811681146121b0578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03948516815260208101939093529216604082015263ffffffff909116606082015260800190565b901515815260200190565b6000602080835283518082850152825b81811015612c7657858101830151858201604001528201612c5a565b81811115612c875783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252601f908201527f4f7261636c6520616464726573732068617665206e6f74207365742079657400604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252603d908201527f494e56414c49442050524943452043484f4943452e204e6565647320746f206260408201527f6520656974686572203020284255434b29206f72203120284845524429000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601d908201527f6164647265737320646f65736e277420657869737420616c7265616479000000604082015260600190565b60208082526015908201527443686f6f7365206265747765656e2030206f72203160581b604082015260600190565b60208082526019908201527f54726561737572792068617665206e6f74207365742079657400000000000000604082015260600190565b6020808252603d908201527f596f7520617265206e6f7420746865206f776e65722c20636f6e74726f6c6c6560408201527f722c206f722074686520676f7665726e616e63652074696d656c6f636b000000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526026908201527f4f6e6c79206275636b20706f6f6c732063616e2063616c6c20746869732066756040820152653731ba34b7b760d11b606082015260800190565b6020808252600f908201526e1a5b99195e081b9bdd08199bdd5b99608a1b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526019908201527f6f6c64206164647265737320646f65736e277420657869737400000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526035908201527f4d757374207761697420666f7220746865207265667265736820636f6f6c646f6040820152740eedc40e6d2dcc6ca40d8c2e6e840e4cacce4cae6d605b1b606082015260800190565b604080825260039082018190526243524f60e81b6060830152608060208301819052820152621554d160ea1b60a082015260c00190565b6020808252601d908201527f4845524420616464726573732068617665206e6f742073657420796574000000604082015260600190565b6020808252818101527f436f6c6c61746572616c20526174696f20686173206265656e20706175736564604082015260600190565b6020808252601690820152756164647265737320616c72656164792065786973747360501b604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60ff9190911681526020019056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064f28d8b44118c2f4ab924b7aad045ddbef5a4915154dd12fe40866583dcdd3a64736f6c634300070600330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000001a784379d99db420000000000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000da7a001b254cd22e46d3eab04d937489c93174c30000000000000000000000009c3d2eb5647c8fda7b27ef13b4d815c3ae9951c800000000000000000000000000000000000000000000000000000000000000044275636b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044255434b00000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000001a784379d99db420000000000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000da7a001b254cd22e46d3eab04d937489c93174c30000000000000000000000009c3d2eb5647c8fda7b27ef13b4d815c3ae9951c800000000000000000000000000000000000000000000000000000000000000044275636b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044255434b00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Buck
Arg [1] : _symbol (string): BUCK
Arg [2] : _genesis_supply (uint256): 2000000000000000000000000
Arg [3] : _wcro (address): 0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23
Arg [4] : _oracle (address): 0x0000000000000000000000000000000000000000
Arg [5] : _treasury (address): 0x0000000000000000000000000000000000000000
Arg [6] : _cro_usd_band (address): 0xda7a001b254cd22e46d3eab04d937489c93174c3
Arg [7] : _timelock_address (address): 0x9c3d2eb5647c8fda7b27ef13b4d815c3ae9951c8
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 00000000000000000000000000000000000000000001a784379d99db42000000
Arg [3] : 0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 000000000000000000000000da7a001b254cd22e46d3eab04d937489c93174c3
Arg [7] : 0000000000000000000000009c3d2eb5647c8fda7b27ef13b4d815c3ae9951c8
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 4275636b00000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 4255434b00000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
17232:18652:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33949:216;;;;;;:::i;:::-;;:::i;:::-;;17619:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7045:169;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;32579:124::-;;;;;;:::i;:::-;;:::i;6468:100::-;;;:::i;:::-;;;;;;;:::i;18090:35::-;;;:::i;:::-;;;;;;;:::i;33229:130::-;;;;;;:::i;:::-;;:::i;17686:25::-;;;:::i;26341:29::-;;;:::i;7222:321::-;;;;;;:::i;:::-;;:::i;35096:226::-;;;;;;:::i;:::-;;:::i;33634:307::-;;;;;;:::i;:::-;;:::i;19217:25::-;;;:::i;18993:27::-;;;:::i;18672:38::-;;;:::i;17644:35::-;;;:::i;:::-;;;;;;;:::i;7551:218::-;;;;;;:::i;:::-;;:::i;18456:42::-;;;;;;:::i;:::-;;:::i;31823:748::-;;;;;;:::i;:::-;;:::i;34586:118::-;;;;;;:::i;:::-;;:::i;26437:2882::-;;;:::i;33088:133::-;;;;;;:::i;:::-;;:::i;8987:91::-;;;;;;:::i;:::-;;:::i;18768:24::-;;;:::i;18132:39::-;;;:::i;34857:231::-;;;;;;:::i;:::-;;:::i;24673:891::-;;;:::i;:::-;;;;;;;;;;;;:::i;33367:126::-;;;;;;:::i;:::-;;:::i;34459:119::-;;;;;;:::i;:::-;;:::i;17560:25::-;;;:::i;17858:33::-;;;:::i;6576:119::-;;;;;;:::i;:::-;;:::i;9086:295::-;;;;;;:::i;:::-;;:::i;17531:22::-;;;:::i;17754:28::-;;;:::i;18043:40::-;;;:::i;19435:43::-;;;:::i;34307:144::-;;;;;;:::i;:::-;;:::i;17592:20::-;;;:::i;7777:269::-;;;;;;:::i;:::-;;:::i;30277:192::-;;;;;;:::i;:::-;;:::i;6703:175::-;;;;;;:::i;:::-;;:::i;17718:29::-;;;:::i;31198:594::-;;;;;;:::i;:::-;;:::i;30552:183::-;;;;;;:::i;:::-;;:::i;34173:126::-;;;;;;:::i;:::-;;:::i;34712:133::-;;;:::i;23993:505::-;;;:::i;18880:31::-;;;:::i;17975:27::-;;;:::i;18009:::-;;;:::i;33501:125::-;;;;;;:::i;:::-;;:::i;25672:481::-;;;:::i;30822:322::-;;;;;;:::i;:::-;;:::i;17789:31::-;;;:::i;6886:151::-;;;;;;:::i;:::-;;:::i;18361:33::-;;;;;;:::i;:::-;;:::i;19370:26::-;;;:::i;22231:139::-;;;:::i;32711:121::-;;;;;;:::i;:::-;;:::i;23760:108::-;;;:::i;32840:119::-;;;;;;:::i;:::-;;:::i;29465:708::-;;;:::i;23876:109::-;;;:::i;32967:111::-;;;;;;:::i;:::-;;:::i;33949:216::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;;;;;;;;;34052:20:::1;:44:::0;;-1:-1:-1;;;;;;34052:44:0;;::::1;-1:-1:-1::0;;;;;34052:44:0;;::::1;;::::0;;;;34107:12:::1;:50:::0;;34136:20;;;::::1;34107:50:::0;::::1;;::::0;;33949:216::o;17619:18::-;;;;;;;;;;;;;;;-1:-1:-1;;17619:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7045:169::-;7128:4;7145:39;7154:12;:10;:12::i;:::-;7168:7;7177:6;7145:8;:39::i;:::-;-1:-1:-1;7202:4:0;7045:169;;;;;:::o;32579:124::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;32665:13:::1;:30:::0;;-1:-1:-1;;;;;;32665:30:0::1;-1:-1:-1::0;;;;;32665:30:0;;;::::1;::::0;;;::::1;::::0;;32579:124::o;6468:100::-;6548:12;;6468:100;;:::o;18090:35::-;;;-1:-1:-1;;;;;18090:35:0;;:::o;33229:130::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;33319:16:::1;:32:::0;33229:130::o;17686:25::-;;;;:::o;26341:29::-;;;;:::o;7222:321::-;7328:4;7345:36;7355:6;7363:9;7374:6;7345:9;:36::i;:::-;7392:121;7401:6;7409:12;:10;:12::i;:::-;7423:89;7461:6;7423:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7423:19:0;;;;;;:11;:19;;;;;;7443:12;:10;:12::i;:::-;-1:-1:-1;;;;;7423:33:0;;;;;;;;;;;;-1:-1:-1;7423:33:0;;;:89;:37;:89::i;:::-;7392:8;:121::i;:::-;-1:-1:-1;7531:4:0;7222:321;;;;;:::o;35096:226::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;35205:1:::1;35195:7;:11;35187:45;;;;-1:-1:-1::0;;;35187:45:0::1;;;;;;;:::i;:::-;35290:14;:24:::0;35096:226::o;33634:307::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;33747:25:::1;:54:::0;;-1:-1:-1;;;;;33747:54:0;;::::1;-1:-1:-1::0;;;;;;33747:54:0;;::::1;;::::0;;;;33812:17:::1;:68:::0;;;;::::1;33854:25:::0;::::1;33812:68:::0;;;::::1;::::0;;33920:13:::1;:11;:13::i;:::-;33891:26;;:42;;;;;;;;;;;;;;;;;;33634:307:::0;:::o;19217:25::-;;;;:::o;18993:27::-;;;;:::o;18672:38::-;;;;:::o;17644:35::-;17677:2;17644:35;:::o;7551:218::-;7639:4;7656:83;7665:12;:10;:12::i;:::-;7679:7;7688:50;7727:10;7688:11;:25;7700:12;:10;:12::i;:::-;-1:-1:-1;;;;;7688:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;7688:25:0;;;:34;;;;;;;;;;;:38;:50::i;18456:42::-;;;;;;;;;;;;;;;:::o;31823:748::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31915:24:0;::::1;;::::0;;;:10:::1;:24;::::0;;;;;::::1;;:32;;:24:::0;:32:::1;31907:74;;;;-1:-1:-1::0;;;31907:74:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32045:24:0;::::1;;::::0;;;:10:::1;:24;::::0;;;;32038:31;;-1:-1:-1;;32038:31:0::1;::::0;;32045:24;32186:313:::1;32207:16;:23:::0;32203:27;::::1;32186:313;;;32279:12;-1:-1:-1::0;;;;;32256:35:0::1;:16;32273:1;32256:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;32256:19:0::1;:35;32252:236;;;32342:1;32312:16;32329:1;32312:19;;;;;;;;;;;;;;;;:32;;;;;-1:-1:-1::0;;;;;32312:32:0::1;;;;;-1:-1:-1::0;;;;;32312:32:0::1;;;;;;32447:1;32432:16;;32467:5;;32252:236;32232:3;;32186:313;;;;32550:12;-1:-1:-1::0;;;;;32524:39:0::1;;32536:12;32524:39;;;;;;:::i;:::-;;;;;;;;19905:1;31823:748:::0;:::o;34586:118::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;34668:12:::1;:28:::0;;-1:-1:-1;;;;;;34668:28:0::1;-1:-1:-1::0;;;;;34668:28:0;;;::::1;::::0;;;::::1;::::0;;34586:118::o;26437:2882::-;26497:23;;;;:32;26489:77;;;;-1:-1:-1;;;26489:77:0;;;;;;;:::i;:::-;26593:8;;-1:-1:-1;;;;;26593:8:0;26577:69;;;;-1:-1:-1;;;26577:69:0;;;;;;;:::i;:::-;26657:22;26682:12;:10;:12::i;:::-;26657:37;;26749:16;;26731:14;;26713:15;:32;:52;;26705:118;;;;-1:-1:-1;;;26705:118:0;;;;;;;:::i;:::-;26966:10;;26949:12;;:28;;:16;:28::i;:::-;26932:14;:45;26928:718;;;27052:9;;27025:23;;:36;27022:240;;27140:1;27114:23;:27;27022:240;;;27236:9;;27208:23;;:38;;:27;:38::i;:::-;27182:23;:64;27022:240;26928:718;;;27317:10;;27300:12;;:28;;:16;:28::i;:::-;27283:14;:45;27279:367;;;27418:7;27376:38;27404:9;;27376:23;;:27;;:38;;;;:::i;:::-;:49;27373:262;;27471:7;27445:23;:33;27373:262;;;27609:9;;27581:23;;:38;;:27;:38::i;:::-;27555:23;:64;27373:262;27675:15;27658:14;:32;27816:26;:24;:26::i;:::-;27790:23;;:52;27787:1525;;;27953:1;27925:25;:23;:25::i;:::-;:29;27922:152;;;27984:16;28001:1;27984:19;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27984:19:0;27974:57;28032:25;:23;:25::i;:::-;27974:84;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27922:152;28139:16;28156:1;28139:19;;;;;;;;;;;;;;;;;;;28129:57;;;-1:-1:-1;;;28129:57:0;;;;-1:-1:-1;;;;;28139:19:0;;;;28129:55;;:57;;;;;;;;;;28139:19;28129:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28126:160;;28226:16;28243:1;28226:19;;;;;;;;;;;;;;;;;28216:54;;;-1:-1:-1;;;28216:54:0;;;;-1:-1:-1;;;;;28226:19:0;;;;28216:52;;:54;;;;;;;;;;28226:19;;28216:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28126:160;27787:1525;;;28402:25;28430:113;28539:3;28431:102;28478:54;28497:33;28528:1;28497:26;:24;:26::i;:::-;:30;;:33::i;:::-;28478:13;:11;:13::i;:::-;:17;;:54::i;:::-;28431:42;28459:13;:11;:13::i;:::-;28431:23;;;:27;:42::i;:::-;:46;;:102::i;:::-;28430:108;;:113::i;:::-;28402:141;;28558:33;28594:8;;;;;;;;;-1:-1:-1;;;;;28594:8:0;-1:-1:-1;;;;;28594:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28558:66;-1:-1:-1;28642:29:0;;28639:662;;28723:17;28694:25;:46;28691:595;;28764:26;28793:83;28834:16;28851:1;28834:19;;;;;;;;;;;;;;;;;;;28824:51;;;-1:-1:-1;;;28824:51:0;;;;-1:-1:-1;;;;;28834:19:0;;;;28824:49;;:51;;;;;;;;;;28834:19;28824:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28793:26;:17;28815:3;28793:21;:26::i;:83::-;28899:8;;28956:16;:19;;28764:112;;-1:-1:-1;;;;;;28899:8:0;;;;:17;;28917:81;;28899:8;;28956:19;;;;;;;;;;;;;;;28946:51;;;-1:-1:-1;;;28946:51:0;;;;-1:-1:-1;;;;;28956:19:0;;;;28946:49;;:51;;;;;;;;;;28956:19;28946:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28917:18;;28940:2;:57;28917:22;:81::i;:::-;28899:100;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28691:595;;;;29105:16;29122:1;29105:19;;;;;;;;;;;;;;;;;;;29095:57;;;-1:-1:-1;;;29095:57:0;;;;-1:-1:-1;;;;;29105:19:0;;;;29095:55;;:57;;;;;;;;;;29105:19;29095:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;29156:4;29095:65;29092:175;;;29199:16;29216:1;29199:19;;;;;;;;;;;;;;;;;29189:54;;;-1:-1:-1;;;29189:54:0;;;;-1:-1:-1;;;;;29199:19:0;;;;29189:52;;:54;;;;;;;;;;29199:19;;29189:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29092:175;27787:1525;;;26437:2882;:::o;33088:133::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;33181:12:::1;:32:::0;33088:133::o;8987:91::-;9043:27;9049:12;:10;:12::i;:::-;9063:6;9043:5;:27::i;18768:24::-;;;;:::o;18132:39::-;;;:::o;34857:231::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;34952:1:::1;34944:5;:9;34936:43;;;;-1:-1:-1::0;;;34936:43:0::1;;;;;;;:::i;:::-;35062:10;:18:::0;34857:231::o;24673:891::-;24715:7;24724;24733;24742;24751;24760;24789:28;24837:14;;24855:1;24837:19;24834:360;;;24980:26;;24905:102;;-1:-1:-1;;;24980:26:0;;;;24973:2;24965:41;24905:55;18592:3;24913:25;:23;:25::i;24905:102::-;24882:125;;24834:360;;;25054:14;;25072:1;25054:19;25051:143;;;25122:60;25177:4;25122:50;18592:3;25130:20;:18;:20::i;25122:60::-;25099:83;;25051:143;25228:30;25241:16;25228:12;:30::i;:::-;25289;25302:16;25289:12;:30::i;:::-;25350:13;:11;:13::i;:::-;25395:23;;25462;:21;:23::i;:::-;25206:350;;;;-1:-1:-1;25206:350:0;;-1:-1:-1;25206:350:0;-1:-1:-1;25206:350:0;;-1:-1:-1;25525:20:0;;-1:-1:-1;24673:891:0;-1:-1:-1;24673:891:0:o;33367:126::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;33455:11:::1;:30:::0;33367:126::o;34459:119::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;34546:10:::1;:24:::0;34459:119::o;17560:25::-;;;-1:-1:-1;;;;;17560:25:0;;:::o;17858:33::-;;;-1:-1:-1;;;;;17858:33:0;;:::o;6576:119::-;-1:-1:-1;;;;;6669:18:0;;6642:7;6669:18;;;;;;;;;;;6576:119;;;;:::o;9086:295::-;9163:26;9192:84;9229:6;9192:84;;;;;;;;;;;;;;;;;:32;9202:7;9211:12;:10;:12::i;9192:32::-;:36;:84;:36;:84::i;:::-;9163:113;;9289:51;9298:7;9307:12;:10;:12::i;:::-;9321:18;9289:8;:51::i;:::-;9351:22;9357:7;9366:6;9351:5;:22::i;17531:::-;;;-1:-1:-1;;;;;17531:22:0;;:::o;17754:28::-;;;-1:-1:-1;;;;;17754:28:0;;:::o;18043:40::-;;;-1:-1:-1;;;;;18043:40:0;;:::o;19435:43::-;;;;;;:::o;34307:144::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;34403:18:::1;:40:::0;;-1:-1:-1;;;;;;34403:40:0::1;-1:-1:-1::0;;;;;34403:40:0;;;::::1;::::0;;;::::1;::::0;;34307:144::o;17592:20::-;;;;;;;;;;;;;;;-1:-1:-1;;17592:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7777:269;7870:4;7887:129;7896:12;:10;:12::i;:::-;7910:7;7919:96;7958:15;7919:96;;;;;;;;;;;;;;;;;:11;:25;7931:12;:10;:12::i;:::-;-1:-1:-1;;;;;7919:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;7919:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;30277:192::-;19582:10;19571:22;;;;:10;:22;;;;;;;;:30;;:22;:30;19563:81;;;;-1:-1:-1;;;19563:81:0;;;;;;;:::i;:::-;30366:36:::1;30382:9;30393:8;30366:15;:36::i;:::-;30440:10;-1:-1:-1::0;;;;;30418:43:0::1;30429:9;-1:-1:-1::0;;;;;30418:43:0::1;;30452:8;30418:43;;;;;;:::i;:::-;;;;;;;;30277:192:::0;;:::o;6703:175::-;6789:4;6806:42;6816:12;:10;:12::i;:::-;6830:9;6841:6;6806:9;:42::i;17718:29::-;;;;:::o;31198:594::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;31314:16:::1;:23:::0;31306:31;::::1;31298:59;;;;-1:-1:-1::0;;;31298:59:0::1;;;;;;;:::i;:::-;31378:15;31396:16;31413:5;31396:23;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;31396:23:0::1;31448:19:::0;;;:10:::1;:19:::0;;;;;;;;31396:23;;-1:-1:-1;31448:19:0::1;;:27;;31396:23:::0;31448:27:::1;31440:65;;;;-1:-1:-1::0;;;31440:65:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31561:19:0;;::::1;;::::0;;;:10:::1;:19;::::0;;;;;31554:26;;-1:-1:-1;;31554:26:0;;::::1;::::0;;;31624:28;;::::1;::::0;;;;:35;;;;::::1;31554:26:::0;31624:35:::1;::::0;;31671:16:::1;:23:::0;;31635:16;;31671;31688:5;;31671:23;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;:42:::0;;-1:-1:-1;;;;;;31671:42:0::1;-1:-1:-1::0;;;;;31671:42:0;;::::1;;::::0;;31739:45:::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;31751:5;;31739:45:::1;:::i;:::-;;;;;;;;19905:1;31198:594:::0;;:::o;30552:183::-;19582:10;19571:22;;;;:10;:22;;;;;;;;:30;;:22;:30;19563:81;;;;-1:-1:-1;;;19563:81:0;;;;;;;:::i;:::-;30636:32:::1;30648:9;30659:8;30636:11;:32::i;:::-;30707:9;-1:-1:-1::0;;;;;30684:43:0::1;30695:10;-1:-1:-1::0;;;;;30684:43:0::1;;30718:8;30684:43;;;;;;:::i;34173:126::-:0;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;34260:16:::1;:31:::0;;-1:-1:-1;;;;;;34260:31:0::1;-1:-1:-1::0;;;;;34260:31:0;;;::::1;::::0;;;::::1;::::0;;34173:126::o;34712:133::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;34814:23:::1;::::0;;-1:-1:-1;;34787:50:0;::::1;34814:23;::::0;;::::1;34813:24;34787:50;::::0;;34712:133::o;23993:505::-;24121:14;;24039:7;;;;24118:342;;24255:26;;24180:102;;-1:-1:-1;;;24255:26:0;;;;24248:2;24240:41;24180:55;18592:3;24188:25;:23;:25::i;24180:102::-;24166:116;;24118:342;;;24329:14;;24347:1;24329:19;24326:134;;;24388:60;24443:4;24388:50;18592:3;24396:20;:18;:20::i;24388:60::-;24374:74;;24326:134;24479:11;-1:-1:-1;23993:505:0;:::o;18880:31::-;;;;:::o;17975:27::-;;;-1:-1:-1;;;;;17975:27:0;;:::o;18009:::-;;;-1:-1:-1;;;;;18009:27:0;;:::o;33501:125::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;33590:12:::1;:28:::0;;-1:-1:-1;;;;;;33590:28:0::1;-1:-1:-1::0;;;;;33590:28:0;;;::::1;::::0;;;::::1;::::0;;33501:125::o;25672:481::-;25726:7;;;25798:304;25819:16;:23;25815:27;;25798:304;;;25938:1;-1:-1:-1;;;;;25907:33:0;:16;25924:1;25907:19;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25907:19:0;:33;25903:186;;25989:84;26030:16;26047:1;26030:19;;;;;;;;;;;;;;;;;;;26020:52;;;-1:-1:-1;;;26020:52:0;;;;-1:-1:-1;;;;;26030:19:0;;;;26020:50;;:52;;;;;;;;;;26030:19;26020:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25989:26;;:30;:84::i;:::-;25960:113;;25903:186;25844:3;;25798:304;;;-1:-1:-1;26119:26:0;-1:-1:-1;25672:481:0;:::o;30822:322::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30911:24:0;::::1;;::::0;;;:10:::1;:24;::::0;;;;;::::1;;:33;30903:68;;;;-1:-1:-1::0;;;30903:68:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30982:24:0;::::1;;::::0;;;:10:::1;:24;::::0;;;;;:31;;-1:-1:-1;;30982:31:0::1;31009:4;30982:31:::0;;::::1;::::0;;;31025:16:::1;:35:::0;;;;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;31025:35:0::1;::::0;::::1;::::0;;31096:23;;31086:50;;::::1;::::0;::::1;::::0;-1:-1:-1;;31096:25:0;;;;;31086:50:::1;:::i;:::-;;;;;;;;30822:322:::0;:::o;17789:31::-;;;-1:-1:-1;;;;;17789:31:0;;:::o;6886:151::-;-1:-1:-1;;;;;7002:18:0;;;6975:7;7002:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6886:151::o;18361:33::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18361:33:0;;-1:-1:-1;18361:33:0;:::o;19370:26::-;;;;:::o;22231:139::-;22288:4;22311:51;22348:13;:11;:13::i;:::-;22311:32;22339:3;22311:23;:21;:23::i;32711:121::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;32793:8:::1;:31:::0;;-1:-1:-1;;;;;;32793:31:0::1;-1:-1:-1::0;;;;;32793:31:0;;;::::1;::::0;;;::::1;::::0;;32711:121::o;23760:108::-;23803:7;23830:30;23843:16;23830:12;:30::i;32840:119::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;32925:6:::1;:26:::0;;-1:-1:-1;;;;;;32925:26:0::1;-1:-1:-1::0;;;;;32925:26:0;;;::::1;::::0;;;::::1;::::0;;32840:119::o;29465:708::-;29573:23;;29521:7;;18656:3;29613:50;;29609:106;;;-1:-1:-1;18656:3:0;29609:106;29780:40;29823:74;18656:3;29824:40;29842:21;29824:13;:11;:13::i;29823:74::-;29780:117;;30039:32;30013:23;:21;:23::i;:::-;:58;30009:156;;;30080:61;30108:32;30080:23;:21;:23::i;:61::-;30073:68;;;;;;30009:156;30164:1;30157:8;;;;;;23876:109;23920:7;23947:30;23960:16;23947:12;:30::i;32967:111::-;19745:13;;-1:-1:-1;;;;;19745:13:0;19731:10;:27;;:61;;-1:-1:-1;19776:16:0;;-1:-1:-1;;;;;19776:16:0;19762:10;:30;19731:61;:97;;;-1:-1:-1;19810:18:0;;-1:-1:-1;;;;;19810:18:0;19796:10;:32;19731:97;19723:171;;;;-1:-1:-1;;;19723:171:0;;;;;;;:::i;:::-;33049:9:::1;:21:::0;32967:111::o;504:181::-;562:7;594:5;;;618:6;;;;610:46;;;;-1:-1:-1;;;610:46:0;;;;;;;:::i;:::-;676:1;504:181;-1:-1:-1;;;504:181:0:o;95:106::-;183:10;95:106;:::o;9815:346::-;-1:-1:-1;;;;;9917:19:0;;9909:68;;;;-1:-1:-1;;;9909:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9996:21:0;;9988:68;;;;-1:-1:-1;;;9988:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10069:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;10121:32;;;;;10099:6;;10121:32;:::i;8054:539::-;-1:-1:-1;;;;;8160:20:0;;8152:70;;;;-1:-1:-1;;;8152:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8241:23:0;;8233:71;;;;-1:-1:-1;;;8233:71:0;;;;;;;:::i;:::-;8317:47;8338:6;8346:9;8357:6;8317:20;:47::i;:::-;8397:71;8419:6;8397:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8397:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;8377:17:0;;;:9;:17;;;;;;;;;;;:91;;;;8502:20;;;;;;;:32;;8527:6;8502:24;:32::i;:::-;-1:-1:-1;;;;;8479:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;8550:35;;;;;;;;;;8578:6;;8550:35;:::i;837:192::-;923:7;959:12;951:6;;;;943:29;;;;-1:-1:-1;;;943:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;995:5:0;;;837:192::o;22112:107::-;22183:17;;:28;;;-1:-1:-1;;;22183:28:0;;;;22158:5;;-1:-1:-1;;;;;22183:17:0;;:26;;:28;;;;;;;;;;;;;;:17;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;693:136::-;751:7;778:43;782:1;785;778:43;;;;;;;;;;;;;;;;;:3;:43::i;1037:250::-;1095:7;1119:6;1115:47;;-1:-1:-1;1149:1:0;1142:8;;1115:47;1186:5;;;1190:1;1186;:5;:1;1210:5;;;;;:10;1202:56;;;;-1:-1:-1;;;1202:56:0;;;;;;;:::i;1295:132::-;1353:7;1380:39;1384:1;1387;1380:39;;;;;;;;;;;;;;;;;:3;:39::i;9389:418::-;-1:-1:-1;;;;;9473:21:0;;9465:67;;;;-1:-1:-1;;;9465:67:0;;;;;;;:::i;:::-;9545:49;9566:7;9583:1;9587:6;9545:20;:49::i;:::-;9628:68;9651:6;9628:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9628:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;9607:18:0;;:9;:18;;;;;;;;;;:89;9722:12;;:24;;9739:6;9722:16;:24::i;:::-;9707:12;:39;9762:37;;9788:1;;-1:-1:-1;;;;;9762:37:0;;;;;;;9792:6;;9762:37;:::i;21746:158::-;21804:3;21822:9;21838:17;;;;;;;;;-1:-1:-1;;;;;21838:17:0;-1:-1:-1;;;;;21838:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;21820:53:0;;-1:-1:-1;;;;;21746:158:0;:::o;21912:192::-;22027:12;;;:42;;-1:-1:-1;;;22027:42:0;;21965:7;;;;-1:-1:-1;;;;;22027:12:0;;:29;;:42;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22087:9;;-1:-1:-1;;21912:192:0;:::o;22420:1332::-;22521:6;;22485:7;;-1:-1:-1;;;;;22521:6:0;22505:73;;;;-1:-1:-1;;;22505:73:0;;;;;;;:::i;:::-;22597:12;;-1:-1:-1;;;;;22597:12:0;22589:68;;;;-1:-1:-1;;;22589:68:0;;;;;;;:::i;:::-;22670:20;;22707:6;:26;;;;;;;;;22703:933;;;22836:6;;22856:12;;22909:11;;22836:86;;-1:-1:-1;;;22836:86:0;;22816:7;;;;-1:-1:-1;;;;;22836:6:0;;;;:19;;:86;;22856:12;;;;18592:3;;22895:4;;22836:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22815:107;;;;22954:10;;22968:1;22954:15;22951:148;;;23004:2;22989:17;;22951:148;;;23031:10;;23045:1;23031:15;23028:71;;;23081:2;23066:17;;23028:71;22703:933;;;;;23144:16;23134:6;:26;;;;;;;;;23130:506;;;23263:6;;23283:12;;23314;;23335:11;;23263:85;;-1:-1:-1;;;23263:85:0;;23243:7;;;;-1:-1:-1;;;;;23263:6:0;;;;:19;;:85;;23283:12;;;;18592:3;;23314:12;;;23263:85;;;:::i;23130:506::-;23565:71;;-1:-1:-1;;;23565:71:0;;;;;;;:::i;23130:506::-;23690:54;23731:12;23690:36;18592:3;23690:15;:13;:15::i;10169:240::-;10249:22;10255:7;10264:6;10249:5;:22::i;:::-;10282:119;10291:7;10300:12;:10;:12::i;:::-;10314:86;10353:6;10314:86;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10314:20:0;;;;;;:11;:20;;;;;;10335:12;:10;:12::i;10282:119::-;10169:240;;:::o;8601:378::-;-1:-1:-1;;;;;8685:21:0;;8677:65;;;;-1:-1:-1;;;8677:65:0;;;;;;;:::i;:::-;8755:49;8784:1;8788:7;8797:6;8755:20;:49::i;:::-;8832:12;;:24;;8849:6;8832:16;:24::i;:::-;8817:12;:39;-1:-1:-1;;;;;8888:18:0;;:9;:18;;;;;;;;;;;:30;;8911:6;8888:22;:30::i;:::-;-1:-1:-1;;;;;8867:18:0;;:9;:18;;;;;;;;;;;:51;;;;8934:37;;8867:18;;:9;8934:37;;;;8964:6;;8934:37;:::i;1435:278::-;1521:7;1556:12;1549:5;1541:28;;;;-1:-1:-1;;;1541:28:0;;;;;;;;:::i;:::-;;1580:9;1596:1;1592;:5;;;;;;;1435:278;-1:-1:-1;;;;;1435:278:0:o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:181;274:13;;327:22;316:34;;306:45;;296:2;;365:1;362;355:12;380:198;;492:2;480:9;471:7;467:23;463:32;460:2;;;513:6;505;498:22;460:2;541:31;562:9;541:31;:::i;583:274::-;;;712:2;700:9;691:7;687:23;683:32;680:2;;;733:6;725;718:22;680:2;761:31;782:9;761:31;:::i;:::-;751:41;;811:40;847:2;836:9;832:18;811:40;:::i;:::-;801:50;;670:187;;;;;:::o;862:342::-;;;;1008:2;996:9;987:7;983:23;979:32;976:2;;;1029:6;1021;1014:22;976:2;1057:31;1078:9;1057:31;:::i;:::-;1047:41;;1107:40;1143:2;1132:9;1128:18;1107:40;:::i;:::-;1097:50;;1194:2;1183:9;1179:18;1166:32;1156:42;;966:238;;;;;:::o;1209:266::-;;;1338:2;1326:9;1317:7;1313:23;1309:32;1306:2;;;1359:6;1351;1344:22;1306:2;1387:31;1408:9;1387:31;:::i;:::-;1377:41;1465:2;1450:18;;;;1437:32;;-1:-1:-1;;;1296:179:1:o;1480:297::-;;1600:2;1588:9;1579:7;1575:23;1571:32;1568:2;;;1621:6;1613;1606:22;1568:2;1658:9;1652:16;1711:5;1704:13;1697:21;1690:5;1687:32;1677:2;;1738:6;1730;1723:22;1782:567;;1936:2;1924:9;1915:7;1911:23;1907:32;1904:2;;;1957:6;1949;1942:22;1904:2;1995;1989:9;2037:2;2029:6;2025:15;2106:6;2094:10;2091:22;2070:18;2058:10;2055:34;2052:62;2049:2;;;2117:9;2049:2;2148:10;2144:2;2137:22;;2189:9;2183:16;2175:6;2168:32;2254:2;2243:9;2239:18;2233:25;2228:2;2220:6;2216:15;2209:50;2313:2;2302:9;2298:18;2292:25;2287:2;2279:6;2275:15;2268:50;2337:6;2327:16;;;1894:455;;;;:::o;2354:190::-;;2466:2;2454:9;2445:7;2441:23;2437:32;2434:2;;;2487:6;2479;2472:22;2434:2;-1:-1:-1;2515:23:1;;2424:120;-1:-1:-1;2424:120:1:o;2549:194::-;;2672:2;2660:9;2651:7;2647:23;2643:32;2640:2;;;2693:6;2685;2678:22;2640:2;-1:-1:-1;2721:16:1;;2630:113;-1:-1:-1;2630:113:1:o;2748:266::-;;;2877:2;2865:9;2856:7;2852:23;2848:32;2845:2;;;2898:6;2890;2883:22;2845:2;2939:9;2926:23;2916:33;;2968:40;3004:2;2993:9;2989:18;2968:40;:::i;3019:255::-;;;3159:2;3147:9;3138:7;3134:23;3130:32;3127:2;;;3180:6;3172;3165:22;3127:2;-1:-1:-1;;3208:16:1;;3264:2;3249:18;;;3243:25;3208:16;;3243:25;;-1:-1:-1;3117:157:1:o;3279:487::-;;;;;;3467:3;3455:9;3446:7;3442:23;3438:33;3435:2;;;3489:6;3481;3474:22;3435:2;3517:41;3548:9;3517:41;:::i;:::-;3507:51;;3598:2;3587:9;3583:18;3577:25;3567:35;;3642:2;3631:9;3627:18;3621:25;3611:35;;3686:2;3675:9;3671:18;3665:25;3655:35;;3709:51;3755:3;3744:9;3740:19;3709:51;:::i;:::-;3699:61;;3425:341;;;;;;;;:::o;3771:293::-;;3892:2;3880:9;3871:7;3867:23;3863:32;3860:2;;;3913:6;3905;3898:22;3860:2;3950:9;3944:16;4000:4;3993:5;3989:16;3982:5;3979:27;3969:2;;4025:6;4017;4010:22;4069:203;-1:-1:-1;;;;;4233:32:1;;;;4215:51;;4203:2;4188:18;;4170:102::o;4277:462::-;-1:-1:-1;;;;;4562:15:1;;;4544:34;;4609:2;4594:18;;4587:34;;;;4657:15;;4652:2;4637:18;;4630:43;4721:10;4709:23;;;4704:2;4689:18;;4682:51;4493:3;4478:19;;4460:279::o;4744:187::-;4909:14;;4902:22;4884:41;;4872:2;4857:18;;4839:92::o;5387:603::-;;5528:2;5557;5546:9;5539:21;5589:6;5583:13;5632:6;5627:2;5616:9;5612:18;5605:34;5657:4;5670:140;5684:6;5681:1;5678:13;5670:140;;;5779:14;;;5775:23;;5769:30;5745:17;;;5764:2;5741:26;5734:66;5699:10;;5670:140;;;5828:6;5825:1;5822:13;5819:2;;;5898:4;5893:2;5884:6;5873:9;5869:22;5865:31;5858:45;5819:2;-1:-1:-1;5974:2:1;5953:15;-1:-1:-1;;5949:29:1;5934:45;;;;5981:2;5930:54;;5508:482;-1:-1:-1;;;5508:482:1:o;5995:399::-;6197:2;6179:21;;;6236:2;6216:18;;;6209:30;6275:34;6270:2;6255:18;;6248:62;-1:-1:-1;;;6341:2:1;6326:18;;6319:33;6384:3;6369:19;;6169:225::o;6399:355::-;6601:2;6583:21;;;6640:2;6620:18;;;6613:30;6679:33;6674:2;6659:18;;6652:61;6745:2;6730:18;;6573:181::o;6759:398::-;6961:2;6943:21;;;7000:2;6980:18;;;6973:30;7039:34;7034:2;7019:18;;7012:62;-1:-1:-1;;;7105:2:1;7090:18;;7083:32;7147:3;7132:19;;6933:224::o;7162:425::-;7364:2;7346:21;;;7403:2;7383:18;;;7376:30;7442:34;7437:2;7422:18;;7415:62;7513:31;7508:2;7493:18;;7486:59;7577:3;7562:19;;7336:251::o;7592:351::-;7794:2;7776:21;;;7833:2;7813:18;;;7806:30;7872:29;7867:2;7852:18;;7845:57;7934:2;7919:18;;7766:177::o;7948:353::-;8150:2;8132:21;;;8189:2;8169:18;;;8162:30;8228:31;8223:2;8208:18;;8201:59;8292:2;8277:18;;8122:179::o;8306:345::-;8508:2;8490:21;;;8547:2;8527:18;;;8520:30;-1:-1:-1;;;8581:2:1;8566:18;;8559:51;8642:2;8627:18;;8480:171::o;8656:349::-;8858:2;8840:21;;;8897:2;8877:18;;;8870:30;8936:27;8931:2;8916:18;;8909:55;8996:2;8981:18;;8830:175::o;9010:425::-;9212:2;9194:21;;;9251:2;9231:18;;;9224:30;9290:34;9285:2;9270:18;;9263:62;9361:31;9356:2;9341:18;;9334:59;9425:3;9410:19;;9184:251::o;9440:397::-;9642:2;9624:21;;;9681:2;9661:18;;;9654:30;9720:34;9715:2;9700:18;;9693:62;-1:-1:-1;;;9786:2:1;9771:18;;9764:31;9827:3;9812:19;;9614:223::o;9842:402::-;10044:2;10026:21;;;10083:2;10063:18;;;10056:30;10122:34;10117:2;10102:18;;10095:62;-1:-1:-1;;;10188:2:1;10173:18;;10166:36;10234:3;10219:19;;10016:228::o;10249:339::-;10451:2;10433:21;;;10490:2;10470:18;;;10463:30;-1:-1:-1;;;10524:2:1;10509:18;;10502:45;10579:2;10564:18;;10423:165::o;10593:397::-;10795:2;10777:21;;;10834:2;10814:18;;;10807:30;10873:34;10868:2;10853:18;;10846:62;-1:-1:-1;;;10939:2:1;10924:18;;10917:31;10980:3;10965:19;;10767:223::o;10995:401::-;11197:2;11179:21;;;11236:2;11216:18;;;11209:30;11275:34;11270:2;11255:18;;11248:62;-1:-1:-1;;;11341:2:1;11326:18;;11319:35;11386:3;11371:19;;11169:227::o;11401:349::-;11603:2;11585:21;;;11642:2;11622:18;;;11615:30;11681:27;11676:2;11661:18;;11654:55;11741:2;11726:18;;11575:175::o;11755:400::-;11957:2;11939:21;;;11996:2;11976:18;;;11969:30;12035:34;12030:2;12015:18;;12008:62;-1:-1:-1;;;12101:2:1;12086:18;;12079:34;12145:3;12130:19;;11929:226::o;12160:417::-;12362:2;12344:21;;;12401:2;12381:18;;;12374:30;12440:34;12435:2;12420:18;;12413:62;-1:-1:-1;;;12506:2:1;12491:18;;12484:51;12567:3;12552:19;;12334:243::o;12582:552::-;12885:2;12867:21;;;12924:1;12904:18;;;12897:29;;;-1:-1:-1;;;12957:2:1;12942:18;;12935:33;13006:3;12999:4;12984:20;;12977:33;;;13026:19;;13019:30;-1:-1:-1;;;13080:3:1;13065:19;;13058:34;13124:3;13109:19;;12857:277::o;13139:353::-;13341:2;13323:21;;;13380:2;13360:18;;;13353:30;13419:31;13414:2;13399:18;;13392:59;13483:2;13468:18;;13313:179::o;13497:356::-;13699:2;13681:21;;;13718:18;;;13711:30;13777:34;13772:2;13757:18;;13750:62;13844:2;13829:18;;13671:182::o;13858:346::-;14060:2;14042:21;;;14099:2;14079:18;;;14072:30;-1:-1:-1;;;14133:2:1;14118:18;;14111:52;14195:2;14180:18;;14032:172::o;14209:355::-;14411:2;14393:21;;;14450:2;14430:18;;;14423:30;14489:33;14484:2;14469:18;;14462:61;14555:2;14540:18;;14383:181::o;14569:177::-;14715:25;;;14703:2;14688:18;;14670:76::o;14751:535::-;15038:25;;;15094:2;15079:18;;15072:34;;;;15137:2;15122:18;;15115:34;;;;15180:2;15165:18;;15158:34;15223:3;15208:19;;15201:35;15267:3;15252:19;;15245:35;15025:3;15010:19;;14992:294::o;15291:184::-;15463:4;15451:17;;;;15433:36;;15421:2;15406:18;;15388:87::o
Swarm Source
ipfs://64f28d8b44118c2f4ab924b7aad045ddbef5a4915154dd12fe40866583dcdd3a
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.