104 txs
1.3k 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()
SimulationNotScheduled
error SimulationNotScheduled()
SizeMismatch
error SizeMismatch(uint8)
TournamentDoesNotExist
error TournamentDoesNotExist()
creation bytecode
0x608060405260405162005b8238038062005b82833981016040819052620000269162000398565b6200003360008b62000147565b6200005f7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758a62000147565b6200008b7f60cd00dcfd7a15a07cd49d8c39dd66655888b430bf6412aa1c7b4b5fc410017b8462000147565b620000b77f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f8a62000147565b600b80546001600160a01b03199081166001600160a01b038b811691909117909255600c805482168a8416179055600d80548216898416179055600e80548216888416179055600f80548216878416179055600780549091169185169190911790556008620001278382620005b6565b506009620001368282620005b6565b505050505050505050505062000686565b62000153828262000157565b5050565b620001638282620001df565b62000153576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200019b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff165b92915050565b60006001600160a01b03821662000204565b62000227816200020a565b81146200023357600080fd5b50565b805162000204816200021c565b600062000204826200020a565b620002278162000243565b8051620002048162000250565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715620002a657620002a662000268565b6040525050565b6000620002b960405190565b9050620002c782826200027e565b919050565b60006001600160401b03821115620002e857620002e862000268565b601f19601f83011660200192915050565b60005b8381101562000316578181015183820152602001620002fc565b50506000910152565b6000620003366200033084620002cc565b620002ad565b905082815260208101848484011115620003535762000353600080fd5b62000360848285620002f9565b509392505050565b600082601f8301126200037e576200037e600080fd5b8151620003908482602086016200031f565b949350505050565b6000806000806000806000806000806101408b8d031215620003bd57620003bd600080fd5b6000620003cb8d8d62000236565b9a50506020620003de8d828e0162000236565b9950506040620003f18d828e016200025b565b9850506060620004048d828e016200025b565b9750506080620004178d828e016200025b565b96505060a06200042a8d828e016200025b565b95505060c06200043d8d828e016200025b565b94505060e0620004508d828e0162000236565b9350506101008b01516001600160401b03811115620004725762000472600080fd5b620004808d828e0162000368565b9250506101208b01516001600160401b03811115620004a257620004a2600080fd5b620004b08d828e0162000368565b9150509295989b9194979a5092959850565b634e487b7160e01b600052602260045260246000fd5b600281046001821680620004ed57607f821691505b602082108103620005025762000502620004c2565b50919050565b600062000204620005168381565b90565b620005248362000508565b815460001960089490940293841b1916921b91909117905550565b60006200054e81848462000519565b505050565b818110156200015357620005696000826200053f565b60010162000553565b601f8211156200054e576000818152602090206020601f850104810160208510156200059b5750805b620005af6020601f86010483018262000553565b5050505050565b81516001600160401b03811115620005d257620005d262000268565b620005de8254620004d8565b620005eb82828562000572565b6020601f831160018114620006225760008415620006095750858201515b600019600886021c19811660028602178655506200067e565b600085815260208120601f198616915b8281101562000654578885015182556020948501946001909201910162000632565b86831015620006715784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b6154ec80620006966000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806362c70f7e11610146578063a59fc3eb116100c3578063d547741f11610087578063d547741f14610634578063ddadeeaf14610647578063e1d6e8761461065a578063e580c3ce1461067a578063ec21afbc1461068d578063f9f11b60146106a057600080fd5b8063a59fc3eb146105d3578063b0fa8444146105e6578063b85cdfd3146105ee578063b9029ee714610601578063c88a05dd1461061457600080fd5b80638abb20cc1161010a5780638abb20cc1461057f5780638c006259146105925780638c1d98eb146105a557806391d14854146105b8578063a217fddf146105cb57600080fd5b806362c70f7e146104e95780636a563aed1461050957806375de8db8146105445780637bc27153146105595780638125ade91461056c57600080fd5b806343141da5116101df5780634cef637d116101a35780634cef637d14610467578063515972e31461048a57806358135d521461049d5780635d2b7469146104b05780635d6a16f5146104c357806360c87440146104d657600080fd5b806343141da5146103aa5780634475df55146103bd57806345407522146103d057806346fbf9c61461041a57806349d4107d1461042d57600080fd5b80632f2ff15d116102265780632f2ff15d14610328578063351b6d031461033b57806336568abe1461034e5780633f8c3170146103615780633fe5bb691461039757600080fd5b806301ffc9a71461026357806313fa79801461028c5780631870b363146102ac578063248a9ca3146102f057806325ed2bd614610313575b600080fd5b610276610271366004614122565b6106b3565b6040516102839190614155565b60405180910390f35b600f5461029f906001600160a01b031681565b60405161028391906141a5565b6102e36102ba3660046141e9565b60009182526001602081815260408085206001600160a01b039490941685529290529120015490565b604051610283919061422c565b6102e36102fe36600461423a565b60009081526020819052604090206001015490565b610326610321366004614360565b6106ea565b005b6103266103363660046141e9565b6107ad565b61032661034936600461445d565b6107d7565b61032661035c3660046141e9565b610802565b6102e361036f3660046141e9565b60009182526001602090815260408084206001600160a01b0393909316845291905290205490565b6103266103a53660046144b7565b610838565b6103266103b836600461451b565b610881565b6103266103cb3660046145c6565b610b29565b61040a6103de36600461423a565b600260208190526000918252604090912080546001820154928201546003909201549092919060ff1684565b60405161028394939291906145e7565b6103266104283660046145c6565b610b77565b6102e361043b36600461463d565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6102e361047536600461423a565b6000908152600a602052604090206001015490565b610326610498366004614695565b610bc5565b600b5461029f906001600160a01b031681565b6103266104be366004614360565b610c47565b6103266104d1366004614745565b610cf8565b600e5461029f906001600160a01b031681565b6104fc6104f73660046147ef565b6119a3565b60405161028391906148df565b61053661051736600461423a565b600a602052600090815260409020805460019091015460ff9091169082565b6040516102839291906148f0565b61054c611b76565b6040516102839190614961565b610326610567366004614360565b611c04565b61032661057a366004614aa7565b611ca9565b61032661058d3660046145c6565b611e7b565b6103266105a0366004614b19565b611ec9565b60105461029f906001600160a01b031681565b6102766105c63660046141e9565b611f17565b6102e3600081565b6103266105e13660046145c6565b611f40565b61054c611f8e565b6103266105fc3660046145c6565b611f9b565b600c5461029f906001600160a01b031681565b6102e361062236600461423a565b60036020526000908152604090205481565b6103266106423660046141e9565b611fe9565b6103266106553660046145c6565b61200e565b60075461066d906001600160a01b031681565b6040516102839190614b43565b6103266106883660046147ef565b61205c565b61032661069b36600461445d565b61215c565b600d5461029f906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b14806106e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b836001600160a01b0381163314801590610719575061071760008051602061545783398151915233611f17565b155b801561073a575061073860008051602061547783398151915233611f17565b155b156107585760405163ea8e4eb560e01b815260040160405180910390fd5b8151835114158061076a575060048351115b156107945760056040516327f04bff60e01b815260040161078b9190614b95565b60405180910390fd5b6107a5868587868660056001612181565b505050505050565b6000828152602081905260409020600101546107c881612513565b6107d28383612520565b505050565b6000805160206154978339815191526107ef81612513565b60086107fc838583614c70565b50505050565b6001600160a01b038116331461082a5760405162461bcd60e51b815260040161078b90614d33565b61083482826125a4565b5050565b60008051602061545783398151915261085081612513565b61085e858585600486612609565b61086c858585600186612609565b61087a858585600586612609565b5050505050565b61088d82826005612915565b60008481526002602081815260408084208151608081018352815480825260018301549482019490945293810154918401919091526003015460ff16151560608301523392036108f057604051631d701c2560e21b815260040160405180910390fd5b42816040015110610917576005604051637c4b79e560e01b815260040161078b9190614b95565b806060015161093c576002604051637c4b79e560e01b815260040161078b9190614b95565b600061094f878785888860056000612181565b600085516001600160401b0381111561096a5761096a61425b565b604051908082528060200260200182016040528015610993578160200160208202803683370190505b509050600085516001600160401b038111156109b1576109b161425b565b6040519080825280602002602001820160405280156109da578160200160208202803683370190505b50905060005b8751811015610a87578681815181106109fb576109fb614d86565b602002602001015184610a0e9190614db2565b9350878181518110610a2257610a22614d86565b6020026020010151838281518110610a3c57610a3c614d86565b602002602001018181525050868181518110610a5a57610a5a614d86565b6020026020010151828281518110610a7457610a74614d86565b60209081029190910101526001016109e0565b508888866001600160a01b03167f5e683f172022fd0e4a9749c18dafa61c8b0a1e7168ab1b3ddf387019da604dc88585604051610ac5929190614e03565b60405180910390a460048310610af15760056040516327f04bff60e01b815260040161078b9190614b95565b60405188908a907f16d56ff294ff25778acda367939faefd690cf3cade2a4cd49c825ff456b7dd7890600090a3505050505050505050565b600080516020615497833981519152610b4181612513565b600e546001600160a01b0383811691161461083457600e80546001600160a01b0384166001600160a01b03199091161790555050565b600080516020615497833981519152610b8f81612513565b600f546001600160a01b0383811691161461083457600f80546001600160a01b0384166001600160a01b03199091161790555050565b600080516020615497833981519152610bdd81612513565b825160005b8181101561087a57838181518110610bfc57610bfc614d86565b602002602001015160036000878481518110610c1a57610c1a614d86565b60200260200101518152602001908152602001600020819055508080610c3f90614e28565b915050610be2565b836001600160a01b0381163314801590610c765750610c7460008051602061545783398151915233611f17565b155b8015610c975750610c9560008051602061547783398151915233611f17565b155b15610cb55760405163ea8e4eb560e01b815260040160405180910390fd5b81518351141580610cc7575060048351115b15610ce85760016040516327f04bff60e01b815260040161078b9190614b95565b6107a58685878686600180612181565b600080516020615477833981519152610d1081612513565b600060098054610d1f90614bb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4b90614bb9565b8015610d985780601f10610d6d57610100808354040283529160200191610d98565b820191906000526020600020905b815481529060010190602001808311610d7b57829003601f168201915b50505050509050600060088054610dae90614bb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dda90614bb9565b8015610e275780601f10610dfc57610100808354040283529160200191610e27565b820191906000526020600020905b815481529060010190602001808311610e0a57829003601f168201915b50505050509050610e6f89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250612939915050565b610e8c5760405163063ce8cd60e31b815260040160405180910390fd5b60018414610ead57604051632376efbb60e21b815260040160405180910390fd5b610f1185856000818110610ec357610ec3614d86565b9050602002810190610ed59190614e42565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250612939915050565b610f2e576040516348b9acbb60e11b815260040160405180910390fd5b6000610f6f88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061299292505050565b9050610fa3816040518060400160405280601081526020016f18dc99585d19551bdd5c9b985b595b9d60821b815250612939565b15611084576000610fb489896129d3565b80516000908152600a60209081526040808320805460ff1916600190811790915591840151845184529281902090910191909155601054825182840151925163d2d1aefd60e01b81529394506001600160a01b039091169263d2d1aefd9261101f9291600401614ea0565b600060405180830381600087803b15801561103957600080fd5b505af115801561104d573d6000803e3d6000fd5b505082516040519092507f113d32d0b7aec15a8c7f50af4cb42f4695e5b95524ed69519ac88d6c1f1f40f69150600090a250611997565b6110b8816040518060400160405280601281526020017118dbdb5c1b195d19551bdd5c9b985b595b9d60721b815250612939565b156111505760006110c989896129d3565b80516000908152600a602090815260408220805460ff191690558201519192500361111e5780516040517ffa61ec8d7e5a58ceba17772b10ba0c6caa65b40b200302be35f00efc264c789590600090a261114a565b80516040517fcdac78591ae836e3c817bf6dc0ba9fa0c8e312b6b25358009d27c0c6d8a3cc3090600090a25b50611997565b611184816040518060400160405280601281526020017139b1b432b23ab632a9b4b6bab630ba34b7b760711b815250612939565b1561124b5760006111958989612ba0565b60408051608081018252825181526020808401805182840190815285850151848601908152606080880151151590860190815287516000908152600295869052879020865181559251600184015590519382019390935591516003909201805460ff191692151592909217909155835190519251939450909290917fa815f3c9ed54cd0424ae997e2462a26c3b575507ed7339701bf0294dd5ac12109161123c919061422c565b60405180910390a25050611997565b61128281604051806040016040528060158152602001741d1bdd5c9b985b595b9d14185c9d1a58da5c185b9d605a1b815250612939565b156114465760006112938989612cf3565b8051602082015160408301516060840151939450919290919060005b81518110156114105760008282815181106112cc576112cc614d86565b6020026020010151905060006001600160a01b0316816001600160a01b0316146114075783828151811061130257611302614d86565b6020908102919091018101516000888152600180845260408083206001600160a01b0387168452855280832093909355825181815280840190935290928281019080368337505060408051600180825281830190925292935060009291506020808301908036833750505060008881526001602081815260408084206001600160a01b038916855290915290912081015491925081106114035780836000815181106113b0576113b0614d86565b6020026020010181815250506001826000815181106113d1576113d1614d86565b60200260200101818152505061140389858988815181106113f4576113f4614d86565b60200260200101518686611c04565b5050505b506001016112af565b5060405184907f8e11c1b84cb43df6b72d82dfa487db5c6961f60ef9db2d150d604230a37c2e7a90600090a25050505050611997565b611470816040518060400160405280600881526020016773796e63466c616760c01b815250612939565b156114ae5761147f8888612f7c565b516040517f8614e78d72184b8022cc5f29ae5dfba6ba32c46a6274b69f039df627c0486d9090600090a2611997565b6114dd816040518060400160405280600d81526020016c32b73229b4b6bab630ba34b7b760991b815250612939565b1561197f5760006114ee898961301d565b60208082015160009081526003909152604090205460e08201518251608084015160608101519495509293919290916001600160a01b0316158015906115375750604081015115155b156115ba57600f54606082015160408084015160009081526003602052819020549051632baf2acb60e01b81526001600160a01b0390931692632baf2acb92611587929091600190600401614eb7565b600060405180830381600087803b1580156115a157600080fd5b505af11580156115b5573d6000803e3d6000fd5b505050505b60208101516001600160a01b0316158015906115d65750805115155b1561165857600f54602080830151835160009081526003909252604091829020549151632baf2acb60e01b81526001600160a01b0390931692632baf2acb926116259291600190600401614eb7565b600060405180830381600087803b15801561163f57600080fd5b505af1158015611653573d6000803e3d6000fd5b505050505b60a08101516001600160a01b0316158015906116775750608081015115155b156116fc57600f5460a0820151608083015160009081526003602052604090819020549051632baf2acb60e01b81526001600160a01b0390931692632baf2acb926116c9929091600190600401614eb7565b600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b505050505b606085015160005b815181101561181457600082828151811061172157611721614d86565b6020026020010151905085156117b657600f5483516001600160a01b0390911690632baf2acb9085908590811061175a5761175a614d86565b60200260200101518960016040518463ffffffff1660e01b815260040161178393929190614eb7565b600060405180830381600087803b15801561179d57600080fd5b505af11580156117b1573d6000803e3d6000fd5b505050505b60008581526001602081815260408084206001600160a01b038616855290915290912054906117ed90879083908590600490612609565b6117fb868284600180612609565b61180a86828460056001612609565b5050600101611704565b5060a08601515160005b818110156118c85760008860a00151828151811061183e5761183e614d86565b602090810291909101810151600e54918101518151604080840151905163124d91e560e01b81529395506001600160a01b039094169363124d91e59361188993929190600401614edf565b600060405180830381600087803b1580156118a357600080fd5b505af11580156118b7573d6000803e3d6000fd5b50506001909301925061181e915050565b50600d5460c0880151604051635a7542a760e11b81526001600160a01b039092169163b4ea854e916118fc91600401614f90565b600060405180830381600087803b15801561191657600080fd5b505af115801561192a573d6000803e3d6000fd5b50505060008581526002602052604080822060038101805460ff19169055905190925086917f8a260bada429282b724c54002760819258b75ea3a2cf3caf6edb960bb7ea32da91a25050505050505050611997565b604051627f3e2760e51b815260040160405180910390fd5b50505050505050505050565b6119ce6040518060800160405280600081526020016060815260200160608152602001606081525090565b6000838152600460208181526040808420868552825280842092845282825280842080548251818502810185019093528083529394939192909190830182828015611a3857602002820191906000526020600020905b815481526020019060010190808311611a24575b50505050509050600082600060016005811115611a5757611a57614b51565b6005811115611a6857611a68614b51565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611ac057602002820191906000526020600020905b815481526020019060010190808311611aac575b505050505090506000836000600580811115611ade57611ade614b51565b6005811115611aef57611aef614b51565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611b4757602002820191906000526020600020905b815481526020019060010190808311611b33575b5050604080516080810182529a8b5260208b019790975250505092860191909152506060840152509092915050565b60088054611b8390614bb9565b80601f0160208091040260200160405190810160405280929190818152602001828054611baf90614bb9565b8015611bfc5780601f10611bd157610100808354040283529160200191611bfc565b820191906000526020600020905b815481529060010190602001808311611bdf57829003601f168201915b505050505081565b836001600160a01b0381163314801590611c335750611c3160008051602061545783398151915233611f17565b155b8015611c545750611c5260008051602061547783398151915233611f17565b155b15611c725760405163ea8e4eb560e01b815260040160405180910390fd5b600283511115611c985760046040516327f04bff60e01b815260040161078b9190614b95565b6107a5868587868660046001612181565b816001600160a01b0381163314801590611cd85750611cd660008051602061545783398151915233611f17565b155b8015611cf95750611cf760008051602061547783398151915233611f17565b155b15611d175760405163ea8e4eb560e01b815260040160405180910390fd5b60008581526001602090815260408083206001600160a01b0387168452909152902054848114611d5a5760405163ea8e4eb560e01b815260040160405180910390fd5b60008681526002602081815260408084208151608081018352815480825260018301549482019490945293810154918401919091526003015460ff1615156060830152909103611dbd57604051631d701c2560e21b815260040160405180910390fd5b8060400151600003611de257604051636b58927760e01b815260040160405180910390fd5b42816040015111611e0657604051630c82e9dd60e41b815260040160405180910390fd5b611e1b87868887600001518860200151611c04565b611e3087868887604001518860600151610c47565b611e4587868887608001518860a001516106ea565b604051869088907f16d56ff294ff25778acda367939faefd690cf3cade2a4cd49c825ff456b7dd7890600090a350505050505050565b600080516020615497833981519152611e9381612513565b6010546001600160a01b0383811691161461083457601080546001600160a01b0384166001600160a01b03199091161790555050565b600080516020615497833981519152611ee181612513565b6007546001600160a01b0383811691161461083457600780546001600160a01b0384166001600160a01b03199091161790555050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020615497833981519152611f5881612513565b600c546001600160a01b0383811691161461083457600c80546001600160a01b0384166001600160a01b03199091161790555050565b60098054611b8390614bb9565b600080516020615497833981519152611fb381612513565b600b546001600160a01b0383811691161461083457600b80546001600160a01b0384166001600160a01b03199091161790555050565b60008281526020819052604090206001015461200481612513565b6107d283836125a4565b60008051602061549783398151915261202681612513565b600d546001600160a01b0383811691161461083457600d80546001600160a01b0384166001600160a01b03199091161790555050565b6010546040516376beffad60e01b81526001600160a01b03909116906376beffad9061208e9033908690600401614fa1565b602060405180830381865afa1580156120ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120cf9190614fba565b6120ec576040516387b86da360e01b815260040160405180910390fd5b6000828152600a602052604090205460ff1661211b57604051637a30a6cf60e01b815260040160405180910390fd5b8060000361213c5760405163884d33e160e01b815260040160405180910390fd5b600091825260016020818152604080852033865290915290922090910155565b60008051602061549783398151915261217481612513565b60096107fc838583614c70565b61218c848484612915565b60008781526002602052604090206003015460ff166121bd5760405162461bcd60e51b815260040161078b90615008565b60008781526004602090815260408083208984529091528120818460058111156121e9576121e9614b51565b60058111156121fa576121fa614b51565b8152602080820192909252604090810160009081208b8252600684528282208b8352909352908120919250908185600581111561223957612239614b51565b600581111561224a5761224a614b51565b815260200190815260200160002090506000600560008b815260200190815260200160002060008a8152602001908152602001600020600086600581111561229457612294614b51565b60058111156122a5576122a5614b51565b8152602001908152602001600020905060008751905084156122cf576122cf8b8b8b896000612609565b60005b818110156125055760008982815181106122ee576122ee614d86565b60200260200101519050600089838151811061230c5761230c614d86565b60200260200101519050600085600084815260200190815260200160002054905080600003612363578754600181018955600089815260208082209092018590558954858252918990526040902060001990910190555b6000838152602087905260409020818301905560048a600581111561238a5761238a614b51565b0361240b57600d60009054906101000a90046001600160a01b03166001600160a01b031663e2ab691d8e85856040518463ffffffff1660e01b81526004016123d493929190614edf565b600060405180830381600087803b1580156123ee57600080fd5b505af1158015612402573d6000803e3d6000fd5b505050506124fa565b60018a600581111561241f5761241f614b51565b0361246957600c60009054906101000a90046001600160a01b03166001600160a01b031663e2ab691d8e85856040518463ffffffff1660e01b81526004016123d493929190614edf565b60058a600581111561247d5761247d614b51565b036124fa57600b60009054906101000a90046001600160a01b03166001600160a01b031663e2ab691d8e85856040518463ffffffff1660e01b81526004016124c793929190614edf565b600060405180830381600087803b1580156124e157600080fd5b505af11580156124f5573d6000803e3d6000fd5b505050505b5050506001016122d2565b505050505050505050505050565b61251d81336135e6565b50565b61252a8282611f17565b610834576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556125603390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6125ae8282611f17565b15610834576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600085815260046020908152604080832087845290915281208184600581111561263557612635614b51565b600581111561264657612646614b51565b815260200190815260200160002090506000600560008881526020019081526020016000206000878152602001908152602001600020600085600581111561269057612690614b51565b60058111156126a1576126a1614b51565b8152602081019190915260400160009081208354909250905b818110156128b35760008360008684815481106126d9576126d9614d86565b906000526020600020015481526020019081526020016000205490506004600581111561270857612708614b51565b87600581111561271a5761271a614b51565b036127ab57600d5485546001600160a01b039091169063b5674c68908a9088908690811061274a5761274a614d86565b9060005260206000200154846040518463ffffffff1660e01b815260040161277493929190614edf565b600060405180830381600087803b15801561278e57600080fd5b505af11580156127a2573d6000803e3d6000fd5b50505050612879565b60018760058111156127bf576127bf614b51565b0361281b57600c5485546001600160a01b039091169063317536e6908a908890869081106127ef576127ef614d86565b9060005260206000200154848a6040518563ffffffff1660e01b81526004016127749493929190615018565b600587600581111561282f5761282f614b51565b0361285f57600b5485546001600160a01b039091169063b5674c68908a9088908690811061274a5761274a614d86565b8660405162da15db60e51b815260040161078b9190614b95565b83600086848154811061288e5761288e614d86565b60009182526020808320909101548352820192909252604001812055506001016126ba565b5060008881526004602090815260408083208a84529091528120908660058111156128e0576128e0614b51565b60058111156128f1576128f1614b51565b8152602001908152602001600020600061290b9190614033565b5050505050505050565b81518351146107d257806040516327f04bff60e01b815260040161078b9190614b95565b60008160405160200161294c9190615048565b60405160208183030381529060405280519060200120836040516020016129739190615048565b6040516020818303038152906040528051906020012014905092915050565b606060006129a76129a28461363f565b61366c565b90506129cc816000815181106129bf576129bf614d86565b6020026020010151613794565b9392505050565b6129f760405180606001604052806000815260200160008152602001600081525090565b6000612a3b6129a285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363f92505050565b90508051600414612a5e5760405162461bcd60e51b815260040161078b90615088565b600081600181518110612a7357612a73614d86565b602002602001015190506000612a888261384c565b9050612aba6040518060400160405280600e81526020016d03a37bab93730b6b2b73a24b21d160951b815250826138d8565b600083600281518110612acf57612acf614d86565b602002602001015190506000612ae48261384c565b9050612b166040518060400160405280600e81526020016d039b4b6bab630ba34b7b724b21d160951b815250826138d8565b600085600381518110612b2b57612b2b614d86565b602002602001015190506000612b408261384c565b9050612b766040518060400160405280601281526020017103a37bab93730b6b2b73a2830b9b9a4b21d160751b815250826138d8565b60405180606001604052808681526020018481526020018281525097505050505050505092915050565b612bcd60405180608001604052806000815260200160008152602001600081526020016000151581525090565b6000612c116129a285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363f92505050565b90508051600514612c345760405162461bcd60e51b815260040161078b906150cc565b600081600181518110612c4957612c49614d86565b602002602001015190506000612c5e8261384c565b90506000612c8584600281518110612c7857612c78614d86565b602002602001015161384c565b90506000612c9f85600381518110612c7857612c78614d86565b90506000612cc686600481518110612cb957612cb9614d86565b602002602001015161391d565b60408051608081018252958652602086019490945292840191909152501515606082015295945050505050565b612d1e6040518060800160405280600081526020016000815260200160608152602001606081525090565b6000612d626129a285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363f92505050565b90508051600514612d855760405162461bcd60e51b815260040161078b906150cc565b6000612d9d82600181518110612c7857612c78614d86565b90506000612db783600281518110612c7857612c78614d86565b90506000612dde84600381518110612dd157612dd1614d86565b602002602001015161366c565b9050600081516001600160401b03811115612dfb57612dfb61425b565b604051908082528060200260200182016040528015612e24578160200160208202803683370190505b50905060005b8251811015612e6d57612e48838281518110612c7857612c78614d86565b828281518110612e5a57612e5a614d86565b6020908102919091010152600101612e2a565b506000612e8686600481518110612dd157612dd1614d86565b9050600081516001600160401b03811115612ea357612ea361425b565b604051908082528060200260200182016040528015612ecc578160200160208202803683370190505b50905060005b8251811015612f5057612ef08382815181106129bf576129bf614d86565b51602a03612f4857612f15612f108483815181106129bf576129bf614d86565b613972565b828281518110612f2757612f27614d86565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612ed2565b506040805160808101825296875260208701959095529385019190915250506060820152949350505050565b6040805160208101909152600081526000612fcf6129a285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363f92505050565b90508051600214612ff25760405162461bcd60e51b815260040161078b906150cc565b604051806020016040528061301383600181518110612c7857612c78614d86565b9052949350505050565b613025614051565b60006130696129a285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363f92505050565b9050805160071461308c5760405162461bcd60e51b815260040161078b906150cc565b60006130af6129a26130aa846001815181106129bf576129bf614d86565b61363f565b9050600081516001600160401b038111156130cc576130cc61425b565b6040519080825280602002602001820160405280156130f5578160200160208202803683370190505b50905060005b8251811015613174576131198382815181106129bf576129bf614d86565b51602a0361316c57613139612f108483815181106129bf576129bf614d86565b82828151811061314b5761314b614d86565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016130fb565b50600061318d84600681518110612cb957612cb9614d86565b905060006131ad6129a26130aa876002815181106129bf576129bf614d86565b905060006131c782600081518110612c7857612c78614d86565b905060006131e183600181518110612c7857612c78614d86565b905060006131fb84600281518110612c7857612c78614d86565b9050600061321b6129a26130aa8b6003815181106129bf576129bf614d86565b905060006040518060c0016040528061324084600081518110612c7857612c78614d86565b815260200161325e612f10856001815181106129bf576129bf614d86565b6001600160a01b0316815260200161328284600281518110612c7857612c78614d86565b81526020016132a0612f10856003815181106129bf576129bf614d86565b6001600160a01b031681526020016132c484600481518110612c7857612c78614d86565b81526020016132e2612f10856005815181106129bf576129bf614d86565b6001600160a01b03168152509050600061330e6129a26130aa8d6004815181106129bf576129bf614d86565b9050600081516001600160401b0381111561332b5761332b61425b565b60405190808252806020026020018201604052801561338957816020015b61337660405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b8152602001906001900390816133495790505b50905060005b82518110156134435760006133b56129a26130aa8685815181106129bf576129bf614d86565b905060405180606001604052806133d883600081518110612c7857612c78614d86565b81526020016133f6612f10846001815181106129bf576129bf614d86565b6001600160a01b0316815260200161341a83600281518110612c7857612c78614d86565b81525083838151811061342f5761342f614d86565b60209081029190910101525060010161338f565b5060006134626129a26130aa8f6005815181106129bf576129bf614d86565b9050600081516001600160401b0381111561347f5761347f61425b565b6040519080825280602002602001820160405280156134dd57816020015b6134ca6040518060600160405280600081526020016000815260200160006001600160a01b031681525090565b81526020019060019003908161349d5790505b50905060005b82518110156135975760006135096129a26130aa8685815181106129bf576129bf614d86565b9050604051806060016040528061352c83600081518110612c7857612c78614d86565b815260200161354783600281518110612c7857612c78614d86565b8152602001613565612f10846001815181106129bf576129bf614d86565b6001600160a01b031681525083838151811061358357613583614d86565b6020908102919091010152506001016134e3565b506040805161010081018252998a5260208a0198909852968801959095526060870199909952506080850152505060a082019490945260c081019390935250151560e082015295945050505050565b6135f08282611f17565b610834576135fd81613c2f565b613608836020613c41565b6040516020016136199291906150dc565b60408051601f198184030181529082905262461bcd60e51b825261078b91600401614961565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b606061367782613dac565b6136935760405162461bcd60e51b815260040161078b90615159565b600061369e83613ddd565b90506000816001600160401b038111156136ba576136ba61425b565b6040519080825280602002602001820160405280156136ff57816020015b60408051808201909152600080825260208201528152602001906001900390816136d85790505b50905060006137118560200151613e62565b85602001516137209190614db2565b90506000805b848110156137895761373783613ee3565b915060405180604001604052808381526020018481525084828151811061376057613760614d86565b60209081029190910101526137758284614db2565b92508061378181614e28565b915050613726565b509195945050505050565b80516060906137b55760405162461bcd60e51b815260040161078b9061518e565b60006137c48360200151613e62565b905060008184600001516137d8919061519e565b90506000816001600160401b038111156137f4576137f461425b565b6040519080825280601f01601f19166020018201604052801561381e576020820181803683370190505b509050600081602001905061384384876020015161383c9190614db2565b8285613f8c565b50949350505050565b80516000901580159061386157508151602110155b61387d5760405162461bcd60e51b815260040161078b906151db565b600061388c8360200151613e62565b905060008184600001516138a0919061519e565b90506000808386602001516138b59190614db2565b905080519150602083101561384357506020919091036101000a90049392505050565b61083482826040516024016138ee9291906151eb565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905261400e565b80516000906001146139415760405162461bcd60e51b815260040161078b90615234565b6020820151805160001a908115806139595750608082145b15613968575060009392505050565b5060019392505050565b60008151602a1480156139b35750600360fc1b6001600160f81b031916826000815181106139a2576139a2614d86565b01602001516001600160f81b031916145b80156139ed5750600f60fb1b6001600160f81b031916826001815181106139dc576139dc614d86565b01602001516001600160f81b031916145b613a0a5760405163363fcec960e01b815260040160405180910390fd5b60408051601480825281830190925260009160208201818036833701905050905060008080805b6028811015613b8f5786613a46826002614db2565b81518110613a5657613a56614d86565b016020015160f81c935060016030851015613a6f575060005b8460ff166039108015613a85575060418560ff16105b15613a8e575060005b8460ff166046108015613aa4575060618560ff16105b15613aad575060005b8460ff1660661015613abd575060005b80613adb5760405163363fcec960e01b815260040160405180910390fd5b60418560ff161015613af05760309250613b0a565b8460ff1660461015613b055760579250613b0a565b603792505b613b1560028361525a565b600003613b2d57613b26838661526e565b9350613b86565b613b37838661526e565b613b4285601061528b565b613b4c91906152ab565b60f81b866001613b5c818661519e565b901c81518110613b6e57613b6e614d86565b60200101906001600160f81b031916908160001a9053505b50600101613a31565b50600084604051602001613ba39190615048565b60408051601f198184030181529190526014810151965090506001600160a01b038616613c255760025b8751811015613c2357878181518110613be857613be8614d86565b6020910101516001600160f81b031916600360fc1b14613c1b5760405163363fcec960e01b815260040160405180910390fd5b600101613bcd565b505b5050505050919050565b60606106e46001600160a01b03831660145b60606000613c508360026152c8565b613c5b906002614db2565b6001600160401b03811115613c7257613c7261425b565b6040519080825280601f01601f191660200182016040528015613c9c576020820181803683370190505b509050600360fc1b81600081518110613cb757613cb7614d86565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613ce657613ce6614d86565b60200101906001600160f81b031916908160001a9053506000613d0a8460026152c8565b613d15906001614db2565b90505b6001811115613d8d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613d4957613d49614d86565b1a60f81b828281518110613d5f57613d5f614d86565b60200101906001600160f81b031916908160001a90535060049490941c93613d86816152e0565b9050613d18565b5083156129cc5760405162461bcd60e51b815260040161078b90615329565b80516000908103613dbf57506000919050565b6020820151805160001a9060c0821015613968575060009392505050565b80516000908103613df057506000919050565b600080613e008460200151613e62565b8460200151613e0f9190614db2565b9050600084600001518560200151613e279190614db2565b90505b80821015613e5957613e3b82613ee3565b613e459083614db2565b915082613e5181614e28565b935050613e2a565b50909392505050565b8051600090811a6080811015613e7b5750600092915050565b60b8811080613e96575060c08110801590613e96575060f881105b15613ea45750600192915050565b60c0811015613ed157613eb9600160b861526e565b613ec69060ff168261519e565b6129cc906001614db2565b613eb9600160f861526e565b50919050565b80516000908190811a6080811015613efe5760019150613f85565b60b8811015613f2457613f1260808261519e565b613f1d906001614db2565b9150613f85565b60c0811015613f515760b78103600185019450806020036101000a85510460018201810193505050613f85565b60f8811015613f6557613f1260c08261519e565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80600003613f9957505050565b60208110613fd15782518252613fb0602084614db2565b9250613fbd602083614db2565b9150613fca60208261519e565b9050613f99565b80156107d25760006001613fe683602061519e565b613ff290610100615447565b613ffc919061519e565b84518451821691191617835250505050565b61251d8160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b508054600082559060005260206000209081019061251d91906140e7565b604051806101000160405280600081526020016000815260200160008152602001606081526020016140cd6040518060c001604052806000815260200160006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160006001600160a01b031681525090565b815260606020820181905260408201819052600091015290565b5b808211156140fc57600081556001016140e8565b5090565b6001600160e01b031981165b811461251d57600080fd5b80356106e481614100565b60006020828403121561413757614137600080fd5b60006141438484614117565b949350505050565b8015155b82525050565b602081016106e4828461414b565b60006106e46001600160a01b03831661417a565b90565b6001600160a01b031690565b60006106e482614163565b60006106e482614186565b61414f81614191565b602081016106e4828461419c565b8061410c565b80356106e4816141b3565b60006001600160a01b0382166106e4565b61410c816141c4565b80356106e4816141d5565b600080604083850312156141ff576141ff600080fd5b600061420b85856141b9565b925050602061421c858286016141de565b9150509250929050565b8061414f565b602081016106e48284614226565b60006020828403121561424f5761424f600080fd5b600061414384846141b9565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b03821117156142965761429661425b565b6040525050565b60006142a860405190565b90506142b48282614271565b919050565b60006001600160401b038211156142d2576142d261425b565b5060209081020190565b60006142ef6142ea846142b9565b61429d565b8381529050602080820190840283018581111561430e5761430e600080fd5b835b81811015614332578061432388826141b9565b84525060209283019201614310565b5050509392505050565b600082601f83011261435057614350600080fd5b81356141438482602086016142dc565b600080600080600060a0868803121561437b5761437b600080fd5b600061438788886141b9565b9550506020614398888289016141de565b94505060406143a9888289016141b9565b93505060608601356001600160401b038111156143c8576143c8600080fd5b6143d48882890161433c565b92505060808601356001600160401b038111156143f3576143f3600080fd5b6143ff8882890161433c565b9150509295509295909350565b60008083601f84011261442157614421600080fd5b5081356001600160401b0381111561443b5761443b600080fd5b60208301915083600182028301111561445657614456600080fd5b9250929050565b6000806020838503121561447357614473600080fd5b82356001600160401b0381111561448c5761448c600080fd5b6144988582860161440c565b92509250509250929050565b80151561410c565b80356106e4816144a4565b600080600080608085870312156144d0576144d0600080fd5b60006144dc87876141b9565b94505060206144ed878288016141b9565b93505060406144fe878288016141de565b925050606061450f878288016144ac565b91505092959194509250565b6000806000806080858703121561453457614534600080fd5b600061454087876141b9565b9450506020614551878288016141b9565b93505060408501356001600160401b0381111561457057614570600080fd5b61457c8782880161433c565b92505060608501356001600160401b0381111561459b5761459b600080fd5b61450f8782880161433c565b60006106e4826141c4565b61410c816145a7565b80356106e4816145b2565b6000602082840312156145db576145db600080fd5b600061414384846145bb565b608081016145f58287614226565b6146026020830186614226565b61460f6040830185614226565b61461c606083018461414b565b95945050505050565b6006811061251d57600080fd5b80356106e481614625565b6000806000806080858703121561465657614656600080fd5b600061466287876141b9565b9450506020614673878288016141b9565b935050604061468487828801614632565b925050606061450f878288016141b9565b600080604083850312156146ab576146ab600080fd5b82356001600160401b038111156146c4576146c4600080fd5b6146d08582860161433c565b92505060208301356001600160401b038111156146ef576146ef600080fd5b61421c8582860161433c565b60008083601f84011261471057614710600080fd5b5081356001600160401b0381111561472a5761472a600080fd5b60208301915083602082028301111561445657614456600080fd5b6000806000806000806060878903121561476157614761600080fd5b86356001600160401b0381111561477a5761477a600080fd5b61478689828a0161440c565b965096505060208701356001600160401b038111156147a7576147a7600080fd5b6147b389828a0161440c565b945094505060408701356001600160401b038111156147d4576147d4600080fd5b6147e089828a016146fb565b92509250509295509295509295565b6000806040838503121561480557614805600080fd5b600061481185856141b9565b925050602061421c858286016141b9565b600061482e8383614226565b505060200190565b6000614840825190565b80845260209384019383018060005b838110156148745781516148638882614822565b97506020830192505060010161484f565b509495945050505050565b805160009060808401906148938582614226565b50602083015184820360208601526148ab8282614836565b915050604083015184820360408601526148c58282614836565b9150506060830151848203606086015261461c8282614836565b602080825281016129cc818461487f565b604081016148fe828561414b565b6129cc6020830184614226565b60005b8381101561492657818101518382015260200161490e565b50506000910152565b6000614939825190565b80845260208401935061495081856020860161490b565b601f01601f19169290920192915050565b602080825281016129cc818461492f565b600060c0828403121561498757614987600080fd5b61499160c061429d565b905081356001600160401b038111156149ac576149ac600080fd5b6149b88482850161433c565b82525060208201356001600160401b038111156149d7576149d7600080fd5b6149e38482850161433c565b60208301525060408201356001600160401b03811115614a0557614a05600080fd5b614a118482850161433c565b60408301525060608201356001600160401b03811115614a3357614a33600080fd5b614a3f8482850161433c565b60608301525060808201356001600160401b03811115614a6157614a61600080fd5b614a6d8482850161433c565b60808301525060a08201356001600160401b03811115614a8f57614a8f600080fd5b614a9b8482850161433c565b60a08301525092915050565b60008060008060808587031215614ac057614ac0600080fd5b6000614acc87876141b9565b9450506020614add878288016141b9565b9350506040614aee878288016141de565b92505060608501356001600160401b03811115614b0d57614b0d600080fd5b61450f87828801614972565b600060208284031215614b2e57614b2e600080fd5b600061414384846141de565b61414f816141c4565b602081016106e48284614b3a565b634e487b7160e01b600052602160045260246000fd5b6006811061251d5761251d614b51565b806142b481614b67565b60006106e482614b77565b61414f81614b81565b602081016106e48284614b8c565b634e487b7160e01b600052602260045260246000fd5b600281046001821680614bcd57607f821691505b602082108103613edd57613edd614ba3565b60006106e46141778381565b614bf483614bdf565b815460001960089490940293841b1916921b91909117905550565b60006107d2818484614beb565b8181101561083457614c2f600082614c0f565b600101614c1c565b601f8211156107d2576000818152602090206020601f85010481016020851015614c5e5750805b61087a6020601f860104830182614c1c565b826001600160401b03811115614c8857614c8861425b565b614c928254614bb9565b614c9d828285614c37565b6000601f831160018114614cd15760008415614cb95750858201355b600019600886021c1981166002860217865550614d2a565b600085815260208120601f198616915b82811015614d015788850135825560209485019460019092019101614ce1565b86831015614d1d57600019601f88166008021c19858a01351682555b6001600288020188555050505b50505050505050565b602080825281016106e481602f81527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560208201526e103937b632b9903337b91039b2b63360891b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156106e4576106e4614d9c565b6000614dcf825190565b80845260209384019383018060005b83811015614874578151614df28882614822565b975060208301925050600101614dde565b60408082528101614e148185614dc5565b905081810360208301526141438184614dc5565b60006000198203614e3b57614e3b614d9c565b5060010190565b6000808335601e1936859003018112614e5d57614e5d600080fd5b8084019250823591506001600160401b03821115614e7d57614e7d600080fd5b602083019250600182023603831315614e9857614e98600080fd5b509250929050565b604081016148fe8285614226565b61414f81614bdf565b60608101614ec58286614b3a565b614ed26020830185614226565b6141436040830184614eae565b60608101614eed8286614b3a565b614efa6020830185614226565b6141436040830184614226565b80516060830190614f188482614226565b506020820151614f2b6020850182614226565b5060408201516107fc6040850182614b3a565b6000614f4a8383614f07565b505060600190565b6000614f5c825190565b80845260209384019383018060005b83811015614874578151614f7f8882614f3e565b975060208301925050600101614f6b565b602080825281016129cc8184614f52565b604081016148fe8285614b3a565b80516106e4816144a4565b600060208284031215614fcf57614fcf600080fd5b60006141438484614faf565b601381526000602082017253696d756c6174696f6e4e6f7441637469766560681b815291505b5060200190565b602080825281016106e481614fdb565b608081016145f58287614b3a565b6000615030825190565b61503e81856020860161490b565b9290920192915050565b60006129cc8284615026565b601b81526000602082017f496e76616c696420656e636f6465642064617461206c656e677468000000000081529150615001565b602080825281016106e481615054565b601881526000602082017f496e76616c6964456e636f646564446174614c656e677468000000000000000081529150615001565b602080825281016106e481615098565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152601701600061510e8285615026565b7001034b99036b4b9b9b4b733903937b6329607d1b815260110191506141438284615026565b600e81526000602082016d135d5cdd0818994818481b1a5cdd60921b81529150615001565b602080825281016106e481615134565b600e81526000602082016d092dcecc2d8d2c840d8cadccee8d60931b81529150615001565b602080825281016106e481615169565b818103818111156106e4576106e4614d9c565b601381526000602082017224b73b30b634b2103ab4b73a10373ab6b132b960691b81529150615001565b602080825281016106e4816151b1565b604080825281016151fc818561492f565b90506129cc6020830184614226565b60128152600060208201714d7573742068617665206c656e677468203160701b81529150615001565b602080825281016106e48161520b565b634e487b7160e01b600052601260045260246000fd5b60008261526957615269615244565b500690565b60ff9182169190811690828203908111156106e4576106e4614d9c565b60ff918216919081169082820290811690818114613f8557613f85614d9c565b60ff9182169190811690828201908111156106e4576106e4614d9c565b818102808215838204851417613f8557613f85614d9c565b6000816152ef576152ef614d9c565b506000190190565b60208082527f537472696e67733a20686578206c656e67746820696e73756666696369656e7491019081526000615001565b602080825281016106e4816152f7565b80825b60018511156153785780860481111561535757615357614d9c565b600185161561536557908102905b80026153718560011c90565b945061533c565b94509492505050565b600082615390575060016129cc565b8161539d575060006129cc565b81600181146153b357600281146153bd576153ea565b60019150506129cc565b60ff8411156153ce576153ce614d9c565b8360020a9150848211156153e4576153e4614d9c565b506129cc565b5060208310610133831016604e8410600b841016171561541d575081810a8381111561541857615418614d9c565b6129cc565b61542a8484846001615339565b9250905081840481111561544057615440614d9c565b0292915050565b60006129cc600019848461538156fe25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f60cd00dcfd7a15a07cd49d8c39dd66655888b430bf6412aa1c7b4b5fc410017ba49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a264697066735822122050c009658ffa206cfb205493f4b51ff9242890d65a3b43498a0325228f3f36ce64736f6c634300081300330000000000000000000000002472d36f785ca4cfad266269081cbb7fca8e31fe000000000000000000000000d960dd5d7aa13d9d523693f990a8c426ef1866600000000000000000000000001a37e782858037e48d6e172ed953af90efb194df00000000000000000000000057991dc3ddb0534cbe6d8d8ad24b931d7ef8cc40000000000000000000000000c267cfef143fd5eeb15f4d13a23eb618d8bb4b2d000000000000000000000000124f404335dd8237de0ac9ea94acf92f6a1989e3000000000000000000000000250409da7de6a9c7c3cef3cb4cadd8b2bb8e7c2a000000000000000000000000fc83a3f252090b26f92f91dfb9dc3eb710adaf1b000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000002a3078333830304143393936364430363643613133333642626345314238456235663137436631663536410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000333078312e69636f6e2f63786461663232396363323039616534343263363134333362616435653732363862303731313539346400000000000000000000000000