S Price: $0.448503 (-0.57%)

Contract

0x201fFA5Be3886d19EF2F18da877Ff3B9e34d10C9

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PromotionsLibrary

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 9999999 runs

Other Settings:
cancun EvmVersion
File 1 of 2 : PromotionsLibrary.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

// solhint-disable-next-line no-global-import
import "./globals/promotions.sol";

// This file contains methods for interacting with the item NFT, used to decrease implementation deployment bytecode code.
library PromotionsLibrary {
  error PromotionAlreadyAdded();
  error LengthMismatch();
  error PromotionNotSet();
  error StartTimeMustBeHigherEndTime();
  error NoNumItemsToPick();
  error InvalidPromotion();
  error InvalidBrushCost();
  error InvalidMultidayPromotionTimeInterval();
  error InvalidStreakBonus();
  error InvalidNumDaysHitNeededForStreakBonus();
  error PickingTooManyItems();
  error MultidaySpecified();
  error NoItemsToPickFrom();

  function addPromotion(
    mapping(Promotion promotion => PromotionInfo) storage activePromotions,
    PromotionInfoInput calldata promotionInfoInput
  ) external {
    _checkAddingGenericPromotion(promotionInfoInput);
    require(activePromotions[promotionInfoInput.promotion].promotion == Promotion.NONE, PromotionAlreadyAdded());

    if (promotionInfoInput.isMultiday) {
      _checkAddingMultidayMintPromotion(promotionInfoInput);
    } else {
      _checkAddingSinglePromotion(promotionInfoInput);
    }

    activePromotions[promotionInfoInput.promotion] = _packPromotionInfo(promotionInfoInput);
  }

  function editPromotion(
    mapping(Promotion promotion => PromotionInfo) storage activePromotions,
    PromotionInfoInput calldata promotionInfoInput
  ) external {
    _checkAddingGenericPromotion(promotionInfoInput);

    if (promotionInfoInput.isMultiday) {
      _checkAddingMultidayMintPromotion(promotionInfoInput);
    } else {
      _checkAddingSinglePromotion(promotionInfoInput);
    }

    activePromotions[promotionInfoInput.promotion] = _packPromotionInfo(promotionInfoInput);
  }

  function _checkAddingGenericPromotion(PromotionInfoInput calldata promotionInfoInput) private pure {
    require(promotionInfoInput.randomItemTokenIds.length == promotionInfoInput.randomAmounts.length, LengthMismatch());
    require(promotionInfoInput.promotion != Promotion.NONE, PromotionNotSet());
    require(promotionInfoInput.startTime < promotionInfoInput.endTime, StartTimeMustBeHigherEndTime());
    require(
      (promotionInfoInput.numDailyRandomItemsToPick != 0 || promotionInfoInput.guaranteedItemTokenIds.length != 0),
      NoNumItemsToPick()
    );
    // TODO: Special handling for now, only allowing 1 item to be picked
    require(
      promotionInfoInput.guaranteedItemTokenIds.length != 0 || promotionInfoInput.numDailyRandomItemsToPick == 1,
      InvalidPromotion()
    );
    // Check brush input is valid
    require(promotionInfoInput.tokenCost % 1 ether == 0, InvalidBrushCost());
    // start and endTime must be factors of 24 hours apart
    require(
      (promotionInfoInput.endTime - promotionInfoInput.startTime) % 1 days == 0,
      InvalidMultidayPromotionTimeInterval()
    );
  }

  // Precondition that the promotion is multiday
  function _checkAddingMultidayMintPromotion(PromotionInfoInput calldata promotionInfoInput) private pure {
    bool hasStreakBonus = promotionInfoInput.numDaysClaimablePeriodStreakBonus != 0;

    if (hasStreakBonus) {
      require(
        promotionInfoInput.numRandomStreakBonusItemsToPick1 != 0 &&
          promotionInfoInput.randomStreakBonusItemTokenIds1.length != 0 &&
          promotionInfoInput.numDaysHitNeededForStreakBonus != 0,
        InvalidStreakBonus()
      );
      // Cannot specify pool2 without pool 1
      require(
        promotionInfoInput.numRandomStreakBonusItemsToPick1 != 0 ||
          promotionInfoInput.numRandomStreakBonusItemsToPick2 == 0,
        InvalidStreakBonus()
      );
      require(
        promotionInfoInput.numDaysHitNeededForStreakBonus <=
          ((promotionInfoInput.endTime - promotionInfoInput.startTime) / 1 days),
        InvalidNumDaysHitNeededForStreakBonus()
      );
      require(
        promotionInfoInput.randomStreakBonusItemTokenIds1.length == promotionInfoInput.randomStreakBonusAmounts1.length,
        LengthMismatch()
      );
      require(
        promotionInfoInput.randomStreakBonusItemTokenIds2.length == promotionInfoInput.randomStreakBonusAmounts2.length,
        LengthMismatch()
      );
      require(
        promotionInfoInput.guaranteedStreakBonusItemTokenIds.length ==
          promotionInfoInput.guaranteedStreakBonusAmounts.length,
        LengthMismatch()
      );
    } else {
      // No streak bonus
      require(
        promotionInfoInput.randomStreakBonusItemTokenIds1.length == 0 &&
          promotionInfoInput.randomStreakBonusItemTokenIds2.length == 0 &&
          promotionInfoInput.numRandomStreakBonusItemsToPick1 == 0 &&
          promotionInfoInput.numRandomStreakBonusItemsToPick2 == 0 &&
          promotionInfoInput.numDaysHitNeededForStreakBonus == 0 &&
          promotionInfoInput.guaranteedStreakBonusItemTokenIds.length == 0 &&
          promotionInfoInput.guaranteedStreakBonusAmounts.length == 0,
        InvalidStreakBonus()
      );
    }

    require(
      promotionInfoInput.numRandomStreakBonusItemsToPick1 <= promotionInfoInput.randomStreakBonusItemTokenIds1.length,
      PickingTooManyItems()
    );
    require(
      promotionInfoInput.numRandomStreakBonusItemsToPick2 <= promotionInfoInput.randomStreakBonusItemTokenIds2.length,
      PickingTooManyItems()
    );

    // Check brush input is valid
    require(
      promotionInfoInput.brushCostMissedDay % 1 ether == 0 && promotionInfoInput.brushCostMissedDay <= 25 ether,
      InvalidBrushCost()
    );
  }

  function _checkAddingSinglePromotion(PromotionInfoInput calldata promotionInfoInput) private pure {
    // Should not have any multi-day promotion specific fields set
    require(
      promotionInfoInput.numDaysHitNeededForStreakBonus == 0 &&
        promotionInfoInput.numDaysClaimablePeriodStreakBonus == 0 &&
        promotionInfoInput.numRandomStreakBonusItemsToPick1 == 0 &&
        promotionInfoInput.randomStreakBonusItemTokenIds1.length == 0 &&
        promotionInfoInput.randomStreakBonusAmounts1.length == 0 &&
        promotionInfoInput.numRandomStreakBonusItemsToPick2 == 0 &&
        promotionInfoInput.randomStreakBonusItemTokenIds2.length == 0 &&
        promotionInfoInput.randomStreakBonusAmounts2.length == 0,
      MultidaySpecified()
    );

    require(promotionInfoInput.randomItemTokenIds.length != 0, NoItemsToPickFrom());

    require(
      promotionInfoInput.numDailyRandomItemsToPick <= promotionInfoInput.randomItemTokenIds.length,
      PickingTooManyItems()
    );
  }

  function _packPromotionInfo(
    PromotionInfoInput calldata promotionInfoInput
  ) private pure returns (PromotionInfo memory) {
    return
      PromotionInfo({
        promotion: promotionInfoInput.promotion,
        startTime: promotionInfoInput.startTime,
        numDays: uint8((promotionInfoInput.endTime - promotionInfoInput.startTime) / 1 days),
        numDailyRandomItemsToPick: promotionInfoInput.numDailyRandomItemsToPick,
        minTotalXP: promotionInfoInput.minTotalXP,
        evolvedHeroOnly: promotionInfoInput.evolvedHeroOnly,
        tokenCost: uint24(promotionInfoInput.tokenCost / 1 ether),
        redeemCodeLength: promotionInfoInput.redeemCodeLength,
        adminOnly: promotionInfoInput.adminOnly,
        promotionTiedToUser: promotionInfoInput.promotionTiedToUser,
        promotionTiedToPlayer: promotionInfoInput.promotionTiedToPlayer,
        promotionMustOwnPlayer: promotionInfoInput.promotionMustOwnPlayer,
        isMultiday: promotionInfoInput.isMultiday,
        brushCostMissedDay: uint8((promotionInfoInput.brushCostMissedDay * BRUSH_COST_MISSED_DAY_MUL) / 1 ether),
        numDaysHitNeededForStreakBonus: promotionInfoInput.numDaysHitNeededForStreakBonus,
        numDaysClaimablePeriodStreakBonus: promotionInfoInput.numDaysClaimablePeriodStreakBonus,
        numRandomStreakBonusItemsToPick1: promotionInfoInput.numRandomStreakBonusItemsToPick1,
        randomStreakBonusItemTokenIds1: promotionInfoInput.randomStreakBonusItemTokenIds1,
        randomStreakBonusAmounts1: promotionInfoInput.randomStreakBonusAmounts1,
        numRandomStreakBonusItemsToPick2: promotionInfoInput.numRandomStreakBonusItemsToPick2,
        randomStreakBonusItemTokenIds2: promotionInfoInput.randomStreakBonusItemTokenIds2,
        randomStreakBonusAmounts2: promotionInfoInput.randomStreakBonusAmounts2,
        guaranteedStreakBonusItemTokenIds: promotionInfoInput.guaranteedStreakBonusItemTokenIds,
        guaranteedStreakBonusAmounts: promotionInfoInput.guaranteedStreakBonusAmounts,
        guaranteedItemTokenIds: promotionInfoInput.guaranteedItemTokenIds,
        guaranteedAmounts: promotionInfoInput.guaranteedAmounts,
        randomItemTokenIds: promotionInfoInput.randomItemTokenIds,
        randomAmounts: promotionInfoInput.randomAmounts,
        questPrerequisiteId: promotionInfoInput.questPrerequisiteId
      });
  }
}

File 2 of 2 : promotions.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

enum Promotion {
  NONE,
  STARTER,
  HALLOWEEN_2023,
  XMAS_2023,
  HALLOWEEN_2024,
  HOLIDAY4, // Just have placeholders for now
  HOLIDAY5,
  HOLIDAY6,
  HOLIDAY7,
  HOLIDAY8,
  HOLIDAY9,
  HOLIDAY10
}

enum PromotionMintStatus {
  NONE,
  SUCCESS,
  PROMOTION_ALREADY_CLAIMED,
  ORACLE_NOT_CALLED,
  MINTING_OUTSIDE_AVAILABLE_DATE,
  PLAYER_DOES_NOT_QUALIFY,
  PLAYER_NOT_HIT_ENOUGH_CLAIMS_FOR_STREAK_BONUS,
  DEPENDENT_QUEST_NOT_COMPLETED
}

struct PromotionInfoInput {
  Promotion promotion;
  uint40 startTime;
  uint40 endTime; // Exclusive
  uint8 numDailyRandomItemsToPick; // Number of items to pick
  uint40 minTotalXP; // Minimum xp required to claim
  uint256 tokenCost; // Cost in brush to start the promotion, max 16mil
  // Special promotion specific (like 1kin)
  uint8 redeemCodeLength; // Length of the redeem code
  bool adminOnly; // Only admins can mint the promotion, like for 1kin (Not used yet)
  bool promotionTiedToUser; // If the promotion is tied to a user
  bool promotionTiedToPlayer; // If the promotion is tied to the player
  bool promotionMustOwnPlayer; // Must own the player to get the promotion
  // Evolution specific
  bool evolvedHeroOnly; // Only allow evolved heroes to claim
  // Multiday specific
  bool isMultiday; // The promotion is multi-day
  uint256 brushCostMissedDay; // Cost in brush to mint the promotion if they miss a day (in ether), max 25.6 (base 100)
  uint8 numDaysHitNeededForStreakBonus; // How many days to hit for the streak bonus
  uint8 numDaysClaimablePeriodStreakBonus; // If there is a streak bonus, how many days to claim it after the promotion ends. If no final day bonus, set to 0
  uint8 numRandomStreakBonusItemsToPick1; // Number of items to pick for the streak bonus
  uint8 numRandomStreakBonusItemsToPick2; // Number of random items to pick for the streak bonus
  uint16[] randomStreakBonusItemTokenIds1;
  uint32[] randomStreakBonusAmounts1;
  uint16[] randomStreakBonusItemTokenIds2;
  uint32[] randomStreakBonusAmounts2;
  uint16[] guaranteedStreakBonusItemTokenIds;
  uint16[] guaranteedStreakBonusAmounts;
  // Single and multiday
  uint16[] guaranteedItemTokenIds; // Guaranteed items for the promotions each day, if empty then they are handled in a specific way for the promotion like daily rewards
  uint32[] guaranteedAmounts; // Corresponding amounts to the itemTokenIds
  uint16[] randomItemTokenIds; // Possible items for the promotions each day, if empty then they are handled in a specific way for the promotion like daily rewards
  uint32[] randomAmounts; // Corresponding amounts to the randomItemTokenIds
  // Quests
  uint16 questPrerequisiteId;
}

struct PromotionInfo {
  Promotion promotion;
  uint40 startTime;
  uint8 numDays;
  uint8 numDailyRandomItemsToPick; // Number of items to pick
  uint40 minTotalXP; // Minimum xp required to claim
  uint24 tokenCost; // Cost in brush to mint the promotion (in ether), max 16mil
  // Quests
  uint16 questPrerequisiteId;
  // Special promotion specific (like 1kin), could pack these these later
  uint8 redeemCodeLength; // Length of the redeem code
  bool adminOnly; // Only admins can mint the promotion, like for 1kin
  bool promotionTiedToUser; // If the promotion is tied to a user
  bool promotionTiedToPlayer; // If the promotion is tied to the player
  bool promotionMustOwnPlayer; // Must own the player to get the promotion
  // Evolution specific
  bool evolvedHeroOnly; // Only allow evolved heroes to claim
  // Multiday specific
  bool isMultiday; // The promotion is multi-day
  uint8 brushCostMissedDay; // Cost in brush to mint the promotion if they miss a day (in ether), max 25.5, base 100
  uint8 numDaysHitNeededForStreakBonus; // How many days to hit for the streak bonus
  uint8 numDaysClaimablePeriodStreakBonus; // If there is a streak bonus, how many days to claim it after the promotion ends. If no final day bonus, set to 0
  uint8 numRandomStreakBonusItemsToPick1; // Number of items to pick for the streak bonus
  uint8 numRandomStreakBonusItemsToPick2; // Number of random items to pick for the streak bonus
  // Misc
  uint16[] randomStreakBonusItemTokenIds1;
  uint32[] randomStreakBonusAmounts1;
  uint16[] randomStreakBonusItemTokenIds2; // Not used yet
  uint32[] randomStreakBonusAmounts2; // Not used yet
  uint16[] guaranteedStreakBonusItemTokenIds; // Not used yet
  uint16[] guaranteedStreakBonusAmounts; // Not used yet
  // Single and multiday
  uint16[] guaranteedItemTokenIds; // Guaranteed items for the promotions each day, if empty then they are handled in a specific way for the promotion like daily rewards
  uint32[] guaranteedAmounts; // Corresponding amounts to the itemTokenIds
  uint16[] randomItemTokenIds; // Possible items for the promotions each day, if empty then they are handled in a specific way for the promotion like daily rewards
  uint32[] randomAmounts; // Corresponding amounts to the randomItemTokenIds
}

uint256 constant BRUSH_COST_MISSED_DAY_MUL = 10;

Settings
{
  "evmVersion": "cancun",
  "optimizer": {
    "enabled": true,
    "runs": 9999999,
    "details": {
      "yul": true
    }
  },
  "viaIR": true,
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"name":"InvalidBrushCost","type":"error"},{"inputs":[],"name":"InvalidMultidayPromotionTimeInterval","type":"error"},{"inputs":[],"name":"InvalidNumDaysHitNeededForStreakBonus","type":"error"},{"inputs":[],"name":"InvalidPromotion","type":"error"},{"inputs":[],"name":"InvalidStreakBonus","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"inputs":[],"name":"MultidaySpecified","type":"error"},{"inputs":[],"name":"NoItemsToPickFrom","type":"error"},{"inputs":[],"name":"NoNumItemsToPick","type":"error"},{"inputs":[],"name":"PickingTooManyItems","type":"error"},{"inputs":[],"name":"PromotionAlreadyAdded","type":"error"},{"inputs":[],"name":"PromotionNotSet","type":"error"},{"inputs":[],"name":"StartTimeMustBeHigherEndTime","type":"error"}]

60808060405234601b576134e890816100208239308160080152f35b5f80fdfe610580604052307f0000000000000000000000000000000000000000000000000000000000000000146004361015610035575f80fd5b5f3560e01c806395e3c00e146113a05763f36d4f7b14610053575f80fd5b61138e57610060366125ed565b61006981612758565b6100766101808201612678565b156113925761008481612b14565b61008d81612f37565b6101605235600c81101561138e576100a491612662565b610160515161012052600c610120511015611361578054610160516020015160081b65ffffffffff0016610160516040015160301b66ff00000000000016610160516060015160381b67ff0000000000000016610160516080015160401b6cffffffffff0000000000000000166101605160a0015160681b6fffffff00000000000000000000000000166101605160c0015160801b71ffff00000000000000000000000000000000166101605160e0015160901b72ff00000000000000000000000000000000000016610160516101000151151560981b610160516101200151151560a01b91610160516101400151151560a81b93610160516101600151151560b01b95610160516101800151151560b81b97610160516101a00151151560c01b99610160516101c0015160c81b79ff00000000000000000000000000000000000000000000000000169b610160516101e0015160d01b7aff0000000000000000000000000000000000000000000000000000169d61016051610200015160d81b7bff000000000000000000000000000000000000000000000000000000166101405261016051610220015160e01b7cff00000000000000000000000000000000000000000000000000000000166101005261016051610240015160e81b7dff0000000000000000000000000000000000000000000000000000000000169f6101205160ff16907fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000016177fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff16177fffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff16177fffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff16177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff16177fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169073ff0000000000000000000000000000000000000016177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169074ff000000000000000000000000000000000000000016177fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff169075ff00000000000000000000000000000000000000000016177fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff169076ff0000000000000000000000000000000000000000000016177fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff169077ff000000000000000000000000000000000000000000000016177fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169078ff00000000000000000000000000000000000000000000000016177fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff16177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610140511761010051171781556001810161016051610260015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe57602090835483855580841061132e575b5001915f5260205f208160041c915f5b8381106112ee57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff081169003806112a1575b505050506002810161028061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe57602090835483855580841061126e575b5001915f5260205f208160031c915f5b83811061122c57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff881169003806111da575b50505050600381016102a061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106111a7575b5001915f5260205f208160041c915f5b83811061116757507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0811690038061111a575b50505050600481016102c061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106110e7575b5001915f5260205f208160031c915f5b8381106110a557507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380611053575b50505050600581016102e061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410611020575b5001915f5260205f208160041c915f5b838110610fe057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08116900380610f93575b505050506006810161030061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410610f60575b5001915f5260205f208160041c915f5b838110610f2057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08116900380610ed3575b505050506007810161032061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410610ea0575b5001915f5260205f208160041c915f5b838110610e6057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08116900380610e13575b505050506008810161034061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410610de0575b5001915f5260205f208160031c915f5b838110610d9e57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380610d4c575b50505050600981019061036061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908454838655808410610cba575b5001925f5260205f208160041c905f5b828110610c7a57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff083168084039303610c2b575b505050600a91500161038061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410610b6c575b5001915f5260205f208160031c915f5b838110610b2a57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380610adf57005b925f935f5b818110610af2575050500155005b9091946020610b2060019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101610ae4565b5f5f5b60088110610b42575083820155600101610aab565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601610b2d565b610b9a90855f52835f20600780870160031c820192601c8860021b1680610ba0575b500160031c0190612685565b5f610a9b565b610bf8907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c169055565b5f610b8e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f9485935b808710610c47575050600a945001555f8080610a58565b90936020610c6f60019261ffff885116908a851b61ffff809160031b9316831b921b19161790565b950196019590610c30565b5f5f5b60108110610c92575082820155600101610a23565b875190979160019160209161ffff60048c901b81811b199092169216901b1792019701610c7d565b610ce890865f52835f20600f80870160041c820192601e8860011b1680610cee575b500160041c0190612685565b5f610a13565b610d46907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c169055565b5f610cdc565b925f935f5b818110610d665750505001555f8080806109cf565b9091946020610d9460019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101610d51565b5f5f5b60088110610db657508382015560010161099c565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601610da1565b610e0d90855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f61098c565b925f935f5b818110610e2d5750505001555f808080610949565b9091946020610e5660019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101610e18565b5f5f5b60108110610e78575083820155600101610916565b865190969160019160209161ffff60048b901b81811b199092169216901b1792019601610e63565b610ecd90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f610906565b925f935f5b818110610eed5750505001555f8080806108c3565b9091946020610f1660019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101610ed8565b5f5f5b60108110610f38575083820155600101610890565b865190969160019160209161ffff60048b901b81811b199092169216901b1792019601610f23565b610f8d90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f610880565b925f935f5b818110610fad5750505001555f80808061083d565b9091946020610fd660019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101610f98565b5f5f5b60108110610ff857508382015560010161080a565b865190969160019160209161ffff60048b901b81811b199092169216901b1792019601610fe3565b61104d90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f6107fa565b925f935f5b81811061106d5750505001555f8080806107b7565b909194602061109b60019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101611058565b5f5f5b600881106110bd575083820155600101610784565b865190969160019160209163ffffffff60058b901b81811b199092169216901b17920196016110a8565b61111490855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f610774565b925f935f5b8181106111345750505001555f808080610731565b909194602061115d60019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b960192910161111f565b5f5f5b6010811061117f5750838201556001016106fe565b865190969160019160209161ffff60048b901b81811b199092169216901b179201960161116a565b6111d490855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f6106ee565b925f935f5b8181106111f45750505001555f8080806106ab565b909194602061122260019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b96019291016111df565b5f5f5b60088110611244575083820155600101610678565b865190969160019160209163ffffffff60058b901b81811b199092169216901b179201960161122f565b61129b90855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f610668565b925f935f5b8181106112bb5750505001555f808080610625565b90919460206112e460019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b96019291016112a6565b5f5f5b601081106113065750838201556001016105f2565b865190969160019160209161ffff60048b901b81811b199092169216901b17920196016112f1565b61135b90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f6105e2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b61139b81612982565b610084565b5061138e576113ae366125ed565b906113b882612758565b813590600c82101561138e5760ff6113d08383612662565b5416600c811015611361576125c557611406836113f361018061140e9601612678565b156125bc5761140181612b14565b612f37565b60e052612662565b60e0515160a052600c60a051101561136157805460e0516020015160081b65ffffffffff001660e0516040015160301b66ff0000000000001660e0516060015160381b67ff000000000000001660e0516080015160401b6cffffffffff00000000000000001660e05160a0015160681b6fffffff000000000000000000000000001660e05160c0015160801b71ffff000000000000000000000000000000001660e05160e0015160901b72ff0000000000000000000000000000000000001660e0516101000151151560981b60e0516101200151151560a01b9160e0516101400151151560a81b9360e0516101600151151560b01b9560e0516101800151151560b81b9760e0516101a00151151560c01b9960e0516101c0015160c81b79ff00000000000000000000000000000000000000000000000000169b60e0516101e0015160d01b7aff0000000000000000000000000000000000000000000000000000169d60e051610200015160d81b7bff0000000000000000000000000000000000000000000000000000001660c05260e051610220015160e01b7cff000000000000000000000000000000000000000000000000000000001660805260e051610240015160e81b7dff0000000000000000000000000000000000000000000000000000000000169f60a05160ff16907fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000016177fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff16177fffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff16177fffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff16177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff16177fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169073ff0000000000000000000000000000000000000016177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169074ff000000000000000000000000000000000000000016177fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff169075ff00000000000000000000000000000000000000000016177fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff169076ff0000000000000000000000000000000000000000000016177fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff169077ff000000000000000000000000000000000000000000000016177fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169078ff00000000000000000000000000000000000000000000000016177fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff16177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660c05117608051171781556001810160e051610260015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410612589575b5001915f5260205f208160041c915f5b83811061254957507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff081169003806124fc575b505050506002810161028060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106124c9575b5001915f5260205f208160031c915f5b83811061248757507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380612435575b50505050600381016102a060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410612402575b5001915f5260205f208160041c915f5b8381106123c257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08116900380612375575b50505050600481016102c060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410612342575b5001915f5260205f208160031c915f5b83811061230057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff881169003806122ae575b50505050600581016102e060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe57602090835483855580841061227b575b5001915f5260205f208160041c915f5b83811061223b57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff081169003806121ee575b505050506006810161030060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106121bb575b5001915f5260205f208160041c915f5b83811061217b57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0811690038061212e575b505050506007810161032060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106120fb575b5001915f5260205f208160041c915f5b8381106120bb57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0811690038061206e575b505050506008810161034060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe57602090835483855580841061203b575b5001915f5260205f208160031c915f5b838110611ff957507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380611fa7575b50505050600981019061036060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908454838655808410611f74575b5001925f5260205f208160041c905f5b828110611f3457507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff083168084039303611ee5575b505050600a91500161038060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410611eb2575b5001915f5260205f208160031c915f5b838110611e7057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380611e2557005b925f935f5b818110611e38575050500155005b9091946020611e6660019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101611e2a565b5f5f5b60088110611e88575083820155600101611df1565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601611e73565b611edf90855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f611de1565b5f9485935b808710611f01575050600a945001555f8080611d9f565b90936020611f2960019261ffff885116908a851b61ffff809160031b9316831b921b19161790565b950196019590611eea565b5f5f5b60108110611f4c575082820155600101611d6a565b875190979160019160209161ffff60048c901b81811b199092169216901b1792019701611f37565b611fa190865f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611d5a565b925f935f5b818110611fc15750505001555f808080611d17565b9091946020611fef60019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101611fac565b5f5f5b60088110612011575083820155600101611ce4565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601611ffc565b61206890855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f611cd4565b925f935f5b8181106120885750505001555f808080611c92565b90919460206120b160019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101612073565b5f5f5b601081106120d3575083820155600101611c5f565b865190969160019160209161ffff60048b901b81811b199092169216901b17920196016120be565b61212890855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611c4f565b925f935f5b8181106121485750505001555f808080611c0d565b909194602061217160019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101612133565b5f5f5b60108110612193575083820155600101611bda565b865190969160019160209161ffff60048b901b81811b199092169216901b179201960161217e565b6121e890855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611bca565b925f935f5b8181106122085750505001555f808080611b88565b909194602061223160019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b96019291016121f3565b5f5f5b60108110612253575083820155600101611b55565b865190969160019160209161ffff60048b901b81811b199092169216901b179201960161223e565b6122a890855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611b45565b925f935f5b8181106122c85750505001555f808080611b03565b90919460206122f660019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b96019291016122b3565b5f5f5b60088110612318575083820155600101611ad0565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601612303565b61236f90855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f611ac0565b925f935f5b81811061238f5750505001555f808080611a7e565b90919460206123b860019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b960192910161237a565b5f5f5b601081106123da575083820155600101611a4b565b865190969160019160209161ffff60048b901b81811b199092169216901b17920196016123c5565b61242f90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611a3b565b925f935f5b81811061244f5750505001555f8080806119f9565b909194602061247d60019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b960192910161243a565b5f5f5b6008811061249f5750838201556001016119c6565b865190969160019160209163ffffffff60058b901b81811b199092169216901b179201960161248a565b6124f690855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f6119b6565b925f935f5b8181106125165750505001555f808080611974565b909194602061253f60019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101612501565b5f5f5b60108110612561575083820155600101611941565b865190969160019160209161ffff60048b901b81811b199092169216901b179201960161254c565b6125b690855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611931565b61140181612982565b7fa4b6ba64000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261138e57600435916024359067ffffffffffffffff821161138e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826103a09203011261138e5760040190565b90600c811015611361575f5260205260405f2090565b35801515810361138e5790565b818110612690575050565b5f8155600101612685565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561138e570180359067ffffffffffffffff821161138e57602001918160051b3603831361138e57565b3564ffffffffff8116810361138e5790565b3560ff8116810361138e5790565b9064ffffffffff8091169116039064ffffffffff821161272b57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61276661034082018261269b565b905061277661036083018361269b565b9190500361295a578035600c81101561138e571561293257602081019061279c826126ef565b90604081019164ffffffffff806127b2856126ef565b169116101561290a576060810160ff6127ca82612701565b16158015906128f2575b156128ca576127e761030083018361269b565b1580159291506128b3575b501561288b5760a0670de0b6b3a7640000910135066128635764ffffffffff612832819361282c61282662015180956126ef565b916126ef565b9061270f565b16061661283b57565b7f4e048ef7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f15d50d14000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f57447900000000000000000000000000000000000000000000000000000000005f5260045ffd5b600191506128c260ff91612701565b16145f6127f2565b7fec18e361000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061290161030083018361269b565b905015156127d4565b7f5b1b089b000000000000000000000000000000000000000000000000000000005f5260045ffd5b7ff93f123f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fff633a38000000000000000000000000000000000000000000000000000000005f5260045ffd5b60ff6129916101c08301612701565b161580612afd575b80612ae6575b80612acf575b80612ab8575b80612aa1575b80612a8a575b80612a73575b15612a4b5761034081016129d1818361269b565b905015612a23576129f060ff916129ea60608501612701565b9361269b565b92905016116129fb57565b7f8826ad45000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f5cf0d5e1000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f752550a3000000000000000000000000000000000000000000000000000000005f5260045ffd5b50612a826102a082018261269b565b9050156129bd565b50612a9961028082018261269b565b9050156129b7565b5060ff612ab16102208301612701565b16156129b1565b50612ac761026082018261269b565b9050156129ab565b50612ade61024082018261269b565b9050156129a5565b5060ff612af66102008301612701565b161561299f565b5060ff612b0d6101e08301612701565b1615612999565b60ff612b236101e08301612701565b1615612d3057610200810160ff612b3982612701565b16151580612d18575b80612d00575b15612cc157612b5860ff91612701565b1615801590612ce9575b15612cc157612b746101c08201612701565b60ff64ffffffffff6201518081612b9c612b90604088016126ef565b61282c602089016126ef565b160416911611612c9957612bb461024082018261269b565b9050612bc461026083018361269b565b9190500361295a57612bda61028082018261269b565b9050612bea6102a083018361269b565b9190500361295a57612c006102c082018261269b565b9050612c106102e083018361269b565b9190500361295a575b612c266102008201612701565b60ff612c3661024084018461269b565b92905016116129fb57612c4c6102208201612701565b60ff612c5c61028084018461269b565b92905016116129fb576101a00135670de0b6b3a76400008106159081612c85575b501561286357565b68015af1d78b58c40000915011155f612c7d565b7f95f3de17000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4b063bf3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5060ff612cf96102208301612701565b1615612b62565b5060ff612d106101c08401612701565b161515612b48565b50612d2761024083018361269b565b90501515612b42565b612d3e61024082018261269b565b90501580612e04575b80612ded575b80612dd6575b80612dbf575b80612da8575b80612d91575b612c19577f4b063bf3000000000000000000000000000000000000000000000000000000005f5260045ffd5b50612da06102e082018261269b565b905015612d65565b50612db76102c082018261269b565b905015612d5f565b5060ff612dcf6101c08301612701565b1615612d59565b5060ff612de66102208301612701565b1615612d53565b5060ff612dfd6102008301612701565b1615612d4d565b50612e1361028082018261269b565b905015612d47565b604051906103a0820182811067ffffffffffffffff821117610bfe57604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff821117610bfe57604052565b67ffffffffffffffff8111610bfe5760051b60200190565b9291612eab612ea683612e80565b612e3c565b93828552602085019260051b810191821161138e57915b818310612ece57505050565b823561ffff8116810361138e57815260209283019201612ec2565b9291612ef7612ea683612e80565b93828552602085019260051b810191821161138e57915b818310612f1a57505050565b823563ffffffff8116810361138e57815260209283019201612f0e565b610500526060610380612f48612e1b565b5f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a08201525f6101c08201525f6101e08201525f6102008201525f6102208201525f6102408201528261026082015282610280820152826102a0820152826102c0820152826102e0820152826103008201528261032082015282610340820152826103608201520152600c6105005135101561138e576201518064ffffffffff6130426020610500510161302c816126ef565b6105405261282c612826604061050051016126ef565b160461305360606105005101612701565b61024052613066608061050051016126ef565b6102c05261307a6101606105005101612678565b9061308a60c06105005101612701565b6103405261309d60e06105005101612678565b6103c0526130b16101006105005101612678565b610440526130c56101206105005101612678565b6104c0526130d96101406105005101612678565b610560526130ed6101806105005101612678565b6101a06105005101359283600a810204600a148415171561272b576131186101c06105005101612701565b906131296101e06105005101612701565b9361313a6102006105005101612701565b6101805261315261024061050051016105005161269b565b6101e0526102005261316e61026061050051016105005161269b565b61028052610300526131866102206105005101612701565b6101a05261319e61028061050051016105005161269b565b61038052610400526131ba6102a061050051016105005161269b565b61048052610520526131d66102c061050051016105005161269b565b6104e0526104a0526131f26102e061050051016105005161269b565b610460526104205261320e61030061050051016105005161269b565b6103e0526103a05261322a61032061050051016105005161269b565b610360526103205261324661034061050051016105005161269b565b6102e0526102a05261326261036061050051016105005161269b565b610260526102205261038061050051013561ffff8116810361138e5760ff968795869461ffff600a9487670de0b6b3a76400009761329e612e1b565b6101c05261050051356101c0515264ffffffffff610540511660206101c05101521660406101c051015287610240511660606101c051015264ffffffffff6102c0511660806101c051015262ffffff8760a0610500510135041660a06101c05101521660c06101c051015285610340511660e06101c05101526103c05115156101006101c05101526104405115156101206101c05101526104c05115156101406101c05101526105605115156101606101c051015215156101806101c051015215156101a06101c05101520204166101c080510152166101e06101c0510152166102006101c051015260ff61018051166102206101c051015260ff6101a051166102406101c05101526133b8366101e05161020051612e98565b6102606101c05101526133d2366102805161030051612ee9565b6102806101c05101526133ec366103805161040051612e98565b6102a06101c0510152613406366104805161052051612ee9565b6102c06101c0510152613420366104e0516104a051612e98565b6102e06101c051015261343a366104605161042051612e98565b6103006101c0510152613454366103e0516103a051612e98565b6103206101c051015261346e366103605161032051612ee9565b6103406101c0510152613488366102e0516102a051612e98565b6103606101c05101526134a2366102605161022051612ee9565b6103806101c05101526101c0519056fea2646970667358221220f4ece3e322e85d263906d6527019bb7f55dccb2f1727d872eaf57b8d5f481bec64736f6c634300081c0033

Deployed Bytecode

0x610580604052307f000000000000000000000000201ffa5be3886d19ef2f18da877ff3b9e34d10c9146004361015610035575f80fd5b5f3560e01c806395e3c00e146113a05763f36d4f7b14610053575f80fd5b61138e57610060366125ed565b61006981612758565b6100766101808201612678565b156113925761008481612b14565b61008d81612f37565b6101605235600c81101561138e576100a491612662565b610160515161012052600c610120511015611361578054610160516020015160081b65ffffffffff0016610160516040015160301b66ff00000000000016610160516060015160381b67ff0000000000000016610160516080015160401b6cffffffffff0000000000000000166101605160a0015160681b6fffffff00000000000000000000000000166101605160c0015160801b71ffff00000000000000000000000000000000166101605160e0015160901b72ff00000000000000000000000000000000000016610160516101000151151560981b610160516101200151151560a01b91610160516101400151151560a81b93610160516101600151151560b01b95610160516101800151151560b81b97610160516101a00151151560c01b99610160516101c0015160c81b79ff00000000000000000000000000000000000000000000000000169b610160516101e0015160d01b7aff0000000000000000000000000000000000000000000000000000169d61016051610200015160d81b7bff000000000000000000000000000000000000000000000000000000166101405261016051610220015160e01b7cff00000000000000000000000000000000000000000000000000000000166101005261016051610240015160e81b7dff0000000000000000000000000000000000000000000000000000000000169f6101205160ff16907fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000016177fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff16177fffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff16177fffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff16177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff16177fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169073ff0000000000000000000000000000000000000016177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169074ff000000000000000000000000000000000000000016177fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff169075ff00000000000000000000000000000000000000000016177fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff169076ff0000000000000000000000000000000000000000000016177fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff169077ff000000000000000000000000000000000000000000000016177fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169078ff00000000000000000000000000000000000000000000000016177fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff16177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610140511761010051171781556001810161016051610260015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe57602090835483855580841061132e575b5001915f5260205f208160041c915f5b8381106112ee57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff081169003806112a1575b505050506002810161028061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe57602090835483855580841061126e575b5001915f5260205f208160031c915f5b83811061122c57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff881169003806111da575b50505050600381016102a061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106111a7575b5001915f5260205f208160041c915f5b83811061116757507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0811690038061111a575b50505050600481016102c061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106110e7575b5001915f5260205f208160031c915f5b8381106110a557507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380611053575b50505050600581016102e061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410611020575b5001915f5260205f208160041c915f5b838110610fe057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08116900380610f93575b505050506006810161030061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410610f60575b5001915f5260205f208160041c915f5b838110610f2057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08116900380610ed3575b505050506007810161032061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410610ea0575b5001915f5260205f208160041c915f5b838110610e6057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08116900380610e13575b505050506008810161034061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410610de0575b5001915f5260205f208160031c915f5b838110610d9e57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380610d4c575b50505050600981019061036061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908454838655808410610cba575b5001925f5260205f208160041c905f5b828110610c7a57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff083168084039303610c2b575b505050600a91500161038061016051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410610b6c575b5001915f5260205f208160031c915f5b838110610b2a57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380610adf57005b925f935f5b818110610af2575050500155005b9091946020610b2060019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101610ae4565b5f5f5b60088110610b42575083820155600101610aab565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601610b2d565b610b9a90855f52835f20600780870160031c820192601c8860021b1680610ba0575b500160031c0190612685565b5f610a9b565b610bf8907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c169055565b5f610b8e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f9485935b808710610c47575050600a945001555f8080610a58565b90936020610c6f60019261ffff885116908a851b61ffff809160031b9316831b921b19161790565b950196019590610c30565b5f5f5b60108110610c92575082820155600101610a23565b875190979160019160209161ffff60048c901b81811b199092169216901b1792019701610c7d565b610ce890865f52835f20600f80870160041c820192601e8860011b1680610cee575b500160041c0190612685565b5f610a13565b610d46907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c169055565b5f610cdc565b925f935f5b818110610d665750505001555f8080806109cf565b9091946020610d9460019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101610d51565b5f5f5b60088110610db657508382015560010161099c565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601610da1565b610e0d90855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f61098c565b925f935f5b818110610e2d5750505001555f808080610949565b9091946020610e5660019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101610e18565b5f5f5b60108110610e78575083820155600101610916565b865190969160019160209161ffff60048b901b81811b199092169216901b1792019601610e63565b610ecd90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f610906565b925f935f5b818110610eed5750505001555f8080806108c3565b9091946020610f1660019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101610ed8565b5f5f5b60108110610f38575083820155600101610890565b865190969160019160209161ffff60048b901b81811b199092169216901b1792019601610f23565b610f8d90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f610880565b925f935f5b818110610fad5750505001555f80808061083d565b9091946020610fd660019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101610f98565b5f5f5b60108110610ff857508382015560010161080a565b865190969160019160209161ffff60048b901b81811b199092169216901b1792019601610fe3565b61104d90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f6107fa565b925f935f5b81811061106d5750505001555f8080806107b7565b909194602061109b60019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101611058565b5f5f5b600881106110bd575083820155600101610784565b865190969160019160209163ffffffff60058b901b81811b199092169216901b17920196016110a8565b61111490855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f610774565b925f935f5b8181106111345750505001555f808080610731565b909194602061115d60019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b960192910161111f565b5f5f5b6010811061117f5750838201556001016106fe565b865190969160019160209161ffff60048b901b81811b199092169216901b179201960161116a565b6111d490855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f6106ee565b925f935f5b8181106111f45750505001555f8080806106ab565b909194602061122260019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b96019291016111df565b5f5f5b60088110611244575083820155600101610678565b865190969160019160209163ffffffff60058b901b81811b199092169216901b179201960161122f565b61129b90855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f610668565b925f935f5b8181106112bb5750505001555f808080610625565b90919460206112e460019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b96019291016112a6565b5f5f5b601081106113065750838201556001016105f2565b865190969160019160209161ffff60048b901b81811b199092169216901b17920196016112f1565b61135b90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f6105e2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b61139b81612982565b610084565b5061138e576113ae366125ed565b906113b882612758565b813590600c82101561138e5760ff6113d08383612662565b5416600c811015611361576125c557611406836113f361018061140e9601612678565b156125bc5761140181612b14565b612f37565b60e052612662565b60e0515160a052600c60a051101561136157805460e0516020015160081b65ffffffffff001660e0516040015160301b66ff0000000000001660e0516060015160381b67ff000000000000001660e0516080015160401b6cffffffffff00000000000000001660e05160a0015160681b6fffffff000000000000000000000000001660e05160c0015160801b71ffff000000000000000000000000000000001660e05160e0015160901b72ff0000000000000000000000000000000000001660e0516101000151151560981b60e0516101200151151560a01b9160e0516101400151151560a81b9360e0516101600151151560b01b9560e0516101800151151560b81b9760e0516101a00151151560c01b9960e0516101c0015160c81b79ff00000000000000000000000000000000000000000000000000169b60e0516101e0015160d01b7aff0000000000000000000000000000000000000000000000000000169d60e051610200015160d81b7bff0000000000000000000000000000000000000000000000000000001660c05260e051610220015160e01b7cff000000000000000000000000000000000000000000000000000000001660805260e051610240015160e81b7dff0000000000000000000000000000000000000000000000000000000000169f60a05160ff16907fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000016177fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff16177fffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff16177fffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff16177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff16177fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169073ff0000000000000000000000000000000000000016177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169074ff000000000000000000000000000000000000000016177fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff169075ff00000000000000000000000000000000000000000016177fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff169076ff0000000000000000000000000000000000000000000016177fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff169077ff000000000000000000000000000000000000000000000016177fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169078ff00000000000000000000000000000000000000000000000016177fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff16177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660c05117608051171781556001810160e051610260015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410612589575b5001915f5260205f208160041c915f5b83811061254957507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff081169003806124fc575b505050506002810161028060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106124c9575b5001915f5260205f208160031c915f5b83811061248757507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380612435575b50505050600381016102a060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410612402575b5001915f5260205f208160041c915f5b8381106123c257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08116900380612375575b50505050600481016102c060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410612342575b5001915f5260205f208160031c915f5b83811061230057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff881169003806122ae575b50505050600581016102e060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe57602090835483855580841061227b575b5001915f5260205f208160041c915f5b83811061223b57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff081169003806121ee575b505050506006810161030060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106121bb575b5001915f5260205f208160041c915f5b83811061217b57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0811690038061212e575b505050506007810161032060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe5760209083548385558084106120fb575b5001915f5260205f208160041c915f5b8381106120bb57507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0811690038061206e575b505050506008810161034060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe57602090835483855580841061203b575b5001915f5260205f208160031c915f5b838110611ff957507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380611fa7575b50505050600981019061036060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908454838655808410611f74575b5001925f5260205f208160041c905f5b828110611f3457507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff083168084039303611ee5575b505050600a91500161038060e051015180519067ffffffffffffffff8211610bfe57680100000000000000008211610bfe576020908354838555808410611eb2575b5001915f5260205f208160031c915f5b838110611e7057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88116900380611e2557005b925f935f5b818110611e38575050500155005b9091946020611e6660019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101611e2a565b5f5f5b60088110611e88575083820155600101611df1565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601611e73565b611edf90855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f611de1565b5f9485935b808710611f01575050600a945001555f8080611d9f565b90936020611f2960019261ffff885116908a851b61ffff809160031b9316831b921b19161790565b950196019590611eea565b5f5f5b60108110611f4c575082820155600101611d6a565b875190979160019160209161ffff60048c901b81811b199092169216901b1792019701611f37565b611fa190865f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611d5a565b925f935f5b818110611fc15750505001555f808080611d17565b9091946020611fef60019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b9601929101611fac565b5f5f5b60088110612011575083820155600101611ce4565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601611ffc565b61206890855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f611cd4565b925f935f5b8181106120885750505001555f808080611c92565b90919460206120b160019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101612073565b5f5f5b601081106120d3575083820155600101611c5f565b865190969160019160209161ffff60048b901b81811b199092169216901b17920196016120be565b61212890855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611c4f565b925f935f5b8181106121485750505001555f808080611c0d565b909194602061217160019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101612133565b5f5f5b60108110612193575083820155600101611bda565b865190969160019160209161ffff60048b901b81811b199092169216901b179201960161217e565b6121e890855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611bca565b925f935f5b8181106122085750505001555f808080611b88565b909194602061223160019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b96019291016121f3565b5f5f5b60108110612253575083820155600101611b55565b865190969160019160209161ffff60048b901b81811b199092169216901b179201960161223e565b6122a890855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611b45565b925f935f5b8181106122c85750505001555f808080611b03565b90919460206122f660019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b96019291016122b3565b5f5f5b60088110612318575083820155600101611ad0565b865190969160019160209163ffffffff60058b901b81811b199092169216901b1792019601612303565b61236f90855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f611ac0565b925f935f5b81811061238f5750505001555f808080611a7e565b90919460206123b860019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b960192910161237a565b5f5f5b601081106123da575083820155600101611a4b565b865190969160019160209161ffff60048b901b81811b199092169216901b17920196016123c5565b61242f90855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611a3b565b925f935f5b81811061244f5750505001555f8080806119f9565b909194602061247d60019263ffffffff895116908560021b63ffffffff809160031b9316831b921b19161790565b960192910161243a565b5f5f5b6008811061249f5750838201556001016119c6565b865190969160019160209163ffffffff60058b901b81811b199092169216901b179201960161248a565b6124f690855f52835f20600780870160031c820192601c8860021b1680610ba057500160031c0190612685565b5f6119b6565b925f935f5b8181106125165750505001555f808080611974565b909194602061253f60019261ffff8951169085851b61ffff809160031b9316831b921b19161790565b9601929101612501565b5f5f5b60108110612561575083820155600101611941565b865190969160019160209161ffff60048b901b81811b199092169216901b179201960161254c565b6125b690855f52835f20600f80870160041c820192601e8860011b1680610cee57500160041c0190612685565b5f611931565b61140181612982565b7fa4b6ba64000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261138e57600435916024359067ffffffffffffffff821161138e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826103a09203011261138e5760040190565b90600c811015611361575f5260205260405f2090565b35801515810361138e5790565b818110612690575050565b5f8155600101612685565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561138e570180359067ffffffffffffffff821161138e57602001918160051b3603831361138e57565b3564ffffffffff8116810361138e5790565b3560ff8116810361138e5790565b9064ffffffffff8091169116039064ffffffffff821161272b57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61276661034082018261269b565b905061277661036083018361269b565b9190500361295a578035600c81101561138e571561293257602081019061279c826126ef565b90604081019164ffffffffff806127b2856126ef565b169116101561290a576060810160ff6127ca82612701565b16158015906128f2575b156128ca576127e761030083018361269b565b1580159291506128b3575b501561288b5760a0670de0b6b3a7640000910135066128635764ffffffffff612832819361282c61282662015180956126ef565b916126ef565b9061270f565b16061661283b57565b7f4e048ef7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f15d50d14000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f57447900000000000000000000000000000000000000000000000000000000005f5260045ffd5b600191506128c260ff91612701565b16145f6127f2565b7fec18e361000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061290161030083018361269b565b905015156127d4565b7f5b1b089b000000000000000000000000000000000000000000000000000000005f5260045ffd5b7ff93f123f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fff633a38000000000000000000000000000000000000000000000000000000005f5260045ffd5b60ff6129916101c08301612701565b161580612afd575b80612ae6575b80612acf575b80612ab8575b80612aa1575b80612a8a575b80612a73575b15612a4b5761034081016129d1818361269b565b905015612a23576129f060ff916129ea60608501612701565b9361269b565b92905016116129fb57565b7f8826ad45000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f5cf0d5e1000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f752550a3000000000000000000000000000000000000000000000000000000005f5260045ffd5b50612a826102a082018261269b565b9050156129bd565b50612a9961028082018261269b565b9050156129b7565b5060ff612ab16102208301612701565b16156129b1565b50612ac761026082018261269b565b9050156129ab565b50612ade61024082018261269b565b9050156129a5565b5060ff612af66102008301612701565b161561299f565b5060ff612b0d6101e08301612701565b1615612999565b60ff612b236101e08301612701565b1615612d3057610200810160ff612b3982612701565b16151580612d18575b80612d00575b15612cc157612b5860ff91612701565b1615801590612ce9575b15612cc157612b746101c08201612701565b60ff64ffffffffff6201518081612b9c612b90604088016126ef565b61282c602089016126ef565b160416911611612c9957612bb461024082018261269b565b9050612bc461026083018361269b565b9190500361295a57612bda61028082018261269b565b9050612bea6102a083018361269b565b9190500361295a57612c006102c082018261269b565b9050612c106102e083018361269b565b9190500361295a575b612c266102008201612701565b60ff612c3661024084018461269b565b92905016116129fb57612c4c6102208201612701565b60ff612c5c61028084018461269b565b92905016116129fb576101a00135670de0b6b3a76400008106159081612c85575b501561286357565b68015af1d78b58c40000915011155f612c7d565b7f95f3de17000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4b063bf3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5060ff612cf96102208301612701565b1615612b62565b5060ff612d106101c08401612701565b161515612b48565b50612d2761024083018361269b565b90501515612b42565b612d3e61024082018261269b565b90501580612e04575b80612ded575b80612dd6575b80612dbf575b80612da8575b80612d91575b612c19577f4b063bf3000000000000000000000000000000000000000000000000000000005f5260045ffd5b50612da06102e082018261269b565b905015612d65565b50612db76102c082018261269b565b905015612d5f565b5060ff612dcf6101c08301612701565b1615612d59565b5060ff612de66102208301612701565b1615612d53565b5060ff612dfd6102008301612701565b1615612d4d565b50612e1361028082018261269b565b905015612d47565b604051906103a0820182811067ffffffffffffffff821117610bfe57604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff821117610bfe57604052565b67ffffffffffffffff8111610bfe5760051b60200190565b9291612eab612ea683612e80565b612e3c565b93828552602085019260051b810191821161138e57915b818310612ece57505050565b823561ffff8116810361138e57815260209283019201612ec2565b9291612ef7612ea683612e80565b93828552602085019260051b810191821161138e57915b818310612f1a57505050565b823563ffffffff8116810361138e57815260209283019201612f0e565b610500526060610380612f48612e1b565b5f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a08201525f6101c08201525f6101e08201525f6102008201525f6102208201525f6102408201528261026082015282610280820152826102a0820152826102c0820152826102e0820152826103008201528261032082015282610340820152826103608201520152600c6105005135101561138e576201518064ffffffffff6130426020610500510161302c816126ef565b6105405261282c612826604061050051016126ef565b160461305360606105005101612701565b61024052613066608061050051016126ef565b6102c05261307a6101606105005101612678565b9061308a60c06105005101612701565b6103405261309d60e06105005101612678565b6103c0526130b16101006105005101612678565b610440526130c56101206105005101612678565b6104c0526130d96101406105005101612678565b610560526130ed6101806105005101612678565b6101a06105005101359283600a810204600a148415171561272b576131186101c06105005101612701565b906131296101e06105005101612701565b9361313a6102006105005101612701565b6101805261315261024061050051016105005161269b565b6101e0526102005261316e61026061050051016105005161269b565b61028052610300526131866102206105005101612701565b6101a05261319e61028061050051016105005161269b565b61038052610400526131ba6102a061050051016105005161269b565b61048052610520526131d66102c061050051016105005161269b565b6104e0526104a0526131f26102e061050051016105005161269b565b610460526104205261320e61030061050051016105005161269b565b6103e0526103a05261322a61032061050051016105005161269b565b610360526103205261324661034061050051016105005161269b565b6102e0526102a05261326261036061050051016105005161269b565b610260526102205261038061050051013561ffff8116810361138e5760ff968795869461ffff600a9487670de0b6b3a76400009761329e612e1b565b6101c05261050051356101c0515264ffffffffff610540511660206101c05101521660406101c051015287610240511660606101c051015264ffffffffff6102c0511660806101c051015262ffffff8760a0610500510135041660a06101c05101521660c06101c051015285610340511660e06101c05101526103c05115156101006101c05101526104405115156101206101c05101526104c05115156101406101c05101526105605115156101606101c051015215156101806101c051015215156101a06101c05101520204166101c080510152166101e06101c0510152166102006101c051015260ff61018051166102206101c051015260ff6101a051166102406101c05101526133b8366101e05161020051612e98565b6102606101c05101526133d2366102805161030051612ee9565b6102806101c05101526133ec366103805161040051612e98565b6102a06101c0510152613406366104805161052051612ee9565b6102c06101c0510152613420366104e0516104a051612e98565b6102e06101c051015261343a366104605161042051612e98565b6103006101c0510152613454366103e0516103a051612e98565b6103206101c051015261346e366103605161032051612ee9565b6103406101c0510152613488366102e0516102a051612e98565b6103606101c05101526134a2366102605161022051612ee9565b6103806101c05101526101c0519056fea2646970667358221220f4ece3e322e85d263906d6527019bb7f55dccb2f1727d872eaf57b8d5f481bec64736f6c634300081c0033

Block Transaction 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

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

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.