Source Code
Latest 18 from a total of 18 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 8944201 | 2309 days ago | IN | 0 ETH | 0.00028843 | ||||
| Withdraw | 8944200 | 2309 days ago | IN | 0 ETH | 0.00040908 | ||||
| Withdraw | 8944200 | 2309 days ago | IN | 0 ETH | 0.00003058 | ||||
| Make Order | 8944095 | 2309 days ago | IN | 0 ETH | 0.00025381 | ||||
| Make Order | 8943989 | 2309 days ago | IN | 0 ETH | 0.00036549 | ||||
| Make Order | 8943889 | 2309 days ago | IN | 0 ETH | 0.00038072 | ||||
| Token Deposit | 8943865 | 2309 days ago | IN | 0 ETH | 0.00081004 | ||||
| Make Order | 8943793 | 2309 days ago | IN | 0 ETH | 0.00140114 | ||||
| Deposit | 8943653 | 2309 days ago | IN | 0.2 ETH | 0.0003483 | ||||
| Deposit | 8943612 | 2309 days ago | IN | 0.1 ETH | 0.0004983 | ||||
| Token Deposit | 8943605 | 2309 days ago | IN | 0 ETH | 0.00092062 | ||||
| Add Token | 8943484 | 2309 days ago | IN | 0 ETH | 0.00086423 | ||||
| Add Token | 8943479 | 2309 days ago | IN | 0 ETH | 0.00086679 | ||||
| Add Token | 8943476 | 2309 days ago | IN | 0 ETH | 0.00069343 | ||||
| Add Token | 8943470 | 2309 days ago | IN | 0 ETH | 0.0006924 | ||||
| Add Token | 8943402 | 2309 days ago | IN | 0 ETH | 0.00086551 | ||||
| Add Token | 8943399 | 2309 days ago | IN | 0 ETH | 0.00070399 | ||||
| Add Token | 8943397 | 2309 days ago | IN | 0 ETH | 0.00086743 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 8944200 | 2309 days ago | 0.3 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
StableDEX
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-11-16
*/
pragma solidity ^0.5.11;
contract Token {
function transfer(address to, uint256 value) public returns (bool success);
function transferFrom(address from, address to, uint256 value) public returns (bool success);
function balanceOf(address account) external view returns(uint256);
function allowance(address _owner, address _spender)external view returns(uint256);
}
library SafeMath{
function mul(uint256 a, uint256 b) internal pure returns (uint256)
{
if (a == 0) {
return 0;}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256)
{
uint256 c = a / b;
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;
}
}
contract StableDEX {
using SafeMath for uint;
event DepositandWithdraw(address from,address tokenAddress,uint256 amount,uint256 type_); //Type = 0-deposit 1- withdraw , Token address = address(0) - eth , address - token address;
address payable private admin; // admin address
address private feeAddress;
address public feeTokenAddress;
uint256 public feeAmount;
bool public dexStatus; // status to hold the dex transaction ;
/*
* if status =0 no fee for fee token buyer else fee will be taken
*/
bool public feeTokenStatus;
struct orders{ // order details
address userAddress;
address tokenAddress;
uint8 status;
uint128 type_;
uint128 price;
uint128 quantity;
uint128 tradeQuantity;
}
struct tokens{ // token details
address tokenAddress;
string tokenSymbol;
uint128 decimals;
uint120 withdrawFee;
uint8 status;
}
constructor(address payable _admin,address feeAddress_,address feetokenaddress_,uint128 minFeeamount,bool _status) public{
admin = _admin;
feeAddress = feeAddress_;
dexStatus = true; // set dex status to active during contract creation
feeTokenAddress = feetokenaddress_;
feeAmount = minFeeamount;
feeTokenStatus = _status;
}
mapping(uint256=>orders) public Order; //place order by passing userID and orderID as argument;
mapping(address=>mapping(address=>uint256))public userDetails; // trader token balance;
mapping(address=>uint256) public withdrawfee; // admin can set fee amount to token addresses
mapping(address=>tokens) public tokendetails; //admin can add token details
mapping(address=>bool) public user_status; // to check user is new to dex
mapping(uint256=>bool)public tradeOrders; // trading details;
mapping(address=>mapping(address=>uint256))public adminProfit; // admin profit's
modifier dexstatuscheck(){ // check wheather dex is active or not
require(dexStatus==true);
_;
}
modifier onlyFeeAddress(){
require(msg.sender == feeAddress);
_;
}
modifier onlyOwner(){
require(msg.sender == admin);
_;
}
function setDexStatus(bool status_) onlyOwner public returns(bool){ // admin can change dex to inactive if needed
dexStatus = status_; // if true dex is active & false dex is inactive
return true;
}
function changeFeeAddress(address changeFeeaddress) onlyOwner public returns(bool){
feeAddress = changeFeeaddress;
return true;
}
function changeAdmin(address payable changeAdminaddress) onlyOwner public returns(bool){
admin = changeAdminaddress;
return true;
}
function setFeeToken(address feeTokenaddress,uint128 min_fee_amount,bool _status) onlyOwner public returns(bool){
feeTokenAddress = feeTokenaddress;
feeAmount = min_fee_amount;
feeTokenStatus = _status;
return true;
}
function addToken(address tokenAddress_,string memory tokenSymbol,uint128 decimal_,uint120 withdrawFee_) onlyFeeAddress public returns(bool){
require(tokendetails[tokenAddress_].status==0); // if status is true token already exist;
tokendetails[tokenAddress_].tokenAddress=tokenAddress_;
tokendetails[tokenAddress_].tokenSymbol=tokenSymbol; // token symbol
tokendetails[tokenAddress_].decimals=decimal_; // token decimals
tokendetails[tokenAddress_].withdrawFee = withdrawFee_;
tokendetails[tokenAddress_].status=1; // changing token status
return true;
}
// verifing dex status for following functionalities.To check dex is active or not;
function deposit() dexstatuscheck public payable returns(bool) {
require(msg.sender!= admin);
require(msg.value > 0);
userDetails[msg.sender][address(0)]=userDetails[msg.sender][address(0)].add(msg.value);
user_status[msg.sender]=true;
emit DepositandWithdraw( msg.sender, address(0),msg.value,0);
return true;
}
function tokenDeposit(address tokenaddr,uint256 tokenAmount) dexstatuscheck public returns(bool)
{
require(msg.sender!= admin);
require(tokenAmount > 0 && tokendetails[tokenaddr].status==1); // to deposit token , token should be added by admin
require(tokenallowance(tokenaddr,msg.sender,address(this)) > 0); // checking contract allowance by user
userDetails[msg.sender][tokenaddr] = userDetails[msg.sender][tokenaddr].add(tokenAmount);
Token(tokenaddr).transferFrom(msg.sender,address(this), tokenAmount);
user_status[msg.sender]=true;
emit DepositandWithdraw( msg.sender,tokenaddr,tokenAmount,0);
return true;
}
// user withdraw
function withdraw(uint8 type_,address tokenaddr,uint256 amount) dexstatuscheck public returns(bool) {
require(msg.sender!= admin);
require(type_ ==0 || type_ == 1); // type : 0- ether withdraw 1- token withdraw;
if(type_==0){ // withdraw ether
require(tokenaddr == address(0)); // tokenaddress should be ether (address(0))
require(amount>0 && amount <= userDetails[msg.sender][address(0)] && withdrawfee[address(0)]<amount); //check user balance
require(amount<=address(this).balance);
msg.sender.transfer(amount.sub(withdrawfee[address(0)])); // transfer withdraw amount
userDetails[msg.sender][address(0)] = userDetails[msg.sender][address(0)].sub(amount); // decreasing user balance
adminProfit[admin][address(0)] = adminProfit[admin][address(0)].add(withdrawfee[address(0)]); // increasing withdraw fee
}
else{ //withdraw token
require(tokenaddr != address(0) && tokendetails[tokenaddr].status==1); // token address should not be ether
require(amount>0 && amount <= userDetails[msg.sender][tokenaddr] && withdrawfee[tokenaddr]<amount);
Token(tokenaddr).transfer(msg.sender, (amount.sub(withdrawfee[tokenaddr])));// transfer withdraw amount
userDetails[msg.sender][tokenaddr] = userDetails[msg.sender][tokenaddr].sub(amount); // decreasing user balance
adminProfit[admin][tokenaddr] = adminProfit[admin][tokenaddr].add(withdrawfee[tokenaddr]); // increasing withdraw fee
}
emit DepositandWithdraw( msg.sender,tokenaddr,amount,1);
return true;
}
//admin profit withdraw
function adminProfitWithdraw(uint8 type_,address tokenAddr)public returns(bool){ // tokenAddr = type 0 - address(0), type 1 - token address;
require(msg.sender == admin); // only by admin
require(type_ ==0 || type_ == 1);
if(type_==0){ // withdraw ether
admin.transfer(adminProfit[admin][address(0)]); // total ether profit is transfered to admin
adminProfit[admin][address(0)]=0; // set 0 to admin ether profit after transfer
}
else{ //withdraw token
require(tokenAddr != address(0)) ;
Token(tokenAddr).transfer(admin, adminProfit[admin][tokenAddr]); // total token profit is transfered to admin
adminProfit[admin][tokenAddr]=0;// set 0 to admin token profit after transfer
}
return true;
}
function setwithdrawfee(address[] memory addr,uint120[] memory feeamount)public returns(bool) // admin can set withdraw fee for token and ether
{
require(msg.sender==admin);
//array length should be within 10.
require(addr.length <10 && feeamount.length < 10 && addr.length==feeamount.length);
for(uint8 i=0;i<addr.length;i++){
withdrawfee[addr[i]]=feeamount[i];
tokendetails[addr[i]].withdrawFee = feeamount[i]; //storing value of fee
}
return true;
}
function verify(string memory message, uint8 v, bytes32 r, bytes32 s) private pure returns (address signer) { // vrs signature verification
string memory header = "\x19Ethereum Signed Message:\n000000";
uint256 lengthOffset;
uint256 length;
assembly {
length := mload(message)
lengthOffset := add(header, 57)
}
require(length <= 999999);
uint256 lengthLength = 0;
uint256 divisor = 100000;
while (divisor != 0) {
uint256 digit = length.div(divisor);
if (digit == 0) {
if (lengthLength == 0) {
divisor = divisor.div(10);
continue;
}
}
lengthLength++;
length = length.sub(digit.mul(divisor));
divisor = divisor.div(10);
digit = digit.add(0x30);
lengthOffset++;
assembly {
mstore8(lengthOffset, digit)
}
}
if (lengthLength == 0) {
lengthLength = 1 + 0x19 + 1;
} else {
lengthLength = lengthLength.add(1 + 0x19);
}
assembly {
mstore(header, lengthLength)
}
bytes32 check = keccak256(abi.encodePacked(header, message));
return ecrecover(check, v, r, s);
}
function strConcat(string memory _a, string memory _b, string memory _c, string memory _d, string memory _e) internal pure returns (string memory){
bytes memory _ba = bytes(_a);
bytes memory _bb = bytes(_b);
bytes memory _bc = bytes(_c);
bytes memory _bd = bytes(_d);
bytes memory _be = bytes(_e);
string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);
bytes memory babcde = bytes(abcde);
uint k = 0;
for (uint i = 0; i < _ba.length; i++) babcde[k++] = _ba[i];
for (uint i = 0; i < _bb.length; i++) babcde[k++] = _bb[i];
for (uint i = 0; i < _bc.length; i++) babcde[k++] = _bc[i];
for (uint i = 0; i < _bd.length; i++) babcde[k++] = _bd[i];
for (uint i = 0; i < _be.length; i++) babcde[k++] = _be[i];
return string(babcde);
}
function addressToString(address _addr) internal pure returns(string memory) {
bytes32 value = bytes32(uint256(_addr));
bytes memory alphabet = "0123456789abcdef";
bytes memory str = new bytes(42);
str[0] = '0';
str[1] = 'x';
for (uint i = 0; i < 20; i++) {
str[2+i*2] = alphabet[uint8(value[i + 12] >> 4)];
str[3+i*2] = alphabet[uint8(value[i + 12] & 0x0f)];
}
return string(str);
}
function uint2str(uint _i) internal pure returns (string memory _uintAsString) {
if (_i == 0) {
return "0";
}
uint j = _i;
uint len;
while (j != 0) {
len++;
j /= 10;
}
bytes memory bstr = new bytes(len);
uint k = len - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
return string(bstr);
}
// makerOrder
// 0- orderid
// 1- quantity
// 2- price
// 3 - type 1- buy 2- sell
// 4- expiryTime
// 5 - trade amount
// 6 - buyer dex token status
// takerOrder
// 0- orderid
// 1- quantity
// 2- price
// 3 - type 1- buy 2- sell
// 4- expiryTime
// 5 - trade amount
// 6 - buyer dex token status
//
// tradeAddress
// 0- makertokenAddress
// 1- makeruserAddress
// 2 - takertokenaddress
// 3 - takeruseraddress
function makeOrder(uint128[7] memory makerOrder, uint128[7] memory takerOrder,address[4] memory tradeAddress,uint8[2] memory v,bytes32[4] memory rs) onlyFeeAddress public returns(bool){
require(tradeOrders[makerOrder[0]]!=true && tradeOrders[takerOrder[0]] !=true);
require(makerOrder[4]>=block.timestamp && takerOrder[4]>=block.timestamp); // expiry time less than current time
uint256 amount__m;
uint256 amount__t;
makerOrder[6]=0;
takerOrder[6]=0;
if(Order[makerOrder[0]].status ==0){ // if maker order is new; && tradeAddress[0]!=feeTokenAddress
// if maker buy or sell but receiving amt is fee token
if(makerOrder[3]==1 || makerOrder[3]==2 && tradeAddress[2]==feeTokenAddress){
(feeTokenStatus) ? makerOrder[6]=1 : makerOrder[6]=0;
}
else{
require(userDetails[tradeAddress[1]][feeTokenAddress]>=feeAmount); // trade will happen event if fee amount is unset
makerOrder[6]=1;
if(makerOrder[3]==2 && tradeAddress[0] == feeTokenAddress ){
amount__m =amount__m.add(feeAmount);
}
}
// vrs verification for maker when order is new;
require(verify(strConcat(uint2str(makerOrder[0]),addressToString(tradeAddress[0]),uint2str(makerOrder[2]),uint2str(makerOrder[1]),uint2str(makerOrder[4])),v[0],rs[0],rs[1])==tradeAddress[1]);
makerOrder[5] = makerOrder[1];
}
else{
require(Order[makerOrder[0]].tradeQuantity > 0);
makerOrder[2] = Order[makerOrder[0]].price;
makerOrder[3] = Order[makerOrder[0]].type_;
makerOrder[5] = Order[makerOrder[0]].tradeQuantity;
tradeAddress[0] = Order[makerOrder[0]].tokenAddress;
tradeAddress[1] = Order[makerOrder[0]].userAddress;
}
if(Order[takerOrder[0]].status ==0){ // if taker order is new;
// if taker buy or sell but receiving amt is fee token
if(takerOrder[3]==1 || takerOrder[3]==2 && tradeAddress[0]==feeTokenAddress){
(feeTokenStatus) ? takerOrder[6]=1 : takerOrder[6]=0;
}
else{
// trade will happen even if fee amount is unset
require(userDetails[tradeAddress[3]][feeTokenAddress]>=feeAmount);
takerOrder[6]=1;
if(takerOrder[3]==2 && tradeAddress[2] == feeTokenAddress){
amount__t =amount__t.add(feeAmount);
}
}
// vrs verification for taker when order is new;
require(verify(strConcat(uint2str(takerOrder[0]),addressToString(tradeAddress[2]),uint2str(takerOrder[2]),uint2str(takerOrder[1]),uint2str(takerOrder[4])),v[1],rs[2],rs[3])==tradeAddress[3]);
takerOrder[5] = takerOrder[1];
}
else{
require(Order[takerOrder[0]].tradeQuantity > 0);
takerOrder[2] = Order[takerOrder[0]].price;
takerOrder[3] = Order[takerOrder[0]].type_;
takerOrder[5] = Order[takerOrder[0]].tradeQuantity;
tradeAddress[2] = Order[takerOrder[0]].tokenAddress;
tradeAddress[3] = Order[takerOrder[0]].userAddress;
}
uint128 tradeAmount;
if(takerOrder[5] > makerOrder[5]){
tradeAmount = makerOrder[5];
}
else{
tradeAmount = takerOrder[5];
}
//if maker order is buy
if(makerOrder[3] == 1){
amount__m =amount__m.add(((tradeAmount)*(makerOrder[2]))/tokendetails[tradeAddress[0]].decimals) ; // maker buy trade amount
amount__t =amount__t.add(tradeAmount); // taker sell trade amount;
}
else{ //else maker order is sell
amount__m = amount__m.add(tradeAmount); // maker sell trade amount
amount__t = amount__t.add(tradeAmount*(makerOrder[2])/ tokendetails[tradeAddress[2]].decimals); // taker sell trade amount
}
if(userDetails[tradeAddress[1]][tradeAddress[0]]<amount__m){ // trade amount <= maker balance;
return false;
}
if(userDetails[tradeAddress[3]][tradeAddress[2]]<amount__t){ // trader amount <= taker balance
return false;
}
if(takerOrder[5] > makerOrder[5]){
if(Order[takerOrder[0]].status!=1){
Order[takerOrder[0]].userAddress = tradeAddress[3];
Order[takerOrder[0]].type_ = takerOrder[3];
Order[takerOrder[0]].price = takerOrder[2];
Order[takerOrder[0]].quantity = takerOrder[1];
Order[takerOrder[0]].tradeQuantity = takerOrder[5];
Order[takerOrder[0]].tokenAddress = tradeAddress[2];
Order[takerOrder[0]].status=1; // storing taker order details and updating status to 1
}
Order[takerOrder[0]].tradeQuantity -=tradeAmount;
Order[makerOrder[0]].tradeQuantity=0;
tradeOrders[makerOrder[0]] = true;
}
else if(takerOrder[5] < makerOrder[5]){
if(Order[makerOrder[0]].status!=1 ){
Order[makerOrder[0]].userAddress = tradeAddress[1];
Order[makerOrder[0]].type_ = makerOrder[3];
Order[makerOrder[0]].price = makerOrder[2];
Order[makerOrder[0]].quantity = makerOrder[1];
Order[makerOrder[0]].tradeQuantity = makerOrder[5];
Order[makerOrder[0]].tokenAddress = tradeAddress[0];
Order[makerOrder[0]].status=1; // storing maker order details and updating status to 1
}
Order[makerOrder[0]].tradeQuantity -=tradeAmount;
Order[takerOrder[0]].tradeQuantity=0;
tradeOrders[takerOrder[0]] = true;
}
else{
Order[makerOrder[0]].tradeQuantity=0;
Order[takerOrder[0]].tradeQuantity=0;
tradeOrders[makerOrder[0]] = true;
tradeOrders[takerOrder[0]] = true;
}
// maker receive amount
makerOrder[5] = uint128(amount__t);
// taker receive amount
takerOrder[5] = uint128(amount__m);
if(makerOrder[6]==1 ){
// If maker is seller and token sold is feetoken
// fee is deducted from the user(maker) and admin balance(feetoken) is updated
if(makerOrder[3]==2 && tradeAddress[0] == feeTokenAddress){
amount__m = amount__m.sub(feeAmount);
takerOrder[5]=sub128(takerOrder[5],uint128(feeAmount));
// reduce user balance
userDetails[tradeAddress[1]][feeTokenAddress] =userDetails[tradeAddress[1]][feeTokenAddress].sub(feeAmount);
// update admin balance
adminProfit[admin][feeTokenAddress] =adminProfit[admin][feeTokenAddress].add(feeAmount);
}
// If maker is buyer and token buy is fee token or maker is seller and receiving token is fee token.
else if(makerOrder[3]==1 || makerOrder[3]==2 && tradeAddress[2] == feeTokenAddress){
// trade amount >= feeAmount
if(makerOrder[5]>=feeAmount){
makerOrder[5] = sub128(makerOrder[5],uint128(feeAmount));
adminProfit[admin][feeTokenAddress] = adminProfit[admin][feeTokenAddress].add(feeAmount);
}
// trade amount < feeAmount
// admin blance is update with trade amount
// trade amount is set to 0
else{
// revert("line 543");
adminProfit[admin][feeTokenAddress] = adminProfit[admin][feeTokenAddress].add(makerOrder[5]);
// hence reset to 0
makerOrder[5] = 0;
}
}
// general trade for tokens other than feetoken
else{
userDetails[tradeAddress[1]][feeTokenAddress] =userDetails[tradeAddress[1]][feeTokenAddress].sub(feeAmount);
adminProfit[admin][feeTokenAddress] =adminProfit[admin][feeTokenAddress].add(feeAmount);
}
}
if(takerOrder[6]==1){
// If taker is seller and token sold is feetoken
// fee is deducted from the user(taker) and admin balance(feetoken) is updated
if(takerOrder[3]==2 && tradeAddress[2] == feeTokenAddress){
amount__t = amount__t.sub(feeAmount);
makerOrder[5] =sub128(makerOrder[5],uint128(feeAmount));
// reduce user balance
userDetails[tradeAddress[3]][feeTokenAddress] = userDetails[tradeAddress[3]][feeTokenAddress].sub(feeAmount);
// update admin balance
adminProfit[admin][feeTokenAddress] =adminProfit[admin][feeTokenAddress].add(feeAmount);
}
// If taker is buyer and token buy is fee token or taker is seller and receiving token is fee token.
else if(takerOrder[3]==1 || takerOrder[3]==2 && tradeAddress[0] == feeTokenAddress){
// user balance >= fee amount
// fee is deducted from the user(taker) and admin balance(feetoken) is updated
// trade amount >= feeAmount
if(takerOrder[5]>=feeAmount){
takerOrder[5] = sub128(takerOrder[5],uint128(feeAmount));
adminProfit[admin][feeTokenAddress] = adminProfit[admin][feeTokenAddress].add(feeAmount);
}
// trade amount < feeAmount
// admin blance is update with trade amount
// trade amount is set to 0
else{
// revert("line 586");
adminProfit[admin][feeTokenAddress] =adminProfit[admin][feeTokenAddress].add(takerOrder[5]);
takerOrder[5]=0;
}
}
// general trade for tokens other than feetoken
else{
userDetails[tradeAddress[3]][feeTokenAddress] = userDetails[tradeAddress[3]][feeTokenAddress].sub(feeAmount);
adminProfit[admin][feeTokenAddress] =adminProfit[admin][feeTokenAddress].add(feeAmount);
}
}
// decrease taker and maker's balance with trade amount;
userDetails[tradeAddress[1]][tradeAddress[0]] = userDetails[tradeAddress[1]][tradeAddress[0]].sub(amount__m); // freeze buyer amount
userDetails[tradeAddress[3]][tradeAddress[2]] = userDetails[tradeAddress[3]][tradeAddress[2]].sub(amount__t); // freeze buyer amount
//trading
userDetails[tradeAddress[1]][tradeAddress[2]] = userDetails[tradeAddress[1]][tradeAddress[2]].add(makerOrder[5]); //marker order
userDetails[tradeAddress[3]][tradeAddress[0]] = userDetails[tradeAddress[3]][tradeAddress[0]].add(takerOrder[5]); //take order
return true;
}
function sub128(uint128 a, uint128 b) internal pure returns (uint128) {
assert(b <= a);
return a - b;
}
function viewTokenBalance(address tokenAddr,address baladdr)public view returns(uint256){ // to check token balance
return Token(tokenAddr).balanceOf(baladdr);
}
function tokenallowance(address tokenAddr,address owner,address _spender) public view returns(uint256){ // to check token allowance to contract
return Token(tokenAddr).allowance(owner,_spender);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"feeTokenStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"changeFeeaddress","type":"address"}],"name":"changeFeeAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"feeTokenaddress","type":"address"},{"internalType":"uint128","name":"min_fee_amount","type":"uint128"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setFeeToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokendetails","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint128","name":"decimals","type":"uint128"},{"internalType":"uint120","name":"withdrawFee","type":"uint120"},{"internalType":"uint8","name":"status","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenaddr","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"tokenDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"type_","type":"uint8"},{"internalType":"address","name":"tokenAddr","type":"address"}],"name":"adminProfitWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tradeOrders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"tokenallowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"type_","type":"uint8"},{"internalType":"address","name":"tokenaddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"status_","type":"bool"}],"name":"setDexStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"Order","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint8","name":"status","type":"uint8"},{"internalType":"uint128","name":"type_","type":"uint128"},{"internalType":"uint128","name":"price","type":"uint128"},{"internalType":"uint128","name":"quantity","type":"uint128"},{"internalType":"uint128","name":"tradeQuantity","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dexStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"changeAdminaddress","type":"address"}],"name":"changeAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"baladdr","type":"address"}],"name":"viewTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"uint120[]","name":"feeamount","type":"uint120[]"}],"name":"setwithdrawfee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"userDetails","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenAddress_","type":"address"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint128","name":"decimal_","type":"uint128"},{"internalType":"uint120","name":"withdrawFee_","type":"uint120"}],"name":"addToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"adminProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint128[7]","name":"makerOrder","type":"uint128[7]"},{"internalType":"uint128[7]","name":"takerOrder","type":"uint128[7]"},{"internalType":"address[4]","name":"tradeAddress","type":"address[4]"},{"internalType":"uint8[2]","name":"v","type":"uint8[2]"},{"internalType":"bytes32[4]","name":"rs","type":"bytes32[4]"}],"name":"makeOrder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"user_status","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_admin","type":"address"},{"internalType":"address","name":"feeAddress_","type":"address"},{"internalType":"address","name":"feetokenaddress_","type":"address"},{"internalType":"uint128","name":"minFeeamount","type":"uint128"},{"internalType":"bool","name":"_status","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"type_","type":"uint256"}],"name":"DepositandWithdraw","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b50604051613658380380613658833981810160405260a081101561003357600080fd5b508051602082015160408301516060840151608090940151600080546001600160a01b039586166001600160a01b03199182161782556001805495871695821695909517855560048054600280549890961697909216969096179093556001600160801b0390951660035515156101000261ff001960ff19909216909217161790556135939081906100c590396000f3fe60806040526004361061014b5760003560e01c80637837c292116100b6578063d8bb03691161006f578063d8bb0369146105c2578063db943dd0146106f6578063e044f9a914610731578063ecbf08da1461080b578063f76d39b614610846578063feedb820146109535761014b565b80637837c2921461048857806381052a04146105065780638f2839701461051b578063ac6466291461054e578063b8df0dea14610589578063d0e30db0146105ba5761014b565b80634ec7dbfd116101085780634ec7dbfd14610351578063516c72071461037b578063630663a5146103d257806369e154041461040557806370563d6b1461041a578063717ac5381461045c5761014b565b806317f4b8ee14610150578063285e140614610179578063299f7fc2146101ac5780632a176583146101f6578063443f41d5146102dc57806348c3c51f14610315575b600080fd5b34801561015c57600080fd5b50610165610986565b604080519115158252519081900360200190f35b34801561018557600080fd5b506101656004803603602081101561019c57600080fd5b50356001600160a01b0316610994565b3480156101b857600080fd5b50610165600480360360608110156101cf57600080fd5b506001600160a01b03813516906001600160801b03602082013516906040013515156109ce565b34801561020257600080fd5b506102296004803603602081101561021957600080fd5b50356001600160a01b0316610a2f565b604080516001600160a01b03871681526001600160801b038516918101919091526001600160781b038316606082015260ff8216608082015260a06020808301828152875192840192909252865160c084019188019080838360005b8381101561029d578181015183820152602001610285565b50505050905090810190601f1680156102ca5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b3480156102e857600080fd5b50610165600480360360408110156102ff57600080fd5b506001600160a01b038135169060200135610b10565b34801561032157600080fd5b506101656004803603604081101561033857600080fd5b50803560ff1690602001356001600160a01b0316610cd8565b34801561035d57600080fd5b506101656004803603602081101561037457600080fd5b5035610e6a565b34801561038757600080fd5b506103c06004803603606081101561039e57600080fd5b506001600160a01b038135811691602081013582169160409091013516610e7f565b60408051918252519081900360200190f35b3480156103de57600080fd5b506103c0600480360360208110156103f557600080fd5b50356001600160a01b0316610f06565b34801561041157600080fd5b506103c0610f18565b34801561042657600080fd5b506101656004803603606081101561043d57600080fd5b5060ff813516906001600160a01b036020820135169060400135610f1e565b34801561046857600080fd5b506101656004803603602081101561047f57600080fd5b50351515611387565b34801561049457600080fd5b506104b2600480360360208110156104ab57600080fd5b50356113b6565b604080516001600160a01b03988916815296909716602087015260ff909416858701526001600160801b0392831660608601529082166080850152811660a08401521660c082015290519081900360e00190f35b34801561051257600080fd5b50610165611414565b34801561052757600080fd5b506101656004803603602081101561053e57600080fd5b50356001600160a01b031661141d565b34801561055a57600080fd5b506103c06004803603604081101561057157600080fd5b506001600160a01b038135811691602001351661145a565b34801561059557600080fd5b5061059e6114e5565b604080516001600160a01b039092168252519081900360200190f35b6101656114f4565b3480156105ce57600080fd5b50610165600480360360408110156105e557600080fd5b81019060208101813564010000000081111561060057600080fd5b82018360208201111561061257600080fd5b8035906020019184602083028401116401000000008311171561063457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561068457600080fd5b82018360208201111561069657600080fd5b803590602001918460208302840111640100000000831117156106b857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506115d5945050505050565b34801561070257600080fd5b506103c06004803603604081101561071957600080fd5b506001600160a01b038135811691602001351661170e565b34801561073d57600080fd5b506101656004803603608081101561075457600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561077f57600080fd5b82018360208201111561079157600080fd5b803590602001918460018302840111640100000000831117156107b357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505081356001600160801b0316925050602001356001600160781b031661172b565b34801561081757600080fd5b506103c06004803603604081101561082e57600080fd5b506001600160a01b038135811691602001351661182b565b34801561085257600080fd5b50610165600480360361030081101561086a57600080fd5b810190808060e001906007806020026040519081016040528092919082600760200280828437600092019190915250506040805160e0818101909252929594938181019392509060079083908390808284376000920191909152505060408051608081810190925292959493818101939250906004908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525050604080516080818101909252929594938181019392509060049083908390808284376000920191909152509194506118489350505050565b34801561095f57600080fd5b506101656004803603602081101561097657600080fd5b50356001600160a01b0316612da2565b600454610100900460ff1681565b600080546001600160a01b031633146109ac57600080fd5b50600180546001600160a01b0319166001600160a01b0383161781555b919050565b600080546001600160a01b031633146109e657600080fd5b50600280546001600160a01b0385166001600160a01b03199091161790556001600160801b038216600355600480548215156101000261ff001990911617905560019392505050565b6008602090815260009182526040918290208054600180830180548651600261010094831615949094026000190190911692909204601f81018690048602830186019096528582526001600160a01b03909216949293909290830182828015610ad95780601f10610aae57610100808354040283529160200191610ad9565b820191906000526020600020905b815481529060010190602001808311610abc57829003601f168201915b505050600290930154919250506001600160801b038116906001600160781b03600160801b8204169060ff600160f81b9091041685565b60045460009060ff161515600114610b2757600080fd5b6000546001600160a01b0316331415610b3f57600080fd5b600082118015610b7457506001600160a01b038316600090815260086020526040902060020154600160f81b900460ff166001145b610b7d57600080fd5b6000610b8a843330610e7f565b11610b9457600080fd5b3360009081526006602090815260408083206001600160a01b0387168452909152902054610bc8908363ffffffff612db716565b3360008181526006602090815260408083206001600160a01b0389168085529083528184209590955580516323b872dd60e01b8152600481019490945230602485015260448401879052516323b872dd93606480820194918390030190829087803b158015610c3657600080fd5b505af1158015610c4a573d6000803e3d6000fd5b505050506040513d6020811015610c6057600080fd5b5050336000818152600960209081526040808320805460ff1916600117905580519384526001600160a01b038716918401919091528281018590526060830191909152517f841de847f56267eab1b8268e4c7453de6910e81d3390badd79bf9a6bf0a066459181900360800190a15060015b92915050565b600080546001600160a01b03163314610cf057600080fd5b60ff83161580610d0357508260ff166001145b610d0c57600080fd5b60ff8316610d8d57600080546001600160a01b0316808252600b60209081526040808420848052909152808320549051919281156108fc029290818181858888f19350505050158015610d63573d6000803e3d6000fd5b50600080546001600160a01b03168152600b60209081526040808320838052909152812055610e61565b6001600160a01b038216610da057600080fd5b600080546001600160a01b03908116808352600b6020908152604080852093871680865293825280852054815163a9059cbb60e01b81526004810194909452602484015251929363a9059cbb936044808501949192918390030190829087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505050506040513d6020811015610e3657600080fd5b5050600080546001600160a01b039081168252600b6020908152604080842092861684529190528120555b50600192915050565b600a6020526000908152604090205460ff1681565b60408051636eb1769f60e11b81526001600160a01b0384811660048301528381166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b158015610ed257600080fd5b505afa158015610ee6573d6000803e3d6000fd5b505050506040513d6020811015610efc57600080fd5b5051949350505050565b60076020526000908152604090205481565b60035481565b60045460009060ff161515600114610f3557600080fd5b6000546001600160a01b0316331415610f4d57600080fd5b60ff84161580610f6057508360ff166001145b610f6957600080fd5b60ff8416611127576001600160a01b03831615610f8557600080fd5b600082118015610faf57503360009081526006602090815260408083208380529091529020548211155b8015610fe457506000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5482115b610fed57600080fd5b3031821115610ffb57600080fd5b6000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5433906108fc9061103d90859063ffffffff612dcd16565b6040518115909202916000818181858888f19350505050158015611065573d6000803e3d6000fd5b50336000908152600660209081526040808320838052909152902054611091908363ffffffff612dcd16565b3360009081526006602090815260408083208380528252808320939093557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5482546001600160a01b03168352600b8252838320838052909152919020546110fe9163ffffffff612db716565b600080546001600160a01b03168152600b6020908152604080832083805290915290205561132e565b6001600160a01b0383161580159061116457506001600160a01b038316600090815260086020526040902060020154600160f81b900460ff166001145b61116d57600080fd5b6000821180156111a057503360009081526006602090815260408083206001600160a01b03871684529091529020548211155b80156111c357506001600160a01b03831660009081526007602052604090205482115b6111cc57600080fd5b6001600160a01b03831660008181526007602052604090205463a9059cbb9033906111fe90869063ffffffff612dcd16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561124d57600080fd5b505af1158015611261573d6000803e3d6000fd5b505050506040513d602081101561127757600080fd5b50503360009081526006602090815260408083206001600160a01b03871684529091529020546112ad908363ffffffff612dcd16565b3360009081526006602090815260408083206001600160a01b0388811680865291845282852095909555600783528184205484549095168452600b83528184209084529091529020546113059163ffffffff612db716565b600080546001600160a01b039081168252600b6020908152604080842092881684529190529020555b604080513381526001600160a01b03851660208201528082018490526001606082015290517f841de847f56267eab1b8268e4c7453de6910e81d3390badd79bf9a6bf0a066459181900360800190a15060019392505050565b600080546001600160a01b0316331461139f57600080fd5b506004805460ff1916911515919091179055600190565b60056020526000908152604090208054600182015460028301546003909301546001600160a01b039283169392821692600160a01b90920460ff16916001600160801b0380821692600160801b928390048216928282169291041687565b60045460ff1681565b600080546001600160a01b0316331461143557600080fd5b50600080546001600160a01b0383166001600160a01b03199091161790556001919050565b6000826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156114b257600080fd5b505afa1580156114c6573d6000803e3d6000fd5b505050506040513d60208110156114dc57600080fd5b50519392505050565b6002546001600160a01b031681565b60045460009060ff16151560011461150b57600080fd5b6000546001600160a01b031633141561152357600080fd5b6000341161153057600080fd5b33600090815260066020908152604080832083805290915290205461155b903463ffffffff612db716565b33600081815260066020908152604080832083805282528083209490945582825260098152838220805460ff19166001179055835192835282018190523482840152606082015290517f841de847f56267eab1b8268e4c7453de6910e81d3390badd79bf9a6bf0a066459181900360800190a15060015b90565b600080546001600160a01b031633146115ed57600080fd5b600a83511080156115ff5750600a8251105b801561160c575081518351145b61161557600080fd5b60005b83518160ff16101561170457828160ff168151811061163357fe5b60200260200101516001600160781b031660076000868460ff168151811061165757fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828160ff168151811061169257fe5b602002602001015160086000868460ff16815181106116ad57fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002060020180546001600160781b0392909216600160801b02600160801b600160f81b0319909216919091179055600101611618565b5060019392505050565b600660209081526000928352604080842090915290825290205481565b6001546000906001600160a01b0316331461174557600080fd5b6001600160a01b038516600090815260086020526040902060020154600160f81b900460ff161561177557600080fd5b6001600160a01b038516600081815260086020908152604090912080546001600160a01b031916909217825585516117b392600101918701906134c6565b50506001600160a01b038416600090815260086020526040902060020180546001600160f81b036001600160781b038416600160801b02600160801b600160f81b03196001600160801b0387166001600160801b031990941693909317929092169190911716600160f81b1790556001949350505050565b600b60209081526000928352604080842090915290825290205481565b6001546000906001600160a01b0316331461186257600080fd5b85516001600160801b03166000908152600a602052604090205460ff1615156001148015906118b0575084516001600160801b03166000908152600a602052604090205460ff161515600114155b6118b957600080fd5b4286600460200201516001600160801b0316101580156118e957504285600460200201516001600160801b031610155b6118f257600080fd5b600060c0878101829052860181905286516001600160801b03168152600560205260408120600101548190600160a01b900460ff16611ad65787600360200201516001600160801b031660011480611977575087600360200201516001600160801b03166002148015611977575060025460408701516001600160a01b039081169116145b156119a957600454610100900460ff1661199957600060c089018190526119a3565b600160c089018190525b50611a34565b6003546020808801516001600160a01b03908116600090815260068352604080822060025490931682529190925290205410156119e557600080fd5b600160c089015260608801516001600160801b03166002148015611a18575060025486516001600160a01b039081169116145b15611a3457600354611a3190839063ffffffff612db716565b91505b60208601516001600160a01b0316611aab611a99611a628b60005b60200201516001600160801b0316612ddf565b611a738a60005b6020020151612ea0565b611a7e8d6002611a4f565b611a898e6001611a4f565b611a948f6004611a4f565b613013565b875187518860015b6020020151613227565b6001600160a01b031614611abe57600080fd5b60208801516001600160801b031660a0890152611bd9565b87516001600160801b03908116600090815260056020526040902060030154600160801b900416611b0657600080fd5b87516001600160801b039081166000908152600560205260409020600290810154600160801b90049091169089906001600160801b03928316602091820292909201919091528951821660009081526005808352604080832060020154851660608e01528c51851683529281905291902060030154600160801b90049091169089906001600160801b039283166020918202929092019190915289518216600090815260058083526040808320600101546001600160a01b039081168c528d519095168352908352902054909116908701525b86516001600160801b0316600090815260056020526040902060010154600160a01b900460ff16611dae5786600360200201516001600160801b031660011480611c4d575086600360200201516001600160801b03166002148015611c4d575060025486516001600160a01b039081169116145b15611c7f57600454610100900460ff16611c6f57600060c08801819052611c79565b600160c088018190525b50611d26565b6003546006600088600360048110611c9357fe5b602090810291909101516001600160a01b039081168352828201939093526040918201600090812060025490941681529290529020541015611cd457600080fd5b600160c088015260608701516001600160801b03166002148015611d0a575060025460408701516001600160a01b039081169116145b15611d2657600354611d2390829063ffffffff612db716565b90505b60608601516001600160a01b0316611d83611d71611d458a6000611a4f565b611d508a6002611a69565b611d5b8c6002611a4f565b611d668d6001611a4f565b611a948e6004611a4f565b60208801516040880151886003611aa1565b6001600160a01b031614611d9657600080fd5b60208701516001600160801b031660a0880152611e7d565b86516001600160801b03908116600090815260056020526040902060030154600160801b900416611dde57600080fd5b86516001600160801b039081166000908152600560208181526040808420600290810154600160801b908190048716838f01528d51871686528484528286209091015486166060808f01919091528d51871686528484528286206003015491909104861660a08e01528c5186168552838352818520600101546001600160a01b039081168d8401528d5190961685529290915290912054909116908701525b600088600560200201516001600160801b031688600560200201516001600160801b03161115611eb2575060a0880151611eb9565b5060a08701515b88600360200201516001600160801b031660011415611f495786516001600160a01b03166000908152600860205260409081902060020154908a0151611f27916001600160801b039081169184021681611f0f57fe5b85916001600160801b0391041663ffffffff612db716565b9250611f42826001600160801b03831663ffffffff612db716565b9150611fbf565b611f62836001600160801b03831663ffffffff612db716565b6040808901516001600160a01b03166000908152600860205281902060020154908b0151919450611fbc916001600160801b03918216919084021681611fa457fe5b84916001600160801b0391041663ffffffff612db716565b91505b6020878101516001600160a01b0390811660009081526006835260408082208b51909316825291909252902054831115611fff5760009350505050612d99565b60608701516001600160a01b039081166000908152600660209081526040808320818c0151909416835292905220548211156120415760009350505050612d99565b60a0808a0151908901516001600160801b03918216911611156122c25787516001600160801b03166000908152600560205260409020600190810154600160a01b900460ff16146122365760608781015189516001600160801b0390811660009081526005602052604080822080546001600160a01b0319166001600160a01b0390951694909417909355928b01518b518216845291909220600290810180546001600160801b031916929093169190911790915588906020908102919091015189516001600160801b039081166000908152600590935260409092206002018054918316600160801b02919092161790558760016020908102919091015189516001600160801b0390811660009081526005938490526040902060030180546001600160801b0319169190921617905588906020908102919091015189516001600160801b039081166000908152600590935260409092206003018054918316600160801b02919092161790558660026020908102919091015189516001600160801b0316600090815260059283905260408120600190810180546001600160a01b0319166001600160a01b03909416939093179092559091908a8160200201516001600160801b0316815260200190815260200160002060010160146101000a81548160ff021916908360ff1602179055505b87516001600160801b0390811660009081526005602052604080822060039081018054600160801b80820487168890038716029086161790558c5184168352908220018054909216909155600190600a908b815b60200201516001600160801b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555061257a565b60a0808a0151908901516001600160801b03918216911610156125115788516001600160801b03166000908152600560205260409020600190810154600160a01b900460ff16146124b9576020878101518a516001600160801b0390811660009081526005909352604080842080546001600160a01b0319166001600160a01b039094169390931790925560608c01518c518216845291909220600290810180546001600160801b03191692909316919091179091558990602090810291909101518a516001600160801b039081166000908152600590935260409092206002018054918316600160801b0291909216179055886001602090810291909101518a516001600160801b0390811660009081526005938490526040902060030180546001600160801b031916919092161790558990602090810291909101518a516001600160801b0390811660009081526005909352604083206003018054928216600160801b02929091169190911790558790602090810291909101518a516001600160801b0316600090815260059283905260408120600190810180546001600160a01b0319166001600160a01b03909416939093179092559091908b8160200201516001600160801b0316815260200190815260200160002060010160146101000a81548160ff021916908360ff1602179055505b88516001600160801b0390811660009081526005602052604080822060039081018054600160801b80820487168890038716029086161790558b5184168352908220018054909216909155600190600a908a8161228a565b88516001600160801b03908116600090815260056020908152604080832060039081018054861690558c5185168452818420018054851690558c5184168352600a909152808220805460ff1990811660019081179092558c519094168352912080549092161790555b6001600160801b0382811660a08b810191909152848216908a015260c08a015116600114156128f05788600360200201516001600160801b031660021480156125d2575060025487516001600160a01b039081169116145b156126e9576003546125eb90849063ffffffff612dcd16565b92506126018860055b602002015160035461346f565b6001600160801b031660a089015260035461266090600660008a60015b602090810291909101516001600160a01b039081168352828201939093526040918201600090812060025490941681529290529020549063ffffffff612dcd16565b6020808901516001600160a01b039081166000908152600683526040808220600280548516845290855281832095909555600354825484168352600b85528183209554909316825293909252919020546126b991612db7565b600080546001600160a01b039081168252600b6020908152604080842060025490931684529190529020556128f0565b88600360200201516001600160801b031660011480612735575088600360200201516001600160801b03166002148015612735575060025460408801516001600160a01b039081169116145b156128585760035460a08a01516001600160801b0316106127d05761275b8960056125f4565b6001600160801b031660a08a0152600354600080546001600160a01b039081168252600b6020908152604080842060025490931684529190529020546127a091612db7565b600080546001600160a01b039081168252600b602090815260408084206002549093168452919052902055612853565b61281f8960055b60209081029190910151600080546001600160a01b039081168252600b84526040808320600254909216835293529190912054906001600160801b031663ffffffff612db716565b600080546001600160a01b039081168252600b60209081526040808420600254909316845291905281209190915560a08a01525b6128f0565b60035461286b90600660008a600161261e565b6020808901516001600160a01b039081166000908152600683526040808220600280548516845290855281832095909555600354825484168352600b85528183209554909316825293909252919020546128c491612db7565b600080546001600160a01b039081168252600b6020908152604080842060025490931684529190529020555b87600660200201516001600160801b031660011415612bd55787600360200201516001600160801b0316600214801561293b575060025460408801516001600160a01b039081169116145b15612a0f5760035461295490839063ffffffff612dcd16565b91506129618960056125f4565b6001600160801b031660a08a015260038054612984916006906000908b9061261e565b60608801516001600160a01b039081166000908152600660209081526040808320600280548616855290835281842095909555600354835485168452600b83528184209554909416835293905291909120546129df91612db7565b600080546001600160a01b039081168252600b602090815260408084206002549093168452919052902055612bd5565b87600360200201516001600160801b031660011480612a58575087600360200201516001600160801b03166002148015612a58575060025487516001600160a01b039081169116145b15612b375760035460a08901516001600160801b031610612af357612a7e8860056125f4565b6001600160801b031660a0890152600354600080546001600160a01b039081168252600b602090815260408084206002549093168452919052902054612ac391612db7565b600080546001600160a01b039081168252600b602090815260408084206002549093168452919052902055612b32565b612afe8860056127d7565b600080546001600160a01b039081168252600b60209081526040808420600254909316845291905281209190915560a08901525b612bd5565b612b4e600354600660008a60036004811061261e57fe5b60608801516001600160a01b039081166000908152600660209081526040808320600280548616855290835281842095909555600354835485168452600b8352818420955490941683529390529190912054612ba991612db7565b600080546001600160a01b039081168252600b6020908152604080842060025490931684529190529020555b6020808801516001600160a01b03166000908152600690915260408120612c30918591908a815b60200201516001600160a01b03166001600160a01b0316815260200190815260200160002054612dcd90919063ffffffff16565b6020888101516001600160a01b039081166000908152600680845260408083208d518516845285528083209590955560608c015190921681529152908120612c7d918491908a6002612bfc565b60608801516001600160a01b039081166000908152600660208181526040808420818e01518616855282528084209590955560a08e0151818d0151909416835252918220612d09926001600160801b03909216918a60025b60200201516001600160a01b03166001600160a01b0316815260200190815260200160002054612db790919063ffffffff16565b6020888101516001600160a01b03908116600090815260068084526040808320818e01518516845285528083209590955560a08d015160608d01519093168252909252918120612d64926001600160801b0316918a81612cd5565b60608801516001600160a01b0390811660009081526006602090815260408083208c5190941683529290522055506001925050505b95945050505050565b60096020526000908152604090205460ff1681565b600082820183811015612dc657fe5b9392505050565b600082821115612dd957fe5b50900390565b606081612e0457506040805180820190915260018152600360fc1b60208201526109c9565b8160005b8115612e1c57600101600a82049150612e08565b6060816040519080825280601f01601f191660200182016040528015612e49576020820181803883390190505b50905060001982015b8515612e9757600a860660300160f81b82828060019003935081518110612e7557fe5b60200101906001600160f81b031916908160001a905350600a86049550612e52565b50949350505050565b604080518082018252601081526f181899199a1a9b1b9c1cb0b131b232b360811b60208201528151602a80825260608281019094526001600160a01b03851692918491602082018180388339019050509050600360fc1b81600081518110612f0457fe5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612f2d57fe5b60200101906001600160f81b031916908160001a90535060005b6014811015612e97578260048583600c0160208110612f6257fe5b1a60f81b6001600160f81b031916901c60f81c60ff1681518110612f8257fe5b602001015160f81c60f81b828260020260020181518110612f9f57fe5b60200101906001600160f81b031916908160001a905350828482600c0160208110612fc657fe5b825191901a600f16908110612fd757fe5b602001015160f81c60f81b828260020260030181518110612ff457fe5b60200101906001600160f81b031916908160001a905350600101612f47565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f191660200182016040528015613067576020820181803883390190505b509050806000805b88518110156130c05788818151811061308457fe5b602001015160f81c60f81b8383806001019450815181106130a157fe5b60200101906001600160f81b031916908160001a90535060010161306f565b5060005b8751811015613115578781815181106130d957fe5b602001015160f81c60f81b8383806001019450815181106130f657fe5b60200101906001600160f81b031916908160001a9053506001016130c4565b5060005b865181101561316a5786818151811061312e57fe5b602001015160f81c60f81b83838060010194508151811061314b57fe5b60200101906001600160f81b031916908160001a905350600101613119565b5060005b85518110156131bf5785818151811061318357fe5b602001015160f81c60f81b8383806001019450815181106131a057fe5b60200101906001600160f81b031916908160001a90535060010161316e565b5060005b8451811015613214578481815181106131d857fe5b602001015160f81c60f81b8383806001019450815181106131f557fe5b60200101906001600160f81b031916908160001a9053506001016131c3565b50909d9c50505050505050505050505050565b6040805180820190915260208082527f19457468657265756d205369676e6564204d6573736167653a0a303030303030908201528451600091906039820190620f423f81111561327657600080fd5b6000620186a05b8015613317576000613295848363ffffffff61348d16565b9050806132ba57826132ba576132b282600a63ffffffff61348d16565b91505061327d565b6001909201916132e06132d3828463ffffffff6134a216565b859063ffffffff612dcd16565b93506132f382600a63ffffffff61348d16565b915061330681603063ffffffff612db716565b60019095019490508085535061327d565b8161332557601b9150613339565b61333682601a63ffffffff612db716565b91505b8185526000858b6040516020018083805190602001908083835b602083106133725780518252601f199092019160209182019101613353565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106133ba5780518252601f19909201916020918201910161339b565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012090506001818b8b8b60405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613455573d6000803e3d6000fd5b5050604051601f1901519c9b505050505050505050505050565b6000826001600160801b0316826001600160801b03161115612dd957fe5b60008082848161349957fe5b04949350505050565b6000826134b157506000610cd2565b828202828482816134be57fe5b0414612dc657fe5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061350757805160ff1916838001178555613534565b82800160010185558215613534579182015b82811115613534578251825591602001919060010190613519565b50613540929150613544565b5090565b6115d291905b80821115613540576000815560010161354a56fea265627a7a723158203e90b973b3f0d8948163452d55cfb99d0f629796f5c0583db732844d1fbd9d9564736f6c634300050b00320000000000000000000000003463d27b23a25725b10f6edf7021be5755855d000000000000000000000000008c6e4d346d13b54ee06b37c53c9aa5fe2743ba6a000000000000000000000000df44a80c17813789f60090638827aeb23698b122000000000000000000000000000000000000000000000002b5e3af16b18800000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061014b5760003560e01c80637837c292116100b6578063d8bb03691161006f578063d8bb0369146105c2578063db943dd0146106f6578063e044f9a914610731578063ecbf08da1461080b578063f76d39b614610846578063feedb820146109535761014b565b80637837c2921461048857806381052a04146105065780638f2839701461051b578063ac6466291461054e578063b8df0dea14610589578063d0e30db0146105ba5761014b565b80634ec7dbfd116101085780634ec7dbfd14610351578063516c72071461037b578063630663a5146103d257806369e154041461040557806370563d6b1461041a578063717ac5381461045c5761014b565b806317f4b8ee14610150578063285e140614610179578063299f7fc2146101ac5780632a176583146101f6578063443f41d5146102dc57806348c3c51f14610315575b600080fd5b34801561015c57600080fd5b50610165610986565b604080519115158252519081900360200190f35b34801561018557600080fd5b506101656004803603602081101561019c57600080fd5b50356001600160a01b0316610994565b3480156101b857600080fd5b50610165600480360360608110156101cf57600080fd5b506001600160a01b03813516906001600160801b03602082013516906040013515156109ce565b34801561020257600080fd5b506102296004803603602081101561021957600080fd5b50356001600160a01b0316610a2f565b604080516001600160a01b03871681526001600160801b038516918101919091526001600160781b038316606082015260ff8216608082015260a06020808301828152875192840192909252865160c084019188019080838360005b8381101561029d578181015183820152602001610285565b50505050905090810190601f1680156102ca5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b3480156102e857600080fd5b50610165600480360360408110156102ff57600080fd5b506001600160a01b038135169060200135610b10565b34801561032157600080fd5b506101656004803603604081101561033857600080fd5b50803560ff1690602001356001600160a01b0316610cd8565b34801561035d57600080fd5b506101656004803603602081101561037457600080fd5b5035610e6a565b34801561038757600080fd5b506103c06004803603606081101561039e57600080fd5b506001600160a01b038135811691602081013582169160409091013516610e7f565b60408051918252519081900360200190f35b3480156103de57600080fd5b506103c0600480360360208110156103f557600080fd5b50356001600160a01b0316610f06565b34801561041157600080fd5b506103c0610f18565b34801561042657600080fd5b506101656004803603606081101561043d57600080fd5b5060ff813516906001600160a01b036020820135169060400135610f1e565b34801561046857600080fd5b506101656004803603602081101561047f57600080fd5b50351515611387565b34801561049457600080fd5b506104b2600480360360208110156104ab57600080fd5b50356113b6565b604080516001600160a01b03988916815296909716602087015260ff909416858701526001600160801b0392831660608601529082166080850152811660a08401521660c082015290519081900360e00190f35b34801561051257600080fd5b50610165611414565b34801561052757600080fd5b506101656004803603602081101561053e57600080fd5b50356001600160a01b031661141d565b34801561055a57600080fd5b506103c06004803603604081101561057157600080fd5b506001600160a01b038135811691602001351661145a565b34801561059557600080fd5b5061059e6114e5565b604080516001600160a01b039092168252519081900360200190f35b6101656114f4565b3480156105ce57600080fd5b50610165600480360360408110156105e557600080fd5b81019060208101813564010000000081111561060057600080fd5b82018360208201111561061257600080fd5b8035906020019184602083028401116401000000008311171561063457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561068457600080fd5b82018360208201111561069657600080fd5b803590602001918460208302840111640100000000831117156106b857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506115d5945050505050565b34801561070257600080fd5b506103c06004803603604081101561071957600080fd5b506001600160a01b038135811691602001351661170e565b34801561073d57600080fd5b506101656004803603608081101561075457600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561077f57600080fd5b82018360208201111561079157600080fd5b803590602001918460018302840111640100000000831117156107b357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505081356001600160801b0316925050602001356001600160781b031661172b565b34801561081757600080fd5b506103c06004803603604081101561082e57600080fd5b506001600160a01b038135811691602001351661182b565b34801561085257600080fd5b50610165600480360361030081101561086a57600080fd5b810190808060e001906007806020026040519081016040528092919082600760200280828437600092019190915250506040805160e0818101909252929594938181019392509060079083908390808284376000920191909152505060408051608081810190925292959493818101939250906004908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525050604080516080818101909252929594938181019392509060049083908390808284376000920191909152509194506118489350505050565b34801561095f57600080fd5b506101656004803603602081101561097657600080fd5b50356001600160a01b0316612da2565b600454610100900460ff1681565b600080546001600160a01b031633146109ac57600080fd5b50600180546001600160a01b0319166001600160a01b0383161781555b919050565b600080546001600160a01b031633146109e657600080fd5b50600280546001600160a01b0385166001600160a01b03199091161790556001600160801b038216600355600480548215156101000261ff001990911617905560019392505050565b6008602090815260009182526040918290208054600180830180548651600261010094831615949094026000190190911692909204601f81018690048602830186019096528582526001600160a01b03909216949293909290830182828015610ad95780601f10610aae57610100808354040283529160200191610ad9565b820191906000526020600020905b815481529060010190602001808311610abc57829003601f168201915b505050600290930154919250506001600160801b038116906001600160781b03600160801b8204169060ff600160f81b9091041685565b60045460009060ff161515600114610b2757600080fd5b6000546001600160a01b0316331415610b3f57600080fd5b600082118015610b7457506001600160a01b038316600090815260086020526040902060020154600160f81b900460ff166001145b610b7d57600080fd5b6000610b8a843330610e7f565b11610b9457600080fd5b3360009081526006602090815260408083206001600160a01b0387168452909152902054610bc8908363ffffffff612db716565b3360008181526006602090815260408083206001600160a01b0389168085529083528184209590955580516323b872dd60e01b8152600481019490945230602485015260448401879052516323b872dd93606480820194918390030190829087803b158015610c3657600080fd5b505af1158015610c4a573d6000803e3d6000fd5b505050506040513d6020811015610c6057600080fd5b5050336000818152600960209081526040808320805460ff1916600117905580519384526001600160a01b038716918401919091528281018590526060830191909152517f841de847f56267eab1b8268e4c7453de6910e81d3390badd79bf9a6bf0a066459181900360800190a15060015b92915050565b600080546001600160a01b03163314610cf057600080fd5b60ff83161580610d0357508260ff166001145b610d0c57600080fd5b60ff8316610d8d57600080546001600160a01b0316808252600b60209081526040808420848052909152808320549051919281156108fc029290818181858888f19350505050158015610d63573d6000803e3d6000fd5b50600080546001600160a01b03168152600b60209081526040808320838052909152812055610e61565b6001600160a01b038216610da057600080fd5b600080546001600160a01b03908116808352600b6020908152604080852093871680865293825280852054815163a9059cbb60e01b81526004810194909452602484015251929363a9059cbb936044808501949192918390030190829087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505050506040513d6020811015610e3657600080fd5b5050600080546001600160a01b039081168252600b6020908152604080842092861684529190528120555b50600192915050565b600a6020526000908152604090205460ff1681565b60408051636eb1769f60e11b81526001600160a01b0384811660048301528381166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b158015610ed257600080fd5b505afa158015610ee6573d6000803e3d6000fd5b505050506040513d6020811015610efc57600080fd5b5051949350505050565b60076020526000908152604090205481565b60035481565b60045460009060ff161515600114610f3557600080fd5b6000546001600160a01b0316331415610f4d57600080fd5b60ff84161580610f6057508360ff166001145b610f6957600080fd5b60ff8416611127576001600160a01b03831615610f8557600080fd5b600082118015610faf57503360009081526006602090815260408083208380529091529020548211155b8015610fe457506000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5482115b610fed57600080fd5b3031821115610ffb57600080fd5b6000805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5433906108fc9061103d90859063ffffffff612dcd16565b6040518115909202916000818181858888f19350505050158015611065573d6000803e3d6000fd5b50336000908152600660209081526040808320838052909152902054611091908363ffffffff612dcd16565b3360009081526006602090815260408083208380528252808320939093557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5482546001600160a01b03168352600b8252838320838052909152919020546110fe9163ffffffff612db716565b600080546001600160a01b03168152600b6020908152604080832083805290915290205561132e565b6001600160a01b0383161580159061116457506001600160a01b038316600090815260086020526040902060020154600160f81b900460ff166001145b61116d57600080fd5b6000821180156111a057503360009081526006602090815260408083206001600160a01b03871684529091529020548211155b80156111c357506001600160a01b03831660009081526007602052604090205482115b6111cc57600080fd5b6001600160a01b03831660008181526007602052604090205463a9059cbb9033906111fe90869063ffffffff612dcd16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561124d57600080fd5b505af1158015611261573d6000803e3d6000fd5b505050506040513d602081101561127757600080fd5b50503360009081526006602090815260408083206001600160a01b03871684529091529020546112ad908363ffffffff612dcd16565b3360009081526006602090815260408083206001600160a01b0388811680865291845282852095909555600783528184205484549095168452600b83528184209084529091529020546113059163ffffffff612db716565b600080546001600160a01b039081168252600b6020908152604080842092881684529190529020555b604080513381526001600160a01b03851660208201528082018490526001606082015290517f841de847f56267eab1b8268e4c7453de6910e81d3390badd79bf9a6bf0a066459181900360800190a15060019392505050565b600080546001600160a01b0316331461139f57600080fd5b506004805460ff1916911515919091179055600190565b60056020526000908152604090208054600182015460028301546003909301546001600160a01b039283169392821692600160a01b90920460ff16916001600160801b0380821692600160801b928390048216928282169291041687565b60045460ff1681565b600080546001600160a01b0316331461143557600080fd5b50600080546001600160a01b0383166001600160a01b03199091161790556001919050565b6000826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156114b257600080fd5b505afa1580156114c6573d6000803e3d6000fd5b505050506040513d60208110156114dc57600080fd5b50519392505050565b6002546001600160a01b031681565b60045460009060ff16151560011461150b57600080fd5b6000546001600160a01b031633141561152357600080fd5b6000341161153057600080fd5b33600090815260066020908152604080832083805290915290205461155b903463ffffffff612db716565b33600081815260066020908152604080832083805282528083209490945582825260098152838220805460ff19166001179055835192835282018190523482840152606082015290517f841de847f56267eab1b8268e4c7453de6910e81d3390badd79bf9a6bf0a066459181900360800190a15060015b90565b600080546001600160a01b031633146115ed57600080fd5b600a83511080156115ff5750600a8251105b801561160c575081518351145b61161557600080fd5b60005b83518160ff16101561170457828160ff168151811061163357fe5b60200260200101516001600160781b031660076000868460ff168151811061165757fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828160ff168151811061169257fe5b602002602001015160086000868460ff16815181106116ad57fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002060020180546001600160781b0392909216600160801b02600160801b600160f81b0319909216919091179055600101611618565b5060019392505050565b600660209081526000928352604080842090915290825290205481565b6001546000906001600160a01b0316331461174557600080fd5b6001600160a01b038516600090815260086020526040902060020154600160f81b900460ff161561177557600080fd5b6001600160a01b038516600081815260086020908152604090912080546001600160a01b031916909217825585516117b392600101918701906134c6565b50506001600160a01b038416600090815260086020526040902060020180546001600160f81b036001600160781b038416600160801b02600160801b600160f81b03196001600160801b0387166001600160801b031990941693909317929092169190911716600160f81b1790556001949350505050565b600b60209081526000928352604080842090915290825290205481565b6001546000906001600160a01b0316331461186257600080fd5b85516001600160801b03166000908152600a602052604090205460ff1615156001148015906118b0575084516001600160801b03166000908152600a602052604090205460ff161515600114155b6118b957600080fd5b4286600460200201516001600160801b0316101580156118e957504285600460200201516001600160801b031610155b6118f257600080fd5b600060c0878101829052860181905286516001600160801b03168152600560205260408120600101548190600160a01b900460ff16611ad65787600360200201516001600160801b031660011480611977575087600360200201516001600160801b03166002148015611977575060025460408701516001600160a01b039081169116145b156119a957600454610100900460ff1661199957600060c089018190526119a3565b600160c089018190525b50611a34565b6003546020808801516001600160a01b03908116600090815260068352604080822060025490931682529190925290205410156119e557600080fd5b600160c089015260608801516001600160801b03166002148015611a18575060025486516001600160a01b039081169116145b15611a3457600354611a3190839063ffffffff612db716565b91505b60208601516001600160a01b0316611aab611a99611a628b60005b60200201516001600160801b0316612ddf565b611a738a60005b6020020151612ea0565b611a7e8d6002611a4f565b611a898e6001611a4f565b611a948f6004611a4f565b613013565b875187518860015b6020020151613227565b6001600160a01b031614611abe57600080fd5b60208801516001600160801b031660a0890152611bd9565b87516001600160801b03908116600090815260056020526040902060030154600160801b900416611b0657600080fd5b87516001600160801b039081166000908152600560205260409020600290810154600160801b90049091169089906001600160801b03928316602091820292909201919091528951821660009081526005808352604080832060020154851660608e01528c51851683529281905291902060030154600160801b90049091169089906001600160801b039283166020918202929092019190915289518216600090815260058083526040808320600101546001600160a01b039081168c528d519095168352908352902054909116908701525b86516001600160801b0316600090815260056020526040902060010154600160a01b900460ff16611dae5786600360200201516001600160801b031660011480611c4d575086600360200201516001600160801b03166002148015611c4d575060025486516001600160a01b039081169116145b15611c7f57600454610100900460ff16611c6f57600060c08801819052611c79565b600160c088018190525b50611d26565b6003546006600088600360048110611c9357fe5b602090810291909101516001600160a01b039081168352828201939093526040918201600090812060025490941681529290529020541015611cd457600080fd5b600160c088015260608701516001600160801b03166002148015611d0a575060025460408701516001600160a01b039081169116145b15611d2657600354611d2390829063ffffffff612db716565b90505b60608601516001600160a01b0316611d83611d71611d458a6000611a4f565b611d508a6002611a69565b611d5b8c6002611a4f565b611d668d6001611a4f565b611a948e6004611a4f565b60208801516040880151886003611aa1565b6001600160a01b031614611d9657600080fd5b60208701516001600160801b031660a0880152611e7d565b86516001600160801b03908116600090815260056020526040902060030154600160801b900416611dde57600080fd5b86516001600160801b039081166000908152600560208181526040808420600290810154600160801b908190048716838f01528d51871686528484528286209091015486166060808f01919091528d51871686528484528286206003015491909104861660a08e01528c5186168552838352818520600101546001600160a01b039081168d8401528d5190961685529290915290912054909116908701525b600088600560200201516001600160801b031688600560200201516001600160801b03161115611eb2575060a0880151611eb9565b5060a08701515b88600360200201516001600160801b031660011415611f495786516001600160a01b03166000908152600860205260409081902060020154908a0151611f27916001600160801b039081169184021681611f0f57fe5b85916001600160801b0391041663ffffffff612db716565b9250611f42826001600160801b03831663ffffffff612db716565b9150611fbf565b611f62836001600160801b03831663ffffffff612db716565b6040808901516001600160a01b03166000908152600860205281902060020154908b0151919450611fbc916001600160801b03918216919084021681611fa457fe5b84916001600160801b0391041663ffffffff612db716565b91505b6020878101516001600160a01b0390811660009081526006835260408082208b51909316825291909252902054831115611fff5760009350505050612d99565b60608701516001600160a01b039081166000908152600660209081526040808320818c0151909416835292905220548211156120415760009350505050612d99565b60a0808a0151908901516001600160801b03918216911611156122c25787516001600160801b03166000908152600560205260409020600190810154600160a01b900460ff16146122365760608781015189516001600160801b0390811660009081526005602052604080822080546001600160a01b0319166001600160a01b0390951694909417909355928b01518b518216845291909220600290810180546001600160801b031916929093169190911790915588906020908102919091015189516001600160801b039081166000908152600590935260409092206002018054918316600160801b02919092161790558760016020908102919091015189516001600160801b0390811660009081526005938490526040902060030180546001600160801b0319169190921617905588906020908102919091015189516001600160801b039081166000908152600590935260409092206003018054918316600160801b02919092161790558660026020908102919091015189516001600160801b0316600090815260059283905260408120600190810180546001600160a01b0319166001600160a01b03909416939093179092559091908a8160200201516001600160801b0316815260200190815260200160002060010160146101000a81548160ff021916908360ff1602179055505b87516001600160801b0390811660009081526005602052604080822060039081018054600160801b80820487168890038716029086161790558c5184168352908220018054909216909155600190600a908b815b60200201516001600160801b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555061257a565b60a0808a0151908901516001600160801b03918216911610156125115788516001600160801b03166000908152600560205260409020600190810154600160a01b900460ff16146124b9576020878101518a516001600160801b0390811660009081526005909352604080842080546001600160a01b0319166001600160a01b039094169390931790925560608c01518c518216845291909220600290810180546001600160801b03191692909316919091179091558990602090810291909101518a516001600160801b039081166000908152600590935260409092206002018054918316600160801b0291909216179055886001602090810291909101518a516001600160801b0390811660009081526005938490526040902060030180546001600160801b031916919092161790558990602090810291909101518a516001600160801b0390811660009081526005909352604083206003018054928216600160801b02929091169190911790558790602090810291909101518a516001600160801b0316600090815260059283905260408120600190810180546001600160a01b0319166001600160a01b03909416939093179092559091908b8160200201516001600160801b0316815260200190815260200160002060010160146101000a81548160ff021916908360ff1602179055505b88516001600160801b0390811660009081526005602052604080822060039081018054600160801b80820487168890038716029086161790558b5184168352908220018054909216909155600190600a908a8161228a565b88516001600160801b03908116600090815260056020908152604080832060039081018054861690558c5185168452818420018054851690558c5184168352600a909152808220805460ff1990811660019081179092558c519094168352912080549092161790555b6001600160801b0382811660a08b810191909152848216908a015260c08a015116600114156128f05788600360200201516001600160801b031660021480156125d2575060025487516001600160a01b039081169116145b156126e9576003546125eb90849063ffffffff612dcd16565b92506126018860055b602002015160035461346f565b6001600160801b031660a089015260035461266090600660008a60015b602090810291909101516001600160a01b039081168352828201939093526040918201600090812060025490941681529290529020549063ffffffff612dcd16565b6020808901516001600160a01b039081166000908152600683526040808220600280548516845290855281832095909555600354825484168352600b85528183209554909316825293909252919020546126b991612db7565b600080546001600160a01b039081168252600b6020908152604080842060025490931684529190529020556128f0565b88600360200201516001600160801b031660011480612735575088600360200201516001600160801b03166002148015612735575060025460408801516001600160a01b039081169116145b156128585760035460a08a01516001600160801b0316106127d05761275b8960056125f4565b6001600160801b031660a08a0152600354600080546001600160a01b039081168252600b6020908152604080842060025490931684529190529020546127a091612db7565b600080546001600160a01b039081168252600b602090815260408084206002549093168452919052902055612853565b61281f8960055b60209081029190910151600080546001600160a01b039081168252600b84526040808320600254909216835293529190912054906001600160801b031663ffffffff612db716565b600080546001600160a01b039081168252600b60209081526040808420600254909316845291905281209190915560a08a01525b6128f0565b60035461286b90600660008a600161261e565b6020808901516001600160a01b039081166000908152600683526040808220600280548516845290855281832095909555600354825484168352600b85528183209554909316825293909252919020546128c491612db7565b600080546001600160a01b039081168252600b6020908152604080842060025490931684529190529020555b87600660200201516001600160801b031660011415612bd55787600360200201516001600160801b0316600214801561293b575060025460408801516001600160a01b039081169116145b15612a0f5760035461295490839063ffffffff612dcd16565b91506129618960056125f4565b6001600160801b031660a08a015260038054612984916006906000908b9061261e565b60608801516001600160a01b039081166000908152600660209081526040808320600280548616855290835281842095909555600354835485168452600b83528184209554909416835293905291909120546129df91612db7565b600080546001600160a01b039081168252600b602090815260408084206002549093168452919052902055612bd5565b87600360200201516001600160801b031660011480612a58575087600360200201516001600160801b03166002148015612a58575060025487516001600160a01b039081169116145b15612b375760035460a08901516001600160801b031610612af357612a7e8860056125f4565b6001600160801b031660a0890152600354600080546001600160a01b039081168252600b602090815260408084206002549093168452919052902054612ac391612db7565b600080546001600160a01b039081168252600b602090815260408084206002549093168452919052902055612b32565b612afe8860056127d7565b600080546001600160a01b039081168252600b60209081526040808420600254909316845291905281209190915560a08901525b612bd5565b612b4e600354600660008a60036004811061261e57fe5b60608801516001600160a01b039081166000908152600660209081526040808320600280548616855290835281842095909555600354835485168452600b8352818420955490941683529390529190912054612ba991612db7565b600080546001600160a01b039081168252600b6020908152604080842060025490931684529190529020555b6020808801516001600160a01b03166000908152600690915260408120612c30918591908a815b60200201516001600160a01b03166001600160a01b0316815260200190815260200160002054612dcd90919063ffffffff16565b6020888101516001600160a01b039081166000908152600680845260408083208d518516845285528083209590955560608c015190921681529152908120612c7d918491908a6002612bfc565b60608801516001600160a01b039081166000908152600660208181526040808420818e01518616855282528084209590955560a08e0151818d0151909416835252918220612d09926001600160801b03909216918a60025b60200201516001600160a01b03166001600160a01b0316815260200190815260200160002054612db790919063ffffffff16565b6020888101516001600160a01b03908116600090815260068084526040808320818e01518516845285528083209590955560a08d015160608d01519093168252909252918120612d64926001600160801b0316918a81612cd5565b60608801516001600160a01b0390811660009081526006602090815260408083208c5190941683529290522055506001925050505b95945050505050565b60096020526000908152604090205460ff1681565b600082820183811015612dc657fe5b9392505050565b600082821115612dd957fe5b50900390565b606081612e0457506040805180820190915260018152600360fc1b60208201526109c9565b8160005b8115612e1c57600101600a82049150612e08565b6060816040519080825280601f01601f191660200182016040528015612e49576020820181803883390190505b50905060001982015b8515612e9757600a860660300160f81b82828060019003935081518110612e7557fe5b60200101906001600160f81b031916908160001a905350600a86049550612e52565b50949350505050565b604080518082018252601081526f181899199a1a9b1b9c1cb0b131b232b360811b60208201528151602a80825260608281019094526001600160a01b03851692918491602082018180388339019050509050600360fc1b81600081518110612f0457fe5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612f2d57fe5b60200101906001600160f81b031916908160001a90535060005b6014811015612e97578260048583600c0160208110612f6257fe5b1a60f81b6001600160f81b031916901c60f81c60ff1681518110612f8257fe5b602001015160f81c60f81b828260020260020181518110612f9f57fe5b60200101906001600160f81b031916908160001a905350828482600c0160208110612fc657fe5b825191901a600f16908110612fd757fe5b602001015160f81c60f81b828260020260030181518110612ff457fe5b60200101906001600160f81b031916908160001a905350600101612f47565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f191660200182016040528015613067576020820181803883390190505b509050806000805b88518110156130c05788818151811061308457fe5b602001015160f81c60f81b8383806001019450815181106130a157fe5b60200101906001600160f81b031916908160001a90535060010161306f565b5060005b8751811015613115578781815181106130d957fe5b602001015160f81c60f81b8383806001019450815181106130f657fe5b60200101906001600160f81b031916908160001a9053506001016130c4565b5060005b865181101561316a5786818151811061312e57fe5b602001015160f81c60f81b83838060010194508151811061314b57fe5b60200101906001600160f81b031916908160001a905350600101613119565b5060005b85518110156131bf5785818151811061318357fe5b602001015160f81c60f81b8383806001019450815181106131a057fe5b60200101906001600160f81b031916908160001a90535060010161316e565b5060005b8451811015613214578481815181106131d857fe5b602001015160f81c60f81b8383806001019450815181106131f557fe5b60200101906001600160f81b031916908160001a9053506001016131c3565b50909d9c50505050505050505050505050565b6040805180820190915260208082527f19457468657265756d205369676e6564204d6573736167653a0a303030303030908201528451600091906039820190620f423f81111561327657600080fd5b6000620186a05b8015613317576000613295848363ffffffff61348d16565b9050806132ba57826132ba576132b282600a63ffffffff61348d16565b91505061327d565b6001909201916132e06132d3828463ffffffff6134a216565b859063ffffffff612dcd16565b93506132f382600a63ffffffff61348d16565b915061330681603063ffffffff612db716565b60019095019490508085535061327d565b8161332557601b9150613339565b61333682601a63ffffffff612db716565b91505b8185526000858b6040516020018083805190602001908083835b602083106133725780518252601f199092019160209182019101613353565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106133ba5780518252601f19909201916020918201910161339b565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040528051906020012090506001818b8b8b60405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613455573d6000803e3d6000fd5b5050604051601f1901519c9b505050505050505050505050565b6000826001600160801b0316826001600160801b03161115612dd957fe5b60008082848161349957fe5b04949350505050565b6000826134b157506000610cd2565b828202828482816134be57fe5b0414612dc657fe5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061350757805160ff1916838001178555613534565b82800160010185558215613534579182015b82811115613534578251825591602001919060010190613519565b50613540929150613544565b5090565b6115d291905b80821115613540576000815560010161354a56fea265627a7a723158203e90b973b3f0d8948163452d55cfb99d0f629796f5c0583db732844d1fbd9d9564736f6c634300050b0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003463d27b23a25725b10f6edf7021be5755855d000000000000000000000000008c6e4d346d13b54ee06b37c53c9aa5fe2743ba6a000000000000000000000000df44a80c17813789f60090638827aeb23698b122000000000000000000000000000000000000000000000002b5e3af16b18800000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _admin (address): 0x3463D27B23a25725B10f6EDF7021BE5755855d00
Arg [1] : feeAddress_ (address): 0x8c6e4d346D13b54Ee06B37C53c9aA5FE2743ba6A
Arg [2] : feetokenaddress_ (address): 0xdF44A80c17813789f60090638827aEb23698B122
Arg [3] : minFeeamount (uint128): 50000000000000000000
Arg [4] : _status (bool): False
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000003463d27b23a25725b10f6edf7021be5755855d00
Arg [1] : 0000000000000000000000008c6e4d346d13b54ee06b37c53c9aa5fe2743ba6a
Arg [2] : 000000000000000000000000df44a80c17813789f60090638827aeb23698b122
Arg [3] : 000000000000000000000000000000000000000000000002b5e3af16b1880000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
1057:24199:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1629:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1629:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;3722:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3722:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3722:152:0;-1:-1:-1;;;;;3722:152:0;;:::i;4049:258::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4049:258:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4049:258:0;;;;-1:-1:-1;;;;;4049:258:0;;;;;;;;;;;;:::i;2828:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2828:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2828:44:0;-1:-1:-1;;;;;2828:44:0;;:::i;:::-;;;;-1:-1:-1;;;;;2828:44:0;;;;-1:-1:-1;;;;;2828:44:0;;;;;;;;;-1:-1:-1;;;;;2828:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-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;2828:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5429:707;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5429:707:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5429:707:0;;;;;;;;:::i;7909:853::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7909:853:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7909:853:0;;;;;;;;-1:-1:-1;;;;;7909:853:0;;:::i;3004:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3004:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3004:40:0;;:::i;25035:210::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25035:210:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25035:210:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2722:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2722:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2722:44:0;-1:-1:-1;;;;;2722:44:0;;:::i;1430:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:24:0;;;:::i;6170:1697::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6170:1697:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6170:1697:0;;;;;-1:-1:-1;;;;;6170:1697:0;;;;;;;;;;:::i;3486:221::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3486:221:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3486:221:0;;;;:::i;2515:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2515:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2515:37:0;;:::i;:::-;;;;-1:-1:-1;;;;;2515:37:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2515:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1461:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1461:21:0;;;:::i;3886:154::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3886:154:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3886:154:0;-1:-1:-1;;;;;3886:154:0;;:::i;24848:175::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24848:175:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24848:175:0;;;;;;;;;;:::i;1393:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1393:30:0;;;:::i;:::-;;;;-1:-1:-1;;;;;1393:30:0;;;;;;;;;;;;;;5043:374;;;:::i;8788:580::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8788:580:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8788:580:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8788:580:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8788:580:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8788:580:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8788:580:0;;;;;;;;-1:-1:-1;8788:580:0;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;8788:580:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8788:580:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8788:580:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8788:580:0;;-1:-1:-1;8788:580:0;;-1:-1:-1;;;;;8788:580:0:i;2622:61::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2622:61:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2622:61:0;;;;;;;;;;:::i;4315:627::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4315:627:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4315:627:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4315:627:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4315:627:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4315:627:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4315:627:0;;-1:-1:-1;;;4315:627:0;;-1:-1:-1;;;;;4315:627:0;;-1:-1:-1;;4315:627:0;;;-1:-1:-1;;;;;4315:627:0;;:::i;3079:61::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3079:61:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3079:61:0;;;;;;;;;;:::i;13288:11408::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13288:11408:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;13288:11408:0;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;13288:11408:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;13288:11408:0;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;13288:11408:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;13288:11408:0;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;13288:11408:0;;;;;;;;;;;;;;;;;-1:-1:-1;13288:11408:0;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;13288:11408:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;13288:11408:0;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;13288:11408:0;;-1:-1:-1;13288:11408:0;;-1:-1:-1;;;;13288:11408:0:i;2917:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2917:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2917:41:0;-1:-1:-1;;;;;2917:41:0;;:::i;1629:26::-;;;;;;;;;:::o;3722:152::-;3799:4;3450:5;;-1:-1:-1;;;;;3450:5:0;3436:10;:19;3428:28;;;;;;-1:-1:-1;3815:10:0;:29;;-1:-1:-1;;;;;;3815:29:0;-1:-1:-1;;;;;3815:29:0;;;;;3465:1;3722:152;;;:::o;4049:258::-;4156:4;3450:5;;-1:-1:-1;;;;;3450:5:0;3436:10;:19;3428:28;;;;;;-1:-1:-1;4172:15:0;:33;;-1:-1:-1;;;;;4172:33:0;;-1:-1:-1;;;;;;4172:33:0;;;;;;-1:-1:-1;;;;;4216:26:0;;:9;:26;4253:14;:24;;;;;4172:33;4253:24;-1:-1:-1;;4253:24:0;;;;;;4172:33;4049:258;;;;;:::o;2828:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2828:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2828:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2828:44:0;;;;;;;-1:-1:-1;;;;;;;2828:44:0;;;-1:-1:-1;;;;;;;;2828:44:0;;;;;-1:-1:-1;;;2828:44:0;;;;;:::o;5429:707::-;3254:9;;5520:4;;3254:9;;:15;;:9;:15;3246:24;;;;;;5563:5;;-1:-1:-1;;;;;5563:5:0;5550:10;:18;;5542:27;;;;;;5602:1;5588:11;:15;:52;;;;-1:-1:-1;;;;;;5607:23:0;;;;;;:12;:23;;;;;:30;;;-1:-1:-1;;;5607:30:0;;;;5639:1;5607:33;5588:52;5580:61;;;;;;5766:1;5713:50;5728:9;5738:10;5757:4;5713:14;:50::i;:::-;:54;5705:63;;;;;;5867:10;5855:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5855:34:0;;;;;;;;;;:51;;5894:11;5855:51;:38;:51;:::i;:::-;5830:10;5818:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5818:34:0;;;;;;;;;;;:88;;;;5917:68;;-1:-1:-1;;;5917:68:0;;;;;;;;;5966:4;5917:68;;;;;;;;;;;:29;;:68;;;;;;;;;;;;;5818:34;5917:68;;;5:2:-1;;;;30:1;27;20:12;5:2;5917:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5917:68:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;6008:10:0;5996:23;;;;:11;5917:68;5996:23;;;;;;;:28;;-1:-1:-1;;5996:28:0;6020:4;5996:28;;;6041:55;;;;;-1:-1:-1;;;;;6041:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6114:4:0;3280:1;5429:707;;;;:::o;7909:853::-;7983:4;8082:5;;-1:-1:-1;;;;;8082:5:0;8068:10;:19;8060:28;;;;;;8123:9;;;;;:23;;;8136:5;:10;;8145:1;8136:10;8123:23;8115:32;;;;;;8162:8;;;8159:566;;8204:5;;;-1:-1:-1;;;;;8204:5:0;8219:18;;;:11;:18;;;;;;;;:30;;;;;;;;;;8204:46;;:5;;:46;;;;;;;:5;:46;8219:30;8204:5;:46;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;8342:1:0;8323:5;;-1:-1:-1;;;;;8323:5:0;8311:18;;:11;:18;;;;;;;;:30;;;;;;;;:32;8159:566;;;-1:-1:-1;;;;;8473:23:0;;8465:32;;;;;;8539:5;;;-1:-1:-1;;;;;8539:5:0;;;8546:18;;;:11;:18;;;;;;;;8513:25;;;8546:29;;;;;;;;;;8513:63;;-1:-1:-1;;;8513:63:0;;;;;;;;;;;;;;:25;;;;:63;;;;;;;;;;;;;;;:25;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;8513:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8513:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8667:1:0;8649:5;;-1:-1:-1;;;;;8649:5:0;;;8637:18;;:11;8513:63;8637:18;;;;;;;:29;;;;;;;;;;:31;8159:566;-1:-1:-1;8746:4:0;7909:853;;;;:::o;3004:40::-;;;;;;;;;;;;;;;:::o;25035:210::-;25195:42;;;-1:-1:-1;;;25195:42:0;;-1:-1:-1;;;;;25195:42:0;;;;;;;;;;;;;;;;25129:7;;25195:26;;;;;:42;;;;;;;;;;;;;;:26;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;25195:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25195:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25195:42:0;;25035:210;-1:-1:-1;;;;25035:210:0:o;2722:44::-;;;;;;;;;;;;;:::o;1430:24::-;;;;:::o;6170:1697::-;3254:9;;6264:4;;3254:9;;:15;;:9;:15;3246:24;;;;;;6302:5;;-1:-1:-1;;;;;6302:5:0;6289:10;:18;;6281:27;;;;;;6327:9;;;;;:23;;;6340:5;:10;;6349:1;6340:10;6327:23;6319:32;;;;;;6413:8;;;6410:1362;;-1:-1:-1;;;;;6460:23:0;;;6452:32;;;;;;6556:1;6549:6;:8;:57;;;;-1:-1:-1;6583:10:0;6571:23;;;;:11;:23;;;;;;;;:35;;;;;;;;;6561:45;;;6549:57;:91;;;;-1:-1:-1;6610:23:0;;;:11;:23;;;;:30;-1:-1:-1;6549:91:0;6541:100;;;;;;6698:4;6690:21;6682:29;;;6674:38;;;;;;6762:23;;;:11;:23;;;;6731:10;;:56;;6751:35;;:6;;:35;:10;:35;:::i;:::-;6731:56;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;6888:10:0;6876:23;;;;:11;:23;;;;;;;;:35;;;;;;;;;:47;;6916:6;6876:47;:39;:47;:::i;:::-;6850:10;6838:23;;;;:11;:23;;;;;;;;:35;;;;;;;;:85;;;;7037:23;;7014:5;;-1:-1:-1;;;;;7014:5:0;7002:18;;:11;:18;;;;;:30;;;;;;;;;;:59;;;:34;:59;:::i;:::-;6969:18;6981:5;;-1:-1:-1;;;;;6981:5:0;6969:18;;:11;:18;;;;;;;;:30;;;;;;;;:92;6410:1362;;;-1:-1:-1;;;;;7168:23:0;;;;;;:60;;-1:-1:-1;;;;;;7195:23:0;;;;;;:12;:23;;;;;:30;;;-1:-1:-1;;;7195:30:0;;;;7227:1;7195:33;7168:60;7160:69;;;;;;7295:1;7288:6;:8;:56;;;;-1:-1:-1;7322:10:0;7310:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7310:34:0;;;;;;;;;;7300:44;;;7288:56;:89;;;;-1:-1:-1;;;;;;7348:22:0;;;;;;:11;:22;;;;;;:29;-1:-1:-1;7288:89:0;7280:98;;;;;;-1:-1:-1;;;;;7395:25:0;;7445:22;;;;:11;:22;;;;;;7395:25;;7421:10;;7434:34;;:6;;:34;:10;:34;:::i;:::-;7395:75;;;;;;;;;;;;;-1:-1:-1;;;;;7395:75:0;-1:-1:-1;;;;;7395:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7395:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7395:75:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;7565:10:0;7553:23;;;;:11;7395:75;7553:23;;;;;;;-1:-1:-1;;;;;7553:34:0;;;;;;;;;;:46;;7592:6;7553:46;:38;:46;:::i;:::-;7528:10;7516:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7516:34:0;;;;;;;;;;;;:83;;;;7710:11;:22;;;;;;7688:5;;;;;7676:18;;:11;:18;;;;;:29;;;;;;;;;:57;;;:33;:57;:::i;:::-;7644:18;7656:5;;-1:-1:-1;;;;;7656:5:0;;;7644:18;;:11;:18;;;;;;;;:29;;;;;;;;;;:89;6410:1362;7787:50;;;7807:10;7787:50;;-1:-1:-1;;;;;7787:50:0;;;;;;;;;;;;7835:1;7787:50;;;;;;;;;;;;;;;-1:-1:-1;7855:4:0;6170:1697;;;;;:::o;3486:221::-;3547:4;3450:5;;-1:-1:-1;;;;;3450:5:0;3436:10;:19;3428:28;;;;;;-1:-1:-1;3609:9:0;:19;;-1:-1:-1;;3609:19:0;;;;;;;;;;-1:-1:-1;;3486:221:0:o;2515:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2515:37:0;;;;;;;;-1:-1:-1;;;2515:37:0;;;;;;-1:-1:-1;;;;;2515:37:0;;;;-1:-1:-1;;;2515:37:0;;;;;;;;;;;;;;;:::o;1461:21::-;;;;;;:::o;3886:154::-;3968:4;3450:5;;-1:-1:-1;;;;;3450:5:0;3436:10;:19;3428:28;;;;;;-1:-1:-1;3984:5:0;:26;;-1:-1:-1;;;;;3984:26:0;;-1:-1:-1;;;;;;3984:26:0;;;;;;;3886:154;;;:::o;24848:175::-;24928:7;24986:9;-1:-1:-1;;;;;24980:26:0;;25007:7;24980:35;;;;;;;;;;;;;-1:-1:-1;;;;;24980:35:0;-1:-1:-1;;;;;24980:35:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24980:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24980:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24980:35:0;;24848:175;-1:-1:-1;;;24848:175:0:o;1393:30::-;;;-1:-1:-1;;;;;1393:30:0;;:::o;5043:374::-;3254:9;;5100:4;;3254:9;;:15;;:9;:15;3246:24;;;;;;5139:5;;-1:-1:-1;;;;;5139:5:0;5126:10;:18;;5118:27;;;;;;5176:1;5164:9;:13;5156:22;;;;;;5238:10;5226:23;;;;:11;:23;;;;;;;;:35;;;;;;;;;:50;;5266:9;5226:50;:39;:50;:::i;:::-;5202:10;5190:23;;;;:11;:23;;;;;;;;:35;;;;;;;;:86;;;;5287:23;;;:11;:23;;;;;:28;;-1:-1:-1;;5287:28:0;5311:4;5287:28;;;5332:55;;;;;;;;;;5375:9;5332:55;;;;;;;;;;;;;;;;;;;-1:-1:-1;5405:4:0;3280:1;5043:374;:::o;8788:580::-;8876:4;8975:5;;-1:-1:-1;;;;;8975:5:0;8963:10;:17;8955:26;;;;;;9062:2;9049:4;:11;:15;:40;;;;;9087:2;9068:9;:16;:21;9049:40;:73;;;;;9106:9;:16;9093:4;:11;:29;9049:73;9041:82;;;;;;9140:7;9136:196;9152:4;:11;9150:1;:13;;;9136:196;;;9208:9;9218:1;9208:12;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9187:33:0;:11;:20;9199:4;9204:1;9199:7;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9187:20:0;-1:-1:-1;;;;;9187:20:0;;;;;;;;;;;;:33;;;;9278:9;9288:1;9278:12;;;;;;;;;;;;;;;;9242;:21;9255:4;9260:1;9255:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9242:21:0;;;;;;;;;;;-1:-1:-1;9242:21:0;:33;;:48;;-1:-1:-1;;;;;9242:48:0;;;;-1:-1:-1;;;9242:48:0;-1:-1:-1;;;;;;;;9242:48:0;;;;;;;;;-1:-1:-1;9164:3:0;9136:196;;;-1:-1:-1;9352:4:0;;8788:580;-1:-1:-1;;;8788:580:0:o;2622:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4315:627::-;3359:10;;4450:4;;-1:-1:-1;;;;;3359:10:0;3345;:24;3337:33;;;;;;-1:-1:-1;;;;;4474:27:0;;;;;;:12;:27;;;;;:34;;;-1:-1:-1;;;4474:34:0;;;;:37;4466:46;;;;;;-1:-1:-1;;;;;4565:27:0;;;;;;:12;:27;;;;;;;;:54;;-1:-1:-1;;;;;;4565:54:0;;;;;;4630:51;;;;4565:54;4630:39;;:51;;;;:::i;:::-;-1:-1:-1;;;;;;;4708:27:0;;;;;;:12;:27;;;;;:36;;:45;;-1:-1:-1;;;;;;;;;;4782:54:0;;-1:-1:-1;;;4782:54:0;-1:-1:-1;;;;;;;;;;;;;4708:45:0;;-1:-1:-1;;;;;;4708:45:0;;;;;;;4782:54;;;;;;;;4850:36;-1:-1:-1;;;4850:36:0;;;4708:45;4315:627;;;;;;:::o;3079:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;13288:11408::-;3359:10;;13468:4;;-1:-1:-1;;;;;3359:10:0;3345;:24;3337:33;;;;;;13504:13;;-1:-1:-1;;;;;13492:26:0;;;;;:11;13504:13;13492:26;;;;;;;:32;;:26;:32;;;;:69;;-1:-1:-1;13540:13:0;;-1:-1:-1;;;;;13528:26:0;;;;;:11;13540:13;13528:26;;;;;;;:33;;:26;:33;;13492:69;13484:78;;;;;;13596:15;13581:10;13592:1;13581:13;;;;-1:-1:-1;;;;;13581:30:0;;;:64;;;;-1:-1:-1;13630:15:0;13615:10;13626:1;13615:13;;;;-1:-1:-1;;;;;13615:30:0;;;13581:64;13573:73;;;;;;13696:17;13752:13;;;;:15;;;13778:13;;:15;;;13833:13;;-1:-1:-1;;;;;13827:20:0;;;:5;13752:13;13827:20;;;;:27;;;13696:17;;-1:-1:-1;;;13827:27:0;;;;13824:1438;;14009:10;14020:1;14009:13;;;;-1:-1:-1;;;;;14009:16:0;14024:1;14009:16;:73;;;-1:-1:-1;14029:10:0;14040:1;14029:13;;;;-1:-1:-1;;;;;14029:16:0;14044:1;14029:16;:53;;;;-1:-1:-1;14067:15:0;;14050;;;;-1:-1:-1;;;;;14050:32:0;;;14067:15;;14050:32;14029:53;14006:521;;;14103:14;;;;;;;14102:52;;14153:1;14139:13;;;:15;;;14102:52;;;14135:1;14121:13;;;:15;;;14102:52;;14006:521;;;14262:9;;14227:15;;;;;-1:-1:-1;;;;;14215:28:0;;;;;;;:11;:28;;;;;;14244:15;;;;;14215:45;;;;;;;;;:56;;14207:65;;;;;;14357:1;14343:13;;;:15;14380:13;;;;-1:-1:-1;;;;;14380:16:0;14395:1;14380:16;:54;;;;-1:-1:-1;14419:15:0;;14400;;-1:-1:-1;;;;;14400:34:0;;;14419:15;;14400:34;14380:54;14377:135;;;14482:9;;14468:24;;:9;;:24;:13;:24;:::i;:::-;14457:35;;14377:135;14779:15;;;;-1:-1:-1;;;;;14613:181:0;:164;14620:139;14630:23;14639:10;14650:1;14639:13;;;;;-1:-1:-1;;;;;14630:23:0;:8;:23::i;:::-;14654:32;14670:12;14683:1;14670:15;;;;;14654;:32::i;:::-;14687:23;14696:10;14707:1;14696:13;;14687:23;14711;14720:10;14731:1;14720:13;;14711:23;14735;14744:10;14755:1;14744:13;;14735:23;14620:9;:139::i;:::-;14760:4;;14765:5;;:2;14774:1;14771:5;;;;;14613:6;:164::i;:::-;-1:-1:-1;;;;;14613:181:0;;14605:190;;;;;;14826:13;;;;-1:-1:-1;;;;;14810:29:0;:13;;;:29;13824:1438;;;14894:13;;-1:-1:-1;;;;;14888:20:0;;;14925:1;14888:20;;;:5;14894:13;14888:20;;;;:34;;;-1:-1:-1;;;14888:34:0;;;14880:47;;;;;;14977:13;;-1:-1:-1;;;;;14971:20:0;;;;;;;:5;14977:13;14971:20;;;;:26;;;;;-1:-1:-1;;;14971:26:0;;;;;;14977:10;;-1:-1:-1;;;;;14955:42:0;;;:13;;;;;;;;:42;;;;15034:13;;15028:20;;;;;;:5;:20;;;;;;;:26;;;;;15012:13;;;:42;15091:13;;15085:20;;;;;;;;;;;15023:1;15085:34;;-1:-1:-1;;;15085:34:0;;;;;;15034:10;;-1:-1:-1;;;;;15069:50:0;;;:13;;;;;;;;:50;;;;15158:13;;15152:20;;;;;;:5;:20;;;;;;;:33;;;-1:-1:-1;;;;;15152:33:0;;;15134:51;;15224:13;;15218:20;;;;;;;;;;:32;;;;15200:15;;;:50;13824:1438;15283:13;;-1:-1:-1;;;;;15277:20:0;;;;;:5;15283:13;15277:20;;;;:27;;;-1:-1:-1;;;15277:27:0;;;;15274:1428;;15423:10;15434:1;15423:13;;;;-1:-1:-1;;;;;15423:16:0;15438:1;15423:16;:73;;;-1:-1:-1;15443:10:0;15454:1;15443:13;;;;-1:-1:-1;;;;;15443:16:0;15458:1;15443:16;:53;;;;-1:-1:-1;15481:15:0;;15464;;-1:-1:-1;;;;;15464:32:0;;;15481:15;;15464:32;15443:53;15420:560;;;15517:14;;;;;;;15516:52;;15567:1;15553:13;;;:15;;;15516:52;;;15549:1;15535:13;;;:15;;;15516:52;;15420:560;;;15742:9;;15695:11;:28;15707:12;15720:1;15707:15;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15695:28:0;;;;;;;;;;;;;;;;-1:-1:-1;15695:28:0;;;15724:15;;;;;15695:45;;;;;;;;:56;;15687:65;;;;;;15791:1;15777:13;;;:15;15832:13;;;;-1:-1:-1;;;;;15832:16:0;15847:1;15832:16;:54;;;;-1:-1:-1;15871:15:0;;15852;;;;-1:-1:-1;;;;;15852:34:0;;;15871:15;;15852:34;15832:54;15829:136;;;15935:9;;15921:24;;:9;;:24;:13;:24;:::i;:::-;15910:35;;15829:136;16232:15;;;;-1:-1:-1;;;;;16066:181:0;:164;16073:139;16083:23;16092:10;16103:1;16092:13;;16083:23;16107:32;16123:12;16136:1;16123:15;;16107:32;16140:23;16149:10;16160:1;16149:13;;16140:23;16164;16173:10;16184:1;16173:13;;16164:23;16188;16197:10;16208:1;16197:13;;16073:139;16213:4;;;;16218:5;;;;:2;16227:1;16224:5;;16066:164;-1:-1:-1;;;;;16066:181:0;;16058:190;;;;;;16279:13;;;;-1:-1:-1;;;;;16263:29:0;:13;;;:29;15274:1428;;;16347:13;;-1:-1:-1;;;;;16341:20:0;;;16378:1;16341:20;;;:5;16347:13;16341:20;;;;:34;;;-1:-1:-1;;;16341:34:0;;;16333:47;;;;;;16417:13;;-1:-1:-1;;;;;16411:20:0;;;;;;;:5;16417:13;16411:20;;;;;;;:26;;;;;-1:-1:-1;;;16411:26:0;;;;;;16395:13;;;:42;16474:13;;16468:20;;;;;;;;;;:26;;;;;;16452:13;;;;:42;;;;16531:13;;16525:20;;;;;;;;;;16463:1;16525:34;;;;;;;;16509:13;;;:50;16598:13;;16592:20;;;;;;;;;;:33;;;-1:-1:-1;;;;;16592:33:0;;;16574:15;;;:51;16664:13;;16658:20;;;;;;;;;;;;:32;;;;16640:15;;;:50;15274:1428;16714:19;16765:10;16776:1;16765:13;;;;-1:-1:-1;;;;;16749:29:0;:10;16760:1;16749:13;;;;-1:-1:-1;;;;;16749:29:0;;16746:155;;;-1:-1:-1;16808:13:0;;;;16746:155;;;-1:-1:-1;16876:13:0;;;;16746:155;16958:10;16969:1;16958:13;;;;-1:-1:-1;;;;;16958:18:0;16975:1;16958:18;16955:527;;;17063:15;;-1:-1:-1;;;;;17050:29:0;;;;;:12;17063:15;17050:29;;;;;;:38;;;17034:13;;;;17004:85;;-1:-1:-1;;;;;17050:38:0;;;;17019:29;;17018:70;17050:38;17018:70;;;;17004:9;;-1:-1:-1;;;;;17018:70:0;;17004:85;;:13;:85;:::i;:::-;16993:96;-1:-1:-1;17142:26:0;:9;-1:-1:-1;;;;;17142:26:0;;;:13;:26;:::i;:::-;17131:37;;16955:527;;;17281:26;:9;-1:-1:-1;;;;;17281:26:0;;;:13;:26;:::i;:::-;17417:15;;;;;-1:-1:-1;;;;;17404:29:0;;;;;:12;17417:15;17404:29;;;;17430:1;17404:38;;17388:13;;;;17269:38;;-1:-1:-1;17361:82:0;;-1:-1:-1;;;;;17404:38:0;;;;17375:27;;;:67;17404:38;17375:67;;;;17361:9;;-1:-1:-1;;;;;17375:67:0;;17361:82;;:13;:82;:::i;:::-;17349:94;;16955:527;17517:15;;;;;-1:-1:-1;;;;;17505:28:0;;;;;;;:11;:28;;;;;;17534:15;;17505:45;;;;;;;;;;;;:55;-1:-1:-1;17502:133:0;;;17618:5;17611:12;;;;;;;17502:133;17670:15;;;;-1:-1:-1;;;;;17658:28:0;;;;;;;:11;17670:15;17658:28;;;;;;;17687:15;;;;17658:45;;;;;;;;;;:55;-1:-1:-1;17655:132:0;;;17770:5;17763:12;;;;;;;17655:132;17818:13;;;;;17802;;;;-1:-1:-1;;;;;17802:29:0;;;;;;17799:1791;;;17856:13;;-1:-1:-1;;;;;17850:20:0;;;;;:5;17856:13;17850:20;;;;:27;;;;;-1:-1:-1;;;17850:27:0;;;;:30;17847:550;;17935:15;;;;;17906:13;;-1:-1:-1;;;;;17900:20:0;;;;;;;:5;17935:15;17900:20;;;;;:50;;-1:-1:-1;;;;;;17900:50:0;-1:-1:-1;;;;;17900:50:0;;;;;;;;;;17998:13;;;;17975;;17969:20;;;;;;;;:26;;;;:42;;-1:-1:-1;;;;;;17969:42:0;;;;;;;;;;;;17906:13;;18059;;;;;;;;;18036;;-1:-1:-1;;;;;18030:20:0;;;;;;;:5;:20;;;;;;;:26;;:42;;;;;-1:-1:-1;;;18030:42:0;;;;;;;;18036:10;-1:-1:-1;18124:13:0;;;;;;;;;18097;;-1:-1:-1;;;;;18091:20:0;;;;;;;:5;:20;;;;;;;:29;;:46;;-1:-1:-1;;;;;;18091:46:0;;;;;;;;18097:13;;18194;;;;;;;;;18162;;-1:-1:-1;;;;;18156:20:0;;;;;;;:5;:20;;;;;;;:34;;:51;;;;;-1:-1:-1;;;18156:51:0;;;;;;;;18262:12;18275:1;18262:15;;;;;;;;;18232:13;;-1:-1:-1;;;;;18226:20:0;;;;;:5;:20;;;;;;;:33;;;;:51;;-1:-1:-1;;;;;;18226:51:0;-1:-1:-1;;;;;18226:51:0;;;;;;;;;;:33;;:5;18232:13;18226:20;18302:13;;;;-1:-1:-1;;;;;18296:20:0;;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;17847:550;18417:13;;-1:-1:-1;;;;;18411:20:0;;;;;;;:5;18417:13;18411:20;;;;;:34;;;;:48;;-1:-1:-1;;;18411:48:0;;;;;;;;;;;;;;;;;18481:13;;18475:20;;;;;;;:34;:36;;;;;;;;-1:-1:-1;;18526:11:0;;18481:13;18411:20;18538:13;;;;;-1:-1:-1;;;;;18526:26:0;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17799:1791;;;18605:13;;;;;18589;;;;-1:-1:-1;;;;;18589:29:0;;;;;;18586:1004;;;18643:13;;-1:-1:-1;;;;;18637:20:0;;;;;:5;18643:13;18637:20;;;;:27;;;;;-1:-1:-1;;;18637:27:0;;;;:30;18634:559;;18724:15;;;;;18695:13;;-1:-1:-1;;;;;18689:20:0;;;;;;;:5;:20;;;;;;;:50;;-1:-1:-1;;;;;;18689:50:0;-1:-1:-1;;;;;18689:50:0;;;;;;;;;;18787:13;;;;18764;;18758:20;;;;;;;;:26;;;;:42;;-1:-1:-1;;;;;;18758:42:0;;;;;;;;;;;;18695:13;;18848;;;;;;;;;18825;;-1:-1:-1;;;;;18819:20:0;;;;;;;:5;:20;;;;;;;:26;;:42;;;;;-1:-1:-1;;;18819:42:0;;;;;;;;18825:10;-1:-1:-1;18913:13:0;;;;;;;;;18886;;-1:-1:-1;;;;;18880:20:0;;;;;;;:5;:20;;;;;;;:29;;:46;;-1:-1:-1;;;;;;18880:46:0;;;;;;;;18886:13;;18984;;;;;;;;;18951;;-1:-1:-1;;;;;18945:20:0;;;;;;;:5;:20;;;;;;:34;;:52;;;;;-1:-1:-1;;;18945:52:0;;;;;;;;;;;19052:12;;:15;;;;;;;;;19022:13;;-1:-1:-1;;;;;19016:20:0;;;;;:5;:20;;;;;;;:33;;;;:51;;-1:-1:-1;;;;;;19016:51:0;-1:-1:-1;;;;;19016:51:0;;;;;;;;;;:33;;:5;19022:13;19016:20;19092:13;;;;-1:-1:-1;;;;;19086:20:0;;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;18634:559;19213:13;;-1:-1:-1;;;;;19207:20:0;;;;;;;:5;19213:13;19207:20;;;;;:34;;;;:48;;-1:-1:-1;;;19207:48:0;;;;;;;;;;;;;;;;;19276:13;;19270:20;;;;;;;:34;:36;;;;;;;;-1:-1:-1;;19321:11:0;;19276:13;19207:20;19333:13;;18586:1004;19401:13;;-1:-1:-1;;;;;19395:20:0;;;19430:1;19395:20;;;:5;19401:13;19395:20;;;;;;;:34;;;;:36;;;;;;19452:13;;19446:20;;;;;;;:34;:36;;;;;;19509:13;;19497:26;;;;:11;:26;;;;;;:33;;-1:-1:-1;;19497:33:0;;;-1:-1:-1;19497:33:0;;;;;;19557:13;;19545:26;;;;;;;:33;;;;;;;;18586:1004;-1:-1:-1;;;;;19633:34:0;;;:13;;;;:34;;;;19712;;;:13;;;:34;19782:13;;;;:16;19797:1;19782:16;19779:2012;;;19972:10;19983:1;19972:13;;;;-1:-1:-1;;;;;19972:16:0;19987:1;19972:16;:54;;;;-1:-1:-1;20011:15:0;;19992;;-1:-1:-1;;;;;19992:34:0;;;20011:15;;19992:34;19972:54;19969:1811;;;20072:9;;20058:24;;:9;;:24;:13;:24;:::i;:::-;20046:36;-1:-1:-1;20115:40:0;20122:10;20133:1;20122:13;;;;;20144:9;;20115:6;:40::i;:::-;-1:-1:-1;;;;;20101:54:0;:13;;;:54;20311:9;;20261:60;;:11;:28;20273:12;20286:1;20273:15;;;;;;;;;;-1:-1:-1;;;;;20261:28:0;;;;;;;;;;;;;;;;-1:-1:-1;20261:28:0;;;20290:15;;;;;20261:45;;;;;;;;;:60;:49;:60;:::i;:::-;20226:15;;;;;-1:-1:-1;;;;;20214:28:0;;;;;;;:11;:28;;;;;;20243:15;;;;;20214:45;;;;;;;;:107;;;;20458:9;;20430:5;;;;20418:18;;:11;:18;;;;;20437:15;;;;;20418:35;;;;;;;;;;:50;;:39;:50::i;:::-;20381:18;20393:5;;-1:-1:-1;;;;;20393:5:0;;;20381:18;;:11;:18;;;;;;;;20400:15;;;;;20381:35;;;;;;;:87;19969:1811;;;20620:10;20631:1;20620:13;;;;-1:-1:-1;;;;;20620:16:0;20635:1;20620:16;:75;;;-1:-1:-1;20640:10:0;20651:1;20640:13;;;;-1:-1:-1;;;;;20640:16:0;20655:1;20640:16;:55;;;;-1:-1:-1;20680:15:0;;20661;;;;-1:-1:-1;;;;;20661:34:0;;;20680:15;;20661:34;20640:55;20617:1163;;;20779:9;;20764:13;;;;-1:-1:-1;;;;;20764:24:0;;20761:677;;20828:40;20835:10;20846:1;20835:13;;20828:40;-1:-1:-1;;;;;20812:56:0;:13;;;:56;20969:9;;20929:18;20941:5;;-1:-1:-1;;;;;20941:5:0;;;20929:18;;:11;20812:13;20929:18;;;;;;;20948:15;;;;;20929:35;;;;;;;;:50;;:39;:50::i;:::-;20891:18;20903:5;;-1:-1:-1;;;;;20903:5:0;;;20891:18;;:11;:18;;;;;;;;20910:15;;;;;20891:35;;;;;;;:88;20761:677;;;21283:54;21323:10;21334:1;21323:13;;;;;;;;;;21283:18;21295:5;;-1:-1:-1;;;;;21295:5:0;;;21283:18;;:11;:18;;;;;;21302:15;;;;;21283:35;;;;;;;;;;-1:-1:-1;;;;;21283:54:0;;:39;:54;:::i;:::-;21245:18;21257:5;;-1:-1:-1;;;;;21257:5:0;;;21245:18;;:11;:18;;;;;;;;21264:15;;;;;21245:35;;;;;;;:92;;;;21401:13;;;:17;20761:677;20617:1163;;;21648:9;;21598:60;;:11;:28;21610:12;21623:1;21610:15;;21598:60;21563:15;;;;;-1:-1:-1;;;;;21551:28:0;;;;;;;:11;:28;;;;;;21580:15;;;;;21551:45;;;;;;;;:107;;;;21754:9;;21726:5;;;;21714:18;;:11;:18;;;;;21733:15;;;;;21714:35;;;;;;;;;;:50;;:39;:50::i;:::-;21677:18;21689:5;;-1:-1:-1;;;;;21689:5:0;;;21677:18;;:11;:18;;;;;;;;21696:15;;;;;21677:35;;;;;;;:87;20617:1163;21818:10;21829:1;21818:13;;;;-1:-1:-1;;;;;21818:16:0;21833:1;21818:16;21815:2159;;;22007:10;22018:1;22007:13;;;;-1:-1:-1;;;;;22007:16:0;22022:1;22007:16;:54;;;;-1:-1:-1;22046:15:0;;22027;;;;-1:-1:-1;;;;;22027:34:0;;;22046:15;;22027:34;22007:54;22004:1959;;;22107:9;;22093:24;;:9;;:24;:13;:24;:::i;:::-;22081:36;-1:-1:-1;22151:40:0;22158:10;22169:1;22158:13;;22151:40;-1:-1:-1;;;;;22136:55:0;:13;;;:55;22348:9;;;22298:60;;:11;;:28;;22310:12;;:15;;22298:60;22262:15;;;;-1:-1:-1;;;;;22250:28:0;;;;;;;:11;22262:15;22250:28;;;;;;;22279:15;;;;;22250:45;;;;;;;;:108;;;;22275:1;22495:9;22467:5;;;;22455:18;;:11;:18;;;;;22474:15;;;;;22455:35;;;;;;;;;;:50;;:39;:50::i;:::-;22418:18;22430:5;;-1:-1:-1;;;;;22430:5:0;;;22418:18;;:11;:18;;;;;;;;22437:15;;;;;22418:35;;;;;;;:87;22004:1959;;;22659:10;22670:1;22659:13;;;;-1:-1:-1;;;;;22659:16:0;22674:1;22659:16;:74;;;-1:-1:-1;22679:10:0;22690:1;22679:13;;;;-1:-1:-1;;;;;22679:16:0;22694:1;22679:16;:54;;;;-1:-1:-1;22718:15:0;;22699;;-1:-1:-1;;;;;22699:34:0;;;22718:15;;22699:34;22679:54;22656:1307;;;22976:9;;22961:13;;;;-1:-1:-1;;;;;22961:24:0;;22958:641;;23025:40;23032:10;23043:1;23032:13;;23025:40;-1:-1:-1;;;;;23009:56:0;:13;;;:56;23166:9;;23126:18;23138:5;;-1:-1:-1;;;;;23138:5:0;;;23126:18;;:11;23009:13;23126:18;;;;;;;23145:15;;;;;23126:35;;;;;;;;:50;;:39;:50::i;:::-;23088:18;23100:5;;-1:-1:-1;;;;;23100:5:0;;;23088:18;;:11;:18;;;;;;;;23107:15;;;;;23088:35;;;;;;;:88;22958:641;;;23479:54;23519:10;23530:1;23519:13;;23479:54;23442:18;23454:5;;-1:-1:-1;;;;;23454:5:0;;;23442:18;;:11;:18;;;;;;;;23461:15;;;;;23442:35;;;;;;;:91;;;;23564:13;;;:15;22958:641;22656:1307;;;23778:60;23828:9;;23778:11;:28;23790:12;23803:1;23790:15;;;;;;23778:60;23742:15;;;;-1:-1:-1;;;;;23730:28:0;;;;;;;:11;23742:15;23730:28;;;;;;;23759:15;;;;;23730:45;;;;;;;;:108;;;;23755:1;23934:9;23906:5;;;;23894:18;;:11;:18;;;;;23913:15;;;;;23894:35;;;;;;;;;;:50;;:39;:50::i;:::-;23857:18;23869:5;;-1:-1:-1;;;;;23869:5:0;;;23857:18;;:11;:18;;;;;;;;23876:15;;;;;23857:35;;;;;;;:87;22656:1307;24132:15;;;;;-1:-1:-1;;;;;24120:28:0;;;;;:11;:28;;;;;;:60;;24170:9;;24120:28;24132:12;24120:28;24149:15;;;;;-1:-1:-1;;;;;24120:45:0;-1:-1:-1;;;;;24120:45:0;;;;;;;;;;;;;:49;;:60;;;;:::i;:::-;24084:15;;;;;-1:-1:-1;;;;;24072:28:0;;;;;;;:11;:28;;;;;;;24101:15;;24072:45;;;;;;;;;:108;;;;24279:15;;;;24267:28;;;;;;;;;;:60;;24317:9;;24267:28;24084:15;24309:1;24296:15;;24267:60;24231:15;;;;-1:-1:-1;;;;;24219:28:0;;;;;;;:11;24231:15;24219:28;;;;;;;24248:15;;;;24219:45;;;;;;;;;:108;;;;24491:13;;;;24453:15;;;;24441:28;;;;;;;;;:64;;-1:-1:-1;;;;;24441:64:0;;;;24231:15;24261:1;24470:15;;;;;-1:-1:-1;;;;;24441:45:0;-1:-1:-1;;;;;24441:45:0;;;;;;;;;;;;;:49;;:64;;;;:::i;:::-;24405:15;;;;;-1:-1:-1;;;;;24393:28:0;;;;;;;:11;:28;;;;;;;24422:15;;;;24393:45;;;;;;;;;:112;;;;24629:13;;;;24591:15;;;;24579:28;;;;;;;;;;;:64;;-1:-1:-1;;;;;24579:64:0;;24405:15;24393:28;24608:15;;24579:64;24543:15;;;;-1:-1:-1;;;;;24531:28:0;;;;;;;:11;24543:15;24531:28;;;;;;;24560:15;;24531:45;;;;;;;;;:112;-1:-1:-1;24684:4:0;;-1:-1:-1;;;3380:1:0;13288:11408;;;;;;;:::o;2917:41::-;;;;;;;;;;;;;;;:::o;895:153::-;953:7;991:5;;;1014:6;;;;1007:14;;;;1039:1;895:153;-1:-1:-1;;;895:153:0:o;754:129::-;812:7;850:1;845;:6;;838:14;;;;-1:-1:-1;870:5:0;;;754:129::o;12220:482::-;12270:27;12314:7;12310:50;;-1:-1:-1;12338:10:0;;;;;;;;;;;;-1:-1:-1;;;12338:10:0;;;;;;12310:50;12379:2;12370:6;12411:69;12418:6;;12411:69;;12441:5;;12466:2;12461:7;;;;12411:69;;;12490:17;12520:3;12510:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;12510:14:0;87:34:-1;135:17;;-1:-1;12510:14:0;-1:-1:-1;12490:34:0;-1:-1:-1;;;12544:7:0;;12562:103;12569:7;;12562:103;;12626:2;12621;:7;12616:2;:12;12605:25;;12593:4;12598:3;;;;;;;12593:9;;;;;;;;;;;:37;-1:-1:-1;;;;;12593:37:0;;;;;;;;-1:-1:-1;12651:2:0;12645:8;;;;12562:103;;;-1:-1:-1;12689:4:0;12220:482;-1:-1:-1;;;;12220:482:0:o;11719:492::-;11857:42;;;;;;;;;;;-1:-1:-1;;;11857:42:0;;;;11935:13;;11945:2;11935:13;;;11781;11935;;;;;;-1:-1:-1;;;;;11831:14:0;;;11857:42;11781:13;;11935;;;21:6:-1;;104:10;11935:13:0;87:34:-1;135:17;;-1:-1;11935:13:0;11916:32;;-1:-1:-1;;;11959:3:0;11963:1;11959:6;;;;;;;;;;;:12;-1:-1:-1;;;;;11959:12:0;;;;;;;;;-1:-1:-1;;;11982:3:0;11986:1;11982:6;;;;;;;;;;;:12;-1:-1:-1;;;;;11982:12:0;;;;;;;;-1:-1:-1;12010:6:0;12005:170;12026:2;12022:1;:6;12005:170;;;12063:8;12095:1;12078:5;12084:1;12088:2;12084:6;12078:13;;;;;;;;;;-1:-1:-1;;;;;12078:18:0;;;;12072:25;;12063:35;;;;;;;;;;;;;;;;;;12050:3;12056:1;12058;12056:3;12054:1;:5;12050:10;;;;;;;;;;;:48;-1:-1:-1;;;;;12050:48:0;;;;;;;;;12126:8;12141:5;12147:1;12151:2;12147:6;12141:13;;;;;;;12126:37;;12141:13;;;12157:4;12135:27;;12126:37;;;;;;;;;;;;;;12113:3;12119:1;12121;12119:3;12117:1;:5;12113:10;;;;;;;;;;;:50;-1:-1:-1;;;;;12113:50:0;;;;;;;;-1:-1:-1;12030:3:0;;12005:170;;10811:899;10943:13;10968:16;10993:2;10968:28;;11007:16;11032:2;11007:28;;11046:16;11071:2;11046:28;;11085:16;11110:2;11085:28;;11124:16;11149:2;11124:28;;11163:19;11248:3;:10;11235:3;:10;11222:3;:10;11209:3;:10;11196:3;:10;:23;:36;:49;:62;11185:74;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;11185:74:0;87:34:-1;135:17;;-1:-1;11185:74:0;-1:-1:-1;11163:96:0;-1:-1:-1;11163:96:0;11315:6;;11336:58;11357:3;:10;11353:1;:14;11336:58;;;11388:3;11392:1;11388:6;;;;;;;;;;;;;;;;11374;11381:3;;;;;;11374:11;;;;;;;;;;;:20;-1:-1:-1;;;;;11374:20:0;;;;;;;;-1:-1:-1;11369:3:0;;11336:58;;;-1:-1:-1;11410:6:0;11405:58;11426:3;:10;11422:1;:14;11405:58;;;11457:3;11461:1;11457:6;;;;;;;;;;;;;;;;11443;11450:3;;;;;;11443:11;;;;;;;;;;;:20;-1:-1:-1;;;;;11443:20:0;;;;;;;;-1:-1:-1;11438:3:0;;11405:58;;;-1:-1:-1;11479:6:0;11474:58;11495:3;:10;11491:1;:14;11474:58;;;11526:3;11530:1;11526:6;;;;;;;;;;;;;;;;11512;11519:3;;;;;;11512:11;;;;;;;;;;;:20;-1:-1:-1;;;;;11512:20:0;;;;;;;;-1:-1:-1;11507:3:0;;11474:58;;;-1:-1:-1;11548:6:0;11543:58;11564:3;:10;11560:1;:14;11543:58;;;11595:3;11599:1;11595:6;;;;;;;;;;;;;;;;11581;11588:3;;;;;;11581:11;;;;;;;;;;;:20;-1:-1:-1;;;;;11581:20:0;;;;;;;;-1:-1:-1;11576:3:0;;11543:58;;;-1:-1:-1;11617:6:0;11612:58;11633:3;:10;11629:1;:14;11612:58;;;11664:3;11668:1;11664:6;;;;;;;;;;;;;;;;11650;11657:3;;;;;;11650:11;;;;;;;;;;;:20;-1:-1:-1;;;;;11650:20:0;;;;;;;;-1:-1:-1;11645:3:0;;11612:58;;;-1:-1:-1;11695:6:0;;10811:899;-1:-1:-1;;;;;;;;;;;;;10811:899:0:o;9376:1423::-;9526:61;;;;;;;;;;;;;;;;;;9688:14;;9469;;9526:61;9744:2;9732:15;;;9786:6;9776:16;;;9768:25;;;;;;9804:20;9857:6;9875:567;9882:12;;9875:567;;9911:13;9927:19;:6;9938:7;9927:19;:10;:19;:::i;:::-;9911:35;-1:-1:-1;9965:10:0;9961:195;;10015:17;10011:130;;10069:15;:7;10081:2;10069:15;:11;:15;:::i;:::-;10059:25;;10109:8;;;10011:130;10170:14;;;;;10208:30;10219:18;:5;10229:7;10219:18;:9;:18;:::i;:::-;10208:6;;:30;:10;:30;:::i;:::-;10199:39;-1:-1:-1;10263:15:0;:7;10275:2;10263:15;:11;:15;:::i;:::-;10253:25;-1:-1:-1;10301:15:0;:5;10311:4;10301:15;:9;:15;:::i;:::-;10331:14;;;;;10293:23;-1:-1:-1;10293:23:0;10331:14;10388:28;10369:62;;;;10458:17;10454:151;;10507:12;10492:27;;10454:151;;;10567:26;:12;10584:8;10567:26;:16;:26;:::i;:::-;10552:41;;10454:151;10654:12;10646:6;10639:28;10688:13;10731:6;10739:7;10714:33;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;10714::0;;;;;;;;;;-1:-1:-1;10714:33:0;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10714:33:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10714:33:0;;;10704:44;;;;;;10688:60;;10766:25;10776:5;10783:1;10786;10789;10766:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10766:25:0;;-1:-1:-1;;10766:25:0;;;9376:1423;-1:-1:-1;;;;;;;;;;;;9376:1423:0:o;24708:127::-;24770:7;24802:1;-1:-1:-1;;;;;24797:6:0;:1;-1:-1:-1;;;;;24797:6:0;;;24790:14;;;618:128;676:7;702:9;718:1;714;:5;;;;;;;618:128;-1:-1:-1;;;;618:128:0:o;410:200::-;468:7;498:6;494:33;;-1:-1:-1;524:1:0;517:8;;494:33;549:5;;;553:1;549;:5;:1;572:5;;;;;:10;565:18;;;1057:24199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1057:24199:0;;;-1:-1:-1;1057:24199:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://3e90b973b3f0d8948163452d55cfb99d0f629796f5c0583db732844d1fbd9d95
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.