0 txs
0 calls
constructor
No constructor.
functions
ability
viewfunction ability() view returns (address)
abilityHdlr
viewfunction abilityHdlr() view returns (address)
abilityUsedOnSimulation
viewfunction abilityUsedOnSimulation(uint256, uint256, uint256) view returns (uint256)
abilityUsedOnSimulationIndex
viewfunction abilityUsedOnSimulationIndex(uint256, uint256, uint256) view returns (uint256)
abilityUsedOnSimulationMap
viewfunction abilityUsedOnSimulationMap(uint256, uint256, uint256) view returns (uint256)
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
ASSET_MANAGER_ROLE
viewfunction ASSET_MANAGER_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
eqpHdlr
viewfunction eqpHdlr() view returns (address)
eqpUsedOnSimulation
viewfunction eqpUsedOnSimulation(uint256, uint256, uint256) view returns (uint256)
eqpUsedOnSimulationIndex
viewfunction eqpUsedOnSimulationIndex(uint256, uint256, uint256) view returns (uint256)
eqpUsedOnSimulationMap
viewfunction eqpUsedOnSimulationMap(uint256, uint256, uint256) view returns (uint256)
getParticipantDetail
viewfunction getParticipantDetail(uint256 simulationId, uint256 charId) view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
itemUsedOnSimulation
viewfunction itemUsedOnSimulation(uint256, uint256, uint256) view returns (uint256)
itemUsedOnSimulationIndex
viewfunction itemUsedOnSimulationIndex(uint256, uint256, uint256) view returns (uint256)
itemUsedOnSimulationMap
viewfunction itemUsedOnSimulationMap(uint256, uint256, uint256) view returns (uint256)
itmHdlr
viewfunction itmHdlr() view returns (address)
participationContract
viewfunction participationContract() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
simulationContract
viewfunction simulationContract() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
validateArrayLength
purefunction validateArrayLength(uint256[] len1, uint256[] len2, uint8 _type) pure
addAbilityTokens
nonpayablefunction addAbilityTokens(uint256 simulationId, uint256 charId, uint256[] abilityIds, uint256[] abilityValues)
burnUsedAbilities
nonpayablefunction burnUsedAbilities(tuple[] abilityUsedList)
equipmentCooldown
nonpayablefunction equipmentCooldown(tuple[] duraAmmoList)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address owner, address _participationContract, address _simulationContract, address _abilityHdlr, address _itmHdlr, address _eqpHdlr, address _abilityContract)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAbilityHandler
nonpayablefunction setAbilityHandler(address _abilityHdlr)
setEquipmentHandler
nonpayablefunction setEquipmentHandler(address _eqpHdlr)
setItemHandler
nonpayablefunction setItemHandler(address _itmHdlr)
unlockAssets
nonpayablefunction unlockAssets(uint256 simulationId, bool burnItem)
updateAbilities
nonpayablefunction updateAbilities(uint256 simulationId, address from, uint256 charId, uint256[] abilityIds, uint256[] abilityCount)
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[] itemCount)
updateUserAssets
nonpayablefunction updateUserAssets(uint256 simulationId, uint256 charId, address _from, tuple payload)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AbilityAdded
event AbilityAdded(address indexed caller, uint256 indexed characterId, uint256 indexed simulationId, uint256 abilityId, uint256 abilityValue)
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Initialized
event Initialized(uint8 version)
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)
Upgraded
event Upgraded(address indexed implementation)
errors
GameStateError
error GameStateError(uint8)
NotAuthorized
error NotAuthorized()
SimulationAlreadyStarted
error SimulationAlreadyStarted()
SimulationNotScheduled
error SimulationNotScheduled()
SizeMismatch
error SizeMismatch(uint8)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5060805161410561004c60003960008181610b6e01528181610bae01528181611075015281816110b501526115e501526141056000f3fe6080604052600436106102465760003560e01c806368d47be511610139578063a4b32de8116100b6578063cd16f1181161007a578063cd16f11814610759578063d547741f14610797578063d8f91720146107b7578063ddadeeaf146107f6578063f9f11b6014610816578063fac0a92d1461083757600080fd5b8063a4b32de814610698578063a59fc3eb146106ba578063afce8415146106da578063b85cdfd314610718578063b9029ee71461073857600080fd5b80638125ade9116100fd5780638125ade9146105e5578063829bc6cd14610605578063896365f01461062557806391d1485414610663578063a217fddf1461068357600080fd5b806368d47be5146105245780636a323d891461054457806375b238fc146105835780637bc27153146105a55780637f03fd23146105c557600080fd5b80633badc4db116101c757806358135d521161018b57806358135d52146104755780635b1a2126146104965780635d2b7469146104b657806360c87440146104d657806362c70f7e146104f757600080fd5b80633badc4db146103ce57806343141da51461040d5780634f1ef2861461042d57806351eeab461461044057806352d1902d1461046057600080fd5b8063293e92a61161020e578063293e92a61461032e5780632f2ff15d1461034e578063358764761461036e57806336568abe1461038e5780633659cfe6146103ae57600080fd5b806301ffc9a71461024b5780630e886eba1461028157806310cb92a2146102af578063248a9ca3146102dc57806325ed2bd61461030c575b600080fd5b34801561025757600080fd5b5061026b610266366004612ad9565b610858565b6040516102789190612b04565b60405180910390f35b34801561028d57600080fd5b50610105546102a2906001600160a01b031681565b6040516102789190612b42565b3480156102bb57600080fd5b506102cf6102ca366004612b61565b61088f565b6040516102789190612bb7565b3480156102e857600080fd5b506102cf6102f7366004612bc5565b60009081526065602052604090206001015490565b34801561031857600080fd5b5061032c610327366004612cff565b6108cd565b005b34801561033a57600080fd5b506102cf610349366004612b61565b610981565b34801561035a57600080fd5b5061032c610369366004612dab565b6109aa565b34801561037a57600080fd5b5061032c610389366004612dfc565b6109d4565b34801561039a57600080fd5b5061032c6103a9366004612dab565b610b2e565b3480156103ba57600080fd5b5061032c6103c9366004612e9b565b610b64565b3480156103da57600080fd5b506102cf6103e9366004612b61565b61010360209081526000938452604080852082529284528284209052825290205481565b34801561041957600080fd5b5061032c610428366004612ebc565b610c43565b61032c61043b366004612fea565b61106b565b34801561044c57600080fd5b5061032c61045b36600461304a565b611137565b34801561046c57600080fd5b506102cf6115d8565b34801561048157600080fd5b50610106546102a2906001600160a01b031681565b3480156104a257600080fd5b506102cf6104b1366004612b61565b611635565b3480156104c257600080fd5b5061032c6104d1366004612cff565b61165d565b3480156104e257600080fd5b50610109546102a2906001600160a01b031681565b34801561050357600080fd5b5061051761051236600461307d565b611704565b6040516102789190613176565b34801561053057600080fd5b5061032c61053f36600461325c565b61187d565b34801561055057600080fd5b506102cf61055f366004612b61565b61010160209081526000938452604080852082529284528284209052825290205481565b34801561058f57600080fd5b506102cf6000805160206140b083398151915281565b3480156105b157600080fd5b5061032c6105c0366004612cff565b61194e565b3480156105d157600080fd5b5061032c6105e03660046132ae565b6119f4565b3480156105f157600080fd5b5061032c61060036600461345c565b611a18565b34801561061157600080fd5b5061032c610620366004613597565b611aec565b34801561063157600080fd5b506102cf610640366004612b61565b60fd60209081526000938452604080852082529284528284209052825290205481565b34801561066f57600080fd5b5061026b61067e366004612dab565b611b6b565b34801561068f57600080fd5b506102cf600081565b3480156106a457600080fd5b506102cf60008051602061409083398151915281565b3480156106c657600080fd5b5061032c6106d53660046135d1565b611b96565b3480156106e657600080fd5b506102cf6106f5366004612b61565b60fe60209081526000938452604080852082529284528284209052825290205481565b34801561072457600080fd5b5061032c6107333660046135d1565b611bd2565b34801561074457600080fd5b50610107546102a2906001600160a01b031681565b34801561076557600080fd5b506102cf610774366004612b61565b60fb60209081526000938452604080852082529284528284209052825290205481565b3480156107a357600080fd5b5061032c6107b2366004612dab565b611c0e565b3480156107c357600080fd5b506102cf6107d2366004612b61565b61010060209081526000938452604080852082529284528284209052825290205481565b34801561080257600080fd5b5061032c6108113660046135d1565b611c33565b34801561082257600080fd5b50610108546102a2906001600160a01b031681565b34801561084357600080fd5b50610104546102a2906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b148061088957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60ff60205282600052604060002060205281600052604060002081815481106108b757600080fd5b9060005260206000200160009250925050505481565b836001600160a01b03811633148015906108fc57506108fa60008051602061409083398151915233611b6b565b155b1561091a5760405163ea8e4eb560e01b815260040160405180910390fd5b610926838360056119f4565b6000868152610102602090815260408083208784528252808320898452610103835281842088855283528184208a855261010184528285208986529093529220610976888484848a8a6005611c6f565b505050505050505050565b61010260205282600052604060002060205281600052604060002081815481106108b757600080fd5b6000828152606560205260409020600101546109c58161219d565b6109cf83836121a7565b505050565b600054610100900460ff16158080156109f45750600054600160ff909116105b80610a0e5750303b158015610a0e575060005460ff166001145b610a335760405162461bcd60e51b8152600401610a2a90613640565b60405180910390fd5b6000805460ff191660011790558015610a56576000805461ff0019166101001790555b610a6160008961222d565b61010580546001600160a01b03199081166001600160a01b038a811691909117909255610104805482168984161790556101068054821688841617905561010780548216878416179055610108805482168684161790556101098054909116918416919091179055610ad1612237565b610ad9612237565b8015610b24576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610b1b90600190613664565b60405180910390a15b5050505050505050565b6001600160a01b0381163314610b565760405162461bcd60e51b8152600401610a2a906136be565b610b608282612260565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bac5760405162461bcd60e51b8152600401610a2a90613717565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bf5600080516020614049833981519152546001600160a01b031690565b6001600160a01b031614610c1b5760405162461bcd60e51b8152600401610a2a90613770565b610c24816122c7565b60408051600080825260208201909252610c40918391906122ee565b50565b610c4f828260056119f4565b610104546040516308304c1360e11b815233916000916001600160a01b0390911690631060982690610c85908990600401612bb7565b600060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cca9190810190613985565b8051909150600003610cef57604051636b58927760e01b815260040160405180910390fd5b4281608001511115610d17576005604051637c4b79e560e01b8152600401610a2a9190613a03565b60028161010001516005811115610d3057610d306139bf565b03610d51576002604051637c4b79e560e01b8152600401610a2a9190613a03565b60018161010001516005811115610d6a57610d6a6139bf565b03610d8b576001604051637c4b79e560e01b8152600401610a2a9190613a03565b610d968686336123d0565b8351600090815b818160ff161015610f9b576000878260ff1681518110610dbf57610dbf613a11565b602002602001015190506000878360ff1681518110610de057610de0613a11565b60200260200101519050600061010260008d815260200190815260200160002060008c81526020019081526020016000209050600061010360008e815260200190815260200160002060008d81526020019081526020016000209050600061010160008f815260200190815260200160002060008e81526020019081526020016000209050600081600087815260200190815260200160002054905080600003610eab5783546001810185556000858152602080822090920188905585548882529185905260409020555b610eb58582613a3d565b600087815260208490526040908190209190915561010654905163e2ab691d60e01b81526001600160a01b039091169063e2ab691d90610efd908e908a908a90600401613a59565b600060405180830381600087803b158015610f1757600080fd5b505af1158015610f2b573d6000803e3d6000fd5b505050508489610f3b9190613a3d565b98508e8e8c6001600160a01b03167f3450704c38bdec5601ac92a1ae8d76e8e85278c42ca37b251b1bf1535952304a8989604051610f7a929190613a81565b60405180910390a45050505050508080610f9390613a9c565b915050610d9d565b5061010554604051630eaf58d760e21b81526001600160a01b0390911690633abd635c90610fce90600590600401613a03565b6020604051808303816000875af1158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190613ab9565b8211156110345760056040516327f04bff60e01b8152600401610a2a9190613a03565b604051879089907f16d56ff294ff25778acda367939faefd690cf3cade2a4cd49c825ff456b7dd7890600090a35050505050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110b35760405162461bcd60e51b8152600401610a2a90613717565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110fc600080516020614049833981519152546001600160a01b031690565b6001600160a01b0316146111225760405162461bcd60e51b8152600401610a2a90613770565b61112b826122c7565b610b60828260016122ee565b60008051602061409083398151915261114f8161219d565b61010554604051623bdf6f60e21b81526000916001600160a01b03169062ef7dbc9061117f908790600401612bb7565b600060405180830381865afa15801561119c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111c49190810190613b4f565b905060005b81518110156115d15760008282815181106111e6576111e6613a11565b60209081029190910101516101055460405163fb23146360e01b81529192506000916001600160a01b039091169063fb2314639061122a908a908690600401613a81565b602060405180830381865afa158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126b9190613b89565b600088815260fc6020908152604080832086845290915281209192505b815481101561138457600089815260fb602090815260408083208784529091528120835482908590859081106112c0576112c0613a11565b9060005260206000200154815260200190815260200160002054905061010860009054906101000a90046001600160a01b03166001600160a01b031663b5674c688585858154811061131457611314613a11565b9060005260206000200154846040518463ffffffff1660e01b815260040161133e93929190613a59565b600060405180830381600087803b15801561135857600080fd5b505af115801561136c573d6000803e3d6000fd5b5050505050808061137c90613baa565b915050611288565b50600088815260ff602090815260408083208684529091528120905b815481101561149e5760008a815260fe602090815260408083208884529091528120835482908590859081106113d8576113d8613a11565b9060005260206000200154815260200190815260200160002054905061010760009054906101000a90046001600160a01b03166001600160a01b031663317536e68685858154811061142c5761142c613a11565b9060005260206000200154848e6040518563ffffffff1660e01b81526004016114589493929190613bbd565b600060405180830381600087803b15801561147257600080fd5b505af1158015611486573d6000803e3d6000fd5b5050505050808061149690613baa565b9150506113a0565b506000898152610102602090815260408083208784529091528120905b81548110156115b85760008b8152610101602090815260408083208984529091528120835482908590859081106114f4576114f4613a11565b9060005260206000200154815260200190815260200160002054905061010660009054906101000a90046001600160a01b03166001600160a01b031663b5674c688785858154811061154857611548613a11565b9060005260206000200154846040518463ffffffff1660e01b815260040161157293929190613a59565b600060405180830381600087803b15801561158c57600080fd5b505af11580156115a0573d6000803e3d6000fd5b505050505080806115b090613baa565b9150506114bb565b50505050505080806115c990613baa565b9150506111c9565b5050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116225760405162461bcd60e51b8152600401610a2a90613c4c565b5060008051602061404983398151915290565b60fc60205282600052604060002060205281600052604060002081815481106108b757600080fd5b836001600160a01b038116331480159061168c575061168a60008051602061409083398151915233611b6b565b155b156116aa5760405163ea8e4eb560e01b815260040160405180910390fd5b6116b6838360016119f4565b600086815260ff602090815260408083208784528252808320898452610100835281842088855283528184208a855260fe84528285208986529093529220610976888484848a8a6001611c6f565b61172f6040518060800160405280600081526020016060815260200160608152602001606081525090565b60408051608081018252838152600085815260fc60209081528382208683528152908390208054845181840281018401909552808552929382850193909283018282801561179c57602002820191906000526020600020905b815481526020019060010190808311611788575b5050509183525050600085815260ff60209081526040808320878452825291829020805483518184028101840190945280845293820193909183018282801561180457602002820191906000526020600020905b8154815260200190600101908083116117f0575b5050509183525050600085815261010260209081526040808320878452825291829020805483518184028101840190945280845293820193909183018282801561186d57602002820191906000526020600020905b815481526020019060010190808311611859575b5050505050815250905092915050565b6000805160206140908339815191526118958161219d565b815160005b818110156119485760008482815181106118b6576118b6613a11565b60209081029190910181015161010954918101518151604080840151905163124d91e560e01b81529395506001600160a01b039094169363124d91e59361190293929190600401613a59565b600060405180830381600087803b15801561191c57600080fd5b505af1158015611930573d6000803e3d6000fd5b5050505050808061194090613baa565b91505061189a565b50505050565b836001600160a01b038116331480159061197d575061197b60008051602061409083398151915233611b6b565b155b1561199b5760405163ea8e4eb560e01b815260040160405180910390fd5b6119a7838360046119f4565b600086815260fc60209081526040808320878452825280832089845260fd835281842088855283528184208a855260fb84528285208986529093529220610976888484848a8a6004611c6f565b81518351146109cf57806040516327f04bff60e01b8152600401610a2a9190613a03565b816001600160a01b0381163314801590611a475750611a4560008051602061409083398151915233611b6b565b155b15611a655760405163ea8e4eb560e01b815260040160405180910390fd5b611a6e85612479565b611a798585856123d0565b611a8e8584868560000151866020015161194e565b611aa38584868560400151866060015161165d565b611ab885848685608001518660a001516108cd565b604051849086907f16d56ff294ff25778acda367939faefd690cf3cade2a4cd49c825ff456b7dd7890600090a35050505050565b600080516020614090833981519152611b048161219d565b61010854604051635a7542a760e11b81526001600160a01b039091169063b4ea854e90611b35908590600401613ce5565b600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206140b0833981519152611bae8161219d565b5061010780546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206140b0833981519152611bea8161219d565b5061010680546001600160a01b0319166001600160a01b0392909216919091179055565b600082815260656020526040902060010154611c298161219d565b6109cf8383612260565b6000805160206140b0833981519152611c4b8161219d565b5061010880546001600160a01b0319166001600160a01b0392909216919091179055565b825160005b818160ff161015612105576000858260ff1681518110611c9657611c96613a11565b602002602001015190506000858360ff1681518110611cb757611cb7613a11565b60200260200101519050600088600084815260200190815260200160002054905081600003611dd35780600003611cf0575050506120f3565b8a54600090611d0190600190613cf6565b905060008c8281548110611d1757611d17613a11565b906000526020600020015490508c805480611d3457611d34613d09565b60019003818190600052602060002001600090559055848114611da157600085815260208d905260409020548d5482908f9083908110611d7657611d76613a11565b6000918252602080832090910192909255878152908e90526040808220829055838252902055611db1565b600081815260208d905260408120555b600085815260208c90526040812055611dcc888f87866125ba565b50506120ef565b80600003611e0f578a5460018181018d5560008d8152602090209091018490558b54611dff9190613cf6565b600084815260208c905260409020555b600083815260208a90526040902082905581811115611e4e576000611e348383613cf6565b90508015611e4857611e48878e86846125ba565b506120ef565b6000611e5a8284613cf6565b905080156120ed576004876005811115611e7657611e766139bf565b03611ffc5761010860009054906101000a90046001600160a01b03166001600160a01b031663e2ab691d8e86846040518463ffffffff1660e01b8152600401611ec193929190613a59565b600060405180830381600087803b158015611edb57600080fd5b505af1158015611eef573d6000803e3d6000fd5b50505050600061010860009054906101000a90046001600160a01b03166001600160a01b031663595e5b8a8f876040518363ffffffff1660e01b8152600401611f39929190613d1f565b602060405180830381865afa158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a9190613ab9565b1115611ff75761010860009054906101000a90046001600160a01b03166001600160a01b03166325e1bb9c8e866040518363ffffffff1660e01b8152600401611fc4929190613d1f565b600060405180830381600087803b158015611fde57600080fd5b505af1158015611ff2573d6000803e3d6000fd5b505050505b6120ed565b6001876005811115612010576120106139bf565b0361205b5761010760009054906101000a90046001600160a01b03166001600160a01b031663e2ab691d8e86846040518463ffffffff1660e01b8152600401611fc493929190613a59565b600587600581111561206f5761206f6139bf565b036120ed5761010660009054906101000a90046001600160a01b03166001600160a01b031663e2ab691d8e86846040518463ffffffff1660e01b81526004016120ba93929190613a59565b600060405180830381600087803b1580156120d457600080fd5b505af11580156120e8573d6000803e3d6000fd5b505050505b505b5050505b806120fd81613a9c565b915050611c74565b5061010554604051630eaf58d760e21b81526001600160a01b0390911690633abd635c90612137908590600401613a03565b6020604051808303816000875af1158015612156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217a9190613ab9565b87541115610b2457816040516327f04bff60e01b8152600401610a2a9190613a03565b610c40813361270c565b6121b18282611b6b565b610b605760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556121e93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610b6082826121a7565b600054610100900460ff1661225e5760405162461bcd60e51b8152600401610a2a90613d75565b565b61226a8282611b6b565b15610b605760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6122d2600033611b6b565b610c405760405162461bcd60e51b8152600401610a2a90613da8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612321576109cf83612765565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561237b575060408051601f3d908101601f1916820190925261237891810190613ab9565b60015b6123975760405162461bcd60e51b8152600401610a2a90613e03565b60008051602061404983398151915281146123c45760405162461bcd60e51b8152600401610a2a90613e59565b506109cf8383836127bb565b61010554604051636093efcd60e01b81526000916001600160a01b031690636093efcd906124049087908790600401613a81565b602060405180830381865afa158015612421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124459190613b89565b9050806001600160a01b0316826001600160a01b0316146119485760405163ea8e4eb560e01b815260040160405180910390fd5b610104546040516308304c1360e11b81526000916001600160a01b0316906310609826906124ab908590600401612bb7565b600060405180830381865afa1580156124c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124f09190810190613985565b805190915060000361251557604051636b58927760e01b815260040160405180910390fd5b61010560009054906101000a90046001600160a01b03166001600160a01b031663a011bf0b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258d9190613ab9565b6125979042613a3d565b816080015111610b6057604051630c82e9dd60e41b815260040160405180910390fd5b60048460058111156125ce576125ce6139bf565b0361263f57610108546040516316ace98d60e31b81526001600160a01b039091169063b5674c689061260890869086908690600401613a59565b600060405180830381600087803b15801561262257600080fd5b505af1158015612636573d6000803e3d6000fd5b50505050611948565b6001846005811115612653576126536139bf565b0361269057610107546040516318ba9b7360e11b81526001600160a01b039091169063317536e69061260890869086908690600090600401613bbd565b60058460058111156126a4576126a46139bf565b0361194857610106546040516316ace98d60e31b81526001600160a01b039091169063b5674c68906126de90869086908690600401613a59565b600060405180830381600087803b1580156126f857600080fd5b505af1158015610b24573d6000803e3d6000fd5b6127168282611b6b565b610b6057612723816127e0565b61272e8360206127f2565b60405160200161273f929190613e8b565b60408051601f198184030181529082905262461bcd60e51b8252610a2a91600401613f15565b6001600160a01b0381163b61278c5760405162461bcd60e51b8152600401610a2a90613f70565b60008051602061404983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6127c483612964565b6000825111806127d15750805b156109cf5761194883836129a4565b60606108896001600160a01b03831660145b60606000612801836002613f80565b61280c906002613a3d565b6001600160401b0381111561282357612823612bfa565b6040519080825280601f01601f19166020018201604052801561284d576020820181803683370190505b509050600360fc1b8160008151811061286857612868613a11565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061289757612897613a11565b60200101906001600160f81b031916908160001a90535060006128bb846002613f80565b6128c6906001613a3d565b90505b600181111561293e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128fa576128fa613a11565b1a60f81b82828151811061291057612910613a11565b60200101906001600160f81b031916908160001a90535060049490941c9361293781613f9f565b90506128c9565b50831561295d5760405162461bcd60e51b8152600401610a2a90613fe8565b9392505050565b61296d81612765565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061295d8383604051806060016040528060278152602001614069602791396060600080856001600160a01b0316856040516129e19190613ff8565b600060405180830381855af49150503d8060008114612a1c576040519150601f19603f3d011682016040523d82523d6000602084013e612a21565b606091505b5091509150612a3286838387612a3c565b9695505050505050565b60608315612a7b578251600003612a74576001600160a01b0385163b612a745760405162461bcd60e51b8152600401610a2a90614038565b5081612a85565b612a858383612a8d565b949350505050565b815115612a9d5781518083602001fd5b8060405162461bcd60e51b8152600401610a2a9190613f15565b6001600160e01b031981165b8114610c4057600080fd5b803561088981612ab7565b600060208284031215612aee57612aee600080fd5b6000612a858484612ace565b8015155b82525050565b602081016108898284612afa565b60006001600160a01b038216610889565b600061088982612b12565b600061088982612b23565b612afe81612b2e565b602081016108898284612b39565b80612ac3565b803561088981612b50565b600080600060608486031215612b7957612b79600080fd5b6000612b858686612b56565b9350506020612b9686828701612b56565b9250506040612ba786828701612b56565b9150509250925092565b80612afe565b602081016108898284612bb1565b600060208284031215612bda57612bda600080fd5b6000612a858484612b56565b612ac381612b12565b803561088981612be6565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715612c3557612c35612bfa565b6040525050565b6000612c4760405190565b9050612c538282612c10565b919050565b60006001600160401b03821115612c7157612c71612bfa565b5060209081020190565b6000612c8e612c8984612c58565b612c3c565b83815290506020808201908402830185811115612cad57612cad600080fd5b835b81811015612cd15780612cc28882612b56565b84525060209283019201612caf565b5050509392505050565b600082601f830112612cef57612cef600080fd5b8135612a85848260208601612c7b565b600080600080600060a08688031215612d1a57612d1a600080fd5b6000612d268888612b56565b9550506020612d3788828901612bef565b9450506040612d4888828901612b56565b93505060608601356001600160401b03811115612d6757612d67600080fd5b612d7388828901612cdb565b92505060808601356001600160401b03811115612d9257612d92600080fd5b612d9e88828901612cdb565b9150509295509295909350565b60008060408385031215612dc157612dc1600080fd5b6000612dcd8585612b56565b9250506020612dde85828601612bef565b9150509250929050565b612ac381612b23565b803561088981612de8565b600080600080600080600060e0888a031215612e1a57612e1a600080fd5b6000612e268a8a612bef565b9750506020612e378a828b01612df1565b9650506040612e488a828b01612df1565b9550506060612e598a828b01612df1565b9450506080612e6a8a828b01612df1565b93505060a0612e7b8a828b01612df1565b92505060c0612e8c8a828b01612df1565b91505092959891949750929550565b600060208284031215612eb057612eb0600080fd5b6000612a858484612bef565b60008060008060808587031215612ed557612ed5600080fd5b6000612ee18787612b56565b9450506020612ef287828801612b56565b93505060408501356001600160401b03811115612f1157612f11600080fd5b612f1d87828801612cdb565b92505060608501356001600160401b03811115612f3c57612f3c600080fd5b612f4887828801612cdb565b91505092959194509250565b60006001600160401b03821115612f6d57612f6d612bfa565b601f19601f83011660200192915050565b82818337506000910152565b6000612f98612c8984612f54565b905082815260208101848484011115612fb357612fb3600080fd5b612fbe848285612f7e565b509392505050565b600082601f830112612fda57612fda600080fd5b8135612a85848260208601612f8a565b6000806040838503121561300057613000600080fd5b600061300c8585612bef565b92505060208301356001600160401b0381111561302b5761302b600080fd5b612dde85828601612fc6565b801515612ac3565b803561088981613037565b6000806040838503121561306057613060600080fd5b600061306c8585612b56565b9250506020612dde8582860161303f565b6000806040838503121561309357613093600080fd5b600061309f8585612b56565b9250506020612dde85828601612b56565b60006130bc8383612bb1565b505060200190565b60006130ce825190565b80845260209384019383018060005b838110156131025781516130f188826130b0565b9750602083019250506001016130dd565b509495945050505050565b805160009060808401906131218582612bb1565b506020830151848203602086015261313982826130c4565b9150506040830151848203604086015261315382826130c4565b9150506060830151848203606086015261316d82826130c4565b95945050505050565b6020808252810161295d818461310d565b60006060828403121561319c5761319c600080fd5b6131a66060612c3c565b905060006131b48484612b56565b82525060206131c584848301612bef565b60208301525060406131d984828501612b56565b60408301525092915050565b60006131f3612c8984612c58565b8381529050602081016060840283018581111561321257613212600080fd5b835b81811015612cd157806132278882613187565b845250602090920191606001613214565b600082601f83011261324c5761324c600080fd5b8135612a858482602086016131e5565b60006020828403121561327157613271600080fd5b81356001600160401b0381111561328a5761328a600080fd5b612a8584828501613238565b60068110610c4057600080fd5b803561088981613296565b6000806000606084860312156132c6576132c6600080fd5b83356001600160401b038111156132df576132df600080fd5b6132eb86828701612cdb565b93505060208401356001600160401b0381111561330a5761330a600080fd5b61331686828701612cdb565b9250506040612ba7868287016132a3565b600060c0828403121561333c5761333c600080fd5b61334660c0612c3c565b905081356001600160401b0381111561336157613361600080fd5b61336d84828501612cdb565b82525060208201356001600160401b0381111561338c5761338c600080fd5b61339884828501612cdb565b60208301525060408201356001600160401b038111156133ba576133ba600080fd5b6133c684828501612cdb565b60408301525060608201356001600160401b038111156133e8576133e8600080fd5b6133f484828501612cdb565b60608301525060808201356001600160401b0381111561341657613416600080fd5b61342284828501612cdb565b60808301525060a08201356001600160401b0381111561344457613444600080fd5b61345084828501612cdb565b60a08301525092915050565b6000806000806080858703121561347557613475600080fd5b60006134818787612b56565b945050602061349287828801612b56565b93505060406134a387828801612bef565b92505060608501356001600160401b038111156134c2576134c2600080fd5b612f4887828801613327565b6000606082840312156134e3576134e3600080fd5b6134ed6060612c3c565b905060006134fb8484612b56565b825250602061350c84848301612b56565b60208301525060406131d984828501612bef565b600061352e612c8984612c58565b8381529050602081016060840283018581111561354d5761354d600080fd5b835b81811015612cd1578061356288826134ce565b84525060209092019160600161354f565b600082601f83011261358757613587600080fd5b8135612a85848260208601613520565b6000602082840312156135ac576135ac600080fd5b81356001600160401b038111156135c5576135c5600080fd5b612a8584828501613573565b6000602082840312156135e6576135e6600080fd5b6000612a858484612df1565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291505b5060400190565b60208082528101610889816135f2565b600060ff8216610889565b612afe81613650565b60208101610889828461365b565b602f81526000602082017f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636581526e103937b632b9903337b91039b2b63360891b60208201529150613639565b6020808252810161088981613672565b602c81526000602082017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b19195b1959d85d1958d85b1b60a21b60208201529150613639565b60208082528101610889816136ce565b602c81526000602082017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b6163746976652070726f787960a01b60208201529150613639565b6020808252810161088981613727565b805161088981612b50565b60038110610c4057600080fd5b80516108898161378b565b60005b838110156137be5781810151838201526020016137a6565b50506000910152565b60006137d5612c8984612f54565b9050828152602081018484840111156137f0576137f0600080fd5b612fbe8482856137a3565b600082601f83011261380f5761380f600080fd5b8151612a858482602086016137c7565b805161088981613296565b805161088981612be6565b6000610180828403121561384b5761384b600080fd5b613856610180612c3c565b905060006138648484613780565b825250602061387584848301613780565b602083015250604061388984828501613798565b604083015250606061389d84828501613780565b60608301525060806138b184828501613780565b60808301525060a06138c584828501613780565b60a08301525060c06138d984828501613780565b60c08301525060e08201516001600160401b038111156138fb576138fb600080fd5b613907848285016137fb565b60e08301525061010061391c8482850161381f565b610100830152506101208201516001600160401b0381111561394057613940600080fd5b61394c848285016137fb565b610120830152506101406139628482850161382a565b610140830152506101606139788482850161382a565b6101608301525092915050565b60006020828403121561399a5761399a600080fd5b81516001600160401b038111156139b3576139b3600080fd5b612a8584828501613835565b634e487b7160e01b600052602160045260246000fd5b60068110610c4057610c406139bf565b80612c53816139d5565b6000610889826139e5565b612afe816139ef565b6020810161088982846139fa565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561088957610889613a27565b612afe81612b12565b60608101613a678286613a50565b613a746020830185612bb1565b612a856040830184612bb1565b60408101613a8f8285612bb1565b61295d6020830184612bb1565b60ff16600060fe198201613ab257613ab2613a27565b5060010190565b600060208284031215613ace57613ace600080fd5b6000612a858484613780565b6000613ae8612c8984612c58565b83815290506020808201908402830185811115613b0757613b07600080fd5b835b81811015612cd15780613b1c8882613780565b84525060209283019201613b09565b600082601f830112613b3f57613b3f600080fd5b8151612a85848260208601613ada565b600060208284031215613b6457613b64600080fd5b81516001600160401b03811115613b7d57613b7d600080fd5b612a8584828501613b2b565b600060208284031215613b9e57613b9e600080fd5b6000612a85848461382a565b60006000198203613ab257613ab2613a27565b60808101613bcb8287613a50565b613bd86020830186612bb1565b613be56040830185612bb1565b61316d6060830184612afa565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c81527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060208201529150613639565b6020808252810161088981613bf2565b80516060830190613c6d8482612bb1565b506020820151613c806020850182612bb1565b5060408201516119486040850182613a50565b6000613c9f8383613c5c565b505060600190565b6000613cb1825190565b80845260209384019383018060005b83811015613102578151613cd48882613c93565b975060208301925050600101613cc0565b6020808252810161295d8184613ca7565b8181038181111561088957610889613a27565b634e487b7160e01b600052603160045260246000fd5b60408101613a8f8285613a50565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150613639565b6020808252810161088981613d2d565b60098152600060208201682727aa2fa7aba722a960b91b815291505b5060200190565b6020808252810161088981613d85565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b60208201529150613639565b6020808252810161088981613db8565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b60208201529150613639565b6020808252810161088981613e13565b6000613e73825190565b613e818185602086016137a3565b9290920192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526017016000613ebd8285613e69565b7001034b99036b4b9b9b4b733903937b6329607d1b81526011019150612a858284613e69565b6000613eed825190565b808452602084019350613f048185602086016137a3565b601f01601f19169290920192915050565b6020808252810161295d8184613ee3565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529150613639565b6020808252810161088981613f26565b818102808215838204851417613f9857613f98613a27565b5092915050565b600081613fae57613fae613a27565b506000190190565b60208082527f537472696e67733a20686578206c656e67746820696e73756666696369656e7491019081526000613da1565b6020808252810161088981613fb6565b600061295d8284613e69565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150613da1565b602080825281016108898161400456fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564b1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf99819a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220b016ab4087c1d579f8c3d874f698a44ee2e78bb647c9aa9cc93d88ca29bceedc64736f6c63430008110033