More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 15,649 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Fill Buy Order | 20680338 | 161 days ago | IN | 0 ETH | 0.00061177 | ||||
Remove Buy Order | 15278556 | 923 days ago | IN | 0 ETH | 0.0008182 | ||||
Withdraw Fee Tok... | 14391033 | 1065 days ago | IN | 0 ETH | 0.00138038 | ||||
Remove Buy Order | 14391032 | 1065 days ago | IN | 0 ETH | 0.00104447 | ||||
Remove Buy Order | 14389646 | 1065 days ago | IN | 0 ETH | 0.00156748 | ||||
Withdraw Fee Tok... | 13591851 | 1190 days ago | IN | 0 ETH | 0.0084309 | ||||
Add Buy Order | 12969145 | 1287 days ago | IN | 0.24 ETH | 0.00701093 | ||||
Fill Buy Order | 12697186 | 1329 days ago | IN | 0 ETH | 0.00250723 | ||||
Add Buy Order | 12696801 | 1329 days ago | IN | 41.02 ETH | 0.00214704 | ||||
Remove Buy Order | 12564556 | 1350 days ago | IN | 0 ETH | 0.00075977 | ||||
Remove Buy Order | 12564555 | 1350 days ago | IN | 0 ETH | 0.00112975 | ||||
Remove Buy Order | 12468318 | 1365 days ago | IN | 0 ETH | 0.0096885 | ||||
Add Buy Order | 12384053 | 1378 days ago | IN | 0.24 ETH | 0.00493764 | ||||
Remove Buy Order | 12373471 | 1379 days ago | IN | 0 ETH | 0.00095858 | ||||
Remove Buy Order | 12372823 | 1379 days ago | IN | 0 ETH | 0.00095858 | ||||
Remove Buy Order | 12372817 | 1379 days ago | IN | 0 ETH | 0.00095858 | ||||
Remove Buy Order | 12372801 | 1379 days ago | IN | 0 ETH | 0.00096286 | ||||
Remove Buy Order | 12372792 | 1379 days ago | IN | 0 ETH | 0.00102705 | ||||
Remove Buy Order | 12372787 | 1379 days ago | IN | 0 ETH | 0.00110921 | ||||
Remove Buy Order | 12372782 | 1379 days ago | IN | 0 ETH | 0.00110921 | ||||
Fill Buy Order | 12318271 | 1388 days ago | IN | 0 ETH | 0.00657793 | ||||
Remove Sell Orde... | 12287088 | 1393 days ago | IN | 0 ETH | 0.00789358 | ||||
Remove Sell Orde... | 12287055 | 1393 days ago | IN | 0 ETH | 0.01263566 | ||||
Remove Sell Orde... | 12287055 | 1393 days ago | IN | 0 ETH | 0.00686619 | ||||
Remove Sell Orde... | 12286972 | 1393 days ago | IN | 0 ETH | 0.00503023 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||
---|---|---|---|---|---|---|---|
20680338 | 161 days ago | 0 ETH | |||||
20680338 | 161 days ago | 0.024 ETH | |||||
15278556 | 923 days ago | 0.2 ETH | |||||
14391033 | 1065 days ago | 0 ETH | |||||
14391032 | 1065 days ago | 1 ETH | |||||
14389646 | 1065 days ago | 0.36 ETH | |||||
13591851 | 1190 days ago | 0 ETH | |||||
12697186 | 1329 days ago | 0 ETH | |||||
12697186 | 1329 days ago | 41.02 ETH | |||||
12564555 | 1350 days ago | 0.4 ETH | |||||
12468318 | 1365 days ago | 0.155432 ETH | |||||
12373471 | 1379 days ago | 0.216 ETH | |||||
12372823 | 1379 days ago | 0.132 ETH | |||||
12372817 | 1379 days ago | 0.288 ETH | |||||
12372801 | 1379 days ago | 0.252 ETH | |||||
12372792 | 1379 days ago | 0.168 ETH | |||||
12372787 | 1379 days ago | 0.104 ETH | |||||
12372782 | 1379 days ago | 0.28 ETH | |||||
12318271 | 1388 days ago | 0 ETH | |||||
12318271 | 1388 days ago | 12.32 ETH | |||||
12287088 | 1393 days ago | 0 ETH | |||||
12287055 | 1393 days ago | 0 ETH | |||||
12287055 | 1393 days ago | 0 ETH | |||||
12286972 | 1393 days ago | 0 ETH | |||||
12286949 | 1393 days ago | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
OwnersExchange
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-01 */ // File: contracts/interface/PoolOwnersInterface.sol pragma solidity ^0.4.23; contract PoolOwnersInterface { bool public distributionActive; function sendOwnership(address _receiver, uint256 _amount) public; function sendOwnershipFrom(address _owner, address _receiver, uint256 _amount) public; function getOwnerTokens(address _owner) public view returns (uint); function getOwnerPercentage(address _owner) public view returns (uint); } // File: contracts/std/ERC20Basic.sol pragma solidity ^0.4.2; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: contracts/std/ERC20.sol pragma solidity ^0.4.2; /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: contracts/std/SafeMath.sol pragma solidity ^0.4.2; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } // File: contracts/std/Ownable.sol pragma solidity ^0.4.2; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner, "Sender not authorised"); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } // File: contracts/lib/ItMap.sol pragma solidity ^0.4.3; /** @title ItMap, a solidity iterable map @dev Credit to: https://gist.github.com/ethers/7e6d443818cbc9ad2c38efa7c0f363d1 */ library itmap { struct entry { // Equal to the index of the key of this item in keys, plus 1. uint keyIndex; uint value; } struct itmap { mapping(uint => entry) data; uint[] keys; } function insert(itmap storage self, uint key, uint value) internal returns (bool replaced) { entry storage e = self.data[key]; e.value = value; if (e.keyIndex > 0) { return true; } else { e.keyIndex = ++self.keys.length; self.keys[e.keyIndex - 1] = key; return false; } } function remove(itmap storage self, uint key) internal returns (bool success) { entry storage e = self.data[key]; if (e.keyIndex == 0) { return false; } if (e.keyIndex < self.keys.length) { // Move an existing element into the vacated key slot. self.data[self.keys[self.keys.length - 1]].keyIndex = e.keyIndex; self.keys[e.keyIndex - 1] = self.keys[self.keys.length - 1]; } self.keys.length -= 1; delete self.data[key]; return true; } function contains(itmap storage self, uint key) internal view returns (bool exists) { return self.data[key].keyIndex > 0; } function size(itmap storage self) internal view returns (uint) { return self.keys.length; } function get(itmap storage self, uint key) internal view returns (uint) { return self.data[key].value; } function getKey(itmap storage self, uint idx) internal view returns (uint) { return self.keys[idx]; } } // File: contracts/OwnersExchange.sol pragma solidity ^0.4.23; /** @title OwnersExchange @dev Allow for trustless exchange of LP owners tokens */ contract OwnersExchange is Ownable { using SafeMath for uint; using itmap for itmap.itmap; enum ORDER_TYPE { NULL, BUY, SELL } uint public orderCount; uint public fee; uint public lockedFees; uint public totalFees; mapping(uint => uint) public feeBalances; address[] public addressRegistry; mapping(address => uint) public addressIndex; itmap.itmap orderBook; PoolOwnersInterface public poolOwners; ERC20 public feeToken; event NewOrder(ORDER_TYPE indexed orderType, address indexed sender, uint price, uint amount); event OrderRemoved(ORDER_TYPE indexed orderType, address indexed sender, uint price, uint amount); event OrderFilled(ORDER_TYPE indexed orderType, address indexed sender, address receiver, uint price, uint amount); /** @dev Initialise the contract @param _poolOwners Set the address of the PoolOwners contract used in this DEX */ constructor(address _poolOwners, address _feeToken) public { require(_poolOwners != address(0), "_poolOwners needs to be set"); poolOwners = PoolOwnersInterface(_poolOwners); feeToken = ERC20(_feeToken); addressRegistry.push(address(0)); orderCount = 1; } /** @dev Register an address to a uint allowing packing in orders @param _address The address to register */ function addressRegister(address _address) private returns (uint) { if (addressIndex[_address] != 0) { return addressIndex[_address]; } else { require(addressRegistry.length < 1 << 32, "Registered addresses hit maximum"); addressIndex[_address] = addressRegistry.length; addressRegistry.push(_address); return addressRegistry.length - 1; } } /** @dev ERC677 Reciever for fee token transfer (Always expected to be LINK) @param _sender The address of the sender of the token @param _value The amount of token received @param _data Extra data, not needed in this use-case */ function onTokenTransfer(address _sender, uint256 _value, bytes _data) public { require(msg.sender == address(feeToken), "Sender needs to be the fee token"); uint index = addressRegister(_sender); feeBalances[index] = feeBalances[index].add(_value); totalFees = totalFees.add(_value); } /** @dev Allow users to withdraw any tokens used for fees @param _value The amount wanting to be withdrawn */ function withdrawFeeToken(uint256 _value) public { uint index = addressRegister(msg.sender); require(feeBalances[index] >= _value, "You're withdrawing more than your balance"); feeBalances[index] = feeBalances[index].sub(_value); totalFees = totalFees.sub(_value); if (feeBalances[index] == 0) { delete feeBalances[index]; } feeToken.transfer(msg.sender, _value); } /** @dev Set the fee percentage @param _fee The percentage of fees to be taken in LINK */ function setFee(uint _fee) public onlyOwner { require(_fee <= 500 finney, "Fees can't be more than 50%"); fee = _fee; } /** @dev Returns the fee cost based on a price & amount @param _price The price of the order @param _amount The amount requested */ function feeForOrder(uint _price, uint _amount) public view returns (uint) { return _price .mul(_amount) .div(1 ether) .mul(fee) .div(1 ether); } /** @dev Returns the ETH cost of an order @param _price The price of the order @param _amount The amount requested */ function costOfOrder(uint _price, uint _amount) public pure returns (uint) { return _price.mul(_amount).div(1 ether); } /** @dev Create a new sell order @param _price The price of the order per 1 ether of token @param _amount The amount of tokens being sent */ function addSellOrder(uint _price, uint _amount) public { require(is111bit(_price) && is111bit(_amount), "Price or amount exceeds 111 bits"); require(_price > 0, "Price needs to be greater than 0"); require(_amount > 0, "Amount needs to be greater than 0"); uint orderFee = feeForOrder(_price, _amount); uint index = addressRegister(msg.sender); if (orderFee > 0) { require(feeBalances[index] >= orderFee, "You do not have enough deposited for fees"); feeBalances[index] = feeBalances[index].sub(orderFee); } poolOwners.sendOwnershipFrom(msg.sender, this, _amount); require( !orderBook.insert(orderCount, (((uint(ORDER_TYPE.SELL) << 32 | index) << 111 | _price) << 111) | _amount), "Map replacement detected" ); orderCount += 1; emit NewOrder(ORDER_TYPE.SELL, msg.sender, _price, _amount); } /** @dev Add a new buy order, ETH sent needs to equal: (price * amount) / 18 @param _price The price of the buy order per 1 ether of LP token @param _amount The amount of tokens wanting to be purchased */ function addBuyOrder(uint _price, uint _amount) public payable { require(is111bit(_price) && is111bit(_amount), "Price or amount exceeds 111 bits"); require(_price > 0, "Price needs to be greater than 0"); require(_amount > 0, "Amount needs to be greater than 0"); uint orderFee = feeForOrder(_price, _amount); uint index = addressRegister(msg.sender); if (orderFee > 0) { require(feeBalances[index] >= orderFee, "You do not have enough deposited for fees"); feeBalances[index] = feeBalances[index].sub(orderFee); } uint cost = _price.mul(_amount).div(1 ether); require(_price.mul(_amount) == cost.mul(1 ether), "The price and amount of this order is too small"); require(msg.value == cost, "ETH sent needs to equal the cost"); require( !orderBook.insert(orderCount, (((uint(ORDER_TYPE.BUY) << 32 | index) << 111 | _price) << 111) | _amount), "Map replacement detected" ); orderCount += 1; emit NewOrder(ORDER_TYPE.BUY, msg.sender, _price, _amount); } /** @dev Remove a buy order and refund ETH back to the sender @param _key The key of the order in the book */ function removeBuyOrder(uint _key) public { uint order = orderBook.get(_key); ORDER_TYPE orderType = ORDER_TYPE(order >> 254); require(orderType == ORDER_TYPE.BUY, "This is not a buy order"); uint index = addressIndex[msg.sender]; require(index == (order << 2) >> 224, "You are not the sender of this order"); uint price = (order << 34) >> 145; uint amount = (order << 145) >> 145; require(orderBook.remove(_key), "Map remove failed"); uint orderFee = feeForOrder(price, amount); if (orderFee > 0) { feeBalances[index] = feeBalances[index].add(orderFee); } uint cost = price.mul(amount).div(1 ether); msg.sender.transfer(cost); emit OrderRemoved(orderType, msg.sender, price, amount); } /** @dev Remove a sell order and refund the LP tokens back to the sender @param _key The key of the order in the book */ function removeSellOrder(uint _key) public { uint order = orderBook.get(_key); ORDER_TYPE orderType = ORDER_TYPE(order >> 254); require(orderType == ORDER_TYPE.SELL, "This is not a sell order"); uint index = addressIndex[msg.sender]; require(index == (order << 2) >> 224, "You are not the sender of this order"); uint price = (order << 34) >> 145; uint amount = (order << 145) >> 145; require(orderBook.remove(_key), "Map remove failed"); uint orderFee = feeForOrder(price, amount); if (orderFee > 0) { feeBalances[index] = feeBalances[index].add(orderFee); } poolOwners.sendOwnership(msg.sender, amount); emit OrderRemoved(orderType, msg.sender, price, amount); } /** @dev Fill a sell order in the order book @dev Orders have to be filled in whole amounts @param _key Key of the order as per orderbook */ function fillSellOrder(uint _key) public payable { uint order = orderBook.get(_key); ORDER_TYPE orderType = ORDER_TYPE(order >> 254); require(orderType == ORDER_TYPE.SELL, "This is not a sell order"); uint index = addressRegister(msg.sender); require(index != (order << 2) >> 224, "You cannot fill your own order"); uint price = (order << 34) >> 145; uint amount = (order << 145) >> 145; uint orderFee = feeForOrder(price, amount); require(feeBalances[index] >= orderFee, "You do not have enough deposited fees to fill this order"); uint cost = price.mul(amount).div(1 ether); require(msg.value == cost, "ETH sent needs to equal the cost"); require(orderBook.remove(_key), "Map remove failed"); addressRegistry[(order << 2) >> 224].transfer(msg.value); poolOwners.sendOwnership(msg.sender, amount); if (orderFee > 0) { feeBalances[index] = feeBalances[index].sub(orderFee); uint totalFee = orderFee.mul(2); totalFees = totalFees.sub(totalFee); feeToken.transfer(poolOwners, totalFee); } emit OrderFilled(orderType, addressRegistry[(order << 2) >> 224], msg.sender, price, amount); } /** @dev Fill a buy order in the order book @dev Orders have to be filled in whole amounts @param _key Key of the order, which is the buyers address */ function fillBuyOrder(uint _key) public { uint order = orderBook.get(_key); ORDER_TYPE orderType = ORDER_TYPE(order >> 254); require(orderType == ORDER_TYPE.BUY, "This is not a buy order"); uint index = addressRegister(msg.sender); require(index != (order << 2) >> 224, "You cannot fill your own order"); uint price = (order << 34) >> 145; uint amount = (order << 145) >> 145; uint orderFee = feeForOrder(price, amount); require(feeBalances[index] >= orderFee, "You do not have enough deposited fees to fill this order"); uint cost = price.mul(amount).div(1 ether); require(orderBook.remove(_key), "Map remove failed"); msg.sender.transfer(cost); poolOwners.sendOwnershipFrom(msg.sender, addressRegistry[(order << 2) >> 224], amount); if (orderFee > 0) { feeBalances[index] = feeBalances[index].sub(orderFee); uint totalFee = orderFee.mul(2); totalFees = totalFees.sub(totalFee); feeToken.transfer(poolOwners, totalFee); } emit OrderFilled(orderType, addressRegistry[(order << 2) >> 224], msg.sender, price, amount); } /** @dev Send any fee token earned via PoolOwners distribution back to be re-distributed */ function withdrawDistributedToPoolOwners() public { uint balance = feeToken.balanceOf(this).sub(totalFees); require(balance > 0, "There is no distributed fee token balance in the contract"); feeToken.transfer(poolOwners, balance); } /** @dev Get a single order by its key @param _key The key of the order as per the book */ function getOrder(uint _key) public view returns (ORDER_TYPE, address, uint, uint) { uint order = orderBook.get(_key); return ( ORDER_TYPE(order >> 254), addressRegistry[(order << 2) >> 224], (order << 34) >> 145, (order << 145) >> 145 ); } /** @dev Get a batch of 10 orders by a given array of keys @dev ID's has to be equal or less than 10 in length, or an empty response is given @param _start The starting index in the order book to return from */ function getOrders(uint _start) public view returns ( uint[10] keys, address[10] addresses, ORDER_TYPE[10] orderTypes, uint[10] prices, uint[10] amounts ) { for (uint i = 0; i < 10; i++) { if (orderBook.size() == _start + i) { break; } uint key = orderBook.getKey(_start + i); keys[i] = key; uint order = orderBook.get(key); addresses[i] = addressRegistry[(order << 2) >> 224]; orderTypes[i] = ORDER_TYPE(order >> 254); prices[i] = (order << 34) >> 145; amounts[i] = (order << 145) >> 145; } return (keys, addresses, orderTypes, prices, amounts); } /** @dev Get an orderbook key from the orderbook index @param _i The index to fetch the key for */ function getOrderBookKey(uint _i) public view returns (uint key) { if (_i < orderBook.size()) { key = orderBook.getKey(_i); } else { key = 0; } return key; } /** @dev Get orderbook keys in batches of 10 @param _start The start of the index for the batch */ function getOrderBookKeys(uint _start) public view returns (uint[10] keys) { for (uint i = 0; i < 10; i++) { if (i + _start < orderBook.size()) { keys[i] = orderBook.getKey(_start + i); } else { keys[i] = 0; } } return keys; } /** @dev Get the orderbook size to allow for batch fetching of keys */ function getOrderBookSize() public view returns (uint) { return orderBook.size(); } /** @dev Verify that the number being passed fits into 111 bits for packing @param _val The value to check */ function is111bit(uint _val) private pure returns (bool) { return (_val < 1 << 111); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_key","type":"uint256"}],"name":"removeSellOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_start","type":"uint256"}],"name":"getOrders","outputs":[{"name":"keys","type":"uint256[10]"},{"name":"addresses","type":"address[10]"},{"name":"orderTypes","type":"uint8[10]"},{"name":"prices","type":"uint256[10]"},{"name":"amounts","type":"uint256[10]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"feeForOrder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOrderBookSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_i","type":"uint256"}],"name":"getOrderBookKey","outputs":[{"name":"key","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"orderCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_price","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"addSellOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"costOfOrder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"lockedFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawDistributedToPoolOwners","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"uint256"}],"name":"fillBuyOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_price","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"addBuyOrder","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"addressIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"onTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"feeBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolOwners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"uint256"}],"name":"fillSellOrder","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"withdrawFeeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_key","type":"uint256"}],"name":"getOrder","outputs":[{"name":"","type":"uint8"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"uint256"}],"name":"removeBuyOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"addressRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_start","type":"uint256"}],"name":"getOrderBookKeys","outputs":[{"name":"keys","type":"uint256[10]"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_poolOwners","type":"address"},{"name":"_feeToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"orderType","type":"uint8"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"NewOrder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"orderType","type":"uint8"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"OrderRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"orderType","type":"uint8"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"OrderFilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405160408061284583398101604052805160209091015160008054600160a060020a03191633179055600160a060020a03821615156100b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f706f6f6c4f776e657273206e6565647320746f206265207365740000000000604482015290519081900360640190fd5b600a8054600160a060020a03938416600160a060020a031991821617909155600b8054929093169181169190911790915560068054600181810183556000929092527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01805490921690915580556127168061012f6000396000f3006080604052600436106101505763ffffffff60e060020a6000350416630559c114811461015557806305e0141d1461016f57806313114a9d14610270578063169c4733146102975780631a3352c1146102b25780631c76e2b2146102c75780632453ffa8146102df5780633acde419146102f45780633d48f3af1461030f578063410ac68c1461032a578063416c334d1461033f578063647846a51461035457806369fe0e2d146103855780638cbcca071461039d5780638da5cb5b146103b55780639049681c146103ca578063935c1fb1146103d8578063a4c0ed36146103f9578063aa072d0c14610462578063c375fcfa1461047a578063c3aea22e1461048f578063d05bb5171461049a578063d09ef241146104b2578063ddca3f431461050a578063def8ecf41461051f578063e96716ee14610537578063f2fde38b1461054f578063f8b42f7814610570575b600080fd5b34801561016157600080fd5b5061016d6004356105c1565b005b34801561017b57600080fd5b50610187600435610878565b604051808661014080838360005b838110156101ad578181015183820152602001610195565b5050505090500185600a60200280838360005b838110156101d85781810151838201526020016101c0565b5050505090500184600a60200280838360005b838110156102035781810151838201526020016101eb565b5050505090500183600a60200280838360005b8381101561022e578181015183820152602001610216565b5050505090500182600a60200280838360005b83811015610259578181015183820152602001610241565b505050509050019550505050505060405180910390f35b34801561027c57600080fd5b506102856109db565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102856004356024356109e1565b3480156102be57600080fd5b50610285610a33565b3480156102d357600080fd5b50610285600435610a45565b3480156102eb57600080fd5b50610285610a79565b34801561030057600080fd5b5061016d600435602435610a7f565b34801561031b57600080fd5b50610285600435602435610df1565b34801561033657600080fd5b50610285610e0f565b34801561034b57600080fd5b5061016d610e15565b34801561036057600080fd5b50610369610fde565b60408051600160a060020a039092168252519081900360200190f35b34801561039157600080fd5b5061016d600435610fed565b3480156103a957600080fd5b5061016d6004356110b4565b3480156103c157600080fd5b50610369611517565b61016d600435602435611526565b3480156103e457600080fd5b50610285600160a060020a036004351661190c565b34801561040557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261016d948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061191e9650505050505050565b34801561046e57600080fd5b506102856004356119d9565b34801561048657600080fd5b506103696119eb565b61016d6004356119fa565b3480156104a657600080fd5b5061016d600435611d27565b3480156104be57600080fd5b506104ca600435611ec7565b604051808560028111156104da57fe5b60ff168152600160a060020a03909416602085015250604080840192909252606083015251908190036080019150f35b34801561051657600080fd5b50610285611f43565b34801561052b57600080fd5b5061016d600435611f49565b34801561054357600080fd5b506103696004356121c2565b34801561055b57600080fd5b5061016d600160a060020a03600435166121ea565b34801561057c57600080fd5b506105886004356122c9565b604051808261014080838360005b838110156105ae578181015183820152602001610596565b5050505090500191505060405180910390f35b600080808080806105d960088863ffffffff61233b16565b955060fe60020a860460028111156105ed57fe5b945060028560028111156105fd57fe5b14610652576040805160e560020a62461bcd02815260206004820152601860248201527f54686973206973206e6f7420612073656c6c206f726465720000000000000000604482015290519081900360640190fd5b33600090815260076020526040902054935060e060020a600487020484146106e9576040805160e560020a62461bcd028152602060048201526024808201527f596f7520617265206e6f74207468652073656e646572206f662074686973206f60448201527f7264657200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b609160020a6404000000008702819004935080870204915061071260088863ffffffff61235116565b1515610756576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b61076083836109e1565b9050600081111561079a5760008481526005602052604090205461078a908263ffffffff61243216565b6000858152600560205260409020555b600a54604080517fe2d0d519000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163e2d0d5199160448082019260009290919082900301818387803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b5050505033600160a060020a031685600281111561083457fe5b604080518681526020810186905281517fe2f99b27ce844edd7e242a1056afe8f0a4f5c28c45b300a13fec9aff87d82bff929181900390910190a350505050505050565b61088061264d565b61088861264d565b61089061264d565b61089861264d565b6108a061264d565b600080805b600a8310156109cf578289016108bb6008612441565b14156108c6576109cf565b6108d960088a850163ffffffff61244816565b9150818884600a81106108e857fe5b60200201526108fe60088363ffffffff61233b16565b600680549192509060e060020a600484020490811061091957fe5b600091825260209091200154600160a060020a03168784600a811061093a57fe5b600160a060020a03909216602092909202015260fe60020a8104600281111561095f57fe5b8684600a811061096b57fe5b6020020190600281111561097b57fe5b9081600281111561098857fe5b905250609160020a6404000000008202048584600a81106109a557fe5b6020020152609160020a808202048484600a81106109bf57fe5b60200201526001909201916108a5565b50505091939590929450565b60045481565b6000610a2c670de0b6b3a7640000610a14600254610a20670de0b6b3a7640000610a14888a61246e90919063ffffffff16565b9063ffffffff61249216565b9063ffffffff61246e16565b9392505050565b6000610a3f6008612441565b90505b90565b6000610a516008612441565b821015610a7057610a6960088363ffffffff61244816565b9050610a74565b5060005b919050565b60015481565b600080610a8b846124a9565b8015610a9b5750610a9b836124a9565b1515610af1576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206f7220616d6f756e742065786365656473203131312062697473604482015290519081900360640190fd5b60008411610b49576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206e6565647320746f2062652067726561746572207468616e2030604482015290519081900360640190fd5b60008311610bc7576040805160e560020a62461bcd02815260206004820152602160248201527f416d6f756e74206e6565647320746f2062652067726561746572207468616e2060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610bd184846109e1565b9150610bdc336124bc565b90506000821115610c9057600081815260056020526040902054821115610c61576040805160e560020a62461bcd02815260206004820152602960248201526000805160206126ab83398151915260448201527f20666f7220666565730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600081815260056020526040902054610c80908363ffffffff6125cc16565b6000828152600560205260409020555b600a54604080517fde995b90000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a039092169163de995b909160648082019260009290919082900301818387803b158015610d0257600080fd5b505af1158015610d16573d6000803e3d6000fd5b5050600154610d509250905084606f878186602060025b9060020a02179060020a02179060020a021760086125de9092919063ffffffff16565b15610da5576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b6001805481019055336002604080518781526020810187905281517fbcbf7b263490465b953d70010fc8e536abfdfbcae985c547ef7e2ada714af4ff929181900390910190a350505050565b6000610a2c670de0b6b3a7640000610a14858563ffffffff61246e16565b60035481565b60048054600b54604080517f70a08231000000000000000000000000000000000000000000000000000000008152309481019490945251600093610ebd9392600160a060020a0316916370a082319160248082019260209290919082900301818987803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d6020811015610eaf57600080fd5b50519063ffffffff6125cc16565b905060008111610f3d576040805160e560020a62461bcd02815260206004820152603960248201527f5468657265206973206e6f2064697374726962757465642066656520746f6b6560448201527f6e2062616c616e636520696e2074686520636f6e747261637400000000000000606482015290519081900360840190fd5b600b54600a54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d6020811015610fd957600080fd5b505050565b600b54600160a060020a031681565b600054600160a060020a0316331461104f576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206e6f7420617574686f72697365640000000000000000000000604482015290519081900360640190fd5b6706f05b59d3b200008111156110af576040805160e560020a62461bcd02815260206004820152601b60248201527f466565732063616e2774206265206d6f7265207468616e203530250000000000604482015290519081900360640190fd5b600255565b6000808080808080806110ce60088a63ffffffff61233b16565b975060fe60020a880460028111156110e257fe5b965060018760028111156110f257fe5b14611147576040805160e560020a62461bcd02815260206004820152601760248201527f54686973206973206e6f74206120627579206f72646572000000000000000000604482015290519081900360640190fd5b611150336124bc565b955060e060020a60048902048614156111b3576040805160e560020a62461bcd02815260206004820152601e60248201527f596f752063616e6e6f742066696c6c20796f7572206f776e206f726465720000604482015290519081900360640190fd5b609160020a640400000000890281900495508089020493506111d585856109e1565b600087815260056020526040902054909350831115611252576040805160e560020a62461bcd02815260206004820152603860248201526000805160206126ab83398151915260448201527f206665657320746f2066696c6c2074686973206f726465720000000000000000606482015290519081900360840190fd5b61126e670de0b6b3a7640000610a14878763ffffffff61246e16565b915061128160088a63ffffffff61235116565b15156112c5576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b604051339083156108fc029084906000818181858888f193505050501580156112f2573d6000803e3d6000fd5b50600a5460068054600160a060020a039092169163de995b9091339160e060020a60048e020490811061132157fe5b60009182526020822001546040805160e060020a63ffffffff8716028152600160a060020a039485166004820152939091166024840152604483018990525160648084019382900301818387803b15801561137b57600080fd5b505af115801561138f573d6000803e3d6000fd5b505050506000831115611494576000868152600560205260409020546113bb908463ffffffff6125cc16565b6000878152600560205260409020556113db83600263ffffffff61246e16565b6004549091506113f1908263ffffffff6125cc16565b6004908155600b54600a54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831694810194909452602484018590525191169163a9059cbb9160448083019260209291908290030181600087803b15801561146757600080fd5b505af115801561147b573d6000803e3d6000fd5b505050506040513d602081101561149157600080fd5b50505b6006805460e060020a60048b02049081106114ab57fe5b600091825260209091200154600160a060020a03168760028111156114cc57fe5b604080513381526020810189905280820188905290517f37561a23711d8277a49bc8fdac68dafcf982b917f213a7691984a6dcea1edcd29181900360600190a3505050505050505050565b600054600160a060020a031681565b6000806000611534856124a9565b80156115445750611544846124a9565b151561159a576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206f7220616d6f756e742065786365656473203131312062697473604482015290519081900360640190fd5b600085116115f2576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206e6565647320746f2062652067726561746572207468616e2030604482015290519081900360640190fd5b60008411611670576040805160e560020a62461bcd02815260206004820152602160248201527f416d6f756e74206e6565647320746f2062652067726561746572207468616e2060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61167a85856109e1565b9250611685336124bc565b915060008311156117395760008281526005602052604090205483111561170a576040805160e560020a62461bcd02815260206004820152602960248201526000805160206126ab83398151915260448201527f20666f7220666565730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260056020526040902054611729908463ffffffff6125cc16565b6000838152600560205260409020555b611755670de0b6b3a7640000610a14878763ffffffff61246e16565b905061176f81670de0b6b3a764000063ffffffff61246e16565b61177f868663ffffffff61246e16565b146117fa576040805160e560020a62461bcd02815260206004820152602f60248201527f54686520707269636520616e6420616d6f756e74206f662074686973206f726460448201527f657220697320746f6f20736d616c6c0000000000000000000000000000000000606482015290519081900360840190fd5b348114611851576040805160e560020a62461bcd02815260206004820181905260248201527f4554482073656e74206e6565647320746f20657175616c2074686520636f7374604482015290519081900360640190fd5b61186d60015485606f88606f87602060016002811115610d2d57fe5b156118c2576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b6001805481018155604080518781526020810187905281513393927fbcbf7b263490465b953d70010fc8e536abfdfbcae985c547ef7e2ada714af4ff928290030190a35050505050565b60076020526000908152604090205481565b600b54600090600160a060020a03163314611983576040805160e560020a62461bcd02815260206004820181905260248201527f53656e646572206e6565647320746f206265207468652066656520746f6b656e604482015290519081900360640190fd5b61198c846124bc565b6000818152600560205260409020549091506119ae908463ffffffff61243216565b6000828152600560205260409020556004546119d0908463ffffffff61243216565b60045550505050565b60056020526000908152604090205481565b600a54600160a060020a031681565b600080808080808080611a1460088a63ffffffff61233b16565b975060fe60020a88046002811115611a2857fe5b96506002876002811115611a3857fe5b14611a8d576040805160e560020a62461bcd02815260206004820152601860248201527f54686973206973206e6f7420612073656c6c206f726465720000000000000000604482015290519081900360640190fd5b611a96336124bc565b955060e060020a6004890204861415611af9576040805160e560020a62461bcd02815260206004820152601e60248201527f596f752063616e6e6f742066696c6c20796f7572206f776e206f726465720000604482015290519081900360640190fd5b609160020a64040000000089028190049550808902049350611b1b85856109e1565b600087815260056020526040902054909350831115611b98576040805160e560020a62461bcd02815260206004820152603860248201526000805160206126ab83398151915260448201527f206665657320746f2066696c6c2074686973206f726465720000000000000000606482015290519081900360840190fd5b611bb4670de0b6b3a7640000610a14878763ffffffff61246e16565b9150348214611c0d576040805160e560020a62461bcd02815260206004820181905260248201527f4554482073656e74206e6565647320746f20657175616c2074686520636f7374604482015290519081900360640190fd5b611c1e60088a63ffffffff61235116565b1515611c62576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b6006805460e060020a60048b0204908110611c7957fe5b6000918252602082200154604051600160a060020a03909116913480156108fc02929091818181858888f19350505050158015611cba573d6000803e3d6000fd5b50600a54604080517fe2d0d519000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a039092169163e2d0d5199160448082019260009290919082900301818387803b15801561137b57600080fd5b6000611d32336124bc565b600081815260056020526040902054909150821115611dc1576040805160e560020a62461bcd02815260206004820152602960248201527f596f75277265207769746864726177696e67206d6f7265207468616e20796f7560448201527f722062616c616e63650000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600081815260056020526040902054611de0908363ffffffff6125cc16565b600082815260056020526040902055600454611e02908363ffffffff6125cc16565b6004556000818152600560205260409020541515611e2a576000818152600560205260408120555b600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505050506040513d6020811015611ec157600080fd5b50505050565b600080808080611ede60088763ffffffff61233b16565b905060fe60020a81046002811115611ef257fe5b6006805460e060020a6004850204908110611f0957fe5b600091825260209091200154909550600160a060020a03169350609160020a64040000000082028190049350808202049150509193509193565b60025481565b6000808080808080611f6260088963ffffffff61233b16565b965060fe60020a87046002811115611f7657fe5b95506001866002811115611f8657fe5b14611fdb576040805160e560020a62461bcd02815260206004820152601760248201527f54686973206973206e6f74206120627579206f72646572000000000000000000604482015290519081900360640190fd5b33600090815260076020526040902054945060e060020a60048802048514612072576040805160e560020a62461bcd028152602060048201526024808201527f596f7520617265206e6f74207468652073656e646572206f662074686973206f60448201527f7264657200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b609160020a6404000000008802819004945080880204925061209b60088963ffffffff61235116565b15156120df576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b6120e984846109e1565b9150600082111561212357600085815260056020526040902054612113908363ffffffff61243216565b6000868152600560205260409020555b61213f670de0b6b3a7640000610a14868663ffffffff61246e16565b604051909150339082156108fc029083906000818181858888f1935050505015801561216f573d6000803e3d6000fd5b503386600281111561217d57fe5b604080518781526020810187905281517fe2f99b27ce844edd7e242a1056afe8f0a4f5c28c45b300a13fec9aff87d82bff929181900390910190a35050505050505050565b60068054829081106121d057fe5b600091825260209091200154600160a060020a0316905081565b600054600160a060020a0316331461224c576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206e6f7420617574686f72697365640000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561226157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6122d161264d565b60005b600a811015612335576122e76008612441565b838201101561231957612303600884830163ffffffff61244816565b8282600a811061230f57fe5b602002015261232d565b60008282600a811061232757fe5b60200201525b6001016122d4565b50919050565b6000908152602091909152604090206001015490565b600081815260208390526040812080541515612370576000915061242b565b6001840154815410156123f85780546001850180548691600091600019810190811061239857fe5b6000918252602080832090910154835282019290925260400190205560018401805460001981019081106123c857fe5b90600052602060002001548460010160018360000154038154811015156123eb57fe5b6000918252602090912001555b600184018054600019019061240d908261266d565b50600083815260208590526040812081815560019081019190915591505b5092915050565b600082820183811015610a2c57fe5b6001015490565b6000826001018281548110151561245b57fe5b9060005260206000200154905092915050565b600082820283158061248a575082848281151561248757fe5b04145b1515610a2c57fe5b60008082848115156124a057fe5b04949350505050565b6d80000000000000000000000000001190565b600160a060020a038116600090815260076020526040812054156124f95750600160a060020a038116600090815260076020526040902054610a74565b60065464010000000011612557576040805160e560020a62461bcd02815260206004820181905260248201527f526567697374657265642061646472657373657320686974206d6178696d756d604482015290519081900360640190fd5b5060068054600160a060020a03831660008181526007602052604081208390556001830184558390527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f909101805473ffffffffffffffffffffffffffffffffffffffff191690911790555460001901610a74565b6000828211156125d857fe5b50900390565b60008281526020849052604081206001810183905580548210156126055760019150612645565b846001018054600101908161261a919061266d565b80825560018601805486926000190190811061263257fe5b9060005260206000200181905550600091505b509392505050565b61014060405190810160405280600a906020820280388339509192915050565b815481835581811115610fd957600083815260209020610fd9918101908301610a4291905b808211156126a65760008155600101612692565b50905600596f7520646f206e6f74206861766520656e6f756768206465706f73697465644d61702072656d6f7665206661696c6564000000000000000000000000000000a165627a7a723058206f21fef149cfd5eb425253dd093f85f42405f876921b09166d282a7ca8ebbab60029000000000000000000000000182d4990bb0ff595b308b3efcb93313abad575e7000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Deployed Bytecode
0x6080604052600436106101505763ffffffff60e060020a6000350416630559c114811461015557806305e0141d1461016f57806313114a9d14610270578063169c4733146102975780631a3352c1146102b25780631c76e2b2146102c75780632453ffa8146102df5780633acde419146102f45780633d48f3af1461030f578063410ac68c1461032a578063416c334d1461033f578063647846a51461035457806369fe0e2d146103855780638cbcca071461039d5780638da5cb5b146103b55780639049681c146103ca578063935c1fb1146103d8578063a4c0ed36146103f9578063aa072d0c14610462578063c375fcfa1461047a578063c3aea22e1461048f578063d05bb5171461049a578063d09ef241146104b2578063ddca3f431461050a578063def8ecf41461051f578063e96716ee14610537578063f2fde38b1461054f578063f8b42f7814610570575b600080fd5b34801561016157600080fd5b5061016d6004356105c1565b005b34801561017b57600080fd5b50610187600435610878565b604051808661014080838360005b838110156101ad578181015183820152602001610195565b5050505090500185600a60200280838360005b838110156101d85781810151838201526020016101c0565b5050505090500184600a60200280838360005b838110156102035781810151838201526020016101eb565b5050505090500183600a60200280838360005b8381101561022e578181015183820152602001610216565b5050505090500182600a60200280838360005b83811015610259578181015183820152602001610241565b505050509050019550505050505060405180910390f35b34801561027c57600080fd5b506102856109db565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102856004356024356109e1565b3480156102be57600080fd5b50610285610a33565b3480156102d357600080fd5b50610285600435610a45565b3480156102eb57600080fd5b50610285610a79565b34801561030057600080fd5b5061016d600435602435610a7f565b34801561031b57600080fd5b50610285600435602435610df1565b34801561033657600080fd5b50610285610e0f565b34801561034b57600080fd5b5061016d610e15565b34801561036057600080fd5b50610369610fde565b60408051600160a060020a039092168252519081900360200190f35b34801561039157600080fd5b5061016d600435610fed565b3480156103a957600080fd5b5061016d6004356110b4565b3480156103c157600080fd5b50610369611517565b61016d600435602435611526565b3480156103e457600080fd5b50610285600160a060020a036004351661190c565b34801561040557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261016d948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061191e9650505050505050565b34801561046e57600080fd5b506102856004356119d9565b34801561048657600080fd5b506103696119eb565b61016d6004356119fa565b3480156104a657600080fd5b5061016d600435611d27565b3480156104be57600080fd5b506104ca600435611ec7565b604051808560028111156104da57fe5b60ff168152600160a060020a03909416602085015250604080840192909252606083015251908190036080019150f35b34801561051657600080fd5b50610285611f43565b34801561052b57600080fd5b5061016d600435611f49565b34801561054357600080fd5b506103696004356121c2565b34801561055b57600080fd5b5061016d600160a060020a03600435166121ea565b34801561057c57600080fd5b506105886004356122c9565b604051808261014080838360005b838110156105ae578181015183820152602001610596565b5050505090500191505060405180910390f35b600080808080806105d960088863ffffffff61233b16565b955060fe60020a860460028111156105ed57fe5b945060028560028111156105fd57fe5b14610652576040805160e560020a62461bcd02815260206004820152601860248201527f54686973206973206e6f7420612073656c6c206f726465720000000000000000604482015290519081900360640190fd5b33600090815260076020526040902054935060e060020a600487020484146106e9576040805160e560020a62461bcd028152602060048201526024808201527f596f7520617265206e6f74207468652073656e646572206f662074686973206f60448201527f7264657200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b609160020a6404000000008702819004935080870204915061071260088863ffffffff61235116565b1515610756576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b61076083836109e1565b9050600081111561079a5760008481526005602052604090205461078a908263ffffffff61243216565b6000858152600560205260409020555b600a54604080517fe2d0d519000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163e2d0d5199160448082019260009290919082900301818387803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b5050505033600160a060020a031685600281111561083457fe5b604080518681526020810186905281517fe2f99b27ce844edd7e242a1056afe8f0a4f5c28c45b300a13fec9aff87d82bff929181900390910190a350505050505050565b61088061264d565b61088861264d565b61089061264d565b61089861264d565b6108a061264d565b600080805b600a8310156109cf578289016108bb6008612441565b14156108c6576109cf565b6108d960088a850163ffffffff61244816565b9150818884600a81106108e857fe5b60200201526108fe60088363ffffffff61233b16565b600680549192509060e060020a600484020490811061091957fe5b600091825260209091200154600160a060020a03168784600a811061093a57fe5b600160a060020a03909216602092909202015260fe60020a8104600281111561095f57fe5b8684600a811061096b57fe5b6020020190600281111561097b57fe5b9081600281111561098857fe5b905250609160020a6404000000008202048584600a81106109a557fe5b6020020152609160020a808202048484600a81106109bf57fe5b60200201526001909201916108a5565b50505091939590929450565b60045481565b6000610a2c670de0b6b3a7640000610a14600254610a20670de0b6b3a7640000610a14888a61246e90919063ffffffff16565b9063ffffffff61249216565b9063ffffffff61246e16565b9392505050565b6000610a3f6008612441565b90505b90565b6000610a516008612441565b821015610a7057610a6960088363ffffffff61244816565b9050610a74565b5060005b919050565b60015481565b600080610a8b846124a9565b8015610a9b5750610a9b836124a9565b1515610af1576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206f7220616d6f756e742065786365656473203131312062697473604482015290519081900360640190fd5b60008411610b49576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206e6565647320746f2062652067726561746572207468616e2030604482015290519081900360640190fd5b60008311610bc7576040805160e560020a62461bcd02815260206004820152602160248201527f416d6f756e74206e6565647320746f2062652067726561746572207468616e2060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610bd184846109e1565b9150610bdc336124bc565b90506000821115610c9057600081815260056020526040902054821115610c61576040805160e560020a62461bcd02815260206004820152602960248201526000805160206126ab83398151915260448201527f20666f7220666565730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600081815260056020526040902054610c80908363ffffffff6125cc16565b6000828152600560205260409020555b600a54604080517fde995b90000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a039092169163de995b909160648082019260009290919082900301818387803b158015610d0257600080fd5b505af1158015610d16573d6000803e3d6000fd5b5050600154610d509250905084606f878186602060025b9060020a02179060020a02179060020a021760086125de9092919063ffffffff16565b15610da5576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b6001805481019055336002604080518781526020810187905281517fbcbf7b263490465b953d70010fc8e536abfdfbcae985c547ef7e2ada714af4ff929181900390910190a350505050565b6000610a2c670de0b6b3a7640000610a14858563ffffffff61246e16565b60035481565b60048054600b54604080517f70a08231000000000000000000000000000000000000000000000000000000008152309481019490945251600093610ebd9392600160a060020a0316916370a082319160248082019260209290919082900301818987803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d6020811015610eaf57600080fd5b50519063ffffffff6125cc16565b905060008111610f3d576040805160e560020a62461bcd02815260206004820152603960248201527f5468657265206973206e6f2064697374726962757465642066656520746f6b6560448201527f6e2062616c616e636520696e2074686520636f6e747261637400000000000000606482015290519081900360840190fd5b600b54600a54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d6020811015610fd957600080fd5b505050565b600b54600160a060020a031681565b600054600160a060020a0316331461104f576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206e6f7420617574686f72697365640000000000000000000000604482015290519081900360640190fd5b6706f05b59d3b200008111156110af576040805160e560020a62461bcd02815260206004820152601b60248201527f466565732063616e2774206265206d6f7265207468616e203530250000000000604482015290519081900360640190fd5b600255565b6000808080808080806110ce60088a63ffffffff61233b16565b975060fe60020a880460028111156110e257fe5b965060018760028111156110f257fe5b14611147576040805160e560020a62461bcd02815260206004820152601760248201527f54686973206973206e6f74206120627579206f72646572000000000000000000604482015290519081900360640190fd5b611150336124bc565b955060e060020a60048902048614156111b3576040805160e560020a62461bcd02815260206004820152601e60248201527f596f752063616e6e6f742066696c6c20796f7572206f776e206f726465720000604482015290519081900360640190fd5b609160020a640400000000890281900495508089020493506111d585856109e1565b600087815260056020526040902054909350831115611252576040805160e560020a62461bcd02815260206004820152603860248201526000805160206126ab83398151915260448201527f206665657320746f2066696c6c2074686973206f726465720000000000000000606482015290519081900360840190fd5b61126e670de0b6b3a7640000610a14878763ffffffff61246e16565b915061128160088a63ffffffff61235116565b15156112c5576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b604051339083156108fc029084906000818181858888f193505050501580156112f2573d6000803e3d6000fd5b50600a5460068054600160a060020a039092169163de995b9091339160e060020a60048e020490811061132157fe5b60009182526020822001546040805160e060020a63ffffffff8716028152600160a060020a039485166004820152939091166024840152604483018990525160648084019382900301818387803b15801561137b57600080fd5b505af115801561138f573d6000803e3d6000fd5b505050506000831115611494576000868152600560205260409020546113bb908463ffffffff6125cc16565b6000878152600560205260409020556113db83600263ffffffff61246e16565b6004549091506113f1908263ffffffff6125cc16565b6004908155600b54600a54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831694810194909452602484018590525191169163a9059cbb9160448083019260209291908290030181600087803b15801561146757600080fd5b505af115801561147b573d6000803e3d6000fd5b505050506040513d602081101561149157600080fd5b50505b6006805460e060020a60048b02049081106114ab57fe5b600091825260209091200154600160a060020a03168760028111156114cc57fe5b604080513381526020810189905280820188905290517f37561a23711d8277a49bc8fdac68dafcf982b917f213a7691984a6dcea1edcd29181900360600190a3505050505050505050565b600054600160a060020a031681565b6000806000611534856124a9565b80156115445750611544846124a9565b151561159a576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206f7220616d6f756e742065786365656473203131312062697473604482015290519081900360640190fd5b600085116115f2576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206e6565647320746f2062652067726561746572207468616e2030604482015290519081900360640190fd5b60008411611670576040805160e560020a62461bcd02815260206004820152602160248201527f416d6f756e74206e6565647320746f2062652067726561746572207468616e2060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61167a85856109e1565b9250611685336124bc565b915060008311156117395760008281526005602052604090205483111561170a576040805160e560020a62461bcd02815260206004820152602960248201526000805160206126ab83398151915260448201527f20666f7220666565730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260056020526040902054611729908463ffffffff6125cc16565b6000838152600560205260409020555b611755670de0b6b3a7640000610a14878763ffffffff61246e16565b905061176f81670de0b6b3a764000063ffffffff61246e16565b61177f868663ffffffff61246e16565b146117fa576040805160e560020a62461bcd02815260206004820152602f60248201527f54686520707269636520616e6420616d6f756e74206f662074686973206f726460448201527f657220697320746f6f20736d616c6c0000000000000000000000000000000000606482015290519081900360840190fd5b348114611851576040805160e560020a62461bcd02815260206004820181905260248201527f4554482073656e74206e6565647320746f20657175616c2074686520636f7374604482015290519081900360640190fd5b61186d60015485606f88606f87602060016002811115610d2d57fe5b156118c2576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b6001805481018155604080518781526020810187905281513393927fbcbf7b263490465b953d70010fc8e536abfdfbcae985c547ef7e2ada714af4ff928290030190a35050505050565b60076020526000908152604090205481565b600b54600090600160a060020a03163314611983576040805160e560020a62461bcd02815260206004820181905260248201527f53656e646572206e6565647320746f206265207468652066656520746f6b656e604482015290519081900360640190fd5b61198c846124bc565b6000818152600560205260409020549091506119ae908463ffffffff61243216565b6000828152600560205260409020556004546119d0908463ffffffff61243216565b60045550505050565b60056020526000908152604090205481565b600a54600160a060020a031681565b600080808080808080611a1460088a63ffffffff61233b16565b975060fe60020a88046002811115611a2857fe5b96506002876002811115611a3857fe5b14611a8d576040805160e560020a62461bcd02815260206004820152601860248201527f54686973206973206e6f7420612073656c6c206f726465720000000000000000604482015290519081900360640190fd5b611a96336124bc565b955060e060020a6004890204861415611af9576040805160e560020a62461bcd02815260206004820152601e60248201527f596f752063616e6e6f742066696c6c20796f7572206f776e206f726465720000604482015290519081900360640190fd5b609160020a64040000000089028190049550808902049350611b1b85856109e1565b600087815260056020526040902054909350831115611b98576040805160e560020a62461bcd02815260206004820152603860248201526000805160206126ab83398151915260448201527f206665657320746f2066696c6c2074686973206f726465720000000000000000606482015290519081900360840190fd5b611bb4670de0b6b3a7640000610a14878763ffffffff61246e16565b9150348214611c0d576040805160e560020a62461bcd02815260206004820181905260248201527f4554482073656e74206e6565647320746f20657175616c2074686520636f7374604482015290519081900360640190fd5b611c1e60088a63ffffffff61235116565b1515611c62576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b6006805460e060020a60048b0204908110611c7957fe5b6000918252602082200154604051600160a060020a03909116913480156108fc02929091818181858888f19350505050158015611cba573d6000803e3d6000fd5b50600a54604080517fe2d0d519000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a039092169163e2d0d5199160448082019260009290919082900301818387803b15801561137b57600080fd5b6000611d32336124bc565b600081815260056020526040902054909150821115611dc1576040805160e560020a62461bcd02815260206004820152602960248201527f596f75277265207769746864726177696e67206d6f7265207468616e20796f7560448201527f722062616c616e63650000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600081815260056020526040902054611de0908363ffffffff6125cc16565b600082815260056020526040902055600454611e02908363ffffffff6125cc16565b6004556000818152600560205260409020541515611e2a576000818152600560205260408120555b600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505050506040513d6020811015611ec157600080fd5b50505050565b600080808080611ede60088763ffffffff61233b16565b905060fe60020a81046002811115611ef257fe5b6006805460e060020a6004850204908110611f0957fe5b600091825260209091200154909550600160a060020a03169350609160020a64040000000082028190049350808202049150509193509193565b60025481565b6000808080808080611f6260088963ffffffff61233b16565b965060fe60020a87046002811115611f7657fe5b95506001866002811115611f8657fe5b14611fdb576040805160e560020a62461bcd02815260206004820152601760248201527f54686973206973206e6f74206120627579206f72646572000000000000000000604482015290519081900360640190fd5b33600090815260076020526040902054945060e060020a60048802048514612072576040805160e560020a62461bcd028152602060048201526024808201527f596f7520617265206e6f74207468652073656e646572206f662074686973206f60448201527f7264657200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b609160020a6404000000008802819004945080880204925061209b60088963ffffffff61235116565b15156120df576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b6120e984846109e1565b9150600082111561212357600085815260056020526040902054612113908363ffffffff61243216565b6000868152600560205260409020555b61213f670de0b6b3a7640000610a14868663ffffffff61246e16565b604051909150339082156108fc029083906000818181858888f1935050505015801561216f573d6000803e3d6000fd5b503386600281111561217d57fe5b604080518781526020810187905281517fe2f99b27ce844edd7e242a1056afe8f0a4f5c28c45b300a13fec9aff87d82bff929181900390910190a35050505050505050565b60068054829081106121d057fe5b600091825260209091200154600160a060020a0316905081565b600054600160a060020a0316331461224c576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206e6f7420617574686f72697365640000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561226157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6122d161264d565b60005b600a811015612335576122e76008612441565b838201101561231957612303600884830163ffffffff61244816565b8282600a811061230f57fe5b602002015261232d565b60008282600a811061232757fe5b60200201525b6001016122d4565b50919050565b6000908152602091909152604090206001015490565b600081815260208390526040812080541515612370576000915061242b565b6001840154815410156123f85780546001850180548691600091600019810190811061239857fe5b6000918252602080832090910154835282019290925260400190205560018401805460001981019081106123c857fe5b90600052602060002001548460010160018360000154038154811015156123eb57fe5b6000918252602090912001555b600184018054600019019061240d908261266d565b50600083815260208590526040812081815560019081019190915591505b5092915050565b600082820183811015610a2c57fe5b6001015490565b6000826001018281548110151561245b57fe5b9060005260206000200154905092915050565b600082820283158061248a575082848281151561248757fe5b04145b1515610a2c57fe5b60008082848115156124a057fe5b04949350505050565b6d80000000000000000000000000001190565b600160a060020a038116600090815260076020526040812054156124f95750600160a060020a038116600090815260076020526040902054610a74565b60065464010000000011612557576040805160e560020a62461bcd02815260206004820181905260248201527f526567697374657265642061646472657373657320686974206d6178696d756d604482015290519081900360640190fd5b5060068054600160a060020a03831660008181526007602052604081208390556001830184558390527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f909101805473ffffffffffffffffffffffffffffffffffffffff191690911790555460001901610a74565b6000828211156125d857fe5b50900390565b60008281526020849052604081206001810183905580548210156126055760019150612645565b846001018054600101908161261a919061266d565b80825560018601805486926000190190811061263257fe5b9060005260206000200181905550600091505b509392505050565b61014060405190810160405280600a906020820280388339509192915050565b815481835581811115610fd957600083815260209020610fd9918101908301610a4291905b808211156126a65760008155600101612692565b50905600596f7520646f206e6f74206861766520656e6f756768206465706f73697465644d61702072656d6f7665206661696c6564000000000000000000000000000000a165627a7a723058206f21fef149cfd5eb425253dd093f85f42405f876921b09166d282a7ca8ebbab60029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000182d4990bb0ff595b308b3efcb93313abad575e7000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
-----Decoded View---------------
Arg [0] : _poolOwners (address): 0x182D4990bB0ff595b308B3efCb93313abad575E7
Arg [1] : _feeToken (address): 0x514910771AF9Ca656af840dff83E8264EcF986CA
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000182d4990bb0ff595b308b3efcb93313abad575e7
Arg [1] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Deployed Bytecode Sourcemap
5576:14613:0:-;;;;;;;;;-1:-1:-1;;;5576:14613:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13312:807;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13312:807:0;;;;;;;18147:767;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18147:767:0;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;;;;;;;;5821:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5821:21:0;;;;;;;;;;;;;;;;;;;;9105:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9105:211:0;;;;;;;19840:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19840:97:0;;;;19050:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19050:224:0;;;;;5741:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:22:0;;;;9800:969;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9800:969:0;;;;;;;9480:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9480:133:0;;;;;;;5792:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5792:22:0;;;;17171:264;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17171:264:0;;;;6063:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6063:21:0;;;;;;;;-1:-1:-1;;;;;6063:21:0;;;;;;;;;;;;;;8785:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8785:142:0;;;;;15810:1241;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15810:1241:0;;;;;2649:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2649:20:0;;;;11020:1149;;;;;;;;5936:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5936:44:0;-1:-1:-1;;;;;5936:44:0;;;;;7738:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7738:327:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7738:327:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7738:327:0;;-1:-1:-1;7738:327:0;;-1:-1:-1;;;;;;;7738:327:0;5849:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5849:40:0;;;;;6019:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6019:37:0;;;;14306:1306;;;;;;8212:446;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8212:446:0;;;;;17563:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17563:327:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17563:327:0;;;;;;;-1:-1:-1;17563:327:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17563:327:0;5770:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5770:15:0;;;;12316:838;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12316:838:0;;;;;5896:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5896:32:0;;;;;3293:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3293:178:0;-1:-1:-1;;;;;3293:178:0;;;;;19410:331;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19410:331:0;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19410:331:0;;;;;;;;;;;;;;;;13312:807;13366:10;;;;;;13379:19;:9;13393:4;13379:19;:13;:19;:::i;:::-;13366:32;-1:-1:-1;;;;13443:12:0;;;13432:24;;;;;;;13409:47;-1:-1:-1;13488:15:0;13475:9;:28;;;;;;;;;13467:65;;;;;-1:-1:-1;;;;;13467:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13569:10;13556:24;;;;:12;:24;;;;;;;-1:-1:-1;;;;13609:10:0;;;13608:19;13599:28;;13591:77;;;;;-1:-1:-1;;;;;13591:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13695:11:0;;;13694:20;;;;-1:-1:-1;13740:12:0;;;13739:21;;-1:-1:-1;13779:22:0;:9;13796:4;13779:22;:16;:22;:::i;:::-;13771:52;;;;;;;-1:-1:-1;;;;;13771:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13771:52:0;;;;;;;;;;;;;;;13852:26;13864:5;13871:6;13852:11;:26::i;:::-;13836:42;;13904:1;13893:8;:12;13889:98;;;13943:18;;;;:11;:18;;;;;;:32;;13966:8;13943:32;:22;:32;:::i;:::-;13922:18;;;;:11;:18;;;;;:53;13889:98;13999:10;;:44;;;;;;14024:10;13999:44;;;;;;;;;;;;-1:-1:-1;;;;;13999:10:0;;;;:24;;:44;;;;;:10;;:44;;;;;;;;:10;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;13999:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13999:44:0;;;;14085:10;-1:-1:-1;;;;;14061:50:0;14074:9;14061:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13312:807;;;;;;;:::o;18147:767::-;18210:13;;:::i;:::-;18234:21;;:::i;:::-;18267:25;;:::i;:::-;18304:15;;:::i;:::-;18331:16;;:::i;:::-;18371:6;;;18366:477;18387:2;18383:1;:6;18366:477;;;18444:1;18435:6;:10;18415:16;:9;:14;:16::i;:::-;:30;18411:76;;;18466:5;;18411:76;18512:28;:9;18529:10;;;18512:28;:16;:28;:::i;:::-;18501:39;-1:-1:-1;18501:39:0;18555:4;18560:1;18555:7;;;;;;;;;;:13;18596:18;:9;18610:3;18596:18;:13;:18;:::i;:::-;18644:15;:36;;18583:31;;-1:-1:-1;18644:15:0;-1:-1:-1;;;18661:10:0;;;18660:19;;18644:36;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18644:36:0;18629:9;18639:1;18629:12;;;;;;;-1:-1:-1;;;;;18629:51:0;;;:12;;;;;;:51;-1:-1:-1;;;18722:12:0;;;18711:24;;;;;;;18695:10;18706:1;18695:13;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;18763:11:0;;;18762:20;18750:6;18757:1;18750:9;;;;;;;;;;:32;-1:-1:-1;;;18811:12:0;;;18810:21;18797:7;18805:1;18797:10;;;;;;;;;;:34;18391:3;;;;;18366:477;;;18147:767;;;;;;;;;;:::o;5821:21::-;;;;:::o;9105:211::-;9174:4;9198:110;9300:7;9198:83;9277:3;;9198:60;9250:7;9198:33;9223:7;9198:6;:24;;:33;;;;:::i;:::-;:51;:60;:51;:60;:::i;:::-;:78;:83;:78;:83;:::i;:110::-;9191:117;9105:211;-1:-1:-1;;;9105:211:0:o;19840:97::-;19889:4;19913:16;:9;:14;:16::i;:::-;19906:23;;19840:97;;:::o;19050:224::-;19105:8;19135:16;:9;:14;:16::i;:::-;19130:2;:21;19126:120;;;19174:20;:9;19191:2;19174:20;:16;:20;:::i;:::-;19168:26;;19126:120;;;-1:-1:-1;19233:1:0;19126:120;19050:224;;;:::o;5741:22::-;;;;:::o;9800:969::-;10098:13;10153:10;9875:16;9884:6;9875:8;:16::i;:::-;:37;;;;;9895:17;9904:7;9895:8;:17::i;:::-;9867:82;;;;;;;-1:-1:-1;;;;;9867:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9979:1;9970:10;;9962:55;;;;;-1:-1:-1;;;;;9962:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10046:1;10036:11;;10028:57;;;;;-1:-1:-1;;;;;10028:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10114:28;10126:6;10134:7;10114:11;:28::i;:::-;10098:44;;10166:27;10182:10;10166:15;:27::i;:::-;10153:40;;10219:1;10208:8;:12;10204:197;;;10245:18;;;;:11;:18;;;;;;:30;-1:-1:-1;10245:30:0;10237:84;;;;;-1:-1:-1;;;;;10237:84:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10237:84:0;;;;;;;;;;;;;;;;;;;;10357:18;;;;:11;:18;;;;;;:32;;10380:8;10357:32;:22;:32;:::i;:::-;10336:18;;;;:11;:18;;;;;:53;10204:197;10411:10;;:55;;;;;;10440:10;10411:55;;;;10452:4;10411:55;;;;;;;;;;;;-1:-1:-1;;;;;10411:10:0;;;;:28;;:55;;;;;:10;;:55;;;;;;;;:10;;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;10411:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10519:10:0;;10502:104;;-1:-1:-1;10519:10:0;-1:-1:-1;10598:7:0;10591:3;10580:6;10591:3;10564:5;10559:2;10539:15;10534:21;:27;;;;:35;10533:44;;;;:53;10532:62;;;;10531:74;10502:9;:16;;:104;;;;;:::i;:::-;10501:105;10479:180;;;;;-1:-1:-1;;;;;10479:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10684:1;10670:15;;;;;;10733:10;10716:15;10707:54;;;;;;;;;;;;;;;;;;;;;;;;;9800:969;;;;:::o;9480:133::-;9549:4;9573:32;9597:7;9573:19;:6;9584:7;9573:19;:10;:19;:::i;5792:22::-;;;;:::o;17171:264::-;17276:9;;;17247:8;;:24;;;;;;17266:4;17247:24;;;;;;;;17232:12;;17247:39;;17276:9;-1:-1:-1;;;;;17247:8:0;;:18;;:24;;;;;;;;;;;;;;;17232:12;17247:8;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;17247:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17247:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17247:24:0;;:39;:28;:39;:::i;:::-;17232:54;-1:-1:-1;17315:1:0;17305:11;;17297:81;;;;;-1:-1:-1;;;;;17297:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17389:8;;17407:10;;17389:38;;;;;;-1:-1:-1;;;;;17407:10:0;;;17389:38;;;;;;;;;;;;:8;;;;;:17;;:38;;;;;;;;;;;;;;:8;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;17389:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17389:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;17171:264:0:o;6063:21::-;;;-1:-1:-1;;;;;6063:21:0;;:::o;8785:142::-;3079:5;;-1:-1:-1;;;;;3079:5:0;3065:10;:19;3057:53;;;;;-1:-1:-1;;;;;3057:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8856:10;8848:18;;;8840:58;;;;;-1:-1:-1;;;;;8840:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8909:3;:10;8785:142::o;15810:1241::-;15861:10;;;;;;;;15874:19;:9;15888:4;15874:19;:13;:19;:::i;:::-;15861:32;-1:-1:-1;;;;15938:12:0;;;15927:24;;;;;;;15904:47;-1:-1:-1;15983:14:0;15970:9;:27;;;;;;;;;15962:63;;;;;-1:-1:-1;;;;;15962:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16049:27;16065:10;16049:15;:27::i;:::-;16036:40;-1:-1:-1;;;;16105:10:0;;;16104:19;16095:28;;;16087:71;;;;;-1:-1:-1;;;;;16087:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16185:11:0;;;16184:20;;;;-1:-1:-1;16230:12:0;;;16229:21;;-1:-1:-1;16279:26:0;16184:20;16229:21;16279:11;:26::i;:::-;16324:18;;;;:11;:18;;;;;;16263:42;;-1:-1:-1;16324:30:0;-1:-1:-1;16324:30:0;16316:99;;;;;-1:-1:-1;;;;;16316:99:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16316:99:0;;;;;;;;;;;;;;;;;;;;16440:30;16462:7;16440:17;:5;16450:6;16440:17;:9;:17;:::i;:30::-;16428:42;-1:-1:-1;16499:22:0;:9;16516:4;16499:22;:16;:22;:::i;:::-;16491:52;;;;;;;-1:-1:-1;;;;;16491:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16491:52:0;;;;;;;;;;;;;;;16556:25;;:10;;:25;;;;;16576:4;;16556:25;;;;16576:4;16556:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;16592:10:0;;16633:15;:36;;-1:-1:-1;;;;;16592:10:0;;;;:28;;16621:10;;-1:-1:-1;;;16650:10:0;;;16649:19;;16633:36;;;;;;;;;;;;;;;16592:86;;;-1:-1:-1;;;16592:86:0;;;;;;-1:-1:-1;;;;;16592:86:0;;;;;;;16633:36;;;;16592:86;;;;;;;;;;;;;;;;;;;;;16633:36;16592:86;;;;5:2:-1;;;;30:1;27;20:12;5:2;16592:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16592:86:0;;;;16706:1;16695:8;:12;16691:248;;;16745:18;;;;:11;:18;;;;;;:32;;16768:8;16745:32;:22;:32;:::i;:::-;16724:18;;;;:11;:18;;;;;:53;16808:15;:8;16821:1;16808:15;:12;:15;:::i;:::-;16850:9;;16792:31;;-1:-1:-1;16850:23:0;;16792:31;16850:23;:13;:23;:::i;:::-;16838:9;:35;;;16888:8;;16906:10;;16888:39;;;;;;-1:-1:-1;;;;;16906:10:0;;;16888:39;;;;;;;;;;;;;;:8;;;:17;;:39;;;;;;;;;;;;;;:8;;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16888:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16888:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;16691:248:0;16979:15;:36;;-1:-1:-1;;;16996:10:0;;;16995:19;;16979:36;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16979:36:0;16968:9;16956:87;;;;;;;;;;;17017:10;16956:87;;;;;;;;;;;;;;;;;;;;;;;;;15810:1241;;;;;;;;;:::o;2649:20::-;;;-1:-1:-1;;;;;2649:20:0;;:::o;11020:1149::-;11325:13;11380:10;11640:9;11102:16;11111:6;11102:8;:16::i;:::-;:37;;;;;11122:17;11131:7;11122:8;:17::i;:::-;11094:82;;;;;;;-1:-1:-1;;;;;11094:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11206:1;11197:10;;11189:55;;;;;-1:-1:-1;;;;;11189:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11273:1;11263:11;;11255:57;;;;;-1:-1:-1;;;;;11255:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11341:28;11353:6;11361:7;11341:11;:28::i;:::-;11325:44;;11393:27;11409:10;11393:15;:27::i;:::-;11380:40;;11446:1;11435:8;:12;11431:197;;;11472:18;;;;:11;:18;;;;;;:30;-1:-1:-1;11472:30:0;11464:84;;;;;-1:-1:-1;;;;;11464:84:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11464:84:0;;;;;;;;;;;;;;;;;;;;11584:18;;;;:11;:18;;;;;;:32;;11607:8;11584:32;:22;:32;:::i;:::-;11563:18;;;;:11;:18;;;;;:53;11431:197;11652:32;11676:7;11652:19;:6;11663:7;11652:19;:10;:19;:::i;:32::-;11640:44;-1:-1:-1;11726:17:0;11640:44;11735:7;11726:17;:8;:17;:::i;:::-;11703:19;:6;11714:7;11703:19;:10;:19;:::i;:::-;:40;11695:100;;;;;-1:-1:-1;;;;;11695:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11814:9;:17;;11806:62;;;;;-1:-1:-1;;;;;11806:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11904:103;11921:10;;11999:7;11992:3;11981:6;11975:3;11965:5;11960:2;11941:14;11936:20;;;;;;;11904:103;11903:104;11881:179;;;;;-1:-1:-1;;;;;11881:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12085:1;12071:15;;;;;;12108:53;;;;;;;;;;;;;;12133:10;;12085:1;12108:53;;;;;;;;11020:1149;;;;;:::o;5936:44::-;;;;;;;;;;;;;:::o;7738:327::-;7857:8;;7914:10;;-1:-1:-1;;;;;7857:8:0;7835:10;:31;7827:76;;;;;-1:-1:-1;;;;;7827:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7927:24;7943:7;7927:15;:24::i;:::-;7983:18;;;;:11;:18;;;;;;7914:37;;-1:-1:-1;7983:30:0;;8006:6;7983:30;:22;:30;:::i;:::-;7962:18;;;;:11;:18;;;;;:51;8036:9;;:21;;8050:6;8036:21;:13;:21;:::i;:::-;8024:9;:33;-1:-1:-1;;;;7738:327:0:o;5849:40::-;;;;;;;;;;;;;:::o;6019:37::-;;;-1:-1:-1;;;;;6019:37:0;;:::o;14306:1306::-;14366:10;;;;;;;;14379:19;:9;14393:4;14379:19;:13;:19;:::i;:::-;14366:32;-1:-1:-1;;;;14443:12:0;;;14432:24;;;;;;;14409:47;-1:-1:-1;14488:15:0;14475:9;:28;;;;;;;;;14467:65;;;;;-1:-1:-1;;;;;14467:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14556:27;14572:10;14556:15;:27::i;:::-;14543:40;-1:-1:-1;;;;14612:10:0;;;14611:19;14602:28;;;14594:71;;;;;-1:-1:-1;;;;;14594:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14692:11:0;;;14691:20;;;;-1:-1:-1;14737:12:0;;;14736:21;;-1:-1:-1;14786:26:0;14691:20;14736:21;14786:11;:26::i;:::-;14831:18;;;;:11;:18;;;;;;14770:42;;-1:-1:-1;14831:30:0;-1:-1:-1;14831:30:0;14823:99;;;;;-1:-1:-1;;;;;14823:99:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14823:99:0;;;;;;;;;;;;;;;;;;;;14947:30;14969:7;14947:17;:5;14957:6;14947:17;:9;:17;:::i;:30::-;14935:42;-1:-1:-1;14996:9:0;:17;;14988:62;;;;;-1:-1:-1;;;;;14988:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15071:22;:9;15088:4;15071:22;:16;:22;:::i;:::-;15063:52;;;;;;;-1:-1:-1;;;;;15063:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15063:52:0;;;;;;;;;;;;;;;15128:15;:36;;-1:-1:-1;;;15145:10:0;;;15144:19;;15128:36;;;;;;;;;;;;;;;:56;;-1:-1:-1;;;;;15128:36:0;;;;15174:9;15128:56;;;;;15174:9;;15128:56;:36;:56;15174:9;15128:36;:56;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;15195:10:0;;:44;;;;;;15220:10;15195:44;;;;;;;;;;;;-1:-1:-1;;;;;15195:10:0;;;;:24;;:44;;;;;:10;;:44;;;;;;;;:10;;:44;;;5:2:-1;;;;30:1;27;20:12;8212:446:0;8272:10;8285:27;8301:10;8285:15;:27::i;:::-;8331:18;;;;:11;:18;;;;;;8272:40;;-1:-1:-1;8331:28:0;-1:-1:-1;8331:28:0;8323:82;;;;;-1:-1:-1;;;;;8323:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8437:18;;;;:11;:18;;;;;;:30;;8460:6;8437:30;:22;:30;:::i;:::-;8416:18;;;;:11;:18;;;;;:51;8490:9;;:21;;8504:6;8490:21;:13;:21;:::i;:::-;8478:9;:33;8526:18;;;;:11;:18;;;;;;:23;8522:81;;;8573:18;;;;:11;:18;;;;;8566:25;8522:81;8613:8;;:37;;;;;;8631:10;8613:37;;;;;;;;;;;;-1:-1:-1;;;;;8613:8:0;;;;:17;;:37;;;;;;;;;;;;;;;:8;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;8613:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8613:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;8212:446:0:o;17563:327::-;17613:10;;;;;17670:19;:9;17684:4;17670:19;:13;:19;:::i;:::-;17657:32;-1:-1:-1;;;;17733:12:0;;;17722:24;;;;;;;17762:15;:36;;-1:-1:-1;;;17779:10:0;;;17778:19;;17762:36;;;;;;;;;;;;;;;;17700:182;;-1:-1:-1;;;;;;17762:36:0;;-1:-1:-1;;;;17815:11:0;;;17814:20;;;;-1:-1:-1;17851:12:0;;;17850:21;;-1:-1:-1;17563:327:0;;;;;;:::o;5770:15::-;;;;:::o;12316:838::-;12369:10;;;;;;;12382:19;:9;12396:4;12382:19;:13;:19;:::i;:::-;12369:32;-1:-1:-1;;;;12446:12:0;;;12435:24;;;;;;;12412:47;-1:-1:-1;12491:14:0;12478:9;:27;;;;;;;;;12470:63;;;;;-1:-1:-1;;;;;12470:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12570:10;12557:24;;;;:12;:24;;;;;;;-1:-1:-1;;;;12610:10:0;;;12609:19;12600:28;;12592:77;;;;;-1:-1:-1;;;;;12592:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12696:11:0;;;12695:20;;;;-1:-1:-1;12741:12:0;;;12740:21;;-1:-1:-1;12780:22:0;:9;12797:4;12780:22;:16;:22;:::i;:::-;12772:52;;;;;;;-1:-1:-1;;;;;12772:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12772:52:0;;;;;;;;;;;;;;;12853:26;12865:5;12872:6;12853:11;:26::i;:::-;12837:42;;12905:1;12894:8;:12;12890:98;;;12944:18;;;;:11;:18;;;;;;:32;;12967:8;12944:32;:22;:32;:::i;:::-;12923:18;;;;:11;:18;;;;;:53;12890:98;13012:30;13034:7;13012:17;:5;13022:6;13012:17;:9;:17;:::i;:30::-;13053:25;;13000:42;;-1:-1:-1;13053:10:0;;:25;;;;;13000:42;;13053:25;;;;13000:42;13053:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;13120:10:0;13109:9;13096:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12316:838;;;;;;;;:::o;5896:32::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5896:32:0;;-1:-1:-1;5896:32:0;:::o;3293:178::-;3079:5;;-1:-1:-1;;;;;3079:5:0;3065:10;:19;3057:53;;;;;-1:-1:-1;;;;;3057:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3370:22:0;;;;3362:31;;;;;;3426:5;;;3405:37;;-1:-1:-1;;;;;3405:37:0;;;;3426:5;;;3405:37;;;3449:5;:16;;-1:-1:-1;;3449:16:0;-1:-1:-1;;;;;3449:16:0;;;;;;;;;;3293:178::o;19410:331::-;19470:13;;:::i;:::-;19501:6;19496:216;19517:2;19513:1;:6;19496:216;;;19558:16;:9;:14;:16::i;:::-;19549:6;19545:1;:10;:29;19541:160;;;19605:28;:9;19622:10;;;19605:28;:16;:28;:::i;:::-;19595:4;19600:1;19595:7;;;;;;;;;;:38;19541:160;;;19684:1;19674:4;19679:1;19674:7;;;;;;;;;;:11;19541:160;19521:3;;19496:216;;;19410:331;;;;:::o;5153:118::-;5219:4;5243:14;;;;;;;;;;;:20;;;;5153:118::o;4318:569::-;4382:12;4425:14;;;;;;;;;;4456:10;;:15;4452:60;;;4495:5;4488:12;;;;4452:60;4541:9;;;:16;4528:10;;:29;4524:268;;;4696:10;;4652:9;;;4662:16;;4642:4;;4696:10;;-1:-1:-1;;4662:20:0;;;4652:31;;;;;;;;;;;;;;;;;;4642:42;;;;;;;;;;;;:64;4749:9;;;4759:16;;-1:-1:-1;;4759:20:0;;;4749:31;;;;;;;;;;;;;;4721:4;:9;;4744:1;4731;:10;;;:14;4721:25;;;;;;;;;;;;;;;;;;;:59;4524:268;4824:1;4804:9;;:21;;-1:-1:-1;;4804:21:0;;;;;;:::i;:::-;-1:-1:-1;4843:9:0;:14;;;;;;;;;;4836:21;;;;;;;;;;;;-1:-1:-1;4318:569:0;;;;;;:::o;2225:133::-;2283:7;2311:5;;;2330:6;;;;2323:14;;;5040:105;5121:9;;:16;;5040:105::o;5279:115::-;5348:4;5372;:9;;5382:3;5372:14;;;;;;;;;;;;;;;;;;5365:21;;5279:115;;;;:::o;1677:147::-;1735:7;1763:5;;;1782:6;;;:20;;;1801:1;1796;1792;:5;;;;;;;;:10;1782:20;1775:28;;;;;1830:270;1888:7;1979:9;1995:1;1991;:5;;;;;;;;;1830:270;-1:-1:-1;;;;1830:270:0:o;20084:100::-;20167:8;-1:-1:-1;20160:15:0;20084:100::o;7015:438::-;-1:-1:-1;;;;;7096:22:0;;7075:4;7096:22;;;:12;:22;;;;;;:27;7092:354;;-1:-1:-1;;;;;;7147:22:0;;;;;;:12;:22;;;;;;7140:29;;7092:354;7210:15;:22;7235:7;-1:-1:-1;7202:77:0;;;;;-1:-1:-1;;;;;7202:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7319:15:0;:22;;-1:-1:-1;;;;;7294:22:0;;;;;;:12;:22;;;;;:47;;;39:1:-1;23:18;;45:23;;7356:30:0;;;;;;;;;-1:-1:-1;;7356:30:0;;;;;;7408:22;-1:-1:-1;;7408:26:0;7401:33;;2106:113;2164:7;2187:6;;;;2180:14;;;;-1:-1:-1;2208:5:0;;;2106:113::o;3937:373::-;4013:13;4057:14;;;;;;;;;;4082:7;;;:15;;;4112:10;;:14;-1:-1:-1;4108:195:0;;;4150:4;4143:11;;;;4108:195;4202:4;:9;;4200:18;;;;;;;;;;:::i;:::-;4187:31;;;4233:9;;;:25;;4261:3;;-1:-1:-1;;4243:14:0;;4233:25;;;;;;;;;;;;;:31;;;;4286:5;4279:12;;4108:195;3937:373;;;;;;:::o;5576:14613::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;5576:14613:0;;;-1:-1:-1;;5576:14613:0:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://6f21fef149cfd5eb425253dd093f85f42405f876921b09166d282a7ca8ebbab6
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.