Contract
0x91db156e6365de9ba8070d733f3163a48e6e3fc9
7
Polygon Sponsored slots available. Book your slot here!
[ Download CSV Export ]
OVERVIEW
A contract that utilizes proof-of-work to mine tokens 2/3%s' of the token supply held by the contract using Bitcoins distribution model. 1/3% of the supply auctions itself to buyers. Top 512 addresses receive 10% of the minted PMBTC, 1/2% of all transactions, and receive MATIC payouts.
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
PMBTC2
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at PolygonScan.com on 2021-07-12 */ // Polygon Mineable Bitcoin - PMBTC //Version 2.0 //!!!Please no longer use the old PMBTC Guild Contract and PMBTC contract!!!! // Contract is able to print multiple cryptocurrencies at once!!! // // Top 512 holders recieve 10% of mining payouts until a miner whitelists themselves. // + // Top 512 holders recieve 1% of every transfer // + // 1% of every transfer is burned to TheGuild in order to benefit everyone // = // 12% of every minted block is distributed // // Heap Spots 2-98 reieve double mining payouts of Matic (miners) // Heap Spots 98-488 recieve payouts of MATIC randomly (holders)!! // Check your Heap spot with indexOf function // // Credits: 0xBitcoin, Vether, Shuffle // Network Polygon // // ----------------------------------------------------------------------------1 // Symbol : PBMTC // Decimals : 9 // Name : Polygon Mineable Bitcoin - PMBTC // Total supply: 32,100,000.00 // = // 21,000,000 Mined over ~100+ years using Bitcoins Distrubtion halvings every 4 years // + // 11,100,000 Auctioned over 100 years in 4 day auctions split fairly among all buyers, ALL Auction proceeds go back into Miners pockets via the contract!!! // No premine, dev cut, or advantage taken at launch. Public miner and public pool available at launch. // Mints forever for every token! // Send this contract any ERC20 token and it will become instantly mineable and distribute forever!! //Viva la Mineables!!! Send this contract any ERC20 complient token (Wrapped NFTs incoming!) and we will reward a miner with it! //pThirdDifficulty allows for the difficulty to be cut in a third. So difficulty 10,000 becomes 3,333. Costs 400 Polygon //pHeapClear allows for the heap to be emptied and restart. Costs 100 Polygon for era 1 pragma solidity ^0.7.6; contract Ownable { address public owner; event TransferOwnership(address _from, address _to); constructor() public { owner = msg.sender; emit TransferOwnership(address(0), msg.sender); } modifier onlyOwner() { require(msg.sender == owner, "only owner"); _; } function setOwner(address _owner) external onlyOwner { emit TransferOwnership(owner, _owner); owner = _owner; } } //Balance stuff contract StorageUnit { address private owner; mapping(bytes32 => bytes32) private store; constructor() public { owner = msg.sender; } function write(bytes32 _key, bytes32 _value) external { /* solium-disable-next-line */ require(msg.sender == owner); store[_key] = _value; } function read(bytes32 _key) external view returns (bytes32) { return store[_key]; } } library IsContract { function isContract(address _addr) internal view returns (bool) { bytes32 codehash; /* solium-disable-next-line */ assembly { codehash := extcodehash(_addr) } return codehash != bytes32(0) && codehash != bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470); } } library DistributedStorage { function contractSlot(bytes32 _struct) private view returns (address) { return address( uint256( keccak256( abi.encodePacked( byte(0xff), address(this), _struct, keccak256(type(StorageUnit).creationCode) ) ) ) ); } function deploy(bytes32 _struct) private { bytes memory slotcode = type(StorageUnit).creationCode; /* solium-disable-next-line */ assembly{ pop(create2(0, add(slotcode, 0x20), mload(slotcode), _struct)) } } function write( bytes32 _struct, bytes32 _key, bytes32 _value ) internal { StorageUnit store = StorageUnit(contractSlot(_struct)); if (!IsContract.isContract(address(store))) { deploy(_struct); } /* solium-disable-next-line */ (bool success, ) = address(store).call( abi.encodeWithSelector( store.write.selector, _key, _value ) ); require(success, "error writing storage"); } function read( bytes32 _struct, bytes32 _key ) internal view returns (bytes32) { StorageUnit store = StorageUnit(contractSlot(_struct)); if (!IsContract.isContract(address(store))) { return bytes32(0); } (bool success, bytes memory data) = address(store).staticcall( abi.encodeWithSelector( store.read.selector, _key ) ); require(success, "error reading storage"); return abi.decode(data, (bytes32)); } } // File: contracts/utils/SafeMath.sol library SafeMath { function add(uint256 x, uint256 y) internal pure returns (uint256) { uint256 z = x + y; require(z >= x, "Add overflow"); return z; } function sub(uint256 x, uint256 y) internal pure returns (uint256) { require(x >= y, "Sub underflow"); return x - y; } function mult(uint256 x, uint256 y) internal pure returns (uint256) { if (x == 0) { return 0; } uint256 z = x * y; require(z / x == y, "Mult overflow"); return z; } function div(uint256 x, uint256 y) internal pure returns (uint256) { require(y != 0, "Div by zero"); return x / y; } function divRound(uint256 x, uint256 y) internal pure returns (uint256) { require(y != 0, "Div by zero"); uint256 r = x / y; if (x % y != 0) { r = r + 1; } return r; } } // File: contracts/utils/Math.sol library ExtendedMath { //return the smaller of the two inputs (a or b) function limitLessThan(uint a, uint b) internal pure returns (uint c) { if(a > b) return b; return a; } } library Math { function orderOfMagnitude(uint256 input) internal pure returns (uint256){ uint256 counter = uint(-1); uint256 temp = input; do { temp /= 10; counter++; } while (temp != 0); return counter; } } // File: contracts/interfaces/IERC20.sol interface IERC20 { function totalSupply() external view returns (uint256); event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); function transfer(address _to, uint _value) external returns (bool success); function transferFrom(address _from, address _to, uint256 _value) external returns (bool success); function allowance(address _owner, address _spender) external view returns (uint256 remaining); function approve(address _spender, uint256 _value) external returns (bool success); function balanceOf(address _owner) external view returns (uint256 balance); } // File: contracts/commons/AddressMinHeap.sol library AddressMinHeap { using AddressMinHeap for AddressMinHeap.Heap; struct Heap { uint256[] entries; mapping(address => uint256) index; } function initialize(Heap storage _heap) internal { require(_heap.entries.length == 0, "already initialized"); _heap.entries.push(0); } function encode(address _addr, uint256 _value) internal pure returns (uint256 _entry) { /* solium-disable-next-line */ assembly { _entry := not(or(and(0xffffffffffffffffffffffffffffffffffffffff, _addr), shl(160, _value))) } } function decode(uint256 _entry) internal pure returns (address _addr, uint256 _value) { /* solium-disable-next-line */ assembly { let x := not(_entry) _addr := and(x, 0xffffffffffffffffffffffffffffffffffffffff) _value := shr(160, x) } } function decodeAddress(uint256 _entry) internal pure returns (address _addr) { /* solium-disable-next-line */ assembly { _addr := and(not(_entry), 0xffffffffffffffffffffffffffffffffffffffff) } } function top(Heap storage _heap) internal view returns(address, uint256) { if (_heap.entries.length < 2) { return (address(0), 0); } return decode(_heap.entries[1]); } function has(Heap storage _heap, address _addr) internal view returns (bool) { return _heap.index[_addr] != 0; } function size(Heap storage _heap) internal view returns (uint256) { return _heap.entries.length - 1; } function entry(Heap storage _heap, uint256 _i) internal view returns (address, uint256) { return decode(_heap.entries[_i + 1]); } // RemoveMax pops off the root element of the heap (the highest value here) and rebalances the heap function popTop(Heap storage _heap) internal returns(address _addr, uint256 _value) { // Ensure the heap exists uint256 heapLength = _heap.entries.length; require(heapLength > 1, "The heap does not exists"); // take the root value of the heap (_addr, _value) = decode(_heap.entries[1]); _heap.index[_addr] = 0; if (heapLength == 2) { _heap.entries.pop; } else { // Takes the last element of the array and put it at the root uint256 val = _heap.entries[heapLength - 1]; _heap.entries[1] = val; // Delete the last element from the array _heap.entries.pop; // Start at the top uint256 ind = 1; // Bubble down ind = _heap.bubbleDown(ind, val); // Update index _heap.index[decodeAddress(val)] = ind; } } // Inserts adds in a value to our heap. function insert(Heap storage _heap, address _addr, uint256 _value) internal { require(_heap.index[_addr] == 0, "The entry already exists"); // Add the value to the end of our array uint256 encoded = encode(_addr, _value); _heap.entries.push(encoded); // Start at the end of the array uint256 currentIndex = _heap.entries.length - 1; // Bubble Up currentIndex = _heap.bubbleUp(currentIndex, encoded); // Update index _heap.index[_addr] = currentIndex; } function update(Heap storage _heap, address _addr, uint256 _value) internal { uint256 ind = _heap.index[_addr]; require(ind != 0, "The entry does not exists"); uint256 can = encode(_addr, _value); uint256 val = _heap.entries[ind]; uint256 newInd; if (can < val) { // Bubble down newInd = _heap.bubbleDown(ind, can); } else if (can > val) { // Bubble up newInd = _heap.bubbleUp(ind, can); } else { // no changes needed return; } // Update entry _heap.entries[newInd] = can; // Update index if (newInd != ind) { _heap.index[_addr] = newInd; } } function bubbleUp(Heap storage _heap, uint256 _ind, uint256 _val) internal returns (uint256 ind) { // Bubble up ind = _ind; if (ind != 1) { uint256 parent = _heap.entries[ind / 2]; while (parent < _val) { // If the parent value is lower than our current value, we swap them (_heap.entries[ind / 2], _heap.entries[ind]) = (_val, parent); // Update moved Index _heap.index[decodeAddress(parent)] = ind; // change our current Index to go up to the parent ind = ind / 2; if (ind == 1) { break; } // Update parent parent = _heap.entries[ind / 2]; } } } function bubbleDown(Heap storage _heap, uint256 _ind, uint256 _val) internal returns (uint256 ind) { // Bubble down ind = _ind; uint256 lenght = _heap.entries.length; uint256 target = lenght - 1; while (ind * 2 < lenght) { // get the current index of the children uint256 j = ind * 2; // left child value uint256 leftChild = _heap.entries[j]; // Store the value of the child uint256 childValue; if (target > j) { // The parent has two childs 👨👧👦 // Load right child value uint256 rightChild = _heap.entries[j + 1]; // Compare the left and right child. // if the rightChild is greater, then point j to it's index // and save the value if (leftChild < rightChild) { childValue = rightChild; j = j + 1; } else { // The left child is greater childValue = leftChild; } } else { // The parent has a single child 👨👦 childValue = leftChild; } // Check if the child has a lower value if (_val > childValue) { break; } // else swap the value (_heap.entries[ind], _heap.entries[j]) = (childValue, _val); // Update moved Index _heap.index[decodeAddress(childValue)] = ind; // and let's keep going down the heap ind = j; } } } // File: contracts/Heap.sol //Top Holders contract Heap is Ownable { using AddressMinHeap for AddressMinHeap.Heap; // heap AddressMinHeap.Heap private heap; // Heap events event JoinHeap(address indexed _address, uint256 _balance, uint256 _prevSize); event LeaveHeap(address indexed _address, uint256 _balance, uint256 _prevSize); uint256 constant public TOP_SIZE = 512; constructor() public { heap.initialize(); } function topSize() external view returns (uint256) { return TOP_SIZE; } function addressAt(uint256 _i) public view returns (address addr) { (addr, ) = heap.entry(_i); } function indexOf(address _addr) external view returns (uint256) { return heap.index[_addr]; } function entry(uint256 _i) external view returns (address, uint256) { return heap.entry(_i); } function top() external view returns (address, uint256) { return heap.top(); } function size() external view returns (uint256) { return heap.size(); } function update(address _addr, uint256 _new) external onlyOwner { uint256 _size = heap.size(); // If the heap is empty // join the _addr if (_size == 0) { emit JoinHeap(_addr, _new, 0); heap.insert(_addr, _new); return; } // Load top value of the heap (, uint256 lastBal) = heap.top(); // If our target address already is in the heap if (heap.has(_addr)) { // Update the target address value heap.update(_addr, _new); if (_new == 0) { heap.popTop(); emit LeaveHeap(_addr, 0, _size); } } else { // IF heap is full or new balance is higher than pop heap if (_new != 0 && (_size < TOP_SIZE || lastBal < _new)) { // If heap is full pop heap if (_size >= TOP_SIZE) { (address _poped, uint256 _balance) = heap.popTop(); emit LeaveHeap(_poped, _balance, _size); } // Insert new value heap.insert(_addr, _new); emit JoinHeap(_addr, _new, _size); } } } } abstract contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes memory data) virtual public; } //Main contract contract PMBTC2 is Ownable, IERC20, ApproveAndCallFallBack { //Old contract references address public zOld_PMBTC1 = 0x637a77ec60a9cd7Bc55D4D488a29538De1EE6134; address public zOld_MinersGuild1 = 0xF19c81d4795CbF82A87242e216A162316E7999c1; using DistributedStorage for bytes32; using SafeMath for uint256; using ExtendedMath for uint; // Shuffle events event Winner(address indexed _addr, uint256 _value); address public winnerz; // Managment events event SetName(string _prev, string _new); event SetHeap(address _prev, address _new); event WhitelistTo(address _addr, bool _whitelisted); uint256 override public totalSupply = 32100000000000000 ; bytes32 private constant BALANCE_KEY = keccak256("balance"); // game uint256 public constant FEE = 200; //BITCOININITALIZE Start uint public _totalSupply = 21000000000000000; uint public latestDifficultyPeriodStarted = block.number; uint public epochCount = 0;//number of 'blocks' mined uint public _BLOCKS_PER_READJUSTMENT = 1024; //a little number uint public _MINIMUM_TARGET = 2**16; uint public _MAXIMUM_TARGET = 2**234; uint public miningTarget = _MAXIMUM_TARGET.div(200000000*25); //1000 million difficulty to start until i enable mining bytes32 public challengeNumber; //generate a new one when a new reward is minted uint public rewardEra = 0; uint public maxSupplyForEra = (_totalSupply - _totalSupply.div( 2**(rewardEra + 1))); uint public reward_amount = (50 * 10**uint(decimals) ).div( 2**rewardEra ); address public lastRewardTo; address public PMBTCGuildContract; uint256 oneEthUnit = 1000000000000000000; uint256 oneNineDigit = 1000000000; uint256 public Token2Per= 18888888888888888; uint256 public mintEthBalance=88; uint256 public Token3Min= 18888888888888888; uint256 public lastRewardAmount; uint256 public lastRewardEthBlockNumber; mapping(bytes32 => bytes32) solutionForChallenge; uint public tokensMinted; mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowed; // metadata string public name = "Polygon Mineable Bitcoin"; string public constant symbol = "PMBTC"; uint8 public constant decimals = 9; // fee whitelist mapping(address => bool) public whitelistTo; // heap Heap public heap; // More Minters bool ExtraOn = false; bool inited = false; bool Aphrodite = false; bool Atlas = false; bool Titan = false; bool Zeus = false; uint256 public sendb; function init(address addrOfGuild) external onlyOwner{ uint x = 11100000000000000; // Only init once assert(!inited); inited = true; _totalSupply = 21000000 * 10**uint(9); //bitcoin commands short and sweet //sets to previous difficulty miningTarget = _MAXIMUM_TARGET.div(51199); rewardEra = 0; latestDifficultyPeriodStarted = block.number; //starts at epoch 10180 //Gives Tokens to Guild to distribute to previous owners epochCount = 10180; tokensMinted = reward_amount * epochCount; _startNewMiningEpoch(10180); // Create Heap heap = new Heap(); emit SetHeap(address(0), address(heap)); // Init contract variables and mint emit Transfer(address(0), addrOfGuild, (x+tokensMinted)); _setBalance(addrOfGuild, (x+tokensMinted)); emit Transfer(address(0), address(this), _totalSupply); _setBalance(address(this), _totalSupply); PMBTCGuildContract = addrOfGuild; owner = addrOfGuild; } function _toKey(address a) internal pure returns (bytes32) { return bytes32(uint256(a)); } function _balanceOf(address _addr) internal view returns (uint256) { return uint256(_toKey(_addr).read(BALANCE_KEY)); } function _allowance(address _addr, address _spender) internal view returns (uint256) { return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("allowance", _spender)))); } function _nonce(address _addr, uint256 _cat) internal view returns (uint256) { return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("nonce", _cat)))); } // Setters function _setAllowance(address _addr, address _spender, uint256 _value) internal { _toKey(_addr).write(keccak256(abi.encodePacked("allowance", _spender)), bytes32(_value)); } function _setNonce(address _addr, uint256 _cat, uint256 _value) internal { _toKey(_addr).write(keccak256(abi.encodePacked("nonce", _cat)), bytes32(_value)); } function _setBalance(address _addr, uint256 _balance) internal { _toKey(_addr).write(BALANCE_KEY, bytes32(_balance)); heap.update(_addr, _balance); } function setWhitelistedTo(address _addr, bool _whitelisted) external payable { sendb = IERC20(PMBTCGuildContract).balanceOf(_addr); if(!_whitelisted) { if(sendb < 5 * reward_amount) // Under 5 Matic and ur off the list so they choose { emit WhitelistTo(_addr, _whitelisted); whitelistTo[_addr] = _whitelisted; return; } require(IERC20(PMBTCGuildContract).balanceOf(msg.sender) >= (250* (reward_amount.div(50))), "Balance of HPz too low"); //costs 250 HPz held to take them off whitelist require(sendb < (200* (reward_amount.div(50))), "Has over 200 HPz cant unlist"); //over 100 matic and u wont get unwhitelisted require(msg.value >= 3500*oneNineDigit* reward_amount.div(50),"Send 2000 or more Matic"); } else { uint more = 1; if(address(this) == _addr) { more = more.add(3); } require(IERC20(PMBTCGuildContract).balanceOf(msg.sender) >= (888* (reward_amount.div(50))), "Must have 888 HPz to get on the list");// //costs 10 HPz to get on whitelist require(msg.value >= (100 * more*oneNineDigit * reward_amount).div(50), "costs 100 Matic to get on the list"); //costs 1000 Matic to get on whitelist } emit WhitelistTo(_addr, _whitelisted); whitelistTo[_addr] = _whitelisted; } function _isWhitelisted( address _to) public view returns (bool) { return whitelistTo[_to]; } /// // Internal methods /// function _random(address _s1, uint256 _s2, uint256 _s3, uint256 _max) internal pure returns (uint256) { uint256 rand = uint256(keccak256(abi.encodePacked(_s1, _s2, _s3))); return rand % (_max + 1); } function _pickWinner(address _from, uint256 _value) private returns (address winner) { // Get order of magnitude of the tx uint256 magnitude = Math.orderOfMagnitude(_value); // Pull nonce for a given order of magnitude uint256 nonce = _nonce(_from, magnitude); _setNonce(_from, magnitude, nonce + 1); // pick entry from heap winner = heap.addressAt(_random(_from, nonce, magnitude, heap.size() - 1)); winnerz = winner; return winner; } function _transferFrom(address _operator, address _from, address _to, uint256 _value, bool _payFee) internal { // If transfer amount is zero // emit event and stop execution if (_value == 0) { emit Transfer(_from, _to, 0); return; } // Load sender balance uint256 balanceFrom = _balanceOf(_from); require(balanceFrom >= _value, "balance not enough"); // Check if operator is sender if (_from != _operator) { // If not, validate allowance uint256 allowanceFrom = _allowance(_from, _operator); // If allowance is not 2 ** 256 - 1, consume allowance if (allowanceFrom != uint(-1)) { // Check allowance and save new one require(allowanceFrom >= _value, "allowance not enough"); _setAllowance(_from, _operator, allowanceFrom.sub(_value)); } } // Calculate receiver balance // initial receive is full value uint256 receives = _value; uint256 burn = 0; uint256 shuf = 0; // Change sender balance _setBalance(_from, balanceFrom.sub(_value)); // If the transaction is not whitelisted // or if sender requested to pay the fee // calculate fees !(_isWhitelisted(_to) || _isWhitelisted(_from)) if (_payFee || !(_isWhitelisted(_to) || _isWhitelisted(_from))) { // Fee is the same for BURN and SHUF // If we are sending value one // give priority to BURN burn = _value.divRound(FEE); shuf = _value == 1 ? 0 : burn; // Subtract fees from receiver amount receives = receives.sub(burn.add(shuf)); // Burn tokens emit Transfer(_from, PMBTCGuildContract, burn); // Shuffle tokens // Pick winner pseudo-randomly address winner = _pickWinner(_from, _value); // Transfer balance to winner _setBalance(winner, _balanceOf(winner).add(shuf)); emit Winner(winner, shuf); emit Transfer(_from, winner, shuf); } // Sanity checks // no tokens where created //assert(burn.add(shuf).add(receives) == _value); // Add tokens to receiver _setBalance(_to, _balanceOf(_to).add(receives)); emit Transfer(_from, _to, receives); } /// // Managment /// // first function getMiningTarget() public view returns (uint) { return miningTarget; } function getMiningDifficulty() public view returns (uint) { return _MAXIMUM_TARGET.div(miningTarget); } function getChallengeNumber() public view returns (bytes32) { return challengeNumber; } function getNewWinner() public returns (address){ IERC20(PMBTCGuildContract).transferFrom(msg.sender, winnerz, oneNineDigit); _pickWinner(address(this), epochCount); return winnerz; } //Restarts the Heap function PNewHeap() public payable { require(msg.value >= 100*oneNineDigit * reward_amount.divRound(50), "Must send Matic, first era is 100 Matic"); heap = new Heap(); emit SetHeap(address(0), address(heap)); } //3x Easier difficulty in mining costs 500 matic function pThirdDifficulty() public payable { require(IERC20(PMBTCGuildContract).balanceOf(msg.sender) >= (100 * (reward_amount.divRound(50))), "Must have larger balance of HPz, first era is 100 matic spent in the guild contract");// //costs 80 matic spent to reset ThirdDifficulty require(msg.value >= 500* oneEthUnit, "Must send more Matic to lower difficulty by 3x, Costs 500 matic"); miningTarget = miningTarget.mult(3); if(miningTarget > _MAXIMUM_TARGET){ miningTarget = _MAXIMUM_TARGET; } } function pCheckAllforBadApples() public payable { pCheckHeapForBadApples(1, heap.size()-2); } function pCheckHeapForBadApples(uint start, uint maxRemove) public payable { require(msg.value >= ((5*oneNineDigit * reward_amount)/ 50), "Must send more Matic, first era is 5"); //yes it breaks for awhile require(IERC20(PMBTCGuildContract).balanceOf(msg.sender) >= reward_amount * 5, "Must have balance larger balance of HPz, first era is 5"); for (uint i=start; i<maxRemove ; i++){ if(IERC20(PMBTCGuildContract).balanceOf(heap.addressAt(i)) <= (5 * reward_amount)) { whitelistTo[heap.addressAt(i)] = false; } } } function pEnableExtras(bool switchz) public payable { require(msg.value >= (200 * oneEthUnit), "Must send at least 100 Matic to enable Extra Pools"); Aphrodite = true; if(msg.value >= 300 * oneEthUnit) { Atlas = true; } if(msg.value >= 400 * oneEthUnit) { Titan = true; } if(msg.value >= 500 * oneEthUnit) { ExtraOn = true; Zeus = true; } } function getCurrentWinner() public returns (address addy) { return address(winnerz); } function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success) { bytes32 digest = keccak256(abi.encodePacked(challengeNumber, msg.sender, nonce)); //the challenge digest must match the expected require(digest == challenge_digest, "Old challenge_digest or wrong challenge_digest"); //the digest must be smaller than the target require(uint256(digest) < miningTarget, "Digest must be smaller than miningTarget"); bytes32 solution = solutionForChallenge[challengeNumber]; require(solution == 0x0,"This Challenge was alreday mined by someone else"); //prevent the same answer from awarding twice solutionForChallenge[challengeNumber] = digest; if(epochCount % 4 == 0) //Every 4 blocks send some GuildPointz { uint256 totalOwed = IERC20(PMBTCGuildContract).balanceOf(address(this)); if(totalOwed >= (111000)) { totalOwed = (4 * totalOwed).divRound(111000); //105,000 epochs = half of era, 4x the reward for 1/4 of the time IERC20(PMBTCGuildContract).transfer(msg.sender, totalOwed); } } tokensMinted = tokensMinted.add(reward_amount); reward_amount = (50 * 10**uint(decimals)).div( 2**rewardEra ); //set readonly diagnostics data lastRewardTo = msg.sender; lastRewardAmount = reward_amount; lastRewardEthBlockNumber = block.number; _startNewMiningEpoch(lastRewardEthBlockNumber); if(!_isWhitelisted(msg.sender) && !_isWhitelisted(address(this))) { _transferFrom(address(this), address(this), msg.sender, reward_amount - reward_amount.divRound(10), true); _transferFrom(address(this), address(this), winnerz, reward_amount.divRound(10), true); } else{ _transferFrom(address(this), address(this), msg.sender, reward_amount, true); } mintEthBalance = address(this).balance; address payable receiver = payable(msg.sender); if(Token2Per < mintEthBalance.div(8)) { uint256 bobby = 2; address payable receive21r = payable(winnerz); uint256 bbb = heap.indexOf(receive21r); if(bbb > 94 && bbb < 444 ) { bobby.add(1); if(winnerz != PMBTCGuildContract) { receive21r.send(Token2Per.divRound(2)); } } uint256 meow = heap.indexOf(receiver); if (meow > 2 && meow < 95) { bobby.sub(1); } receiver.send(Token2Per.divRound(bobby)); } return true; } function mintExtraToken(uint256 nonce, bytes32 challenge_digest, address ExtraFunds, bool freeMintOn) public returns (bool success) { require(ExtraFunds != address(this), "No minting our token!"); if(freeMintOn == true) { require(FREEmint(nonce, challenge_digest, ExtraFunds), "Freemint issue"); } else { require(mint(nonce,challenge_digest), "mint issue"); } require(ExtraFunds != PMBTCGuildContract, "Not this contract please choose another"); if(epochCount % 2 == 0) { uint256 totalOwned = IERC20(ExtraFunds).balanceOf(address(this)); totalOwned = (2 * totalOwned).div(100000); //100,000 epochs = half of era, 2x the reward for 1/2 of the time IERC20(ExtraFunds).transfer(msg.sender, totalOwned); } return true; } function mintExtraExtraToken(uint256 nonce, bytes32 challenge_digest, address ExtraFunds, address ExtraFunds2) public returns (bool success) { require(Titan, "Whitelist it!"); //, "get on the list!"); require(mintExtraToken(nonce, challenge_digest, ExtraFunds, ExtraOn), "Nuhuhuh0"); require(ExtraFunds2 != PMBTCGuildContract, "Not this contract please choose another"); require(ExtraFunds != ExtraFunds2, "annoying"); if(epochCount % 3 == 0) { uint256 totalOwned = IERC20(ExtraFunds2).balanceOf(address(this)); totalOwned = (3 * totalOwned).div(100000); //100,000 epochs = half of era, 3x the reward for 1/3 of the time //no round ends here IERC20(ExtraFunds2).transfer(msg.sender, totalOwned); } return true; } function mintExtraExtraExtraToken(uint256 nonce, bytes32 challenge_digest, address ExtraFunds, address ExtraFunds2, address ExtraFunds3) public returns (bool success) { require(Atlas, "Whitelist it!"); //, "get on the list!"); require(ExtraFunds3 != address(this), "No minting our token!"); require(mintExtraExtraToken(nonce, challenge_digest, ExtraFunds, ExtraFunds2), "Nuhuhuh0"); require(ExtraFunds != ExtraFunds3, "annoying1"); require(ExtraFunds2 != ExtraFunds3, "annoying2"); require(PMBTCGuildContract != ExtraFunds3, "annoying3"); if(epochCount % 7 == 0) { uint256 totalOwned = IERC20(ExtraFunds3).balanceOf(address(this)); totalOwned = (7 * totalOwned).divRound(100000); //100,000 epochs = half of era, 7x the reward for 1/7 of the time IERC20(ExtraFunds3).transfer(msg.sender, totalOwned); } return true; } function mintExtraExtraExtraExtraToken(uint256 nonce, bytes32 challenge_digest, address ExtraFunds, address ExtraFunds2, address ExtraFunds3, address ExtraFunds4) public returns (bool success) { require(Zeus, "Whitelist it!"); //, "get on the list!"); require(ExtraFunds4 != address(this), "No minting our token!"); require(mintExtraExtraExtraToken(nonce, challenge_digest, ExtraFunds, ExtraFunds2, ExtraFunds3), "Nuhuhuh0"); require(ExtraFunds != ExtraFunds4, "annoying5"); require(ExtraFunds2 != ExtraFunds4, "annoying 2 and 4"); require(ExtraFunds3 != ExtraFunds4, "annoying 3 and 4"); require(PMBTCGuildContract != ExtraFunds4, "annoying"); if(epochCount % 13 == 0) { uint256 totalOwned = IERC20(ExtraFunds4).balanceOf(address(this)); totalOwned = (13 * totalOwned).divRound(100000); //100,000 epochs = half of era, 13x the reward for 1/13 of the time IERC20(ExtraFunds4).transfer(msg.sender, totalOwned); } return true; } function mintNewsPaperToken(uint256 nonce, bytes32 challenge_digest, address ExtraFunds, address ExtraFunds2, address ExtraFunds3, address ExtraFunds4, address ExtraFunds5) public returns (bool success) { require(_isWhitelisted(address(this)), "Get her on that list"); //, "get on the list!"); require(ExtraFunds5 != address(this), "No minting our token!"); require(mintExtraExtraExtraToken(nonce, challenge_digest, ExtraFunds, ExtraFunds2, ExtraFunds3), "Nuhuhuh0"); require(ExtraFunds != ExtraFunds5, "annoying"); require(ExtraFunds2 != ExtraFunds5, "annoying 2 and 5"); require(ExtraFunds3 != ExtraFunds5, "annoying 3 and 5"); require(PMBTCGuildContract != ExtraFunds5, "annoying"); require(ExtraFunds4 != ExtraFunds5, "annoying 4 and 5"); if(epochCount % 23 == 0) { uint256 totalOwned = IERC20(ExtraFunds5).balanceOf(address(this)); totalOwned = (23 * totalOwned).divRound(100000); //100,000 epochs = half of era, 23x the reward for 1/23 of the time IERC20(ExtraFunds5).transfer(msg.sender, totalOwned); } return true; } function FREEmint(uint256 nonce, bytes32 challenge_digest, address mintED) public returns (bool success) { require((address(this) != mintED && address(PMBTCGuildContract) != mintED), "Not allowed to use PMBTC contract or Guild contract in FREEmint"); bytes32 digest = keccak256(abi.encodePacked(challengeNumber, msg.sender, nonce)); //the challenge digest must match the expected require(digest == challenge_digest, "Old challenge_digest or wrong challenge_digest"); //the digest must be smaller than the target require(uint256(digest) < miningTarget, "Digest must be smaller than miningTarget"); bytes32 solution = solutionForChallenge[challengeNumber]; require(solution == 0x0,"This Challenge was alreday mined by someone else"); //prevent the same answer from awarding twice solutionForChallenge[challengeNumber] = digest; IERC20(mintED).transfer(msg.sender, (IERC20(mintED).balanceOf(address(this))).divRound(10000)); tokensMinted = tokensMinted.add(reward_amount); reward_amount = (50 * 10**uint(decimals) ).div( 2**rewardEra ); //set readonly diagnostics data lastRewardTo = msg.sender; lastRewardAmount = reward_amount; lastRewardEthBlockNumber = block.number; _startNewMiningEpoch(lastRewardEthBlockNumber); return true; } function _startNewMiningEpoch(uint tester2) public { //if max supply for the era will be exceeded next reward round then enter the new era before that happens //40 is the final reward era, almost all tokens minted //once the final era is reached, more tokens will not be given out because the assert function if( tokensMinted.add((50 * 10**uint(decimals) ).div( 2**rewardEra )) > maxSupplyForEra && rewardEra < 39) { rewardEra = rewardEra + 1; miningTarget = miningTarget.div(3); } //set the next minted supply at which the era will change // total supply of MINED tokens is 2100000000000000 blatestecause of 8 decimal places maxSupplyForEra = _totalSupply - _totalSupply.div( 2**(rewardEra + 1)); epochCount = epochCount.add(1); //every so often, readjust difficulty. Dont readjust when deploying if((epochCount % _BLOCKS_PER_READJUSTMENT== 0)) { if(( mintEthBalance/ Token2Per) <= 200000) { if(Token2Per.div(2) > Token3Min) { Token2Per = Token2Per.div(2); } } else { Token2Per = Token2Per.mult(5); } _reAdjustDifficulty(); } challengeNumber = blockhash(block.number - 1); } //https://en.bitcoin.it/wiki/Difficulty#What_is_the_formula_for_difficulty.3F //as of 2017 the bitcoin difficulty was up to 17 zeroes, it was only 8 in the early days function _reAdjustDifficulty() internal { uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted; //assume 360 ethereum blocks per hour // One MATIC block = 2 sec blocks so 300 blocks per = 10 min uint epochsMined = _BLOCKS_PER_READJUSTMENT; //256 uint targetEthBlocksPerDiffPeriod = epochsMined * 300; // One MATIC block = 2 sec blocks so 300 blocks per = 10 min //if there were less eth blocks passed in time than expected if( ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod ) { uint excess_block_pct = (targetEthBlocksPerDiffPeriod.mult(100)).div( ethBlocksSinceLastDifficultyPeriod ); uint excess_block_pct_extra = excess_block_pct.sub(100).limitLessThan(1000); // If there were 5% more blocks mined than expected then this is 5. If there were 100% more blocks mined than expected then this is 100. //make it harder miningTarget = miningTarget.sub(miningTarget.div(2000).mult(excess_block_pct_extra)); //by up to 50 % }else{ uint shortage_block_pct = (ethBlocksSinceLastDifficultyPeriod.mult(100)).div( targetEthBlocksPerDiffPeriod ); uint shortage_block_pct_extra = shortage_block_pct.sub(100).limitLessThan(1000); //always between 0 and 1000 //make it easier miningTarget = miningTarget.add(miningTarget.div(2000).mult(shortage_block_pct_extra)); //by up to 50 % } latestDifficultyPeriodStarted = block.number; if(miningTarget < _MINIMUM_TARGET) //very difficult { miningTarget = _MINIMUM_TARGET; } if(miningTarget > _MAXIMUM_TARGET) //very easy { miningTarget = _MAXIMUM_TARGET; } } //31.1m coins total // = //21 million proof of work // + //11.1 million proof of burn //reward begins at 50 tokens per and is cut in half every reward era(3-4 years) function getMiningReward() public view returns (uint) { //once we get half way thru the coins, only get 25 per block //every reward era, the reward amount halves. return (50 * 10**uint(decimals) ).div( 2**rewardEra ) ; } function getMintDigest(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number) public view returns (bytes32 digesttest) { bytes32 digest = bytes32(keccak256(abi.encodePacked(challenge_number,msg.sender,nonce))); return digest; } //help debug mining software function checkMintSolution(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number, uint testTarget) public view returns (bool success) { bytes32 digest = bytes32(keccak256(abi.encodePacked(challenge_number,msg.sender,nonce))); if(uint256(digest) > testTarget) revert(); return (digest == challenge_digest); } function setHeap(Heap _heap) private { emit SetHeap(address(heap), address(_heap)); heap = _heap; } ///// // Heap methods ///// function heapEntry(uint256 _i) external view returns (address, uint256) { return heap.entry(_i); } function heapTop() external view returns (address, uint256) { return heap.top(); } function heapIndex(address _addr) external view returns (uint256) { return heap.indexOf(_addr); } function getNonce(address _addr, uint256 _cat) external view returns (uint256) { return _nonce(_addr, _cat); } function balanceOf(address _addr) override external view returns (uint256) { return _balanceOf(_addr); } function allowance(address _addr, address _spender) override external view returns (uint256) { return _allowance(_addr, _spender); } function approve(address _spender, uint256 _value) override external returns (bool) { emit Approval(msg.sender, _spender, _value); _setAllowance(msg.sender, _spender, _value); return true; } function transfer(address _to, uint256 _value) override external returns (bool) { _transferFrom(msg.sender, msg.sender, _to, _value, false); return true; } function transferWithFee(address _to, uint256 _value) external returns (bool) { _transferFrom(msg.sender, msg.sender, _to, _value, true); return true; } function transferFrom(address _from, address _to, uint256 _value) external override returns (bool) { _transferFrom(msg.sender, _from, _to, _value, false); return true; } function transferFromWithFee(address _from, address _to, uint256 _value) external returns (bool) { _transferFrom(msg.sender, _from, _to, _value, true); return true; } function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public override{ require(token == address(this)); IERC20(address(this)).transfer(from, tokens); } // ------------------------------------------------------------------------ // Do accept ETH // ------------------------------------------------------------------------ receive() external payable { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":false,"internalType":"address","name":"_prev","type":"address"},{"indexed":false,"internalType":"address","name":"_new","type":"address"}],"name":"SetHeap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_prev","type":"string"},{"indexed":false,"internalType":"string","name":"_new","type":"string"}],"name":"SetName","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Winner","type":"event"},{"inputs":[],"name":"FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"},{"internalType":"address","name":"mintED","type":"address"}],"name":"FREEmint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"PMBTCGuildContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PNewHeap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"Token2Per","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Token3Min","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BLOCKS_PER_READJUSTMENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MINIMUM_TARGET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"_isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tester2","type":"uint256"}],"name":"_startNewMiningEpoch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","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":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"challengeNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"},{"internalType":"bytes32","name":"challenge_number","type":"bytes32"},{"internalType":"uint256","name":"testTarget","type":"uint256"}],"name":"checkMintSolution","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChallengeNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentWinner","outputs":[{"internalType":"address","name":"addy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMiningDifficulty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"},{"internalType":"bytes32","name":"challenge_number","type":"bytes32"}],"name":"getMintDigest","outputs":[{"internalType":"bytes32","name":"digesttest","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNewWinner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_cat","type":"uint256"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"heap","outputs":[{"internalType":"contract Heap","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_i","type":"uint256"}],"name":"heapEntry","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"heapIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"heapTop","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addrOfGuild","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastRewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardEthBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestDifficultyPeriodStarted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyForEra","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"},{"internalType":"address","name":"ExtraFunds","type":"address"},{"internalType":"address","name":"ExtraFunds2","type":"address"},{"internalType":"address","name":"ExtraFunds3","type":"address"},{"internalType":"address","name":"ExtraFunds4","type":"address"}],"name":"mintExtraExtraExtraExtraToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"},{"internalType":"address","name":"ExtraFunds","type":"address"},{"internalType":"address","name":"ExtraFunds2","type":"address"},{"internalType":"address","name":"ExtraFunds3","type":"address"}],"name":"mintExtraExtraExtraToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"},{"internalType":"address","name":"ExtraFunds","type":"address"},{"internalType":"address","name":"ExtraFunds2","type":"address"}],"name":"mintExtraExtraToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"},{"internalType":"address","name":"ExtraFunds","type":"address"},{"internalType":"bool","name":"freeMintOn","type":"bool"}],"name":"mintExtraToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"},{"internalType":"address","name":"ExtraFunds","type":"address"},{"internalType":"address","name":"ExtraFunds2","type":"address"},{"internalType":"address","name":"ExtraFunds3","type":"address"},{"internalType":"address","name":"ExtraFunds4","type":"address"},{"internalType":"address","name":"ExtraFunds5","type":"address"}],"name":"mintNewsPaperToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pCheckAllforBadApples","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"maxRemove","type":"uint256"}],"name":"pCheckHeapForBadApples","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"switchz","type":"bool"}],"name":"pEnableExtras","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pThirdDifficulty","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"receiveApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardEra","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reward_amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFromWithFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferWithFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"winnerz","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zOld_MinersGuild1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zOld_PMBTC1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001805473637a77ec60a9cd7bc55d4d488a29538de1ee61346001600160a01b0319918216179091556002805473f19c81d4795cbf82a87242e216a162316e7999c1921691909117905566720ac7a94a4000600455664a9b638448800060055543600655600060075561040060085562010000600955600160ea1b600a819055620000a19064012a05f200620001d8602090811b62003cef17901c565b600b556000600d55600554620000c5906002620001d8602090811b62003cef17901c565b60055403600e55600d54620000f090640ba43b74009060020a620001d8602090811b62003cef17901c565b600f55670de0b6b3a7640000601255633b9aca0060135566431b58286c8e38601481905560586015556016556040805180820190915260188082527f506f6c79676f6e204d696e6561626c6520426974636f696e000000000000000060209092019182526200016291601d916200022d565b50601f805465ffffffffffff60a01b191690553480156200018257600080fd5b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1620002d9565b6000816200021b576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b8183816200022557fe5b049392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002655760008555620002b0565b82601f106200028057805160ff1916838001178555620002b0565b82800160010185558215620002b0579182015b82811115620002b057825182559160200191906001019062000293565b50620002be929150620002c2565b5090565b5b80821115620002be5760008155600101620002c3565b615b0f80620002e96000396000f3fe608060405260043610620004575760003560e01c80638a769d35116200023b578063af940b4c1162000133578063c7d6e90611620000bb578063dc6e9cf91162000085578063dc6e9cf91462000f3d578063dd62ed3e1462000f55578063e19efe6f1462000f94578063e87d27571462000fd7578063f26c48211462001022576200045f565b8063c7d6e9061462000ecf578063cb9ae7071462000ee7578063d147463e1462000eff578063d4964f4a1462000f17576200045f565b8063bafedcaa11620000fd578063bafedcaa1462000e6f578063c18452fc1462000e87578063c57981b51462000e9f578063c5fcc9681462000eb7576200045f565b8063af940b4c1462000dc1578063b00cf0491462000e16578063b5ade81b1462000e4d578063b75e8b391462000e65576200045f565b806395d89b4111620001c3578063a1e00c35116200018d578063a1e00c351462000d0b578063a486309d1462000d23578063a68eb88e1462000d54578063a9059cbb1462000d6c578063ade13a341462000da9576200045f565b806395d89b411462000c6a57806397566aa01462000c825780639cee21421462000cbc578063a12ab7701462000cf3576200045f565b8063911e71cb1162000205578063911e71cb1462000c1057806393da2cc31462000c1a57806394eb42371462000c3257806394f503221462000c60576200045f565b80638a769d351462000aef5780638ae0368b1462000b075780638da5cb5b1462000b1f5780638f4ffcb11462000b37576200045f565b806332e99708116200034f5780636de9f32b11620002d757806381269a5611620002a157806381269a5614620009fb578063829965cc1462000a3b57806387a2a9d61462000a53578063895358031462000a6b57806389f354681462000aa8576200045f565b80636de9f32b146200092f5780636fd396d6146200094757806370a08231146200095f5780637556ce4e1462000996576200045f565b80634ef3762811620003195780634ef3762814620008595780634fa972e1146200087157806352ac18a214620008895780635fd6d53214620008e4576200045f565b806332e9970814620007f95780633eaaf86b14620008115780634849f5c81462000829578063490203a71462000841576200045f565b806317da485f11620003df5780632381a60e11620003a95780632381a60e146200073c57806323b872dd14620007545780632d38bf7a146200079b578063313ce56714620007b3578063329bfc3314620007e1576200045f565b806317da485f14620006a15780631801fbe514620006b957806318160ddd14620006ed57806319ab453c1462000705576200045f565b806313af4035116200042157806313af403514620005d3578063150505ca146200060c578063163aa00d146200064057806316b627d1146200066a576200045f565b806306fdde03146200046457806308acece214620004f457806308eaae4d1462000545578063095ea7b31462000596576200045f565b366200045f57005b600080fd5b3480156200047157600080fd5b506200047c62001044565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620004b85781810151838201526020016200049e565b50505050905090810190601f168015620004e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200050157600080fd5b5062000531600480360360408110156200051a57600080fd5b506001600160a01b038135169060200135620010d6565b604080519115158252519081900360200190f35b3480156200055257600080fd5b5062000573600480360360208110156200056b57600080fd5b5035620010f2565b604080516001600160a01b03909316835260208301919091528051918290030190f35b348015620005a357600080fd5b506200053160048036036040811015620005bc57600080fd5b506001600160a01b0381351690602001356200117e565b348015620005e057600080fd5b506200060a60048036036020811015620005f957600080fd5b50356001600160a01b0316620011cf565b005b3480156200061957600080fd5b506200062462001286565b604080516001600160a01b039092168252519081900360200190f35b3480156200064d57600080fd5b506200065862001295565b60408051918252519081900360200190f35b3480156200067757600080fd5b5062000531600480360360208110156200069057600080fd5b50356001600160a01b03166200129b565b348015620006ae57600080fd5b5062000658620012b0565b348015620006c657600080fd5b506200053160048036036040811015620006df57600080fd5b5080359060200135620012d0565b348015620006fa57600080fd5b506200065862001824565b3480156200071257600080fd5b506200060a600480360360208110156200072b57600080fd5b50356001600160a01b03166200182a565b3480156200074957600080fd5b506200065862001a1b565b3480156200076157600080fd5b5062000531600480360360608110156200077a57600080fd5b506001600160a01b0381358116916020810135909116906040013562001a21565b348015620007a857600080fd5b506200065862001a3d565b348015620007c057600080fd5b50620007cb62001a43565b6040805160ff9092168252519081900360200190f35b348015620007ee57600080fd5b506200062462001a48565b3480156200080657600080fd5b506200065862001a57565b3480156200081e57600080fd5b506200065862001a5d565b3480156200083657600080fd5b506200057362001a63565b3480156200084e57600080fd5b506200065862001ae7565b3480156200086657600080fd5b506200065862001b02565b3480156200087e57600080fd5b506200065862001b08565b3480156200089657600080fd5b5062000531600480360360c0811015620008af57600080fd5b508035906020810135906001600160a01b0360408201358116916060810135821691608082013581169160a001351662001b0e565b348015620008f157600080fd5b5062000531600480360360808110156200090a57600080fd5b508035906020810135906001600160a01b036040820135169060600135151562001e98565b3480156200093c57600080fd5b506200065862002127565b3480156200095457600080fd5b50620006246200212d565b3480156200096c57600080fd5b5062000658600480360360208110156200098557600080fd5b50356001600160a01b03166200213c565b348015620009a357600080fd5b5062000531600480360360e0811015620009bc57600080fd5b508035906020810135906001600160a01b0360408201358116916060810135821691608082013581169160a081013582169160c0909101351662002149565b34801562000a0857600080fd5b50620005316004803603608081101562000a2157600080fd5b508035906020810135906040810135906060013562002532565b34801562000a4857600080fd5b506200065862002581565b34801562000a6057600080fd5b506200065862002587565b34801562000a7857600080fd5b50620006586004803603604081101562000a9157600080fd5b506001600160a01b0381351690602001356200258d565b34801562000ab557600080fd5b50620005316004803603606081101562000ace57600080fd5b506001600160a01b03813581169160208101359091169060400135620025a2565b34801562000afc57600080fd5b5062000658620025b4565b34801562000b1457600080fd5b5062000658620025ba565b34801562000b2c57600080fd5b5062000624620025c0565b34801562000b4457600080fd5b506200060a6004803603608081101562000b5d57600080fd5b6001600160a01b03823581169260208101359260408201359092169181019060808101606082013564010000000081111562000b9857600080fd5b82018360208201111562000bab57600080fd5b8035906020019184600183028401116401000000008311171562000bce57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620025cf945050505050565b6200060a62002669565b34801562000c2757600080fd5b5062000624620026f7565b34801562000c3f57600080fd5b506200060a6004803603602081101562000c5857600080fd5b503562002706565b6200060a6200281f565b34801562000c7757600080fd5b506200047c6200295d565b34801562000c8f57600080fd5b50620006586004803603606081101562000ca857600080fd5b50803590602081013590604001356200297e565b34801562000cc957600080fd5b50620005316004803603602081101562000ce257600080fd5b50356001600160a01b0316620029b8565b34801562000d0057600080fd5b5062000624620029d6565b34801562000d1857600080fd5b5062000658620029e5565b6200060a6004803603604081101562000d3b57600080fd5b506001600160a01b0381351690602001351515620029eb565b34801562000d6157600080fd5b506200065862002e68565b34801562000d7957600080fd5b50620005316004803603604081101562000d9257600080fd5b506001600160a01b03813516906020013562002e6e565b34801562000db657600080fd5b506200065862002e80565b34801562000dce57600080fd5b5062000531600480360360a081101562000de757600080fd5b508035906020810135906001600160a01b03604082013581169160608101358216916080909101351662002e86565b34801562000e2357600080fd5b50620006586004803603602081101562000e3c57600080fd5b50356001600160a01b0316620031a3565b34801562000e5a57600080fd5b506200065862003229565b6200060a6200322f565b34801562000e7c57600080fd5b506200065862003310565b34801562000e9457600080fd5b506200062462003316565b34801562000eac57600080fd5b506200065862003325565b34801562000ec457600080fd5b50620006246200332a565b34801562000edc57600080fd5b506200062462003339565b34801562000ef457600080fd5b5062000658620033ee565b34801562000f0c57600080fd5b5062000658620033f4565b6200060a6004803603604081101562000f2f57600080fd5b5080359060200135620033fa565b34801562000f4a57600080fd5b5062000658620036de565b34801562000f6257600080fd5b50620006586004803603604081101562000f7b57600080fd5b506001600160a01b0381358116916020013516620036e4565b34801562000fa157600080fd5b50620005316004803603606081101562000fba57600080fd5b50803590602081013590604001356001600160a01b0316620036f2565b34801562000fe457600080fd5b50620005316004803603608081101562000ffd57600080fd5b508035906020810135906001600160a01b0360408201358116916060013516620039d1565b6200060a600480360360208110156200103a57600080fd5b5035151562003c1e565b601d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620010ce5780601f10620010a257610100808354040283529160200191620010ce565b820191906000526020600020905b815481529060010190602001808311620010b057829003601f168201915b505050505081565b6000620010e833338585600162003d44565b5060015b92915050565b601f546040805163e2095c0760e01b815260048101849052815160009384936001600160a01b039091169263e2095c079260248083019392829003018186803b1580156200113f57600080fd5b505afa15801562001154573d6000803e3d6000fd5b505050506040513d60408110156200116b57600080fd5b5080516020909101519092509050915091565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a3620010e83384846200403e565b6000546001600160a01b031633146200121c576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b60185481565b601e6020526000908152604090205460ff1681565b6000620012cb600b54600a5462003cef90919063ffffffff16565b905090565b600c54604080516020808201939093523360601b81830152605480820186905282518083039091018152607490910190915280519101206000908281146200134a5760405162461bcd60e51b815260040180806020018281038252602e81526020018062005920602e913960400191505060405180910390fd5b600b5481106200138c5760405162461bcd60e51b8152600401808060200182810382526028815260200180620058f86028913960400191505060405180910390fd5b600c546000908152601960205260409020548015620013dd5760405162461bcd60e51b8152600401808060200182810382526030815260200180620059806030913960400191505060405180910390fd5b600c5460009081526019602052604090208290556007546003166200151e57601154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156200144857600080fd5b505afa1580156200145d573d6000803e3d6000fd5b505050506040513d60208110156200147457600080fd5b505190506201b19881106200151c5762001495600482026201b198620040a1565b6011546040805163a9059cbb60e01b81523360048201526024810184905290519293506001600160a01b039091169163a9059cbb916044808201926020929091908290030181600087803b158015620014ed57600080fd5b505af115801562001502573d6000803e3d6000fd5b505050506040513d60208110156200151957600080fd5b50505b505b600f54601a546200152f916200410e565b601a55600d546200154a90640ba43b74009060020a62003cef565b600f819055601080546001600160a01b03191633179055601755436018819055620015759062002706565b6200158033620029b8565b1580156200159657506200159430620029b8565b155b15620015fb57620015c7303033620015bb600a600f54620040a190919063ffffffff16565b600f5403600162003d44565b600354600f54620015f591309182916001600160a01b031690620015ed90600a620040a1565b600162003d44565b6200160d565b6200160d303033600f54600162003d44565b47601581905533906200162290600862003cef565b60145410156200181857600354601f546040805163fd6aad2560e01b81526001600160a01b039384166004820181905291516002949293600093169163fd6aad25916024808301926020929190829003018186803b1580156200168457600080fd5b505afa15801562001699573d6000803e3d6000fd5b505050506040513d6020811015620016b057600080fd5b50519050605e81118015620016c657506101bc81105b156200173057620016d98360016200410e565b506011546003546001600160a01b039081169116146200173057816001600160a01b03166108fc620017186002601454620040a190919063ffffffff16565b6040518115909202916000818181858888f150505050505b601f546040805163fd6aad2560e01b81526001600160a01b0387811660048301529151600093929092169163fd6aad2591602480820192602092909190829003018186803b1580156200178257600080fd5b505afa15801562001797573d6000803e3d6000fd5b505050506040513d6020811015620017ae57600080fd5b50519050600281118015620017c35750605f81105b15620017d857620017d684600162004158565b505b846001600160a01b03166108fc620017fc86601454620040a190919063ffffffff16565b6040518115909202916000818181858888f15050505050505050505b50600195945050505050565b60045481565b6000546001600160a01b0316331462001877576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b601f5466276f642501c00090600160a81b900460ff16156200189557fe5b601f805460ff60a81b1916600160a81b179055664a9b6384488000600555600a54620018c49061c7ff62003cef565b600b556000600d55436006556127c46007819055600f548102601a55620018eb9062002706565b604051620018f99062004aae565b604051809103906000f08015801562001916573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039283161790819055604080516000815291909216602082015281517f4b388b1aa01b2653af632da9d80cca5cfe489300086d04070fca9dc860629d4f929181900390910190a1601a54604080519183018252516001600160a01b0384169160009160008051602062005a7b8339815191529181900360200190a3620019b782601a548301620041a6565b6005546040805191825251309160009160008051602062005a7b8339815191529181900360200190a3620019ee30600554620041a6565b50601180546001600160a01b039092166001600160a01b0319928316811790915560008054909216179055565b600f5481565b600062001a3333858585600062003d44565b5060019392505050565b600d5481565b600981565b6003546001600160a01b031690565b600b5490565b60055481565b601f5460408051637f36e6dd60e11b8152815160009384936001600160a01b039091169263fe6dcdba9260048083019392829003018186803b15801562001aa957600080fd5b505afa15801562001abe573d6000803e3d6000fd5b505050506040513d604081101562001ad557600080fd5b50805160209091015190925090509091565b600d54600090620012cb90640ba43b74009060020a62003cef565b600c5490565b600e5481565b601f54600090600160c81b900460ff1662001b60576040805162461bcd60e51b815260206004820152600d60248201526c57686974656c6973742069742160981b604482015290519081900360640190fd5b6001600160a01b03821630141562001bb7576040805162461bcd60e51b81526020600482015260156024820152744e6f206d696e74696e67206f757220746f6b656e2160581b604482015290519081900360640190fd5b62001bc6878787878762002e86565b62001c03576040805162461bcd60e51b815260206004820152600860248201526704e756875687568360c41b604482015290519081900360640190fd5b816001600160a01b0316856001600160a01b0316141562001c57576040805162461bcd60e51b8152602060048201526009602482015268616e6e6f79696e673560b81b604482015290519081900360640190fd5b816001600160a01b0316846001600160a01b0316141562001cb2576040805162461bcd60e51b815260206004820152601060248201526f185b9b9bde5a5b99c80c88185b99080d60821b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316141562001d0d576040805162461bcd60e51b815260206004820152601060248201526f185b9b9bde5a5b99c80cc8185b99080d60821b604482015290519081900360640190fd5b6011546001600160a01b038381169116141562001d5c576040805162461bcd60e51b8152602060048201526008602482015267616e6e6f79696e6760c01b604482015290519081900360640190fd5b600d6007548162001d6957fe5b0662001e8b576000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801562001dbf57600080fd5b505afa15801562001dd4573d6000803e3d6000fd5b505050506040513d602081101562001deb57600080fd5b5051905062001e01600d8202620186a0620040a1565b9050826001600160a01b031663a9059cbb33836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801562001e5b57600080fd5b505af115801562001e70573d6000803e3d6000fd5b505050506040513d602081101562001e8757600080fd5b5050505b5060019695505050505050565b60006001600160a01b03831630141562001ef1576040805162461bcd60e51b81526020600482015260156024820152744e6f206d696e74696e67206f757220746f6b656e2160581b604482015290519081900360640190fd5b6001821515141562001f535762001f0a858585620036f2565b62001f4d576040805162461bcd60e51b815260206004820152600e60248201526d467265656d696e7420697373756560901b604482015290519081900360640190fd5b62001f9e565b62001f5f8585620012d0565b62001f9e576040805162461bcd60e51b815260206004820152600a6024820152696d696e7420697373756560b01b604482015290519081900360640190fd5b6011546001600160a01b038481169116141562001fed5760405162461bcd60e51b8152600401808060200182810382526027815260200180620059b06027913960400191505060405180910390fd5b60026007548162001ffa57fe5b066200211c576000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156200205057600080fd5b505afa15801562002065573d6000803e3d6000fd5b505050506040513d60208110156200207c57600080fd5b505190506200209260028202620186a062003cef565b9050836001600160a01b031663a9059cbb33836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015620020ec57600080fd5b505af115801562002101573d6000803e3d6000fd5b505050506040513d60208110156200211857600080fd5b5050505b506001949350505050565b601a5481565b6010546001600160a01b031681565b6000620010ec8262004242565b60006200215630620029b8565b6200219f576040805162461bcd60e51b815260206004820152601460248201527311d95d081a195c881bdb881d1a185d081b1a5cdd60621b604482015290519081900360640190fd5b6001600160a01b038216301415620021f6576040805162461bcd60e51b81526020600482015260156024820152744e6f206d696e74696e67206f757220746f6b656e2160581b604482015290519081900360640190fd5b62002205888888888862002e86565b62002242576040805162461bcd60e51b815260206004820152600860248201526704e756875687568360c41b604482015290519081900360640190fd5b816001600160a01b0316866001600160a01b0316141562002295576040805162461bcd60e51b8152602060048201526008602482015267616e6e6f79696e6760c01b604482015290519081900360640190fd5b816001600160a01b0316856001600160a01b03161415620022f0576040805162461bcd60e51b815260206004820152601060248201526f616e6e6f79696e67203220616e64203560801b604482015290519081900360640190fd5b816001600160a01b0316846001600160a01b031614156200234b576040805162461bcd60e51b815260206004820152601060248201526f616e6e6f79696e67203320616e64203560801b604482015290519081900360640190fd5b6011546001600160a01b03838116911614156200239a576040805162461bcd60e51b8152602060048201526008602482015267616e6e6f79696e6760c01b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b03161415620023f5576040805162461bcd60e51b815260206004820152601060248201526f616e6e6f79696e67203420616e64203560801b604482015290519081900360640190fd5b6017600754816200240257fe5b0662002524576000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156200245857600080fd5b505afa1580156200246d573d6000803e3d6000fd5b505050506040513d60208110156200248457600080fd5b505190506200249a60178202620186a0620040a1565b9050826001600160a01b031663a9059cbb33836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015620024f457600080fd5b505af115801562002509573d6000803e3d6000fd5b505050506040513d60208110156200252057600080fd5b5050505b506001979650505050505050565b6040805160208082018590523360601b8284015260548083018890528351808403909101815260749092019092528051910120600090828111156200257657600080fd5b909314949350505050565b60075481565b600a5481565b60006200259b83836200427b565b9392505050565b600062001a3333858585600162003d44565b600b5481565b600c5481565b6000546001600160a01b031681565b6001600160a01b0382163014620025e557600080fd5b6040805163a9059cbb60e01b81526001600160a01b0386166004820152602481018590529051309163a9059cbb9160448083019260209291908290030181600087803b1580156200263557600080fd5b505af11580156200264a573d6000803e3d6000fd5b505050506040513d60208110156200266157600080fd5b505050505050565b620026f560016002601f60009054906101000a90046001600160a01b03166001600160a01b031663949d225d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620026c057600080fd5b505afa158015620026d5573d6000803e3d6000fd5b505050506040513d6020811015620026ec57600080fd5b505103620033fa565b565b6003546001600160a01b031681565b600e54600d5462002730906200272690640ba43b74009060020a62003cef565b601a54906200410e565b1180156200274057506027600d54105b156200276357600d80546001019055600b546200275f90600362003cef565b600b555b600d546005546200277a9160010160020a62003cef565b60055403600e55600754620027919060016200410e565b60078190556008549081620027a257fe5b06620028135762030d4060145460155481620027ba57fe5b0411620027f557601654601454620027d490600262003cef565b1115620027ef57601454620027eb90600262003cef565b6014555b62002809565b60145462002805906005620042c3565b6014555b6200281362004326565b50600019430140600c55565b600f546200282f906032620040a1565b601154604080516370a0823160e01b81523360048201529051606493909302926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156200288257600080fd5b505afa15801562002897573d6000803e3d6000fd5b505050506040513d6020811015620028ae57600080fd5b50511015620028ef5760405162461bcd60e51b8152600401808060200182810382526053815260200180620058a56053913960600191505060405180910390fd5b6012546101f402341015620029365760405162461bcd60e51b815260040180806020018281038252603f81526020018062005a9b603f913960400191505060405180910390fd5b600b5462002946906003620042c3565b600b819055600a541015620026f557600a54600b55565b60405180604001604052806005815260200164504d42544360d81b81525081565b6040805160208082018490523360601b82840152605480830187905283518084039091018152607490920190925280519101209392505050565b6001600160a01b03166000908152601e602052604090205460ff1690565b601f546001600160a01b031681565b60165481565b601154604080516370a0823160e01b81526001600160a01b038581166004830152915191909216916370a08231916024808301926020929190829003018186803b15801562002a3957600080fd5b505afa15801562002a4e573d6000803e3d6000fd5b505050506040513d602081101562002a6557600080fd5b50516020558062002ca957600f54600502602054101562002aef57604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b0382166000908152601e60205260409020805460ff191682151517905562002e64565b600f5462002aff90603262003cef565b601154604080516370a0823160e01b8152336004820152905160fa93909302926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801562002b5257600080fd5b505afa15801562002b67573d6000803e3d6000fd5b505050506040513d602081101562002b7e57600080fd5b5051101562002bcd576040805162461bcd60e51b815260206004820152601660248201527542616c616e6365206f662048507a20746f6f206c6f7760501b604482015290519081900360640190fd5b600f5462002bdd90603262003cef565b60c8026020541062002c36576040805162461bcd60e51b815260206004820152601c60248201527f486173206f766572203230302048507a2063616e7420756e6c69737400000000604482015290519081900360640190fd5b600f5462002c4690603262003cef565b601354610dac020234101562002ca3576040805162461bcd60e51b815260206004820152601760248201527f53656e642032303030206f72206d6f7265204d61746963000000000000000000604482015290519081900360640190fd5b62002dfa565b6001306001600160a01b038416141562002ccd5762002cca8160036200410e565b90505b600f5462002cdd90603262003cef565b601154604080516370a0823160e01b8152336004820152905161037893909302926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801562002d3157600080fd5b505afa15801562002d46573d6000803e3d6000fd5b505050506040513d602081101562002d5d57600080fd5b5051101562002d9e5760405162461bcd60e51b8152600401808060200182810382526024815260200180620058426024913960400191505060405180910390fd5b600f5460135462002db89190830202606402603262003cef565b34101562002df85760405162461bcd60e51b815260040180806020018281038252602281526020018062005a326022913960400191505060405180910390fd5b505b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b0382166000908152601e60205260409020805460ff19168215151790555b5050565b60145481565b6000620010e833338585600062003d44565b60155481565b601f54600090600160b81b900460ff1662002ed8576040805162461bcd60e51b815260206004820152600d60248201526c57686974656c6973742069742160981b604482015290519081900360640190fd5b6001600160a01b03821630141562002f2f576040805162461bcd60e51b81526020600482015260156024820152744e6f206d696e74696e67206f757220746f6b656e2160581b604482015290519081900360640190fd5b62002f3d86868686620039d1565b62002f7a576040805162461bcd60e51b815260206004820152600860248201526704e756875687568360c41b604482015290519081900360640190fd5b816001600160a01b0316846001600160a01b0316141562002fce576040805162461bcd60e51b8152602060048201526009602482015268616e6e6f79696e673160b81b604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316141562003022576040805162461bcd60e51b815260206004820152600960248201526830b73737bcb4b7339960b91b604482015290519081900360640190fd5b6011546001600160a01b038381169116141562003072576040805162461bcd60e51b8152602060048201526009602482015268616e6e6f79696e673360b81b604482015290519081900360640190fd5b600780540662001818576000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015620030cc57600080fd5b505afa158015620030e1573d6000803e3d6000fd5b505050506040513d6020811015620030f857600080fd5b505190506200310e60078202620186a0620040a1565b9050826001600160a01b031663a9059cbb33836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156200316857600080fd5b505af11580156200317d573d6000803e3d6000fd5b505050506040513d60208110156200319457600080fd5b50505050600195945050505050565b601f546040805163fd6aad2560e01b81526001600160a01b0384811660048301529151600093929092169163fd6aad2591602480820192602092909190829003018186803b158015620031f557600080fd5b505afa1580156200320a573d6000803e3d6000fd5b505050506040513d60208110156200322157600080fd5b505192915050565b60085481565b600f546200323f906032620040a1565b60135460640202341015620032865760405162461bcd60e51b815260040180806020018281038252602781526020018062005a546027913960400191505060405180910390fd5b604051620032949062004aae565b604051809103906000f080158015620032b1573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039283161790819055604080516000815291909216602082015281517f4b388b1aa01b2653af632da9d80cca5cfe489300086d04070fca9dc860629d4f929181900390910190a1565b60175481565b6001546001600160a01b031681565b60c881565b6011546001600160a01b031681565b601154600354601354604080516323b872dd60e01b81523360048201526001600160a01b03938416602482015260448101929092525160009392909216916323b872dd9160648082019260209290919082900301818787803b1580156200339f57600080fd5b505af1158015620033b4573d6000803e3d6000fd5b505050506040513d6020811015620033cb57600080fd5b5050600754620033dd9030906200444b565b50506003546001600160a01b031690565b60065481565b60205481565b6032600f5460135460050202816200340e57fe5b043410156200344f5760405162461bcd60e51b815260040180806020018281038252602481526020018062005a0e6024913960400191505060405180910390fd5b600f54601154604080516370a0823160e01b815233600482015290516005909302926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015620034a457600080fd5b505afa158015620034b9573d6000803e3d6000fd5b505050506040513d6020811015620034d057600080fd5b50511015620035115760405162461bcd60e51b8152600401808060200182810382526037815260200180620059d76037913960400191505060405180910390fd5b815b81811015620036d957600f54601154601f5460408051630af2b3e560e01b81526004810186905290516005909402936001600160a01b03938416936370a08231931691630af2b3e5916024808301926020929190829003018186803b1580156200357c57600080fd5b505afa15801562003591573d6000803e3d6000fd5b505050506040513d6020811015620035a857600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152516024808301926020929190829003018186803b158015620035f057600080fd5b505afa15801562003605573d6000803e3d6000fd5b505050506040513d60208110156200361c57600080fd5b505111620036d057601f5460408051630af2b3e560e01b8152600481018490529051600092601e9284926001600160a01b0390921691630af2b3e591602480820192602092909190829003018186803b1580156200367957600080fd5b505afa1580156200368e573d6000803e3d6000fd5b505050506040513d6020811015620036a557600080fd5b50516001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b60010162003513565b505050565b60095481565b60006200259b838362004592565b6000306001600160a01b038316148015906200371c57506011546001600160a01b03838116911614155b620037595760405162461bcd60e51b815260040180806020018281038252603f81526020018062005866603f913960400191505060405180910390fd5b600c54604080516020808201939093523360601b8183015260548082018890528251808303909101815260749091019091528051910120838114620037d05760405162461bcd60e51b815260040180806020018281038252602e81526020018062005920602e913960400191505060405180910390fd5b600b548110620038125760405162461bcd60e51b8152600401808060200182810382526028815260200180620058f86028913960400191505060405180910390fd5b600c546000908152601960205260409020548015620038635760405162461bcd60e51b8152600401808060200182810382526030815260200180620059806030913960400191505060405180910390fd5b600c5460009081526019602090815260409182902084905581516370a0823160e01b815230600482015291516001600160a01b0387169263a9059cbb92339262003905926127109287926370a08231926024808201939291829003018186803b158015620038d057600080fd5b505afa158015620038e5573d6000803e3d6000fd5b505050506040513d6020811015620038fc57600080fd5b505190620040a1565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156200394c57600080fd5b505af115801562003961573d6000803e3d6000fd5b505050506040513d60208110156200397857600080fd5b5050600f54601a546200398b916200410e565b601a55600d54620039a690640ba43b74009060020a62003cef565b600f819055601080546001600160a01b03191633179055601755436018819055620018189062002706565b601f54600090600160c01b900460ff1662003a23576040805162461bcd60e51b815260206004820152600d60248201526c57686974656c6973742069742160981b604482015290519081900360640190fd5b62003a40858585601f60149054906101000a900460ff1662001e98565b62003a7d576040805162461bcd60e51b815260206004820152600860248201526704e756875687568360c41b604482015290519081900360640190fd5b6011546001600160a01b038381169116141562003acc5760405162461bcd60e51b8152600401808060200182810382526027815260200180620059b06027913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b0316141562003b1f576040805162461bcd60e51b8152602060048201526008602482015267616e6e6f79696e6760c01b604482015290519081900360640190fd5b60036007548162003b2c57fe5b066200211c576000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801562003b8257600080fd5b505afa15801562003b97573d6000803e3d6000fd5b505050506040513d602081101562003bae57600080fd5b5051905062003bc460038202620186a062003cef565b9050826001600160a01b031663a9059cbb33836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015620020ec57600080fd5b60125460c80234101562003c645760405162461bcd60e51b81526004018080602001828103825260328152602001806200594e6032913960400191505060405180910390fd5b601f805460ff60b01b1916600160b01b17905560125461012c02341062003c9957601f805460ff60b81b1916600160b81b1790555b60125461019002341062003cbb57601f805460ff60c01b1916600160c01b1790555b6012546101f402341062003cec57601f805460ff60c81b1960ff60a01b19909116600160a01b1716600160c81b1790555b50565b60008162003d32576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b81838162003d3c57fe5b049392505050565b8162003d8b57826001600160a01b0316846001600160a01b031660008051602062005a7b83398151915260006040518082815260200191505060405180910390a362004037565b600062003d988562004242565b90508281101562003de5576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b856001600160a01b0316856001600160a01b03161462003e8057600062003e0d868862004592565b9050600019811462003e7e578381101562003e66576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b62003e7e868862003e78848862004158565b6200403e565b505b8260008062003e9b8862003e95868662004158565b620041a6565b848062003ec2575062003eae87620029b8565b8062003ec0575062003ec088620029b8565b155b1562003fe35762003ed58660c8620040a1565b91508560011462003ee7578162003eea565b60005b905062003f0462003efc83836200410e565b849062004158565b6011546040805185815290519295506001600160a01b0391821692918b169160008051602062005a7b8339815191529181900360200190a3600062003f4a89886200444b565b905062003f688162003e958462003f618562004242565b906200410e565b6040805183815290516001600160a01b038316917f9c2270628a9b29d30ae96b6c4c14ed646ee134febdce38a5b77f2bde9cea2e20919081900360200190a2806001600160a01b0316896001600160a01b031660008051602062005a7b833981519152846040518082815260200191505060405180910390a3505b62003ff88762003e958562003f618b62004242565b866001600160a01b0316886001600160a01b031660008051602062005a7b833981519152856040518082815260200191505060405180910390a3505050505b5050505050565b6040805168616c6c6f77616e636560b81b6020808301919091526bffffffffffffffffffffffff19606086901b1660298301528251601d818403018152603d9092019092528051910120620036d990826200409986620045e5565b9190620045f1565b600081620040e4576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b6000828481620040f057fe5b049050828481620040fd57fe5b06156200259b576001019392505050565b6000828201838110156200259b576040805162461bcd60e51b815260206004820152600c60248201526b416464206f766572666c6f7760a01b604482015290519081900360640190fd5b600081831015620041a0576040805162461bcd60e51b815260206004820152600d60248201526c53756220756e646572666c6f7760981b604482015290519081900360640190fd5b50900390565b620041d77fea06f38f7e4f15e87567361213c28f235cccdaa1d7fd34c9db1dfe9489c6a091826200409985620045e5565b601f546040805163516c1daf60e11b81526001600160a01b038581166004830152602482018590529151919092169163a2d83b5e91604480830192600092919082900301818387803b1580156200422d57600080fd5b505af115801562002661573d6000803e3d6000fd5b6000620010ec7fea06f38f7e4f15e87567361213c28f235cccdaa1d7fd34c9db1dfe9489c6a0916200427484620045e5565b906200474d565b60006200259b826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001206200427485620045e5565b600082620042d457506000620010ec565b82820282848281620042e257fe5b04146200259b576040805162461bcd60e51b815260206004820152600d60248201526c4d756c74206f766572666c6f7760981b604482015290519081900360640190fd5b60065460085443919091039061012c810280831015620043bb5760006200435b8462004354846064620042c3565b9062003cef565b905060006200437a6103e86200437384606462004158565b90620048c7565b9050620043af620043a5826200439e6107d0600b5462003cef90919063ffffffff16565b90620042c3565b600b549062004158565b600b55506200441b9050565b6000620043cf8262004354866064620042c3565b90506000620043e76103e86200437384606462004158565b9050620044156200440b826200439e6107d0600b5462003cef90919063ffffffff16565b600b54906200410e565b600b5550505b43600655600954600b5410156200443357600954600b555b600a54600b541115620036d957600a54600b55505050565b6000806200445983620048e1565b905060006200446985836200427b565b90506200447b85838360010162004900565b601f546040805163949d225d60e01b815290516001600160a01b0390921691630af2b3e5916200450b91899186918891600191889163949d225d916004808301926020929190829003018186803b158015620044d657600080fd5b505afa158015620044eb573d6000803e3d6000fd5b505050506040513d60208110156200450257600080fd5b5051036200494a565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156200454057600080fd5b505afa15801562004555573d6000803e3d6000fd5b505050506040513d60208110156200456c57600080fd5b5051600380546001600160a01b0319166001600160a01b03831617905595945050505050565b60006200259b82604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012062004274855b6001600160a01b031690565b6000620045fe84620049ac565b90506200460b8162004a3d565b6200461b576200461b8462004a75565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b60208310620046955780518252601f19909201916020918201910162004674565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114620046f9576040519150601f19603f3d011682016040523d82523d6000602084013e620046fe565b606091505b505090508062004037576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b6000806200475b84620049ac565b9050620047688162004a3d565b62004778575060009050620010ec565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b1781529151815160009384936001600160a01b038716939092909182918083835b60208310620047ee5780518252601f199092019160209182019101620047cd565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462004850576040519150601f19603f3d011682016040523d82523d6000602084013e62004855565b606091505b509150915081620048a5576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b808060200190516020811015620048bb57600080fd5b50519695505050505050565b600081831115620048da575080620010ec565b5090919050565b6000600019825b60019190910190600a900480620048e8575092915050565b620036d9826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b6200409986620045e5565b604080516bffffffffffffffffffffffff19606087901b166020808301919091526034820186905260548083018690528351808403909101815260749092019092528051910120600090600183018181620049a157fe5b069695505050505050565b600060ff60f81b308360405180602001620049c79062004abc565b6020820181038252601f19601f820116604052508051906020012060405160200180856001600160f81b0319168152600101846001600160a01b031660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050919050565b6000813f80158015906200259b57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b60006040518060200162004a899062004abc565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b610c518062004acb83390190565b610126806200571c8339019056fe608060405234801561001057600080fd5b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1610074600161007960201b6105241760201c565b6100e2565b8054156100cd576040805162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b80546001810182556000918252602082200155565b610b60806100f16000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d1461012e578063a2d83b5e14610136578063e2095c0714610162578063fd6aad25146101a2578063fe6dcdba146101c85761009e565b80630af2b3e5146100a357806313af4035146100dc57806331fb7127146101045780637c32cdd11461011e5780638da5cb5b14610126575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d0565b604080516001600160a01b039092168252519081900360200190f35b610102600480360360208110156100f257600080fd5b50356001600160a01b03166101e4565b005b61010c61029a565b60408051918252519081900360200190f35b61010c6102a0565b6100c06102a6565b61010c6102b5565b6101026004803603604081101561014c57600080fd5b506001600160a01b0381351690602001356102c6565b61017f6004803603602081101561017857600080fd5b50356104dc565b604080516001600160a01b03909316835260208301919091528051918290030190f35b61010c600480360360208110156101b857600080fd5b50356001600160a01b03166104f4565b61017f61050f565b60006101dd600183610583565b5092915050565b6000546001600160a01b03163314610230576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b61020081565b61020090565b6000546001600160a01b031681565b60006102c160016105b6565b905090565b6000546001600160a01b03163314610312576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600061031e60016105b6565b90508061037a57604080518381526000602082015281516001600160a01b038616927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a2610374600184846105be565b506104d8565b60006103866001610683565b915061039590506001856106b0565b15610401576103a6600185856106d1565b826103fc576103b560016107ed565b505060408051600081526020810184905281516001600160a01b038716927f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e7928290030190a25b6104d5565b821580159061041a575061020082108061041a57508281105b156104d55761020082106104855760008061043560016107ed565b91509150816001600160a01b03167f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e78286604051808381526020018281526020019250505060405180910390a250505b610491600185856105be565b604080518481526020810184905281516001600160a01b038716927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a25b50505b5050565b6000806104ea600184610583565b915091505b915091565b6001600160a01b031660009081526002602052604090205490565b60008061051c6001610683565b915091509091565b80541561056e576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b80546001810182556000918252602082200155565b6000806105ab84600001846001018154811061059b57fe5b906000526020600020015461090a565b915091509250929050565b546000190190565b6001600160a01b03821660009081526001840160205260409020541561062b576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b6000610637838361091f565b845460018101865560008681526020902001819055845490915060001901610660858284610933565b6001600160a01b0390941660009081526001909501602052505060409092205550565b805460009081906002111561069d575060009050806104ef565b6104ea8360000160018154811061059b57fe5b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b03821660009081526001840160205260409020548061073e576040805162461bcd60e51b815260206004820152601960248201527f54686520656e74727920646f6573206e6f742065786973747300000000000000604482015290519081900360640190fd5b600061074a848461091f565b9050600085600001838154811061075d57fe5b906000526020600020015490506000818310156107865761077f878585610a0a565b90506107a2565b818311156107995761077f878585610933565b505050506107e8565b828760000182815481106107b257fe5b6000918252602090912001558084146107e3576001600160a01b038616600090815260018801602052604090208190555b505050505b505050565b8054600090819060018111610849576040805162461bcd60e51b815260206004820152601860248201527f546865206865617020646f6573206e6f74206578697374730000000000000000604482015290519081900360640190fd5b61085c8460000160018154811061059b57fe5b6001600160a01b03821660009081526001870160205260408120559093509150600281141561088a57610904565b600084600001600183038154811061089e57fe5b9060005260206000200154905080856000016001815481106108bc57fe5b60009182526020909120015560016108d5868284610a0a565b9050808660010160006108e785610b1d565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b196001600160a01b0381169160a09190911c90565b60a01b6001600160a01b0391909116171990565b8160018114610a0357600084600283048154811061094d57fe5b906000526020600020015490505b82811015610a0157828186600285048154811061097457fe5b90600052602060002001600088600001868154811061098f57fe5b60009182526020822001939093555091909155829060018701906109b284610b1d565b6001600160a01b0316815260208101919091526040016000205560028204915081600114156109e057610a01565b8460028304815481106109ef57fe5b9060005260206000200154905061095b565b505b9392505050565b8254829060001981015b81836002021015610b145785546002840290600090889083908110610a3557fe5b90600052602060002001549050600082841115610a8d576000896000018460010181548110610a6057fe5b9060005260206000200154905080831015610a8357809150836001019350610a87565b8291505b50610a90565b50805b80871115610aa057505050610b14565b80878a6000018881548110610ab157fe5b9060005260206000200160008c6000018781548110610acc57fe5b60009182526020822001939093555091909155869060018b0190610aef84610b1d565b6001600160a01b0316815260208101919091526040016000205550909350610a149050565b50509392505050565b196001600160a01b03169056fea2646970667358221220bc3e0c54868a6ff57dc8f580e4a8d92c34266eacde27884171f15e084518862b64736f6c63430007060033608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f5806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea264697066735822122079808abcfe070500cd5078131f45b3a2ed6d586fd139026a10f6adbc2e78e98964736f6c634300070600334d7573742068617665203838382048507a20746f20676574206f6e20746865206c6973744e6f7420616c6c6f77656420746f2075736520504d42544320636f6e7472616374206f72204775696c6420636f6e747261637420696e20465245456d696e744d7573742068617665206c61726765722062616c616e6365206f662048507a2c2066697273742065726120697320313030206d61746963207370656e7420696e20746865206775696c6420636f6e7472616374446967657374206d75737420626520736d616c6c6572207468616e206d696e696e675461726765744f6c64206368616c6c656e67655f646967657374206f722077726f6e67206368616c6c656e67655f6469676573744d7573742073656e64206174206c6561737420313030204d6174696320746f20656e61626c6520457874726120506f6f6c7354686973204368616c6c656e67652077617320616c7265646179206d696e656420627920736f6d656f6e6520656c73654e6f74207468697320636f6e747261637420706c656173652063686f6f736520616e6f746865724d75737420686176652062616c616e6365206c61726765722062616c616e6365206f662048507a2c2066697273742065726120697320354d7573742073656e64206d6f7265204d617469632c206669727374206572612069732035636f73747320313030204d6174696320746f20676574206f6e20746865206c6973744d7573742073656e64204d617469632c2066697273742065726120697320313030204d61746963ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4d7573742073656e64206d6f7265204d6174696320746f206c6f77657220646966666963756c74792062792033782c20436f73747320353030206d61746963a26469706673582212207becbba8ef10cb5f75e9cbdc1f048b733ab75e441dd49d5c98e34c597031503a64736f6c63430007060033
Deployed ByteCode Sourcemap
16888:29304:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19127:47;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45144:176;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;45144:176:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;43973:112;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43973:112:0;;:::i;:::-;;;;-1:-1:-1;;;;;43973:112:0;;;;;;;;;;;;;;;;;;;;;44728:222;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;44728:222:0;;;;;;;;:::i;2183:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2183:134:0;-1:-1:-1;;;;;2183:134:0;;:::i;:::-;;17063:77;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;17063:77:0;;;;;;;;;;;;;;18873:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;19292:43;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19292:43:0;-1:-1:-1;;;;;19292:43:0;;:::i;27124:117::-;;;;;;;;;;;;;:::i;29666:3132::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29666:3132:0;;;;;;;:::i;17548:55::-;;;;;;;;;;;;;:::i;19596:1093::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19596:1093:0;-1:-1:-1;;;;;19596:1093:0;;:::i;18450:74::-;;;;;;;;;;;;;:::i;45328:193::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;45328:193:0;;;;;;;;;;;;;;;;;:::i;18327:25::-;;;;;;;;;;;;;:::i;19227:34::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29562:96;;;;;;;;;;;;;:::i;27032:90::-;;;;;;;;;;;;;:::i;17765:44::-;;;;;;;;;;;;;:::i;44093:96::-;;;;;;;;;;;;;:::i;42830:260::-;;;;;;;;;;;;;:::i;27243:97::-;;;;;;;;;;;;;:::i;18359:84::-;;;;;;;;;;;;;:::i;35535:1011::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35535:1011:0;;;;;;;;-1:-1:-1;;;;;35535:1011:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32820:971::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32820:971:0;;;;;;;;-1:-1:-1;;;;;32820:971:0;;;;;;;;;;;;:::i;18974:24::-;;;;;;;;;;;;;:::i;18531:27::-;;;;;;;;;;;;;:::i;44448:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44448:118:0;-1:-1:-1;;;;;44448:118:0;;:::i;36566:1114::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36566:1114:0;;;;;;;;-1:-1:-1;;;;;36566:1114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;43417:361::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43417:361:0;;;;;;;;;;;;;;;;;:::i;17879:26::-;;;;;;;;;;;;;:::i;18064:37::-;;;;;;;;;;;;;:::i;44316:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;44316:124:0;;;;;;;;:::i;45529:189::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;45529:189:0;;;;;;;;;;;;;;;;;:::i;18108:60::-;;;;;;;;;;;;;:::i;18239:30::-;;;;;;;;;;;;;:::i;1869:20::-;;;;;;;;;;;;;:::i;45728:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45728:216:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45728:216:0;;-1:-1:-1;45728:216:0;;-1:-1:-1;;;;;45728:216:0:i;28420:99::-;;;:::i;17340:22::-;;;;;;;;;;;;;:::i;39204:1364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39204:1364:0;;:::i;27859:555::-;;;:::i;19181:39::-;;;;;;;;;;;;;:::i;43100:270::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43100:270:0;;;;;;;;;;;;:::i;23476:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23476:109:0;-1:-1:-1;;;;;23476:109:0;;:::i;19357:16::-;;;;;;;;;;;;;:::i;18785:43::-;;;;;;;;;;;;;:::i;21928:1538::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21928:1538:0;;;;;;;;;;:::i;18696:43::-;;;;;;;;;;;;;:::i;44958:178::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;44958:178:0;;;;;;;;:::i;18746:32::-;;;;;;;;;;;;;:::i;34607:914::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34607:914:0;;;;;;;;-1:-1:-1;;;;;34607:914:0;;;;;;;;;;;;;;;;;;;;;:::i;44197:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44197:111:0;-1:-1:-1;;;;;44197:111:0;;:::i;17940:43::-;;;;;;;;;;;;;:::i;27579:226::-;;;:::i;18835:31::-;;;;;;;;;;;;;:::i;16985:71::-;;;;;;;;;;;;;:::i;17692:33::-;;;;;;;;;;;;;:::i;18565:::-;;;;;;;;;;;;;:::i;27354:200::-;;;;;;;;;;;;;:::i;17816:56::-;;;;;;;;;;;;;:::i;19569:20::-;;;;;;;;;;;;;:::i;28528:590::-;;;;;;;;;;;;;;;;-1:-1:-1;28528:590:0;;;;;;;:::i;18015:36::-;;;;;;;;;;;;;:::i;44574:146::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;44574:146:0;;;;;;;;;;:::i;37684:1510::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37684:1510:0;;;;;;;;;;;-1:-1:-1;;;;;37684:1510:0;;:::i;33805:794::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33805:794:0;;;;;;;;-1:-1:-1;;;;;33805:794:0;;;;;;;;;;;;:::i;29124:432::-;;;;;;;;;;;;;;;;-1:-1:-1;29124:432:0;;;;:::i;19127:47::-;;;;;;;;;;;;;;;-1:-1:-1;;19127:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;45144:176::-;45217:4;45234:56;45248:10;45260;45272:3;45277:6;45285:4;45234:13;:56::i;:::-;-1:-1:-1;45308:4:0;45144:176;;;;;:::o;43973:112::-;44063:4;;:14;;;-1:-1:-1;;;44063:14:0;;;;;;;;;;44027:7;;;;-1:-1:-1;;;;;44063:4:0;;;;:10;;:14;;;;;;;;;;;:4;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44063:14:0;;;;;;;;;-1:-1:-1;44063:14:0;-1:-1:-1;43973:112:0;;;:::o;44728:222::-;44828:38;;;;;;;;44806:4;;-1:-1:-1;;;;;44828:38:0;;;44837:10;;44828:38;;;;;;;;;;44877:43;44891:10;44903:8;44913:6;44877:13;:43::i;2183:134::-;2135:5;;-1:-1:-1;;;;;2135:5:0;2121:10;:19;2113:42;;;;;-1:-1:-1;;;2113:42:0;;;;;;;;;;;;-1:-1:-1;;;2113:42:0;;;;;;;;;;;;;;;2270:5:::1;::::0;2252:32:::1;::::0;;-1:-1:-1;;;;;2270:5:0;;::::1;2252:32:::0;;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;2295:5;:14:::0;;-1:-1:-1;;;;;;2295:14:0::1;-1:-1:-1::0;;;;;2295:14:0;;;::::1;::::0;;;::::1;::::0;;2183:134::o;17063:77::-;;;-1:-1:-1;;;;;17063:77:0;;:::o;18873:39::-;;;;:::o;19292:43::-;;;;;;;;;;;;;;;:::o;27124:117::-;27176:4;27200:33;27220:12;;27200:15;;:19;;:33;;;;:::i;:::-;27193:40;;27124:117;:::o;29666:3132::-;29813:15;;29796:52;;;;;;;;;;;29830:10;29796:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29786:63;;;;;29737:12;;29934:26;;;29926:85;;;;-1:-1:-1;;;29926:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30112:12;;30094:30;;30086:83;;;;-1:-1:-1;;;30086:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30232:15;;30192:16;30211:37;;;:20;:37;;;;;;30271:15;;30263:75;;;;-1:-1:-1;;;30263:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30414:15;;30393:37;;;;:20;:37;;;;;:46;;;30459:10;;:14;;30456:538;;30587:18;;30580:51;;;-1:-1:-1;;;30580:51:0;;30625:4;30580:51;;;;;;30560:17;;-1:-1:-1;;;;;30587:18:0;;30580:36;;:51;;;;;;;;;;;;;;30587:18;30580:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30580:51:0;;-1:-1:-1;30675:6:0;30661:21;;30658:321;;30756:32;30757:1;:13;;30781:6;30756:24;:32::i;:::-;30900:18;;30893:58;;;-1:-1:-1;;;30893:58:0;;30929:10;30893:58;;;;;;;;;;;;30744:44;;-1:-1:-1;;;;;;30900:18:0;;;;30893:35;;:58;;;;;;;;;;;;;;;30900:18;;30893:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30658:321:0;30456:538;;31042:13;;31025:12;;:31;;:16;:31::i;:::-;31010:12;:46;31123:9;;31089:45;;31090:23;;31120:1;:12;31089:29;:45::i;:::-;31073:13;:61;;;31196:12;:25;;-1:-1:-1;;;;;;31196:25:0;31211:10;31196:25;;;31236:16;:32;31310:12;31283:24;:39;;;31342:46;;:20;:46::i;:::-;31421:26;31436:10;31421:14;:26::i;:::-;31420:27;:61;;;;;31452:29;31475:4;31452:14;:29::i;:::-;31451:30;31420:61;31417:490;;;31533:105;31555:4;31570;31577:10;31605:26;31628:2;31605:13;;:22;;:26;;;;:::i;:::-;31589:13;;:42;31633:4;31533:13;:105::i;:::-;31701:7;;31710:13;;31657:86;;31679:4;;;;-1:-1:-1;;;;;31701:7:0;;31710:26;;31733:2;31710:22;:26::i;:::-;31738:4;31657:13;:86::i;:::-;31417:490;;;31822:76;31844:4;31859;31866:10;31878:13;;31893:4;31822:13;:76::i;:::-;31945:21;31928:14;:38;;;32016:10;;32057:21;;32076:1;32057:18;:21::i;:::-;32045:9;;:33;32042:722;;;32185:7;;32226:4;;:24;;;-1:-1:-1;;;32226:24:0;;-1:-1:-1;;;;;32185:7:0;;;32226:24;;;;;;;;32128:1;;32185:7;;32112:13;;32226:4;;:12;;:24;;;;;;;;;;;;;;:4;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32226:24:0;;-1:-1:-1;32278:2:0;32272:8;;:21;;;;;32290:3;32284;:9;32272:21;32269:244;;;32336:12;:5;32346:1;32336:9;:12::i;:::-;-1:-1:-1;32379:18:0;;32368:7;;-1:-1:-1;;;;;32368:7:0;;;32379:18;;32368:29;32365:129;;32438:10;-1:-1:-1;;;;;32438:15:0;:38;32454:21;32473:1;32454:9;;:18;;:21;;;;:::i;:::-;32438:38;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32365:129:0;32550:4;;:22;;;-1:-1:-1;;;32550:22:0;;-1:-1:-1;;;;;32550:22:0;;;;;;;;;32535:12;;32550:4;;;;;:12;;:22;;;;;;;;;;;;;;;:4;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32550:22:0;;-1:-1:-1;32602:1:0;32595:8;;:21;;;;;32614:2;32607:4;:9;32595:21;32591:99;;;32658:12;:5;32668:1;32658:9;:12::i;:::-;;32591:99;32708:8;-1:-1:-1;;;;;32708:13:0;:40;32722:25;32741:5;32722:9;;:18;;:25;;;;:::i;:::-;32708:40;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;32042:722:0;-1:-1:-1;32786:4:0;;29666:3132;-1:-1:-1;;;;;29666:3132:0:o;17548:55::-;;;;:::o;19596:1093::-;2135:5;;-1:-1:-1;;;;;2135:5:0;2121:10;:19;2113:42;;;;;-1:-1:-1;;;2113:42:0;;;;;;;;;;;;-1:-1:-1;;;2113:42:0;;;;;;;;;;;;;;;19732:6:::1;::::0;19669:17:::1;::::0;-1:-1:-1;;;19732:6:0;::::1;;;19731:7;19724:15;;;;19750:6;:13:::0;;-1:-1:-1;;;;19750:13:0::1;-1:-1:-1::0;;;19750:13:0::1;::::0;;19801:22;19786:12:::1;:37:::0;19812:2:::1;19917:15:::0;:26:::1;::::0;19937:5:::1;19917:19;:26::i;:::-;19902:12;:41:::0;19963:1:::1;19951:9;:13:::0;20004:12:::1;19972:29;:44:::0;20124:5:::1;-1:-1:-1::0;20111:18:0;;;20152:13:::1;::::0;:26;::::1;20137:12;:41:::0;20186:27:::1;::::0;:20:::1;:27::i;:::-;20265:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20258:4:0::1;:17:::0;;-1:-1:-1;;;;;;20258:17:0::1;-1:-1:-1::0;;;;;20258:17:0;;::::1;;::::0;;;;20291:34:::1;::::0;;-1:-1:-1;20291:34:0;;20319:4;;;::::1;20291:34;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;20425:12;::::0;20388:51:::1;::::0;;20423:14;;::::1;20388:51:::0;;;-1:-1:-1;;;;;20388:51:0;::::1;::::0;20405:1:::1;::::0;-1:-1:-1;;;;;;;;;;;20388:51:0;;;;::::1;::::0;;::::1;20450:42;20462:11;20478:12;;20476:1;:14;20450:11;:42::i;:::-;20544:12;::::0;20508:49:::1;::::0;;;;;;20537:4:::1;::::0;20525:1:::1;::::0;-1:-1:-1;;;;;;;;;;;20508:49:0;;;;::::1;::::0;;::::1;20568:40;20588:4;20595:12;;20568:11;:40::i;:::-;-1:-1:-1::0;20619:18:0::1;:32:::0;;-1:-1:-1;;;;;20619:32:0;;::::1;-1:-1:-1::0;;;;;;20619:32:0;;::::1;::::0;::::1;::::0;;;:18:::1;20662:19:::0;;;;::::1;;::::0;;19596:1093::o;18450:74::-;;;;:::o;45328:193::-;45421:4;45439:52;45453:10;45465:5;45472:3;45477:6;45485:5;45439:13;:52::i;:::-;-1:-1:-1;45509:4:0;45328:193;;;;;:::o;18327:25::-;;;;:::o;19227:34::-;19260:1;19227:34;:::o;29562:96::-;29646:7;;-1:-1:-1;;;;;29646:7:0;29562:96;:::o;27032:90::-;27103:12;;27032:90;:::o;17765:44::-;;;;:::o;44093:96::-;44171:4;;:10;;;-1:-1:-1;;;44171:10:0;;;;44135:7;;;;-1:-1:-1;;;;;44171:4:0;;;;:8;;:10;;;;;;;;;;;:4;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44171:10:0;;;;;;;;;-1:-1:-1;44171:10:0;-1:-1:-1;44093:96:0;;:::o;42830:260::-;43068:9;;42878:4;;43033:46;;43034:23;;43065:1;:12;43033:30;:46::i;27243:97::-;27317:15;;27243:97;:::o;18359:84::-;;;;:::o;35535:1011::-;35743:4;;35714:12;;-1:-1:-1;;;35743:4:0;;;;35735:30;;;;;-1:-1:-1;;;35735:30:0;;;;;;;;;;;;-1:-1:-1;;;35735:30:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;35806:28:0;;35829:4;35806:28;;35798:62;;;;;-1:-1:-1;;;35798:62:0;;;;;;;;;;;;-1:-1:-1;;;35798:62:0;;;;;;;;;;;;;;;35875:87;35900:5;35907:16;35925:10;35937:11;35950;35875:24;:87::i;:::-;35867:108;;;;;-1:-1:-1;;;35867:108:0;;;;;;;;;;;;-1:-1:-1;;;35867:108:0;;;;;;;;;;;;;;;36004:11;-1:-1:-1;;;;;35990:25:0;:10;-1:-1:-1;;;;;35990:25:0;;;35982:47;;;;;-1:-1:-1;;;35982:47:0;;;;;;;;;;;;-1:-1:-1;;;35982:47:0;;;;;;;;;;;;;;;36059:11;-1:-1:-1;;;;;36044:26:0;:11;-1:-1:-1;;;;;36044:26:0;;;36036:55;;;;;-1:-1:-1;;;36036:55:0;;;;;;;;;;;;-1:-1:-1;;;36036:55:0;;;;;;;;;;;;;;;36121:11;-1:-1:-1;;;;;36106:26:0;:11;-1:-1:-1;;;;;36106:26:0;;;36098:55;;;;;-1:-1:-1;;;36098:55:0;;;;;;;;;;;;-1:-1:-1;;;36098:55:0;;;;;;;;;;;;;;;36168:18;;-1:-1:-1;;;;;36168:33:0;;;:18;;:33;;36160:54;;;;;-1:-1:-1;;;36160:54:0;;;;;;;;;;;;-1:-1:-1;;;36160:54:0;;;;;;;;;;;;;;;36237:2;36224:10;;:15;;;;;;36221:304;;36262:18;36290:11;-1:-1:-1;;;;;36283:29:0;;36321:4;36283:44;;;;;;;;;;;;;-1:-1:-1;;;;;36283:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36283:44:0;;-1:-1:-1;36351:34:0;36352:2;:15;;36378:6;36351:26;:34::i;:::-;36338:47;;36472:11;-1:-1:-1;;;;;36465:28:0;;36494:10;36506;36465:52;;;;;;;;;;;;;-1:-1:-1;;;;;36465:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;36221:304:0;-1:-1:-1;36538:4:0;35535:1011;;;;;;;;:::o;32820:971::-;32938:12;-1:-1:-1;;;;;32975:27:0;;32997:4;32975:27;;32967:61;;;;;-1:-1:-1;;;32967:61:0;;;;;;;;;;;;-1:-1:-1;;;32967:61:0;;;;;;;;;;;;;;;33060:4;33046:18;;;;33043:261;;;33106:45;33115:5;33122:16;33140:10;33106:8;:45::i;:::-;33098:72;;;;;-1:-1:-1;;;33098:72:0;;;;;;;;;;;;-1:-1:-1;;;33098:72:0;;;;;;;;;;;;;;;33043:261;;;33245:28;33250:5;33256:16;33245:4;:28::i;:::-;33237:51;;;;;-1:-1:-1;;;33237:51:0;;;;;;;;;;;;-1:-1:-1;;;33237:51:0;;;;;;;;;;;;;;;33340:18;;-1:-1:-1;;;;;33326:32:0;;;33340:18;;33326:32;;33318:84;;;;-1:-1:-1;;;33318:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33433:1;33420:10;;:14;;;;;;33417:341;;33479:18;33507:10;-1:-1:-1;;;;;33500:28:0;;33537:4;33500:43;;;;;;;;;;;;;-1:-1:-1;;;;;33500:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33500:43:0;;-1:-1:-1;33575:28:0;33576:1;:14;;33596:6;33575:20;:28::i;:::-;33562:41;;33696:10;-1:-1:-1;;;;;33689:27:0;;33717:10;33729;33689:51;;;;;;;;;;;;;-1:-1:-1;;;;;33689:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33417:341:0;-1:-1:-1;33779:4:0;32820:971;;;;;;:::o;18974:24::-;;;;:::o;18531:27::-;;;-1:-1:-1;;;;;18531:27:0;;:::o;44448:118::-;44514:7;44541:17;44552:5;44541:10;:17::i;36566:1114::-;36755:12;36784:29;36807:4;36784:14;:29::i;:::-;36776:62;;;;;-1:-1:-1;;;36776:62:0;;;;;;;;;;;;-1:-1:-1;;;36776:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;36879:28:0;;36902:4;36879:28;;36871:62;;;;;-1:-1:-1;;;36871:62:0;;;;;;;;;;;;-1:-1:-1;;;36871:62:0;;;;;;;;;;;;;;;36948:87;36973:5;36980:16;36998:10;37010:11;37023;36948:24;:87::i;:::-;36940:108;;;;;-1:-1:-1;;;36940:108:0;;;;;;;;;;;;-1:-1:-1;;;36940:108:0;;;;;;;;;;;;;;;37077:11;-1:-1:-1;;;;;37063:25:0;:10;-1:-1:-1;;;;;37063:25:0;;;37055:46;;;;;-1:-1:-1;;;37055:46:0;;;;;;;;;;;;-1:-1:-1;;;37055:46:0;;;;;;;;;;;;;;;37131:11;-1:-1:-1;;;;;37116:26:0;:11;-1:-1:-1;;;;;37116:26:0;;;37108:55;;;;;-1:-1:-1;;;37108:55:0;;;;;;;;;;;;-1:-1:-1;;;37108:55:0;;;;;;;;;;;;;;;37193:11;-1:-1:-1;;;;;37178:26:0;:11;-1:-1:-1;;;;;37178:26:0;;;37170:55;;;;;-1:-1:-1;;;37170:55:0;;;;;;;;;;;;-1:-1:-1;;;37170:55:0;;;;;;;;;;;;;;;37240:18;;-1:-1:-1;;;;;37240:33:0;;;:18;;:33;;37232:54;;;;;-1:-1:-1;;;37232:54:0;;;;;;;;;;;;-1:-1:-1;;;37232:54:0;;;;;;;;;;;;;;;37316:11;-1:-1:-1;;;;;37301:26:0;:11;-1:-1:-1;;;;;37301:26:0;;;37293:55;;;;;-1:-1:-1;;;37293:55:0;;;;;;;;;;;;-1:-1:-1;;;37293:55:0;;;;;;;;;;;;;;;37371:2;37358:10;;:15;;;;;;37355:304;;37396:18;37424:11;-1:-1:-1;;;;;37417:29:0;;37455:4;37417:44;;;;;;;;;;;;;-1:-1:-1;;;;;37417:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37417:44:0;;-1:-1:-1;37485:34:0;37486:2;:15;;37512:6;37485:26;:34::i;:::-;37472:47;;37606:11;-1:-1:-1;;;;;37599:28:0;;37628:10;37640;37599:52;;;;;;;;;;;;;-1:-1:-1;;;;;37599:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;37355:304:0;-1:-1:-1;37672:4:0;36566:1114;;;;;;;;;:::o;43417:361::-;43611:51;;;;;;;;;;43645:10;43611:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43601:62;;;;;43549:12;;43680:28;;;43677:41;;;43710:8;;;43677:41;43739:26;;;;43417:361;-1:-1:-1;;;;43417:361:0:o;17879:26::-;;;;:::o;18064:37::-;;;;:::o;44316:124::-;44386:7;44413:19;44420:5;44427:4;44413:6;:19::i;:::-;44406:26;44316:124;-1:-1:-1;;;44316:124:0:o;45529:189::-;45620:4;45637:51;45651:10;45663:5;45670:3;45675:6;45683:4;45637:13;:51::i;18108:60::-;;;;:::o;18239:30::-;;;;:::o;1869:20::-;;;-1:-1:-1;;;;;1869:20:0;;:::o;45728:216::-;-1:-1:-1;;;;;45849:22:0;;45866:4;45849:22;45841:31;;;;;;45890:44;;;-1:-1:-1;;;45890:44:0;;-1:-1:-1;;;;;45890:44:0;;;;;;;;;;;;;;45905:4;;45890:30;;:44;;;;;;;;;;;;;;-1:-1:-1;45905:4:0;45890:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;45728:216:0:o;28420:99::-;28475:40;28498:1;28513;28501:4;;;;;;;;;-1:-1:-1;;;;;28501:4:0;-1:-1:-1;;;;;28501:9:0;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28501:11:0;:13;28475:22;:40::i;:::-;28420:99::o;17340:22::-;;;-1:-1:-1;;;;;17340:22:0;;:::o;39204:1364::-;39627:15;;39612:9;;39560:64;;39577:46;;39578:23;;39609:1;:12;39577:30;:46::i;:::-;39560:12;;;:16;:64::i;:::-;:82;:100;;;;;39658:2;39646:9;;:14;39560:100;39556:204;;;39692:9;;;39704:1;39692:13;39680:25;;39731:12;;:19;;39748:1;39731:16;:19::i;:::-;39716:12;:34;39556:204;39984:9;;39962:12;;:37;;39996:1;39984:13;39980:1;:18;39962:16;:37::i;:::-;39947:12;;:52;39929:15;:70;40023:10;;:17;;40038:1;40023:14;:17::i;:::-;40010:10;:30;;;40141:24;;;;40128:37;;;;;40124:387;;40224:6;40210:9;;40194:14;;:25;;;;;;40192:38;40189:272;;40280:9;;40261;;:16;;40275:1;40261:13;:16::i;:::-;:28;40258:107;;;40333:9;;:16;;40347:1;40333:13;:16::i;:::-;40321:9;:28;40258:107;40189:272;;;40431:9;;:17;;40446:1;40431:14;:17::i;:::-;40419:9;:29;40189:272;40482:21;:19;:21::i;:::-;-1:-1:-1;;;40547:12:0;:16;40537:27;40519:15;:45;39204:1364::o;27859:555::-;27977:13;;:26;;28000:2;27977:22;:26::i;:::-;27924:18;;27917:48;;;-1:-1:-1;;;27917:48:0;;27954:10;27917:48;;;;;;27970:3;:34;;;;;-1:-1:-1;;;;;27924:18:0;;;;27917:36;;:48;;;;;;;;;;;;;;;27924:18;27917:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27917:48:0;:88;;27909:184;;;;-1:-1:-1;;;27909:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28177:10;;28172:3;:15;28159:9;:28;;28151:104;;;;-1:-1:-1;;;28151:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28294:12;;:20;;28312:1;28294:17;:20::i;:::-;28279:12;:35;;;28347:15;;-1:-1:-1;28329:82:0;;;28387:15;;28372:12;:30;27859:555::o;19181:39::-;;;;;;;;;;;;;;-1:-1:-1;;;19181:39:0;;;;:::o;43100:270::-;43279:51;;;;;;;;;;43313:10;43279:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43269:62;;;;;43100:270;;;;;:::o;23476:109::-;-1:-1:-1;;;;;23561:16:0;23535:4;23561:16;;;:11;:16;;;;;;;;;23476:109::o;19357:16::-;;;-1:-1:-1;;;;;19357:16:0;;:::o;18785:43::-;;;;:::o;21928:1538::-;22031:18;;22024:43;;;-1:-1:-1;;;22024:43:0;;-1:-1:-1;;;;;22024:43:0;;;;;;;;;22031:18;;;;;22024:36;;:43;;;;;;;;;;;;;;22031:18;22024:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22024:43:0;;22016:51;22082:12;22078:1279;;22149:13;;22145:1;:17;22137:5;;:25;22134:244;;;22253:32;;;-1:-1:-1;;;;;22253:32:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22304:18:0;;;;;;:11;:18;;;;;:33;;-1:-1:-1;;22304:33:0;;;;;;;22356:7;;22134:244;22459:13;;:21;;22477:2;22459:17;:21::i;:::-;22407:18;;22400:48;;;-1:-1:-1;;;22400:48:0;;22437:10;22400:48;;;;;;22453:3;:28;;;;;-1:-1:-1;;;;;22407:18:0;;;;22400:36;;:48;;;;;;;;;;;;;;;22407:18;22400:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22400:48:0;:82;;22392:117;;;;;-1:-1:-1;;;22392:117:0;;;;;;;;;;;;-1:-1:-1;;;22392:117:0;;;;;;;;;;;;;;;22597:13;;:21;;22615:2;22597:17;:21::i;:::-;22591:3;:28;22582:5;;:38;22574:79;;;;;-1:-1:-1;;;22574:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22776:13;;:21;;22794:2;22776:17;:21::i;:::-;22762:12;;22757:4;:17;:40;22744:9;:53;;22736:88;;;;;-1:-1:-1;;;22736:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22078:1279;;;22887:1;22914:4;-1:-1:-1;;;;;22906:22:0;;;22903:93;;;22969:11;:4;22978:1;22969:8;:11::i;:::-;22962:18;;22903:93;23077:13;;:21;;23095:2;23077:17;:21::i;:::-;23025:18;;23018:48;;;-1:-1:-1;;;23018:48:0;;23055:10;23018:48;;;;;;23071:3;:28;;;;;-1:-1:-1;;;;;23025:18:0;;;;23018:36;;:48;;;;;;;;;;;;;;;23025:18;23018:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23018:48:0;:82;;23010:131;;;;-1:-1:-1;;;23010:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23242:13;;23227:12;;23215:49;;23216:23;;;:39;:3;:39;23261:2;23215:45;:49::i;:::-;23202:9;:62;;23194:109;;;;-1:-1:-1;;;23194:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22078:1279;;23372:32;;;-1:-1:-1;;;;;23372:32:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23415:18:0;;;;;;:11;:18;;;;;:33;;-1:-1:-1;;23415:33:0;;;;;;;21928:1538;;;:::o;18696:43::-;;;;:::o;44958:178::-;45032:4;45049:57;45063:10;45075;45087:3;45092:6;45100:5;45049:13;:57::i;18746:32::-;;;;:::o;34607:914::-;34789:5;;34760:12;;-1:-1:-1;;;34789:5:0;;;;34781:31;;;;;-1:-1:-1;;;34781:31:0;;;;;;;;;;;;-1:-1:-1;;;34781:31:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34853:28:0;;34876:4;34853:28;;34845:62;;;;;-1:-1:-1;;;34845:62:0;;;;;;;;;;;;-1:-1:-1;;;34845:62:0;;;;;;;;;;;;;;;34922:69;34942:5;34949:16;34967:10;34979:11;34922:19;:69::i;:::-;34914:90;;;;;-1:-1:-1;;;34914:90:0;;;;;;;;;;;;-1:-1:-1;;;34914:90:0;;;;;;;;;;;;;;;35033:11;-1:-1:-1;;;;;35019:25:0;:10;-1:-1:-1;;;;;35019:25:0;;;35011:47;;;;;-1:-1:-1;;;35011:47:0;;;;;;;;;;;;-1:-1:-1;;;35011:47:0;;;;;;;;;;;;;;;35088:11;-1:-1:-1;;;;;35073:26:0;:11;-1:-1:-1;;;;;35073:26:0;;;35065:48;;;;;-1:-1:-1;;;35065:48:0;;;;;;;;;;;;-1:-1:-1;;;35065:48:0;;;;;;;;;;;;;;;35128:18;;-1:-1:-1;;;;;35128:33:0;;;:18;;:33;;35120:55;;;;;-1:-1:-1;;;35120:55:0;;;;;;;;;;;;-1:-1:-1;;;35120:55:0;;;;;;;;;;;;;;;35204:1;35191:10;;:14;35188:304;;35228:18;35256:11;-1:-1:-1;;;;;35249:29:0;;35287:4;35249:44;;;;;;;;;;;;;-1:-1:-1;;;;;35249:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35249:44:0;;-1:-1:-1;35317:33:0;35318:1;:14;;35343:6;35317:25;:33::i;:::-;35304:46;;35435:11;-1:-1:-1;;;;;35428:28:0;;35457:10;35469;35428:52;;;;;;;;;;;;;-1:-1:-1;;;;;35428:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;35509:4:0;34607:914;;;;;;;:::o;44197:111::-;44281:4;;:19;;;-1:-1:-1;;;44281:19:0;;-1:-1:-1;;;;;44281:19:0;;;;;;;;;44254:7;;44281:4;;;;;:12;;:19;;;;;;;;;;;;;;;:4;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44281:19:0;;44197:111;-1:-1:-1;;44197:111:0:o;17940:43::-;;;;:::o;27579:226::-;27661:13;;:26;;27684:2;27661:22;:26::i;:::-;27646:12;;27642:3;:16;:45;27629:9;:58;;27621:110;;;;-1:-1:-1;;;27621:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27745:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27738:4:0;:17;;-1:-1:-1;;;;;;27738:17:0;-1:-1:-1;;;;;27738:17:0;;;;;;;;27767:34;;;-1:-1:-1;27767:34:0;;27795:4;;;;27767:34;;;;;;;;;;;;;;;;;27579:226::o;18835:31::-;;;;:::o;16985:71::-;;;-1:-1:-1;;;;;16985:71:0;;:::o;17692:33::-;17722:3;17692:33;:::o;18565:::-;;;-1:-1:-1;;;;;18565:33:0;;:::o;27354:200::-;27417:18;;27462:7;;27471:12;;27410:74;;;-1:-1:-1;;;27410:74:0;;27450:10;27410:74;;;;-1:-1:-1;;;;;27462:7:0;;;27410:74;;;;;;;;;;;;27394:7;;27417:18;;;;;27410:39;;:74;;;;;;;;;;;;;;;27394:7;27417:18;27410:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27518:10:0;;27491:38;;27511:4;;27491:11;:38::i;:::-;-1:-1:-1;;27543:7:0;;-1:-1:-1;;;;;27543:7:0;27354:200;:::o;17816:56::-;;;;:::o;19569:20::-;;;;:::o;28528:590::-;28671:2;28655:13;;28640:12;;28638:1;:14;:30;28637:36;;;;;;28623:9;:51;;28615:100;;;;-1:-1:-1;;;28615:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28809:13;;28764:18;;28757:48;;;-1:-1:-1;;;28757:48:0;;28794:10;28757:48;;;;;;28825:1;28809:17;;;;-1:-1:-1;;;;;28764:18:0;;;;28757:36;;:48;;;;;;;;;;;;;;;28764:18;28757:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28757:48:0;:69;;28749:137;;;;-1:-1:-1;;;28749:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28915:5;28903:212;28924:9;28922:1;:11;28903:212;;;29018:13;;28961:18;;28991:4;;:17;;;-1:-1:-1;;;28991:17:0;;;;;;;;;;29014:1;:17;;;;-1:-1:-1;;;;;28961:18:0;;;;28954:36;;28991:4;;:14;;:17;;;;;;;;;;;;;;:4;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28991:17:0;28954:55;;;-1:-1:-1;;;;;;28954:55:0;;;;;;;-1:-1:-1;;;;;28954:55:0;;;;;;;;;;;;;28991:17;;28954:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28954:55:0;:78;28951:157;;29070:4;;:17;;;-1:-1:-1;;;29070:17:0;;;;;;;;;;29091:5;;29058:11;;29091:5;;-1:-1:-1;;;;;29070:4:0;;;;:14;;:17;;;;;;;;;;;;;;;:4;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29070:17:0;-1:-1:-1;;;;;29058:30:0;;;29070:17;29058:30;;;;;;;;-1:-1:-1;29058:30:0;:38;;-1:-1:-1;;29058:38:0;;;;;;;;;;28951:157;28936:3;;28903:212;;;;28528:590;;:::o;18015:36::-;;;;:::o;44574:146::-;44658:7;44685:27;44696:5;44703:8;44685:10;:27::i;37684:1510::-;37775:12;37827:4;-1:-1:-1;;;;;37819:23:0;;;;;;:64;;-1:-1:-1;37854:18:0;;-1:-1:-1;;;;;37846:37:0;;;37854:18;;37846:37;;37819:64;37810:142;;;;-1:-1:-1;;;37810:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38015:15;;37998:52;;;;;;;;;;;38032:10;37998:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37988:63;;;;;38136:26;;;38128:85;;;;-1:-1:-1;;;38128:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38314:12;;38296:30;;38288:83;;;;-1:-1:-1;;;38288:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38435:15;;38395:16;38414:37;;;:20;:37;;;;;;38475:15;;38467:75;;;;-1:-1:-1;;;38467:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38626:15;;38605:37;;;;:20;:37;;;;;;;;;:46;;;38705:39;;-1:-1:-1;;;38705:39:0;;38738:4;38705:39;;;;;;-1:-1:-1;;;;;38668:23:0;;;;;38692:10;;38704:57;;38755:5;;38668:23;;38705:24;;:39;;;;;38605:37;38705:39;;;;;;38668:23;38705:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38705:39:0;;38704:50;:57::i;:::-;38668:94;;;;;;;;;;;;;-1:-1:-1;;;;;38668:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;38812:13:0;;38795:12;;:31;;:16;:31::i;:::-;38780:12;:46;38894:9;;38859:46;;38860:23;;38891:1;:12;38859:30;:46::i;:::-;38843:13;:62;;;38965:12;:25;;-1:-1:-1;;;;;;38965:25:0;38980:10;38965:25;;;39005:16;:32;39079:12;39052:24;:39;;;39109:46;;:20;:46::i;33805:794::-;33961:5;;33932:12;;-1:-1:-1;;;33961:5:0;;;;33953:31;;;;;-1:-1:-1;;;33953:31:0;;;;;;;;;;;;-1:-1:-1;;;33953:31:0;;;;;;;;;;;;;;;34025:60;34040:5;34047:16;34065:10;34077:7;;;;;;;;;;;34025:14;:60::i;:::-;34017:81;;;;;-1:-1:-1;;;34017:81:0;;;;;;;;;;;;-1:-1:-1;;;34017:81:0;;;;;;;;;;;;;;;34128:18;;-1:-1:-1;;;;;34113:33:0;;;34128:18;;34113:33;;34105:85;;;;-1:-1:-1;;;34105:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34219:11;-1:-1:-1;;;;;34205:25:0;:10;-1:-1:-1;;;;;34205:25:0;;;34197:46;;;;;-1:-1:-1;;;34197:46:0;;;;;;;;;;;;-1:-1:-1;;;34197:46:0;;;;;;;;;;;;;;;34266:1;34253:10;;:14;;;;;;34250:320;;34290:18;34318:11;-1:-1:-1;;;;;34311:29:0;;34349:4;34311:44;;;;;;;;;;;;;-1:-1:-1;;;;;34311:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34311:44:0;;-1:-1:-1;34379:28:0;34380:1;:14;;34400:6;34379:20;:28::i;:::-;34366:41;;34513:11;-1:-1:-1;;;;;34506:28:0;;34535:10;34547;34506:52;;;;;;;;;;;;;-1:-1:-1;;;;;34506:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29124:432;29211:10;;29205:3;:16;29191:9;:31;;29183:94;;;;-1:-1:-1;;;29183:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29284:9;:16;;-1:-1:-1;;;;29284:16:0;-1:-1:-1;;;29284:16:0;;;29329:10;;29323:3;:16;29310:9;:29;29307:70;;29357:5;:12;;-1:-1:-1;;;;29357:12:0;-1:-1:-1;;;29357:12:0;;;29307:70;29405:10;;29399:3;:16;29386:9;:29;29383:70;;29433:5;:12;;-1:-1:-1;;;;29433:12:0;-1:-1:-1;;;29433:12:0;;;29383:70;29481:10;;29475:3;:16;29462:9;:29;29459:94;;29509:7;:14;;-1:-1:-1;;;;;;;;29509:14:0;;;-1:-1:-1;;;29509:14:0;29534:11;-1:-1:-1;;;29534:11:0;;;29459:94;29124:432;:::o;5661:139::-;5719:7;5747:6;5739:30;;;;;-1:-1:-1;;;5739:30:0;;;;;;;;;;;;-1:-1:-1;;;5739:30:0;;;;;;;;;;;;;;;5791:1;5787;:5;;;;;;;5661:139;-1:-1:-1;;;5661:139:0:o;24411:2543::-;24616:11;24612:93;;24665:3;-1:-1:-1;;;;;24649:23:0;24658:5;-1:-1:-1;;;;;24649:23:0;-1:-1:-1;;;;;;;;;;;24670:1:0;24649:23;;;;;;;;;;;;;;;;;;24687:7;;24612:93;24749:19;24771:17;24782:5;24771:10;:17::i;:::-;24749:39;;24822:6;24807:11;:21;;24799:52;;;;;-1:-1:-1;;;24799:52:0;;;;;;;;;;;;-1:-1:-1;;;24799:52:0;;;;;;;;;;;;;;;24917:9;-1:-1:-1;;;;;24908:18:0;:5;-1:-1:-1;;;;;24908:18:0;;24904:480;;24986:21;25010:28;25021:5;25028:9;25010:10;:28::i;:::-;24986:52;;-1:-1:-1;;25125:13:0;:25;25121:252;;25249:6;25232:13;:23;;25224:56;;;;;-1:-1:-1;;;25224:56:0;;;;;;;;;;;;-1:-1:-1;;;25224:56:0;;;;;;;;;;;;;;;25299:58;25313:5;25320:9;25331:25;:13;25349:6;25331:17;:25::i;:::-;25299:13;:58::i;:::-;24904:480;;25496:6;25477:16;;25603:43;25615:5;25622:23;:11;25496:6;25622:15;:23::i;:::-;25603:11;:43::i;:::-;25838:7;:58;;;;25851:19;25866:3;25851:14;:19::i;:::-;:44;;;;25874:21;25889:5;25874:14;:21::i;:::-;25849:47;25838:58;25834:849;;;26052:20;:6;17722:3;26052:15;:20::i;:::-;26045:27;;26094:6;26104:1;26094:11;:22;;26112:4;26094:22;;;26108:1;26094:22;26087:29;-1:-1:-1;26195:28:0;26208:14;:4;26087:29;26208:8;:14::i;:::-;26195:8;;:12;:28::i;:::-;26303:18;;26287:41;;;;;;;;26184:39;;-1:-1:-1;;;;;;26303:18:0;;;;26287:41;;;;-1:-1:-1;;;;;;;;;;;26287:41:0;;;;;;;;26432:14;26449:26;26461:5;26468:6;26449:11;:26::i;:::-;26432:43;;26533:49;26545:6;26553:28;26576:4;26553:18;26564:6;26553:10;:18::i;:::-;:22;;:28::i;26533:49::-;26602:20;;;;;;;;-1:-1:-1;;;;;26602:20:0;;;;;;;;;;;;;26658:6;-1:-1:-1;;;;;26642:29:0;26651:5;-1:-1:-1;;;;;26642:29:0;-1:-1:-1;;;;;;;;;;;26666:4:0;26642:29;;;;;;;;;;;;;;;;;;25834:849;;26853:47;26865:3;26870:29;26890:8;26870:15;26881:3;26870:10;:15::i;26853:47::-;26932:3;-1:-1:-1;;;;;26916:30:0;26925:5;-1:-1:-1;;;;;26916:30:0;-1:-1:-1;;;;;;;;;;;26937:8:0;26916:30;;;;;;;;;;;;;;;;;;24411:2543;;;;;;;;;;:::o;21372:188::-;21494:39;;;-1:-1:-1;;;21494:39:0;;;;;;;;-1:-1:-1;;21494:39:0;;;;;;;;;;;;;;;;;;;;;;;;;21484:50;;;;;21464:88;;21544:6;21464:13;21471:5;21464:6;:13::i;:::-;:19;:88;:19;:88::i;5808:232::-;5871:7;5899:6;5891:30;;;;;-1:-1:-1;;;5891:30:0;;;;;;;;;;;;-1:-1:-1;;;5891:30:0;;;;;;;;;;;;;;;5932:9;5948:1;5944;:5;;;;;;5932:17;;5968:1;5964;:5;;;;;;:10;5960:52;;5999:1;5995:5;6031:1;5808:232;-1:-1:-1;;;5808:232:0:o;5103:164::-;5161:7;5193:5;;;5217:6;;;;5209:31;;;;;-1:-1:-1;;;5209:31:0;;;;;;;;;;;;-1:-1:-1;;;5209:31:0;;;;;;;;;;;;;;5275:141;5333:7;5366:1;5361;:6;;5353:32;;;;;-1:-1:-1;;;5353:32:0;;;;;;;;;;;;-1:-1:-1;;;5353:32:0;;;;;;;;;;;;;;;-1:-1:-1;5403:5:0;;;5275:141::o;21748:172::-;21822:51;17650:20;21863:8;21822:13;21829:5;21822:6;:13::i;:51::-;21884:4;;:28;;;-1:-1:-1;;;21884:28:0;;-1:-1:-1;;;;;21884:28:0;;;;;;;;;;;;;;;:4;;;;;:11;;:28;;;;;:4;;:28;;;;;;;:4;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;20831:133;20889:7;20924:31;17650:20;20924:13;20931:5;20924:6;:13::i;:::-;:18;;:31::i;21172:174::-;21240:7;21275:62;21330:4;21304:31;;;;;;-1:-1:-1;;;21304:31:0;;;;;;;;;;;;;;;;;;;;;;;;;21294:42;;;;;;21275:13;21282:5;21275:6;:13::i;5424:229::-;5483:7;5507:6;5503:47;;-1:-1:-1;5537:1:0;5530:8;;5503:47;5574:5;;;5578:1;5574;:5;:1;5598:5;;;;;:10;5590:36;;;;;-1:-1:-1;;;5590:36:0;;;;;;;;;;;;-1:-1:-1;;;5590:36:0;;;;;;;;;;;;;;40761:1853;40881:29;;41053:24;;40866:12;:44;;;;;41146:3;41132:17;;41297:65;;;41293:1002;;;41387:21;41411:82;41457:34;41412:38;:28;41446:3;41412:33;:38::i;:::-;41411:44;;:82::i;:::-;41387:106;-1:-1:-1;41508:27:0;41538:45;41578:4;41538:25;41387:106;41559:3;41538:20;:25::i;:::-;:39;;:45::i;:::-;41508:75;;41790:69;41807:51;41835:22;41807;41824:4;41807:12;;:16;;:22;;;;:::i;:::-;:27;;:51::i;:::-;41790:12;;;:16;:69::i;:::-;41775:12;:84;-1:-1:-1;41293:1002:0;;-1:-1:-1;41293:1002:0;;41906:23;41932:82;41984:28;41933:44;:34;41973:3;41933:39;:44::i;41932:82::-;41906:108;-1:-1:-1;42029:29:0;42061:47;42103:4;42061:27;41906:108;42084:3;42061:22;:27::i;:47::-;42029:79;;42194:71;42211:53;42239:24;42211:22;42228:4;42211:12;;:16;;:22;;;;:::i;:53::-;42194:12;;;:16;:71::i;:::-;42179:12;:86;-1:-1:-1;;41293:1002:0;42343:12;42311:29;:44;42386:15;;42371:12;;:30;42368:116;;;42457:15;;42442:12;:30;42368:116;42514:15;;42499:12;;:30;42496:111;;;42580:15;;42565:12;:30;40761:1853;;;:::o;23880:521::-;23949:14;24021:17;24041:29;24063:6;24041:21;:29::i;:::-;24021:49;;24135:13;24151:24;24158:5;24165:9;24151:6;:24::i;:::-;24135:40;;24186:38;24196:5;24203:9;24214:5;24222:1;24214:9;24186;:38::i;:::-;24277:4;;24325:11;;;-1:-1:-1;;;24325:11:0;;;;-1:-1:-1;;;;;24277:4:0;;;;:14;;24292:49;;24300:5;;24307;;24314:9;;24277:4;;;;24325:9;;:11;;;;;;;;;;;;;;24277:4;24325:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24325:11:0;:15;24292:7;:49::i;:::-;24277:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24277:65:0;24353:7;:16;;-1:-1:-1;;;;;;24353:16:0;-1:-1:-1;;;;;24353:16:0;;;;;24277:65;23880:521;-1:-1:-1;;;;;23880:521:0:o;20974:190::-;21050:7;21085:70;21144:8;21114:39;;;;;;-1:-1:-1;;;21114:39:0;;;;;;-1:-1:-1;;;;;21114:39:0;;;;;;;;;;;;;;;;;;;;;;21104:50;;;;;;21085:13;21092:5;20719:104;-1:-1:-1;;;;;20804:10:0;;20719:104::o;3884:569::-;4000:17;4032:21;4045:7;4032:12;:21::i;:::-;4000:54;;4070:37;4100:5;4070:21;:37::i;:::-;4065:86;;4124:15;4131:7;4124:6;:15::i;:::-;4256:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4256:124:0;-1:-1:-1;;;4256:124:0;;;4222:169;;;;4204:12;;-1:-1:-1;;;;;4222:19:0;;;4256:124;4222:169;;;4256:124;4222:169;;4256:124;4222:169;;;;;;;;;;-1:-1:-1;;4222:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4203:188;;;4412:7;4404:41;;;;;-1:-1:-1;;;4404:41:0;;;;;;;;;;;;-1:-1:-1;;;4404:41:0;;;;;;;;;;;;;;4461:570;4554:7;4574:17;4606:21;4619:7;4606:12;:21::i;:::-;4574:54;;4644:37;4674:5;4644:21;:37::i;:::-;4639:88;;-1:-1:-1;4713:1:0;;-1:-1:-1;4698:17:0;;4639:88;4815:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4815:98:0;-1:-1:-1;;;4815:98:0;;;4775:149;;;;4740:12;;;;-1:-1:-1;;;;;4775:25:0;;;4815:98;;4775:149;;;;;;4815:98;4775:149;;;;;;;;;;-1:-1:-1;;4775:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4739:185;;;;4945:7;4937:41;;;;;-1:-1:-1;;;4937:41:0;;;;;;;;;;;;-1:-1:-1;;;4937:41:0;;;;;;;;;;;;;;;5007:4;4996:27;;;;;;;;;;;;;;;-1:-1:-1;4996:27:0;;4461:570;-1:-1:-1;;;;;;4461:570:0:o;6169:132::-;6231:6;6259:1;6255;:5;6252:18;;;-1:-1:-1;6269:1:0;6262:8;;6252:18;-1:-1:-1;6290:1:0;;6169:132;-1:-1:-1;6169:132:0:o;6328:270::-;6392:7;-1:-1:-1;;6463:5:0;6481:83;6524:9;;;;;;6507:2;6499:10;;;6481:83;;-1:-1:-1;6583:7:0;6328:270;-1:-1:-1;;6328:270:0:o;21568:172::-;21652:80;21708:4;21682:31;;;;;;-1:-1:-1;;;21682:31:0;;;;;;;;;;;;;;;;;;;;;;;;;21672:42;;;;;;21724:6;21716:15;;21652:13;21659:5;21652:6;:13::i;23648:222::-;23794:31;;;-1:-1:-1;;23794:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23784:42;;;;;23741:7;;23860:1;23853:8;;23784:42;23853:8;23845:17;;;;;;23648:222;-1:-1:-1;;;;;;23648:222:0:o;3191:439::-;3252:7;3407:4;3402:10;;3447:4;3479:7;3523:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3513:41;;;;;;3359:218;;;;;;-1:-1:-1;;;;;3359:218:0;;;;;;;-1:-1:-1;;;;;3359:218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3327:269;;;;;;3301:310;;3272:350;;3191:439;;;:::o;2827:323::-;2885:4;2992:18;;3029:22;;;;;:113;;-1:-1:-1;3075:66:0;3055:87;;;3022:120;-1:-1:-1;;2827:323:0:o;3638:238::-;3690:21;3714:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3690:54;;3858:7;3847:8;3841:15;3834:4;3824:8;3820:19;3817:1;3809:57;3805:62;3803:66;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o
Swarm Source
ipfs://7becbba8ef10cb5f75e9cbdc1f048b733ab75e441dd49d5c98e34c597031503a
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.