0 txs
0 calls
constructor
No constructor.
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
assetManagerContract
viewfunction assetManagerContract() view returns (address)
BACKEND_ADMIN_ROLE
viewfunction BACKEND_ADMIN_ROLE() view returns (bytes32)
backendSigner
viewfunction backendSigner() view returns (address)
botCharacter
viewfunction botCharacter(uint256) view returns (uint256)
characterList
viewfunction characterList(uint256 simulationId) view returns (uint256[])
characterOwner
viewfunction characterOwner(uint256, uint256) view returns (address)
characters
viewfunction characters(uint256, uint256) view returns (uint256)
characterStatusDetail
viewfunction characterStatusDetail(uint256) view returns (uint256 simulationId, uint256 cooldownPeriod, uint256 hospitalizedAt, uint256 totalHealth)
cooldownPeriodPerUnitHealth
viewfunction cooldownPeriodPerUnitHealth() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
erc20
viewfunction erc20() view returns (address)
getCharactersCooldowns
viewfunction getCharactersCooldowns(uint256[] characterIds) view returns (tuple[])
getCharactersOwner
viewfunction getCharactersOwner(uint256 simulationId, uint256 charId) view returns (address)
getCoolDownFee
viewfunction getCoolDownFee(uint256 characterId, uint256 timestamp, address tokenAddress) view returns (uint256)
getParticipantsCharacter
viewfunction getParticipantsCharacter(uint256 simulationId, address owner) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hashMessage
purefunction hashMessage(uint256 simulationId, uint256 characterId, address user) pure returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isSupportedToken
viewfunction isSupportedToken(address _address) view returns (bool)
lobbyLockdownPeriod
viewfunction lobbyLockdownPeriod() view returns (uint256)
lockedCharacters
viewfunction lockedCharacters(uint256) view returns (bool)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
maxOf
viewfunction maxOf(uint8) view returns (uint256)
participantCharacter
viewfunction participantCharacter(uint256, address) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
recoverSigner
purefunction recoverSigner(uint256 simulationId, uint256 charId, address from, bytes32 r, bytes32 s, uint8 v) pure returns (address)
simulationContract
viewfunction simulationContract() view returns (address)
simulationPot
viewfunction simulationPot(uint256) view returns (uint256)
supportedTokens
viewfunction supportedTokens(uint256) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
teamAParticipantList
viewfunction teamAParticipantList(uint256 simulationId) view returns (uint256[])
teamAParticipants
viewfunction teamAParticipants(uint256, uint256) view returns (uint256)
teamBParticipantList
viewfunction teamBParticipantList(uint256 simulationId) view returns (uint256[])
teamBParticipants
viewfunction teamBParticipants(uint256, uint256) view returns (uint256)
tokenPerPercentage
viewfunction tokenPerPercentage(address) view returns (uint256)
treasuryAddress
viewfunction treasuryAddress() view returns (address)
validateArrayLength
purefunction validateArrayLength(uint256[] len1, uint256[] len2, uint8 _type) pure
addSupportedTokens
nonpayablefunction addSupportedTokens(address _address)
formTeam
nonpayablefunction formTeam(uint256 simulationId, uint256[] teamA, uint256[] teamB, uint256 botId)
getOutOfHospitalViaERC20
nonpayablefunction getOutOfHospitalViaERC20(uint256 characterId, uint256 timestamp, address tokenAddress)
getOutOfHospitalViaEth
payablefunction getOutOfHospitalViaEth(uint256 characterId, uint256 timestamp) payable
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address owner, address _treasuryAddress)
participateFree
nonpayablefunction participateFree(tuple payload, bytes32 _r, bytes32 _s, uint8 _v, uint256 simulationId, uint256 characterId)
participateViaERC20
nonpayablefunction participateViaERC20(tuple _payload, bytes32 _r, bytes32 _s, uint8 _v, uint256 simulationId, uint256 characterId)
participateViaEth
payablefunction participateViaEth(tuple _payload, bytes32 _r, bytes32 _s, uint8 _v, uint256 simulationId, uint256 characterId) payable
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAssetContract
nonpayablefunction setAssetContract(address _address)
setBackendSigner
nonpayablefunction setBackendSigner(address signer)
setCooldownPeriodPerUintHealth
nonpayablefunction setCooldownPeriodPerUintHealth(uint256 cooldownPeriod)
setLobbyLockdownPeriod
nonpayablefunction setLobbyLockdownPeriod(uint256 period)
setSimulationContract
nonpayablefunction setSimulationContract(address _address)
setTokenPerPercentage
nonpayablefunction setTokenPerPercentage(address token, uint256 amount)
setTreasuryAddress
nonpayablefunction setTreasuryAddress(address _treasuryAddress)
unlockCharacters
nonpayablefunction unlockCharacters(uint256 simulationId)
updateCooldownAndUnlock
nonpayablefunction updateCooldownAndUnlock(uint256 simulationId, tuple[] _data)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
CooldownsUpdated
event CooldownsUpdated(uint256 indexed simulationId, uint256 characterId, uint256 cooldownPeriod)
Initialized
event Initialized(uint8 version)
JoinedSimulation
event JoinedSimulation(uint256 indexed simulationId, uint256 indexed characterId, address participantAddress, uint256 joinedAt)
LobbyFull
event LobbyFull(uint256 indexed simulationId, uint256 indexed startTime)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Upgraded
event Upgraded(address indexed implementation)
errors
AmountMismatch
error AmountMismatch()
CharacterIsInCooldown
error CharacterIsInCooldown()
CharacterIsLocked
error CharacterIsLocked()
DuplicateParticipation
error DuplicateParticipation()
ErrorOnTransferringFee
error ErrorOnTransferringFee()
GameStateError
error GameStateError(uint8)
InvalidAddress
error InvalidAddress()
InvalidMatch
error InvalidMatch()
InvalidMessage
error InvalidMessage()
InvalidPaylod
error InvalidPaylod()
InvalidTimeStamp
error InvalidTimeStamp()
LobbyAlreadyFull
error LobbyAlreadyFull()
NotASupportedToken
error NotASupportedToken()
notInCooldown
error notInCooldown()
PaymentValueMismatch
error PaymentValueMismatch()
SizeMismatch
error SizeMismatch(uint8)
TeamAlreadyFormed
error TeamAlreadyFormed()
creation bytecode
0x60a06040523060805234801561001457600080fd5b5060805161452a61004c600039600081816111ff0152818161123f015281816114da0152818161151a0152611687015261452a6000f3fe6080604052600436106103965760003560e01c80636fd16344116101dc578063a7601a7111610102578063cadce860116100a0578063e6bd6eaf1161006f578063e6bd6eaf14610ba5578063ec87621c14610bc5578063fac0a92d14610bf9578063fb23146314610c1a57600080fd5b8063cadce86014610b13578063cda83e8d14610b33578063d547741f14610b64578063e5cd568f14610b8457600080fd5b8063ae833c2d116100dc578063ae833c2d14610a7e578063b54170ae14610ab2578063c5f956af14610ad2578063c625562614610af357600080fd5b8063a7601a7114610a34578063a9759d9c14610a47578063ad1db8de14610a6757600080fd5b806391d148541161017a5780639fd0454d116101495780639fd0454d14610996578063a011bf0b146109b6578063a06d142f146109cc578063a217fddf14610a1f57600080fd5b806391d1485414610916578063957e43391461093657806399d321b2146109565780639bb924611461098357600080fd5b8063785e9e86116101b6578063785e9e86146108885780637f03fd23146108b65780637fa20516146108d657806385b4cfd3146108f657600080fd5b80636fd163441461081857806374c93faa1461083857806375b238fc1461086657600080fd5b80633abd635c116102c157806352d1902d1161025f57806362a2f9cc1161022e57806362a2f9cc1461079857806364510c2a146107b857806365d65e86146107d85780636605bfda146107f857600080fd5b806352d1902d146106f55780636093efcd1461070a57806360cdb7c5146107585780636182dadb1461077857600080fd5b8063485cc9551161029b578063485cc955146106745780634eab52af146106945780634f1ef286146106c257806350ffbb76146106d557600080fd5b80633abd635c146105cb5780633f8c3170146105f9578063412149ee1461063c57600080fd5b806323d2a829116103395780632f2ff15d116103085780632f2ff15d1461054b57806336568abe1461056b5780633659cfe61461058b57806336f95670146105ab57600080fd5b806323d2a829146104bb578063240028e8146104db578063248a9ca3146104fb57806324b2485f1461052b57600080fd5b80630f1674c2116103755780630f1674c2146104205780631760705f146104405780631889bfda146104605780631a998bd01461048d57600080fd5b8062ef7dbc1461039b57806301ffc9a7146103d157806308e2bd6d146103fe575b600080fd5b3480156103a757600080fd5b506103bb6103b6366004612ec8565b610c5b565b6040516103c89190612f4e565b60405180910390f35b3480156103dd57600080fd5b506103f16103ec366004612f7a565b610cbd565b6040516103c89190612fa3565b34801561040a57600080fd5b5061041e610419366004612ec8565b610cf4565b005b34801561042c57600080fd5b506103bb61043b366004612ec8565b610d99565b34801561044c57600080fd5b5061041e61045b366004612fd6565b610dfa565b34801561046c57600080fd5b5061048061047b366004612ff7565b610e36565b6040516103c89190613034565b34801561049957600080fd5b506104806104a8366004612fd6565b6101086020526000908152604090205481565b3480156104c757600080fd5b506103bb6104d6366004612ec8565b610e68565b3480156104e757600080fd5b506103f16104f6366004612fd6565b610ec9565b34801561050757600080fd5b50610480610516366004612ec8565b60009081526065602052604090206001015490565b34801561053757600080fd5b5061041e610546366004613093565b610f34565b34801561055757600080fd5b5061041e610566366004613133565b611195565b34801561057757600080fd5b5061041e610586366004613133565b6111bf565b34801561059757600080fd5b5061041e6105a6366004612fd6565b6111f5565b3480156105b757600080fd5b5061041e6105c6366004612fd6565b6112d4565b3480156105d757600080fd5b506104806105e636600461317e565b6101046020526000908152604090205481565b34801561060557600080fd5b50610480610614366004613133565b600091825260ff602090815260408084206001600160a01b0393909316845291905290205490565b34801561064857600080fd5b50610480610657366004613133565b60ff60209081526000928352604080842090915290825290205481565b34801561068057600080fd5b5061041e61068f36600461319f565b611336565b3480156106a057600080fd5b506104806106af366004612ec8565b6101026020526000908152604090205481565b61041e6106d03660046132b2565b6114d0565b3480156106e157600080fd5b5061041e6106f03660046132ff565b61159c565b34801561070157600080fd5b5061048061167a565b34801561071657600080fd5b5061074b610725366004612ff7565b600091825260fe602090815260408084209284529190529020546001600160a01b031690565b6040516103c89190613358565b34801561076457600080fd5b5061041e610773366004613551565b6116d7565b34801561078457600080fd5b5061041e610793366004612ec8565b6117a3565b3480156107a457600080fd5b5061041e6107b3366004612fd6565b6117c2565b3480156107c457600080fd5b506104806107d3366004612ff7565b611839565b3480156107e457600080fd5b5060fc5461074b906001600160a01b031681565b34801561080457600080fd5b5061041e610813366004612fd6565b611855565b34801561082457600080fd5b506104806108333660046132ff565b611891565b34801561084457600080fd5b50610480610853366004612ec8565b6101056020526000908152604090205481565b34801561087257600080fd5b506104806000805160206144d583398151915281565b34801561089457600080fd5b5061010d546108a9906001600160a01b031681565b6040516103c89190613606565b3480156108c257600080fd5b5061041e6108d1366004613614565b6119a7565b3480156108e257600080fd5b506104806108f13660046132ff565b6119cb565b34801561090257600080fd5b5061041e610911366004613762565b611a04565b34801561092257600080fd5b506103f1610931366004613133565b611be7565b34801561094257600080fd5b50610480610951366004612ff7565b611c12565b34801561096257600080fd5b506109766109713660046137af565b611c2f565b6040516103c89190613885565b61041e610991366004613551565b611d5c565b3480156109a257600080fd5b5061074b6109b1366004613896565b611f54565b3480156109c257600080fd5b5061048060fb5481565b3480156109d857600080fd5b50610a0f6109e7366004612ec8565b6101066020526000908152604090208054600182015460028301546003909301549192909184565b6040516103c89493929190613913565b348015610a2b57600080fd5b50610480600081565b61041e610a42366004612ff7565b611fe6565b348015610a5357600080fd5b5061041e610a62366004613551565b61205c565b348015610a7357600080fd5b506104806101075481565b348015610a8a57600080fd5b506104807f725cc3989e149a767397970d298615c4843c213a88534e17f727f3ad663e6a6f81565b348015610abe57600080fd5b5061041e610acd366004613951565b61222c565b348015610ade57600080fd5b5061010a5461074b906001600160a01b031681565b348015610aff57600080fd5b5061074b610b0e366004612ec8565b612288565b348015610b1f57600080fd5b5061041e610b2e366004612fd6565b6122b3565b348015610b3f57600080fd5b506103f1610b4e366004612ec8565b6101036020526000908152604090205460ff1681565b348015610b7057600080fd5b5061041e610b7f366004613133565b6122ef565b348015610b9057600080fd5b5061010c546108a9906001600160a01b031681565b348015610bb157600080fd5b5061041e610bc0366004612ec8565b612314565b348015610bd157600080fd5b506104807f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b348015610c0557600080fd5b5061010b546108a9906001600160a01b031681565b348015610c2657600080fd5b5061074b610c35366004612ff7565b60fe6020908152600092835260408084209091529082529020546001600160a01b031681565b600081815260fd6020908152604091829020805483518184028101840190945280845260609392830182828015610cb157602002820191906000526020600020905b815481526020019060010190808311610c9d575b50505050509050919050565b60006001600160e01b03198216637965db0b60e01b1480610cee57506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08610d1e81612332565b600082815260fd60205260408120905b8154811015610d935760006101036000848481548110610d5057610d50613973565b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d8b9061399f565b915050610d2e565b50505050565b60008181526101016020908152604091829020805483518184028101840190945280845260609392830182828015610cb15760200282019190600052602060002090815481526020019060010190808311610c9d5750505050509050919050565b6000805160206144d5833981519152610e1281612332565b5061010c80546001600160a01b0319166001600160a01b0392909216919091179055565b6101006020528160005260406000208181548110610e5357600080fd5b90600052602060002001600091509150505481565b60008181526101006020908152604091829020805483518184028101840190945280845260609392830182828015610cb15760200282019190600052602060002090815481526020019060010190808311610c9d5750505050509050919050565b6000805b61010954811015610f2b57826001600160a01b03166101098281548110610ef657610ef6613973565b6000918252602090912001546001600160a01b031603610f195750600192915050565b80610f238161399f565b915050610ecd565b50600092915050565b7f725cc3989e149a767397970d298615c4843c213a88534e17f727f3ad663e6a6f610f5e81612332565b61010b546040516308304c1360e11b81526000916001600160a01b031690631060982690610f90908b90600401613034565b600060405180830381865afa158015610fad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fd59190810190613ba8565b9050610fe08161233c565b600088815261010060205260409020541580159061100c57506000888152610101602052604090205415155b1561102a57604051635416dc2560e01b815260040160405180910390fd5b61109787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a925089918291850190849080828437600092018290525092506119a7915050565b82156110a7576110a7818461237a565b600088815260fd602052604090205486816110c28783613be2565b146110ec5760006040516327f04bff60e01b81526004016110e39190613c39565b60405180910390fd5b60005b818110156111885760008b8152610100602052604090208a8a8381811061111857611118613973565b8354600181018555600094855260208086209281029490940135910155508c825261010190526040902088888381811061115457611154613973565b83546001810185556000948552602094859020919094029290920135919092015550806111808161399f565b9150506110ef565b5050505050505050505050565b6000828152606560205260409020600101546111b081612332565b6111ba8383612435565b505050565b6001600160a01b03811633146111e75760405162461bcd60e51b81526004016110e390613c96565b6111f182826124bb565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361123d5760405162461bcd60e51b81526004016110e390613cef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661128660008051602061448e833981519152546001600160a01b031690565b6001600160a01b0316146112ac5760405162461bcd60e51b81526004016110e390613d48565b6112b581612522565b604080516000808252602082019092526112d191839190612549565b50565b6000805160206144d58339815191526112ec81612332565b6001600160a01b0382166113135760405163e6c4247b60e01b815260040160405180910390fd5b5060fc80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16158080156113565750600054600160ff909116105b806113705750303b158015611370575060005460ff166001145b61138c5760405162461bcd60e51b81526004016110e390613da3565b6000805460ff1916600117905580156113af576000805461ff0019166101001790555b6113ba60008461262b565b61010a80546001600160a01b0319166001600160a01b038416179055610104602052600a7f0c81ce4857d5b94b8c75139d9e9e2911ece8cd067eddba6000e40a08e09d56435560017f37d2fb5664909bd2e87e0bacfd992e6ab9e92cf0b3c9e1919348bfb8fd23a6df5560037f366700fa4a54fabf41470ae21330c7a9ced6ce535b281916c3ea8a91b225034d81905560056000527ff3ae5398dbdd2c933f5e12dbb67cc93e39a208fd6f0685bfe9d30acb4843ec3e55611479612635565b611481612635565b80156111ba576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906114c390600190613dc7565b60405180910390a1505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115185760405162461bcd60e51b81526004016110e390613cef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661156160008051602061448e833981519152546001600160a01b031690565b6001600160a01b0316146115875760405162461bcd60e51b81526004016110e390613d48565b61159082612522565b6111f182826001612549565b61010d80546001600160a01b0319166001600160a01b03831617905560006115c5848484611891565b61010d5461010a546040516323b872dd60e01b81529293506000926001600160a01b03928316926323b872dd92611606923392909116908790600401613dd5565b6020604051808303816000875af1158015611625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116499190613e10565b90508061166957604051630de4bc2f60e01b815260040160405180910390fd5b611673858561265e565b5050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116c45760405162461bcd60e51b81526004016110e390613e8b565b5060008051602061448e83398151915290565b61010b546040516308304c1360e11b815233916000916001600160a01b039091169063106098269061170d908790600401613034565b600060405180830381865afa15801561172a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117529190810190613ba8565b905060008160400151600281111561176c5761176c613bf5565b1461178a576040516314d6239f60e11b815260040160405180910390fd5b611799888888888689896126b0565b5050505050505050565b6000805160206144d58339815191526117bb81612332565b5061010755565b6000805160206144d58339815191526117da81612332565b6117e382610ec9565b6111f15761010980546001810182556000919091527fd7f48d1c2d4fdcceabee32a4fd1437f382c65f0f9af09a878c95c20147dc06a80180546001600160a01b0384166001600160a01b03199091161790555050565b60fd6020528160005260406000208181548110610e5357600080fd5b6000805160206144d583398151915261186d81612332565b5061010a80546001600160a01b0319166001600160a01b0392909216919091179055565b600083815261010660205260408120600181015482036118c4576040516314c0615360e01b815260040160405180910390fd5b60008160020154856118d69190613e9b565b9050816001015481106118ee576000925050506119a0565b600182015462015180906008906000908390859061190c9083613e9b565b6119169190613be2565b611921906064613eae565b61192b9190613ee3565b90506064600061193b8383613e9b565b60038801546001600160a01b038b16600090815261010860205260409020549192506064918390839061196e9089613eae565b6119789190613ee3565b6119829190613eae565b61198c9190613eae565b6119969190613ee3565b9750505050505050505b9392505050565b81518351146111ba57806040516327f04bff60e01b81526004016110e39190613c39565b6000808484846040516020016119e393929190613f25565b60408051808303601f19018152919052805160209091012095945050505050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08611a2e81612332565b60008381526101026020526040812054835190915b81811015611bdf576000858281518110611a5f57611a5f613973565b60200260200101516000015190506000868381518110611a8157611a81613973565b60200260200101516020015190506000878481518110611aa357611aa3613973565b6020026020010151604001519050600081831015611ad457604051636ee0197360e01b815260040160405180910390fd5b818314158015611ae45750868414155b15611b25576000611af58385613e9b565b9050600084611b05836064613eae565b611b0f9190613ee3565b90508061010754611b209190613eae565b925050505b604080516080810182528b81526020808201848152428385019081526060840188815260008a815261010690945294909220925183555160018301555160028201559051600390910155868414611b8e57600084815261010360205260409020805460ff191690555b897ff9b8697e8734d6cc47babe927244d3584f1dbb3ba887a635a4801c4900769b078583604051611bc0929190613f5c565b60405180910390a2505050508080611bd79061399f565b915050611a43565b505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101016020528160005260406000208181548110610e5357600080fd5b805160609060ff166000816001600160401b03811115611c5157611c516131c1565b604051908082528060200260200182016040528015611cad57816020015b611c9a6040518060800160405280600081526020016000815260200160008152602001600081525090565b815260200190600190039081611c6f5790505b50905060005b828160ff161015611d54576101066000868360ff1681518110611cd857611cd8613973565b60200260200101518152602001908152602001600020604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382015481525050828260ff1681518110611d3657611d36613973565b60200260200101819052508080611d4c90613f77565b915050611cb3565b509392505050565b61010b546040516308304c1360e11b8152349133916000916001600160a01b031690631060982690611d92908890600401613034565b600060405180830381865afa158015611daf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611dd79190810190613ba8565b9050600181604001516002811115611df157611df1613bf5565b14611e0f576040516314d6239f60e11b815260040160405180910390fd5b82816060015114611e33576040516355e97b0d60e01b815260040160405180910390fd5b600181604001516002811115611e4b57611e4b613bf5565b03611f3a5761010b54604080516359cb711d60e01b815290516000926001600160a01b0316916359cb711d9160048083019260209291908290030181865afa158015611e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebf9190613f8d565b6001600160a01b031634604051611ed590613fae565b60006040518083038185875af1925050503d8060008114611f12576040519150601f19603f3d011682016040523d82523d6000602084013e611f17565b606091505b5050905080611f385760405162461bcd60e51b81526004016110e390613fe4565b505b611f4989898989868a8a6126b0565b505050505050505050565b600080611f628888886119cb565b604051602001611f729190613ff4565b60405160208183030381529060405280519060200120905060018184878760405160008152602001604052604051611fad9493929190614038565b6020604051602081039080840390855afa158015611fcf573d6000803e3d6000fd5b5050604051601f1901519998505050505050505050565b6000611ff483836000611891565b90508034146120165760405163da2a477f60e01b815260040160405180910390fd5b61010a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612051573d6000803e3d6000fd5b506111ba838361265e565b61010b546040516308304c1360e11b81526000916001600160a01b03169063106098269061208e908690600401613034565b600060405180830381865afa1580156120ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120d39190810190613ba8565b90506002816040015160028111156120ed576120ed613bf5565b1461210b576040516314d6239f60e11b815260040160405180910390fd5b61014081015161010d80546001600160a01b0319166001600160a01b0392831690811790915561010b5460408051636653f99760e11b815290513394600094936323b872dd938793919092169163cca7f32e9160048083019260209291908290030181865afa158015612182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a69190613f8d565b86606001516040518463ffffffff1660e01b81526004016121c993929190613dd5565b6020604051808303816000875af11580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190613e10565b905080611f3a57604051630de4bc2f60e01b815260040160405180910390fd5b6000805160206144d583398151915261224481612332565b61224d83610ec9565b61226a57604051633df81df960e11b815260040160405180910390fd5b506001600160a01b0390911660009081526101086020526040902055565b610109818154811061229957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000805160206144d58339815191526122cb81612332565b5061010b80546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526065602052604090206001015461230a81612332565b6111ba83836124bb565b6000805160206144d583398151915261232c81612332565b5060fb55565b6112d18133612a97565b6005816101000151600581111561235557612355613bf5565b146112d157806101000151604051637c4b79e560e01b81526004016110e39190613c39565b81516123858361233c565b9151600090815260fd602090815260408083208054600181810183559185528385200185905585845260ff8352818420848052835281842085905585845260fe8352818420858552835281842080546001600160a01b03191690558584526101028352818420859055815160808101835295865285830184815242878401908152606088018681529686526101069094529190932094518555519184019190915551600283015551600390910155565b61243f8282611be7565b6111f15760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556124773390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6124c58282611be7565b156111f15760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61252d600033611be7565b6112d15760405162461bcd60e51b81526004016110e390614073565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561257c576111ba83612af0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156125d6575060408051601f3d908101601f191682019092526125d391810190614083565b60015b6125f25760405162461bcd60e51b81526004016110e3906140ef565b60008051602061448e833981519152811461261f5760405162461bcd60e51b81526004016110e390614145565b506111ba838383612b46565b6111f18282612435565b600054610100900460ff1661265c5760405162461bcd60e51b81526004016110e39061419d565b565b61266942603c613be2565b81111561268957604051634b3d204d60e01b815260040160405180910390fd5b50600090815261010660205260408120818155600181018290556002810182905560030155565b60006126c08383868a8a8a611f54565b60fc549091506001600160a01b038083169116146126f157604051636eca2e4b60e01b815260040160405180910390fd5b61010b546040516308304c1360e11b81526000916001600160a01b031690631060982690612723908790600401613034565b600060405180830381865afa158015612740573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127689190810190613ba8565b90506127738161233c565b61277c83612b6b565b600084815260ff602090815260408083206001600160a01b0389168452909152902054156127bd576040516314e1f57960e11b815260040160405180910390fd5b600084815260fd602090815260409091205490820151036127f1576040516320634cd160e01b815260040160405180910390fd5b60046000526101046020527f37d2fb5664909bd2e87e0bacfd992e6ab9e92cf0b3c9e1919348bfb8fd23a6df5489515111156128435760046040516327f04bff60e01b81526004016110e39190613c39565b60016000526101046020527f366700fa4a54fabf41470ae21330c7a9ced6ce535b281916c3ea8a91b225034d5460408a01515111156128985760016040516327f04bff60e01b81526004016110e39190613c39565b60056000526101046020527ff3ae5398dbdd2c933f5e12dbb67cc93e39a208fd6f0685bfe9d30acb4843ec3e5460808a01515111156128ed5760056040516327f04bff60e01b81526004016110e39190613c39565b600084815260fd6020908152604080832080546001810182559084528284200186905586835260ff82528083206001600160a01b03808a1680865291845282852088905588855260fe84528285208886529093529281902080546001600160a01b03191690931790925561010c549151638125ade960e01b8152911690638125ade99061298490879087908a908f90600401614285565b600060405180830381600087803b15801561299e57600080fd5b505af11580156129b2573d6000803e3d6000fd5b505050600084815261010360209081526040808320805460ff191660011790556060850151888452610105909252909120546129ee9250613be2565b61010560008681526020019081526020016000208190555082847fd41f2cbf867b0c0856674c865e608c3566ae12c92978cc1dc1ec1e4df3da66538742604051612a399291906142bf565b60405180910390a3600084815260fd60209081526040909120549082015103611f4957608081015160405185907fffadebe72378a65a0a710e56dc3f5683028ee6bdbb8d1638fbae448d8e2cf08490600090a3505050505050505050565b612aa18282611be7565b6111f157612aae81612be0565b612ab9836020612bf2565b604051602001612aca9291906142ef565b60408051601f198184030181529082905262461bcd60e51b82526110e391600401614379565b6001600160a01b0381163b612b175760405162461bcd60e51b81526004016110e3906143d4565b60008051602061448e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612b4f83612d5d565b600082511180612b5c5750805b156111ba57610d938383612d9d565b6000818152610103602052604090205460ff1615612b9c5760405163781c1b4760e11b815260040160405180910390fd5b60008181526101066020526040902060028101546001909101544291612bc191613be2565b11156112d1576040516355b863d160e11b815260040160405180910390fd5b6060610cee6001600160a01b03831660145b60606000612c01836002613eae565b612c0c906002613be2565b6001600160401b03811115612c2357612c236131c1565b6040519080825280601f01601f191660200182016040528015612c4d576020820181803683370190505b509050600360fc1b81600081518110612c6857612c68613973565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612c9757612c97613973565b60200101906001600160f81b031916908160001a9053506000612cbb846002613eae565b612cc6906001613be2565b90505b6001811115612d3e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612cfa57612cfa613973565b1a60f81b828281518110612d1057612d10613973565b60200101906001600160f81b031916908160001a90535060049490941c93612d37816143e4565b9050612cc9565b5083156119a05760405162461bcd60e51b81526004016110e39061442d565b612d6681612af0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606119a083836040518060600160405280602781526020016144ae602791396060600080856001600160a01b031685604051612dda919061443d565b600060405180830381855af49150503d8060008114612e15576040519150601f19603f3d011682016040523d82523d6000602084013e612e1a565b606091505b5091509150612e2b86838387612e35565b9695505050505050565b60608315612e74578251600003612e6d576001600160a01b0385163b612e6d5760405162461bcd60e51b81526004016110e39061447d565b5081612e7e565b612e7e8383612e86565b949350505050565b815115612e965781518083602001fd5b8060405162461bcd60e51b81526004016110e39190614379565b805b81146112d157600080fd5b8035610cee81612eb0565b600060208284031215612edd57612edd600080fd5b6000612e7e8484612ebd565b805b82525050565b6000612efd8383612ee9565b505060200190565b6000612f0f825190565b80845260209384019383018060005b83811015612f43578151612f328882612ef1565b975060208301925050600101612f1e565b509495945050505050565b602080825281016119a08184612f05565b6001600160e01b03198116612eb2565b8035610cee81612f5f565b600060208284031215612f8f57612f8f600080fd5b6000612e7e8484612f6f565b801515612eeb565b60208101610cee8284612f9b565b60006001600160a01b038216610cee565b612eb281612fb1565b8035610cee81612fc2565b600060208284031215612feb57612feb600080fd5b6000612e7e8484612fcb565b6000806040838503121561300d5761300d600080fd5b60006130198585612ebd565b925050602061302a85828601612ebd565b9150509250929050565b60208101610cee8284612ee9565b60008083601f84011261305757613057600080fd5b5081356001600160401b0381111561307157613071600080fd5b60208301915083602082028301111561308c5761308c600080fd5b9250929050565b600080600080600080608087890312156130af576130af600080fd5b60006130bb8989612ebd565b96505060208701356001600160401b038111156130da576130da600080fd5b6130e689828a01613042565b955095505060408701356001600160401b0381111561310757613107600080fd5b61311389828a01613042565b9350935050606061312689828a01612ebd565b9150509295509295509295565b6000806040838503121561314957613149600080fd5b60006131558585612ebd565b925050602061302a85828601612fcb565b600681106112d157600080fd5b8035610cee81613166565b60006020828403121561319357613193600080fd5b6000612e7e8484613173565b600080604083850312156131b5576131b5600080fd5b60006131558585612fcb565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b03821117156131fc576131fc6131c1565b6040525050565b600061320e60405190565b905061321a82826131d7565b919050565b60006001600160401b03821115613238576132386131c1565b601f19601f83011660200192915050565b82818337506000910152565b60006132686132638461321f565b613203565b90508281526020810184848401111561328357613283600080fd5b611d54848285613249565b600082601f8301126132a2576132a2600080fd5b8135612e7e848260208601613255565b600080604083850312156132c8576132c8600080fd5b60006132d48585612fcb565b92505060208301356001600160401b038111156132f3576132f3600080fd5b61302a8582860161328e565b60008060006060848603121561331757613317600080fd5b60006133238686612ebd565b935050602061333486828701612ebd565b925050604061334586828701612fcb565b9150509250925092565b612eeb81612fb1565b60208101610cee828461334f565b60006001600160401b0382111561337f5761337f6131c1565b5060209081020190565b600061339761326384613366565b838152905060208082019084028301858111156133b6576133b6600080fd5b835b818110156133da57806133cb8882612ebd565b845250602092830192016133b8565b5050509392505050565b600082601f8301126133f8576133f8600080fd5b8135612e7e848260208601613389565b600060c0828403121561341d5761341d600080fd5b61342760c0613203565b905081356001600160401b0381111561344257613442600080fd5b61344e848285016133e4565b82525060208201356001600160401b0381111561346d5761346d600080fd5b613479848285016133e4565b60208301525060408201356001600160401b0381111561349b5761349b600080fd5b6134a7848285016133e4565b60408301525060608201356001600160401b038111156134c9576134c9600080fd5b6134d5848285016133e4565b60608301525060808201356001600160401b038111156134f7576134f7600080fd5b613503848285016133e4565b60808301525060a08201356001600160401b0381111561352557613525600080fd5b613531848285016133e4565b60a08301525092915050565b60ff8116612eb2565b8035610cee8161353d565b60008060008060008060c0878903121561356d5761356d600080fd5b86356001600160401b0381111561358657613586600080fd5b61359289828a01613408565b96505060206135a389828a01612ebd565b95505060406135b489828a01612ebd565b94505060606135c589828a01613546565b93505060806135d689828a01612ebd565b92505060a061312689828a01612ebd565b6000610cee82612fb1565b6000610cee826135e7565b612eeb816135f2565b60208101610cee82846135fd565b60008060006060848603121561362c5761362c600080fd5b83356001600160401b0381111561364557613645600080fd5b613651868287016133e4565b93505060208401356001600160401b0381111561367057613670600080fd5b61367c868287016133e4565b925050604061334586828701613173565b6000606082840312156136a2576136a2600080fd5b6136ac6060613203565b905060006136ba8484612ebd565b82525060206136cb84848301612ebd565b60208301525060406136df84828501612ebd565b60408301525092915050565b60006136f961326384613366565b8381529050602081016060840283018581111561371857613718600080fd5b835b818110156133da578061372d888261368d565b84525060209092019160600161371a565b600082601f83011261375257613752600080fd5b8135612e7e8482602086016136eb565b6000806040838503121561377857613778600080fd5b60006137848585612ebd565b92505060208301356001600160401b038111156137a3576137a3600080fd5b61302a8582860161373e565b6000602082840312156137c4576137c4600080fd5b81356001600160401b038111156137dd576137dd600080fd5b612e7e848285016133e4565b805160808301906137fa8482612ee9565b50602082015161380d6020850182612ee9565b5060408201516138206040850182612ee9565b506060820151610d936060850182612ee9565b600061383f83836137e9565b505060800190565b6000613851825190565b80845260209384019383018060005b83811015612f435781516138748882613833565b975060208301925050600101613860565b602080825281016119a08184613847565b60008060008060008060c087890312156138b2576138b2600080fd5b60006138be8989612ebd565b96505060206138cf89828a01612ebd565b95505060406138e089828a01612fcb565b94505060606138f189828a01612ebd565b935050608061390289828a01612ebd565b92505060a061312689828a01613546565b608081016139218287612ee9565b61392e6020830186612ee9565b61393b6040830185612ee9565b6139486060830184612ee9565b95945050505050565b6000806040838503121561396757613967600080fd5b60006130198585612fcb565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982036139b2576139b2613989565b5060010190565b8051610cee81612eb0565b600381106112d157600080fd5b8051610cee816139c4565b60005b838110156139f75781810151838201526020016139df565b50506000910152565b6000613a0e6132638461321f565b905082815260208101848484011115613a2957613a29600080fd5b611d548482856139dc565b600082601f830112613a4857613a48600080fd5b8151612e7e848260208601613a00565b8051610cee81613166565b8051610cee81612fc2565b60006101608284031215613a8457613a84600080fd5b613a8f610160613203565b90506000613a9d84846139b9565b8252506020613aae848483016139b9565b6020830152506040613ac2848285016139d1565b6040830152506060613ad6848285016139b9565b6060830152506080613aea848285016139b9565b60808301525060a0613afe848285016139b9565b60a08301525060c0613b12848285016139b9565b60c08301525060e08201516001600160401b03811115613b3457613b34600080fd5b613b4084828501613a34565b60e083015250610100613b5584828501613a58565b610100830152506101208201516001600160401b03811115613b7957613b79600080fd5b613b8584828501613a34565b61012083015250610140613b9b84828501613a63565b6101408301525092915050565b600060208284031215613bbd57613bbd600080fd5b81516001600160401b03811115613bd657613bd6600080fd5b612e7e84828501613a6e565b80820180821115610cee57610cee613989565b634e487b7160e01b600052602160045260246000fd5b600681106112d1576112d1613bf5565b8061321a81613c0b565b6000610cee82613c1b565b612eeb81613c25565b60208101610cee8284613c30565b602f81526000602082017f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636581526e103937b632b9903337b91039b2b63360891b602082015291505b5060400190565b60208082528101610cee81613c47565b602c81526000602082017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b19195b1959d85d1958d85b1b60a21b60208201529150613c8f565b60208082528101610cee81613ca6565b602c81526000602082017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b6163746976652070726f787960a01b60208201529150613c8f565b60208082528101610cee81613cff565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150613c8f565b60208082528101610cee81613d58565b600060ff8216610cee565b612eeb81613db3565b60208101610cee8284613dbe565b60608101613de3828661334f565b613df0602083018561334f565b612e7e6040830184612ee9565b801515612eb2565b8051610cee81613dfd565b600060208284031215613e2557613e25600080fd5b6000612e7e8484613e05565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c81527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060208201529150613c8f565b60208082528101610cee81613e31565b81810381811115610cee57610cee613989565b818102808215838204851417613ec657613ec6613989565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082613ef257613ef2613ecd565b500490565b80612eeb565b6000610cee8260601b90565b6000610cee82613efd565b612eeb613f2082612fb1565b613f09565b6000613f318286613ef7565b602082019150613f418285613ef7565b602082019150613f518284613f14565b506014019392505050565b60408101613f6a8285612ee9565b6119a06020830184612ee9565b60ff16600060fe1982016139b2576139b2613989565b600060208284031215613fa257613fa2600080fd5b6000612e7e8484613a63565b600081610cee565b60148152600060208201732330b4b632b2103a379039b2b7321022ba3432b960611b815291505b5060200190565b60208082528101610cee81613fb6565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0160006140268284613ef7565b50602001919050565b60ff8116612eeb565b608081016140468287612ee9565b61392e602083018661402f565b60098152600060208201682727aa2fa7aba722a960b91b81529150613fdd565b60208082528101610cee81614053565b60006020828403121561409857614098600080fd5b6000612e7e84846139b9565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b60208201529150613c8f565b60208082528101610cee816140a4565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b60208201529150613c8f565b60208082528101610cee816140ff565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150613c8f565b60208082528101610cee81614155565b60006141b7825190565b80845260209384019383018060005b83811015612f435781516141da8882612ef1565b9750602083019250506001016141c6565b805160c08084526000919084019061420382826141ad565b9150506020830151848203602086015261421d82826141ad565b9150506040830151848203604086015261423782826141ad565b9150506060830151848203606086015261425182826141ad565b9150506080830151848203608086015261426b82826141ad565b91505060a083015184820360a086015261394882826141ad565b608081016142938287612ee9565b6142a06020830186612ee9565b6142ad604083018561334f565b8181036060830152612e2b81846141eb565b60408101613f6a828561334f565b60006142d7825190565b6142e58185602086016139dc565b9290920192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152601701600061432182856142cd565b7001034b99036b4b9b9b4b733903937b6329607d1b81526011019150612e7e82846142cd565b6000614351825190565b8084526020840193506143688185602086016139dc565b601f01601f19169290920192915050565b602080825281016119a08184614347565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529150613c8f565b60208082528101610cee8161438a565b6000816143f3576143f3613989565b506000190190565b60208082527f537472696e67733a20686578206c656e67746820696e73756666696369656e7491019081526000613fdd565b60208082528101610cee816143fb565b60006119a082846142cd565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150613fdd565b60208082528101610cee8161444956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220ac12efbb437e699a99085ceb21f4069caaf6f5bfb25b26336e52a3d1229f08a264736f6c63430008110033