16 txs
880 calls
constructor
constructor(address owner, address admin, address _abilityHdlr, address _itmHdlr, address _eqpHdlr, address _abilityContract, address _lootcrateNft, address _xcall, string _connectionAddr, string _sourceAddr) payable
functions
ability
viewfunction ability() view returns (address)
abilityHdlr
viewfunction abilityHdlr() view returns (address)
assetCounts
viewfunction assetCounts(uint256, uint256, uint8, uint256) view returns (uint256)
connectionAddress
viewfunction connectionAddress() view returns (string)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
eqpHdlr
viewfunction eqpHdlr() view returns (address)
getParticipantDetail
viewfunction getParticipantDetail(uint256 simulationId, uint256 charId) view returns (tuple)
getParticipantsCharacter
viewfunction getParticipantsCharacter(uint256 simulationId, address user) view returns (uint256 charId)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getTournamentLockedEquipment
viewfunction getTournamentLockedEquipment(uint256 tourId, address user) view returns (uint256 charId)
getTournamentLockTime
viewfunction getTournamentLockTime(uint256 _tournamentId) view returns (uint256 lockTime)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
iconBaseLootcrateIds
viewfunction iconBaseLootcrateIds(uint256) view returns (uint256)
itmHdlr
viewfunction itmHdlr() view returns (address)
lootcrateNft
viewfunction lootcrateNft() view returns (address)
simulations
viewfunction simulations(uint256) view returns (uint256 simulationId, uint256 tournamentId, uint256 gameStartTime, bool status)
sourceAddress
viewfunction sourceAddress() view returns (string)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tournamentDetails
viewfunction tournamentDetails(uint256) view returns (bool tournament, uint256 lockTime)
tournamentPayment
viewfunction tournamentPayment() view returns (address)
xCallContract
viewfunction xCallContract() view returns (address)
addAbilityTokens
nonpayablefunction addAbilityTokens(uint256 simulationId, uint256 charId, uint256[] abilityIds, uint256[] abilityValues)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
handleCallMessage
nonpayablefunction handleCallMessage(string _from, bytes _data, string[] _protocols)
lockEquipmentForTournament
nonpayablefunction lockEquipmentForTournament(uint256 _tournamentId, uint256 _equipmentId)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAbility
nonpayablefunction setAbility(address _ability)
setAbilityHandler
nonpayablefunction setAbilityHandler(address _abilityHdlr)
setEquipmentHandler
nonpayablefunction setEquipmentHandler(address _eqpHdlr)
setIconBaseLoocrateIds
nonpayablefunction setIconBaseLoocrateIds(uint256[] iconIds, uint256[] baseIds)
setItemHandler
nonpayablefunction setItemHandler(address _itmHdlr)
setLootcrateNft
nonpayablefunction setLootcrateNft(address _lootcrate)
setPaymentContract
nonpayablefunction setPaymentContract(address _payment)
setProtocolAddress
nonpayablefunction setProtocolAddress(string _protocol)
setSourceAddress
nonpayablefunction setSourceAddress(string _source)
setXcallContract
nonpayablefunction setXcallContract(address _xcall)
unlockAssets
nonpayablefunction unlockAssets(uint256 simulationId, uint256 characterId, address owner, bool burnItem)
updateAbilities
nonpayablefunction updateAbilities(uint256 simulationId, address from, uint256 charId, uint256[] abilityIds, uint256[] abilityCounts)
updateEquipments
nonpayablefunction updateEquipments(uint256 simulationId, address from, uint256 charId, uint256[] equipmentIds, uint256[] equipmentCounts)
updateItems
nonpayablefunction updateItems(uint256 simulationId, address from, uint256 charId, uint256[] itemIds, uint256[] itemCounts)
updateUserAssets
nonpayablefunction updateUserAssets(uint256 simulationId, uint256 charId, address _from, tuple payload)
events
AbilityAdded
event AbilityAdded(address indexed caller, uint256 indexed characterId, uint256 indexed simulationId, uint256[] abilityId, uint256[] abilityValue)
LobbyUpdated
event LobbyUpdated(uint256 indexed simulationId, uint256 indexed characterId)
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)
SimulationCreated
event SimulationCreated(uint256 indexed simulationId, uint256 tournamentId)
SimulationEnded
event SimulationEnded(uint256 indexed simulationId)
SyncSimulation
event SyncSimulation(uint256 indexed simulationId)
TournamentCancelled
event TournamentCancelled(uint256 indexed tournamentId)
TournamentCompleted
event TournamentCompleted(uint256 indexed tournamentId)
TournamentCreated
event TournamentCreated(uint256 indexed tournamentId)
TournamentParticipation
event TournamentParticipation(uint256 indexed simulationId)
errors
ErrorOnParsingAddress
error ErrorOnParsingAddress()
GameStateError
error GameStateError(uint8)
InvalidConnectionAddress
error InvalidConnectionAddress()
InvalidContractType
error InvalidContractType(uint8)
InvalidEquipmentId
error InvalidEquipmentId()
InvalidProtocolLength
error InvalidProtocolLength()
InvalidSourceAddress
error InvalidSourceAddress()
MethodDoesNotExists
error MethodDoesNotExists()
NotAuthorized
error NotAuthorized()
NotPaidForTournament
error NotPaidForTournament()
SimulationAlreadyStarted
error SimulationAlreadyStarted()
SimulationDoesNotExist
error SimulationDoesNotExist()
SizeMismatch
error SizeMismatch(uint8)
TournamentDoesNotExist
error TournamentDoesNotExist()
creation bytecode
0x608060405260405162005ab138038062005ab1833981016040819052620000269162000398565b6200003360008b62000147565b6200005f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758a62000147565b6200008b7f60cd00dcfd7a15a07cd49d8c39dd66655888b430bf6412aa1c7b4b5fc410017b8462000147565b620000b77f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f8a62000147565b600b80546001600160a01b03199081166001600160a01b038b811691909117909255600c805482168a8416179055600d80548216898416179055600e80548216888416179055600f80548216878416179055600780549091169185169190911790556008620001278382620005b6565b506009620001368282620005b6565b505050505050505050505062000686565b62000153828262000157565b5050565b620001638282620001df565b62000153576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200019b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff165b92915050565b60006001600160a01b03821662000204565b62000227816200020a565b81146200023357600080fd5b50565b805162000204816200021c565b600062000204826200020a565b620002278162000243565b8051620002048162000250565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715620002a657620002a662000268565b6040525050565b6000620002b960405190565b9050620002c782826200027e565b919050565b60006001600160401b03821115620002e857620002e862000268565b601f19601f83011660200192915050565b60005b8381101562000316578181015183820152602001620002fc565b50506000910152565b6000620003366200033084620002cc565b620002ad565b905082815260208101848484011115620003535762000353600080fd5b62000360848285620002f9565b509392505050565b600082601f8301126200037e576200037e600080fd5b8151620003908482602086016200031f565b949350505050565b6000806000806000806000806000806101408b8d031215620003bd57620003bd600080fd5b6000620003cb8d8d62000236565b9a50506020620003de8d828e0162000236565b9950506040620003f18d828e016200025b565b9850506060620004048d828e016200025b565b9750506080620004178d828e016200025b565b96505060a06200042a8d828e016200025b565b95505060c06200043d8d828e016200025b565b94505060e0620004508d828e0162000236565b9350506101008b01516001600160401b03811115620004725762000472600080fd5b620004808d828e0162000368565b9250506101208b01516001600160401b03811115620004a257620004a2600080fd5b620004b08d828e0162000368565b9150509295989b9194979a5092959850565b634e487b7160e01b600052602260045260246000fd5b600281046001821680620004ed57607f821691505b602082108103620005025762000502620004c2565b50919050565b600062000204620005168381565b90565b620005248362000508565b815460001960089490940293841b1916921b91909117905550565b60006200054e81848462000519565b505050565b818110156200015357620005696000826200053f565b60010162000553565b601f8211156200054e576000818152602090206020601f850104810160208510156200059b5750805b620005af6020601f86010483018262000553565b5050505050565b81516001600160401b03811115620005d257620005d262000268565b620005de8254620004d8565b620005eb82828562000572565b6020601f831160018114620006225760008415620006095750858201515b600019600886021c19811660028602178655506200067e565b600085815260208120601f198616915b8281101562000654578885015182556020948501946001909201910162000632565b86831015620006715784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b61541b80620006966000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806362c70f7e11610146578063a59fc3eb116100c3578063d547741f11610087578063d547741f14610634578063ddadeeaf14610647578063e1d6e8761461065a578063e580c3ce1461067a578063ec21afbc1461068d578063f9f11b60146106a057600080fd5b8063a59fc3eb146105d3578063b0fa8444146105e6578063b85cdfd3146105ee578063b9029ee714610601578063c88a05dd1461061457600080fd5b80638abb20cc1161010a5780638abb20cc1461057f5780638c006259146105925780638c1d98eb146105a557806391d14854146105b8578063a217fddf146105cb57600080fd5b806362c70f7e146104e95780636a563aed1461050957806375de8db8146105445780637bc27153146105595780638125ade91461056c57600080fd5b806343141da5116101df5780634cef637d116101a35780634cef637d14610467578063515972e31461048a57806358135d521461049d5780635d2b7469146104b05780635d6a16f5146104c357806360c87440146104d657600080fd5b806343141da5146103aa5780634475df55146103bd57806345407522146103d057806346fbf9c61461041a57806349d4107d1461042d57600080fd5b80632f2ff15d116102265780632f2ff15d14610328578063351b6d031461033b57806336568abe1461034e5780633f8c3170146103615780633fe5bb691461039757600080fd5b806301ffc9a71461026357806313fa79801461028c5780631870b363146102ac578063248a9ca3146102f057806325ed2bd614610313575b600080fd5b61027661027136600461408b565b6106b3565b60405161028391906140be565b60405180910390f35b600f5461029f906001600160a01b031681565b604051610283919061410e565b6102e36102ba366004614152565b60009182526001602081815260408085206001600160a01b039490941685529290529120015490565b6040516102839190614195565b6102e36102fe3660046141a3565b60009081526020819052604090206001015490565b6103266103213660046142c9565b6106ea565b005b610326610336366004614152565b6107ab565b6103266103493660046143c6565b6107d5565b61032661035c366004614152565b610800565b6102e361036f366004614152565b60009182526001602090815260408084206001600160a01b0393909316845291905290205490565b6103266103a5366004614420565b610836565b6103266103b8366004614484565b61087f565b6103266103cb36600461452f565b610b25565b61040a6103de3660046141a3565b600260208190526000918252604090912080546001820154928201546003909201549092919060ff1684565b6040516102839493929190614550565b61032661042836600461452f565b610b73565b6102e361043b3660046145a6565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6102e36104753660046141a3565b6000908152600a602052604090206001015490565b6103266104983660046145fe565b610bc1565b600b5461029f906001600160a01b031681565b6103266104be3660046142c9565b610c43565b6103266104d13660046146ae565b610cf3565b600e5461029f906001600160a01b031681565b6104fc6104f7366004614758565b61199e565b6040516102839190614848565b6105366105173660046141a3565b600a602052600090815260409020805460019091015460ff9091169082565b604051610283929190614859565b61054c611b71565b60405161028391906148ca565b6103266105673660046142c9565b611bff565b61032661057a366004614a10565b611ca2565b61032661058d36600461452f565b611e4f565b6103266105a0366004614a82565b611e9d565b60105461029f906001600160a01b031681565b6102766105c6366004614152565b611eeb565b6102e3600081565b6103266105e136600461452f565b611f14565b61054c611f62565b6103266105fc36600461452f565b611f6f565b600c5461029f906001600160a01b031681565b6102e36106223660046141a3565b60036020526000908152604090205481565b610326610642366004614152565b611fbd565b61032661065536600461452f565b611fe2565b60075461066d906001600160a01b031681565b6040516102839190614aac565b610326610688366004614758565b612030565b61032661069b3660046143c6565b612130565b600d5461029f906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b14806106e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b836001600160a01b0381163314801590610719575061071760008051602061538683398151915233611eeb565b155b801561073a57506107386000805160206153a683398151915233611eeb565b155b156107585760405163ea8e4eb560e01b815260040160405180910390fd5b8151835114158061076a575060048351115b156107945760056040516327f04bff60e01b815260040161078b9190614afe565b60405180910390fd5b6107a386858786866005612155565b505050505050565b6000828152602081905260409020600101546107c68161247c565b6107d08383612489565b505050565b6000805160206153c68339815191526107ed8161247c565b60086107fa838583614bd9565b50505050565b6001600160a01b03811633146108285760405162461bcd60e51b815260040161078b90614c9c565b610832828261250d565b5050565b60008051602061538683398151915261084e8161247c565b61085c858585600486612572565b61086a858585600186612572565b610878858585600586612572565b5050505050565b61088b8282600561287e565b60008481526002602081815260408084208151608081018352815480825260018301549482019490945293810154918401919091526003015460ff16151560608301523392036108ee57604051631d701c2560e21b815260040160405180910390fd5b42816040015110610915576005604051637c4b79e560e01b815260040161078b9190614afe565b806060015161093a576002604051637c4b79e560e01b815260040161078b9190614afe565b600061094b87878588886005612155565b600085516001600160401b03811115610966576109666141c4565b60405190808252806020026020018201604052801561098f578160200160208202803683370190505b509050600085516001600160401b038111156109ad576109ad6141c4565b6040519080825280602002602001820160405280156109d6578160200160208202803683370190505b50905060005b8751811015610a83578681815181106109f7576109f7614cef565b602002602001015184610a0a9190614d1b565b9350878181518110610a1e57610a1e614cef565b6020026020010151838281518110610a3857610a38614cef565b602002602001018181525050868181518110610a5657610a56614cef565b6020026020010151828281518110610a7057610a70614cef565b60209081029190910101526001016109dc565b508888866001600160a01b03167f5e683f172022fd0e4a9749c18dafa61c8b0a1e7168ab1b3ddf387019da604dc88585604051610ac1929190614d6c565b60405180910390a460048310610aed5760056040516327f04bff60e01b815260040161078b9190614afe565b60405188908a907f16d56ff294ff25778acda367939faefd690cf3cade2a4cd49c825ff456b7dd7890600090a3505050505050505050565b6000805160206153c6833981519152610b3d8161247c565b600e546001600160a01b0383811691161461083257600e80546001600160a01b0384166001600160a01b03199091161790555050565b6000805160206153c6833981519152610b8b8161247c565b600f546001600160a01b0383811691161461083257600f80546001600160a01b0384166001600160a01b03199091161790555050565b6000805160206153c6833981519152610bd98161247c565b825160005b8181101561087857838181518110610bf857610bf8614cef565b602002602001015160036000878481518110610c1657610c16614cef565b60200260200101518152602001908152602001600020819055508080610c3b90614d91565b915050610bde565b836001600160a01b0381163314801590610c725750610c7060008051602061538683398151915233611eeb565b155b8015610c935750610c916000805160206153a683398151915233611eeb565b155b15610cb15760405163ea8e4eb560e01b815260040160405180910390fd5b81518351141580610cc3575060048351115b15610ce45760016040516327f04bff60e01b815260040161078b9190614afe565b6107a386858786866001612155565b6000805160206153a6833981519152610d0b8161247c565b600060098054610d1a90614b22565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4690614b22565b8015610d935780601f10610d6857610100808354040283529160200191610d93565b820191906000526020600020905b815481529060010190602001808311610d7657829003601f168201915b50505050509050600060088054610da990614b22565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd590614b22565b8015610e225780601f10610df757610100808354040283529160200191610e22565b820191906000526020600020905b815481529060010190602001808311610e0557829003601f168201915b50505050509050610e6a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506128a2915050565b610e875760405163063ce8cd60e31b815260040160405180910390fd5b60018414610ea857604051632376efbb60e21b815260040160405180910390fd5b610f0c85856000818110610ebe57610ebe614cef565b9050602002810190610ed09190614dab565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508592506128a2915050565b610f29576040516348b9acbb60e11b815260040160405180910390fd5b6000610f6a88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128fb92505050565b9050610f9e816040518060400160405280601081526020016f18dc99585d19551bdd5c9b985b595b9d60821b8152506128a2565b1561107f576000610faf898961293c565b80516000908152600a60209081526040808320805460ff1916600190811790915591840151845184529281902090910191909155601054825182840151925163d2d1aefd60e01b81529394506001600160a01b039091169263d2d1aefd9261101a9291600401614e09565b600060405180830381600087803b15801561103457600080fd5b505af1158015611048573d6000803e3d6000fd5b505082516040519092507f113d32d0b7aec15a8c7f50af4cb42f4695e5b95524ed69519ac88d6c1f1f40f69150600090a250611992565b6110b3816040518060400160405280601281526020017118dbdb5c1b195d19551bdd5c9b985b595b9d60721b8152506128a2565b1561114b5760006110c4898961293c565b80516000908152600a602090815260408220805460ff19169055820151919250036111195780516040517ffa61ec8d7e5a58ceba17772b10ba0c6caa65b40b200302be35f00efc264c789590600090a2611145565b80516040517fcdac78591ae836e3c817bf6dc0ba9fa0c8e312b6b25358009d27c0c6d8a3cc3090600090a25b50611992565b61117f816040518060400160405280601281526020017139b1b432b23ab632a9b4b6bab630ba34b7b760711b8152506128a2565b156112465760006111908989612b09565b60408051608081018252825181526020808401805182840190815285850151848601908152606080880151151590860190815287516000908152600295869052879020865181559251600184015590519382019390935591516003909201805460ff191692151592909217909155835190519251939450909290917fa815f3c9ed54cd0424ae997e2462a26c3b575507ed7339701bf0294dd5ac1210916112379190614195565b60405180910390a25050611992565b61127d81604051806040016040528060158152602001741d1bdd5c9b985b595b9d14185c9d1a58da5c185b9d605a1b8152506128a2565b1561144157600061128e8989612c5c565b8051602082015160408301516060840151939450919290919060005b815181101561140b5760008282815181106112c7576112c7614cef565b6020026020010151905060006001600160a01b0316816001600160a01b031614611402578382815181106112fd576112fd614cef565b6020908102919091018101516000888152600180845260408083206001600160a01b0387168452855280832093909355825181815280840190935290928281019080368337505060408051600180825281830190925292935060009291506020808301908036833750505060008881526001602081815260408084206001600160a01b038916855290915290912081015491925081106113fe5780836000815181106113ab576113ab614cef565b6020026020010181815250506001826000815181106113cc576113cc614cef565b6020026020010181815250506113fe89858988815181106113ef576113ef614cef565b60200260200101518686611bff565b5050505b506001016112aa565b5060405184907f8e11c1b84cb43df6b72d82dfa487db5c6961f60ef9db2d150d604230a37c2e7a90600090a25050505050611992565b61146b816040518060400160405280600881526020016773796e63466c616760c01b8152506128a2565b156114a95761147a8888612ee5565b516040517f8614e78d72184b8022cc5f29ae5dfba6ba32c46a6274b69f039df627c0486d9090600090a2611992565b6114d8816040518060400160405280600d81526020016c32b73229b4b6bab630ba34b7b760991b8152506128a2565b1561197a5760006114e98989612f86565b60208082015160009081526003909152604090205460e08201518251608084015160608101519495509293919290916001600160a01b0316158015906115325750604081015115155b156115b557600f54606082015160408084015160009081526003602052819020549051632baf2acb60e01b81526001600160a01b0390931692632baf2acb92611582929091600190600401614e20565b600060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050505b60208101516001600160a01b0316158015906115d15750805115155b1561165357600f54602080830151835160009081526003909252604091829020549151632baf2acb60e01b81526001600160a01b0390931692632baf2acb926116209291600190600401614e20565b600060405180830381600087803b15801561163a57600080fd5b505af115801561164e573d6000803e3d6000fd5b505050505b60a08101516001600160a01b0316158015906116725750608081015115155b156116f757600f5460a0820151608083015160009081526003602052604090819020549051632baf2acb60e01b81526001600160a01b0390931692632baf2acb926116c4929091600190600401614e20565b600060405180830381600087803b1580156116de57600080fd5b505af11580156116f2573d6000803e3d6000fd5b505050505b606085015160005b815181101561180f57600082828151811061171c5761171c614cef565b6020026020010151905085156117b157600f5483516001600160a01b0390911690632baf2acb9085908590811061175557611755614cef565b60200260200101518960016040518463ffffffff1660e01b815260040161177e93929190614e20565b600060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050505b60008581526001602081815260408084206001600160a01b038616855290915290912054906117e890879083908590600490612572565b6117f6868284600180612572565b61180586828460056001612572565b50506001016116ff565b5060a08601515160005b818110156118c35760008860a00151828151811061183957611839614cef565b602090810291909101810151600e54918101518151604080840151905163124d91e560e01b81529395506001600160a01b039094169363124d91e59361188493929190600401614e48565b600060405180830381600087803b15801561189e57600080fd5b505af11580156118b2573d6000803e3d6000fd5b505060019093019250611819915050565b50600d5460c0880151604051635a7542a760e11b81526001600160a01b039092169163b4ea854e916118f791600401614ef9565b600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b50505060008581526002602052604080822060038101805460ff19169055905190925086917f8a260bada429282b724c54002760819258b75ea3a2cf3caf6edb960bb7ea32da91a25050505050505050611992565b604051627f3e2760e51b815260040160405180910390fd5b50505050505050505050565b6119c96040518060800160405280600081526020016060815260200160608152602001606081525090565b6000838152600460208181526040808420868552825280842092845282825280842080548251818502810185019093528083529394939192909190830182828015611a3357602002820191906000526020600020905b815481526020019060010190808311611a1f575b50505050509050600082600060016005811115611a5257611a52614aba565b6005811115611a6357611a63614aba565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611abb57602002820191906000526020600020905b815481526020019060010190808311611aa7575b505050505090506000836000600580811115611ad957611ad9614aba565b6005811115611aea57611aea614aba565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611b4257602002820191906000526020600020905b815481526020019060010190808311611b2e575b5050604080516080810182529a8b5260208b019790975250505092860191909152506060840152509092915050565b60088054611b7e90614b22565b80601f0160208091040260200160405190810160405280929190818152602001828054611baa90614b22565b8015611bf75780601f10611bcc57610100808354040283529160200191611bf7565b820191906000526020600020905b815481529060010190602001808311611bda57829003601f168201915b505050505081565b836001600160a01b0381163314801590611c2e5750611c2c60008051602061538683398151915233611eeb565b155b8015611c4f5750611c4d6000805160206153a683398151915233611eeb565b155b15611c6d5760405163ea8e4eb560e01b815260040160405180910390fd5b600283511115611c935760046040516327f04bff60e01b815260040161078b9190614afe565b6107a386858786866004612155565b816001600160a01b0381163314801590611cd15750611ccf60008051602061538683398151915233611eeb565b155b8015611cf25750611cf06000805160206153a683398151915233611eeb565b155b15611d105760405163ea8e4eb560e01b815260040160405180910390fd5b60008581526001602090815260408083206001600160a01b0387168452909152902054848114611d535760405163ea8e4eb560e01b815260040160405180910390fd5b60008681526002602081815260408084208151608081018352815480825260018301549482019490945293810154918401919091526003015460ff1615156060830152909103611db657604051631d701c2560e21b815260040160405180910390fd5b42816040015111611dda57604051630c82e9dd60e41b815260040160405180910390fd5b611def87868887600001518860200151611bff565b611e0487868887604001518860600151610c43565b611e1987868887608001518860a001516106ea565b604051869088907f16d56ff294ff25778acda367939faefd690cf3cade2a4cd49c825ff456b7dd7890600090a350505050505050565b6000805160206153c6833981519152611e678161247c565b6010546001600160a01b0383811691161461083257601080546001600160a01b0384166001600160a01b03199091161790555050565b6000805160206153c6833981519152611eb58161247c565b6007546001600160a01b0383811691161461083257600780546001600160a01b0384166001600160a01b03199091161790555050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206153c6833981519152611f2c8161247c565b600c546001600160a01b0383811691161461083257600c80546001600160a01b0384166001600160a01b03199091161790555050565b60098054611b7e90614b22565b6000805160206153c6833981519152611f878161247c565b600b546001600160a01b0383811691161461083257600b80546001600160a01b0384166001600160a01b03199091161790555050565b600082815260208190526040902060010154611fd88161247c565b6107d0838361250d565b6000805160206153c6833981519152611ffa8161247c565b600d546001600160a01b0383811691161461083257600d80546001600160a01b0384166001600160a01b03199091161790555050565b6010546040516376beffad60e01b81526001600160a01b03909116906376beffad906120629033908690600401614f0a565b602060405180830381865afa15801561207f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a39190614f23565b6120c0576040516387b86da360e01b815260040160405180910390fd5b6000828152600a602052604090205460ff166120ef57604051637a30a6cf60e01b815260040160405180910390fd5b806000036121105760405163884d33e160e01b815260040160405180910390fd5b600091825260016020818152604080852033865290915290922090910155565b6000805160206153c68339815191526121488161247c565b60096107fa838583614bd9565b61216083838361287e565b600086815260046020908152604080832088845290915281208183600581111561218c5761218c614aba565b600581111561219d5761219d614aba565b8152602080820192909252604090810160009081208a8252600684528282208a835290935290812091925090818460058111156121dc576121dc614aba565b60058111156121ed576121ed614aba565b815260200190815260200160002090506000600560008a81526020019081526020016000206000898152602001908152602001600020600085600581111561223757612237614aba565b600581111561224857612248614aba565b8152602001908152602001600020905060008651905061226c8a8a8a886000612572565b60005b8181101561246f57600088828151811061228b5761228b614cef565b6020026020010151905060008883815181106122a9576122a9614cef565b60200260200101519050600085600084815260200190815260200160002054905080600003612300578754600181018955600089815260208082209092018590558954858252918990526040902060001990910190555b60008381526020879052604090208183019055600489600581111561232757612327614aba565b0361239757600d5460405163e2ab691d60e01b81526001600160a01b039091169063e2ab691d90612360908f9087908790600401614e48565b600060405180830381600087803b15801561237a57600080fd5b505af115801561238e573d6000803e3d6000fd5b50505050612464565b60018960058111156123ab576123ab614aba565b036123e457600c5460405163e2ab691d60e01b81526001600160a01b039091169063e2ab691d90612360908f9087908790600401614e48565b60058960058111156123f8576123f8614aba565b0361246457600b5460405163e2ab691d60e01b81526001600160a01b039091169063e2ab691d90612431908f9087908790600401614e48565b600060405180830381600087803b15801561244b57600080fd5b505af115801561245f573d6000803e3d6000fd5b505050505b50505060010161226f565b5050505050505050505050565b612486813361354f565b50565b6124938282611eeb565b610832576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556124c93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6125178282611eeb565b15610832576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600085815260046020908152604080832087845290915281208184600581111561259e5761259e614aba565b60058111156125af576125af614aba565b81526020019081526020016000209050600060056000888152602001908152602001600020600087815260200190815260200160002060008560058111156125f9576125f9614aba565b600581111561260a5761260a614aba565b8152602081019190915260400160009081208354909250905b8181101561281c57600083600086848154811061264257612642614cef565b906000526020600020015481526020019081526020016000205490506004600581111561267157612671614aba565b87600581111561268357612683614aba565b0361271457600d5485546001600160a01b039091169063b5674c68908a908890869081106126b3576126b3614cef565b9060005260206000200154846040518463ffffffff1660e01b81526004016126dd93929190614e48565b600060405180830381600087803b1580156126f757600080fd5b505af115801561270b573d6000803e3d6000fd5b505050506127e2565b600187600581111561272857612728614aba565b0361278457600c5485546001600160a01b039091169063317536e6908a9088908690811061275857612758614cef565b9060005260206000200154848a6040518563ffffffff1660e01b81526004016126dd9493929190614f44565b600587600581111561279857612798614aba565b036127c857600b5485546001600160a01b039091169063b5674c68908a908890869081106126b3576126b3614cef565b8660405162da15db60e51b815260040161078b9190614afe565b8360008684815481106127f7576127f7614cef565b6000918252602080832090910154835282019290925260400181205550600101612623565b5060008881526004602090815260408083208a845290915281209086600581111561284957612849614aba565b600581111561285a5761285a614aba565b815260200190815260200160002060006128749190613f9c565b5050505050505050565b81518351146107d057806040516327f04bff60e01b815260040161078b9190614afe565b6000816040516020016128b59190614f74565b60405160208183030381529060405280519060200120836040516020016128dc9190614f74565b6040516020818303038152906040528051906020012014905092915050565b6060600061291061290b846135a8565b6135d5565b90506129358160008151811061292857612928614cef565b60200260200101516136fd565b9392505050565b61296060405180606001604052806000815260200160008152602001600081525090565b60006129a461290b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135a892505050565b905080516004146129c75760405162461bcd60e51b815260040161078b90614fb7565b6000816001815181106129dc576129dc614cef565b6020026020010151905060006129f1826137b5565b9050612a236040518060400160405280600e81526020016d03a37bab93730b6b2b73a24b21d160951b81525082613841565b600083600281518110612a3857612a38614cef565b602002602001015190506000612a4d826137b5565b9050612a7f6040518060400160405280600e81526020016d039b4b6bab630ba34b7b724b21d160951b81525082613841565b600085600381518110612a9457612a94614cef565b602002602001015190506000612aa9826137b5565b9050612adf6040518060400160405280601281526020017103a37bab93730b6b2b73a2830b9b9a4b21d160751b81525082613841565b60405180606001604052808681526020018481526020018281525097505050505050505092915050565b612b3660405180608001604052806000815260200160008152602001600081526020016000151581525090565b6000612b7a61290b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135a892505050565b90508051600514612b9d5760405162461bcd60e51b815260040161078b90614ffb565b600081600181518110612bb257612bb2614cef565b602002602001015190506000612bc7826137b5565b90506000612bee84600281518110612be157612be1614cef565b60200260200101516137b5565b90506000612c0885600381518110612be157612be1614cef565b90506000612c2f86600481518110612c2257612c22614cef565b6020026020010151613886565b60408051608081018252958652602086019490945292840191909152501515606082015295945050505050565b612c876040518060800160405280600081526020016000815260200160608152602001606081525090565b6000612ccb61290b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135a892505050565b90508051600514612cee5760405162461bcd60e51b815260040161078b90614ffb565b6000612d0682600181518110612be157612be1614cef565b90506000612d2083600281518110612be157612be1614cef565b90506000612d4784600381518110612d3a57612d3a614cef565b60200260200101516135d5565b9050600081516001600160401b03811115612d6457612d646141c4565b604051908082528060200260200182016040528015612d8d578160200160208202803683370190505b50905060005b8251811015612dd657612db1838281518110612be157612be1614cef565b828281518110612dc357612dc3614cef565b6020908102919091010152600101612d93565b506000612def86600481518110612d3a57612d3a614cef565b9050600081516001600160401b03811115612e0c57612e0c6141c4565b604051908082528060200260200182016040528015612e35578160200160208202803683370190505b50905060005b8251811015612eb957612e5983828151811061292857612928614cef565b51602a03612eb157612e7e612e7984838151811061292857612928614cef565b6138db565b828281518110612e9057612e90614cef565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612e3b565b506040805160808101825296875260208701959095529385019190915250506060820152949350505050565b6040805160208101909152600081526000612f3861290b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135a892505050565b90508051600214612f5b5760405162461bcd60e51b815260040161078b90614ffb565b6040518060200160405280612f7c83600181518110612be157612be1614cef565b9052949350505050565b612f8e613fba565b6000612fd261290b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135a892505050565b90508051600714612ff55760405162461bcd60e51b815260040161078b90614ffb565b600061301861290b6130138460018151811061292857612928614cef565b6135a8565b9050600081516001600160401b03811115613035576130356141c4565b60405190808252806020026020018201604052801561305e578160200160208202803683370190505b50905060005b82518110156130dd5761308283828151811061292857612928614cef565b51602a036130d5576130a2612e7984838151811061292857612928614cef565b8282815181106130b4576130b4614cef565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101613064565b5060006130f684600681518110612c2257612c22614cef565b9050600061311661290b6130138760028151811061292857612928614cef565b9050600061313082600081518110612be157612be1614cef565b9050600061314a83600181518110612be157612be1614cef565b9050600061316484600281518110612be157612be1614cef565b9050600061318461290b6130138b60038151811061292857612928614cef565b905060006040518060c001604052806131a984600081518110612be157612be1614cef565b81526020016131c7612e798560018151811061292857612928614cef565b6001600160a01b031681526020016131eb84600281518110612be157612be1614cef565b8152602001613209612e798560038151811061292857612928614cef565b6001600160a01b0316815260200161322d84600481518110612be157612be1614cef565b815260200161324b612e798560058151811061292857612928614cef565b6001600160a01b03168152509050600061327761290b6130138d60048151811061292857612928614cef565b9050600081516001600160401b03811115613294576132946141c4565b6040519080825280602002602001820160405280156132f257816020015b6132df60405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b8152602001906001900390816132b25790505b50905060005b82518110156133ac57600061331e61290b61301386858151811061292857612928614cef565b9050604051806060016040528061334183600081518110612be157612be1614cef565b815260200161335f612e798460018151811061292857612928614cef565b6001600160a01b0316815260200161338383600281518110612be157612be1614cef565b81525083838151811061339857613398614cef565b6020908102919091010152506001016132f8565b5060006133cb61290b6130138f60058151811061292857612928614cef565b9050600081516001600160401b038111156133e8576133e86141c4565b60405190808252806020026020018201604052801561344657816020015b6134336040518060600160405280600081526020016000815260200160006001600160a01b031681525090565b8152602001906001900390816134065790505b50905060005b825181101561350057600061347261290b61301386858151811061292857612928614cef565b9050604051806060016040528061349583600081518110612be157612be1614cef565b81526020016134b083600281518110612be157612be1614cef565b81526020016134ce612e798460018151811061292857612928614cef565b6001600160a01b03168152508383815181106134ec576134ec614cef565b60209081029190910101525060010161344c565b506040805161010081018252998a5260208a0198909852968801959095526060870199909952506080850152505060a082019490945260c081019390935250151560e082015295945050505050565b6135598282611eeb565b6108325761356681613b98565b613571836020613baa565b60405160200161358292919061500b565b60408051601f198184030181529082905262461bcd60e51b825261078b916004016148ca565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60606135e082613d15565b6135fc5760405162461bcd60e51b815260040161078b90615088565b600061360783613d46565b90506000816001600160401b03811115613623576136236141c4565b60405190808252806020026020018201604052801561366857816020015b60408051808201909152600080825260208201528152602001906001900390816136415790505b509050600061367a8560200151613dcb565b85602001516136899190614d1b565b90506000805b848110156136f2576136a083613e4c565b91506040518060400160405280838152602001848152508482815181106136c9576136c9614cef565b60209081029190910101526136de8284614d1b565b9250806136ea81614d91565b91505061368f565b509195945050505050565b805160609061371e5760405162461bcd60e51b815260040161078b906150bd565b600061372d8360200151613dcb565b9050600081846000015161374191906150cd565b90506000816001600160401b0381111561375d5761375d6141c4565b6040519080825280601f01601f191660200182016040528015613787576020820181803683370190505b50905060008160200190506137ac8487602001516137a59190614d1b565b8285613ef5565b50949350505050565b8051600090158015906137ca57508151602110155b6137e65760405162461bcd60e51b815260040161078b9061510a565b60006137f58360200151613dcb565b9050600081846000015161380991906150cd565b905060008083866020015161381e9190614d1b565b90508051915060208310156137ac57506020919091036101000a90049392505050565b610832828260405160240161385792919061511a565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052613f77565b80516000906001146138aa5760405162461bcd60e51b815260040161078b90615163565b6020820151805160001a908115806138c25750608082145b156138d1575060009392505050565b5060019392505050565b60008151602a14801561391c5750600360fc1b6001600160f81b0319168260008151811061390b5761390b614cef565b01602001516001600160f81b031916145b80156139565750600f60fb1b6001600160f81b0319168260018151811061394557613945614cef565b01602001516001600160f81b031916145b6139735760405163363fcec960e01b815260040160405180910390fd5b60408051601480825281830190925260009160208201818036833701905050905060008080805b6028811015613af857866139af826002614d1b565b815181106139bf576139bf614cef565b016020015160f81c9350600160308510156139d8575060005b8460ff1660391080156139ee575060418560ff16105b156139f7575060005b8460ff166046108015613a0d575060618560ff16105b15613a16575060005b8460ff1660661015613a26575060005b80613a445760405163363fcec960e01b815260040160405180910390fd5b60418560ff161015613a595760309250613a73565b8460ff1660461015613a6e5760579250613a73565b603792505b613a7e600283615189565b600003613a9657613a8f838661519d565b9350613aef565b613aa0838661519d565b613aab8560106151ba565b613ab591906151da565b60f81b866001613ac581866150cd565b901c81518110613ad757613ad7614cef565b60200101906001600160f81b031916908160001a9053505b5060010161399a565b50600084604051602001613b0c9190614f74565b60408051601f198184030181529190526014810151965090506001600160a01b038616613b8e5760025b8751811015613b8c57878181518110613b5157613b51614cef565b6020910101516001600160f81b031916600360fc1b14613b845760405163363fcec960e01b815260040160405180910390fd5b600101613b36565b505b5050505050919050565b60606106e46001600160a01b03831660145b60606000613bb98360026151f7565b613bc4906002614d1b565b6001600160401b03811115613bdb57613bdb6141c4565b6040519080825280601f01601f191660200182016040528015613c05576020820181803683370190505b509050600360fc1b81600081518110613c2057613c20614cef565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613c4f57613c4f614cef565b60200101906001600160f81b031916908160001a9053506000613c738460026151f7565b613c7e906001614d1b565b90505b6001811115613cf6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613cb257613cb2614cef565b1a60f81b828281518110613cc857613cc8614cef565b60200101906001600160f81b031916908160001a90535060049490941c93613cef8161520f565b9050613c81565b5083156129355760405162461bcd60e51b815260040161078b90615258565b80516000908103613d2857506000919050565b6020820151805160001a9060c08210156138d1575060009392505050565b80516000908103613d5957506000919050565b600080613d698460200151613dcb565b8460200151613d789190614d1b565b9050600084600001518560200151613d909190614d1b565b90505b80821015613dc257613da482613e4c565b613dae9083614d1b565b915082613dba81614d91565b935050613d93565b50909392505050565b8051600090811a6080811015613de45750600092915050565b60b8811080613dff575060c08110801590613dff575060f881105b15613e0d5750600192915050565b60c0811015613e3a57613e22600160b861519d565b613e2f9060ff16826150cd565b612935906001614d1b565b613e22600160f861519d565b50919050565b80516000908190811a6080811015613e675760019150613eee565b60b8811015613e8d57613e7b6080826150cd565b613e86906001614d1b565b9150613eee565b60c0811015613eba5760b78103600185019450806020036101000a85510460018201810193505050613eee565b60f8811015613ece57613e7b60c0826150cd565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80600003613f0257505050565b60208110613f3a5782518252613f19602084614d1b565b9250613f26602083614d1b565b9150613f336020826150cd565b9050613f02565b80156107d05760006001613f4f8360206150cd565b613f5b90610100615376565b613f6591906150cd565b84518451821691191617835250505050565b6124868160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b50805460008255906000526020600020908101906124869190614050565b604051806101000160405280600081526020016000815260200160008152602001606081526020016140366040518060c001604052806000815260200160006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160006001600160a01b031681525090565b815260606020820181905260408201819052600091015290565b5b808211156140655760008155600101614051565b5090565b6001600160e01b031981165b811461248657600080fd5b80356106e481614069565b6000602082840312156140a0576140a0600080fd5b60006140ac8484614080565b949350505050565b8015155b82525050565b602081016106e482846140b4565b60006106e46001600160a01b0383166140e3565b90565b6001600160a01b031690565b60006106e4826140cc565b60006106e4826140ef565b6140b8816140fa565b602081016106e48284614105565b80614075565b80356106e48161411c565b60006001600160a01b0382166106e4565b6140758161412d565b80356106e48161413e565b6000806040838503121561416857614168600080fd5b60006141748585614122565b925050602061418585828601614147565b9150509250929050565b806140b8565b602081016106e4828461418f565b6000602082840312156141b8576141b8600080fd5b60006140ac8484614122565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b03821117156141ff576141ff6141c4565b6040525050565b600061421160405190565b905061421d82826141da565b919050565b60006001600160401b0382111561423b5761423b6141c4565b5060209081020190565b600061425861425384614222565b614206565b8381529050602080820190840283018581111561427757614277600080fd5b835b8181101561429b578061428c8882614122565b84525060209283019201614279565b5050509392505050565b600082601f8301126142b9576142b9600080fd5b81356140ac848260208601614245565b600080600080600060a086880312156142e4576142e4600080fd5b60006142f08888614122565b955050602061430188828901614147565b945050604061431288828901614122565b93505060608601356001600160401b0381111561433157614331600080fd5b61433d888289016142a5565b92505060808601356001600160401b0381111561435c5761435c600080fd5b614368888289016142a5565b9150509295509295909350565b60008083601f84011261438a5761438a600080fd5b5081356001600160401b038111156143a4576143a4600080fd5b6020830191508360018202830111156143bf576143bf600080fd5b9250929050565b600080602083850312156143dc576143dc600080fd5b82356001600160401b038111156143f5576143f5600080fd5b61440185828601614375565b92509250509250929050565b801515614075565b80356106e48161440d565b6000806000806080858703121561443957614439600080fd5b60006144458787614122565b945050602061445687828801614122565b935050604061446787828801614147565b925050606061447887828801614415565b91505092959194509250565b6000806000806080858703121561449d5761449d600080fd5b60006144a98787614122565b94505060206144ba87828801614122565b93505060408501356001600160401b038111156144d9576144d9600080fd5b6144e5878288016142a5565b92505060608501356001600160401b0381111561450457614504600080fd5b614478878288016142a5565b60006106e48261412d565b61407581614510565b80356106e48161451b565b60006020828403121561454457614544600080fd5b60006140ac8484614524565b6080810161455e828761418f565b61456b602083018661418f565b614578604083018561418f565b61458560608301846140b4565b95945050505050565b6006811061248657600080fd5b80356106e48161458e565b600080600080608085870312156145bf576145bf600080fd5b60006145cb8787614122565b94505060206145dc87828801614122565b93505060406145ed8782880161459b565b925050606061447887828801614122565b6000806040838503121561461457614614600080fd5b82356001600160401b0381111561462d5761462d600080fd5b614639858286016142a5565b92505060208301356001600160401b0381111561465857614658600080fd5b614185858286016142a5565b60008083601f84011261467957614679600080fd5b5081356001600160401b0381111561469357614693600080fd5b6020830191508360208202830111156143bf576143bf600080fd5b600080600080600080606087890312156146ca576146ca600080fd5b86356001600160401b038111156146e3576146e3600080fd5b6146ef89828a01614375565b965096505060208701356001600160401b0381111561471057614710600080fd5b61471c89828a01614375565b945094505060408701356001600160401b0381111561473d5761473d600080fd5b61474989828a01614664565b92509250509295509295509295565b6000806040838503121561476e5761476e600080fd5b600061477a8585614122565b925050602061418585828601614122565b6000614797838361418f565b505060200190565b60006147a9825190565b80845260209384019383018060005b838110156147dd5781516147cc888261478b565b9750602083019250506001016147b8565b509495945050505050565b805160009060808401906147fc858261418f565b5060208301518482036020860152614814828261479f565b9150506040830151848203604086015261482e828261479f565b91505060608301518482036060860152614585828261479f565b6020808252810161293581846147e8565b6040810161486782856140b4565b612935602083018461418f565b60005b8381101561488f578181015183820152602001614877565b50506000910152565b60006148a2825190565b8084526020840193506148b9818560208601614874565b601f01601f19169290920192915050565b602080825281016129358184614898565b600060c082840312156148f0576148f0600080fd5b6148fa60c0614206565b905081356001600160401b0381111561491557614915600080fd5b614921848285016142a5565b82525060208201356001600160401b0381111561494057614940600080fd5b61494c848285016142a5565b60208301525060408201356001600160401b0381111561496e5761496e600080fd5b61497a848285016142a5565b60408301525060608201356001600160401b0381111561499c5761499c600080fd5b6149a8848285016142a5565b60608301525060808201356001600160401b038111156149ca576149ca600080fd5b6149d6848285016142a5565b60808301525060a08201356001600160401b038111156149f8576149f8600080fd5b614a04848285016142a5565b60a08301525092915050565b60008060008060808587031215614a2957614a29600080fd5b6000614a358787614122565b9450506020614a4687828801614122565b9350506040614a5787828801614147565b92505060608501356001600160401b03811115614a7657614a76600080fd5b614478878288016148db565b600060208284031215614a9757614a97600080fd5b60006140ac8484614147565b6140b88161412d565b602081016106e48284614aa3565b634e487b7160e01b600052602160045260246000fd5b6006811061248657612486614aba565b8061421d81614ad0565b60006106e482614ae0565b6140b881614aea565b602081016106e48284614af5565b634e487b7160e01b600052602260045260246000fd5b600281046001821680614b3657607f821691505b602082108103613e4657613e46614b0c565b60006106e46140e08381565b614b5d83614b48565b815460001960089490940293841b1916921b91909117905550565b60006107d0818484614b54565b8181101561083257614b98600082614b78565b600101614b85565b601f8211156107d0576000818152602090206020601f85010481016020851015614bc75750805b6108786020601f860104830182614b85565b826001600160401b03811115614bf157614bf16141c4565b614bfb8254614b22565b614c06828285614ba0565b6000601f831160018114614c3a5760008415614c225750858201355b600019600886021c1981166002860217865550614c93565b600085815260208120601f198616915b82811015614c6a5788850135825560209485019460019092019101614c4a565b86831015614c8657600019601f88166008021c19858a01351682555b6001600288020188555050505b50505050505050565b602080825281016106e481602f81527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560208201526e103937b632b9903337b91039b2b63360891b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156106e4576106e4614d05565b6000614d38825190565b80845260209384019383018060005b838110156147dd578151614d5b888261478b565b975060208301925050600101614d47565b60408082528101614d7d8185614d2e565b905081810360208301526140ac8184614d2e565b60006000198203614da457614da4614d05565b5060010190565b6000808335601e1936859003018112614dc657614dc6600080fd5b8084019250823591506001600160401b03821115614de657614de6600080fd5b602083019250600182023603831315614e0157614e01600080fd5b509250929050565b60408101614867828561418f565b6140b881614b48565b60608101614e2e8286614aa3565b614e3b602083018561418f565b6140ac6040830184614e17565b60608101614e568286614aa3565b614e63602083018561418f565b6140ac604083018461418f565b80516060830190614e81848261418f565b506020820151614e94602085018261418f565b5060408201516107fa6040850182614aa3565b6000614eb38383614e70565b505060600190565b6000614ec5825190565b80845260209384019383018060005b838110156147dd578151614ee88882614ea7565b975060208301925050600101614ed4565b602080825281016129358184614ebb565b604081016148678285614aa3565b80516106e48161440d565b600060208284031215614f3857614f38600080fd5b60006140ac8484614f18565b6080810161455e8287614aa3565b6000614f5c825190565b614f6a818560208601614874565b9290920192915050565b60006129358284614f52565b601b81526000602082017f496e76616c696420656e636f6465642064617461206c656e6774680000000000815291505b5060200190565b602080825281016106e481614f80565b601881526000602082017f496e76616c6964456e636f646564446174614c656e677468000000000000000081529150614fb0565b602080825281016106e481614fc7565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152601701600061503d8285614f52565b7001034b99036b4b9b9b4b733903937b6329607d1b815260110191506140ac8284614f52565b600e81526000602082016d135d5cdd0818994818481b1a5cdd60921b81529150614fb0565b602080825281016106e481615063565b600e81526000602082016d092dcecc2d8d2c840d8cadccee8d60931b81529150614fb0565b602080825281016106e481615098565b818103818111156106e4576106e4614d05565b601381526000602082017224b73b30b634b2103ab4b73a10373ab6b132b960691b81529150614fb0565b602080825281016106e4816150e0565b6040808252810161512b8185614898565b9050612935602083018461418f565b60128152600060208201714d7573742068617665206c656e677468203160701b81529150614fb0565b602080825281016106e48161513a565b634e487b7160e01b600052601260045260246000fd5b60008261519857615198615173565b500690565b60ff9182169190811690828203908111156106e4576106e4614d05565b60ff918216919081169082820290811690818114613eee57613eee614d05565b60ff9182169190811690828201908111156106e4576106e4614d05565b818102808215838204851417613eee57613eee614d05565b60008161521e5761521e614d05565b506000190190565b60208082527f537472696e67733a20686578206c656e67746820696e73756666696369656e7491019081526000614fb0565b602080825281016106e481615226565b80825b60018511156152a75780860481111561528657615286614d05565b600185161561529457908102905b80026152a08560011c90565b945061526b565b94509492505050565b6000826152bf57506001612935565b816152cc57506000612935565b81600181146152e257600281146152ec57615319565b6001915050612935565b60ff8411156152fd576152fd614d05565b8360020a91508482111561531357615313614d05565b50612935565b5060208310610133831016604e8410600b841016171561534c575081810a8381111561534757615347614d05565b612935565b6153598484846001615268565b9250905081840481111561536f5761536f614d05565b0292915050565b600061293560001984846152b056fe25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f60cd00dcfd7a15a07cd49d8c39dd66655888b430bf6412aa1c7b4b5fc410017ba49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a264697066735822122082b07600cfae550ef343439a6799655b91846c2bed4d0bfaa34a4b55ba4567f064736f6c634300081300330000000000000000000000002472d36f785ca4cfad266269081cbb7fca8e31fe000000000000000000000000d960dd5d7aa13d9d523693f990a8c426ef1866600000000000000000000000001a37e782858037e48d6e172ed953af90efb194df00000000000000000000000057991dc3ddb0534cbe6d8d8ad24b931d7ef8cc40000000000000000000000000c267cfef143fd5eeb15f4d13a23eb618d8bb4b2d000000000000000000000000124f404335dd8237de0ac9ea94acf92f6a1989e3000000000000000000000000250409da7de6a9c7c3cef3cb4cadd8b2bb8e7c2a000000000000000000000000fc83a3f252090b26f92f91dfb9dc3eb710adaf1b000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000002a3078333830304143393936364430363643613133333642626345314238456235663137436631663536410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000333078312e69636f6e2f63786461663232396363323039616534343263363134333362616435653732363862303731313539346400000000000000000000000000