61.1k txs
68.3k calls
constructor
constructor(address _itemsContract, address _tokiemonNFT, address _randomnessHandler, address _manaSystem, address _oracle, address _tokiemonEquipment)
functions
calculateLevelBonus
viewfunction calculateLevelBonus(uint256 totalLevel) view returns (uint256)
calculateTokenAmount
viewfunction calculateTokenAmount(address paymentToken, uint256 packId) view returns (uint256 tokenPriceNative, uint256 tokenAmount)
canClaimPasses
viewfunction canClaimPasses(address user) view returns (bool)
captureItemBaseRates
viewfunction captureItemBaseRates(uint256) view returns (uint256)
coinBagItemIds
viewfunction coinBagItemIds(uint256) view returns (uint256)
ENCOUNTER_PRECISION
viewfunction ENCOUNTER_PRECISION() view returns (uint256)
encounterHistory
viewfunction encounterHistory(uint256) view returns (uint256 passTier, uint256 challengerTokenId, bool isComplete, uint256 encounterId, uint256 startBlock)
encounterId
viewfunction encounterId() view returns (uint256)
encounterSuccessRate
viewfunction encounterSuccessRate(address user) view returns (uint256)
freePassMintingEnabled
viewfunction freePassMintingEnabled() view returns (bool)
getClaimablePassInfo
viewfunction getClaimablePassInfo(address user) view returns (tuple)
getEncounterHistory
viewfunction getEncounterHistory(uint256 _encounterId) view returns (tuple)
getPassIdFromTier
viewfunction getPassIdFromTier(uint256 tier) view returns (uint256)
getTierFromPassId
viewfunction getTierFromPassId(uint256 passId) view returns (uint256)
hasClaimedFreeTierPass
viewfunction hasClaimedFreeTierPass(address) view returns (bool)
hasClaimedTokiemonPass
viewfunction hasClaimedTokiemonPass(uint256) view returns (bool)
isRandomnessFulfilled
viewfunction isRandomnessFulfilled(address user) view returns (bool)
itemsContract
viewfunction itemsContract() view returns (address)
keyAmountProbabilities
viewfunction keyAmountProbabilities(uint256) view returns (uint256)
levelRangeEncounterBonus
viewfunction levelRangeEncounterBonus(uint256) view returns (uint256)
manaSystem
viewfunction manaSystem() view returns (address)
nextPassPackId
viewfunction nextPassPackId() view returns (uint256)
oracle
viewfunction oracle() view returns (address)
owner
viewfunction owner() view returns (address)
passCoinBagProbabilities
viewfunction passCoinBagProbabilities(uint256, uint256) view returns (uint256)
passPacks
viewfunction passPacks(uint256) view returns (uint256 tier, uint256 quantity, uint256 price, bool active)
pendingEncounters
viewfunction pendingEncounters(address) view returns (uint256 passTier, uint256 challengerTokenId, bool isComplete, uint256 encounterId, uint256 startBlock)
randomnessHandler
viewfunction randomnessHandler() view returns (address)
tierBattleRewardConfigs
viewfunction tierBattleRewardConfigs(uint256) view returns (uint256 manaMin, uint256 manaMax, uint256 specialRewardProbability)
tierDifficultyMultipliers
viewfunction tierDifficultyMultipliers(uint256) view returns (uint256)
tierSpecialRewards
viewfunction tierSpecialRewards(uint256, uint256) view returns (uint256)
tokiedustItemId
viewfunction tokiedustItemId() view returns (uint256)
tokiemonEquipment
viewfunction tokiemonEquipment() view returns (address)
tokiemonNFT
viewfunction tokiemonNFT() view returns (address)
addPassPack
nonpayablefunction addPassPack(uint256 tier, uint256 quantity, uint256 price)
attemptBattle
nonpayablefunction attemptBattle()
attemptCapture
nonpayablefunction attemptCapture(uint256 captureItemId, string communityId)
buyPassPack
payablefunction buyPassPack(uint256 packId) payable
buyPassPackWithERC20
nonpayablefunction buyPassPackWithERC20(uint256 packId, address paymentToken, uint256 maxPaymentTokenAmount)
claimPasses
nonpayablefunction claimPasses()
removePassPack
nonpayablefunction removePassPack(uint256 packId)
renounceOwnership
nonpayablefunction renounceOwnership()
setCaptureItemBaseRate
nonpayablefunction setCaptureItemBaseRate(uint256 itemId, uint256 baseRate)
setCoinBagItemId
nonpayablefunction setCoinBagItemId(uint8 size, uint256 itemId)
setFreePassMintingEnabled
nonpayablefunction setFreePassMintingEnabled(bool enabled)
setItemsContract
nonpayablefunction setItemsContract(address _itemsContract)
setKeyAmountProbability
nonpayablefunction setKeyAmountProbability(uint256 amount, uint256 probability)
setLevelRangeBonus
nonpayablefunction setLevelRangeBonus(uint256 threshold, uint256 bonus)
setManaSystem
nonpayablefunction setManaSystem(address _manaSystem)
setOracle
nonpayablefunction setOracle(address _oracle)
setPassCoinBagProbabilities
nonpayablefunction setPassCoinBagProbabilities(uint256 passTier, uint8[] sizes, uint256[] probabilities)
setPassCoinBagProbability
nonpayablefunction setPassCoinBagProbability(uint256 passTier, uint8 size, uint256 probability)
setRandomnessHandler
nonpayablefunction setRandomnessHandler(address _randomnessHandler)
setTierDifficultyMultiplier
nonpayablefunction setTierDifficultyMultiplier(uint256 tier, uint256 multiplier)
setTierRewardConfig
nonpayablefunction setTierRewardConfig(uint256 tier, uint256 manaMin, uint256 manaMax, uint256[] specialRewardIds, uint256 specialRewardProbability)
setTokiedustItemId
nonpayablefunction setTokiedustItemId(uint256 newItemId)
setTokiemonNFT
nonpayablefunction setTokiemonNFT(address _tokiemonNFT)
startEncounter
nonpayablefunction startEncounter(uint256 passItemId, uint256 challengerTokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePassPack
nonpayablefunction updatePassPack(uint256 packId, uint256 tier, uint256 quantity, uint256 price, bool active)
withdrawFunds
nonpayablefunction withdrawFunds(address recipient)
events
BattleRewardsGranted
event BattleRewardsGranted(address indexed user, uint256 indexed encounterId, uint256 manaAmount, uint256[] itemIds, uint256[] amounts)
EncounterResult
event EncounterResult(address indexed user, uint256 indexed encounterId, string encounterType, uint256 passTier, uint256 challengerTokenId, uint256 successRate, uint256 randomRoll, bool success)
EncounterStarted
event EncounterStarted(address indexed user, uint256 indexed encounterId, uint256 passTier, uint256 challengerTokenId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PassPackPurchased
event PassPackPurchased(address indexed buyer, uint256 packId, uint256 tier, uint256 quantity)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x61012060405260846080908152608560a052608660c052608760e0526088610100526200003190600890600562000b91565b506000600d556095600e556010805460ff191660011790553480156200005657600080fd5b50604051620057f7380380620057f7833981016040819052620000799162000c0d565b3380620000a157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000ac8162000a42565b506001808055600280546001600160a01b03199081166001600160a01b038a81169190911783556003805483168a83161781556004805484168a84161781556005805485168a851617905560068054851689851617905560078054909416928716929092179092556113887f05b417fa8654c57a142d905366d319ae454b5944e10f5f2d434471f99a03ff1e556117707fa0d866aa5f4c03a50eafe7781b663ebbc9031ed11fd621b002346947b6083a9d55611d4c7fc4fec25d4834964afcc5ab727c7d6068d93c93ebe3536d423327923ce7dbc662557f15655f83d0cb16d68cc064a9ace692057f506f2db555a097089e4971855f584b8490557f9ce73a8258b3752a859681204e678c08cc67c4706e527509cb0d770401a7b8ff929092557f7408466a43b795200bb838d6c8b1653ad1b974200450802ad41aeec792aacc3e8190557f7899af088f83d91cca4916e0744dbfb2a4296eaf8be5caf29670c77f31dea12c91909155600a7f8191f4eb6b8bafbfe9a5389c8d07d7f5fd81137a7ee653fc4358269845ee1d2e90815560327f8191f4eb6b8bafbfe9a5389c8d07d7f5fd81137a7ee653fc4358269845ee1d2f81905560647f8191f4eb6b8bafbfe9a5389c8d07d7f5fd81137a7ee653fc4358269845ee1d308190557fec061709de2491458f4c981032059d7d19b0e55f45018bac6b3e660bdc959a59805480870190915560897fc0ef43436cb00b5c40ff296da11af1ab111cffb81d16afb7048e7db98c94d90d909101557f27739e4bb5e6f8b5e4b57a047dca8767cc9b982a011081e086cbb0dfa9de818d91825560c87f27739e4bb5e6f8b5e4b57a047dca8767cc9b982a011081e086cbb0dfa9de818e557f27739e4bb5e6f8b5e4b57a047dca8767cc9b982a011081e086cbb0dfa9de818f8190557f4c4dc693d7db52f85fe052106f4b4b920e78e8ef37dee82878a60ab8585faf4980548087018255608a7f7e1c3088adc6f8f8f7ef70f6d0a7b56ee1fa66f54e385df4bb5e2140bb2c0532918201558154808801909255608b9101557f07d4ff730d9753101d832555708a37d38c2c45fce8cacaefc99f06074e93fe0b81815561012c7f07d4ff730d9753101d832555708a37d38c2c45fce8cacaefc99f06074e93fe0c557f07d4ff730d9753101d832555708a37d38c2c45fce8cacaefc99f06074e93fe0d8290557fcaff291fe014adc6b72a172705750b4cabe8f8667664d2924a166caab288564880548088018255608c7f582eaa2ba844d84e599fcd70db2dd8f2b3b7a6507e09132a174889d2caa9c53f9182015581548089018355608d9082015581548089018355608e908201558154808901909255608f91015560967fb3a65e8276bd33b3e4f7d6081ebd9899187264822358758dca2e2bc37b2a9c278181556101f47fb3a65e8276bd33b3e4f7d6081ebd9899187264822358758dca2e2bc37b2a9c288190557fb3a65e8276bd33b3e4f7d6081ebd9899187264822358758dca2e2bc37b2a9c29949094557ff06d282f967055cb1eee17e04aa005b9682a620f4bbcfaee55ba78607a3d87ae8054808a01825560907f024ab281aeef4fd8c9fcb7e1dbe49b1def6f535dad23f89a1a604f5cc3a753f7918201558154808b0183556091908201558154808b0183556092908201558154808b0183556093908201558154808b0190925560949101556109c47fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b5561157c7ff36d6bc9642eb6fb6ee9998b09ce990566df752ab06e11f8de7ab633bbd57b8f556105dc7fc52df653038b2ad477d8d97f1ddd63cfd138847b628ad8a7b89c109c3f8782ca557fd8b2bced50346359af71f91110b86cdf684b6ab1c6ca64a7583c044d5c24de5c9390935561251c7f0dee2a9e88b509e92654c0ec5777783573c7bf14eabc7a6abccb169f2d02a146556101db7f087ed414d692b841ae39a414ec9cf61ae4cfcec52c1dd3a0ec5d904c9ac0928b5560197ff44ac0a326971e253e34fd67c3b823c7bfc51eafa41c9369937a271f42bfc5b3819055611b587f3d565e99b5ac632a63f1fc43f2aafb963154f7e704cb5be4375bc81fb3e2260055610af07f36c2c38d46f40b896a84ee4092c36dbb2233047781855b3721277b6408160f055560af7fb8dc952eeb416a347bc52579242a6b4d730c5d7dae2c2f317cdeb49672cfb547557fb84173557f09431da7c5153ea410cfe02de616e6b296467d706504157099472455610fa07fa08059a61faa15509c05869ce518a0b1a67c650f7512546177752128a8f24911556114b47f224fcbee44503037ba212821bc1bd015bd5f5b48762ba562613a24f9d590bc3c556102267fb4c142b443ba48c07011b4d03ac036d9707a9f5607203136783f6b131e69109a5560008690527f7a6340a7048c03c55288da75abed74d2ce9194201bafb03be53c0a7cca5914956020527f3f2af5ef56ab26619bafc14f6f077ccf9225c7a1df5dc854f20409060e49c92255929491939091620007de91660aa87bee53800062000a92565b620007f46001600a661ff973cafa800062000a92565b6200080a6001601966470de4df82000062000a92565b6200082060026003662aa1efb94e000062000a92565b620008366002600a668700cc7577000062000a92565b6200084d6002601967013fbe85edc9000062000a92565b6200086260038066b1a2bc2ec5000062000a92565b620008796003600a6702386f26fc10000062000a92565b6200089060036019670522810a26e5000062000a92565b505060007f812aa1d85a6a479a48a560ac351450fc5d9e648fda9b4aabfb492f78fb8940e98190556103e87fbf5937da12a4f13f35054382bd8dc9d350c6e61c108f5992e567ebba24b5a19a556105dc7f67cb32d07d3b552d16e51578a8b0672ae8a29f067c8f2a8cfbeab4700ec19287556109c47fc187cabce749fa8a9f90e142bc4f8ea282c6acfc51a8fdaf496187e1d86e806c55610fa07f922f6af691981b741eb02b3ed3453cc38ce623e8709ce524bd43bdbfc62af0995561157c7fa6ce606a380cb6fd192f009f6271a9a3cd7f2ffde38524addd3e0f53f8d8c07155611b587f7fb1ad0fc7c6905df7a2558c87dbdd3b932512d3ca754944eca63b086d63dd4955601d6020526127107fd33c65680209da0447188026adeb57acbe6c3d3a2b5b9c4ecef4d7a917168fd755612af87f9de6abd965d55c3bb0cdbf6fa175050624c6ff8fe86f682dc08f2a450ede227855612ee07f64f63e8728b8a1c8ce5fe5058430331934c8d0c3d8a2f2793f19836c1447addb556003905250506132c87f628971151cb24dee737f6abea9bff35ce226e4c8f5760305d49b372572839090555062000cb6945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b62000a9c62000b60565b6001831015801562000aaf575060038311155b62000aec5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103a34b2b960a11b604482015260640162000098565b604080516080810182528481526020808201858152828401858152600160608501818152600f80546000908152601990965296852095518655925190850155516002840155516003909201805460ff1916921515929092179091558154919062000b568362000c8e565b9190505550505050565b6000546001600160a01b0316331462000b8f5760405163118cdaa760e01b815233600482015260240162000098565b565b826005810192821562000bc7579160200282015b8281111562000bc7578251829060ff1690559160200191906001019062000ba5565b5062000bd592915062000bd9565b5090565b5b8082111562000bd5576000815560010162000bda565b80516001600160a01b038116811462000c0857600080fd5b919050565b60008060008060008060c0878903121562000c2757600080fd5b62000c328762000bf0565b955062000c426020880162000bf0565b945062000c526040880162000bf0565b935062000c626060880162000bf0565b925062000c726080880162000bf0565b915062000c8260a0880162000bf0565b90509295509295509295565b60006001820162000caf57634e487b7160e01b600052601160045260246000fd5b5060010190565b614b318062000cc66000396000f3fe6080604052600436106103a65760003560e01c806383e23fb0116101e7578063bdcdb10f1161010d578063df794691116100a0578063ec52f1ea1161006f578063ec52f1ea14610c9f578063f2fde38b14610cb9578063f5224e1114610cd9578063fc3c122a14610cf957600080fd5b8063df79469114610bf5578063e593c1db14610c22578063e834a4aa14610c4f578063ea4b6d6514610c7f57600080fd5b8063d2fa9497116100dc578063d2fa949714610b17578063d35f0f4a14610b44578063d42eb89b14610ba8578063d4d2338e14610bc857600080fd5b8063bdcdb10f14610aaf578063c276499214610ac4578063c32a268914610ad7578063ca7cb5fc14610af757600080fd5b8063a8e138e911610185578063b7fec2af11610154578063b7fec2af146109a4578063b971eeae14610a21578063bacfb86a14610a41578063bc9de8c614610a6157600080fd5b8063a8e138e91461090f578063a971e8421461092f578063aac61a1f1461094f578063abfbbef11461098457600080fd5b806390e911e8116101c157806390e911e81461088f578063911ba7f0146108af5780639c31c5ec146108cf5780639f471285146108ef57600080fd5b806383e23fb0146108115780638a0dfc0d146108315780638da5cb5b1461087157600080fd5b806352ab1ef5116102cc578063644be0bf1161026a5780637adbf973116102395780637adbf973146107845780637c3ebf78146107a45780637d43541a146107d15780637dc0d1d0146107f157600080fd5b8063644be0bf146106d8578063662cbd02146106f857806368742da61461074f578063715018a61461076f57600080fd5b80635a2fb355116102a65780635a2fb355146106625780635a8ef650146106785780635d899a361461069857806363e41f3b146106b857600080fd5b806352ab1ef5146105f557806352b3c9d9146106225780635504d86c1461064257600080fd5b80632d5e4ba11161034457806335454cd41161031357806335454cd4146105805780633b080048146105955780633c0452b1146105b55780635275be77146105d557600080fd5b80632d5e4ba1146104d05780632da7ed8b146104f0578063334a104c146105285780633357b0e81461056057600080fd5b80630df87742116103805780630df877421461041357806313684385146104335780631666edda1461045357806318beac051461046957600080fd5b80630b6614c9146103b25780630b81ccd3146103d45780630cda140b146103fd57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103d26103cd3660046140ad565b610d19565b005b3480156103e057600080fd5b506103ea600e5481565b6040519081526020015b60405180910390f35b34801561040957600080fd5b506103ea61271081565b34801561041f57600080fd5b506103d261042e3660046140dc565b610d8a565b34801561043f57600080fd5b506103d261044e36600461414d565b610dff565b34801561045f57600080fd5b506103ea600d5481565b34801561047557600080fd5b506104ae6104843660046141b6565b60196020526000908152604090208054600182015460028301546003909301549192909160ff1684565b60408051948552602085019390935291830152151560608201526080016103f4565b3480156104dc57600080fd5b506103d26104eb3660046140ad565b610e9b565b3480156104fc57600080fd5b506103ea61050b3660046140ad565b601860209081526000928352604080842090915290825290205481565b34801561053457600080fd5b50600354610548906001600160a01b031681565b6040516001600160a01b0390911681526020016103f4565b34801561056c57600080fd5b50600454610548906001600160a01b031681565b34801561058c57600080fd5b506103d2610f33565b3480156105a157600080fd5b506103d26105b03660046140ad565b6110cd565b3480156105c157600080fd5b50600754610548906001600160a01b031681565b3480156105e157600080fd5b506103d26105f03660046140ad565b611109565b34801561060157600080fd5b506103ea6106103660046141b6565b601c6020526000908152604090205481565b34801561062e57600080fd5b506103d261063d3660046141cf565b611123565b34801561064e57600080fd5b506103ea61065d366004614210565b6111cb565b34801561066e57600080fd5b506103ea600f5481565b34801561068457600080fd5b506103ea6106933660046141b6565b6115f8565b3480156106a457600080fd5b506103d26106b3366004614210565b61164c565b3480156106c457600080fd5b506103d26106d33660046140ad565b61169c565b3480156106e457600080fd5b506103d26106f33660046141b6565b611ba0565b34801561070457600080fd5b506107346107133660046141b6565b60156020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f4565b34801561075b57600080fd5b506103d261076a366004614210565b611c17565b34801561077b57600080fd5b506103d2611d04565b34801561079057600080fd5b506103d261079f366004614210565b611d16565b3480156107b057600080fd5b506103ea6107bf3660046141b6565b60009081526014602052604090205490565b3480156107dd57600080fd5b506103d26107ec36600461422d565b611d66565b3480156107fd57600080fd5b50600654610548906001600160a01b031681565b34801561081d57600080fd5b506103d261082c366004614273565b6120cb565b34801561083d57600080fd5b5061086161084c3660046141b6565b601b6020526000908152604090205460ff1681565b60405190151581526020016103f4565b34801561087d57600080fd5b506000546001600160a01b0316610548565b34801561089b57600080fd5b506103ea6108aa3660046141b6565b6120e6565b3480156108bb57600080fd5b506103d26108ca366004614290565b6120fd565b3480156108db57600080fd5b506103d26108ea366004614210565b612212565b3480156108fb57600080fd5b506103ea61090a3660046140ad565b612262565b34801561091b57600080fd5b50600554610548906001600160a01b031681565b34801561093b57600080fd5b50600254610548906001600160a01b031681565b34801561095b57600080fd5b5061096f61096a36600461430a565b612293565b604080519283526020830191909152016103f4565b34801561099057600080fd5b506103d261099f366004614210565b6123c9565b3480156109b057600080fd5b506109f26109bf3660046141b6565b601360205260009081526040902080546001820154600283015460038401546004909401549293919260ff909116919085565b6040516103f4959493929190948552602085019390935290151560408401526060830152608082015260a00190565b348015610a2d57600080fd5b50610861610a3c366004614210565b612419565b348015610a4d57600080fd5b506103d2610a5c366004614328565b612441565b348015610a6d57600080fd5b506109f2610a7c366004614210565b601260205260009081526040902080546001820154600283015460038401546004909401549293919260ff909116919085565b348015610abb57600080fd5b506103d2612526565b6103d2610ad23660046141b6565b612740565b348015610ae357600080fd5b50610861610af2366004614210565b6128c9565b348015610b0357600080fd5b506103ea610b123660046141b6565b6129b1565b348015610b2357600080fd5b506103ea610b323660046141b6565b60176020526000908152604090205481565b348015610b5057600080fd5b50610b64610b5f3660046141b6565b612b76565b6040516103f49190600060a0820190508251825260208301516020830152604083015115156040830152606083015160608301526080830151608083015292915050565b348015610bb457600080fd5b506103d2610bc336600461440d565b612c53565b348015610bd457600080fd5b506103ea610be33660046141b6565b601d6020526000908152604090205481565b348015610c0157600080fd5b506103ea610c103660046141b6565b60116020526000908152604090205481565b348015610c2e57600080fd5b50610c42610c3d366004614210565b612fe9565b6040516103f491906144d3565b348015610c5b57600080fd5b50610861610c6a366004614210565b601a6020526000908152604090205460ff1681565b348015610c8b57600080fd5b506103d2610c9a3660046141b6565b6132e1565b348015610cab57600080fd5b506010546108619060ff1681565b348015610cc557600080fd5b506103d2610cd4366004614210565b613330565b348015610ce557600080fd5b506103d2610cf4366004614210565b61336b565b348015610d0557600080fd5b506103d2610d14366004614518565b6133bb565b610d2161341d565b612710811115610d785760405162461bcd60e51b815260206004820152601860248201527f426f6e75732063616e6e6f74206578636565642031303025000000000000000060448201526064015b60405180910390fd5b6000918252601c602052604090912055565b610d9261341d565b60008111610dd45760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081a5d195b481251608a1b6044820152606401610d6f565b806008836004811115610de957610de961453f565b60058110610df957610df9614555565b01555050565b610e0761341d565b60008681526015602090815260408083208881556001810188905560028101859055601690925282209091610e3c919061407b565b60005b83811015610e91576000888152601660205260409020858583818110610e6757610e67614555565b83546001808201865560009586526020958690209290950293909301359201919091555001610e3f565b5050505050505050565b610ea361341d565b60018210158015610eb5575060048211155b610ed15760405162461bcd60e51b8152600401610d6f9061456b565b60008111610f215760405162461bcd60e51b815260206004820152601b60248201527f4d756c7469706c696572206d75737420626520706f73697469766500000000006044820152606401610d6f565b6000918252601d602052604090912055565b610f3b61344a565b600080610f46613474565b915091506000610f55336111cb565b90506000610f65612710846145a7565b90508181108015610f8357610f7b33868661366a565b505050610fed565b600254600e5460405163731133e960e01b81526001600160a01b039092169163731133e991610fba913391906001906004016145bb565b600060405180830381600087803b158015610fd457600080fd5b505af1158015610fe8573d6000803e3d6000fd5b505050505b60608581015186516020808901516040805160c080825260069082015265424154544c4560d01b60e082015292830193909352818301529283018690526080830185905283151560a084015251909133917f1d716c2ecce102bce00e27d71328213385b5aee17fdbcc8660f602c099d149f8918190036101000190a350505060609091015160009081526013602090815260408083206002908101805460ff1990811660019081179092553386526012909452918420848155918201849055810180549092169091556003810182905560040155506110cb60018055565b565b6110d561341d565b6127108111156110f75760405162461bcd60e51b8152600401610d6f906145eb565b60009182526017602052604090912055565b61111161341d565b60009182526011602052604090912055565b61112b61341d565b6001831015801561113d575060038311155b6111595760405162461bcd60e51b8152600401610d6f9061456b565b604080516080810182528481526020808201858152828401858152600160608501818152600f80546000908152601990965296852095518655925190850155516002840155516003909201805460ff191692151592909217909155815491906111c18361462e565b9190505550505050565b6001600160a01b03818116600090815260126020526040808220600181015490546003549251632e2349af60e11b81526004810183905293949193909285928392911690635c46935e90602401600060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261125d91908101906146b8565b600754604051637ce2316d60e01b8152600481018a9052929650909450600093506001600160a01b03169150637ce2316d90602401608060405180830381865afa1580156112af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d39190614738565b90506000836004036112e85750610bb8611317565b836001036112f95750610fa0611317565b8360020361130a5750611388611317565b8360030361131757506117705b60008084600481111561132c5761132c61453f565b03611339575060006113bc565b600184600481111561134d5761134d61453f565b0361135a575060fa6113bc565b600284600481111561136e5761136e61453f565b0361137c57506101f46113bc565b60038460048111156113905761139061453f565b0361139e57506102ee6113bc565b60048460048111156113b2576113b261453f565b036113bc57506103e85b604083810151602085015185516003549351632c170c9d60e21b8152600481018c9052600260248201526000946001600160a01b03169063b05c327490604401608060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614797565b51600354604051632c170c9d60e21b8152600481018e90526001602482015260ff909216916001600160a01b039091169063b05c327490604401608060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b89190614797565b51600354604051632c170c9d60e21b8152600481018f90526000602482015260ff909216916001600160a01b039091169063b05c327490604401608060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190614797565b51611541919060ff166147fa565b61154b91906147fa565b61155591906147fa565b61155f91906147fa565b61156991906147fa565b90506000611576826129b1565b905060008560600151606461158b919061480d565b90506000818561159b85896147fa565b6115a591906147fa565b6115af91906147fa565b60008b8152601d6020526040812054919250906115ce8361271061480d565b6115d89190614824565b90506115e681612710613bab565b9e9d5050505050505050505050505050565b6000607e5b60818111611633576000818152601460205260409020548390036116215792915050565b8061162b8161462e565b9150506115fd565b5060405162461bcd60e51b8152600401610d6f9061456b565b61165461341d565b6001600160a01b03811661167a5760405162461bcd60e51b8152600401610d6f90614838565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6116a461344a565b33600090815260126020526040902054156117015760405162461bcd60e51b815260206004820152601c60248201527f416c7265616479206861732061637469766520656e636f756e746572000000006044820152606401610d6f565b6003546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa15801561174a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176e9190614861565b6001600160a01b0316146117bc5760405162461bcd60e51b815260206004820152601560248201527426bab9ba1037bbb7103a3432902a37b5b4b2b6b7b760591b6044820152606401610d6f565b600254604051627eeac760e11b8152336004820152602481018490526000916001600160a01b03169062fdd58e90604401602060405180830381865afa15801561180a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182e919061487e565b1161187b5760405162461bcd60e51b815260206004820152601860248201527f4d757374206861766520656e636f756e746572207061737300000000000000006044820152606401610d6f565b600082815260146020526040902054801580159061189a575060048111155b6118da5760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b2103830b9b9903a34b2b960791b6044820152606401610d6f565b600d80549060006118ea8361462e565b909155505060025460405163325e7d4f60e01b81526001600160a01b039091169063325e7d4f906119249033908790600190600401614897565b600060405180830381600087803b15801561193e57600080fd5b505af1158015611952573d6000803e3d6000fd5b50506004805460405163ead073c760e01b81523392810192909252600093506001600160a01b0316915063ead073c7906024016020604051808303816000875af11580156119a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c8919061487e565b905080600003611a1a5760405162461bcd60e51b815260206004820152601c60248201527f4661696c656420746f20726571756573742072616e646f6d6e657373000000006044820152606401610d6f565b6040518060a00160405280838152602001848152602001600015158152602001600d5481526020014381525060126000336001600160a01b03166001600160a01b03168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff02191690831515021790555060608201518160030155608082015181600401559050506040518060a00160405280838152602001848152602001600015158152602001600d5481526020014381525060136000600d548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055506060820151816003015560808201518160040155905050600d54336001600160a01b03167f98f5d2212b42aed80eb8c8376706a945d0b675ff5296af33e9230686d85f7ac28486604051611b89929190918252602082015260400190565b60405180910390a35050611b9c60018055565b5050565b611ba861341d565b600081815260196020526040902060020154611bfc5760405162461bcd60e51b8152602060048201526013602482015272141858dac8191bd95cc81b9bdd08195e1a5cdd606a1b6044820152606401610d6f565b6000908152601960205260409020600301805460ff19169055565b611c1f61341d565b476001600160a01b038216611c6a5760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610d6f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611cb7576040519150601f19603f3d011682016040523d82523d6000602084013e611cbc565b606091505b5050905080611cff5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610d6f565b505050565b611d0c61341d565b6110cb6000613bc5565b611d1e61341d565b6001600160a01b038116611d445760405162461bcd60e51b8152600401610d6f90614838565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b611d6e61344a565b60008381526019602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff16151560608201819052611dd25760405162461bcd60e51b8152600401610d6f906148b8565b60065460405163b5af090f60e01b81526001600160a01b0385811660048301529091169063b5af090f90602401602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4091906148ef565b611e8c5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7420746f6b656e206e6f742077686974656c69737465640000006044820152606401610d6f565b6006546040808301516020840151915163f1958d8960e01b81526000936001600160a01b03169263f1958d8992611ec892899290600401614897565b6040805180830381865afa158015611ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f08919061490c565b91505082811115611f5b5760405162461bcd60e51b815260206004820181905260248201527f536c6970706167653a20616d6f756e742065786365656473206d6178696d756d6044820152606401610d6f565b600654604051634ec4224d60e11b81526001600160a01b038681166004830152602482018490526000928392839283921690639d88449a90604401608060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd79190614930565b9350935093509350611fec8885858585613c15565b6000611ffb87600001516115f8565b600254602089015160405163731133e960e01b81529293506001600160a01b039091169163731133e99161203591339186916004016145bb565b600060405180830381600087803b15801561204f57600080fd5b505af1158015612063573d6000803e3d6000fd5b5050885160208a01516040513394507f66fb5f02ec333fdbe8ffb2b99addc3a0a91173cd4a7cab2de7735b7d493df67f93506120b3928f9290919283526020830191909152604082015260600190565b60405180910390a250505050505050611cff60018055565b6120d361341d565b6010805460ff1916911515919091179055565b600881600581106120f657600080fd5b0154905081565b61210561341d565b8281146121465760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610d6f565b60005b8381101561220a5761271083838381811061216657612166614555565b90506020020135111561218b5760405162461bcd60e51b8152600401610d6f906145eb565b82828281811061219d5761219d614555565b905060200201356018600088815260200190815260200160002060008787858181106121cb576121cb614555565b90506020020160208101906121e09190614966565b60048111156121f1576121f161453f565b8152602081019190915260400160002055600101612149565b505050505050565b61221a61341d565b6001600160a01b0381166122405760405162461bcd60e51b8152600401610d6f90614838565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6016602052816000526040600020818154811061227e57600080fd5b90600052602060002001600091509150505481565b60008181526019602090815260408083208151608081018352815481526001820154938101939093526002810154918301919091526003015460ff161515606082018190528291906122f75760405162461bcd60e51b8152600401610d6f906148b8565b600081602001511161233f5760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642070617373207061636b60781b6044820152606401610d6f565b6006546040808301516020840151915163f1958d8960e01b81526001600160a01b039093169263f1958d899261237c928a92909190600401614897565b6040805180830381865afa158015612398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bc919061490c565b92509250505b9250929050565b6123d161341d565b6001600160a01b0381166123f75760405162461bcd60e51b8152600401610d6f90614838565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60008061242583612fe9565b80519091508061243a57506000816020015151115b9392505050565b61244961341d565b6001841015801561245b575060038411155b6124775760405162461bcd60e51b8152600401610d6f9061456b565b6000858152601960205260409020600201546124cb5760405162461bcd60e51b8152602060048201526013602482015272141858dac8191bd95cc81b9bdd08195e1a5cdd606a1b6044820152606401610d6f565b6040805160808101825294855260208086019485528582019384529115156060860190815260009687526019909252909420925183559051600183015551600282015590516003909101805460ff1916911515919091179055565b61252e61344a565b600061253933612fe9565b8051909150801561254c575060105460ff165b8061255c57506000816020015151115b6125a85760405162461bcd60e51b815260206004820152601c60248201527f4e6f2070617373657320617661696c61626c6520746f20636c61696d000000006044820152606401610d6f565b805180156125b8575060105460ff165b15612646576002546001600160a01b031663731133e9336125d960046115f8565b60016040518463ffffffff1660e01b81526004016125f9939291906145bb565b600060405180830381600087803b15801561261357600080fd5b505af1158015612627573d6000803e3d6000fd5b5050336000908152601a60205260409020805460ff1916600117905550505b60005b81602001515181101561273557600254604083015180516001600160a01b039092169163731133e991339161269691908690811061268957612689614555565b60200260200101516115f8565b60016040518463ffffffff1660e01b81526004016126b6939291906145bb565b600060405180830381600087803b1580156126d057600080fd5b505af11580156126e4573d6000803e3d6000fd5b505050506001601b60008460200151848151811061270457612704614555565b6020908102919091018101518252810191909152604001600020805460ff1916911515919091179055600101612649565b50506110cb60018055565b61274861344a565b60008181526019602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff161515606082018190526127ac5760405162461bcd60e51b8152600401610d6f906148b8565b80604001513410156127f75760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610d6f565b600061280682600001516115f8565b600254602084015160405163731133e960e01b81529293506001600160a01b039091169163731133e99161284091339186916004016145bb565b600060405180830381600087803b15801561285a57600080fd5b505af115801561286e573d6000803e3d6000fd5b5050835160208086015160408051898152928301939093528183015290513393507f66fb5f02ec333fdbe8ffb2b99addc3a0a91173cd4a7cab2de7735b7d493df67f92509081900360600190a250506128c660018055565b50565b6001600160a01b0381166000908152601260205260408120546129395760405162461bcd60e51b815260206004820152602260248201527f4e6f2070656e64696e6720656e636f756e74657220666f72207468697320757360448201526132b960f11b6064820152608401610d6f565b600480546040516338bf633360e11b81526001600160a01b038581169382019390935291169063717ec66690602401602060405180830381865afa158015612985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a9919061487e565b151592915050565b6000601e82116129ec575050601e600052601c6020527f812aa1d85a6a479a48a560ac351450fc5d9e648fda9b4aabfb492f78fb8940e95490565b603c8211612a25575050603c600052601c6020527fbf5937da12a4f13f35054382bd8dc9d350c6e61c108f5992e567ebba24b5a19a5490565b60648211612a5e5750506064600052601c6020527f67cb32d07d3b552d16e51578a8b0672ae8a29f067c8f2a8cfbeab4700ec192875490565b60968211612a975750506096600052601c6020527fc187cabce749fa8a9f90e142bc4f8ea282c6acfc51a8fdaf496187e1d86e806c5490565b60c88211612ad057505060c8600052601c6020527f922f6af691981b741eb02b3ed3453cc38ce623e8709ce524bd43bdbfc62af0995490565b60fa8211612b0957505060fa600052601c6020527fa6ce606a380cb6fd192f009f6271a9a3cd7f2ffde38524addd3e0f53f8d8c0715490565b6101298211612b44575050610129600052601c6020527f7fb1ad0fc7c6905df7a2558c87dbdd3b932512d3ca754944eca63b086d63dd495490565b5050610129600052601c6020527f7fb1ad0fc7c6905df7a2558c87dbdd3b932512d3ca754944eca63b086d63dd495490565b612baa6040518060a00160405280600081526020016000815260200160001515815260200160008152602001600081525090565b600082118015612bbc5750600d548211155b612bff5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a5908195b98dbdd5b9d195c88125160621b6044820152606401610d6f565b50600090815260136020908152604091829020825160a08101845281548152600182015492810192909252600281015460ff1615159282019290925260038201546060820152600490910154608082015290565b612c5b61344a565b600080612c66613474565b81519193509150600403612ccd5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420636170747572652066726f6d2066726565207469657220656e604482015267636f756e7465727360c01b6064820152608401610d6f565b600084815260116020526040902054612d1f5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642063617074757265206974656d60601b6044820152606401610d6f565b600254604051627eeac760e11b8152336004820152602481018690526000916001600160a01b03169062fdd58e90604401602060405180830381865afa158015612d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d91919061487e565b11612dd75760405162461bcd60e51b81526020600482015260166024820152754d75737420686176652063617074757265206974656d60501b6044820152606401610d6f565b60025460405163325e7d4f60e01b81526001600160a01b039091169063325e7d4f90612e0c9033908890600190600401614897565b600060405180830381600087803b158015612e2657600080fd5b505af1158015612e3a573d6000803e3d6000fd5b50505060008581526011602052604081205490915061271090612e5c336111cb565b612e66919061480d565b612e709190614824565b90506000612e80612710846145a7565b90508181108015612ea057612e9a33866000015188613d74565b50612f0a565b600254600e5460405163731133e960e01b81526001600160a01b039092169163731133e991612ed7913391906001906004016145bb565b600060405180830381600087803b158015612ef157600080fd5b505af1158015612f05573d6000803e3d6000fd5b505050505b60608581015186516020808901516040805160c0808252600790820152664341505455524560c81b60e082015292830193909352818301529283018690526080830185905283151560a084015251909133917f1d716c2ecce102bce00e27d71328213385b5aee17fdbcc8660f602c099d149f8918190036101000190a350505060609091015160009081526013602090815260408083206002908101805460ff199081166001908117909255338652601290945291842084815591820184905581018054909216909155600381018290556004015550611b9c60018055565b61300f604051806060016040528060001515815260200160608152602001606081525090565b6003546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a0823190602401602060405180830381865afa15801561305a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307e919061487e565b905060008167ffffffffffffffff81111561309b5761309b614375565b6040519080825280602002602001820160405280156130c4578160200160208202803683370190505b50905060008267ffffffffffffffff8111156130e2576130e2614375565b60405190808252806020026020018201604052801561310b578160200160208202803683370190505b5090506000805b8481101561328657600354604051632f745c5960e01b81526001600160a01b038981166004830152602482018490526000921690632f745c5990604401602060405180830381865afa15801561316c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613190919061487e565b600354604051632e2349af60e11b8152600481018390529192506000916001600160a01b0390911690635c46935e90602401600060405180830381865afa1580156131df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261320791908101906146b8565b50925050508060041415801561322c57506000828152601b602052604090205460ff16155b1561327c578186858151811061324457613244614555565b6020026020010181815250508085858151811061326357613263614555565b6020908102919091010152836132788161462e565b9450505b5050600101613112565b508083528082526040805160608101909152601054819060ff1680156132c557506001600160a01b0388166000908152601a602052604090205460ff16155b1515815260200184815260200183815250945050505050919050565b6132e961341d565b6000811161332b5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081a5d195b481251608a1b6044820152606401610d6f565b600e55565b61333861341d565b6001600160a01b03811661336257604051631e4fbdf760e01b815260006004820152602401610d6f565b6128c681613bc5565b61337361341d565b6001600160a01b0381166133995760405162461bcd60e51b8152600401610d6f90614838565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6133c361341d565b6127108111156133e55760405162461bcd60e51b8152600401610d6f906145eb565b600083815260186020526040812082918460048111156134075761340761453f565b8152602081019190915260400160002055505050565b6000546001600160a01b031633146110cb5760405163118cdaa760e01b8152336004820152602401610d6f565b60026001540361346d57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6134a86040518060a00160405280600081526020016000815260200160001515815260200160008152602001600081525090565b336000908152601260205260408120546134fa5760405162461bcd60e51b815260206004820152601360248201527227379030b1ba34bb329032b731b7bab73a32b960691b6044820152606401610d6f565b613503336128c9565b61354f5760405162461bcd60e51b815260206004820152601c60248201527f52616e646f6d6e657373206e6f742066756c66696c6c656420796574000000006044820152606401610d6f565b3360009081526012602052604090206004015443116135a45760405162461bcd60e51b81526020600482015260116024820152704d7573742077616974203120626c6f636b60781b6044820152606401610d6f565b600480546040516338bf633360e11b815233928101929092526001600160a01b03169063717ec66690602401602060405180830381865afa1580156135ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613611919061487e565b33600090815260126020908152604091829020825160a08101845281548152600182015492810192909252600281015460ff16151592820192909252600382015460608201526004909101546080820152939092509050565b8151600090815260156020908152604080832081516060808201845282548252600183015494820194909452600290910154818301528151600580825260c082019093528392816020016020820280368337505060408051600580825260c0820190925292955090506020820160a0803683375050825160208401519294506000926136f69250614983565b6137019060016147fa565b61370b90876145a7565b825161371791906147fa565b600554604051632884a08960e11b81526001600160a01b038b8116600483015260248201849052929750911690635109411290604401600060405180830381600087803b15801561376757600080fd5b505af115801561377b573d6000803e3d6000fd5b505050506000612710876040516020016137b791815260406020820181905260089082015267434f494e5f42414760c01b606082015260800190565b6040516020818303038152906040528051906020012060001c6137da91906145a7565b90506000805b6137ec600460016147fa565b8110156138975789516000908152601860209081526040808320848452909152902054801561388e5761381f81846147fa565b92508284101561388e576008826005811061383c5761383c614555565b015488868151811061385057613850614555565b602002602001018181525050600187868151811061387057613870614555565b6020908102919091010152846138858161462e565b95505050613897565b506001016137e0565b50885160041115613999576000612710896040516020016138d5918152604060208201819052600390820152624b455960e81b606082015260800190565b6040516020818303038152906040528051906020012060001c6138f891906145a7565b90506000805b600381116139955760008181526017602052604090205461391f90836147fa565b91508183101561398357801561397e578b6000015189878151811061394657613946614555565b6020026020010181815250508088878151811061396557613965614555565b60209081029190910101528561397a8161462e565b9650505b613995565b8061398d8161462e565b9150506138fe565b5050505b88516000908152601660205260409020805415613ae05760006127108a6040516020016139e79181526040602082018190526007908201526614d41150d2505360ca1b606082015260800190565b6040516020818303038152906040528051906020012060001c613a0a91906145a7565b90508560400151811015613ade57815460408051602081018d905280820191909152600d60608201526c0a6a08a86928298be929c888ab609b1b60808201526000919060a0016040516020818303038152906040528051906020012060001c613a7391906145a7565b9050828181548110613a8757613a87614555565b9060005260206000200154898781518110613aa457613aa4614555565b6020026020010181815250506001888781518110613ac457613ac4614555565b602090810291909101015285613ad98161462e565b965050505b505b8315613b5357838752838652600254604051630fbfeffd60e11b81526001600160a01b0390911690631f7fdffa90613b20908e908b908b90600401614996565b600060405180830381600087803b158015613b3a57600080fd5b505af1158015613b4e573d6000803e3d6000fd5b505050505b89606001518b6001600160a01b03167fbd64c11e7793e74e7f958aa405f802e094fcbe5bcfe5a91a01dc482875f800d28a8a8a604051613b95939291906149e8565b60405180910390a3505050505093509350939050565b6000818310613bba5781613bbc565b825b90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8315613ca857613ca833600660009054906101000a90046001600160a01b03166001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c969190614861565b6001600160a01b038816919087613eb1565b8215613d3b57613d3b33600660009054906101000a90046001600160a01b03166001600160a01b0316632131c68c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d299190614861565b6001600160a01b038816919086613eb1565b600082118015613d5357506001600160a01b03811615155b15613d6d57613d6d6001600160a01b038616338385613eb1565b5050505050565b60408051600380825260808201909252600091829190816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181613d8f57905050905060005b6003811015613e2a576040518060800160405280600160ff168152602001603063ffffffff168152602001606063ffffffff1681526020016000815250828281518110613e1757613e17614555565b6020908102919091010152600101613dc8565b506003546040516306d5d9db60e41b81526001600160a01b0390911690636d5d9db090613e659088908890889061dead908890600401614a13565b6020604051808303816000875af1158015613e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea8919061487e565b95945050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052613f0b908590613f11565b50505050565b6000613f266001600160a01b03841683613f74565b90508051600014158015613f4b575080806020019051810190613f4991906148ef565b155b15611cff57604051635274afe760e01b81526001600160a01b0384166004820152602401610d6f565b6060613bbc8383600084600080856001600160a01b03168486604051613f9a9190614adf565b60006040518083038185875af1925050503d8060008114613fd7576040519150601f19603f3d011682016040523d82523d6000602084013e613fdc565b606091505b5091509150613fec868383613ff6565b9695505050505050565b60608261400b5761400682614052565b61243a565b815115801561402257506001600160a01b0384163b155b1561404b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d6f565b508061243a565b8051156140625780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805460008255906000526020600020908101906128c691905b808211156140a95760008155600101614095565b5090565b600080604083850312156140c057600080fd5b50508035926020909101359150565b600581106128c657600080fd5b600080604083850312156140ef57600080fd5b82356140fa816140cf565b946020939093013593505050565b60008083601f84011261411a57600080fd5b50813567ffffffffffffffff81111561413257600080fd5b6020830191508360208260051b85010111156123c257600080fd5b60008060008060008060a0878903121561416657600080fd5b863595506020870135945060408701359350606087013567ffffffffffffffff81111561419257600080fd5b61419e89828a01614108565b979a9699509497949695608090950135949350505050565b6000602082840312156141c857600080fd5b5035919050565b6000806000606084860312156141e457600080fd5b505081359360208301359350604090920135919050565b6001600160a01b03811681146128c657600080fd5b60006020828403121561422257600080fd5b813561243a816141fb565b60008060006060848603121561424257600080fd5b833592506020840135614254816141fb565b929592945050506040919091013590565b80151581146128c657600080fd5b60006020828403121561428557600080fd5b813561243a81614265565b6000806000806000606086880312156142a857600080fd5b85359450602086013567ffffffffffffffff808211156142c757600080fd5b6142d389838a01614108565b909650945060408801359150808211156142ec57600080fd5b506142f988828901614108565b969995985093965092949392505050565b6000806040838503121561431d57600080fd5b82356140fa816141fb565b600080600080600060a0868803121561434057600080fd5b85359450602086013593506040860135925060608601359150608086013561436781614265565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156143ae576143ae614375565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156143dd576143dd614375565b604052919050565b600067ffffffffffffffff8211156143ff576143ff614375565b50601f01601f191660200190565b6000806040838503121561442057600080fd5b82359150602083013567ffffffffffffffff81111561443e57600080fd5b8301601f8101851361444f57600080fd5b803561446261445d826143e5565b6143b4565b81815286602083850101111561447757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008151808452602080850194506020840160005b838110156144c8578151875295820195908201906001016144ac565b509495945050505050565b6020815281511515602082015260006020830151606060408401526144fb6080840182614497565b90506040840151601f19848303016060850152613ea88282614497565b60008060006060848603121561452d57600080fd5b833592506020840135614254816140cf565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252600c908201526b24b73b30b634b2103a34b2b960a11b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826145b6576145b6614591565b500690565b6001600160a01b039390931683526020830191909152604082015260806060820181905260009082015260a00190565b602080825260139082015272496e76616c69642070726f626162696c69747960681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161464057614640614618565b5060010190565b60005b8381101561466257818101518382015260200161464a565b50506000910152565b600082601f83011261467c57600080fd5b815161468a61445d826143e5565b81815284602083860101111561469f57600080fd5b6146b0826020830160208701614647565b949350505050565b600080600080608085870312156146ce57600080fd5b845167ffffffffffffffff808211156146e657600080fd5b6146f28883890161466b565b9550602087015191508082111561470857600080fd5b506147158782880161466b565b93505060408501519150606085015161472d816140cf565b939692955090935050565b60006080828403121561474a57600080fd5b61475261438b565b825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b805163ffffffff8116811461479257600080fd5b919050565b6000608082840312156147a957600080fd5b6147b161438b565b825160ff811681146147c257600080fd5b81526147d06020840161477e565b60208201526147e16040840161477e565b6040820152606083015160608201528091505092915050565b80820180821115613bbf57613bbf614618565b8082028115828204841417613bbf57613bbf614618565b60008261483357614833614591565b500490565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b60006020828403121561487357600080fd5b815161243a816141fb565b60006020828403121561489057600080fd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b60208082526017908201527f50617373207061636b206973206e6f7420616374697665000000000000000000604082015260600190565b60006020828403121561490157600080fd5b815161243a81614265565b6000806040838503121561491f57600080fd5b505080516020909101519092909150565b6000806000806080858703121561494657600080fd5b845193506020850151925060408501519150606085015161472d816141fb565b60006020828403121561497857600080fd5b813561243a816140cf565b81810381811115613bbf57613bbf614618565b6001600160a01b03841681526080602082018190526000906149ba90830185614497565b82810360408401526149cc8185614497565b8381036060909401939093525050600081526020019392505050565b838152606060208201526000614a016060830185614497565b8281036040840152613fec8185614497565b600060018060a01b03808816835260208781850152604060a0604086015287518060a0870152614a498160c08801858c01614647565b601f19601f8201168601905060c081016060858a1660608901526080955060c088840301608089015281895180845260e085019150868b019450600093505b80841015614acd578451805160ff1683528781015163ffffffff9081168985015287820151168784015283015183830152938601936001939093019290870190614a88565b509d9c50505050505050505050505050565b60008251614af1818460208701614647565b919091019291505056fea264697066735822122057178788f07bb634b0a51f4b4e813ef148ac81b5229d47b97f348dc571f05f7964736f6c63430008180033000000000000000000000000ad574f7f4eb563b0ccdcca0d7d7628aeaf071d65000000000000000000000000802187c392b15cdc8df8aa05bfef314df1f65c62000000000000000000000000c805686fc032ec19038e8305c62e5deb87c3607a000000000000000000000000901a60c22ebf6b3799bb0d14d97a1908bbc0e7a9000000000000000000000000fb63ff06b4203e450a626e264f7702be9d148fd70000000000000000000000006dca4408f97e9b22ab6df1b1dbc123f1a58e9058