@magic-xpa/engine 4.1000.410-0.428 → 4.1100.0-dev000.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (492) hide show
  1. package/README.md +7 -7
  2. package/{esm2020 → esm2022}/index.mjs +187 -187
  3. package/{esm2020 → esm2022}/magic-xpa-engine.mjs +1 -1
  4. package/esm2022/src/AccessHelper.mjs +15 -0
  5. package/esm2022/src/ClientManager.mjs +421 -0
  6. package/esm2022/src/CommandsProcessorBase.mjs +56 -0
  7. package/{esm2020 → esm2022}/src/CommandsProcessorManager.mjs +25 -25
  8. package/esm2022/src/CommandsTable.mjs +162 -0
  9. package/esm2022/src/ConstInterface.mjs +517 -0
  10. package/{esm2020 → esm2022}/src/CurrentClientVersion.mjs +2 -2
  11. package/esm2022/src/FlowMonitorInterface.mjs +16 -0
  12. package/esm2022/src/GUIManager.mjs +62 -0
  13. package/esm2022/src/GlobalCommandsManager.mjs +34 -0
  14. package/esm2022/src/GuiEventsProcessor.mjs +156 -0
  15. package/{esm2020 → esm2022}/src/ICommandsTable.mjs +1 -1
  16. package/esm2022/src/ServerConfig.mjs +122 -0
  17. package/{esm2020 → esm2022}/src/bridge/IGuiEvent.mjs +19 -19
  18. package/esm2022/src/bridge/MagicBridge.mjs +41 -0
  19. package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +12 -0
  20. package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +8 -8
  21. package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -9
  22. package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -9
  23. package/esm2022/src/commands/ClientToServer/BrowserEscEventCommand.mjs +26 -0
  24. package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommand.mjs +14 -14
  25. package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +59 -59
  26. package/esm2022/src/commands/ClientToServer/ColumnSortEventCommand.mjs +29 -0
  27. package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +261 -0
  28. package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +67 -0
  29. package/esm2022/src/commands/ClientToServer/ComputeEventCommand.mjs +26 -0
  30. package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +24 -21
  31. package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +23 -20
  32. package/{esm2020 → esm2022}/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -8
  33. package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
  34. package/{esm2020 → esm2022}/src/commands/ClientToServer/DataviewCommand.mjs +44 -44
  35. package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +40 -0
  36. package/{esm2020 → esm2022}/src/commands/ClientToServer/EventCommand.mjs +43 -40
  37. package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +70 -0
  38. package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +25 -0
  39. package/{esm2020 → esm2022}/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +10 -10
  40. package/{esm2020 → esm2022}/src/commands/ClientToServer/ICommandTaskTag.mjs +1 -1
  41. package/esm2022/src/commands/ClientToServer/IndexChangeEventCommand.mjs +24 -0
  42. package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +26 -0
  43. package/{esm2020 → esm2022}/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +26 -23
  44. package/{esm2020 → esm2022}/src/commands/ClientToServer/QueryCommand.mjs +20 -20
  45. package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +30 -0
  46. package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +30 -0
  47. package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +27 -0
  48. package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +43 -0
  49. package/esm2022/src/commands/ClientToServer/SelectProgramCommand.mjs +19 -0
  50. package/{esm2020 → esm2022}/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -9
  51. package/esm2022/src/commands/ClientToServer/SubformOpenEventCommand.mjs +24 -0
  52. package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +27 -0
  53. package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +34 -0
  54. package/{esm2020 → esm2022}/src/commands/ClientToServer/UnloadCommand.mjs +18 -15
  55. package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
  56. package/esm2022/src/commands/DataViewCommandBase.mjs +8 -0
  57. package/{esm2020 → esm2022}/src/commands/IClientCommand.mjs +1 -1
  58. package/esm2022/src/commands/IClientTargetedCommand.mjs +13 -0
  59. package/{esm2020 → esm2022}/src/commands/IClientToServerCommandInfo.mjs +2 -2
  60. package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +65 -0
  61. package/{esm2020 → esm2022}/src/commands/ServerToClient/AddLocateCommand.mjs +21 -21
  62. package/{esm2020 → esm2022}/src/commands/ServerToClient/AddRangeCommand.mjs +62 -62
  63. package/{esm2020 → esm2022}/src/commands/ServerToClient/AddSortCommand.mjs +33 -33
  64. package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
  65. package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +24 -0
  66. package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
  67. package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
  68. package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetLocateCommand.mjs +14 -14
  69. package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetRangeCommand.mjs +14 -14
  70. package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetSortCommand.mjs +14 -14
  71. package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +37 -0
  72. package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
  73. package/{esm2020 → esm2022}/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -132
  74. package/{esm2020 → esm2022}/src/communications/IConnectionStateManager.mjs +1 -1
  75. package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +15 -0
  76. package/{esm2020 → esm2022}/src/data/DataSourceIdKey.mjs +2 -2
  77. package/esm2022/src/data/DataView.mjs +1613 -0
  78. package/{esm2020 → esm2022}/src/data/DataViewBase.mjs +3 -3
  79. package/esm2022/src/data/DataviewManager.mjs +28 -0
  80. package/esm2022/src/data/DataviewManagerBase.mjs +15 -0
  81. package/esm2022/src/data/DvCache.mjs +67 -0
  82. package/esm2022/src/data/Field.mjs +646 -0
  83. package/esm2022/src/data/FieldBase.mjs +15 -0
  84. package/esm2022/src/data/FieldsTable.mjs +103 -0
  85. package/{esm2020 → esm2022}/src/data/IRecordsTable.mjs +1 -1
  86. package/{esm2020 → esm2022}/src/data/Key.mjs +88 -88
  87. package/esm2022/src/data/Record.mjs +880 -0
  88. package/{esm2020 → esm2022}/src/data/RecordOutOfDataViewException.mjs +15 -15
  89. package/esm2022/src/data/RecordsTable.mjs +267 -0
  90. package/{esm2020 → esm2022}/src/data/TaskTransactionManager.mjs +107 -103
  91. package/{esm2020 → esm2022}/src/data/XMLBasedDcValuesBuilder.mjs +74 -74
  92. package/{esm2020 → esm2022}/src/enums.mjs +23 -23
  93. package/esm2022/src/env/EnvVariablesTable.mjs +340 -0
  94. package/esm2022/src/env/Environment.mjs +487 -0
  95. package/{esm2020 → esm2022}/src/env/ILanguageData.mjs +1 -1
  96. package/esm2022/src/env/LanguageData.mjs +227 -0
  97. package/{esm2020 → esm2022}/src/env/MirrorString.mjs +65 -65
  98. package/esm2022/src/event/ActionManager.mjs +91 -0
  99. package/esm2022/src/event/Event.mjs +1333 -0
  100. package/esm2022/src/event/EventHandler.mjs +766 -0
  101. package/esm2022/src/event/EventHandlerPosition.mjs +204 -0
  102. package/esm2022/src/event/EventsManager.mjs +2988 -0
  103. package/{esm2020 → esm2022}/src/event/IEventsManager.mjs +6 -6
  104. package/esm2022/src/event/RunTimeEvent.mjs +399 -0
  105. package/{esm2020 → esm2022}/src/event/RunTimeEventBase.mjs +3 -3
  106. package/esm2022/src/event/UserEventsTable.mjs +47 -0
  107. package/esm2022/src/exp/ExpTable.mjs +57 -0
  108. package/esm2022/src/exp/Expression.mjs +200 -0
  109. package/esm2022/src/exp/ExpressionDict.mjs +727 -0
  110. package/esm2022/src/exp/ExpressionEvaluator.mjs +4206 -0
  111. package/esm2022/src/exp/ExpressionLocalJpn.mjs +314 -0
  112. package/{esm2020 → esm2022}/src/exp/GlobalParamsTable.mjs +85 -85
  113. package/esm2022/src/exp/YesNoExp.mjs +36 -0
  114. package/esm2022/src/gui/CreatedFormVector.mjs +23 -0
  115. package/esm2022/src/gui/FormsTable.mjs +66 -0
  116. package/esm2022/src/gui/MgControl.mjs +363 -0
  117. package/esm2022/src/gui/MgForm.mjs +1224 -0
  118. package/esm2022/src/http/HttpManager.mjs +97 -0
  119. package/esm2022/src/http/client/HttpClientAsync.mjs +68 -0
  120. package/{esm2020 → esm2022}/src/http/client/HttpClientBase.mjs +132 -132
  121. package/esm2022/src/http/client/HttpClientEvents.mjs +39 -0
  122. package/esm2022/src/http/client/HttpClientSync.mjs +42 -0
  123. package/esm2022/src/http/client/HttpUtility.mjs +84 -0
  124. package/{esm2020 → esm2022}/src/http/client/ICommunicationsFailureHandler.mjs +1 -1
  125. package/{esm2020 → esm2022}/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -18
  126. package/{esm2020 → esm2022}/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -18
  127. package/{esm2020 → esm2022}/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -18
  128. package/esm2022/src/remote/RemoteCommandsProcessor.mjs +883 -0
  129. package/{esm2020 → esm2022}/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -25
  130. package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandBase.mjs +24 -24
  131. package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandFactory.mjs +60 -60
  132. package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +15 -15
  133. package/{esm2020 → esm2022}/src/remote/RemoteDataviewManager.mjs +17 -17
  134. package/{esm2020 → esm2022}/src/remote/RemoteInitDataViewCommand.mjs +10 -10
  135. package/{esm2020 → esm2022}/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +16 -16
  136. package/{esm2020 → esm2022}/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +12 -12
  137. package/{esm2020 → esm2022}/src/remote/ResetUserSortRemoteDataviewCommand.mjs +15 -15
  138. package/esm2022/src/remote/ServerError.mjs +40 -0
  139. package/{esm2020 → esm2022}/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +19 -19
  140. package/esm2022/src/rt/Argument.mjs +265 -0
  141. package/esm2022/src/rt/ArgumentsList.mjs +103 -0
  142. package/esm2022/src/rt/Boundary.mjs +152 -0
  143. package/esm2022/src/rt/CompMainPrgTable.mjs +63 -0
  144. package/esm2022/src/rt/DataviewHeaderBase.mjs +98 -0
  145. package/{esm2020 → esm2022}/src/rt/DataviewHeaderFactory.mjs +6 -6
  146. package/esm2022/src/rt/DataviewHeaders.mjs +53 -0
  147. package/{esm2020 → esm2022}/src/rt/DataviewHeadersSaxHandler.mjs +38 -38
  148. package/{esm2020 → esm2022}/src/rt/ExecutionStack.mjs +94 -94
  149. package/{esm2020 → esm2022}/src/rt/ExecutionStackEntry.mjs +17 -17
  150. package/{esm2020 → esm2022}/src/rt/HandlersTable.mjs +96 -96
  151. package/{esm2020 → esm2022}/src/rt/IDataSourceViewDefinition.mjs +1 -1
  152. package/{esm2020 → esm2022}/src/rt/IDataviewHeader.mjs +1 -1
  153. package/{esm2020 → esm2022}/src/rt/IResultValue.mjs +1 -1
  154. package/esm2022/src/rt/LastFocusedManager.mjs +65 -0
  155. package/esm2022/src/rt/Operation.mjs +735 -0
  156. package/esm2022/src/rt/OperationTable.mjs +67 -0
  157. package/esm2022/src/rt/Recompute.mjs +355 -0
  158. package/{esm2020 → esm2022}/src/rt/RecomputeTable.mjs +62 -62
  159. package/{esm2020 → esm2022}/src/rt/RemoteDataviewHeader.mjs +108 -108
  160. package/esm2022/src/rt/ResultValue.mjs +10 -0
  161. package/esm2022/src/rt/TableCache.mjs +177 -0
  162. package/esm2022/src/rt/TableCacheManager.mjs +67 -0
  163. package/esm2022/src/rt/Transaction.mjs +53 -0
  164. package/esm2022/src/security/UserDetails.mjs +71 -0
  165. package/{esm2020 → esm2022}/src/tasks/IMGDataCollection.mjs +1 -1
  166. package/esm2022/src/tasks/MGData.mjs +552 -0
  167. package/esm2022/src/tasks/MGDataCollection.mjs +252 -0
  168. package/esm2022/src/tasks/RCTimer.mjs +63 -0
  169. package/{esm2020 → esm2022}/src/tasks/RemoteTaskService.mjs +44 -44
  170. package/esm2022/src/tasks/Task.mjs +2499 -0
  171. package/esm2022/src/tasks/TaskBase.mjs +83 -0
  172. package/{esm2020 → esm2022}/src/tasks/TaskServiceBase.mjs +24 -24
  173. package/esm2022/src/tasks/TasksTable.mjs +80 -0
  174. package/esm2022/src/tasks/sort/Sort.mjs +5 -0
  175. package/{esm2020 → esm2022}/src/tasks/sort/SortCollection.mjs +67 -67
  176. package/{esm2020 → esm2022}/src/util/ConstUtils.mjs +13 -13
  177. package/esm2022/src/util/FlowMonitorQueue.mjs +451 -0
  178. package/{esm2020 → esm2022}/src/util/HeapSort.mjs +69 -69
  179. package/{esm2020 → esm2022}/src/util/IMirrorXML.mjs +1 -1
  180. package/{esm2020 → esm2022}/src/util/IServerConfig.mjs +1 -1
  181. package/{esm2020 → esm2022}/src/util/MgBlockingQueue.mjs +1 -1
  182. package/esm2022/src/util/MgPriorityBlockingQueue.mjs +74 -0
  183. package/esm2022/src/util/MgPriorityQueue.mjs +66 -0
  184. package/{esm2020 → esm2022}/src/util/ParamParseResult.mjs +7 -7
  185. package/esm2022/src/util/PrmMap.mjs +152 -0
  186. package/esm2022/src/util/ReturnResult.mjs +46 -0
  187. package/esm2022/src/util/ReturnResultBase.mjs +18 -0
  188. package/esm2022/src/util/Scrambler.mjs +89 -0
  189. package/esm2022/src/util/UniqueIDUtils.mjs +13 -0
  190. package/{esm2020 → esm2022}/src/util/cookie.service.mjs +92 -92
  191. package/{fesm2020 → fesm2022}/magic-xpa-engine.mjs +29888 -29717
  192. package/fesm2022/magic-xpa-engine.mjs.map +1 -0
  193. package/index.d.ts +187 -187
  194. package/package.json +8 -14
  195. package/src/AccessHelper.d.ts +20 -20
  196. package/src/ClientManager.d.ts +35 -32
  197. package/src/CommandsProcessorBase.d.ts +23 -23
  198. package/src/CommandsProcessorManager.d.ts +6 -6
  199. package/src/CommandsTable.d.ts +22 -22
  200. package/src/ConstInterface.d.ts +516 -515
  201. package/src/CurrentClientVersion.d.ts +1 -1
  202. package/src/FlowMonitorInterface.d.ts +15 -15
  203. package/src/GUIManager.d.ts +17 -17
  204. package/src/GlobalCommandsManager.d.ts +17 -17
  205. package/src/GuiEventsProcessor.d.ts +24 -24
  206. package/src/ICommandsTable.d.ts +9 -9
  207. package/src/ServerConfig.d.ts +35 -34
  208. package/src/bridge/IGuiEvent.d.ts +19 -19
  209. package/src/bridge/MagicBridge.d.ts +16 -16
  210. package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -8
  211. package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -4
  212. package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -6
  213. package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -6
  214. package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +9 -8
  215. package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -8
  216. package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -6
  217. package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +11 -10
  218. package/src/commands/ClientToServer/CommandFactory.d.ts +64 -64
  219. package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -20
  220. package/src/commands/ClientToServer/ComputeEventCommand.d.ts +9 -8
  221. package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +8 -7
  222. package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +8 -7
  223. package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -6
  224. package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -9
  225. package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -32
  226. package/src/commands/ClientToServer/EvaluateCommand.d.ts +16 -15
  227. package/src/commands/ClientToServer/EventCommand.d.ts +16 -15
  228. package/src/commands/ClientToServer/ExecOperCommand.d.ts +24 -23
  229. package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +9 -8
  230. package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -5
  231. package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -3
  232. package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +9 -8
  233. package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +11 -10
  234. package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +9 -8
  235. package/src/commands/ClientToServer/QueryCommand.d.ts +8 -8
  236. package/src/commands/ClientToServer/RecomputeCommand.d.ts +12 -11
  237. package/src/commands/ClientToServer/RefreshEventCommand.d.ts +13 -12
  238. package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +11 -10
  239. package/src/commands/ClientToServer/RollbackEventCommand.d.ts +15 -14
  240. package/src/commands/ClientToServer/SelectProgramCommand.d.ts +7 -6
  241. package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -5
  242. package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +9 -8
  243. package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +10 -9
  244. package/src/commands/ClientToServer/TransactionCommand.d.ts +14 -12
  245. package/src/commands/ClientToServer/UnloadCommand.d.ts +8 -7
  246. package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -6
  247. package/src/commands/DataViewCommandBase.d.ts +6 -6
  248. package/src/commands/IClientCommand.d.ts +2 -2
  249. package/src/commands/IClientTargetedCommand.d.ts +12 -12
  250. package/src/commands/IClientToServerCommandInfo.d.ts +4 -3
  251. package/src/commands/ServerToClient/AbortCommand.d.ts +11 -11
  252. package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -6
  253. package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -10
  254. package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -9
  255. package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -7
  256. package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -12
  257. package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -13
  258. package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -21
  259. package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -6
  260. package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -6
  261. package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -6
  262. package/src/commands/ServerToClient/ResultCommand.d.ts +10 -10
  263. package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -17
  264. package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -11
  265. package/src/communications/IConnectionStateManager.d.ts +4 -4
  266. package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -6
  267. package/src/data/DataSourceIdKey.d.ts +2 -2
  268. package/src/data/DataView.d.ts +162 -162
  269. package/src/data/DataViewBase.d.ts +12 -12
  270. package/src/data/DataviewManager.d.ts +14 -14
  271. package/src/data/DataviewManagerBase.d.ts +11 -11
  272. package/src/data/DvCache.d.ts +15 -15
  273. package/src/data/Field.d.ts +103 -103
  274. package/src/data/FieldBase.d.ts +23 -23
  275. package/src/data/FieldsTable.d.ts +27 -27
  276. package/src/data/IRecordsTable.d.ts +7 -7
  277. package/src/data/Key.d.ts +15 -15
  278. package/src/data/Record.d.ts +157 -156
  279. package/src/data/RecordOutOfDataViewException.d.ts +10 -10
  280. package/src/data/RecordsTable.d.ts +38 -38
  281. package/src/data/TaskTransactionManager.d.ts +17 -17
  282. package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -11
  283. package/src/enums.d.ts +21 -21
  284. package/src/env/EnvVariablesTable.d.ts +17 -17
  285. package/src/env/Environment.d.ts +118 -118
  286. package/src/env/ILanguageData.d.ts +3 -3
  287. package/src/env/LanguageData.d.ts +20 -20
  288. package/src/env/MirrorString.d.ts +15 -15
  289. package/src/event/ActionManager.d.ts +14 -14
  290. package/src/event/Event.d.ts +79 -79
  291. package/src/event/EventHandler.d.ts +66 -66
  292. package/src/event/EventHandlerPosition.d.ts +25 -25
  293. package/src/event/EventsManager.d.ts +205 -205
  294. package/src/event/IEventsManager.d.ts +77 -77
  295. package/src/event/RunTimeEvent.d.ts +126 -126
  296. package/src/event/RunTimeEventBase.d.ts +5 -5
  297. package/src/event/UserEventsTable.d.ts +11 -11
  298. package/src/exp/ExpTable.d.ts +11 -11
  299. package/src/exp/Expression.d.ts +37 -37
  300. package/src/exp/ExpressionDict.d.ts +12 -12
  301. package/src/exp/ExpressionEvaluator.d.ts +198 -198
  302. package/src/exp/ExpressionLocalJpn.d.ts +18 -18
  303. package/src/exp/GlobalParamsTable.d.ts +19 -19
  304. package/src/exp/YesNoExp.d.ts +9 -9
  305. package/src/gui/CreatedFormVector.d.ts +10 -10
  306. package/src/gui/FormsTable.d.ts +15 -15
  307. package/src/gui/MgControl.d.ts +60 -60
  308. package/src/gui/MgForm.d.ts +96 -93
  309. package/src/http/HttpManager.d.ts +25 -25
  310. package/src/http/client/HttpClientAsync.d.ts +16 -16
  311. package/src/http/client/HttpClientBase.d.ts +30 -30
  312. package/src/http/client/HttpClientEvents.d.ts +18 -18
  313. package/src/http/client/HttpClientSync.d.ts +17 -17
  314. package/src/http/client/HttpUtility.d.ts +10 -10
  315. package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -5
  316. package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -8
  317. package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -8
  318. package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -8
  319. package/src/remote/RemoteCommandsProcessor.d.ts +51 -51
  320. package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -8
  321. package/src/remote/RemoteDataViewCommandBase.d.ts +10 -10
  322. package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -6
  323. package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -8
  324. package/src/remote/RemoteDataviewManager.d.ts +9 -9
  325. package/src/remote/RemoteInitDataViewCommand.d.ts +7 -7
  326. package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -7
  327. package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -7
  328. package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -7
  329. package/src/remote/ServerError.d.ts +16 -16
  330. package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -8
  331. package/src/rt/Argument.d.ts +36 -36
  332. package/src/rt/ArgumentsList.d.ts +24 -24
  333. package/src/rt/Boundary.d.ts +27 -27
  334. package/src/rt/CompMainPrgTable.d.ts +10 -10
  335. package/src/rt/DataviewHeaderBase.d.ts +34 -34
  336. package/src/rt/DataviewHeaderFactory.d.ts +5 -5
  337. package/src/rt/DataviewHeaders.d.ts +12 -12
  338. package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -10
  339. package/src/rt/ExecutionStack.d.ts +22 -22
  340. package/src/rt/ExecutionStackEntry.d.ts +7 -7
  341. package/src/rt/HandlersTable.d.ts +19 -19
  342. package/src/rt/IDataSourceViewDefinition.d.ts +6 -6
  343. package/src/rt/IDataviewHeader.d.ts +10 -10
  344. package/src/rt/IResultValue.d.ts +4 -4
  345. package/src/rt/LastFocusedManager.d.ts +23 -23
  346. package/src/rt/Operation.d.ts +97 -97
  347. package/src/rt/OperationTable.d.ts +15 -15
  348. package/src/rt/Recompute.d.ts +41 -41
  349. package/src/rt/RecomputeTable.d.ts +9 -9
  350. package/src/rt/RemoteDataviewHeader.d.ts +14 -14
  351. package/src/rt/ResultValue.d.ts +7 -7
  352. package/src/rt/TableCache.d.ts +29 -29
  353. package/src/rt/TableCacheManager.d.ts +10 -10
  354. package/src/rt/Transaction.d.ts +23 -23
  355. package/src/security/UserDetails.d.ts +16 -16
  356. package/src/tasks/IMGDataCollection.d.ts +26 -26
  357. package/src/tasks/MGData.d.ts +63 -63
  358. package/src/tasks/MGDataCollection.d.ts +42 -42
  359. package/src/tasks/RCTimer.d.ts +13 -13
  360. package/src/tasks/RemoteTaskService.d.ts +16 -16
  361. package/src/tasks/Task.d.ts +312 -312
  362. package/src/tasks/TaskBase.d.ts +123 -123
  363. package/src/tasks/TaskServiceBase.d.ts +16 -16
  364. package/src/tasks/TasksTable.d.ts +21 -21
  365. package/src/tasks/sort/Sort.d.ts +4 -4
  366. package/src/tasks/sort/SortCollection.d.ts +11 -11
  367. package/src/util/ConstUtils.d.ts +3 -3
  368. package/src/util/FlowMonitorQueue.d.ts +70 -70
  369. package/src/util/HeapSort.d.ts +6 -6
  370. package/src/util/IMirrorXML.d.ts +6 -6
  371. package/src/util/IServerConfig.d.ts +11 -11
  372. package/src/util/MgBlockingQueue.d.ts +5 -5
  373. package/src/util/MgPriorityBlockingQueue.d.ts +17 -17
  374. package/src/util/MgPriorityQueue.d.ts +13 -13
  375. package/src/util/ParamParseResult.d.ts +6 -6
  376. package/src/util/PrmMap.d.ts +28 -28
  377. package/src/util/ReturnResult.d.ts +18 -18
  378. package/src/util/ReturnResultBase.d.ts +11 -11
  379. package/src/util/Scrambler.d.ts +10 -10
  380. package/src/util/UniqueIDUtils.d.ts +4 -4
  381. package/src/util/cookie.service.d.ts +8 -8
  382. package/esm2020/src/AccessHelper.mjs +0 -9
  383. package/esm2020/src/ClientManager.mjs +0 -402
  384. package/esm2020/src/CommandsProcessorBase.mjs +0 -58
  385. package/esm2020/src/CommandsTable.mjs +0 -162
  386. package/esm2020/src/ConstInterface.mjs +0 -516
  387. package/esm2020/src/FlowMonitorInterface.mjs +0 -16
  388. package/esm2020/src/GUIManager.mjs +0 -62
  389. package/esm2020/src/GlobalCommandsManager.mjs +0 -34
  390. package/esm2020/src/GuiEventsProcessor.mjs +0 -154
  391. package/esm2020/src/ServerConfig.mjs +0 -117
  392. package/esm2020/src/bridge/MagicBridge.mjs +0 -41
  393. package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -11
  394. package/esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs +0 -23
  395. package/esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs +0 -26
  396. package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +0 -260
  397. package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -69
  398. package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +0 -23
  399. package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
  400. package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +0 -36
  401. package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +0 -67
  402. package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -22
  403. package/esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs +0 -21
  404. package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -23
  405. package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +0 -27
  406. package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -27
  407. package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -24
  408. package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -39
  409. package/esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs +0 -15
  410. package/esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs +0 -21
  411. package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -24
  412. package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +0 -28
  413. package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
  414. package/esm2020/src/commands/DataViewCommandBase.mjs +0 -10
  415. package/esm2020/src/commands/IClientTargetedCommand.mjs +0 -9
  416. package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +0 -65
  417. package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
  418. package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -27
  419. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
  420. package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
  421. package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +0 -37
  422. package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
  423. package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -17
  424. package/esm2020/src/data/DataView.mjs +0 -1610
  425. package/esm2020/src/data/DataviewManager.mjs +0 -28
  426. package/esm2020/src/data/DataviewManagerBase.mjs +0 -15
  427. package/esm2020/src/data/DvCache.mjs +0 -67
  428. package/esm2020/src/data/Field.mjs +0 -646
  429. package/esm2020/src/data/FieldBase.mjs +0 -18
  430. package/esm2020/src/data/FieldsTable.mjs +0 -103
  431. package/esm2020/src/data/Record.mjs +0 -846
  432. package/esm2020/src/data/RecordsTable.mjs +0 -267
  433. package/esm2020/src/env/EnvVariablesTable.mjs +0 -340
  434. package/esm2020/src/env/Environment.mjs +0 -489
  435. package/esm2020/src/env/LanguageData.mjs +0 -226
  436. package/esm2020/src/event/ActionManager.mjs +0 -91
  437. package/esm2020/src/event/Event.mjs +0 -1333
  438. package/esm2020/src/event/EventHandler.mjs +0 -766
  439. package/esm2020/src/event/EventHandlerPosition.mjs +0 -204
  440. package/esm2020/src/event/EventsManager.mjs +0 -2988
  441. package/esm2020/src/event/RunTimeEvent.mjs +0 -399
  442. package/esm2020/src/event/UserEventsTable.mjs +0 -47
  443. package/esm2020/src/exp/ExpTable.mjs +0 -59
  444. package/esm2020/src/exp/Expression.mjs +0 -200
  445. package/esm2020/src/exp/ExpressionDict.mjs +0 -727
  446. package/esm2020/src/exp/ExpressionEvaluator.mjs +0 -4212
  447. package/esm2020/src/exp/ExpressionLocalJpn.mjs +0 -314
  448. package/esm2020/src/exp/YesNoExp.mjs +0 -36
  449. package/esm2020/src/gui/CreatedFormVector.mjs +0 -23
  450. package/esm2020/src/gui/FormsTable.mjs +0 -66
  451. package/esm2020/src/gui/MgControl.mjs +0 -353
  452. package/esm2020/src/gui/MgForm.mjs +0 -1181
  453. package/esm2020/src/http/HttpManager.mjs +0 -97
  454. package/esm2020/src/http/client/HttpClientAsync.mjs +0 -67
  455. package/esm2020/src/http/client/HttpClientEvents.mjs +0 -39
  456. package/esm2020/src/http/client/HttpClientSync.mjs +0 -42
  457. package/esm2020/src/http/client/HttpUtility.mjs +0 -84
  458. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +0 -880
  459. package/esm2020/src/remote/ServerError.mjs +0 -40
  460. package/esm2020/src/rt/Argument.mjs +0 -265
  461. package/esm2020/src/rt/ArgumentsList.mjs +0 -103
  462. package/esm2020/src/rt/Boundary.mjs +0 -152
  463. package/esm2020/src/rt/CompMainPrgTable.mjs +0 -65
  464. package/esm2020/src/rt/DataviewHeaderBase.mjs +0 -96
  465. package/esm2020/src/rt/DataviewHeaders.mjs +0 -53
  466. package/esm2020/src/rt/LastFocusedManager.mjs +0 -67
  467. package/esm2020/src/rt/Operation.mjs +0 -735
  468. package/esm2020/src/rt/OperationTable.mjs +0 -67
  469. package/esm2020/src/rt/Recompute.mjs +0 -355
  470. package/esm2020/src/rt/ResultValue.mjs +0 -12
  471. package/esm2020/src/rt/TableCache.mjs +0 -177
  472. package/esm2020/src/rt/TableCacheManager.mjs +0 -67
  473. package/esm2020/src/rt/Transaction.mjs +0 -53
  474. package/esm2020/src/security/UserDetails.mjs +0 -71
  475. package/esm2020/src/tasks/MGData.mjs +0 -552
  476. package/esm2020/src/tasks/MGDataCollection.mjs +0 -252
  477. package/esm2020/src/tasks/RCTimer.mjs +0 -63
  478. package/esm2020/src/tasks/Task.mjs +0 -2496
  479. package/esm2020/src/tasks/TaskBase.mjs +0 -87
  480. package/esm2020/src/tasks/TasksTable.mjs +0 -80
  481. package/esm2020/src/tasks/sort/Sort.mjs +0 -7
  482. package/esm2020/src/util/FlowMonitorQueue.mjs +0 -453
  483. package/esm2020/src/util/MgPriorityBlockingQueue.mjs +0 -74
  484. package/esm2020/src/util/MgPriorityQueue.mjs +0 -66
  485. package/esm2020/src/util/PrmMap.mjs +0 -151
  486. package/esm2020/src/util/ReturnResult.mjs +0 -46
  487. package/esm2020/src/util/ReturnResultBase.mjs +0 -18
  488. package/esm2020/src/util/Scrambler.mjs +0 -89
  489. package/esm2020/src/util/UniqueIDUtils.mjs +0 -12
  490. package/fesm2015/magic-xpa-engine.mjs +0 -30861
  491. package/fesm2015/magic-xpa-engine.mjs.map +0 -1
  492. package/fesm2020/magic-xpa-engine.mjs.map +0 -1
@@ -1,399 +0,0 @@
1
- import { Char, Int32, List, NString } from "@magic-xpa/mscorelib";
2
- import { ForceExit, InternalInterface, Priority, XMLConstants, XmlParser } from "@magic-xpa/utils";
3
- import { GuiFieldBase, MgControlBase, Modifiers, PropInterface, } from "@magic-xpa/gui";
4
- import { EventSubType } from "../enums";
5
- import { Event } from "./Event";
6
- import { ConstInterface } from "../ConstInterface";
7
- import { ArgumentsList } from "../rt/ArgumentsList";
8
- import { TaskBase } from "../tasks/TaskBase";
9
- import { RunTimeEventBase } from "./RunTimeEventBase";
10
- import { AccessHelper } from "../AccessHelper";
11
- export class RunTimeEvent extends RunTimeEventBase {
12
- set ShouldHandleZoom(value) {
13
- this._shouldHandleZoom = value;
14
- }
15
- get ShouldHandleZoom() {
16
- return this._shouldHandleZoom;
17
- }
18
- set Control(value) {
19
- this._ctrl = value;
20
- }
21
- set DisplayLine(value) {
22
- this._displayLine = value;
23
- }
24
- get Control() {
25
- return this._ctrl;
26
- }
27
- get ControlsList() {
28
- return this._controlsList;
29
- }
30
- get Direction() {
31
- return this._direction;
32
- }
33
- constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
34
- super();
35
- this._controlsList = null;
36
- this._direction = 0;
37
- this._displayLine = Int32.MinValue;
38
- this._eventSubType = EventSubType.Normal;
39
- this._actEnableList = null;
40
- this._argList = null;
41
- this._ctrl = null;
42
- this._dotNetObject = null;
43
- this._eventFld = null;
44
- this._fromServer = false;
45
- this._guiTriggeredEvent = false;
46
- this._immediate = false;
47
- this._isIdleTimer = false;
48
- this._isRealRefresh = true;
49
- this._mgdId = 0;
50
- this._routeParams = null;
51
- this._mprgCreator = null;
52
- this._priority = Priority.HIGH;
53
- this._produceClick = false;
54
- this._reversibleExit = true;
55
- this._selectionEnd = 0;
56
- this._selectionStart = 0;
57
- this._sendAll = false;
58
- this._task = null;
59
- this._taskTag = null;
60
- this._val = null;
61
- this._shouldHandleZoom = false;
62
- this.IgnoreSpecifiedControl = false;
63
- this.LastFocusedVal = null;
64
- if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase))
65
- this.constructor_5(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
66
- else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof MgControlBase))
67
- this.constructor_6(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
68
- else if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase))
69
- this.constructor_7(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
70
- else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean))
71
- this.constructor_8(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
72
- else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
73
- this.constructor_9(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
74
- else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean))
75
- this.constructor_10(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
76
- else if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof GuiFieldBase))
77
- this.constructor_11(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
78
- else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number))
79
- this.constructor_12(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
80
- else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
81
- this.constructor_13(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
82
- else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof List) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
83
- this.constructor_14(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
84
- else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Number))
85
- this.constructor_15(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
86
- else if (arguments.length === 6)
87
- this.constructor_16(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
88
- else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof Event) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof RunTimeEvent)) {
89
- super.constructor_1(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
90
- this.constructor_17(ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
91
- }
92
- else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
93
- Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
94
- }
95
- constructor_5(taskRef) {
96
- this.init(taskRef);
97
- }
98
- constructor_6(taskRef, ctrlRef) {
99
- this.constructor_5((ctrlRef !== null) ? ctrlRef.getForm().getTask() : taskRef);
100
- this.Control = ctrlRef;
101
- }
102
- constructor_7(ctrlRef) {
103
- this.constructor_6(null, ctrlRef);
104
- if (ctrlRef !== null && super.getType() === Char.MinValue) {
105
- let prop = ctrlRef.GetComputedProperty(PropInterface.PROP_TYPE_TRIGGER);
106
- if (prop !== null) {
107
- let xmlParser = new XmlParser(prop.GetComputedValue());
108
- super.fillData(xmlParser, ctrlRef.getForm().getTask());
109
- }
110
- }
111
- }
112
- constructor_8(ctrlRef, guiTriggeredEvent) {
113
- this.constructor_7(ctrlRef);
114
- this._guiTriggeredEvent = guiTriggeredEvent;
115
- if (guiTriggeredEvent) {
116
- this._priority = Priority.LOW;
117
- }
118
- }
119
- constructor_9(ctrlRef, guiTriggeredEvent, ignoreSpecifiedControl) {
120
- this.constructor_8(ctrlRef, guiTriggeredEvent);
121
- this.IgnoreSpecifiedControl = ignoreSpecifiedControl;
122
- }
123
- constructor_10(taskref, guiTriggeredEvent) {
124
- this.constructor_5(taskref);
125
- this._guiTriggeredEvent = guiTriggeredEvent;
126
- if (guiTriggeredEvent) {
127
- this._priority = Priority.LOW;
128
- }
129
- }
130
- constructor_11(fldRef) {
131
- this._eventFld = fldRef;
132
- this.init((fldRef !== null) ? fldRef.getTask() : null);
133
- }
134
- constructor_12(ctrlRef, line) {
135
- this.constructor_7(ctrlRef);
136
- this._displayLine = line;
137
- }
138
- constructor_13(ctrlRef, line, guiTriggeredEvent) {
139
- this.constructor_8(ctrlRef, guiTriggeredEvent);
140
- this._displayLine = line;
141
- }
142
- constructor_14(ctrlRef, controlsList, guiTriggeredEvent) {
143
- this.constructor_8(ctrlRef, guiTriggeredEvent);
144
- this._controlsList = controlsList;
145
- }
146
- constructor_15(ctrlRef, direction) {
147
- this.constructor_8(ctrlRef, true);
148
- this._direction = direction;
149
- }
150
- constructor_16(ctrlRef) {
151
- this.constructor_8(ctrlRef, true);
152
- }
153
- constructor_17(rtEvt) {
154
- this._taskTag = rtEvt._taskTag;
155
- this._task = rtEvt._task;
156
- this.Control = rtEvt.Control;
157
- this._eventFld = rtEvt._eventFld;
158
- this._mgdId = rtEvt._mgdId;
159
- this._displayLine = rtEvt._displayLine;
160
- this._reversibleExit = rtEvt._reversibleExit;
161
- this._argList = rtEvt._argList;
162
- this._immediate = rtEvt._immediate;
163
- this._mprgCreator = rtEvt._mprgCreator;
164
- this._priority = rtEvt._priority;
165
- this._guiTriggeredEvent = rtEvt._guiTriggeredEvent;
166
- this._isIdleTimer = rtEvt._isIdleTimer;
167
- this._val = rtEvt._val;
168
- this._selectionStart = rtEvt._selectionStart;
169
- this._selectionEnd = rtEvt._selectionEnd;
170
- this._controlsList = rtEvt._controlsList;
171
- this._direction = rtEvt._direction;
172
- this._dotNetObject = rtEvt._dotNetObject;
173
- this.LastFocusedVal = rtEvt.LastFocusedVal;
174
- this._routeParams = rtEvt._routeParams;
175
- }
176
- CompareTo(obj) {
177
- let otherTimeEvent = obj;
178
- let otherPriority = otherTimeEvent._priority;
179
- let result = otherPriority - this._priority;
180
- if (result === 0)
181
- result = (this._timestamp - otherTimeEvent._timestamp);
182
- return result;
183
- }
184
- replicate() {
185
- let runTimeEvent = new RunTimeEvent(this);
186
- runTimeEvent.setTimestamp();
187
- return runTimeEvent;
188
- }
189
- init(taskRef) {
190
- this._task = (taskRef || AccessHelper.mgDataTable.getCurrMGData().getFirstTask());
191
- this._taskTag = ((this._task === null) ? "" : this._task.getTaskTag());
192
- this._mprgCreator = null;
193
- }
194
- convertParamsToArgs() {
195
- this._argList = new ArgumentsList();
196
- this._argList.buildListFromParams(this._parameters, this._paramAttrs, this._paramVals, this._paramNulls);
197
- this._parameters = 0;
198
- this._paramAttrs = null;
199
- this._paramVals = null;
200
- this._paramNulls = null;
201
- }
202
- getTask() {
203
- super.findUserEvent();
204
- return this._task;
205
- }
206
- setTask(taskRef) {
207
- this._task = taskRef;
208
- if (this._task !== null)
209
- this._taskTag = this._task.getTaskTag();
210
- else
211
- this._taskTag = null;
212
- }
213
- setTimer(sec, mgdID, isIdle) {
214
- this._type = ConstInterface.EVENT_TYPE_TIMER;
215
- this._seconds = sec;
216
- this._mgdId = mgdID;
217
- this._isIdleTimer = isIdle;
218
- }
219
- getDisplayLine() {
220
- return this._displayLine;
221
- }
222
- getMgdID() {
223
- return this._mgdId;
224
- }
225
- getBrkLevel(flowMonitor) {
226
- if (arguments.length === 0) {
227
- return this.getBrkLevel_00();
228
- }
229
- return this.getBrkLevel_01(flowMonitor);
230
- }
231
- getBrkLevel_00() {
232
- let level = super.getBrkLevel();
233
- if (this._type === ConstInterface.EVENT_TYPE_INTERNAL) {
234
- switch (this.InternalEvent) {
235
- case InternalInterface.MG_ACT_CTRL_PREFIX:
236
- case InternalInterface.MG_ACT_CTRL_SUFFIX:
237
- case InternalInterface.MG_ACT_CTRL_VERIFICATION:
238
- level += this.Control.Name;
239
- break;
240
- case InternalInterface.MG_ACT_VARIABLE:
241
- level += this._eventFld.getVarName();
242
- break;
243
- }
244
- }
245
- return level;
246
- }
247
- getBrkLevel_01(flowMonitor) {
248
- return super.getBrkLevel(flowMonitor);
249
- }
250
- setCtrl(newCtrl) {
251
- this._ctrl = newCtrl;
252
- }
253
- setNonReversibleExit() {
254
- this._reversibleExit = false;
255
- }
256
- reversibleExit() {
257
- return this._reversibleExit;
258
- }
259
- buildXML(message) {
260
- message.Append("\n " + XMLConstants.TAG_OPEN + ConstInterface.MG_TAG_EVENT);
261
- if (this._type !== Char.MinValue)
262
- message.Append(" " + ConstInterface.MG_ATTR_EVENTTYPE + "=\"" + this._type + "\"");
263
- if (this._type === ConstInterface.EVENT_TYPE_SYSTEM && this.kbdItm != null) {
264
- let modifier = this.kbdItm.getModifier();
265
- if (modifier !== Modifiers.MODIFIER_NONE)
266
- message.Append(" " + ConstInterface.MG_ATTR_MODIFIER + "=\"" + modifier + "\"");
267
- message.Append(" " + ConstInterface.MG_ATTR_KEYCODE + "=\"" + this.kbdItm.getKeyCode() + "\"");
268
- }
269
- if (this.InternalEvent !== Int32.MinValue)
270
- message.Append(" " + ConstInterface.MG_ATTR_INTERNALEVENT + "=\"" + this.InternalEvent + "\"");
271
- if (this._seconds !== Int32.MinValue)
272
- message.Append(" " + ConstInterface.MG_ATTR_SECONDS + "=\"" + this._seconds + "\"");
273
- if (this.Exp != null)
274
- message.Append(" " + XMLConstants.MG_ATTR_EXP + "=\"" + this.Exp.getId() + "\"");
275
- if (this._forceExit !== ForceExit.None)
276
- message.Append(" " + XMLConstants.MG_ATTR_EXP + "=\"" + this._forceExit + "\"");
277
- if (this.UserEvt != null)
278
- message.Append(" " + ConstInterface.MG_ATTR_USER + "=\"" + this.UserEvtTaskTag + "," + this._userEvtIdx + "\"");
279
- message.Append(XMLConstants.TAG_TERM);
280
- }
281
- getArgList() {
282
- return this._argList;
283
- }
284
- setArgList(aArgList) {
285
- let result = this._argList === null;
286
- this._argList = aArgList;
287
- return result;
288
- }
289
- setRouteParamList(routeParams) {
290
- this._routeParams = routeParams;
291
- }
292
- getRouteParamList() {
293
- return this._routeParams;
294
- }
295
- setImmediate(val) {
296
- this._immediate = val;
297
- }
298
- isImmediate() {
299
- return this._immediate;
300
- }
301
- setMainPrgCreator(src) {
302
- this._mprgCreator = src;
303
- }
304
- getMainPrgCreator() {
305
- return this._mprgCreator;
306
- }
307
- setIsRealRefresh(val) {
308
- this._isRealRefresh = val;
309
- }
310
- getRefreshType() {
311
- return this._isRealRefresh;
312
- }
313
- setFromServer() {
314
- this._fromServer = true;
315
- }
316
- resetFromServer() {
317
- this._fromServer = false;
318
- }
319
- isFromServer() {
320
- return this._fromServer;
321
- }
322
- isQuit() {
323
- return this._eventSubType === EventSubType.CancelIsQuit;
324
- }
325
- RollbackInCancel() {
326
- return this._eventSubType !== EventSubType.CancelWithNoRollback;
327
- }
328
- ExitDueToError() {
329
- return this._eventSubType === EventSubType.ExitDueToError;
330
- }
331
- RtViewRefreshUseCurrentRow() {
332
- return this._eventSubType === EventSubType.RtRefreshViewUseCurrentRow;
333
- }
334
- SetEventSubType(eventSubType) {
335
- this._eventSubType = eventSubType;
336
- }
337
- getFld() {
338
- return this._eventFld;
339
- }
340
- isGuiTriggeredEvent() {
341
- return this._guiTriggeredEvent;
342
- }
343
- getPriority() {
344
- return this._priority;
345
- }
346
- setPriority(priority) {
347
- this._priority = priority;
348
- }
349
- isIdleTimer() {
350
- return this._isIdleTimer;
351
- }
352
- getValue() {
353
- return this._val;
354
- }
355
- setValue(val) {
356
- this._val = val;
357
- }
358
- getStartSelection() {
359
- return this._selectionStart;
360
- }
361
- getEndSelection() {
362
- return this._selectionEnd;
363
- }
364
- setEditParms(start, end, text) {
365
- this._selectionStart = start;
366
- this._selectionEnd = end;
367
- this.setValue(text);
368
- }
369
- isProduceClick() {
370
- return this._produceClick;
371
- }
372
- setProduceClick(produceClick) {
373
- this._produceClick = produceClick;
374
- }
375
- getActEnableList() {
376
- return this._actEnableList;
377
- }
378
- isSendAll() {
379
- return this._sendAll;
380
- }
381
- setSendAll(sendAll) {
382
- this._sendAll = sendAll;
383
- }
384
- isBlockedByModalWindow(activeWindowData) {
385
- if (activeWindowData.IsModal) {
386
- let eventTask = this.getTask();
387
- let baseTask = activeWindowData.getTask(0);
388
- if (eventTask !== baseTask && baseTask.isDescendentOf(eventTask))
389
- return true;
390
- }
391
- return false;
392
- }
393
- toString() {
394
- return NString.Format("{{RTEvent {0} ({1}), type {2}{3}}}", [
395
- this.getBrkLevel(), this.InternalEvent, this._type, (this._task === null) ? "" : (" on " + this._task)
396
- ]);
397
- }
398
- }
399
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVuVGltZUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9SdW5UaW1lRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakcsT0FBTyxFQUFDLFlBQVksRUFBa0IsYUFBYSxFQUFFLFNBQVMsRUFBWSxhQUFhLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSzdDLE1BQU0sT0FBTyxZQUFhLFNBQVEsZ0JBQWdCO0lBMENoRCxJQUFJLGdCQUFnQixDQUFDLEtBQWM7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEtBQW9CO1FBQzlCLElBQUksQ0FBQyxLQUFL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LEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUN2RyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYXIsIElDb21wYXJhYmxlLCBJbnQzMiwgTGlzdCwgTlN0cmluZywgU3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7Rm9yY2VFeGl0LCBJbnRlcm5hbEludGVyZmFjZSwgUHJpb3JpdHksIFhNTENvbnN0YW50cywgWG1sUGFyc2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0d1aUZpZWxkQmFzZSwgTGFzdEZvY3VzZWRWYWwsIE1nQ29udHJvbEJhc2UsIE1vZGlmaWVycywgUHJvcGVydHksIFByb3BJbnRlcmZhY2UsfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtFdmVudFN1YlR5cGV9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5pbXBvcnQge0V2ZW50fSBmcm9tIFwiLi9FdmVudFwiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtBcmd1bWVudHNMaXN0fSBmcm9tIFwiLi4vcnQvQXJndW1lbnRzTGlzdFwiO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSBcIi4uL3Rhc2tzL01HRGF0YVwiO1xyXG5pbXBvcnQge1Rhc2tCYXNlfSBmcm9tIFwiLi4vdGFza3MvVGFza0Jhc2VcIjtcclxuaW1wb3J0IHtSdW5UaW1lRXZlbnRCYXNlfSBmcm9tIFwiLi9SdW5UaW1lRXZlbnRCYXNlXCI7XHJcbmltcG9ydCB7QWNjZXNzSGVscGVyfSBmcm9tIFwiLi4vQWNjZXNzSGVscGVyXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIHRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgcnVudGltZSBldmVudHNcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFJ1blRpbWVFdmVudCBleHRlbmRzIFJ1blRpbWVFdmVudEJhc2UgaW1wbGVtZW50cyBJQ29tcGFyYWJsZSB7XHJcblxyXG4gIC8vIEFUVEVOVElPTiAhXHJcbiAgLy8gYW55IGNoYW5nZSB0byB0aGUgbWVtYmVyIHZhcmlhYmxlcyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgY2hhbmdlIHRvIHRoZSBDVE9SIHRoYXRcclxuICAvLyBnZXRzIG9uZSBhcmd1bWVudCBvZiB0aGUgdHlwZSAnRXZlbnQnIGFuZCBvbmUgYXJndW1lbnQgb2YgdGhlIHR5cGUgJ1J1blRpbWVFdmVudCcuXHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2xzTGlzdDogTGlzdDxNZ0NvbnRyb2xCYXNlPiA9IG51bGw7IC8vIGxpc3Qgb2YgY29udHJvbHNcclxuICBwcml2YXRlIF9kaXJlY3Rpb246IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfZGlzcGxheUxpbmU6IG51bWJlciA9IEludDMyLk1pblZhbHVlO1xyXG5cclxuICBwcml2YXRlIF9ldmVudFN1YlR5cGU6IEV2ZW50U3ViVHlwZSA9IEV2ZW50U3ViVHlwZS5Ob3JtYWw7XHJcblxyXG4gIHByaXZhdGUgX2FjdEVuYWJsZUxpc3Q6IG51bWJlcltdID0gbnVsbDtcclxuICBwcml2YXRlIF9hcmdMaXN0OiBBcmd1bWVudHNMaXN0ID0gbnVsbDtcclxuICBwcml2YXRlIF9jdHJsOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDsgLy8gdGhlIGNvbnRyb2wgb24gd2hpY2ggdGhlIGV2ZW50IHdhcyB0cmlnZ2VyZWRcclxuICBwcml2YXRlIF9kb3ROZXRPYmplY3Q6IGFueSA9IG51bGw7IC8vIG9iamVjdCBrZXkgb2YgYSBjb250cm9sXHJcbiAgcHJpdmF0ZSBfZXZlbnRGbGQ6IEd1aUZpZWxkQmFzZSA9IG51bGw7IC8vIEZvciB2YXJpYWJsZSBldmVudHMgLSB0aGUgZmllbGQgb24gd2hpY2ggdGhlIGNvbnRyb2wgd2FzIHRyaWdnZXJlZFxyXG4gIHByaXZhdGUgX2Zyb21TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZTsgIC8vIGlmIFRSVUUsIHRoZSBldmVudCB3YXMgY3JlYXRlZCBvbiB0aGUgc2VydmVyIGFuZCBzZW50IHRvIHRoZSBjbGllbnRcclxuICBwcml2YXRlIF9ndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiB0cnVlLCB0aGUgZXZlbnQgd2FzIHRyaWdnZXJlZCBieSBHVUkgbGV2ZWwgKGluY2x1ZGVzIHRpbWVyIGV2ZW50cylcclxuICBwcml2YXRlIF9pbW1lZGlhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc0lkbGVUaW1lcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzUmVhbFJlZnJlc2g6IGJvb2xlYW4gPSB0cnVlOyAvLyB1c2VkIG9ubHkgaW4gTUdfQUNUX1ZJRVdfUkVGUkVTSCBldmVudHMgdG8gaW5kaWNhdGUgYSByZWZyZXNoIGludm9rZWQgU3BlY2lmaWNhbGx5IGJ5IHRoZSB1c2VyXHJcbiAgcHJpdmF0ZSBfbWdkSWQ6IG51bWJlciA9IDA7IC8vIG1nZGF0YSBpZCB0aGF0IHNlbnQgdGltZXIgZXZlbnRcclxuICBwcml2YXRlIF9yb3V0ZVBhcmFtczogTGlzdDxhbnk+ID0gbnVsbDtcclxuXHJcbiAgLy8gVXNlZCBvbmx5IGlmICd0YXNrJyBpcyBhIG1haW4gcHJnLiBBIHJlZmVyZW5jZSB0byB0aGUgdGFzayB3aGljaFxyXG4gIC8vIGNhdXNlZCB0aGUgbWFpbiBwcmcgdG8gYmVjb21lIGFjdGl2ZSBpbiB0aGUgcnVudGltZS5cclxuICBwcml2YXRlIF9tcHJnQ3JlYXRvcjogVGFza0Jhc2UgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9wcmlvcml0eTogUHJpb3JpdHkgPSBQcmlvcml0eS5ISUdIOyAvLyBwcmlvcml0eSBvZiBldmVudCBmb3IgZXZlbnRzIHF1ZXVlXHJcblxyXG4gIHByaXZhdGUgX3Byb2R1Y2VDbGljazogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiBUUlVFLCB0aGUgZXZlbnQgc2hvdWxkIHByb2R1Y2UgY2xpY2tcclxuICBwcml2YXRlIF9yZXZlcnNpYmxlRXhpdDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdGlvbkVuZDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9zZWxlY3Rpb25TdGFydDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9zZW5kQWxsOiBib29sZWFuID0gZmFsc2U7ICAvLyB0aGlzIGZsYWcgaXMgc2V0IGZvciBzZW5kaW5nIGFsbCByZWNvcmRzXHJcbiAgcHJpdmF0ZSBfdGFzazogVGFza0Jhc2UgPSBudWxsOyAvLyBhIHJlZmVyZW5jZSB0byB0aGUgdGFza1xyXG4gIHByaXZhdGUgX3Rhc2tUYWc6IHN0cmluZyA9IG51bGw7IC8vIHRoZSB0YXNrIGlkIG9uIHdoaWNoIHRoZSBldmVudCB3YXMgdHJpZ2dlcmVkXHJcbiAgcHJpdmF0ZSBfdmFsOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgX3Nob3VsZEhhbmRsZVpvb206IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2V0IFNob3VsZEhhbmRsZVpvb20odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgdGhpcy5fc2hvdWxkSGFuZGxlWm9vbSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IFNob3VsZEhhbmRsZVpvb20oKTogYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9zaG91bGRIYW5kbGVab29tO1xyXG4gIH1cclxuXHJcbiAgc2V0IENvbnRyb2wodmFsdWU6IE1nQ29udHJvbEJhc2UpIHtcclxuICAgIHRoaXMuX2N0cmwgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCBEaXNwbGF5TGluZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9kaXNwbGF5TGluZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IENvbnRyb2woKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3RybDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2hvdWxkIHRoZSBjb250cm9sIHNldCBvbiB0aGUgZXZlbnQgYmUgaWdub3JlZC4gaWYgdHJ1ZSwgd2hlbiBwcm9jZXNzaW5nIHRoZSBldmVudCB3ZSBzaG91bGRcclxuICAvLy8gdXNlIHRoZSBjdXJyZW50IGZvY3VzZWQgY29udHJvbCBpbnN0ZWFkIG9mIHRoZSBvbmUgc2V0IG9uIHRoZSBldmVudC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIElnbm9yZVNwZWNpZmllZENvbnRyb2w6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgTGFzdEZvY3VzZWRWYWw6IExhc3RGb2N1c2VkVmFsID0gbnVsbDsgLy8gdmFsdWUgb2YgbGFzdCBlZGl0ZWQgY29udHJvbFxyXG5cclxuICBnZXQgQ29udHJvbHNMaXN0KCk6IExpc3Q8TWdDb250cm9sQmFzZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzTGlzdDtcclxuICB9XHJcblxyXG4gIGdldCBEaXJlY3Rpb24oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXJlY3Rpb247XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcih0YXNrUmVmOiBUYXNrQmFzZSk7XHJcbiAgY29uc3RydWN0b3IodGFza1JlZjogVGFza0Jhc2UsIGN0cmxSZWY6IE1nQ29udHJvbEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbiwgaWdub3JlU3BlY2lmaWVkQ29udHJvbDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IodGFza3JlZjogVGFza0Jhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTtcclxuICBjb25zdHJ1Y3RvcihmbGRSZWY6IEd1aUZpZWxkQmFzZSk7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgbGluZTogbnVtYmVyKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBsaW5lOiBudW1iZXIsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBjb250cm9sc0xpc3Q6IExpc3Q8TWdDb250cm9sQmFzZT4sIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBkaXJlY3Rpb246IG51bWJlciwgbGluZTogbnVtYmVyKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBjb2x1bW5IZWFkZXI6IHN0cmluZywgeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTtcclxuICBjb25zdHJ1Y3RvcihldnQ6IEV2ZW50LCBydEV2dDogUnVuVGltZUV2ZW50KTtcclxuICBjb25zdHJ1Y3RvcihydEV2dDogUnVuVGltZUV2ZW50KTtcclxuICBjb25zdHJ1Y3Rvcih0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dDogYW55LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrPzogYW55LCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lPzogYW55LCB5T3JDdGxJZHg/OiBudW1iZXIsIHdpZHRoPzogbnVtYmVyLCBoZWlnaHQ/OiBudW1iZXIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBUYXNrQmFzZSkpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfNSh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBUYXNrQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzYodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2spO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfNyh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl84KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2suY29uc3RydWN0b3IgPT09IEJvb2xlYW4pICYmIChpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lID09PSBudWxsIHx8IGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUuY29uc3RydWN0b3IgPT09IEJvb2xlYW4pKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzkodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2ssIGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgVGFza0Jhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2suY29uc3RydWN0b3IgPT09IEJvb2xlYW4pKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzEwKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIEd1aUZpZWxkQmFzZSkpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTEodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xMih0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpICYmIChpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lID09PSBudWxsIHx8IGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUuY29uc3RydWN0b3IgPT09IEJvb2xlYW4pKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzEzKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgaW5zdGFuY2VvZiBMaXN0KSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xNCh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzaywgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpICYmIChpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lID09PSBudWxsIHx8IGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUuY29uc3RydWN0b3IgPT09IE51bWJlcikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTUodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2spO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDYpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTYodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgRXZlbnQpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgaW5zdGFuY2VvZiBSdW5UaW1lRXZlbnQpKSB7XHJcbiAgICAgIC8vIENhbGwgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIHRoZSBldmVudCB0eXBlIGFuZCB0aGUgb3RoZXIgZmllbGRzXHJcbiAgICAgIHN1cGVyLmNvbnN0cnVjdG9yXzEodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzE3KCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgUnVuVGltZUV2ZW50KVxyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrUmVmXCI+YSByZWZlcmVuY2UgdG8gdGhlIHRhc2s8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfNSh0YXNrUmVmOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0KHRhc2tSZWYpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1JlZlwiPnJlZmVyZW5jZSB0byB0YXNrPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxSZWZcIj5yZWZlcmVuY2UgdG8gY29udHJvbDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl82KHRhc2tSZWY6IFRhc2tCYXNlLCBjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzUoKGN0cmxSZWYgIT09IG51bGwpID8gKDxUYXNrQmFzZT5jdHJsUmVmLmdldEZvcm0oKS5nZXRUYXNrKCkpIDogdGFza1JlZik7XHJcbiAgICB0aGlzLkNvbnRyb2wgPSBjdHJsUmVmO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFJlZlwiPmEgcmVmZXJlbmNlIHRvIHRoZSBjb250cm9sIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl83KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfNihudWxsLCBjdHJsUmVmKTtcclxuICAgIGlmIChjdHJsUmVmICE9PSBudWxsICYmIHN1cGVyLmdldFR5cGUoKSA9PT0gQ2hhci5NaW5WYWx1ZSkgLy8gbm90IGluaXRpYWxpemVkIHlldFxyXG4gICAge1xyXG4gICAgICAvLyBvbiB0aGUgZmlyc3QgdGltZSwgaWYgYSBUUklHR0VSIHByb3BlcnR5IGV4aXN0cywgcGFyc2UgdGhlIGV2ZW50IGFuZCBhZGQgaXQgdG8gdGhlIGNvbnRyb2xcclxuICAgICAgbGV0IHByb3A6IFByb3BlcnR5ID0gY3RybFJlZi5HZXRDb21wdXRlZFByb3BlcnR5KFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RSSUdHRVIpO1xyXG4gICAgICBpZiAocHJvcCAhPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCB4bWxQYXJzZXI6IFhtbFBhcnNlciA9IG5ldyBYbWxQYXJzZXIocHJvcC5HZXRDb21wdXRlZFZhbHVlKCkpO1xyXG4gICAgICAgIHN1cGVyLmZpbGxEYXRhKHhtbFBhcnNlciwgPFRhc2tCYXNlPmN0cmxSZWYuZ2V0Rm9ybSgpLmdldFRhc2soKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxSZWZcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aVRyaWdnZXJlZEV2ZW50XCI+PC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzgoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfNyhjdHJsUmVmKTtcclxuICAgIHRoaXMuX2d1aVRyaWdnZXJlZEV2ZW50ID0gZ3VpVHJpZ2dlcmVkRXZlbnQ7XHJcbiAgICBpZiAoZ3VpVHJpZ2dlcmVkRXZlbnQpIHtcclxuICAgICAgLy8gRXZlbnRzIHRoYXQgYXJlIHRyaWdnZXJlZCBieSBHVUkgbGV2ZWwsIG11c3QgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsXHJcbiAgICAgIC8vIG90aGVyIGV2ZW50cywgdGh1cyB0aGF5IGhhdmUgbG93IHByaW9yaXR5O1xyXG4gICAgICB0aGlzLl9wcmlvcml0eSA9IFByaW9yaXR5LkxPVztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxSZWZcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aVRyaWdnZXJlZEV2ZW50XCI+PC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzkoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4sIGlnbm9yZVNwZWNpZmllZENvbnRyb2w6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfOChjdHJsUmVmLCBndWlUcmlnZ2VyZWRFdmVudCk7XHJcbiAgICB0aGlzLklnbm9yZVNwZWNpZmllZENvbnRyb2wgPSBpZ25vcmVTcGVjaWZpZWRDb250cm9sO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza3JlZlwiPnJlZmVyZW5jZSB0byB0YXNrPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aVRyaWdnZXJlZEV2ZW50XCI+PC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEwKHRhc2tyZWY6IFRhc2tCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl81KHRhc2tyZWYpO1xyXG4gICAgdGhpcy5fZ3VpVHJpZ2dlcmVkRXZlbnQgPSBndWlUcmlnZ2VyZWRFdmVudDtcclxuICAgIGlmIChndWlUcmlnZ2VyZWRFdmVudCkge1xyXG4gICAgICB0aGlzLl9wcmlvcml0eSA9IFByaW9yaXR5LkxPVztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZsZFJlZlwiPmEgcmVmZXJlbmNlIHRvIHRoZSBmaWVsZDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xMShmbGRSZWY6IEd1aUZpZWxkQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXZlbnRGbGQgPSBmbGRSZWY7XHJcbiAgICB0aGlzLmluaXQoKGZsZFJlZiAhPT0gbnVsbCkgPyAoPFRhc2tCYXNlPmZsZFJlZi5nZXRUYXNrKCkpIDogbnVsbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsUmVmXCI+YSByZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2wgb24gd2hpY2ggdGhlIGV2ZW50IG9jY3VyZWQgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj50aGUgbGluZSBvZiB0aGUgdGFibGUgaW4gd2hpY2ggdGhlIGNvbnRyb2wgaXMgbG9jYXRlZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTIoY3RybFJlZjogTWdDb250cm9sQmFzZSwgbGluZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzcoY3RybFJlZik7XHJcbiAgICB0aGlzLl9kaXNwbGF5TGluZSA9IGxpbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEzKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGxpbmU6IG51bWJlciwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfOChjdHJsUmVmLCBndWlUcmlnZ2VyZWRFdmVudCk7XHJcbiAgICB0aGlzLl9kaXNwbGF5TGluZSA9IGxpbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzE0KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGNvbnRyb2xzTGlzdDogTGlzdDxNZ0NvbnRyb2xCYXNlPiwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfOChjdHJsUmVmLCBndWlUcmlnZ2VyZWRFdmVudCk7XHJcbiAgICB0aGlzLl9jb250cm9sc0xpc3QgPSBjb250cm9sc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzE1KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgdHJ1ZSk7XHJcbiAgICB0aGlzLl9kaXJlY3Rpb24gPSBkaXJlY3Rpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzE2KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UgKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUiAtIGNyZWF0ZXMgYSBuZXcgcnVuIHRpbWUgZXZlbnQgYnkgY29weWluZyB0aGUgbWVtYmVyIHZhcmlhYmxlcyBvZiBhIGdpdmVuXHJcbiAgLy8vICAgZXZlbnQgYW5kIHRoZSBtZW1iZXIgdmFyaWFibGVzIG9mIGEgZ2l2ZW4gcnVuIHRpbWUgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXZ0XCI+YSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IHRvIGJlIHVzZWQgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJ0RXZ0XCI+YSByZWZlcmVuY2UgdG8gdGhlIHJ1biB0aW1lIGV2ZW50IHRvIGJlIHVzZWQgPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzE3KCBydEV2dDogUnVuVGltZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl90YXNrVGFnID0gcnRFdnQuX3Rhc2tUYWc7XHJcbiAgICB0aGlzLl90YXNrID0gcnRFdnQuX3Rhc2s7XHJcbiAgICB0aGlzLkNvbnRyb2wgPSBydEV2dC5Db250cm9sO1xyXG4gICAgdGhpcy5fZXZlbnRGbGQgPSBydEV2dC5fZXZlbnRGbGQ7XHJcbiAgICB0aGlzLl9tZ2RJZCA9IHJ0RXZ0Ll9tZ2RJZDtcclxuICAgIHRoaXMuX2Rpc3BsYXlMaW5lID0gcnRFdnQuX2Rpc3BsYXlMaW5lO1xyXG4gICAgdGhpcy5fcmV2ZXJzaWJsZUV4aXQgPSBydEV2dC5fcmV2ZXJzaWJsZUV4aXQ7XHJcbiAgICB0aGlzLl9hcmdMaXN0ID0gcnRFdnQuX2FyZ0xpc3Q7XHJcbiAgICB0aGlzLl9pbW1lZGlhdGUgPSBydEV2dC5faW1tZWRpYXRlO1xyXG4gICAgdGhpcy5fbXByZ0NyZWF0b3IgPSBydEV2dC5fbXByZ0NyZWF0b3I7XHJcbiAgICB0aGlzLl9wcmlvcml0eSA9IHJ0RXZ0Ll9wcmlvcml0eTtcclxuICAgIHRoaXMuX2d1aVRyaWdnZXJlZEV2ZW50ID0gcnRFdnQuX2d1aVRyaWdnZXJlZEV2ZW50O1xyXG4gICAgdGhpcy5faXNJZGxlVGltZXIgPSBydEV2dC5faXNJZGxlVGltZXI7XHJcbiAgICB0aGlzLl92YWwgPSBydEV2dC5fdmFsO1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uU3RhcnQgPSBydEV2dC5fc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICB0aGlzLl9zZWxlY3Rpb25FbmQgPSBydEV2dC5fc2VsZWN0aW9uRW5kO1xyXG4gICAgdGhpcy5fY29udHJvbHNMaXN0ID0gcnRFdnQuX2NvbnRyb2xzTGlzdDtcclxuICAgIHRoaXMuX2RpcmVjdGlvbiA9IHJ0RXZ0Ll9kaXJlY3Rpb247XHJcbiAgICB0aGlzLl9kb3ROZXRPYmplY3QgPSBydEV2dC5fZG90TmV0T2JqZWN0O1xyXG4gICAgdGhpcy5MYXN0Rm9jdXNlZFZhbCA9IHJ0RXZ0Lkxhc3RGb2N1c2VkVmFsO1xyXG4gICAgdGhpcy5fcm91dGVQYXJhbXMgPSBydEV2dC5fcm91dGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGltcGxlbWVudGluZyBjb21wYXJhdG9yLCB0aGUgZXZlbnRzIGFyZSBjb21wYXJlZCBieSBwcmlvcml0eVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgQ29tcGFyZVRvKG9iajogYW55KTogbnVtYmVyIHtcclxuICAgIGxldCBvdGhlclRpbWVFdmVudDogUnVuVGltZUV2ZW50ID0gPFJ1blRpbWVFdmVudD5vYmo7XHJcbiAgICBsZXQgb3RoZXJQcmlvcml0eTogUHJpb3JpdHkgPSBvdGhlclRpbWVFdmVudC5fcHJpb3JpdHk7XHJcbiAgICBsZXQgcmVzdWx0OiBudW1iZXIgPSBvdGhlclByaW9yaXR5IC0gdGhpcy5fcHJpb3JpdHk7XHJcbiAgICBpZiAocmVzdWx0ID09PSAwKVxyXG4gICAgICByZXN1bHQgPSA8bnVtYmVyPih0aGlzLl90aW1lc3RhbXAgLSBvdGhlclRpbWVFdmVudC5fdGltZXN0YW1wKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBhIHJlcGxpY2Egb2YgdGhpcyBydW50aW1lIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICByZXBsaWNhdGUoKTogUnVuVGltZUV2ZW50IHtcclxuICAgIGxldCBydW5UaW1lRXZlbnQ6IFJ1blRpbWVFdmVudCA9IG5ldyBSdW5UaW1lRXZlbnQodGhpcyk7XHJcbiAgICBydW5UaW1lRXZlbnQuc2V0VGltZXN0YW1wKCk7XHJcbiAgICByZXR1cm4gcnVuVGltZUV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGEgaGVscGVyIG1ldGhvZCB0aGF0IGRvZXMgc29tZSBjb21tb24gaW5pdGlhbGl6YXRpb24gZm9yIHNvbWUgb2YgdGhlIGNvbnN0cnVjdG9yc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBpbml0KHRhc2tSZWY6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl90YXNrID0gKHRhc2tSZWYgfHwgKDxNR0RhdGE+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKSkuZ2V0Rmlyc3RUYXNrKCkpO1xyXG4gICAgdGhpcy5fdGFza1RhZyA9ICgodGhpcy5fdGFzayA9PT0gbnVsbCkgPyBcIlwiIDogdGhpcy5fdGFzay5nZXRUYXNrVGFnKCkpO1xyXG4gICAgdGhpcy5fbXByZ0NyZWF0b3IgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbnZlcnRzIHBhcmFtZXRlcnMgdG8gYXJndW1lbnQgbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29udmVydFBhcmFtc1RvQXJncygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FyZ0xpc3QgPSBuZXcgQXJndW1lbnRzTGlzdCgpO1xyXG4gICAgdGhpcy5fYXJnTGlzdC5idWlsZExpc3RGcm9tUGFyYW1zKHRoaXMuX3BhcmFtZXRlcnMsIHRoaXMuX3BhcmFtQXR0cnMsIHRoaXMuX3BhcmFtVmFscywgdGhpcy5fcGFyYW1OdWxscyk7XHJcbiAgICB0aGlzLl9wYXJhbWV0ZXJzID0gMDtcclxuICAgIHRoaXMuX3BhcmFtQXR0cnMgPSBudWxsO1xyXG4gICAgdGhpcy5fcGFyYW1WYWxzID0gbnVsbDtcclxuICAgIHRoaXMuX3BhcmFtTnVsbHMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VGFzaygpOiBUYXNrQmFzZSB7XHJcbiAgICBzdXBlci5maW5kVXNlckV2ZW50KCk7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYVRhc2tcIj4tIHJlZmVyZW5jZSB0byBhIHRhc2s8L3BhcmFtPlxyXG4gIHNldFRhc2sodGFza1JlZjogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Rhc2sgPSB0YXNrUmVmO1xyXG5cclxuICAgIGlmICh0aGlzLl90YXNrICE9PSBudWxsKVxyXG4gICAgICB0aGlzLl90YXNrVGFnID0gdGhpcy5fdGFzay5nZXRUYXNrVGFnKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX3Rhc2tUYWcgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIFRpbWVyIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNlY29uZHNcIj50aGUgbnVtYmVyIG9mIHNlY29uZHMgZm9yIHRoaXMgZXZlbnRzPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm51bWJlclduZFwiPnRoZSBtZ2RhdGEgSUQgZm9yIHRoZSBldmVudDwvcGFyYW0+XHJcbiAgc2V0VGltZXIoc2VjOiBudW1iZXIsIG1nZElEOiBudW1iZXIsIGlzSWRsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVElNRVIgLyonVCcqLztcclxuICAgIHRoaXMuX3NlY29uZHMgPSBzZWM7XHJcbiAgICB0aGlzLl9tZ2RJZCA9IG1nZElEO1xyXG4gICAgdGhpcy5faXNJZGxlVGltZXIgPSBpc0lkbGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgbGluZSBpbiB0YWJsZSBvZiBjb250cm9sIGluIGEgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGxpbmUgbnVtYmVyPC9yZXR1cm5zPlxyXG4gIGdldERpc3BsYXlMaW5lKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUxpbmU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IG51bWJlciBvZiB3aW5kb3cgKGZvciB0aW1lciBldmVudHMpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRNZ2RJRCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21nZElkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgYnJlYWsgbGV2ZWwgb2YgRXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEJya0xldmVsKCk6IHN0cmluZztcclxuICBnZXRCcmtMZXZlbChmbG93TW9uaXRvcjogYm9vbGVhbik6IHN0cmluZztcclxuICBnZXRCcmtMZXZlbChmbG93TW9uaXRvcj86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMDAoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdldEJya0xldmVsXzAxKGZsb3dNb25pdG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QnJrTGV2ZWxfMDAoKTogc3RyaW5nIHtcclxuICAgIGxldCBsZXZlbDogc3RyaW5nID0gc3VwZXIuZ2V0QnJrTGV2ZWwoKTtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5JbnRlcm5hbEV2ZW50KSB7XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9QUkVGSVg6XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9TVUZGSVg6XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9WRVJJRklDQVRJT046XHJcbiAgICAgICAgICBsZXZlbCArPSB0aGlzLkNvbnRyb2wuTmFtZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFOlxyXG4gICAgICAgICAgbGV2ZWwgKz0gdGhpcy5fZXZlbnRGbGQuZ2V0VmFyTmFtZSgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsZXZlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QnJrTGV2ZWxfMDEoZmxvd01vbml0b3I6IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN1cGVyLmdldEJya0xldmVsKGZsb3dNb25pdG9yKTtcclxuICB9XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgbmV3IGNvbnRyb2wgZm9yIHRoZSBydW50aW1lIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm5ld0N0cmxcIj5hIHJlZmVyZW5jZSB0byB0aGUgbmV3IGNvbnRyb2wgPC9wYXJhbT5cclxuICBzZXRDdHJsKG5ld0N0cmw6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N0cmwgPSBuZXdDdHJsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgcmV2ZXJzaWJsZSBleGl0IGZsYWcgdG8gZmFsc2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE5vblJldmVyc2libGVFeGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmV2ZXJzaWJsZUV4aXQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcmV2ZXJzaWJsZSBleGl0IGZsYWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJldmVyc2libGVFeGl0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JldmVyc2libGVFeGl0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIFhNTCBFdmVudCBzdHJpbmcgZm9yIFNlcnZlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGJ1aWxkWE1MKG1lc3NhZ2U6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIG1lc3NhZ2UuQXBwZW5kKFwiXFxuICAgXCIgKyBYTUxDb25zdGFudHMuVEFHX09QRU4gKyBDb25zdEludGVyZmFjZS5NR19UQUdfRVZFTlQpO1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlICE9PSBDaGFyLk1pblZhbHVlKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRVZFTlRUWVBFICsgXCI9XFxcIlwiICsgdGhpcy5fdHlwZSArIFwiXFxcIlwiKTtcclxuXHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU0gJiYgdGhpcy5rYmRJdG0gIT0gbnVsbCkge1xyXG4gICAgICBsZXQgbW9kaWZpZXI6IE1vZGlmaWVycyA9IHRoaXMua2JkSXRtLmdldE1vZGlmaWVyKCk7XHJcbiAgICAgIGlmIChtb2RpZmllciAhPT0gTW9kaWZpZXJzLk1PRElGSUVSX05PTkUpXHJcbiAgICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX01PRElGSUVSICsgXCI9XFxcIlwiICsgbW9kaWZpZXIgKyBcIlxcXCJcIik7XHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9LRVlDT0RFICsgXCI9XFxcIlwiICsgdGhpcy5rYmRJdG0uZ2V0S2V5Q29kZSgpICsgXCJcXFwiXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuSW50ZXJuYWxFdmVudCAhPT0gSW50MzIuTWluVmFsdWUpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JTlRFUk5BTEVWRU5UICsgXCI9XFxcIlwiICsgdGhpcy5JbnRlcm5hbEV2ZW50ICsgXCJcXFwiXCIpO1xyXG4gICAgaWYgKHRoaXMuX3NlY29uZHMgIT09IEludDMyLk1pblZhbHVlKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU0VDT05EUyArIFwiPVxcXCJcIiArIHRoaXMuX3NlY29uZHMgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5FeHAgIT0gbnVsbClcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBYTUxDb25zdGFudHMuTUdfQVRUUl9FWFAgKyBcIj1cXFwiXCIgKyB0aGlzLkV4cC5nZXRJZCgpICsgXCJcXFwiXCIpO1xyXG4gICAgaWYgKHRoaXMuX2ZvcmNlRXhpdCAhPT0gRm9yY2VFeGl0Lk5vbmUpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgWE1MQ29uc3RhbnRzLk1HX0FUVFJfRVhQICsgXCI9XFxcIlwiICsgPHN0cmluZz50aGlzLl9mb3JjZUV4aXQgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5Vc2VyRXZ0ICE9IG51bGwpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9VU0VSICsgXCI9XFxcIlwiICsgdGhpcy5Vc2VyRXZ0VGFza1RhZyArIFwiLFwiICsgdGhpcy5fdXNlckV2dElkeCArIFwiXFxcIlwiKTtcclxuXHJcbiAgICBtZXNzYWdlLkFwcGVuZChYTUxDb25zdGFudHMuVEFHX1RFUk0pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgYXJnTGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYXJnTGlzdDwvcmV0dXJucz5cclxuICBnZXRBcmdMaXN0KCk6IEFyZ3VtZW50c0xpc3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FyZ0xpc3Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBhcmdMaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFBcmdMaXN0XCI+PC9wYXJhbT5cclxuICBzZXRBcmdMaXN0KGFBcmdMaXN0OiBBcmd1bWVudHNMaXN0KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gdGhpcy5fYXJnTGlzdCA9PT0gbnVsbDtcclxuICAgIHRoaXMuX2FyZ0xpc3QgPSBhQXJnTGlzdDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBhcmdMaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFBcmdMaXN0XCI+PC9wYXJhbT5cclxuICBzZXRSb3V0ZVBhcmFtTGlzdChyb3V0ZVBhcmFtczogTGlzdDxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLl9yb3V0ZVBhcmFtcyA9IHJvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um91dGVQYXJhbUxpc3QoKTogTGlzdDxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9yb3V0ZVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYSB2YWx1ZSB0byB0aGUgaW1tZWRpYXRlIGZsYWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+dGhlIHZhbHVlIHRvIHVzZTwvcGFyYW0+XHJcbiAgc2V0SW1tZWRpYXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faW1tZWRpYXRlID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBpbW1lZGlhdGUgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNJbW1lZGlhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faW1tZWRpYXRlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSB0YXNrIHdoaWNoIGlzIFwicmVzcG9uc2libGVcIiBmb3IgYSBtYWluIHByb2dyYW0gdG8gYmVjb21lIGFjdGl2ZS5cclxuICAvLy8gICBGb3IgZXhhbXBsZTogaWYgdGFzayBBIGNhbGxzIHRhc2sgQiBhbmQgQidzIGN0bElkeCBpcyBkaWZmZXJlbnQgdGhhbiBBJ3MsIHRoZW4gQidzIG1haW5cclxuICAvLy8gICBwcm9ncmFtIHdpbGwgYmUgaW5zZXJ0ZWQgaW50byB0aGUgdGFzayBoaXJhcmNoeSB0aHVzIEIgaXMgXCJyZXNwb25zaWJsZVwiIGZvciB0aGUgbWFpbiBwcmcuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNyY1wiPnRoZSBcInJlc3BvbnNpYmxlXCIgdGFzay48L3BhcmFtPlxyXG4gIHNldE1haW5QcmdDcmVhdG9yKHNyYzogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX21wcmdDcmVhdG9yID0gc3JjO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgdGFzayB3aGljaCBpcyBcInJlc3BvbnNpYmxlXCIgZm9yIGEgbWFpbiBwcm9ncmFtJ3MgZXhlY3V0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBcInJlc3BvbnNpYmxlXCIgdGFzay48L3JldHVybnM+XHJcbiAgZ2V0TWFpblByZ0NyZWF0b3IoKTogVGFza0Jhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX21wcmdDcmVhdG9yO1xyXG4gIH1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIHRoZSBpc1JlYWxSZWZyZXNoIGZsYWcgdG8gYSBnaXZlbiB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0SXNSZWFsUmVmcmVzaCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzUmVhbFJlZnJlc2ggPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdHlwZSBvZiBhIHJlZnJlc2ggZXZlbnQgdHJ1ZSBpcyByZWFsIHJlZnJlc2ggZS5pLiBvbmUgaW52b2tlZCBkaXJlY3RsbHkgYnkgdGhlIHVzZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFJlZnJlc2hUeXBlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUmVhbFJlZnJlc2g7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgbWFyayB0aGUgZXZlbnQgYXMgYW4gZXZlbnQgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgdGhlIHNlcnZlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0RnJvbVNlcnZlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Zyb21TZXJ2ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIG1hcmsgdGhlIGV2ZW50IGFzIGFuIGV2ZW50IHdoaWNoIHdhcyBub3QgY3JlYXRlZCBieSB0aGUgc2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICByZXNldEZyb21TZXJ2ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mcm9tU2VydmVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHJldHVybnM+IGFuIGluZGljYXRpb24gd2hlYXRoZXIgdGhlIHNlcnZlciBjcmVhdGVkIHRoaXMgZXZlbnRcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGlzRnJvbVNlcnZlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9mcm9tU2VydmVyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxyZXR1cm5zPiBhbiBpbmRpY2F0aW9uIHdoZWF0aGVyIHRoZSBldmVudCBpcyBhIHBhcnQgb2YgcXVpdCBwcm9jZXNzXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBpc1F1aXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRTdWJUeXBlID09PSBFdmVudFN1YlR5cGUuQ2FuY2VsSXNRdWl0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEluZGljYXRlcyB0aGF0IHdlIGRvIG5vdCB3YW50IHRoZSBNR19BQ1RfQ0FOQ0VMIHRvIHBlcmZvcm0gcm9sbGJhY2suXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFJvbGxiYWNrSW5DYW5jZWwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRTdWJUeXBlICE9PSBFdmVudFN1YlR5cGUuQ2FuY2VsV2l0aE5vUm9sbGJhY2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICB3aGlsZSBleGl0IHRoZSB0YXNrIGR1ZSBlcnJvciAoY2FuIGJlIG9uIGFueSBlcnJvciBpbiBkYXRhYmFzZSBpbiBub24gaW50ZXJhY3RpdmUpXHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBFeGl0RHVlVG9FcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudFN1YlR5cGUgPT09IEV2ZW50U3ViVHlwZS5FeGl0RHVlVG9FcnJvcjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBJbmRpY2F0ZXMgdGhhdCB3ZSBkbyBub3Qgd2FudCB0aGUgTUdfQUNUX0NBTkNFTCB0byBwZXJmb3JtIHJvbGxiYWNrLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBSdFZpZXdSZWZyZXNoVXNlQ3VycmVudFJvdygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudFN1YlR5cGUgPT09IEV2ZW50U3ViVHlwZS5SdFJlZnJlc2hWaWV3VXNlQ3VycmVudFJvdztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIHN1YiBldmVudCB0eXBlICh1c2UgZm9yIGNhbmNlbCAmIHJ0X3ZpZXdfcmVmcmVzaCBhY3Rpb24pXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBTZXRFdmVudFN1YlR5cGUoZXZlbnRTdWJUeXBlOiBFdmVudFN1YlR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50U3ViVHlwZSA9IGV2ZW50U3ViVHlwZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIEZpZWxkQmFzZSB3aG9zZSBjaGFuZ2UgdHJpZ2dlcmVkIHRoaXMgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5yZWZlcmVuY2UgdG8gdGhlIGZpZWxkIHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudDwvcmV0dXJucz5cclxuICBnZXRGbGQoKTogR3VpRmllbGRCYXNlIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudEZsZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHdWkgRXZlbnQgLSBldmVudCB0aGF0IHdlcmUgYWRkZWQgYnkgR3VpIExheWVyLCBsaWtlIGNsaWNrLCB0aW1lciwgZWN0XHJcbiAgLy8vICAgRm9yIGFsbCB0aGlzIGV2ZW50IHRoZSBwcmlvcml0eSBpcyBsb3dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBmb3IgR1VJIEV2ZW50cyA8L3JldHVybnM+XHJcbiAgaXNHdWlUcmlnZ2VyZWRFdmVudCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gcHJpb3JpdHkgPC9yZXR1cm5zPlxyXG4gIGdldFByaW9yaXR5KCk6IFByaW9yaXR5IHtcclxuICAgIHJldHVybiB0aGlzLl9wcmlvcml0eTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIHByaW9yaXR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByaW9yaXR5XCI+IDwvcGFyYW0+XHJcbiAgc2V0UHJpb3JpdHkocHJpb3JpdHk6IFByaW9yaXR5KTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcmlvcml0eSA9IHByaW9yaXR5O1xyXG4gIH1cclxuXHJcbiAgaXNJZGxlVGltZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNJZGxlVGltZXI7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbDtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKHZhbDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWwgPSB2YWw7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0U3RhcnRTZWxlY3Rpb24oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25TdGFydDtcclxuICB9XHJcblxyXG4gIGdldEVuZFNlbGVjdGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkVuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIHNldEVkaXRQYXJtc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPnN0YXJ0IHNlbGVjdGlvbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJlbmRcIj5lbmQgc2VsZWN0aW9uPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRleHRcIj50aGUgdGV4dCBiZWluZyB3cml0dGVuPC9wYXJhbT5cclxuICBzZXRFZGl0UGFybXMoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uU3RhcnQgPSBzdGFydDtcclxuICAgIHRoaXMuX3NlbGVjdGlvbkVuZCA9IGVuZDtcclxuICAgIHRoaXMuc2V0VmFsdWUodGV4dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGZvciBwcm9kdWNlQ2xpY2sgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBpc1Byb2R1Y2VDbGljaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9wcm9kdWNlQ2xpY2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHByb2R1Y2UgY2xpY2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvZHVjZUNsaWNrXCI+PC9wYXJhbT5cclxuICBzZXRQcm9kdWNlQ2xpY2socHJvZHVjZUNsaWNrOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcm9kdWNlQ2xpY2sgPSBwcm9kdWNlQ2xpY2s7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgYWN0aW9uIGxpc3QgdG8gZW5hYmxlL2Rpc2FibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0QWN0RW5hYmxlTGlzdCgpOiBudW1iZXJbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0RW5hYmxlTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gc2VuZCBhbGwgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBpc1NlbmRBbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VuZEFsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgc2VuZGFsbCBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNlbmRBbGxcIj4gPC9wYXJhbT5cclxuICBzZXRTZW5kQWxsKHNlbmRBbGw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlbmRBbGwgPSBzZW5kQWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENoZWNrIGlmIHRoaXMgZXZlbnQgaXMgYmxvY2tlZCBieSB0aGUgY3VycmVudGx5IGFjdGl2ZSB3aW5kb3cuIElmIHRoZVxyXG4gIC8vLyAgIGN1cnJlbnQgd2luZG93IGlzIG1vZGFsLCBhbmQgdGhlIGV2ZW50IGRlZmluZWQgaW4gb25lIG9mIGl0cyBhbmNlc3RvcnMsXHJcbiAgLy8vICAgdGhlIGV2ZW50IHNob3VsZCBub3QgYmUgZXhlY3V0ZWQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFjdGl2ZVdpbmRvd0RhdGFcIj5UaGUgTUdEYXRhIG9iamVjdCBkZXNjcmliaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIHdpbmRvdy48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5cclxuICAvLy8gICBUaGUgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB3aW5kb3cgaXMgbW9kYWwgaXMgYVxyXG4gIC8vLyAgIGRlc2NlbmRhbnQgb2YgdGhlIGV2ZW50J3MgdGFzay4gT3RoZXJ3aXNlIGl0IHJldHVybnMgZmFsc2UuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBwdWJsaWMgaXNCbG9ja2VkQnlNb2RhbFdpbmRvdyhhY3RpdmVXaW5kb3dEYXRhOiBNR0RhdGEpOiBib29sZWFuIHtcclxuICAgIGlmIChhY3RpdmVXaW5kb3dEYXRhLklzTW9kYWwpIHtcclxuICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZXZlbnQncyB0YXNrIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBhY3RpdmUgd2luZG93J3MgdGFzay5cclxuICAgICAgbGV0IGV2ZW50VGFzazogVGFza0Jhc2UgPSB0aGlzLmdldFRhc2soKTtcclxuICAgICAgbGV0IGJhc2VUYXNrOiBUYXNrQmFzZSA9IGFjdGl2ZVdpbmRvd0RhdGEuZ2V0VGFzaygwKTtcclxuICAgICAgaWYgKGV2ZW50VGFzayAhPT0gYmFzZVRhc2sgJiYgYmFzZVRhc2suaXNEZXNjZW5kZW50T2YoZXZlbnRUYXNrKSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoXCJ7e1JURXZlbnQgezB9ICh7MX0pLCB0eXBlIHsyfXszfX19XCIsIFtcclxuICAgICAgdGhpcy5nZXRCcmtMZXZlbCgpLCB0aGlzLkludGVybmFsRXZlbnQsIHRoaXMuX3R5cGUsICh0aGlzLl90YXNrID09PSBudWxsKSA/IFwiXCIgOiAoXCIgb24gXCIgKyB0aGlzLl90YXNrKVxyXG4gICAgXSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,47 +0,0 @@
1
- import { List } from '@magic-xpa/mscorelib';
2
- import { Logger, XMLConstants } from '@magic-xpa/utils';
3
- import { Event } from './Event';
4
- import { ConstInterface } from '../ConstInterface';
5
- export class UserEventsTable {
6
- constructor() {
7
- this._userEventsTab = null;
8
- this._userEventsTab = new List();
9
- }
10
- fillData(tsk, parser) {
11
- while (this.initInnerObjects(parser, parser.getNextTag(), tsk)) {
12
- }
13
- }
14
- initInnerObjects(parser, foundTagName, tsk) {
15
- if (foundTagName === null)
16
- return false;
17
- switch (foundTagName) {
18
- case ConstInterface.MG_TAG_EVENT: {
19
- let evt = new Event();
20
- evt.fillData(parser, tsk);
21
- this._userEventsTab.push(evt);
22
- break;
23
- }
24
- case ConstInterface.MG_TAG_USER_EVENTS:
25
- parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) + 1);
26
- break;
27
- case ConstInterface.MG_TAG_USER_EVENTS_END:
28
- parser.setCurrIndex2EndOfTag();
29
- return false;
30
- default:
31
- Logger.Instance.WriteExceptionToLogWithMsg("There is no such tag in UserEventsTable.initInnerObjects : " + foundTagName);
32
- return false;
33
- }
34
- return true;
35
- }
36
- getEvent(idx) {
37
- if (idx < 0 || this._userEventsTab === null || idx >= this._userEventsTab.length)
38
- return null;
39
- return this._userEventsTab.get_Item(idx);
40
- }
41
- getSize() {
42
- if (this._userEventsTab === null)
43
- return 0;
44
- return this._userEventsTab.length;
45
- }
46
- }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckV2ZW50c1RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9Vc2VyRXZlbnRzVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFFbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbkQsTUFBTSxPQUFPLGVBQWU7SUFNMUI7UUFMUSxtQkFBYyxHQUFnQixJQUFJLENBQUM7UUFNekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLElBQUksRUFBUyxDQUFDO0lBQzFDLENBQUM7SUFLRCxRQUFRLENBQUMsR0FBUyxFQUFDLE1BQWlCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7U0FDL0Q7SUFDSCxDQUFDO0lBTU8sZ0JBQWdCLENBQUMsTUFBaUIsRUFBRSxZQUFvQixFQUFFLEdBQVM7UUFDekUsSUFBSSxZQUFZLEtBQUssSUFBSTtZQUN2QixPQUFPLEtBQUssQ0FBQztRQUVmLFFBQVEsWUFBWSxFQUFFO1lBQ3BCLEtBQUssY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsR0FBVSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUM3QixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07YUFDUDtZQUNELEtBQUssY0FBYyxDQUFDLGtCQUFrQjtnQkFDcEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRXBHLE1BQU07WUFFUixLQUFLLGNBQWMsQ0FBQyxzQkFBc0I7Z0JBQ3hDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixPQUFPLEtBQUssQ0FBQztZQUVmO2dCQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsNkRBQTZELEdBQUcsWUFBWSxDQUFDLENBQUM7Z0JBQ3pILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQsUUFBUSxDQUFDLEdBQVc7UUFFbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07WUFDOUUsT0FBTyxJQUFJLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFNRCxPQUFPO1FBRUwsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUk7WUFDOUIsT0FBTyxDQUFDLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3QgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IExvZ2dlciwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vRXZlbnQnO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuXHJcbi8vIFVzZXIgZXZlbnRzIHRhYmxlOjx1c2VyZXZlbnRzPiBldmVudCDigKY8L3VzZXJldmVudHM+XHJcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRzVGFibGUge1xyXG4gIHByaXZhdGUgX3VzZXJFdmVudHNUYWI6IExpc3Q8RXZlbnQ+ID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fdXNlckV2ZW50c1RhYiA9IG5ldyBMaXN0PEV2ZW50PigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBpbm5lciBkYXRhIDogVmVjdG9yIHVzZXJFdmVudHNUYWJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKHRzazogVGFzayxwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgd2hpbGUgKHRoaXMuaW5pdElubmVyT2JqZWN0cyhwYXJzZXIsIHBhcnNlci5nZXROZXh0VGFnKCksIHRzaykpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5wb3NzaWJsZSAgdGFnIG5hbWUsIG5hbWUgb2Ygb2JqZWN0LCB3aGljaCBuZWVkIGJlIGFsbG9jYXRlZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdElubmVyT2JqZWN0cyhwYXJzZXI6IFhtbFBhcnNlciwgZm91bmRUYWdOYW1lOiBzdHJpbmcsIHRzazogVGFzayk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHN3aXRjaCAoZm91bmRUYWdOYW1lKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UOiB7XHJcbiAgICAgICAgbGV0IGV2dDogRXZlbnQgPSBuZXcgRXZlbnQoKTtcclxuICAgICAgICBldnQuZmlsbERhdGEocGFyc2VyLCB0c2spO1xyXG4gICAgICAgIHRoaXMuX3VzZXJFdmVudHNUYWIucHVzaChldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfRVZFTlRTOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgKyAxKTtcclxuICAgICAgICAvLyBlbmQgb2Ygb3V0ZXIgdGFnIGFuZCBpdHMgXCI+XCJcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfRVZFTlRTX0VORDpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBVc2VyRXZlbnRzVGFibGUuaW5pdElubmVyT2JqZWN0cyA6IFwiICsgZm91bmRUYWdOYW1lKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdXNlciBldmVudCBieSBpdHMgaW5kZXggaW4gdGhlIHZlY3RvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggb2YgdGhlIHJlcXVlc3RlZCBldmVudCA8L3BhcmFtPlxyXG4gIGdldEV2ZW50KGlkeDogbnVtYmVyKTogRXZlbnQge1xyXG5cclxuICAgIGlmIChpZHggPCAwIHx8IHRoaXMuX3VzZXJFdmVudHNUYWIgPT09IG51bGwgfHwgaWR4ID49IHRoaXMuX3VzZXJFdmVudHNUYWIubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLl91c2VyRXZlbnRzVGFiLmdldF9JdGVtKGlkeCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBzaXplIG9mIHRoZSB1c2VyIGV2ZW50cyB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG5cclxuICAgIGlmICh0aGlzLl91c2VyRXZlbnRzVGFiID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIHJldHVybiB0aGlzLl91c2VyRXZlbnRzVGFiLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIl19