Mumbai Testnet

Contract

0xe9c238201373FA63E402f85Ff7d954782F271ceA

Overview

MATIC Balance

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
Trigger350588242023-05-01 15:27:22409 days ago1682954842IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350588232023-05-01 15:27:20409 days ago1682954840IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350588012023-05-01 15:26:34409 days ago1682954794IN
0xe9c23820...82F271ceA
0 MATIC0.0245121300
Trigger350587962023-05-01 15:26:22409 days ago1682954782IN
0xe9c23820...82F271ceA
0 MATIC0.0245085300
Trigger350587952023-05-01 15:26:20409 days ago1682954780IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350587732023-05-01 15:25:34409 days ago1682954734IN
0xe9c23820...82F271ceA
0 MATIC0.0245121300
Trigger350587682023-05-01 15:25:24409 days ago1682954724IN
0xe9c23820...82F271ceA
0 MATIC0.0150465300
Trigger350587672023-05-01 15:25:20409 days ago1682954720IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350587452023-05-01 15:24:34409 days ago1682954674IN
0xe9c23820...82F271ceA
0 MATIC0.0245121300
Trigger350587392023-05-01 15:24:22409 days ago1682954662IN
0xe9c23820...82F271ceA
0 MATIC0.0245085300
Trigger350587382023-05-01 15:24:20409 days ago1682954660IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350587172023-05-01 15:23:34409 days ago1682954614IN
0xe9c23820...82F271ceA
0 MATIC0.0245121300
Trigger350587112023-05-01 15:23:22409 days ago1682954602IN
0xe9c23820...82F271ceA
0 MATIC0.0150465300
Trigger350587102023-05-01 15:23:20409 days ago1682954600IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350586892023-05-01 15:22:36409 days ago1682954556IN
0xe9c23820...82F271ceA
0 MATIC0.0245121300
Trigger350586832023-05-01 15:22:22409 days ago1682954542IN
0xe9c23820...82F271ceA
0 MATIC0.0245085300
Trigger350586822023-05-01 15:22:20409 days ago1682954540IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350586602023-05-01 15:21:34409 days ago1682954494IN
0xe9c23820...82F271ceA
0 MATIC0.0245121300
Trigger350586552023-05-01 15:21:22409 days ago1682954482IN
0xe9c23820...82F271ceA
0 MATIC0.0150465300
Trigger350586542023-05-01 15:21:20409 days ago1682954480IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350586322023-05-01 15:20:34409 days ago1682954434IN
0xe9c23820...82F271ceA
0 MATIC0.0245121300
Trigger350586262023-05-01 15:20:22409 days ago1682954422IN
0xe9c23820...82F271ceA
0 MATIC0.0245085300
Trigger350586252023-05-01 15:20:20409 days ago1682954420IN
0xe9c23820...82F271ceA
0 MATIC0.0150501300
Trigger350586042023-05-01 15:19:34409 days ago1682954374IN
0xe9c23820...82F271ceA
0 MATIC0.0245121300
Trigger350585982023-05-01 15:19:22409 days ago1682954362IN
0xe9c23820...82F271ceA
0 MATIC0.0150465300
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To Value
350135612023-04-30 12:44:18410 days ago1682858658
0xe9c23820...82F271ceA
0.0002 MATIC
350132102023-04-30 12:31:52410 days ago1682857912
0xe9c23820...82F271ceA
0.00001 MATIC
350131092023-04-30 12:28:18410 days ago1682857698
0xe9c23820...82F271ceA
0.00001 MATIC
350130972023-04-30 12:27:52410 days ago1682857672
0xe9c23820...82F271ceA
0.00001 MATIC
350130972023-04-30 12:27:52410 days ago1682857672
0xe9c23820...82F271ceA
0.00001 MATIC
350130692023-04-30 12:26:52410 days ago1682857612
0xe9c23820...82F271ceA
0.00001 MATIC
350130692023-04-30 12:26:52410 days ago1682857612
0xe9c23820...82F271ceA
0.0002 MATIC
350126662023-04-30 12:12:36410 days ago1682856756
0xe9c23820...82F271ceA
0.0002 MATIC
350126572023-04-30 12:12:18410 days ago1682856738
0xe9c23820...82F271ceA
0.00001 MATIC
350122062023-04-30 11:56:18410 days ago1682855778
0xe9c23820...82F271ceA
0.00001 MATIC
350122062023-04-30 11:56:18410 days ago1682855778
0xe9c23820...82F271ceA
0.00001 MATIC
350121862023-04-30 11:55:36410 days ago1682855736
0xe9c23820...82F271ceA
0.00001 MATIC
350121582023-04-30 11:54:36410 days ago1682855676
0xe9c23820...82F271ceA
0.0000009 MATIC
350121582023-04-30 11:54:36410 days ago1682855676
0xe9c23820...82F271ceA
0.00001455 MATIC
350121582023-04-30 11:54:36410 days ago1682855676
0xe9c23820...82F271ceA
0.00001455 MATIC
350118752023-04-30 11:44:36410 days ago1682855076
0xe9c23820...82F271ceA
0.0000009 MATIC
350118752023-04-30 11:44:36410 days ago1682855076
0xe9c23820...82F271ceA
0.0002091 MATIC
350114722023-04-30 11:30:20410 days ago1682854220
0xe9c23820...82F271ceA
0.00001 MATIC
350113592023-04-30 11:26:18410 days ago1682853978
0xe9c23820...82F271ceA
0.00001 MATIC
350113592023-04-30 11:26:18410 days ago1682853978
0xe9c23820...82F271ceA
0.00001 MATIC
350113592023-04-30 11:26:18410 days ago1682853978
0xe9c23820...82F271ceA
0.00001 MATIC
350113022023-04-30 11:24:18410 days ago1682853858
0xe9c23820...82F271ceA
0.00001 MATIC
350113022023-04-30 11:24:18410 days ago1682853858
0xe9c23820...82F271ceA
0.00001 MATIC
350113022023-04-30 11:24:18410 days ago1682853858
0xe9c23820...82F271ceA
0.00001 MATIC
350112822023-04-30 11:23:36410 days ago1682853816
0xe9c23820...82F271ceA
0.00001 MATIC
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UpVsDownGameV1

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at mumbai.polygonscan.com on 2023-03-20
*/

// File: @openzeppelin/contracts/utils/Context.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contracts/UpVsDownGameV1.sol

pragma solidity >=0.4.22 <0.9.0;

contract UpVsDownGameV1 is Ownable {

  struct BetGroup {
    uint256[] bets;
    address[] addresses;
    string[] avatars;
    string[] countries;
    string[] whiteLabelIds;
    uint256 total;
    uint256 distributedCount;
    uint256 totalDistributed;
  }

  struct Round {
    bool created;
    int32 startPrice;
    int32 endPrice;
    uint256 minBetAmount;
    uint256 maxBetAmount;
    uint256 poolBetsLimit;
    BetGroup upBetGroup;
    BetGroup downBetGroup;
    int64 roundStartTime;
  }

  struct Distribution {
    uint256 fee;
    uint256 totalMinusFee;
    uint256 pending;
  }

  address public gameController;
  mapping(bytes => Round) public pools;
  uint8 public feePercentage = 5;
  address public feeAddress = msg.sender;
  bool public isRunning;
  bytes public notRunningReason;

  // Errors

  error PendingDistributions();

  // Events

  event RoundStarted(bytes poolId, int64 timestamp, int32 price, uint256 minTradeAmount, uint256 maxTradeAmount, uint256 poolTradesLimit, bytes indexed indexedPoolId);
  event RoundEnded(bytes poolId, int64 timestamp, int32 startPrice, int32 endPrice, bytes indexed indexedPoolId);
  event TradePlaced(bytes poolId, address sender, uint256 amount, string prediction, uint256 newTotal, bytes indexed indexedPoolId, address indexed indexedSender, string avatarUrl, string countryCode, int64 roundStartTime, string whiteLabelId);
  event TradeReturned(bytes poolId, address sender, uint256 amount, string whiteLabelId);
  event GameStopped(bytes reason);
  event GameStarted();
  event RoundDistributed(bytes poolId, uint totalWinners, uint from, uint to, int64 timestamp);
  event TradeWinningsSent(bytes poolId, address sender, uint256 tradeAmount, uint256 winningsAmount, address indexed indexedSender, string whiteLabelId);

  // Modifiers

  modifier onlyGameController () {
    require(msg.sender == gameController, 'Only game controller can do this');
    _;
  }

  modifier onlyOpenPool (bytes calldata poolId) {
    require(isPoolOpen(poolId), 'This pool has a round in progress');
    _;
  }

  modifier onlyGameRunning () {
    require(isRunning, 'The game is not running');
    _;
  }

  modifier onlyPoolExists (bytes calldata poolId) {
    require(pools[poolId].created == true, 'Pool does not exist');
    _;
  }

  constructor(address newGameController) {
    gameController = newGameController;
  }

  // Methods

  function changeGameControllerAddress(address newGameController) public onlyOwner {
    gameController = newGameController;
  }

  function changeGameFeePercentage(uint8 newFeePercentage) public onlyOwner {
    feePercentage = newFeePercentage;
  }

  function changeGameFeeAddress(address newFeeAddress) public onlyOwner {
    feeAddress = newFeeAddress;
  }

  function stopGame(bytes calldata reason) public onlyOwner {
    isRunning = false;
    notRunningReason = reason;
    emit GameStopped(reason);
  }

  function startGame() public onlyOwner {
    isRunning = true;
    notRunningReason = '';
    emit GameStarted();
  }

  function createPool(bytes calldata poolId, uint256 minBetAmount , uint256 maxBetAmount, uint256 poolBetsLimit) public onlyGameController {
    pools[poolId].created = true;
    pools[poolId].minBetAmount = minBetAmount;
    pools[poolId].maxBetAmount = maxBetAmount;
    pools[poolId].poolBetsLimit = poolBetsLimit;
  }

  function trigger(
    bytes calldata poolId,
    int64 timeMS,
    int32 price,
    uint32 batchSize
  ) public onlyGameController onlyPoolExists(poolId) {
    Round storage currentRound = pools[poolId];

    if(isPoolOpen(poolId)) {
      require(isRunning, 'The game is not running, rounds can only be ended at this point');
      currentRound.startPrice = price;
      currentRound.roundStartTime = timeMS;
    
      emit RoundStarted(poolId, timeMS, currentRound.startPrice, currentRound.minBetAmount, currentRound.maxBetAmount, currentRound.poolBetsLimit, poolId);
    } else if (currentRound.endPrice == 0) {
      currentRound.endPrice = price;

      emit RoundEnded(poolId, timeMS, currentRound.startPrice, currentRound.endPrice, poolId);

      distribute(poolId, batchSize, timeMS);
    } else {
      revert PendingDistributions();
    }
  }

  function returnBets (
    bytes calldata poolId,
    BetGroup storage group,
    uint32 batchSize
  ) private {
    uint256 pending = group.bets.length - group.distributedCount;
    uint256 limit = pending > batchSize ? batchSize : pending;
    uint256 to = group.distributedCount + limit;

    for (uint i = group.distributedCount; i < to; i ++) {
      sendEther(group.addresses[i], group.bets[i]);
      emit TradeReturned(poolId, group.addresses[i], group.bets[i], group.whiteLabelIds[i]);
    }

    group.distributedCount = to;
  }

  function distribute (
    bytes calldata poolId,
    uint32 batchSize,
    int64 timeMS
  ) public onlyGameController onlyPoolExists(poolId) {
    Round storage round = pools[poolId];

    if (round.upBetGroup.bets.length == 0 || round.downBetGroup.bets.length == 0) {
      BetGroup storage returnGroup = round.downBetGroup.bets.length == 0 ? round.upBetGroup : round.downBetGroup;

      uint fromReturn = returnGroup.distributedCount;
      returnBets(poolId, returnGroup, batchSize);
      emit RoundDistributed(poolId, returnGroup.bets.length, fromReturn, returnGroup.distributedCount,timeMS);

      if (returnGroup.distributedCount == returnGroup.bets.length) {
        clearPool(poolId);
      }
      return;
    }


    BetGroup storage winners = round.downBetGroup;
    BetGroup storage losers = round.upBetGroup;

    if (round.startPrice < round.endPrice) {
      winners = round.upBetGroup;
      losers = round.downBetGroup;
    }

    Distribution memory dist = calculateDistribution(winners, losers);
    uint256 limit = dist.pending > batchSize ? batchSize : dist.pending;
    uint256 to = winners.distributedCount + limit;

    for (uint i = winners.distributedCount; i < to; i++) {
      uint256 winnings = ((winners.bets[i] * 100 / winners.total) * dist.totalMinusFee / 100);
      sendEther(winners.addresses[i], winnings + winners.bets[i]);
      emit TradeWinningsSent(poolId, winners.addresses[i], winners.bets[i], winnings, winners.addresses[i], winners.whiteLabelIds[i]);
      winners.totalDistributed = winners.totalDistributed + winnings;
    }

    emit RoundDistributed(poolId, winners.bets.length, winners.distributedCount, to, timeMS);

    winners.distributedCount = to;
    if (winners.distributedCount == winners.bets.length) {
      sendEther(feeAddress, dist.fee + dist.totalMinusFee - winners.totalDistributed);
      clearPool(poolId);
    }
  }

  function calculateDistribution (
    BetGroup storage winners,
    BetGroup storage losers
  ) private view returns (Distribution memory) {
    uint256 fee = feePercentage * losers.total / 100;
    uint256 pending = winners.bets.length - winners.distributedCount;
    return Distribution({
      fee: fee,
      totalMinusFee: losers.total - fee,
      pending: pending
    });
  }

  function clearPool (
    bytes calldata poolId
  ) private {
    delete pools[poolId].upBetGroup;
    delete pools[poolId].downBetGroup;
    delete pools[poolId].startPrice;
    delete pools[poolId].endPrice;
  }

  function hasPendingDistributions(
    bytes calldata poolId
  ) public view returns (bool) {
    return (pools[poolId].upBetGroup.bets.length + pools[poolId].downBetGroup.bets.length) > 0;
  }

  function isPoolOpen(
    bytes calldata poolId
  ) public view returns (bool) {
    return pools[poolId].startPrice == 0;
  }

  function addBet (
    BetGroup storage betGroup,
    uint256 amount,
    string calldata avatar,
    string calldata countryCode,
    string calldata whiteLabelId
  ) private returns (uint256) {
    betGroup.bets.push(amount);
    betGroup.addresses.push(msg.sender);
    betGroup.avatars.push(avatar);
    betGroup.countries.push(countryCode);
    betGroup.whiteLabelIds.push(whiteLabelId);
    betGroup.total += amount;
    return betGroup.total;
  }

  struct makeTradeStruct{
    bytes poolId;
    string avatarUrl;
    string countryCode;
    bool upOrDown;
    string whiteLabelId;
  }

  struct userDataStruct{
      string avatar;
      string countryCode;
      string whiteLabelId;
      int64 roundStartTime;
    }

  function makeTrade(
    makeTradeStruct calldata userTrade
  ) public payable onlyOpenPool(userTrade.poolId) onlyGameRunning onlyPoolExists(userTrade.poolId) {
    require(msg.value > 0, "Needs to send Matic to trade");
    require(msg.value >= pools[userTrade.poolId].minBetAmount, "Trade amount should be higher than the minimum");
    require(msg.value <= pools[userTrade.poolId].maxBetAmount, "Trade amount should be lower than the maximum");
    uint256 newTotal;

    if (userTrade.upOrDown) {
      require(pools[userTrade.poolId].upBetGroup.bets.length <= pools[userTrade.poolId].poolBetsLimit-1,"Pool is full, wait for next round");
      newTotal = addBet(pools[userTrade.poolId].upBetGroup, msg.value, userTrade.avatarUrl, userTrade.countryCode, userTrade.whiteLabelId);
    } else {
      require(pools[userTrade.poolId].downBetGroup.bets.length <= pools[userTrade.poolId].poolBetsLimit-1,"Pool is full, wait for next round");
      newTotal = addBet(pools[userTrade.poolId].downBetGroup, msg.value, userTrade.avatarUrl, userTrade.countryCode, userTrade.whiteLabelId);
    }

    userDataStruct memory userTradeData;
    userTradeData.avatar = userTrade.avatarUrl;
    userTradeData.countryCode = userTrade.countryCode;
    userTradeData.whiteLabelId = userTrade.whiteLabelId;
    userTradeData.roundStartTime = pools[userTrade.poolId].roundStartTime;
    
    emit TradePlaced(userTrade.poolId, msg.sender, msg.value, (userTrade.upOrDown) ? "UP":"DOWN", newTotal, 
    userTrade.poolId, msg.sender, userTradeData.avatar, userTradeData.countryCode, 
    userTradeData.roundStartTime, userTradeData.whiteLabelId);
  }

  function sendEther (
    address to, 
    uint256 amount
  ) private {
    (bool sent, bytes memory data) = payable(to).call{gas: 0, value: amount}("");
    require(sent, "Couldn't send ether");
  } 
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"newGameController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"PendingDistributions","type":"error"},{"anonymous":false,"inputs":[],"name":"GameStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"GameStopped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"totalWinners","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"from","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"to","type":"uint256"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"}],"name":"RoundDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"},{"indexed":false,"internalType":"int32","name":"startPrice","type":"int32"},{"indexed":false,"internalType":"int32","name":"endPrice","type":"int32"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"}],"name":"RoundEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"int64","name":"timestamp","type":"int64"},{"indexed":false,"internalType":"int32","name":"price","type":"int32"},{"indexed":false,"internalType":"uint256","name":"minTradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolTradesLimit","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"}],"name":"RoundStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"prediction","type":"string"},{"indexed":false,"internalType":"uint256","name":"newTotal","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"indexedPoolId","type":"bytes"},{"indexed":true,"internalType":"address","name":"indexedSender","type":"address"},{"indexed":false,"internalType":"string","name":"avatarUrl","type":"string"},{"indexed":false,"internalType":"string","name":"countryCode","type":"string"},{"indexed":false,"internalType":"int64","name":"roundStartTime","type":"int64"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"}],"name":"TradePlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"}],"name":"TradeReturned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"poolId","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tradeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winningsAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"indexedSender","type":"address"},{"indexed":false,"internalType":"string","name":"whiteLabelId","type":"string"}],"name":"TradeWinningsSent","type":"event"},{"inputs":[{"internalType":"address","name":"newGameController","type":"address"}],"name":"changeGameControllerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeAddress","type":"address"}],"name":"changeGameFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newFeePercentage","type":"uint8"}],"name":"changeGameFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"uint256","name":"minBetAmount","type":"uint256"},{"internalType":"uint256","name":"maxBetAmount","type":"uint256"},{"internalType":"uint256","name":"poolBetsLimit","type":"uint256"}],"name":"createPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"uint32","name":"batchSize","type":"uint32"},{"internalType":"int64","name":"timeMS","type":"int64"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gameController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"}],"name":"hasPendingDistributions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"}],"name":"isPoolOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRunning","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"string","name":"avatarUrl","type":"string"},{"internalType":"string","name":"countryCode","type":"string"},{"internalType":"bool","name":"upOrDown","type":"bool"},{"internalType":"string","name":"whiteLabelId","type":"string"}],"internalType":"struct UpVsDownGameV1.makeTradeStruct","name":"userTrade","type":"tuple"}],"name":"makeTrade","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"notRunningReason","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"pools","outputs":[{"internalType":"bool","name":"created","type":"bool"},{"internalType":"int32","name":"startPrice","type":"int32"},{"internalType":"int32","name":"endPrice","type":"int32"},{"internalType":"uint256","name":"minBetAmount","type":"uint256"},{"internalType":"uint256","name":"maxBetAmount","type":"uint256"},{"internalType":"uint256","name":"poolBetsLimit","type":"uint256"},{"components":[{"internalType":"uint256[]","name":"bets","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"string[]","name":"avatars","type":"string[]"},{"internalType":"string[]","name":"countries","type":"string[]"},{"internalType":"string[]","name":"whiteLabelIds","type":"string[]"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"distributedCount","type":"uint256"},{"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"internalType":"struct UpVsDownGameV1.BetGroup","name":"upBetGroup","type":"tuple"},{"components":[{"internalType":"uint256[]","name":"bets","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"string[]","name":"avatars","type":"string[]"},{"internalType":"string[]","name":"countries","type":"string[]"},{"internalType":"string[]","name":"whiteLabelIds","type":"string[]"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"distributedCount","type":"uint256"},{"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"internalType":"struct UpVsDownGameV1.BetGroup","name":"downBetGroup","type":"tuple"},{"internalType":"int64","name":"roundStartTime","type":"int64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"stopGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"poolId","type":"bytes"},{"internalType":"int64","name":"timeMS","type":"int64"},{"internalType":"int32","name":"price","type":"int32"},{"internalType":"uint32","name":"batchSize","type":"uint32"}],"name":"trigger","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526005600360006101000a81548160ff021916908360ff16021790555033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006e57600080fd5b5060405162004a5e38038062004a5e833981810160405281019062000094919062000232565b620000b4620000a8620000fc60201b60201c565b6200010460201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000264565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001fa82620001cd565b9050919050565b6200020c81620001ed565b81146200021857600080fd5b50565b6000815190506200022c8162000201565b92915050565b6000602082840312156200024b576200024a620001c8565b5b60006200025b848285016200021b565b91505092915050565b6147ea80620002746000396000f3fe60806040526004361061011f5760003560e01c80638da5cb5b116100a0578063d65ab5f211610064578063d65ab5f2146103ba578063e4709969146103d1578063eab79b7d146103fa578063f2fde38b14610423578063f68256a81461044c5761011f565b80638da5cb5b146102e9578063a001ecdd14610314578063a7c3324d1461033f578063a9b99af514610368578063d4c770cf146103915761011f565b806341275358116100e75780634127535814610237578063595dc897146102625780636518a0a91461028b578063715018a6146102b657806381196ae2146102cd5761011f565b80630c2f915e146101245780631d0d625b146101615780632014e5d11461018a57806330efabd4146101b55780633fafac92146101f2575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190612f1c565b610477565b6040516101589190612f84565b60405180910390f35b34801561016d57600080fd5b5061018860048036038101906101839190612ffd565b6104e1565b005b34801561019657600080fd5b5061019f6105a1565b6040516101ac9190612f84565b60405180910390f35b3480156101c157600080fd5b506101dc60048036038101906101d79190612f1c565b6105b4565b6040516101e99190612f84565b60405180910390f35b3480156101fe57600080fd5b506102196004803603810190610214919061316b565b6105f4565b60405161022e99989796959493929190613597565b60405180910390f35b34801561024357600080fd5b5061024c610dc0565b6040516102599190613641565b60405180910390f35b34801561026e57600080fd5b5061028960048036038101906102849190612ffd565b610de6565b005b34801561029757600080fd5b506102a0610ea6565b6040516102ad91906136b1565b60405180910390f35b3480156102c257600080fd5b506102cb610f34565b005b6102e760048036038101906102e291906136f7565b610fbc565b005b3480156102f557600080fd5b506102fe61171a565b60405161030b9190613641565b60405180910390f35b34801561032057600080fd5b50610329611743565b604051610336919061375c565b60405180910390f35b34801561034b57600080fd5b50610366600480360381019061036191906137df565b611756565b005b34801561037457600080fd5b5061038f600480360381019061038a919061387f565b611ce1565b005b34801561039d57600080fd5b506103b860048036038101906103b39190613933565b612047565b005b3480156103c657600080fd5b506103cf6120e1565b005b3480156103dd57600080fd5b506103f860048036038101906103f3919061398c565b6121cc565b005b34801561040657600080fd5b50610421600480360381019061041c9190612f1c565b612317565b005b34801561042f57600080fd5b5061044a60048036038101906104459190612ffd565b6123fd565b005b34801561045857600080fd5b506104616124f5565b60405161046e9190613641565b60405180910390f35b6000806002848460405161048c929190613a44565b9081526020016040518091039020600c0160000180549050600285856040516104b6929190613a44565b9081526020016040518091039020600401600001805490506104d89190613a8c565b11905092915050565b6104e961251b565b73ffffffffffffffffffffffffffffffffffffffff1661050761171a565b73ffffffffffffffffffffffffffffffffffffffff161461055d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055490613b3f565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360159054906101000a900460ff1681565b600080600284846040516105c9929190613a44565b908152602001604051809103902060000160019054906101000a900460030b60030b14905092915050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460030b908060000160059054906101000a900460030b908060010154908060020154908060030154908060040160405180610100016040529081600082018054806020026020016040519081016040528092919081815260200182805480156106c857602002820191906000526020600020905b8154815260200190600101908083116106b4575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561075657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161070c575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156108305783829060005260206000200180546107a390613b8e565b80601f01602080910402602001604051908101604052809291908181526020018280546107cf90613b8e565b801561081c5780601f106107f15761010080835404028352916020019161081c565b820191906000526020600020905b8154815290600101906020018083116107ff57829003601f168201915b505050505081526020019060010190610784565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561090957838290600052602060002001805461087c90613b8e565b80601f01602080910402602001604051908101604052809291908181526020018280546108a890613b8e565b80156108f55780601f106108ca576101008083540402835291602001916108f5565b820191906000526020600020905b8154815290600101906020018083116108d857829003601f168201915b50505050508152602001906001019061085d565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156109e257838290600052602060002001805461095590613b8e565b80601f016020809104026020016040519081016040528092919081815260200182805461098190613b8e565b80156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b505050505081526020019060010190610936565b50505050815260200160058201548152602001600682015481526020016007820154815250509080600c016040518061010001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610a6857602002820191906000526020600020905b815481526020019060010190808311610a54575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610af657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610aac575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610bd0578382906000526020600020018054610b4390613b8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6f90613b8e565b8015610bbc5780601f10610b9157610100808354040283529160200191610bbc565b820191906000526020600020905b815481529060010190602001808311610b9f57829003601f168201915b505050505081526020019060010190610b24565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610ca9578382906000526020600020018054610c1c90613b8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890613b8e565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b505050505081526020019060010190610bfd565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610d82578382906000526020600020018054610cf590613b8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2190613b8e565b8015610d6e5780601f10610d4357610100808354040283529160200191610d6e565b820191906000526020600020905b815481529060010190602001808311610d5157829003601f168201915b505050505081526020019060010190610cd6565b5050505081526020016005820154815260200160068201548152602001600782015481525050908060140160009054906101000a900460070b905089565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dee61251b565b73ffffffffffffffffffffffffffffffffffffffff16610e0c61171a565b73ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990613b3f565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60048054610eb390613b8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610edf90613b8e565b8015610f2c5780601f10610f0157610100808354040283529160200191610f2c565b820191906000526020600020905b815481529060010190602001808311610f0f57829003601f168201915b505050505081565b610f3c61251b565b73ffffffffffffffffffffffffffffffffffffffff16610f5a61171a565b73ffffffffffffffffffffffffffffffffffffffff1614610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa790613b3f565b60405180910390fd5b610fba6000612523565b565b808060000190610fcc9190613bcf565b610fd682826105b4565b611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613ca4565b60405180910390fd5b600360159054906101000a900460ff16611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90613d10565b60405180910390fd5b8280600001906110749190613bcf565b600115156002838360405161108a929190613a44565b908152602001604051809103902060000160009054906101000a900460ff161515146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290613d7c565b60405180910390fd5b6000341161112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112590613de8565b60405180910390fd5b60028580600001906111409190613bcf565b60405161114e929190613a44565b9081526020016040518091039020600101543410156111a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119990613e7a565b60405180910390fd5b60028580600001906111b49190613bcf565b6040516111c2929190613a44565b908152602001604051809103902060020154341115611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90613f0c565b60405180910390fd5b600085606001602081019061122b9190613f58565b1561135857600160028780600001906112449190613bcf565b604051611252929190613a44565b90815260200160405180910390206003015461126e9190613f85565b60028780600001906112809190613bcf565b60405161128e929190613a44565b90815260200160405180910390206004016000018054905011156112e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de9061402b565b60405180910390fd5b61135160028780600001906112fc9190613bcf565b60405161130a929190613a44565b90815260200160405180910390206004013488806020019061132c919061404b565b8a806040019061133c919061404b565b8c806080019061134c919061404b565b6125e7565b905061147c565b6001600287806000019061136c9190613bcf565b60405161137a929190613a44565b9081526020016040518091039020600301546113969190613f85565b60028780600001906113a89190613bcf565b6040516113b6929190613a44565b9081526020016040518091039020600c0160000180549050111561140f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114069061402b565b60405180910390fd5b61147960028780600001906114249190613bcf565b604051611432929190613a44565b9081526020016040518091039020600c0134888060200190611454919061404b565b8a8060400190611464919061404b565b8c8060800190611474919061404b565b6125e7565b90505b611484612be1565b868060200190611494919061404b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081600001819052508680604001906114ef919061404b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050816020018190525086806080019061154a919061404b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050816040018190525060028780600001906115a79190613bcf565b6040516115b5929190613a44565b908152602001604051809103902060140160009054906101000a900460070b816060019060070b908160070b815250503373ffffffffffffffffffffffffffffffffffffffff1687806000019061160c9190613bcf565b60405161161a929190613a44565b60405180910390207f68f6fc9b4292a4019c38f766d951dada112bf514a9fa2245e113dd0d72f286158980600001906116539190613bcf565b33348d60600160208101906116689190613f58565b6116a7576040518060400160405280600481526020017f444f574e000000000000000000000000000000000000000000000000000000008152506116de565b6040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152505b8989600001518a602001518b606001518c604001516040516117099a99989796959493929190614114565b60405180910390a350505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd90614212565b60405180910390fd5b838360011515600283836040516117fe929190613a44565b908152602001604051809103902060000160009054906101000a900460ff1615151461185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185690613d7c565b60405180910390fd5b600060028787604051611873929190613a44565b908152602001604051809103902090506000816004016000018054905014806118a65750600081600c0160000180549050145b156119555760008082600c0160000180549050146118c75781600c016118cc565b816004015b90506000816006015490506118e38989848a612767565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f74898984600001805490508486600601548b60405161192796959493929190614232565b60405180910390a181600001805490508260060154141561194d5761194c8989612915565b5b505050611cd9565b600081600c01905060008260040190508260000160059054906101000a900460030b60030b8360000160019054906101000a900460030b60030b12156119a25782600401915082600c0190505b60006119ae8383612aa1565b905060008863ffffffff168260400151116119cd5781604001516119d5565b8863ffffffff165b905060008185600601546119e99190613a8c565b90506000856006015490505b81811015611c1057600060648560200151886005015460648a6000018681548110611a2357611a2261428e565b5b9060005260206000200154611a3891906142bd565b611a429190614346565b611a4c91906142bd565b611a569190614346565b9050611acd876001018381548110611a7157611a7061428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886000018481548110611ab257611ab161428e565b5b906000526020600020015483611ac89190613a8c565b612b2a565b866001018281548110611ae357611ae261428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff31160dbe9f89c709f800e64e885259133c3a7a81d5997e727a35a9bc0896dca8f8f8a6001018681548110611b5d57611b5c61428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b6000018781548110611b9e57611b9d61428e565b5b9060005260206000200154868d6004018981548110611bc057611bbf61428e565b5b90600052602060002001604051611bdc9695949392919061440c565b60405180910390a2808760070154611bf49190613a8c565b8760070181905550508080611c089061446f565b9150506119f5565b507fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748c8c87600001805490508860060154858e604051611c5596959493929190614232565b60405180910390a1808560060181905550846000018054905085600601541415611cd257611cc7600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866007015485602001518660000151611cb89190613a8c565b611cc29190613f85565b612b2a565b611cd18c8c612915565b5b5050505050505b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890614212565b60405180910390fd5b84846001151560028383604051611d89929190613a44565b908152602001604051809103902060000160009054906101000a900460ff16151514611dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de190613d7c565b60405180910390fd5b600060028888604051611dfe929190613a44565b90815260200160405180910390209050611e1888886105b4565b15611f3d57600360159054906101000a900460ff16611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e639061452a565b60405180910390fd5b848160000160016101000a81548163ffffffff021916908360030b63ffffffff160217905550858160140160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055508787604051611ed0929190613a44565b60405180910390207f977f157300bb4d69d09b3e083fb55a17a0c02f978e5b220c08173c63de9665aa8989898560000160019054906101000a900460030b866001015487600201548860030154604051611f30979695949392919061454a565b60405180910390a261203d565b60008160000160059054906101000a900460030b60030b141561200a57848160000160056101000a81548163ffffffff021916908360030b63ffffffff1602179055508787604051611f90929190613a44565b60405180910390207fe097bf610f5827ffcdd36eb07b790e6ee02dd498f911ab45664208cfad9323b08989898560000160019054906101000a900460030b8660000160059054906101000a900460030b604051611ff19594939291906145b4565b60405180910390a261200588888689611756565b61203c565b6040517fd56be5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050505050505050565b61204f61251b565b73ffffffffffffffffffffffffffffffffffffffff1661206d61171a565b73ffffffffffffffffffffffffffffffffffffffff16146120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90613b3f565b60405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6120e961251b565b73ffffffffffffffffffffffffffffffffffffffff1661210761171a565b73ffffffffffffffffffffffffffffffffffffffff161461215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215490613b3f565b60405180910390fd5b6001600360156101000a81548160ff021916908315150217905550604051806020016040528060008152506004908051906020019061219d929190612c0c565b507f762f260439bb4be3ef6e4dc2786e2e7bd187d3d80b79057d7a424fe98563e33560405160405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461225c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225390614212565b60405180910390fd5b600160028686604051612270929190613a44565b908152602001604051809103902060000160006101000a81548160ff02191690831515021790555082600286866040516122ab929190613a44565b90815260200160405180910390206001018190555081600286866040516122d3929190613a44565b90815260200160405180910390206002018190555080600286866040516122fb929190613a44565b9081526020016040518091039020600301819055505050505050565b61231f61251b565b73ffffffffffffffffffffffffffffffffffffffff1661233d61171a565b73ffffffffffffffffffffffffffffffffffffffff1614612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a90613b3f565b60405180910390fd5b6000600360156101000a81548160ff0219169083151502179055508181600491906123bf929190612c92565b507fbbed56c796999ec9481de9169e54d6f193c57a335189c8b82053d80e263fdbd682826040516123f1929190614602565b60405180910390a15050565b61240561251b565b73ffffffffffffffffffffffffffffffffffffffff1661242361171a565b73ffffffffffffffffffffffffffffffffffffffff1614612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090613b3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090614698565b60405180910390fd5b6124f281612523565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008860000188908060018154018082558091505060019003906000526020600020016000909190919091505588600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550886002018787909180600181540180825580915050600190039060005260206000200160009091929091929091929091925091906126b8929190612d18565b50886003018585909180600181540180825580915050600190039060005260206000200160009091929091929091929091925091906126f8929190612d18565b5088600401838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612738929190612d18565b508789600501600082825461274d9190613a8c565b925050819055508860050154905098975050505050505050565b6000826006015483600001805490506127809190613f85565b905060008263ffffffff168211612797578161279f565b8263ffffffff165b905060008185600601546127b39190613a8c565b90506000856006015490505b81811015612902576128318660010182815481106127e0576127df61428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000183815481106128215761282061428e565b5b9060005260206000200154612b2a565b7fb9b3cf88e16ddd6b941ffa04b763047af17bafd3cdecef4d26d46f43e64c1205888888600101848154811061286a5761286961428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168960000185815481106128ab576128aa61428e565b5b90600052602060002001548a60040186815481106128cc576128cb61428e565b5b906000526020600020016040516128e79594939291906146b8565b60405180910390a180806128fa9061446f565b9150506127bf565b5080856006018190555050505050505050565b60028282604051612927929190613a44565b9081526020016040518091039020600401600080820160006129499190612d9e565b6001820160006129599190612dbf565b6002820160006129699190612de0565b6003820160006129799190612de0565b6004820160006129899190612de0565b6005820160009055600682016000905560078201600090555050600282826040516129b5929190613a44565b9081526020016040518091039020600c01600080820160006129d79190612d9e565b6001820160006129e79190612dbf565b6002820160006129f79190612de0565b600382016000612a079190612de0565b600482016000612a179190612de0565b600582016000905560068201600090556007820160009055505060028282604051612a43929190613a44565b908152602001604051809103902060000160016101000a81549063ffffffff021916905560028282604051612a79929190613a44565b908152602001604051809103902060000160056101000a81549063ffffffff02191690555050565b612aa9612e01565b600060648360050154600360009054906101000a900460ff1660ff16612acf91906142bd565b612ad99190614346565b9050600084600601548560000180549050612af49190613f85565b90506040518060600160405280838152602001838660050154612b179190613f85565b8152602001828152509250505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16600084604051612b5390614733565b600060405180830381858888f193505050503d8060008114612b91576040519150601f19603f3d011682016040523d82523d6000602084013e612b96565b606091505b509150915081612bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd290614794565b60405180910390fd5b50505050565b6040518060800160405280606081526020016060815260200160608152602001600060070b81525090565b828054612c1890613b8e565b90600052602060002090601f016020900481019282612c3a5760008555612c81565b82601f10612c5357805160ff1916838001178555612c81565b82800160010185558215612c81579182015b82811115612c80578251825591602001919060010190612c65565b5b509050612c8e9190612e22565b5090565b828054612c9e90613b8e565b90600052602060002090601f016020900481019282612cc05760008555612d07565b82601f10612cd957803560ff1916838001178555612d07565b82800160010185558215612d07579182015b82811115612d06578235825591602001919060010190612ceb565b5b509050612d149190612e22565b5090565b828054612d2490613b8e565b90600052602060002090601f016020900481019282612d465760008555612d8d565b82601f10612d5f57803560ff1916838001178555612d8d565b82800160010185558215612d8d579182015b82811115612d8c578235825591602001919060010190612d71565b5b509050612d9a9190612e22565b5090565b5080546000825590600052602060002090810190612dbc9190612e22565b50565b5080546000825590600052602060002090810190612ddd9190612e22565b50565b5080546000825590600052602060002090810190612dfe9190612e3f565b50565b60405180606001604052806000815260200160008152602001600081525090565b5b80821115612e3b576000816000905550600101612e23565b5090565b5b80821115612e5f5760008181612e569190612e63565b50600101612e40565b5090565b508054612e6f90613b8e565b6000825580601f10612e815750612ea0565b601f016020900490600052602060002090810190612e9f9190612e22565b5b50565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612edc57612edb612eb7565b5b8235905067ffffffffffffffff811115612ef957612ef8612ebc565b5b602083019150836001820283011115612f1557612f14612ec1565b5b9250929050565b60008060208385031215612f3357612f32612ead565b5b600083013567ffffffffffffffff811115612f5157612f50612eb2565b5b612f5d85828601612ec6565b92509250509250929050565b60008115159050919050565b612f7e81612f69565b82525050565b6000602082019050612f996000830184612f75565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fca82612f9f565b9050919050565b612fda81612fbf565b8114612fe557600080fd5b50565b600081359050612ff781612fd1565b92915050565b60006020828403121561301357613012612ead565b5b600061302184828501612fe8565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130788261302f565b810181811067ffffffffffffffff8211171561309757613096613040565b5b80604052505050565b60006130aa612ea3565b90506130b6828261306f565b919050565b600067ffffffffffffffff8211156130d6576130d5613040565b5b6130df8261302f565b9050602081019050919050565b82818337600083830152505050565b600061310e613109846130bb565b6130a0565b90508281526020810184848401111561312a5761312961302a565b5b6131358482856130ec565b509392505050565b600082601f83011261315257613151612eb7565b5b81356131628482602086016130fb565b91505092915050565b60006020828403121561318157613180612ead565b5b600082013567ffffffffffffffff81111561319f5761319e612eb2565b5b6131ab8482850161313d565b91505092915050565b60008160030b9050919050565b6131ca816131b4565b82525050565b6000819050919050565b6131e3816131d0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61321e816131d0565b82525050565b60006132308383613215565b60208301905092915050565b6000602082019050919050565b6000613254826131e9565b61325e81856131f4565b935061326983613205565b8060005b8381101561329a5781516132818882613224565b975061328c8361323c565b92505060018101905061326d565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132dc81612fbf565b82525050565b60006132ee83836132d3565b60208301905092915050565b6000602082019050919050565b6000613312826132a7565b61331c81856132b2565b9350613327836132c3565b8060005b8381101561335857815161333f88826132e2565b975061334a836132fa565b92505060018101905061332b565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133cb5780820151818401526020810190506133b0565b838111156133da576000848401525b50505050565b60006133eb82613391565b6133f5818561339c565b93506134058185602086016133ad565b61340e8161302f565b840191505092915050565b600061342583836133e0565b905092915050565b6000602082019050919050565b600061344582613365565b61344f8185613370565b93508360208202850161346185613381565b8060005b8581101561349d578484038952815161347e8582613419565b94506134898361342d565b925060208a01995050600181019050613465565b50829750879550505050505092915050565b60006101008301600083015184820360008601526134cd8282613249565b915050602083015184820360208601526134e78282613307565b91505060408301518482036040860152613501828261343a565b9150506060830151848203606086015261351b828261343a565b91505060808301518482036080860152613535828261343a565b91505060a083015161354a60a0860182613215565b5060c083015161355d60c0860182613215565b5060e083015161357060e0860182613215565b508091505092915050565b60008160070b9050919050565b6135918161357b565b82525050565b6000610120820190506135ad600083018c612f75565b6135ba602083018b6131c1565b6135c7604083018a6131c1565b6135d460608301896131da565b6135e160808301886131da565b6135ee60a08301876131da565b81810360c083015261360081866134af565b905081810360e083015261361481856134af565b9050613624610100830184613588565b9a9950505050505050505050565b61363b81612fbf565b82525050565b60006020820190506136566000830184613632565b92915050565b600081519050919050565b600082825260208201905092915050565b60006136838261365c565b61368d8185613667565b935061369d8185602086016133ad565b6136a68161302f565b840191505092915050565b600060208201905081810360008301526136cb8184613678565b905092915050565b600080fd5b600060a082840312156136ee576136ed6136d3565b5b81905092915050565b60006020828403121561370d5761370c612ead565b5b600082013567ffffffffffffffff81111561372b5761372a612eb2565b5b613737848285016136d8565b91505092915050565b600060ff82169050919050565b61375681613740565b82525050565b6000602082019050613771600083018461374d565b92915050565b600063ffffffff82169050919050565b61379081613777565b811461379b57600080fd5b50565b6000813590506137ad81613787565b92915050565b6137bc8161357b565b81146137c757600080fd5b50565b6000813590506137d9816137b3565b92915050565b600080600080606085870312156137f9576137f8612ead565b5b600085013567ffffffffffffffff81111561381757613816612eb2565b5b61382387828801612ec6565b945094505060206138368782880161379e565b9250506040613847878288016137ca565b91505092959194509250565b61385c816131b4565b811461386757600080fd5b50565b60008135905061387981613853565b92915050565b60008060008060006080868803121561389b5761389a612ead565b5b600086013567ffffffffffffffff8111156138b9576138b8612eb2565b5b6138c588828901612ec6565b955095505060206138d8888289016137ca565b93505060406138e98882890161386a565b92505060606138fa8882890161379e565b9150509295509295909350565b61391081613740565b811461391b57600080fd5b50565b60008135905061392d81613907565b92915050565b60006020828403121561394957613948612ead565b5b60006139578482850161391e565b91505092915050565b613969816131d0565b811461397457600080fd5b50565b60008135905061398681613960565b92915050565b6000806000806000608086880312156139a8576139a7612ead565b5b600086013567ffffffffffffffff8111156139c6576139c5612eb2565b5b6139d288828901612ec6565b955095505060206139e588828901613977565b93505060406139f688828901613977565b9250506060613a0788828901613977565b9150509295509295909350565b600081905092915050565b6000613a2b8385613a14565b9350613a388385846130ec565b82840190509392505050565b6000613a51828486613a1f565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a97826131d0565b9150613aa2836131d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ad757613ad6613a5d565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b29602083613ae2565b9150613b3482613af3565b602082019050919050565b60006020820190508181036000830152613b5881613b1c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613ba657607f821691505b60208210811415613bba57613bb9613b5f565b5b50919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613bec57613beb613bc0565b5b80840192508235915067ffffffffffffffff821115613c0e57613c0d613bc5565b5b602083019250600182023603831315613c2a57613c29613bca565b5b509250929050565b7f5468697320706f6f6c20686173206120726f756e6420696e2070726f6772657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c8e602183613ae2565b9150613c9982613c32565b604082019050919050565b60006020820190508181036000830152613cbd81613c81565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e67000000000000000000600082015250565b6000613cfa601783613ae2565b9150613d0582613cc4565b602082019050919050565b60006020820190508181036000830152613d2981613ced565b9050919050565b7f506f6f6c20646f6573206e6f7420657869737400000000000000000000000000600082015250565b6000613d66601383613ae2565b9150613d7182613d30565b602082019050919050565b60006020820190508181036000830152613d9581613d59565b9050919050565b7f4e6565647320746f2073656e64204d6174696320746f20747261646500000000600082015250565b6000613dd2601c83613ae2565b9150613ddd82613d9c565b602082019050919050565b60006020820190508181036000830152613e0181613dc5565b9050919050565b7f547261646520616d6f756e742073686f756c642062652068696768657220746860008201527f616e20746865206d696e696d756d000000000000000000000000000000000000602082015250565b6000613e64602e83613ae2565b9150613e6f82613e08565b604082019050919050565b60006020820190508181036000830152613e9381613e57565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206c6f7765722074686160008201527f6e20746865206d6178696d756d00000000000000000000000000000000000000602082015250565b6000613ef6602d83613ae2565b9150613f0182613e9a565b604082019050919050565b60006020820190508181036000830152613f2581613ee9565b9050919050565b613f3581612f69565b8114613f4057600080fd5b50565b600081359050613f5281613f2c565b92915050565b600060208284031215613f6e57613f6d612ead565b5b6000613f7c84828501613f43565b91505092915050565b6000613f90826131d0565b9150613f9b836131d0565b925082821015613fae57613fad613a5d565b5b828203905092915050565b7f506f6f6c2069732066756c6c2c207761697420666f72206e65787420726f756e60008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614015602183613ae2565b915061402082613fb9565b604082019050919050565b6000602082019050818103600083015261404481614008565b9050919050565b6000808335600160200384360303811261406857614067613bc0565b5b80840192508235915067ffffffffffffffff82111561408a57614089613bc5565b5b6020830192506001820236038313156140a6576140a5613bca565b5b509250929050565b60006140ba8385613667565b93506140c78385846130ec565b6140d08361302f565b840190509392505050565b60006140e682613391565b6140f08185613ae2565b93506141008185602086016133ad565b6141098161302f565b840191505092915050565b6000610120820190508181036000830152614130818c8e6140ae565b905061413f602083018b613632565b61414c604083018a6131da565b818103606083015261415e81896140db565b905061416d60808301886131da565b81810360a083015261417f81876140db565b905081810360c083015261419381866140db565b90506141a260e0830185613588565b8181036101008301526141b581846140db565b90509b9a5050505050505050505050565b7f4f6e6c792067616d6520636f6e74726f6c6c65722063616e20646f2074686973600082015250565b60006141fc602083613ae2565b9150614207826141c6565b602082019050919050565b6000602082019050818103600083015261422b816141ef565b9050919050565b600060a082019050818103600083015261424d81888a6140ae565b905061425c60208301876131da565b61426960408301866131da565b61427660608301856131da565b6142836080830184613588565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006142c8826131d0565b91506142d3836131d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561430c5761430b613a5d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614351826131d0565b915061435c836131d0565b92508261436c5761436b614317565b5b828204905092915050565b60008190508160005260206000209050919050565b6000815461439981613b8e565b6143a38186613ae2565b945060018216600081146143be57600181146143d057614403565b60ff1983168652602086019350614403565b6143d985614377565b60005b838110156143fb578154818901526001820191506020810190506143dc565b808801955050505b50505092915050565b600060a082019050818103600083015261442781888a6140ae565b90506144366020830187613632565b61444360408301866131da565b61445060608301856131da565b8181036080830152614462818461438c565b9050979650505050505050565b600061447a826131d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144ad576144ac613a5d565b5b600182019050919050565b7f5468652067616d65206973206e6f742072756e6e696e672c20726f756e64732060008201527f63616e206f6e6c7920626520656e646564206174207468697320706f696e7400602082015250565b6000614514603f83613ae2565b915061451f826144b8565b604082019050919050565b6000602082019050818103600083015261454381614507565b9050919050565b600060c082019050818103600083015261456581898b6140ae565b90506145746020830188613588565b61458160408301876131c1565b61458e60608301866131da565b61459b60808301856131da565b6145a860a08301846131da565b98975050505050505050565b600060808201905081810360008301526145cf8187896140ae565b90506145de6020830186613588565b6145eb60408301856131c1565b6145f860608301846131c1565b9695505050505050565b6000602082019050818103600083015261461d8184866140ae565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614682602683613ae2565b915061468d82614626565b604082019050919050565b600060208201905081810360008301526146b181614675565b9050919050565b600060808201905081810360008301526146d38187896140ae565b90506146e26020830186613632565b6146ef60408301856131da565b8181036060830152614701818461438c565b90509695505050505050565b50565b600061471d600083613a14565b91506147288261470d565b600082019050919050565b600061473e82614710565b9150819050919050565b7f436f756c646e27742073656e6420657468657200000000000000000000000000600082015250565b600061477e601383613ae2565b915061478982614748565b602082019050919050565b600060208201905081810360008301526147ad81614771565b905091905056fea2646970667358221220c79a6db9b505dd3c92257c140defabe36b3969913fa2a0f9fe58862b8885df8764736f6c634300080a0033000000000000000000000000d07f0c65dcd75d2d41ab09e470286565f3baf6f4

Deployed Bytecode

0x60806040526004361061011f5760003560e01c80638da5cb5b116100a0578063d65ab5f211610064578063d65ab5f2146103ba578063e4709969146103d1578063eab79b7d146103fa578063f2fde38b14610423578063f68256a81461044c5761011f565b80638da5cb5b146102e9578063a001ecdd14610314578063a7c3324d1461033f578063a9b99af514610368578063d4c770cf146103915761011f565b806341275358116100e75780634127535814610237578063595dc897146102625780636518a0a91461028b578063715018a6146102b657806381196ae2146102cd5761011f565b80630c2f915e146101245780631d0d625b146101615780632014e5d11461018a57806330efabd4146101b55780633fafac92146101f2575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190612f1c565b610477565b6040516101589190612f84565b60405180910390f35b34801561016d57600080fd5b5061018860048036038101906101839190612ffd565b6104e1565b005b34801561019657600080fd5b5061019f6105a1565b6040516101ac9190612f84565b60405180910390f35b3480156101c157600080fd5b506101dc60048036038101906101d79190612f1c565b6105b4565b6040516101e99190612f84565b60405180910390f35b3480156101fe57600080fd5b506102196004803603810190610214919061316b565b6105f4565b60405161022e99989796959493929190613597565b60405180910390f35b34801561024357600080fd5b5061024c610dc0565b6040516102599190613641565b60405180910390f35b34801561026e57600080fd5b5061028960048036038101906102849190612ffd565b610de6565b005b34801561029757600080fd5b506102a0610ea6565b6040516102ad91906136b1565b60405180910390f35b3480156102c257600080fd5b506102cb610f34565b005b6102e760048036038101906102e291906136f7565b610fbc565b005b3480156102f557600080fd5b506102fe61171a565b60405161030b9190613641565b60405180910390f35b34801561032057600080fd5b50610329611743565b604051610336919061375c565b60405180910390f35b34801561034b57600080fd5b50610366600480360381019061036191906137df565b611756565b005b34801561037457600080fd5b5061038f600480360381019061038a919061387f565b611ce1565b005b34801561039d57600080fd5b506103b860048036038101906103b39190613933565b612047565b005b3480156103c657600080fd5b506103cf6120e1565b005b3480156103dd57600080fd5b506103f860048036038101906103f3919061398c565b6121cc565b005b34801561040657600080fd5b50610421600480360381019061041c9190612f1c565b612317565b005b34801561042f57600080fd5b5061044a60048036038101906104459190612ffd565b6123fd565b005b34801561045857600080fd5b506104616124f5565b60405161046e9190613641565b60405180910390f35b6000806002848460405161048c929190613a44565b9081526020016040518091039020600c0160000180549050600285856040516104b6929190613a44565b9081526020016040518091039020600401600001805490506104d89190613a8c565b11905092915050565b6104e961251b565b73ffffffffffffffffffffffffffffffffffffffff1661050761171a565b73ffffffffffffffffffffffffffffffffffffffff161461055d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055490613b3f565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360159054906101000a900460ff1681565b600080600284846040516105c9929190613a44565b908152602001604051809103902060000160019054906101000a900460030b60030b14905092915050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460030b908060000160059054906101000a900460030b908060010154908060020154908060030154908060040160405180610100016040529081600082018054806020026020016040519081016040528092919081815260200182805480156106c857602002820191906000526020600020905b8154815260200190600101908083116106b4575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561075657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161070c575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156108305783829060005260206000200180546107a390613b8e565b80601f01602080910402602001604051908101604052809291908181526020018280546107cf90613b8e565b801561081c5780601f106107f15761010080835404028352916020019161081c565b820191906000526020600020905b8154815290600101906020018083116107ff57829003601f168201915b505050505081526020019060010190610784565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561090957838290600052602060002001805461087c90613b8e565b80601f01602080910402602001604051908101604052809291908181526020018280546108a890613b8e565b80156108f55780601f106108ca576101008083540402835291602001916108f5565b820191906000526020600020905b8154815290600101906020018083116108d857829003601f168201915b50505050508152602001906001019061085d565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156109e257838290600052602060002001805461095590613b8e565b80601f016020809104026020016040519081016040528092919081815260200182805461098190613b8e565b80156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b505050505081526020019060010190610936565b50505050815260200160058201548152602001600682015481526020016007820154815250509080600c016040518061010001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610a6857602002820191906000526020600020905b815481526020019060010190808311610a54575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610af657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610aac575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610bd0578382906000526020600020018054610b4390613b8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6f90613b8e565b8015610bbc5780601f10610b9157610100808354040283529160200191610bbc565b820191906000526020600020905b815481529060010190602001808311610b9f57829003601f168201915b505050505081526020019060010190610b24565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610ca9578382906000526020600020018054610c1c90613b8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890613b8e565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b505050505081526020019060010190610bfd565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610d82578382906000526020600020018054610cf590613b8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2190613b8e565b8015610d6e5780601f10610d4357610100808354040283529160200191610d6e565b820191906000526020600020905b815481529060010190602001808311610d5157829003601f168201915b505050505081526020019060010190610cd6565b5050505081526020016005820154815260200160068201548152602001600782015481525050908060140160009054906101000a900460070b905089565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dee61251b565b73ffffffffffffffffffffffffffffffffffffffff16610e0c61171a565b73ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990613b3f565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60048054610eb390613b8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610edf90613b8e565b8015610f2c5780601f10610f0157610100808354040283529160200191610f2c565b820191906000526020600020905b815481529060010190602001808311610f0f57829003601f168201915b505050505081565b610f3c61251b565b73ffffffffffffffffffffffffffffffffffffffff16610f5a61171a565b73ffffffffffffffffffffffffffffffffffffffff1614610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa790613b3f565b60405180910390fd5b610fba6000612523565b565b808060000190610fcc9190613bcf565b610fd682826105b4565b611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613ca4565b60405180910390fd5b600360159054906101000a900460ff16611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90613d10565b60405180910390fd5b8280600001906110749190613bcf565b600115156002838360405161108a929190613a44565b908152602001604051809103902060000160009054906101000a900460ff161515146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290613d7c565b60405180910390fd5b6000341161112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112590613de8565b60405180910390fd5b60028580600001906111409190613bcf565b60405161114e929190613a44565b9081526020016040518091039020600101543410156111a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119990613e7a565b60405180910390fd5b60028580600001906111b49190613bcf565b6040516111c2929190613a44565b908152602001604051809103902060020154341115611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90613f0c565b60405180910390fd5b600085606001602081019061122b9190613f58565b1561135857600160028780600001906112449190613bcf565b604051611252929190613a44565b90815260200160405180910390206003015461126e9190613f85565b60028780600001906112809190613bcf565b60405161128e929190613a44565b90815260200160405180910390206004016000018054905011156112e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de9061402b565b60405180910390fd5b61135160028780600001906112fc9190613bcf565b60405161130a929190613a44565b90815260200160405180910390206004013488806020019061132c919061404b565b8a806040019061133c919061404b565b8c806080019061134c919061404b565b6125e7565b905061147c565b6001600287806000019061136c9190613bcf565b60405161137a929190613a44565b9081526020016040518091039020600301546113969190613f85565b60028780600001906113a89190613bcf565b6040516113b6929190613a44565b9081526020016040518091039020600c0160000180549050111561140f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114069061402b565b60405180910390fd5b61147960028780600001906114249190613bcf565b604051611432929190613a44565b9081526020016040518091039020600c0134888060200190611454919061404b565b8a8060400190611464919061404b565b8c8060800190611474919061404b565b6125e7565b90505b611484612be1565b868060200190611494919061404b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081600001819052508680604001906114ef919061404b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050816020018190525086806080019061154a919061404b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050816040018190525060028780600001906115a79190613bcf565b6040516115b5929190613a44565b908152602001604051809103902060140160009054906101000a900460070b816060019060070b908160070b815250503373ffffffffffffffffffffffffffffffffffffffff1687806000019061160c9190613bcf565b60405161161a929190613a44565b60405180910390207f68f6fc9b4292a4019c38f766d951dada112bf514a9fa2245e113dd0d72f286158980600001906116539190613bcf565b33348d60600160208101906116689190613f58565b6116a7576040518060400160405280600481526020017f444f574e000000000000000000000000000000000000000000000000000000008152506116de565b6040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152505b8989600001518a602001518b606001518c604001516040516117099a99989796959493929190614114565b60405180910390a350505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd90614212565b60405180910390fd5b838360011515600283836040516117fe929190613a44565b908152602001604051809103902060000160009054906101000a900460ff1615151461185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185690613d7c565b60405180910390fd5b600060028787604051611873929190613a44565b908152602001604051809103902090506000816004016000018054905014806118a65750600081600c0160000180549050145b156119555760008082600c0160000180549050146118c75781600c016118cc565b816004015b90506000816006015490506118e38989848a612767565b7fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f74898984600001805490508486600601548b60405161192796959493929190614232565b60405180910390a181600001805490508260060154141561194d5761194c8989612915565b5b505050611cd9565b600081600c01905060008260040190508260000160059054906101000a900460030b60030b8360000160019054906101000a900460030b60030b12156119a25782600401915082600c0190505b60006119ae8383612aa1565b905060008863ffffffff168260400151116119cd5781604001516119d5565b8863ffffffff165b905060008185600601546119e99190613a8c565b90506000856006015490505b81811015611c1057600060648560200151886005015460648a6000018681548110611a2357611a2261428e565b5b9060005260206000200154611a3891906142bd565b611a429190614346565b611a4c91906142bd565b611a569190614346565b9050611acd876001018381548110611a7157611a7061428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886000018481548110611ab257611ab161428e565b5b906000526020600020015483611ac89190613a8c565b612b2a565b866001018281548110611ae357611ae261428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff31160dbe9f89c709f800e64e885259133c3a7a81d5997e727a35a9bc0896dca8f8f8a6001018681548110611b5d57611b5c61428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b6000018781548110611b9e57611b9d61428e565b5b9060005260206000200154868d6004018981548110611bc057611bbf61428e565b5b90600052602060002001604051611bdc9695949392919061440c565b60405180910390a2808760070154611bf49190613a8c565b8760070181905550508080611c089061446f565b9150506119f5565b507fd86802201c3bf5d79ef71027c49cdfdee99fa298848917618ba148d098f15f748c8c87600001805490508860060154858e604051611c5596959493929190614232565b60405180910390a1808560060181905550846000018054905085600601541415611cd257611cc7600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866007015485602001518660000151611cb89190613a8c565b611cc29190613f85565b612b2a565b611cd18c8c612915565b5b5050505050505b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890614212565b60405180910390fd5b84846001151560028383604051611d89929190613a44565b908152602001604051809103902060000160009054906101000a900460ff16151514611dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de190613d7c565b60405180910390fd5b600060028888604051611dfe929190613a44565b90815260200160405180910390209050611e1888886105b4565b15611f3d57600360159054906101000a900460ff16611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e639061452a565b60405180910390fd5b848160000160016101000a81548163ffffffff021916908360030b63ffffffff160217905550858160140160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055508787604051611ed0929190613a44565b60405180910390207f977f157300bb4d69d09b3e083fb55a17a0c02f978e5b220c08173c63de9665aa8989898560000160019054906101000a900460030b866001015487600201548860030154604051611f30979695949392919061454a565b60405180910390a261203d565b60008160000160059054906101000a900460030b60030b141561200a57848160000160056101000a81548163ffffffff021916908360030b63ffffffff1602179055508787604051611f90929190613a44565b60405180910390207fe097bf610f5827ffcdd36eb07b790e6ee02dd498f911ab45664208cfad9323b08989898560000160019054906101000a900460030b8660000160059054906101000a900460030b604051611ff19594939291906145b4565b60405180910390a261200588888689611756565b61203c565b6040517fd56be5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050505050505050565b61204f61251b565b73ffffffffffffffffffffffffffffffffffffffff1661206d61171a565b73ffffffffffffffffffffffffffffffffffffffff16146120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90613b3f565b60405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6120e961251b565b73ffffffffffffffffffffffffffffffffffffffff1661210761171a565b73ffffffffffffffffffffffffffffffffffffffff161461215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215490613b3f565b60405180910390fd5b6001600360156101000a81548160ff021916908315150217905550604051806020016040528060008152506004908051906020019061219d929190612c0c565b507f762f260439bb4be3ef6e4dc2786e2e7bd187d3d80b79057d7a424fe98563e33560405160405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461225c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225390614212565b60405180910390fd5b600160028686604051612270929190613a44565b908152602001604051809103902060000160006101000a81548160ff02191690831515021790555082600286866040516122ab929190613a44565b90815260200160405180910390206001018190555081600286866040516122d3929190613a44565b90815260200160405180910390206002018190555080600286866040516122fb929190613a44565b9081526020016040518091039020600301819055505050505050565b61231f61251b565b73ffffffffffffffffffffffffffffffffffffffff1661233d61171a565b73ffffffffffffffffffffffffffffffffffffffff1614612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a90613b3f565b60405180910390fd5b6000600360156101000a81548160ff0219169083151502179055508181600491906123bf929190612c92565b507fbbed56c796999ec9481de9169e54d6f193c57a335189c8b82053d80e263fdbd682826040516123f1929190614602565b60405180910390a15050565b61240561251b565b73ffffffffffffffffffffffffffffffffffffffff1661242361171a565b73ffffffffffffffffffffffffffffffffffffffff1614612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090613b3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090614698565b60405180910390fd5b6124f281612523565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008860000188908060018154018082558091505060019003906000526020600020016000909190919091505588600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550886002018787909180600181540180825580915050600190039060005260206000200160009091929091929091929091925091906126b8929190612d18565b50886003018585909180600181540180825580915050600190039060005260206000200160009091929091929091929091925091906126f8929190612d18565b5088600401838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509190612738929190612d18565b508789600501600082825461274d9190613a8c565b925050819055508860050154905098975050505050505050565b6000826006015483600001805490506127809190613f85565b905060008263ffffffff168211612797578161279f565b8263ffffffff165b905060008185600601546127b39190613a8c565b90506000856006015490505b81811015612902576128318660010182815481106127e0576127df61428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760000183815481106128215761282061428e565b5b9060005260206000200154612b2a565b7fb9b3cf88e16ddd6b941ffa04b763047af17bafd3cdecef4d26d46f43e64c1205888888600101848154811061286a5761286961428e565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168960000185815481106128ab576128aa61428e565b5b90600052602060002001548a60040186815481106128cc576128cb61428e565b5b906000526020600020016040516128e79594939291906146b8565b60405180910390a180806128fa9061446f565b9150506127bf565b5080856006018190555050505050505050565b60028282604051612927929190613a44565b9081526020016040518091039020600401600080820160006129499190612d9e565b6001820160006129599190612dbf565b6002820160006129699190612de0565b6003820160006129799190612de0565b6004820160006129899190612de0565b6005820160009055600682016000905560078201600090555050600282826040516129b5929190613a44565b9081526020016040518091039020600c01600080820160006129d79190612d9e565b6001820160006129e79190612dbf565b6002820160006129f79190612de0565b600382016000612a079190612de0565b600482016000612a179190612de0565b600582016000905560068201600090556007820160009055505060028282604051612a43929190613a44565b908152602001604051809103902060000160016101000a81549063ffffffff021916905560028282604051612a79929190613a44565b908152602001604051809103902060000160056101000a81549063ffffffff02191690555050565b612aa9612e01565b600060648360050154600360009054906101000a900460ff1660ff16612acf91906142bd565b612ad99190614346565b9050600084600601548560000180549050612af49190613f85565b90506040518060600160405280838152602001838660050154612b179190613f85565b8152602001828152509250505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16600084604051612b5390614733565b600060405180830381858888f193505050503d8060008114612b91576040519150601f19603f3d011682016040523d82523d6000602084013e612b96565b606091505b509150915081612bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd290614794565b60405180910390fd5b50505050565b6040518060800160405280606081526020016060815260200160608152602001600060070b81525090565b828054612c1890613b8e565b90600052602060002090601f016020900481019282612c3a5760008555612c81565b82601f10612c5357805160ff1916838001178555612c81565b82800160010185558215612c81579182015b82811115612c80578251825591602001919060010190612c65565b5b509050612c8e9190612e22565b5090565b828054612c9e90613b8e565b90600052602060002090601f016020900481019282612cc05760008555612d07565b82601f10612cd957803560ff1916838001178555612d07565b82800160010185558215612d07579182015b82811115612d06578235825591602001919060010190612ceb565b5b509050612d149190612e22565b5090565b828054612d2490613b8e565b90600052602060002090601f016020900481019282612d465760008555612d8d565b82601f10612d5f57803560ff1916838001178555612d8d565b82800160010185558215612d8d579182015b82811115612d8c578235825591602001919060010190612d71565b5b509050612d9a9190612e22565b5090565b5080546000825590600052602060002090810190612dbc9190612e22565b50565b5080546000825590600052602060002090810190612ddd9190612e22565b50565b5080546000825590600052602060002090810190612dfe9190612e3f565b50565b60405180606001604052806000815260200160008152602001600081525090565b5b80821115612e3b576000816000905550600101612e23565b5090565b5b80821115612e5f5760008181612e569190612e63565b50600101612e40565b5090565b508054612e6f90613b8e565b6000825580601f10612e815750612ea0565b601f016020900490600052602060002090810190612e9f9190612e22565b5b50565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612edc57612edb612eb7565b5b8235905067ffffffffffffffff811115612ef957612ef8612ebc565b5b602083019150836001820283011115612f1557612f14612ec1565b5b9250929050565b60008060208385031215612f3357612f32612ead565b5b600083013567ffffffffffffffff811115612f5157612f50612eb2565b5b612f5d85828601612ec6565b92509250509250929050565b60008115159050919050565b612f7e81612f69565b82525050565b6000602082019050612f996000830184612f75565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fca82612f9f565b9050919050565b612fda81612fbf565b8114612fe557600080fd5b50565b600081359050612ff781612fd1565b92915050565b60006020828403121561301357613012612ead565b5b600061302184828501612fe8565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130788261302f565b810181811067ffffffffffffffff8211171561309757613096613040565b5b80604052505050565b60006130aa612ea3565b90506130b6828261306f565b919050565b600067ffffffffffffffff8211156130d6576130d5613040565b5b6130df8261302f565b9050602081019050919050565b82818337600083830152505050565b600061310e613109846130bb565b6130a0565b90508281526020810184848401111561312a5761312961302a565b5b6131358482856130ec565b509392505050565b600082601f83011261315257613151612eb7565b5b81356131628482602086016130fb565b91505092915050565b60006020828403121561318157613180612ead565b5b600082013567ffffffffffffffff81111561319f5761319e612eb2565b5b6131ab8482850161313d565b91505092915050565b60008160030b9050919050565b6131ca816131b4565b82525050565b6000819050919050565b6131e3816131d0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61321e816131d0565b82525050565b60006132308383613215565b60208301905092915050565b6000602082019050919050565b6000613254826131e9565b61325e81856131f4565b935061326983613205565b8060005b8381101561329a5781516132818882613224565b975061328c8361323c565b92505060018101905061326d565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132dc81612fbf565b82525050565b60006132ee83836132d3565b60208301905092915050565b6000602082019050919050565b6000613312826132a7565b61331c81856132b2565b9350613327836132c3565b8060005b8381101561335857815161333f88826132e2565b975061334a836132fa565b92505060018101905061332b565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133cb5780820151818401526020810190506133b0565b838111156133da576000848401525b50505050565b60006133eb82613391565b6133f5818561339c565b93506134058185602086016133ad565b61340e8161302f565b840191505092915050565b600061342583836133e0565b905092915050565b6000602082019050919050565b600061344582613365565b61344f8185613370565b93508360208202850161346185613381565b8060005b8581101561349d578484038952815161347e8582613419565b94506134898361342d565b925060208a01995050600181019050613465565b50829750879550505050505092915050565b60006101008301600083015184820360008601526134cd8282613249565b915050602083015184820360208601526134e78282613307565b91505060408301518482036040860152613501828261343a565b9150506060830151848203606086015261351b828261343a565b91505060808301518482036080860152613535828261343a565b91505060a083015161354a60a0860182613215565b5060c083015161355d60c0860182613215565b5060e083015161357060e0860182613215565b508091505092915050565b60008160070b9050919050565b6135918161357b565b82525050565b6000610120820190506135ad600083018c612f75565b6135ba602083018b6131c1565b6135c7604083018a6131c1565b6135d460608301896131da565b6135e160808301886131da565b6135ee60a08301876131da565b81810360c083015261360081866134af565b905081810360e083015261361481856134af565b9050613624610100830184613588565b9a9950505050505050505050565b61363b81612fbf565b82525050565b60006020820190506136566000830184613632565b92915050565b600081519050919050565b600082825260208201905092915050565b60006136838261365c565b61368d8185613667565b935061369d8185602086016133ad565b6136a68161302f565b840191505092915050565b600060208201905081810360008301526136cb8184613678565b905092915050565b600080fd5b600060a082840312156136ee576136ed6136d3565b5b81905092915050565b60006020828403121561370d5761370c612ead565b5b600082013567ffffffffffffffff81111561372b5761372a612eb2565b5b613737848285016136d8565b91505092915050565b600060ff82169050919050565b61375681613740565b82525050565b6000602082019050613771600083018461374d565b92915050565b600063ffffffff82169050919050565b61379081613777565b811461379b57600080fd5b50565b6000813590506137ad81613787565b92915050565b6137bc8161357b565b81146137c757600080fd5b50565b6000813590506137d9816137b3565b92915050565b600080600080606085870312156137f9576137f8612ead565b5b600085013567ffffffffffffffff81111561381757613816612eb2565b5b61382387828801612ec6565b945094505060206138368782880161379e565b9250506040613847878288016137ca565b91505092959194509250565b61385c816131b4565b811461386757600080fd5b50565b60008135905061387981613853565b92915050565b60008060008060006080868803121561389b5761389a612ead565b5b600086013567ffffffffffffffff8111156138b9576138b8612eb2565b5b6138c588828901612ec6565b955095505060206138d8888289016137ca565b93505060406138e98882890161386a565b92505060606138fa8882890161379e565b9150509295509295909350565b61391081613740565b811461391b57600080fd5b50565b60008135905061392d81613907565b92915050565b60006020828403121561394957613948612ead565b5b60006139578482850161391e565b91505092915050565b613969816131d0565b811461397457600080fd5b50565b60008135905061398681613960565b92915050565b6000806000806000608086880312156139a8576139a7612ead565b5b600086013567ffffffffffffffff8111156139c6576139c5612eb2565b5b6139d288828901612ec6565b955095505060206139e588828901613977565b93505060406139f688828901613977565b9250506060613a0788828901613977565b9150509295509295909350565b600081905092915050565b6000613a2b8385613a14565b9350613a388385846130ec565b82840190509392505050565b6000613a51828486613a1f565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a97826131d0565b9150613aa2836131d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ad757613ad6613a5d565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b29602083613ae2565b9150613b3482613af3565b602082019050919050565b60006020820190508181036000830152613b5881613b1c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613ba657607f821691505b60208210811415613bba57613bb9613b5f565b5b50919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613bec57613beb613bc0565b5b80840192508235915067ffffffffffffffff821115613c0e57613c0d613bc5565b5b602083019250600182023603831315613c2a57613c29613bca565b5b509250929050565b7f5468697320706f6f6c20686173206120726f756e6420696e2070726f6772657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c8e602183613ae2565b9150613c9982613c32565b604082019050919050565b60006020820190508181036000830152613cbd81613c81565b9050919050565b7f5468652067616d65206973206e6f742072756e6e696e67000000000000000000600082015250565b6000613cfa601783613ae2565b9150613d0582613cc4565b602082019050919050565b60006020820190508181036000830152613d2981613ced565b9050919050565b7f506f6f6c20646f6573206e6f7420657869737400000000000000000000000000600082015250565b6000613d66601383613ae2565b9150613d7182613d30565b602082019050919050565b60006020820190508181036000830152613d9581613d59565b9050919050565b7f4e6565647320746f2073656e64204d6174696320746f20747261646500000000600082015250565b6000613dd2601c83613ae2565b9150613ddd82613d9c565b602082019050919050565b60006020820190508181036000830152613e0181613dc5565b9050919050565b7f547261646520616d6f756e742073686f756c642062652068696768657220746860008201527f616e20746865206d696e696d756d000000000000000000000000000000000000602082015250565b6000613e64602e83613ae2565b9150613e6f82613e08565b604082019050919050565b60006020820190508181036000830152613e9381613e57565b9050919050565b7f547261646520616d6f756e742073686f756c64206265206c6f7765722074686160008201527f6e20746865206d6178696d756d00000000000000000000000000000000000000602082015250565b6000613ef6602d83613ae2565b9150613f0182613e9a565b604082019050919050565b60006020820190508181036000830152613f2581613ee9565b9050919050565b613f3581612f69565b8114613f4057600080fd5b50565b600081359050613f5281613f2c565b92915050565b600060208284031215613f6e57613f6d612ead565b5b6000613f7c84828501613f43565b91505092915050565b6000613f90826131d0565b9150613f9b836131d0565b925082821015613fae57613fad613a5d565b5b828203905092915050565b7f506f6f6c2069732066756c6c2c207761697420666f72206e65787420726f756e60008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614015602183613ae2565b915061402082613fb9565b604082019050919050565b6000602082019050818103600083015261404481614008565b9050919050565b6000808335600160200384360303811261406857614067613bc0565b5b80840192508235915067ffffffffffffffff82111561408a57614089613bc5565b5b6020830192506001820236038313156140a6576140a5613bca565b5b509250929050565b60006140ba8385613667565b93506140c78385846130ec565b6140d08361302f565b840190509392505050565b60006140e682613391565b6140f08185613ae2565b93506141008185602086016133ad565b6141098161302f565b840191505092915050565b6000610120820190508181036000830152614130818c8e6140ae565b905061413f602083018b613632565b61414c604083018a6131da565b818103606083015261415e81896140db565b905061416d60808301886131da565b81810360a083015261417f81876140db565b905081810360c083015261419381866140db565b90506141a260e0830185613588565b8181036101008301526141b581846140db565b90509b9a5050505050505050505050565b7f4f6e6c792067616d6520636f6e74726f6c6c65722063616e20646f2074686973600082015250565b60006141fc602083613ae2565b9150614207826141c6565b602082019050919050565b6000602082019050818103600083015261422b816141ef565b9050919050565b600060a082019050818103600083015261424d81888a6140ae565b905061425c60208301876131da565b61426960408301866131da565b61427660608301856131da565b6142836080830184613588565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006142c8826131d0565b91506142d3836131d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561430c5761430b613a5d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614351826131d0565b915061435c836131d0565b92508261436c5761436b614317565b5b828204905092915050565b60008190508160005260206000209050919050565b6000815461439981613b8e565b6143a38186613ae2565b945060018216600081146143be57600181146143d057614403565b60ff1983168652602086019350614403565b6143d985614377565b60005b838110156143fb578154818901526001820191506020810190506143dc565b808801955050505b50505092915050565b600060a082019050818103600083015261442781888a6140ae565b90506144366020830187613632565b61444360408301866131da565b61445060608301856131da565b8181036080830152614462818461438c565b9050979650505050505050565b600061447a826131d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144ad576144ac613a5d565b5b600182019050919050565b7f5468652067616d65206973206e6f742072756e6e696e672c20726f756e64732060008201527f63616e206f6e6c7920626520656e646564206174207468697320706f696e7400602082015250565b6000614514603f83613ae2565b915061451f826144b8565b604082019050919050565b6000602082019050818103600083015261454381614507565b9050919050565b600060c082019050818103600083015261456581898b6140ae565b90506145746020830188613588565b61458160408301876131c1565b61458e60608301866131da565b61459b60808301856131da565b6145a860a08301846131da565b98975050505050505050565b600060808201905081810360008301526145cf8187896140ae565b90506145de6020830186613588565b6145eb60408301856131c1565b6145f860608301846131c1565b9695505050505050565b6000602082019050818103600083015261461d8184866140ae565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614682602683613ae2565b915061468d82614626565b604082019050919050565b600060208201905081810360008301526146b181614675565b9050919050565b600060808201905081810360008301526146d38187896140ae565b90506146e26020830186613632565b6146ef60408301856131da565b8181036060830152614701818461438c565b90509695505050505050565b50565b600061471d600083613a14565b91506147288261470d565b600082019050919050565b600061473e82614710565b9150819050919050565b7f436f756c646e27742073656e6420657468657200000000000000000000000000600082015250565b600061477e601383613ae2565b915061478982614748565b602082019050919050565b600060208201905081810360008301526147ad81614771565b905091905056fea2646970667358221220c79a6db9b505dd3c92257c140defabe36b3969913fa2a0f9fe58862b8885df8764736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d07f0c65dcd75d2d41ab09e470286565f3baf6f4

-----Decoded View---------------
Arg [0] : newGameController (address): 0xd07f0C65Dcd75D2d41aB09e470286565F3bAF6f4

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d07f0c65dcd75d2d41ab09e470286565f3baf6f4


Deployed Bytecode Sourcemap

3219:10426:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10681:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5691:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3999:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10883:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3880:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3956:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5950:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4025:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2513:94;;;;;;;;;;;;;:::i;:::-;;11778:1653;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1862:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3921:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8119:1933;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6678:877;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5825:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6222:120;;;;;;;;;;;;;:::i;:::-;;6348:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6065:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2762:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3846:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10681:196;10768:4;10870:1;10828:5;10834:6;;10828:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:31;;:38;;;;10789:5;10795:6;;10789:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;:29;;:36;;;;:77;;;;:::i;:::-;10788:83;10781:90;;10681:196;;;;:::o;5691:128::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5796:17:::1;5779:14;;:34;;;;;;;;;;;;;;;;;;5691:128:::0;:::o;3999:21::-;;;;;;;;;;;;;:::o;10883:129::-;10957:4;11005:1;10977:5;10983:6;;10977:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;;;;;;;;;;:29;;;10970:36;;10883:129;;;;:::o;3880:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3956:38::-;;;;;;;;;;;;;:::o;5950:109::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6040:13:::1;6027:10;;:26;;;;;;;;;;;;;;;;;;5950:109:::0;:::o;4025:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2513:94::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2578:21:::1;2596:1;2578:9;:21::i;:::-;2513:94::o:0;11778:1653::-;11871:9;:16;;;;;;;;:::i;:::-;5271:18;5282:6;;5271:10;:18::i;:::-;5263:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5390:9:::1;;;;;;;;;;;5382:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;11920:9:::2;:16;;;;;;;;:::i;:::-;5535:4;5510:29;;:5;5516:6;;5510:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;:29;;;5502:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11965:1:::3;11953:9;:13;11945:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;12027:5;12033:9;:16;;;;;;;;:::i;:::-;12027:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;12014:9;:49;;12006:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;12142:5;12148:9;:16;;;;;;;;:::i;:::-;12142:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;12129:9;:49;;12121:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;12235:16;12264:9;:18;;;;;;;;;;:::i;:::-;12260:618;;;12389:1;12351:5;12357:9;:16;;;;;;;;:::i;:::-;12351:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;;;:39;;;;:::i;:::-;12301:5;12307:9;:16;;;;;;;;:::i;:::-;12301:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;:39;;:46;;;;:89;;12293:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;12447:121;12454:5;12460:9;:16;;;;;;;;:::i;:::-;12454:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:34;;12490:9;12501;:19;;;;;;;;:::i;:::-;12522:9;:21;;;;;;;;:::i;:::-;12545:9;:22;;;;;;;;:::i;:::-;12447:6;:121::i;:::-;12436:132;;12260:618;;;12689:1;12651:5;12657:9;:16;;;;;;;;:::i;:::-;12651:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:37;;;:39;;;;:::i;:::-;12599:5;12605:9;:16;;;;;;;;:::i;:::-;12599:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;:41;;:48;;;;:91;;12591:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;12747:123;12754:5;12760:9;:16;;;;;;;;:::i;:::-;12754:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;12792:9;12803;:19;;;;;;;;:::i;:::-;12824:9;:21;;;;;;;;:::i;:::-;12847:9;:22;;;;;;;;:::i;:::-;12747:6;:123::i;:::-;12736:134;;12260:618;12886:35;;:::i;:::-;12951:9;:19;;;;;;;;:::i;:::-;12928:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:20;;:42;;;;13005:9;:21;;;;;;;;:::i;:::-;12977:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:25;;:49;;;;13062:9;:22;;;;;;;;:::i;:::-;13033:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:26;;:51;;;;13122:5;13128:9;:16;;;;;;;;:::i;:::-;13122:23;;;;;;;:::i;:::-;;;;;;;;;;;;;:38;;;;;;;;;;;;13091:13;:28;;:69;;;;;;;;;::::0;::::3;13301:10;13178:247;;13283:9;:16;;;;;;;;:::i;:::-;13178:247;;;;;;;:::i;:::-;;;;;;;;;13190:9;:16;;;;;;;;:::i;:::-;13208:10;13220:9;13232;:18;;;;;;;;;;:::i;:::-;13231:34;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;13267:8;13313:13;:20;;;13335:13;:25;;;13368:13;:28;;;13398:13;:26;;;13178:247;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;11938:1493;;5434:1:::2;;11778:1653:::0;;;:::o;1862:87::-;1908:7;1935:6;;;;;;;;;;;1928:13;;1862:87;:::o;3921:30::-;;;;;;;;;;;;;:::o;8119:1933::-;5139:14;;;;;;;;;;;5125:28;;:10;:28;;;5117:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8256:6:::1;;5535:4;5510:29;;:5;5516:6;;5510:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;:29;;;5502:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8271:19:::2;8293:5;8299:6;;8293:13;;;;;;;:::i;:::-;;;;;;;;;;;;;8271:35;;8351:1;8319:5;:16;;:21;;:28;;;;:33;:72;;;;8390:1;8356:5;:18;;:23;;:30;;;;:35;8319:72;8315:545;;;8402:28;8467:1:::0;8433:5:::2;:18;;:23;;:30;;;;:35;:75;;8490:5;:18;;8433:75;;;8471:5;:16;;8433:75;8402:106;;8519:15;8537:11;:28;;;8519:46;;8574:42;8585:6;;8593:11;8606:9;8574:10;:42::i;:::-;8630:98;8647:6;;8655:11;:16;;:23;;;;8680:10;8692:11;:28;;;8721:6;8630:98;;;;;;;;;;;:::i;:::-;;;;;;;;8775:11;:16;;:23;;;;8743:11;:28;;;:55;8739:99;;;8811:17;8821:6;;8811:9;:17::i;:::-;8739:99;8846:7;;;;;8315:545;8870:24;8897:5;:18;;8870:45;;8922:23;8948:5;:16;;8922:42;;8996:5;:14;;;;;;;;;;;;8977:33;;:5;:16;;;;;;;;;;;;:33;;;8973:118;;;9031:5;:16;;9021:26;;9065:5;:18;;9056:27;;8973:118;9099:24;9126:38;9148:7;9157:6;9126:21;:38::i;:::-;9099:65;;9171:13;9202:9;9187:24;;:4;:12;;;:24;:51;;9226:4;:12;;;9187:51;;;9214:9;9187:51;;;9171:67;;9245:10;9285:5;9258:7;:24;;;:32;;;;:::i;:::-;9245:45;;9304:6;9313:7;:24;;;9304:33;;9299:432;9343:2;9339:1;:6;9299:432;;;9361:16;9444:3;9423:4;:18;;;9406:7;:13;;;9400:3;9382:7;:12;;9395:1;9382:15;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;:::i;:::-;:37;;;;:::i;:::-;9381:60;;;;:::i;:::-;:66;;;;:::i;:::-;9361:87;;9457:59;9467:7;:17;;9485:1;9467:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9500:7;:12;;9513:1;9500:15;;;;;;;;:::i;:::-;;;;;;;;;;9489:8;:26;;;;:::i;:::-;9457:9;:59::i;:::-;9605:7;:17;;9623:1;9605:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9530:122;;;9548:6;;9556:7;:17;;9574:1;9556:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9578:7;:12;;9591:1;9578:15;;;;;;;;:::i;:::-;;;;;;;;;;9595:8;9627:7;:21;;9649:1;9627:24;;;;;;;;:::i;:::-;;;;;;;;;9530:122;;;;;;;;;;;:::i;:::-;;;;;;;;9715:8;9688:7;:24;;;:35;;;;:::i;:::-;9661:7;:24;;:62;;;;9352:379;9347:3;;;;;:::i;:::-;;;;9299:432;;;;9744:83;9761:6;;9769:7;:12;;:19;;;;9790:7;:24;;;9816:2;9820:6;9744:83;;;;;;;;;;;:::i;:::-;;;;;;;;9863:2;9836:7;:24;;:29;;;;9904:7;:12;;:19;;;;9876:7;:24;;;:47;9872:175;;;9934:79;9944:10;;;;;;;;;;;9988:7;:24;;;9967:4;:18;;;9956:4;:8;;;:29;;;;:::i;:::-;:56;;;;:::i;:::-;9934:9;:79::i;:::-;10022:17;10032:6;;10022:9;:17::i;:::-;9872:175;8264:1788;;;;;;5570:1;5197::::1;;8119:1933:::0;;;;:::o;6678:877::-;5139:14;;;;;;;;;;;5125:28;;:10;:28;;;5117:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6829:6:::1;;5535:4;5510:29;;:5;5516:6;;5510:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;:29;;;5502:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6844:26:::2;6873:5;6879:6;;6873:13;;;;;;;:::i;:::-;;;;;;;;;;;;;6844:42;;6898:18;6909:6;;6898:10;:18::i;:::-;6895:655;;;6935:9;;;;;;;;;;;6927:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7047:5;7021:12;:23;;;:31;;;;;;;;;;;;;;;;;;;;7091:6;7061:12;:27;;;:36;;;;;;;;;;;;;;;;;;;;7253:6;;7117:143;;;;;;;:::i;:::-;;;;;;;;;7130:6;;7138;7146:12;:23;;;;;;;;;;;;7171:12;:25;;;7198:12;:25;;;7225:12;:26;;;7117:143;;;;;;;;;;;;:::i;:::-;;;;;;;;6895:655;;;7303:1;7278:12;:21;;;;;;;;;;;;:26;;;7274:276;;;7339:5;7315:12;:21;;;:29;;;;;;;;;;;;;;;;;;;;7435:6;;7360:82;;;;;;;:::i;:::-;;;;;;;;;7371:6;;7379;7387:12;:23;;;;;;;;;;;;7412:12;:21;;;;;;;;;;;;7360:82;;;;;;;;;;:::i;:::-;;;;;;;;7453:37;7464:6;;7472:9;7483:6;7453:10;:37::i;:::-;7274:276;;;7520:22;;;;;;;;;;;;;;7274:276;6895:655;6837:718;5197:1:::1;;6678:877:::0;;;;;:::o;5825:119::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5922:16:::1;5906:13;;:32;;;;;;;;;;;;;;;;;;5825:119:::0;:::o;6222:120::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6279:4:::1;6267:9;;:16;;;;;;;;;;;;;;;;;;6290:21;;;;;;;;;;;::::0;:16:::1;:21;;;;;;;;;;;;:::i;:::-;;6323:13;;;;;;;;;;6222:120::o:0;6348:324::-;5139:14;;;;;;;;;;;5125:28;;:10;:28;;;5117:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6516:4:::1;6492:5;6498:6;;6492:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;:28;;;;;;;;;;;;;;;;;;6556:12;6527:5;6533:6;;6527:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:41;;;;6604:12;6575:5;6581:6;;6575:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;:41;;;;6653:13;6623:5;6629:6;;6623:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;:43;;;;6348:324:::0;;;;;:::o;6065:151::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6142:5:::1;6130:9;;:17;;;;;;;;;;;;;;;;;;6173:6;;6154:16;:25;;;;;;;:::i;:::-;;6191:19;6203:6;;6191:19;;;;;;;:::i;:::-;;;;;;;;6065:151:::0;;:::o;2762:192::-;2093:12;:10;:12::i;:::-;2082:23;;:7;:5;:7::i;:::-;:23;;;2074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2871:1:::1;2851:22;;:8;:22;;;;2843:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2927:19;2937:8;2927:9;:19::i;:::-;2762:192:::0;:::o;3846:29::-;;;;;;;;;;;;;:::o;656:98::-;709:7;736:10;729:17;;656:98;:::o;2962:173::-;3018:16;3037:6;;;;;;;;;;;3018:25;;3063:8;3054:6;;:17;;;;;;;;;;;;;;;;;;3118:8;3087:40;;3108:8;3087:40;;;;;;;;;;;;3007:128;2962:173;:::o;11018:466::-;11208:7;11224:8;:13;;11243:6;11224:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11257:8;:18;;11281:10;11257:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11299:8;:16;;11321:6;;11299:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11335:8;:18;;11359:11;;11335:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11378:8;:22;;11406:12;;11378:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11444:6;11426:8;:14;;;:24;;;;;;;:::i;:::-;;;;;;;;11464:8;:14;;;11457:21;;11018:466;;;;;;;;;;:::o;7561:552::-;7682:15;7720:5;:22;;;7700:5;:10;;:17;;;;:42;;;;:::i;:::-;7682:60;;7749:13;7775:9;7765:19;;:7;:19;:41;;7799:7;7765:41;;;7787:9;7765:41;;;7749:57;;7813:10;7851:5;7826;:22;;;:30;;;;:::i;:::-;7813:43;;7870:6;7879:5;:22;;;7870:31;;7865:207;7907:2;7903:1;:6;7865:207;;;7926:44;7936:5;:15;;7952:1;7936:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7956:5;:10;;7967:1;7956:13;;;;;;;;:::i;:::-;;;;;;;;;;7926:9;:44::i;:::-;7984:80;7998:6;;8006:5;:15;;8022:1;8006:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8026:5;:10;;8037:1;8026:13;;;;;;;;:::i;:::-;;;;;;;;;;8041:5;:19;;8061:1;8041:22;;;;;;;;:::i;:::-;;;;;;;;;7984:80;;;;;;;;;;:::i;:::-;;;;;;;;7911:4;;;;;:::i;:::-;;;;7865:207;;;;8105:2;8080:5;:22;;:27;;;;7675:438;;;7561:552;;;;:::o;10456:219::-;10531:5;10537:6;;10531:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;10524:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10569:5;10575:6;;10569:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:26;;;10562:33;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10609:5;10615:6;;10609:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;10602:31;;;;;;;;;;;10647:5;10653:6;;10647:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;10640:29;;;;;;;;;;;10456:219;;:::o;10058:392::-;10178:19;;:::i;:::-;10206:11;10251:3;10236:6;:12;;;10220:13;;;;;;;;;;;:28;;;;;;:::i;:::-;:34;;;;:::i;:::-;10206:48;;10261:15;10301:7;:24;;;10279:7;:12;;:19;;;;:46;;;;:::i;:::-;10261:64;;10339:105;;;;;;;;10366:3;10339:105;;;;10408:3;10393:6;:12;;;:18;;;;:::i;:::-;10339:105;;;;10429:7;10339:105;;;10332:112;;;;10058:392;;;;:::o;13437:204::-;13517:9;13528:17;13557:2;13549:16;;13571:1;13581:6;13549:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13516:76;;;;13607:4;13599:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;13509:132;;13437:204;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;716:552;773:8;783:6;833:3;826:4;818:6;814:17;810:27;800:122;;841:79;;:::i;:::-;800:122;954:6;941:20;931:30;;984:18;976:6;973:30;970:117;;;1006:79;;:::i;:::-;970:117;1120:4;1112:6;1108:17;1096:29;;1174:3;1166:4;1158:6;1154:17;1144:8;1140:32;1137:41;1134:128;;;1181:79;;:::i;:::-;1134:128;716:552;;;;;:::o;1274:527::-;1344:6;1352;1401:2;1389:9;1380:7;1376:23;1372:32;1369:119;;;1407:79;;:::i;:::-;1369:119;1555:1;1544:9;1540:17;1527:31;1585:18;1577:6;1574:30;1571:117;;;1607:79;;:::i;:::-;1571:117;1720:64;1776:7;1767:6;1756:9;1752:22;1720:64;:::i;:::-;1702:82;;;;1498:296;1274:527;;;;;:::o;1807:90::-;1841:7;1884:5;1877:13;1870:21;1859:32;;1807:90;;;:::o;1903:109::-;1984:21;1999:5;1984:21;:::i;:::-;1979:3;1972:34;1903:109;;:::o;2018:210::-;2105:4;2143:2;2132:9;2128:18;2120:26;;2156:65;2218:1;2207:9;2203:17;2194:6;2156:65;:::i;:::-;2018:210;;;;:::o;2234:126::-;2271:7;2311:42;2304:5;2300:54;2289:65;;2234:126;;;:::o;2366:96::-;2403:7;2432:24;2450:5;2432:24;:::i;:::-;2421:35;;2366:96;;;:::o;2468:122::-;2541:24;2559:5;2541:24;:::i;:::-;2534:5;2531:35;2521:63;;2580:1;2577;2570:12;2521:63;2468:122;:::o;2596:139::-;2642:5;2680:6;2667:20;2658:29;;2696:33;2723:5;2696:33;:::i;:::-;2596:139;;;;:::o;2741:329::-;2800:6;2849:2;2837:9;2828:7;2824:23;2820:32;2817:119;;;2855:79;;:::i;:::-;2817:119;2975:1;3000:53;3045:7;3036:6;3025:9;3021:22;3000:53;:::i;:::-;2990:63;;2946:117;2741:329;;;;:::o;3076:117::-;3185:1;3182;3175:12;3199:102;3240:6;3291:2;3287:7;3282:2;3275:5;3271:14;3267:28;3257:38;;3199:102;;;:::o;3307:180::-;3355:77;3352:1;3345:88;3452:4;3449:1;3442:15;3476:4;3473:1;3466:15;3493:281;3576:27;3598:4;3576:27;:::i;:::-;3568:6;3564:40;3706:6;3694:10;3691:22;3670:18;3658:10;3655:34;3652:62;3649:88;;;3717:18;;:::i;:::-;3649:88;3757:10;3753:2;3746:22;3536:238;3493:281;;:::o;3780:129::-;3814:6;3841:20;;:::i;:::-;3831:30;;3870:33;3898:4;3890:6;3870:33;:::i;:::-;3780:129;;;:::o;3915:307::-;3976:4;4066:18;4058:6;4055:30;4052:56;;;4088:18;;:::i;:::-;4052:56;4126:29;4148:6;4126:29;:::i;:::-;4118:37;;4210:4;4204;4200:15;4192:23;;3915:307;;;:::o;4228:154::-;4312:6;4307:3;4302;4289:30;4374:1;4365:6;4360:3;4356:16;4349:27;4228:154;;;:::o;4388:410::-;4465:5;4490:65;4506:48;4547:6;4506:48;:::i;:::-;4490:65;:::i;:::-;4481:74;;4578:6;4571:5;4564:21;4616:4;4609:5;4605:16;4654:3;4645:6;4640:3;4636:16;4633:25;4630:112;;;4661:79;;:::i;:::-;4630:112;4751:41;4785:6;4780:3;4775;4751:41;:::i;:::-;4471:327;4388:410;;;;;:::o;4817:338::-;4872:5;4921:3;4914:4;4906:6;4902:17;4898:27;4888:122;;4929:79;;:::i;:::-;4888:122;5046:6;5033:20;5071:78;5145:3;5137:6;5130:4;5122:6;5118:17;5071:78;:::i;:::-;5062:87;;4878:277;4817:338;;;;:::o;5161:507::-;5229:6;5278:2;5266:9;5257:7;5253:23;5249:32;5246:119;;;5284:79;;:::i;:::-;5246:119;5432:1;5421:9;5417:17;5404:31;5462:18;5454:6;5451:30;5448:117;;;5484:79;;:::i;:::-;5448:117;5589:62;5643:7;5634:6;5623:9;5619:22;5589:62;:::i;:::-;5579:72;;5375:286;5161:507;;;;:::o;5674:90::-;5709:7;5752:5;5749:1;5738:20;5727:31;;5674:90;;;:::o;5770:112::-;5853:22;5869:5;5853:22;:::i;:::-;5848:3;5841:35;5770:112;;:::o;5888:77::-;5925:7;5954:5;5943:16;;5888:77;;;:::o;5971:118::-;6058:24;6076:5;6058:24;:::i;:::-;6053:3;6046:37;5971:118;;:::o;6095:114::-;6162:6;6196:5;6190:12;6180:22;;6095:114;;;:::o;6215:174::-;6304:11;6338:6;6333:3;6326:19;6378:4;6373:3;6369:14;6354:29;;6215:174;;;;:::o;6395:132::-;6462:4;6485:3;6477:11;;6515:4;6510:3;6506:14;6498:22;;6395:132;;;:::o;6533:108::-;6610:24;6628:5;6610:24;:::i;:::-;6605:3;6598:37;6533:108;;:::o;6647:179::-;6716:10;6737:46;6779:3;6771:6;6737:46;:::i;:::-;6815:4;6810:3;6806:14;6792:28;;6647:179;;;;:::o;6832:113::-;6902:4;6934;6929:3;6925:14;6917:22;;6832:113;;;:::o;6981:712::-;7090:3;7119:54;7167:5;7119:54;:::i;:::-;7189:76;7258:6;7253:3;7189:76;:::i;:::-;7182:83;;7289:56;7339:5;7289:56;:::i;:::-;7368:7;7399:1;7384:284;7409:6;7406:1;7403:13;7384:284;;;7485:6;7479:13;7512:63;7571:3;7556:13;7512:63;:::i;:::-;7505:70;;7598:60;7651:6;7598:60;:::i;:::-;7588:70;;7444:224;7431:1;7428;7424:9;7419:14;;7384:284;;;7388:14;7684:3;7677:10;;7095:598;;;6981:712;;;;:::o;7699:114::-;7766:6;7800:5;7794:12;7784:22;;7699:114;;;:::o;7819:174::-;7908:11;7942:6;7937:3;7930:19;7982:4;7977:3;7973:14;7958:29;;7819:174;;;;:::o;7999:132::-;8066:4;8089:3;8081:11;;8119:4;8114:3;8110:14;8102:22;;7999:132;;;:::o;8137:108::-;8214:24;8232:5;8214:24;:::i;:::-;8209:3;8202:37;8137:108;;:::o;8251:179::-;8320:10;8341:46;8383:3;8375:6;8341:46;:::i;:::-;8419:4;8414:3;8410:14;8396:28;;8251:179;;;;:::o;8436:113::-;8506:4;8538;8533:3;8529:14;8521:22;;8436:113;;;:::o;8585:712::-;8694:3;8723:54;8771:5;8723:54;:::i;:::-;8793:76;8862:6;8857:3;8793:76;:::i;:::-;8786:83;;8893:56;8943:5;8893:56;:::i;:::-;8972:7;9003:1;8988:284;9013:6;9010:1;9007:13;8988:284;;;9089:6;9083:13;9116:63;9175:3;9160:13;9116:63;:::i;:::-;9109:70;;9202:60;9255:6;9202:60;:::i;:::-;9192:70;;9048:224;9035:1;9032;9028:9;9023:14;;8988:284;;;8992:14;9288:3;9281:10;;8699:598;;;8585:712;;;;:::o;9303:124::-;9380:6;9414:5;9408:12;9398:22;;9303:124;;;:::o;9433:184::-;9532:11;9566:6;9561:3;9554:19;9606:4;9601:3;9597:14;9582:29;;9433:184;;;;:::o;9623:142::-;9700:4;9723:3;9715:11;;9753:4;9748:3;9744:14;9736:22;;9623:142;;;:::o;9771:99::-;9823:6;9857:5;9851:12;9841:22;;9771:99;;;:::o;9876:159::-;9950:11;9984:6;9979:3;9972:19;10024:4;10019:3;10015:14;10000:29;;9876:159;;;;:::o;10041:307::-;10109:1;10119:113;10133:6;10130:1;10127:13;10119:113;;;10218:1;10213:3;10209:11;10203:18;10199:1;10194:3;10190:11;10183:39;10155:2;10152:1;10148:10;10143:15;;10119:113;;;10250:6;10247:1;10244:13;10241:101;;;10330:1;10321:6;10316:3;10312:16;10305:27;10241:101;10090:258;10041:307;;;:::o;10354:344::-;10432:3;10460:39;10493:5;10460:39;:::i;:::-;10515:61;10569:6;10564:3;10515:61;:::i;:::-;10508:68;;10585:52;10630:6;10625:3;10618:4;10611:5;10607:16;10585:52;:::i;:::-;10662:29;10684:6;10662:29;:::i;:::-;10657:3;10653:39;10646:46;;10436:262;10354:344;;;;:::o;10704:196::-;10793:10;10828:66;10890:3;10882:6;10828:66;:::i;:::-;10814:80;;10704:196;;;;:::o;10906:123::-;10986:4;11018;11013:3;11009:14;11001:22;;10906:123;;;:::o;11063:971::-;11192:3;11221:64;11279:5;11221:64;:::i;:::-;11301:86;11380:6;11375:3;11301:86;:::i;:::-;11294:93;;11413:3;11458:4;11450:6;11446:17;11441:3;11437:27;11488:66;11548:5;11488:66;:::i;:::-;11577:7;11608:1;11593:396;11618:6;11615:1;11612:13;11593:396;;;11689:9;11683:4;11679:20;11674:3;11667:33;11740:6;11734:13;11768:84;11847:4;11832:13;11768:84;:::i;:::-;11760:92;;11875:70;11938:6;11875:70;:::i;:::-;11865:80;;11974:4;11969:3;11965:14;11958:21;;11653:336;11640:1;11637;11633:9;11628:14;;11593:396;;;11597:14;12005:4;11998:11;;12025:3;12018:10;;11197:837;;;;;11063:971;;;;:::o;12112:2193::-;12231:3;12267:6;12262:3;12258:16;12356:4;12349:5;12345:16;12339:23;12409:3;12403:4;12399:14;12392:4;12387:3;12383:14;12376:38;12435:103;12533:4;12519:12;12435:103;:::i;:::-;12427:111;;12284:265;12636:4;12629:5;12625:16;12619:23;12689:3;12683:4;12679:14;12672:4;12667:3;12663:14;12656:38;12715:103;12813:4;12799:12;12715:103;:::i;:::-;12707:111;;12559:270;12914:4;12907:5;12903:16;12897:23;12967:3;12961:4;12957:14;12950:4;12945:3;12941:14;12934:38;12993:123;13111:4;13097:12;12993:123;:::i;:::-;12985:131;;12839:288;13214:4;13207:5;13203:16;13197:23;13267:3;13261:4;13257:14;13250:4;13245:3;13241:14;13234:38;13293:123;13411:4;13397:12;13293:123;:::i;:::-;13285:131;;13137:290;13518:4;13511:5;13507:16;13501:23;13571:3;13565:4;13561:14;13554:4;13549:3;13545:14;13538:38;13597:123;13715:4;13701:12;13597:123;:::i;:::-;13589:131;;13437:294;13814:4;13807:5;13803:16;13797:23;13833:63;13890:4;13885:3;13881:14;13867:12;13833:63;:::i;:::-;13741:165;14000:4;13993:5;13989:16;13983:23;14019:63;14076:4;14071:3;14067:14;14053:12;14019:63;:::i;:::-;13916:176;14186:4;14179:5;14175:16;14169:23;14205:63;14262:4;14257:3;14253:14;14239:12;14205:63;:::i;:::-;14102:176;14295:4;14288:11;;12236:2069;12112:2193;;;;:::o;14311:90::-;14346:7;14389:5;14386:1;14375:20;14364:31;;14311:90;;;:::o;14407:112::-;14490:22;14506:5;14490:22;:::i;:::-;14485:3;14478:35;14407:112;;:::o;14525:1374::-;14924:4;14962:3;14951:9;14947:19;14939:27;;14976:65;15038:1;15027:9;15023:17;15014:6;14976:65;:::i;:::-;15051:68;15115:2;15104:9;15100:18;15091:6;15051:68;:::i;:::-;15129;15193:2;15182:9;15178:18;15169:6;15129:68;:::i;:::-;15207:72;15275:2;15264:9;15260:18;15251:6;15207:72;:::i;:::-;15289:73;15357:3;15346:9;15342:19;15333:6;15289:73;:::i;:::-;15372;15440:3;15429:9;15425:19;15416:6;15372:73;:::i;:::-;15493:9;15487:4;15483:20;15477:3;15466:9;15462:19;15455:49;15521:108;15624:4;15615:6;15521:108;:::i;:::-;15513:116;;15677:9;15671:4;15667:20;15661:3;15650:9;15646:19;15639:49;15705:108;15808:4;15799:6;15705:108;:::i;:::-;15697:116;;15823:69;15887:3;15876:9;15872:19;15863:6;15823:69;:::i;:::-;14525:1374;;;;;;;;;;;;:::o;15905:118::-;15992:24;16010:5;15992:24;:::i;:::-;15987:3;15980:37;15905:118;;:::o;16029:222::-;16122:4;16160:2;16149:9;16145:18;16137:26;;16173:71;16241:1;16230:9;16226:17;16217:6;16173:71;:::i;:::-;16029:222;;;;:::o;16257:98::-;16308:6;16342:5;16336:12;16326:22;;16257:98;;;:::o;16361:168::-;16444:11;16478:6;16473:3;16466:19;16518:4;16513:3;16509:14;16494:29;;16361:168;;;;:::o;16535:360::-;16621:3;16649:38;16681:5;16649:38;:::i;:::-;16703:70;16766:6;16761:3;16703:70;:::i;:::-;16696:77;;16782:52;16827:6;16822:3;16815:4;16808:5;16804:16;16782:52;:::i;:::-;16859:29;16881:6;16859:29;:::i;:::-;16854:3;16850:39;16843:46;;16625:270;16535:360;;;;:::o;16901:309::-;17012:4;17050:2;17039:9;17035:18;17027:26;;17099:9;17093:4;17089:20;17085:1;17074:9;17070:17;17063:47;17127:76;17198:4;17189:6;17127:76;:::i;:::-;17119:84;;16901:309;;;;:::o;17216:117::-;17325:1;17322;17315:12;17384:240;17465:5;17506:3;17497:6;17492:3;17488:16;17484:26;17481:113;;;17513:79;;:::i;:::-;17481:113;17612:6;17603:15;;17384:240;;;;:::o;17630:559::-;17724:6;17773:2;17761:9;17752:7;17748:23;17744:32;17741:119;;;17779:79;;:::i;:::-;17741:119;17927:1;17916:9;17912:17;17899:31;17957:18;17949:6;17946:30;17943:117;;;17979:79;;:::i;:::-;17943:117;18084:88;18164:7;18155:6;18144:9;18140:22;18084:88;:::i;:::-;18074:98;;17870:312;17630:559;;;;:::o;18195:86::-;18230:7;18270:4;18263:5;18259:16;18248:27;;18195:86;;;:::o;18287:112::-;18370:22;18386:5;18370:22;:::i;:::-;18365:3;18358:35;18287:112;;:::o;18405:214::-;18494:4;18532:2;18521:9;18517:18;18509:26;;18545:67;18609:1;18598:9;18594:17;18585:6;18545:67;:::i;:::-;18405:214;;;;:::o;18625:93::-;18661:7;18701:10;18694:5;18690:22;18679:33;;18625:93;;;:::o;18724:120::-;18796:23;18813:5;18796:23;:::i;:::-;18789:5;18786:34;18776:62;;18834:1;18831;18824:12;18776:62;18724:120;:::o;18850:137::-;18895:5;18933:6;18920:20;18911:29;;18949:32;18975:5;18949:32;:::i;:::-;18850:137;;;;:::o;18993:118::-;19064:22;19080:5;19064:22;:::i;:::-;19057:5;19054:33;19044:61;;19101:1;19098;19091:12;19044:61;18993:118;:::o;19117:135::-;19161:5;19199:6;19186:20;19177:29;;19215:31;19240:5;19215:31;:::i;:::-;19117:135;;;;:::o;19258:811::-;19343:6;19351;19359;19367;19416:2;19404:9;19395:7;19391:23;19387:32;19384:119;;;19422:79;;:::i;:::-;19384:119;19570:1;19559:9;19555:17;19542:31;19600:18;19592:6;19589:30;19586:117;;;19622:79;;:::i;:::-;19586:117;19735:64;19791:7;19782:6;19771:9;19767:22;19735:64;:::i;:::-;19717:82;;;;19513:296;19848:2;19874:52;19918:7;19909:6;19898:9;19894:22;19874:52;:::i;:::-;19864:62;;19819:117;19975:2;20001:51;20044:7;20035:6;20024:9;20020:22;20001:51;:::i;:::-;19991:61;;19946:116;19258:811;;;;;;;:::o;20075:118::-;20146:22;20162:5;20146:22;:::i;:::-;20139:5;20136:33;20126:61;;20183:1;20180;20173:12;20126:61;20075:118;:::o;20199:135::-;20243:5;20281:6;20268:20;20259:29;;20297:31;20322:5;20297:31;:::i;:::-;20199:135;;;;:::o;20340:953::-;20432:6;20440;20448;20456;20464;20513:3;20501:9;20492:7;20488:23;20484:33;20481:120;;;20520:79;;:::i;:::-;20481:120;20668:1;20657:9;20653:17;20640:31;20698:18;20690:6;20687:30;20684:117;;;20720:79;;:::i;:::-;20684:117;20833:64;20889:7;20880:6;20869:9;20865:22;20833:64;:::i;:::-;20815:82;;;;20611:296;20946:2;20972:51;21015:7;21006:6;20995:9;20991:22;20972:51;:::i;:::-;20962:61;;20917:116;21072:2;21098:51;21141:7;21132:6;21121:9;21117:22;21098:51;:::i;:::-;21088:61;;21043:116;21198:2;21224:52;21268:7;21259:6;21248:9;21244:22;21224:52;:::i;:::-;21214:62;;21169:117;20340:953;;;;;;;;:::o;21299:118::-;21370:22;21386:5;21370:22;:::i;:::-;21363:5;21360:33;21350:61;;21407:1;21404;21397:12;21350:61;21299:118;:::o;21423:135::-;21467:5;21505:6;21492:20;21483:29;;21521:31;21546:5;21521:31;:::i;:::-;21423:135;;;;:::o;21564:325::-;21621:6;21670:2;21658:9;21649:7;21645:23;21641:32;21638:119;;;21676:79;;:::i;:::-;21638:119;21796:1;21821:51;21864:7;21855:6;21844:9;21840:22;21821:51;:::i;:::-;21811:61;;21767:115;21564:325;;;;:::o;21895:122::-;21968:24;21986:5;21968:24;:::i;:::-;21961:5;21958:35;21948:63;;22007:1;22004;21997:12;21948:63;21895:122;:::o;22023:139::-;22069:5;22107:6;22094:20;22085:29;;22123:33;22150:5;22123:33;:::i;:::-;22023:139;;;;:::o;22168:963::-;22265:6;22273;22281;22289;22297;22346:3;22334:9;22325:7;22321:23;22317:33;22314:120;;;22353:79;;:::i;:::-;22314:120;22501:1;22490:9;22486:17;22473:31;22531:18;22523:6;22520:30;22517:117;;;22553:79;;:::i;:::-;22517:117;22666:64;22722:7;22713:6;22702:9;22698:22;22666:64;:::i;:::-;22648:82;;;;22444:296;22779:2;22805:53;22850:7;22841:6;22830:9;22826:22;22805:53;:::i;:::-;22795:63;;22750:118;22907:2;22933:53;22978:7;22969:6;22958:9;22954:22;22933:53;:::i;:::-;22923:63;;22878:118;23035:2;23061:53;23106:7;23097:6;23086:9;23082:22;23061:53;:::i;:::-;23051:63;;23006:118;22168:963;;;;;;;;:::o;23137:147::-;23238:11;23275:3;23260:18;;23137:147;;;;:::o;23312:314::-;23426:3;23447:88;23528:6;23523:3;23447:88;:::i;:::-;23440:95;;23545:43;23581:6;23576:3;23569:5;23545:43;:::i;:::-;23613:6;23608:3;23604:16;23597:23;;23312:314;;;;;:::o;23632:291::-;23772:3;23794:103;23893:3;23884:6;23876;23794:103;:::i;:::-;23787:110;;23914:3;23907:10;;23632:291;;;;;:::o;23929:180::-;23977:77;23974:1;23967:88;24074:4;24071:1;24064:15;24098:4;24095:1;24088:15;24115:305;24155:3;24174:20;24192:1;24174:20;:::i;:::-;24169:25;;24208:20;24226:1;24208:20;:::i;:::-;24203:25;;24362:1;24294:66;24290:74;24287:1;24284:81;24281:107;;;24368:18;;:::i;:::-;24281:107;24412:1;24409;24405:9;24398:16;;24115:305;;;;:::o;24426:169::-;24510:11;24544:6;24539:3;24532:19;24584:4;24579:3;24575:14;24560:29;;24426:169;;;;:::o;24601:182::-;24741:34;24737:1;24729:6;24725:14;24718:58;24601:182;:::o;24789:366::-;24931:3;24952:67;25016:2;25011:3;24952:67;:::i;:::-;24945:74;;25028:93;25117:3;25028:93;:::i;:::-;25146:2;25141:3;25137:12;25130:19;;24789:366;;;:::o;25161:419::-;25327:4;25365:2;25354:9;25350:18;25342:26;;25414:9;25408:4;25404:20;25400:1;25389:9;25385:17;25378:47;25442:131;25568:4;25442:131;:::i;:::-;25434:139;;25161:419;;;:::o;25586:180::-;25634:77;25631:1;25624:88;25731:4;25728:1;25721:15;25755:4;25752:1;25745:15;25772:320;25816:6;25853:1;25847:4;25843:12;25833:22;;25900:1;25894:4;25890:12;25921:18;25911:81;;25977:4;25969:6;25965:17;25955:27;;25911:81;26039:2;26031:6;26028:14;26008:18;26005:38;26002:84;;;26058:18;;:::i;:::-;26002:84;25823:269;25772:320;;;:::o;26098:117::-;26207:1;26204;26197:12;26221:117;26330:1;26327;26320:12;26344:117;26453:1;26450;26443:12;26467:724;26544:4;26550:6;26606:11;26593:25;26706:1;26700:4;26696:12;26685:8;26669:14;26665:29;26661:48;26641:18;26637:73;26627:168;;26714:79;;:::i;:::-;26627:168;26826:18;26816:8;26812:33;26804:41;;26878:4;26865:18;26855:28;;26906:18;26898:6;26895:30;26892:117;;;26928:79;;:::i;:::-;26892:117;27036:2;27030:4;27026:13;27018:21;;27093:4;27085:6;27081:17;27065:14;27061:38;27055:4;27051:49;27048:136;;;27103:79;;:::i;:::-;27048:136;26557:634;26467:724;;;;;:::o;27197:220::-;27337:34;27333:1;27325:6;27321:14;27314:58;27406:3;27401:2;27393:6;27389:15;27382:28;27197:220;:::o;27423:366::-;27565:3;27586:67;27650:2;27645:3;27586:67;:::i;:::-;27579:74;;27662:93;27751:3;27662:93;:::i;:::-;27780:2;27775:3;27771:12;27764:19;;27423:366;;;:::o;27795:419::-;27961:4;27999:2;27988:9;27984:18;27976:26;;28048:9;28042:4;28038:20;28034:1;28023:9;28019:17;28012:47;28076:131;28202:4;28076:131;:::i;:::-;28068:139;;27795:419;;;:::o;28220:173::-;28360:25;28356:1;28348:6;28344:14;28337:49;28220:173;:::o;28399:366::-;28541:3;28562:67;28626:2;28621:3;28562:67;:::i;:::-;28555:74;;28638:93;28727:3;28638:93;:::i;:::-;28756:2;28751:3;28747:12;28740:19;;28399:366;;;:::o;28771:419::-;28937:4;28975:2;28964:9;28960:18;28952:26;;29024:9;29018:4;29014:20;29010:1;28999:9;28995:17;28988:47;29052:131;29178:4;29052:131;:::i;:::-;29044:139;;28771:419;;;:::o;29196:169::-;29336:21;29332:1;29324:6;29320:14;29313:45;29196:169;:::o;29371:366::-;29513:3;29534:67;29598:2;29593:3;29534:67;:::i;:::-;29527:74;;29610:93;29699:3;29610:93;:::i;:::-;29728:2;29723:3;29719:12;29712:19;;29371:366;;;:::o;29743:419::-;29909:4;29947:2;29936:9;29932:18;29924:26;;29996:9;29990:4;29986:20;29982:1;29971:9;29967:17;29960:47;30024:131;30150:4;30024:131;:::i;:::-;30016:139;;29743:419;;;:::o;30168:178::-;30308:30;30304:1;30296:6;30292:14;30285:54;30168:178;:::o;30352:366::-;30494:3;30515:67;30579:2;30574:3;30515:67;:::i;:::-;30508:74;;30591:93;30680:3;30591:93;:::i;:::-;30709:2;30704:3;30700:12;30693:19;;30352:366;;;:::o;30724:419::-;30890:4;30928:2;30917:9;30913:18;30905:26;;30977:9;30971:4;30967:20;30963:1;30952:9;30948:17;30941:47;31005:131;31131:4;31005:131;:::i;:::-;30997:139;;30724:419;;;:::o;31149:233::-;31289:34;31285:1;31277:6;31273:14;31266:58;31358:16;31353:2;31345:6;31341:15;31334:41;31149:233;:::o;31388:366::-;31530:3;31551:67;31615:2;31610:3;31551:67;:::i;:::-;31544:74;;31627:93;31716:3;31627:93;:::i;:::-;31745:2;31740:3;31736:12;31729:19;;31388:366;;;:::o;31760:419::-;31926:4;31964:2;31953:9;31949:18;31941:26;;32013:9;32007:4;32003:20;31999:1;31988:9;31984:17;31977:47;32041:131;32167:4;32041:131;:::i;:::-;32033:139;;31760:419;;;:::o;32185:232::-;32325:34;32321:1;32313:6;32309:14;32302:58;32394:15;32389:2;32381:6;32377:15;32370:40;32185:232;:::o;32423:366::-;32565:3;32586:67;32650:2;32645:3;32586:67;:::i;:::-;32579:74;;32662:93;32751:3;32662:93;:::i;:::-;32780:2;32775:3;32771:12;32764:19;;32423:366;;;:::o;32795:419::-;32961:4;32999:2;32988:9;32984:18;32976:26;;33048:9;33042:4;33038:20;33034:1;33023:9;33019:17;33012:47;33076:131;33202:4;33076:131;:::i;:::-;33068:139;;32795:419;;;:::o;33220:116::-;33290:21;33305:5;33290:21;:::i;:::-;33283:5;33280:32;33270:60;;33326:1;33323;33316:12;33270:60;33220:116;:::o;33342:133::-;33385:5;33423:6;33410:20;33401:29;;33439:30;33463:5;33439:30;:::i;:::-;33342:133;;;;:::o;33481:323::-;33537:6;33586:2;33574:9;33565:7;33561:23;33557:32;33554:119;;;33592:79;;:::i;:::-;33554:119;33712:1;33737:50;33779:7;33770:6;33759:9;33755:22;33737:50;:::i;:::-;33727:60;;33683:114;33481:323;;;;:::o;33810:191::-;33850:4;33870:20;33888:1;33870:20;:::i;:::-;33865:25;;33904:20;33922:1;33904:20;:::i;:::-;33899:25;;33943:1;33940;33937:8;33934:34;;;33948:18;;:::i;:::-;33934:34;33993:1;33990;33986:9;33978:17;;33810:191;;;;:::o;34007:220::-;34147:34;34143:1;34135:6;34131:14;34124:58;34216:3;34211:2;34203:6;34199:15;34192:28;34007:220;:::o;34233:366::-;34375:3;34396:67;34460:2;34455:3;34396:67;:::i;:::-;34389:74;;34472:93;34561:3;34472:93;:::i;:::-;34590:2;34585:3;34581:12;34574:19;;34233:366;;;:::o;34605:419::-;34771:4;34809:2;34798:9;34794:18;34786:26;;34858:9;34852:4;34848:20;34844:1;34833:9;34829:17;34822:47;34886:131;35012:4;34886:131;:::i;:::-;34878:139;;34605:419;;;:::o;35030:725::-;35108:4;35114:6;35170:11;35157:25;35270:1;35264:4;35260:12;35249:8;35233:14;35229:29;35225:48;35205:18;35201:73;35191:168;;35278:79;;:::i;:::-;35191:168;35390:18;35380:8;35376:33;35368:41;;35442:4;35429:18;35419:28;;35470:18;35462:6;35459:30;35456:117;;;35492:79;;:::i;:::-;35456:117;35600:2;35594:4;35590:13;35582:21;;35657:4;35649:6;35645:17;35629:14;35625:38;35619:4;35615:49;35612:136;;;35667:79;;:::i;:::-;35612:136;35121:634;35030:725;;;;;:::o;35783:301::-;35879:3;35900:70;35963:6;35958:3;35900:70;:::i;:::-;35893:77;;35980:43;36016:6;36011:3;36004:5;35980:43;:::i;:::-;36048:29;36070:6;36048:29;:::i;:::-;36043:3;36039:39;36032:46;;35783:301;;;;;:::o;36090:364::-;36178:3;36206:39;36239:5;36206:39;:::i;:::-;36261:71;36325:6;36320:3;36261:71;:::i;:::-;36254:78;;36341:52;36386:6;36381:3;36374:4;36367:5;36363:16;36341:52;:::i;:::-;36418:29;36440:6;36418:29;:::i;:::-;36413:3;36409:39;36402:46;;36182:272;36090:364;;;;:::o;36460:1571::-;36881:4;36919:3;36908:9;36904:19;36896:27;;36969:9;36963:4;36959:20;36955:1;36944:9;36940:17;36933:47;36997:86;37078:4;37069:6;37061;36997:86;:::i;:::-;36989:94;;37093:72;37161:2;37150:9;37146:18;37137:6;37093:72;:::i;:::-;37175;37243:2;37232:9;37228:18;37219:6;37175:72;:::i;:::-;37294:9;37288:4;37284:20;37279:2;37268:9;37264:18;37257:48;37322:78;37395:4;37386:6;37322:78;:::i;:::-;37314:86;;37410:73;37478:3;37467:9;37463:19;37454:6;37410:73;:::i;:::-;37531:9;37525:4;37521:20;37515:3;37504:9;37500:19;37493:49;37559:78;37632:4;37623:6;37559:78;:::i;:::-;37551:86;;37685:9;37679:4;37675:20;37669:3;37658:9;37654:19;37647:49;37713:78;37786:4;37777:6;37713:78;:::i;:::-;37705:86;;37801:69;37865:3;37854:9;37850:19;37841:6;37801:69;:::i;:::-;37918:9;37912:4;37908:20;37902:3;37891:9;37887:19;37880:49;37946:78;38019:4;38010:6;37946:78;:::i;:::-;37938:86;;36460:1571;;;;;;;;;;;;;:::o;38037:182::-;38177:34;38173:1;38165:6;38161:14;38154:58;38037:182;:::o;38225:366::-;38367:3;38388:67;38452:2;38447:3;38388:67;:::i;:::-;38381:74;;38464:93;38553:3;38464:93;:::i;:::-;38582:2;38577:3;38573:12;38566:19;;38225:366;;;:::o;38597:419::-;38763:4;38801:2;38790:9;38786:18;38778:26;;38850:9;38844:4;38840:20;38836:1;38825:9;38821:17;38814:47;38878:131;39004:4;38878:131;:::i;:::-;38870:139;;38597:419;;;:::o;39022:763::-;39251:4;39289:3;39278:9;39274:19;39266:27;;39339:9;39333:4;39329:20;39325:1;39314:9;39310:17;39303:47;39367:86;39448:4;39439:6;39431;39367:86;:::i;:::-;39359:94;;39463:72;39531:2;39520:9;39516:18;39507:6;39463:72;:::i;:::-;39545;39613:2;39602:9;39598:18;39589:6;39545:72;:::i;:::-;39627;39695:2;39684:9;39680:18;39671:6;39627:72;:::i;:::-;39709:69;39773:3;39762:9;39758:19;39749:6;39709:69;:::i;:::-;39022:763;;;;;;;;;:::o;39791:180::-;39839:77;39836:1;39829:88;39936:4;39933:1;39926:15;39960:4;39957:1;39950:15;39977:348;40017:7;40040:20;40058:1;40040:20;:::i;:::-;40035:25;;40074:20;40092:1;40074:20;:::i;:::-;40069:25;;40262:1;40194:66;40190:74;40187:1;40184:81;40179:1;40172:9;40165:17;40161:105;40158:131;;;40269:18;;:::i;:::-;40158:131;40317:1;40314;40310:9;40299:20;;39977:348;;;;:::o;40331:180::-;40379:77;40376:1;40369:88;40476:4;40473:1;40466:15;40500:4;40497:1;40490:15;40517:185;40557:1;40574:20;40592:1;40574:20;:::i;:::-;40569:25;;40608:20;40626:1;40608:20;:::i;:::-;40603:25;;40647:1;40637:35;;40652:18;;:::i;:::-;40637:35;40694:1;40691;40687:9;40682:14;;40517:185;;;;:::o;40708:141::-;40757:4;40780:3;40772:11;;40803:3;40800:1;40793:14;40837:4;40834:1;40824:18;40816:26;;40708:141;;;:::o;40879:802::-;40964:3;41001:5;40995:12;41030:36;41056:9;41030:36;:::i;:::-;41082:71;41146:6;41141:3;41082:71;:::i;:::-;41075:78;;41184:1;41173:9;41169:17;41200:1;41195:135;;;;41344:1;41339:336;;;;41162:513;;41195:135;41279:4;41275:9;41264;41260:25;41255:3;41248:38;41315:4;41310:3;41306:14;41299:21;;41195:135;;41339:336;41406:38;41438:5;41406:38;:::i;:::-;41466:1;41480:154;41494:6;41491:1;41488:13;41480:154;;;41568:7;41562:14;41558:1;41553:3;41549:11;41542:35;41618:1;41609:7;41605:15;41594:26;;41516:4;41513:1;41509:12;41504:17;;41480:154;;;41663:1;41658:3;41654:11;41647:18;;41346:329;;41162:513;;40968:713;;40879:802;;;;:::o;41687:856::-;41937:4;41975:3;41964:9;41960:19;41952:27;;42025:9;42019:4;42015:20;42011:1;42000:9;41996:17;41989:47;42053:86;42134:4;42125:6;42117;42053:86;:::i;:::-;42045:94;;42149:72;42217:2;42206:9;42202:18;42193:6;42149:72;:::i;:::-;42231;42299:2;42288:9;42284:18;42275:6;42231:72;:::i;:::-;42313;42381:2;42370:9;42366:18;42357:6;42313:72;:::i;:::-;42433:9;42427:4;42423:20;42417:3;42406:9;42402:19;42395:49;42461:75;42531:4;42522:6;42461:75;:::i;:::-;42453:83;;41687:856;;;;;;;;;:::o;42549:233::-;42588:3;42611:24;42629:5;42611:24;:::i;:::-;42602:33;;42657:66;42650:5;42647:77;42644:103;;;42727:18;;:::i;:::-;42644:103;42774:1;42767:5;42763:13;42756:20;;42549:233;;;:::o;42788:250::-;42928:34;42924:1;42916:6;42912:14;42905:58;42997:33;42992:2;42984:6;42980:15;42973:58;42788:250;:::o;43044:366::-;43186:3;43207:67;43271:2;43266:3;43207:67;:::i;:::-;43200:74;;43283:93;43372:3;43283:93;:::i;:::-;43401:2;43396:3;43392:12;43385:19;;43044:366;;;:::o;43416:419::-;43582:4;43620:2;43609:9;43605:18;43597:26;;43669:9;43663:4;43659:20;43655:1;43644:9;43640:17;43633:47;43697:131;43823:4;43697:131;:::i;:::-;43689:139;;43416:419;;;:::o;43841:866::-;44094:4;44132:3;44121:9;44117:19;44109:27;;44182:9;44176:4;44172:20;44168:1;44157:9;44153:17;44146:47;44210:86;44291:4;44282:6;44274;44210:86;:::i;:::-;44202:94;;44306:68;44370:2;44359:9;44355:18;44346:6;44306:68;:::i;:::-;44384;44448:2;44437:9;44433:18;44424:6;44384:68;:::i;:::-;44462:72;44530:2;44519:9;44515:18;44506:6;44462:72;:::i;:::-;44544:73;44612:3;44601:9;44597:19;44588:6;44544:73;:::i;:::-;44627;44695:3;44684:9;44680:19;44671:6;44627:73;:::i;:::-;43841:866;;;;;;;;;;:::o;44713:636::-;44906:4;44944:3;44933:9;44929:19;44921:27;;44994:9;44988:4;44984:20;44980:1;44969:9;44965:17;44958:47;45022:86;45103:4;45094:6;45086;45022:86;:::i;:::-;45014:94;;45118:68;45182:2;45171:9;45167:18;45158:6;45118:68;:::i;:::-;45196;45260:2;45249:9;45245:18;45236:6;45196:68;:::i;:::-;45274;45338:2;45327:9;45323:18;45314:6;45274:68;:::i;:::-;44713:636;;;;;;;;:::o;45355:329::-;45476:4;45514:2;45503:9;45499:18;45491:26;;45563:9;45557:4;45553:20;45549:1;45538:9;45534:17;45527:47;45591:86;45672:4;45663:6;45655;45591:86;:::i;:::-;45583:94;;45355:329;;;;;:::o;45690:225::-;45830:34;45826:1;45818:6;45814:14;45807:58;45899:8;45894:2;45886:6;45882:15;45875:33;45690:225;:::o;45921:366::-;46063:3;46084:67;46148:2;46143:3;46084:67;:::i;:::-;46077:74;;46160:93;46249:3;46160:93;:::i;:::-;46278:2;46273:3;46269:12;46262:19;;45921:366;;;:::o;46293:419::-;46459:4;46497:2;46486:9;46482:18;46474:26;;46546:9;46540:4;46536:20;46532:1;46521:9;46517:17;46510:47;46574:131;46700:4;46574:131;:::i;:::-;46566:139;;46293:419;;;:::o;46718:745::-;46940:4;46978:3;46967:9;46963:19;46955:27;;47028:9;47022:4;47018:20;47014:1;47003:9;46999:17;46992:47;47056:86;47137:4;47128:6;47120;47056:86;:::i;:::-;47048:94;;47152:72;47220:2;47209:9;47205:18;47196:6;47152:72;:::i;:::-;47234;47302:2;47291:9;47287:18;47278:6;47234:72;:::i;:::-;47353:9;47347:4;47343:20;47338:2;47327:9;47323:18;47316:48;47381:75;47451:4;47442:6;47381:75;:::i;:::-;47373:83;;46718:745;;;;;;;;:::o;47469:114::-;;:::o;47589:398::-;47748:3;47769:83;47850:1;47845:3;47769:83;:::i;:::-;47762:90;;47861:93;47950:3;47861:93;:::i;:::-;47979:1;47974:3;47970:11;47963:18;;47589:398;;;:::o;47993:379::-;48177:3;48199:147;48342:3;48199:147;:::i;:::-;48192:154;;48363:3;48356:10;;47993:379;;;:::o;48378:169::-;48518:21;48514:1;48506:6;48502:14;48495:45;48378:169;:::o;48553:366::-;48695:3;48716:67;48780:2;48775:3;48716:67;:::i;:::-;48709:74;;48792:93;48881:3;48792:93;:::i;:::-;48910:2;48905:3;48901:12;48894:19;;48553:366;;;:::o;48925:419::-;49091:4;49129:2;49118:9;49114:18;49106:26;;49178:9;49172:4;49168:20;49164:1;49153:9;49149:17;49142:47;49206:131;49332:4;49206:131;:::i;:::-;49198:139;;48925:419;;;:::o

Swarm Source

ipfs://c79a6db9b505dd3c92257c140defabe36b3969913fa2a0f9fe58862b8885df87

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.