@magic-xpa/engine 4.1100.0-dev4110.253 → 4.1100.0-dev4110.256

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. package/esm2022/src/ClientManager.mjs +1 -1
  2. package/esm2022/src/CommandsProcessorBase.mjs +1 -1
  3. package/esm2022/src/CommandsProcessorManager.mjs +1 -1
  4. package/esm2022/src/CommandsTable.mjs +1 -1
  5. package/esm2022/src/CurrentClientVersion.mjs +2 -2
  6. package/esm2022/src/GUIManager.mjs +1 -1
  7. package/esm2022/src/GuiEventsProcessor.mjs +1 -1
  8. package/esm2022/src/ServerConfig.mjs +1 -1
  9. package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +1 -1
  10. package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +1 -1
  11. package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +1 -1
  12. package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +1 -1
  13. package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +1 -1
  14. package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +1 -1
  15. package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +1 -1
  16. package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +1 -1
  17. package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +1 -1
  18. package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +1 -1
  19. package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +1 -1
  20. package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +1 -1
  21. package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +1 -1
  22. package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +1 -1
  23. package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +1 -1
  24. package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +1 -1
  25. package/esm2022/src/data/DataView.mjs +1 -1
  26. package/esm2022/src/data/DvCache.mjs +1 -1
  27. package/esm2022/src/data/Field.mjs +1 -1
  28. package/esm2022/src/data/FieldsTable.mjs +1 -1
  29. package/esm2022/src/data/Key.mjs +1 -1
  30. package/esm2022/src/data/Record.mjs +2 -2
  31. package/esm2022/src/data/RecordsTable.mjs +1 -1
  32. package/esm2022/src/data/TaskTransactionManager.mjs +1 -1
  33. package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +1 -1
  34. package/esm2022/src/env/EnvVariablesTable.mjs +1 -1
  35. package/esm2022/src/env/Environment.mjs +1 -1
  36. package/esm2022/src/env/LanguageData.mjs +1 -1
  37. package/esm2022/src/env/MirrorString.mjs +1 -1
  38. package/esm2022/src/event/ActionManager.mjs +1 -1
  39. package/esm2022/src/event/Event.mjs +1 -1
  40. package/esm2022/src/event/EventHandler.mjs +1 -1
  41. package/esm2022/src/event/EventHandlerPosition.mjs +1 -1
  42. package/esm2022/src/event/EventsManager.mjs +1 -1
  43. package/esm2022/src/event/RunTimeEvent.mjs +1 -1
  44. package/esm2022/src/event/UserEventsTable.mjs +1 -1
  45. package/esm2022/src/exp/ExpTable.mjs +1 -1
  46. package/esm2022/src/exp/Expression.mjs +1 -1
  47. package/esm2022/src/exp/ExpressionEvaluator.mjs +1 -1
  48. package/esm2022/src/exp/ExpressionLocalJpn.mjs +1 -1
  49. package/esm2022/src/exp/GlobalParamsTable.mjs +1 -1
  50. package/esm2022/src/exp/YesNoExp.mjs +1 -1
  51. package/esm2022/src/gui/FormsTable.mjs +1 -1
  52. package/esm2022/src/gui/MgControl.mjs +1 -1
  53. package/esm2022/src/gui/MgForm.mjs +1 -1
  54. package/esm2022/src/http/HttpManager.mjs +1 -1
  55. package/esm2022/src/http/client/HttpClientAsync.mjs +1 -1
  56. package/esm2022/src/http/client/HttpClientBase.mjs +1 -1
  57. package/esm2022/src/http/client/HttpClientEvents.mjs +1 -1
  58. package/esm2022/src/http/client/HttpClientSync.mjs +1 -1
  59. package/esm2022/src/http/client/HttpUtility.mjs +1 -1
  60. package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +1 -1
  61. package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +1 -1
  62. package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +1 -1
  63. package/esm2022/src/remote/RemoteCommandsProcessor.mjs +1 -1
  64. package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +1 -1
  65. package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +1 -1
  66. package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +1 -1
  67. package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +1 -1
  68. package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +1 -1
  69. package/esm2022/src/remote/ServerError.mjs +1 -1
  70. package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +1 -1
  71. package/esm2022/src/rt/Argument.mjs +1 -1
  72. package/esm2022/src/rt/ArgumentsList.mjs +1 -1
  73. package/esm2022/src/rt/Boundary.mjs +1 -1
  74. package/esm2022/src/rt/CompMainPrgTable.mjs +1 -1
  75. package/esm2022/src/rt/DataviewHeaderBase.mjs +1 -1
  76. package/esm2022/src/rt/DataviewHeaders.mjs +1 -1
  77. package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +1 -1
  78. package/esm2022/src/rt/ExecutionStack.mjs +1 -1
  79. package/esm2022/src/rt/HandlersTable.mjs +1 -1
  80. package/esm2022/src/rt/LastFocusedManager.mjs +1 -1
  81. package/esm2022/src/rt/Operation.mjs +1 -1
  82. package/esm2022/src/rt/OperationTable.mjs +1 -1
  83. package/esm2022/src/rt/Recompute.mjs +1 -1
  84. package/esm2022/src/rt/RecomputeTable.mjs +1 -1
  85. package/esm2022/src/rt/RemoteDataviewHeader.mjs +1 -1
  86. package/esm2022/src/rt/TableCache.mjs +1 -1
  87. package/esm2022/src/rt/TableCacheManager.mjs +1 -1
  88. package/esm2022/src/rt/Transaction.mjs +1 -1
  89. package/esm2022/src/security/UserDetails.mjs +1 -1
  90. package/esm2022/src/tasks/MGData.mjs +1 -1
  91. package/esm2022/src/tasks/MGDataCollection.mjs +1 -1
  92. package/esm2022/src/tasks/RCTimer.mjs +1 -1
  93. package/esm2022/src/tasks/RemoteTaskService.mjs +1 -1
  94. package/esm2022/src/tasks/Task.mjs +1 -1
  95. package/esm2022/src/tasks/TaskBase.mjs +1 -1
  96. package/esm2022/src/tasks/TaskServiceBase.mjs +1 -1
  97. package/esm2022/src/tasks/TasksTable.mjs +1 -1
  98. package/esm2022/src/tasks/sort/SortCollection.mjs +1 -1
  99. package/esm2022/src/util/ConstUtils.mjs +1 -1
  100. package/esm2022/src/util/FlowMonitorQueue.mjs +1 -1
  101. package/esm2022/src/util/HeapSort.mjs +1 -1
  102. package/esm2022/src/util/MgPriorityBlockingQueue.mjs +1 -1
  103. package/esm2022/src/util/MgPriorityQueue.mjs +1 -1
  104. package/esm2022/src/util/PrmMap.mjs +1 -1
  105. package/esm2022/src/util/Scrambler.mjs +1 -1
  106. package/esm2022/src/util/UniqueIDUtils.mjs +1 -1
  107. package/esm2022/src/util/cookie.service.mjs +1 -1
  108. package/fesm2022/magic-xpa-engine.mjs +2 -2
  109. package/fesm2022/magic-xpa-engine.mjs.map +1 -1
  110. package/package.json +4 -4
@@ -413,4 +413,4 @@ export class ClientManager {
413
413
  return ClientManager.assetsURL;
414
414
  }
415
415
  }
416
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ2xpZW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RixPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sSUFBSSxFQUNKLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsY0FBYyxFQUVkLE9BQU8sRUFFUCxHQUFHLEVBQUUsYUFBYSxFQUNsQixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUc5QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLGFBQWEs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QU8sa0JBQWtCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBS0QsTUFBTSxDQUFDLDZCQUE2QjtRQUlsQyxJQUFJLHVCQUF1QixDQUFDLHVCQUF1QjtZQUNqRCxPQUFPO1FBQ1QsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUd2RCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRS9ELElBQUksOEJBQThCLEdBQW1DLGNBQWM7WUFDbkYsb0NBQW9DLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRTFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFpQiw4QkFBOEIsQ0FBQyxDQUFDO1FBRzNHLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRU0sTUFBTSxDQUFDLFlBQVk7UUFDeEIsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcGxpY2F0aW9uRXhjZXB0aW9uLCBEYXRlVGltZSwgTlN0cmluZywgUmVmUGFyYW19IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuXHJcbmltcG9ydCB7XHJcbiAgRGF0ZVRpbWVVdGlscyxcclxuICBJbnRlcm5hbEludGVyZmFjZSxcclxuICBMb2dnZXIsXHJcbiAgTWlzYyxcclxuICBPU0Vudmlyb25tZW50LFxyXG4gIFN0b3JhZ2VBdHRyaWJ1dGUsXHJcbiAgWE1MQ29uc3RhbnRzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tbWFuZHMsXHJcbiAgQ29tbWFuZFR5cGUsXHJcbiAgRGlzcGxheUNvbnZlcnRvcixcclxuICBFdmVudHMsXHJcbiAgR3VpRGF0YUNvbGxlY3Rpb24sXHJcbiAgR3VpRW52aXJvbm1lbnQsXHJcbiAgTGFzdEZvY3VzZWRWYWwsXHJcbiAgTWFuYWdlcixcclxuICBNZ0NvbnRyb2xCYXNlLFxyXG4gIFBJQywgUHJvcEludGVyZmFjZSxcclxuICBSdW50aW1lQ29udGV4dEJhc2UsXHJcbiAgU3R5bGVzLFxyXG4gIEV4cFZhbFxyXG59IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHtFdmVudHNNYW5hZ2VyfSBmcm9tICcuL2V2ZW50L0V2ZW50c01hbmFnZXInO1xyXG5pbXBvcnQge0d1aUV2ZW50c1Byb2Nlc3Nvcn0gZnJvbSAnLi9HdWlFdmVudHNQcm9jZXNzb3InO1xyXG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tICcuL2Vudi9FbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7TGFuZ3VhZ2VEYXRhfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQge1Rhc2tzVGFibGV9IGZyb20gJy4vdGFza3MvVGFza3NUYWJsZSc7XHJcbmltcG9ydCB7TWdDb250cm9sfSBmcm9tICcuL2d1aS9NZ0NvbnRyb2wnO1xyXG5pbXBvcnQge0lDbGllbnRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kJztcclxuaW1wb3J0IHtUYXNrfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQge01HRGF0YUNvbGxlY3Rpb259IGZyb20gJy4vdGFza3MvTUdEYXRhQ29sbGVjdGlvbic7XHJcbmltcG9ydCB7VW5pcXVlSURVdGlsc30gZnJvbSAnLi91dGlsL1VuaXF1ZUlEVXRpbHMnO1xyXG5pbXBvcnQge0h0dHBNYW5hZ2VyfSBmcm9tICcuL2h0dHAvSHR0cE1hbmFnZXInO1xyXG5pbXBvcnQge0NvbW1hbmRzVGFibGV9IGZyb20gJy4vQ29tbWFuZHNUYWJsZSc7XHJcbmltcG9ydCB7UmVtb3RlQ29tbWFuZHNQcm9jZXNzb3J9IGZyb20gJy4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yJztcclxuaW1wb3J0IHtDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9ufSBmcm9tICcuL0NvbW1hbmRzUHJvY2Vzc29yQmFzZSc7XHJcbmltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyfSBmcm9tICcuL0NvbW1hbmRzUHJvY2Vzc29yTWFuYWdlcic7XHJcbmltcG9ydCB7TUdEYXRhfSBmcm9tICcuL3Rhc2tzL01HRGF0YSc7XHJcbmltcG9ydCB7U2VydmVyRXJyb3J9IGZyb20gJy4vcmVtb3RlL1NlcnZlckVycm9yJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50RXZlbnRzfSBmcm9tICcuL2h0dHAvY2xpZW50L0h0dHBDbGllbnRFdmVudHMnO1xyXG5pbXBvcnQge0lHdWlFdmVudH0gZnJvbSAnLi9icmlkZ2UvSUd1aUV2ZW50JztcclxuaW1wb3J0IHtDb21tYW5kRmFjdG9yeX0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db21tYW5kRmFjdG9yeSc7XHJcbmltcG9ydCB7Q3VycmVudENsaWVudFZlcnNpb259IGZyb20gJy4vQ3VycmVudENsaWVudFZlcnNpb24nO1xyXG5pbXBvcnQge0RhdGFWaWV3fSBmcm9tICcuL2RhdGEvRGF0YVZpZXcnO1xyXG5pbXBvcnQge0xhc3RGb2N1c2VkTWFuYWdlcn0gZnJvbSAnLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXInO1xyXG5pbXBvcnQge0VudlBhcmFtc1RhYmxlfSBmcm9tICcuL2Vudi9FbnZWYXJpYWJsZXNUYWJsZSc7XHJcbmltcG9ydCB7R2xvYmFsUGFyYW1zLCBNaXJyb3JFeHBWYWx9IGZyb20gJy4vZXhwL0dsb2JhbFBhcmFtc1RhYmxlJztcclxuaW1wb3J0IHtPcGVuVVJMQ29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9PcGVuVVJMQ29tbWFuZCc7XHJcbmltcG9ydCB7U2VydmVyQ29uZmlnfSBmcm9tICcuL1NlcnZlckNvbmZpZyc7XHJcbmltcG9ydCB7QWNjZXNzSGVscGVyfSBmcm9tICcuL0FjY2Vzc0hlbHBlcic7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0NvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQnO1xyXG5pbXBvcnQge0dVSU1hbmFnZXJ9IGZyb20gXCIuL0dVSU1hbmFnZXJcIjtcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBDbGllbnRNYW5hZ2VyIHtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBDbGllbnRNYW5hZ2VyID0gbnVsbDtcclxuICBwcml2YXRlIF9nbG9iYWxVbmlxdWVTZXNzaW9uSWQ6IHN0cmluZyA9IG51bGw7XHJcbi8vICBwcml2YXRlIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsOyAvLyBjb250cm9sIHdoZXJlIGxhc3QgcGFya2luZyB3YXMgYXR0ZW1wdGVkIGJ1dCB3ZSBkaWQgbm90IHBhcmsgb24gaXRcclxuICBwcml2YXRlIF9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgc3RhdGljIGhhbmRsaW5nRmlyc3RQYXJrYWJsZUNvbnRyb2wgPSBmYWxzZTtcclxuXHJcblxyXG4gIC8vIEEgc3RhdGljIHZhcmlhYmxlIHRvIGhvbGQgZXhlY3V0aW9uIHByb3BlcnRpZXMgZmlsZSBlaXRoZXIgZnJvbSB0aGUgYXNzZXRzIGZvbGRlciBvciB0aGUgVVJMIHByb3ZpZGVkIGJ5IHRoZSBjdXN0b21lci5cclxuICBwcml2YXRlIHN0YXRpYyBfZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLyBBIHN0YXRpYyB2YXJpYWJsZSB0byBob2xkIGFzc2V0cyBVUkwsIGhhdmluZyBkZWZhdWx0IHZhbHVlIG9mIGFzc2V0cyBmb2xkZXIuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXNzZXRzVVJMOiBzdHJpbmcgPSBcIi4vYXNzZXRzXCI7XHJcblxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogQ2xpZW50TWFuYWdlciB7XHJcbiAgICBpZiAoQ2xpZW50TWFuYWdlci5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIENsaWVudE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IENsaWVudE1hbmFnZXIoKTtcclxuXHJcbiAgICByZXR1cm4gQ2xpZW50TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQWRkRXZlbnQoZ3VpRXZlbnQ6IElHdWlFdmVudCk6IHZvaWQge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKGd1aUV2ZW50LlRhc2tJRCk7XHJcbiAgICBsZXQgbGluZUlkeDogbnVtYmVyID0gK2d1aUV2ZW50LkxpbmU7XHJcbiAgICBsZXQgZHZSb3dJZHg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKHRhc2sgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgICBpZiAoZ3VpRXZlbnQuQ29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBkdjogRGF0YVZpZXcgPSA8RGF0YVZpZXc+dGFzay5EYXRhVmlldztcclxuICAgICAgICBpZiAoY29udHJvbC5Jc1RhYmxlQ2hpbGQpIHtcclxuICAgICAgICAgIGxpbmVJZHggLT0gZHYuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjb2x1bW5Tb3J0XCI6XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQ29sdW1uU29ydGFibGUoKSkge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJtb3VzZWRvd25cIjpcclxuICAgICAgICAgICAgLy8gRGVmZWN0IDE1MjI4OCAmIERlZmVjdCAxNTIyNjg6IFByb2JsZW06IFdoZW4gYnV0dG9uIGlzIGNsaWNrZWQsIHdlIGdldCBmb2N1cyBldmVudCBmaXJzdCBhbmQgaWYgbWVzc2FnZUJveCBpcyBvcGVuZWQgaGVyZSBsaWtlIHZlcmlmeSwgZXRjLlxyXG4gICAgICAgICAgICAvLyB3ZSBkbyBub3QgcmVjZWl2ZSBjbGljayBldmVudC4gSGVuY2UgZXZlbnRzIGFyZSBub3QgcHJvY2Vzc2VkLiBTb2x1dGlvbjogV2UgZG8gbmVlZCBjbGljayBoYW5kbGluZyBmb3IgYnV0dG9uIGFzIGl0IGlzIGNhbGxlZCB3aGVuIHdlIHBhcmtcclxuICAgICAgICAgICAgLy8gb24gYnV0dG9uIGFuZCBwcmVzcyBzcGFjZSBrZXkuIFdlIG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgZm9yIGV4ZWN1dGluZyBDUCAmIENTIHdoZW4gcGFya2VkIG9uIGJ1dHRvbiBieSB0YWIga2V5LiBTbyB3ZSBuZWVkIHRvIG1hbmFnZVxyXG4gICAgICAgICAgICAvLyBob3cgY2xpY2sgaXMgaGFuZGxlZC4gV2UgZG8gbm90IG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgd2hlbiB3ZSBjbGljayBvbiBidXR0b24sIHNvIG9uIG1vdXNlZG93biwgc2V0IGEgZmxhZyB3aGljaCB3aWxsIGJlIHVzZWQgaW4gZm9jdXNcclxuICAgICAgICAgICAgLy8gZXZlbnQgaGFuZGxpbmcgdG8gc2tpcCBpdHMgaGFuZGxpbmcuIFRoZW4gd2Ugd2lsbCByZWNlaXZlIGNsaWNrIGV2ZW50IHdoZXJlIHRoaXMgd2lsbCBiZSBhY3R1YWxseSBoYW5kbGVkIGFuZCBoZW5jZSB3b3JrLlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpIHx8IChjb250cm9sLklzVGFibGVDaGlsZCAmJiBjb250cm9sLmlzQ2hlY2tCb3goKSkgfHwgKGNvbnRyb2wuQ29ubmVjdGVkQ29udHJvbCAmJiBndWlFdmVudC5mcm9tQnV0dG9uKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2J1dHRvbklzQ2xpY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWNvbnRyb2wuaXNTdWJmb3JtKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0KE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpKS5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gY29udHJvbC5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpIHx8IChjb250cm9sLkNvbm5lY3RlZENvbnRyb2wgJiYgZ3VpRXZlbnQuZnJvbUJ1dHRvbikpe1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihcIlwiLCBjb250cm9sLCBsaW5lSWR4LCB0cnVlKTtcclxuICAgICAgICAgICAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjb250cm9sLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLl9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIHNvcnRpbmcgc2hvdWxkIGJlIGhhbmRsZWQgb25seSBvbiBjb2x1bW4gY2xpY2sgYW5kIG5vdCBvbiByb3dEYXRhXHJcbiAgICAgICAgICAgICAgLy8gZWxzZSBpZiAoY29udHJvbC5UeXBlID09PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DT0xVTU4pIHtcclxuICAgICAgICAgICAgICAvLyAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Gb2N1cyhjb250cm9sLCBsaW5lSWR4LCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgbGV0IHByb2R1Y2VDbGljazogYm9vbGVhbiA9IGNvbnRyb2wuaXNCdXR0b24oKSB8fCBjb250cm9sLmlzVGV4dENvbnRyb2woKSB8fCBjb250cm9sLmlzTGFiZWwoKSB8fCBjb250cm9sLmlzVGFiQ29udHJvbCgpIHx8IGNvbnRyb2wuaXNUYWJsZUNvbnRyb2woKSB8fCBjb250cm9sLmlzQ29tYm9Cb3goKSB8fCBjb250cm9sLmlzSW1hZ2VDb250cm9sKCk7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uTW91c2VEb3duKGNvbnRyb2wuZ2V0Rm9ybSgpLCBjb250cm9sLCBudWxsLCB0cnVlLCBsaW5lSWR4LCBmYWxzZSwgcHJvZHVjZUNsaWNrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c1wiOlxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbklzQ2xpY2tlZCB8fCAoY29udHJvbC5Db25uZWN0ZWRDb250cm9sICYmIGd1aUV2ZW50LmZyb21CdXR0b24pKVxyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIC8vIC8vIElmIHdlIGF0dGVtcHQgdG8gcGFyayBvbiBjb250cm9sIHdoZXJlIHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IHRvIHBhcmsgbGlrZSBpZiBjb250cm9sIGhhcyBleHByZXNzaW9uIG9yIHBhcmVudCB0YXNrIGZpZWxkLCBkbyBub3QgYWxsb3cgdG8gZm9jdXMgb24gaXQuXHJcbiAgICAgICAgICAgIC8vIC8vIFNldCBGb2N1cyBiYWNrIHRvIGxhc3RGb2N1c2VkQ29udHJvbC4gV2UgbmVlZCBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sIGFzIHdlIGdldCBmb2N1cyBldmVudCBvbiBhIGNvbnRyb2wgdHdpY2UuIFNvIHRvIGF2b2lkIHRvIHNob3cgZXJyb3IgbXVsdGlwbGUgdGltZXMsXHJcbiAgICAgICAgICAgIC8vIC8vIG1haW50YWluIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wuXHJcbiAgICAgICAgICAgIC8vIGlmIChjb250cm9sICE9PSB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgJiYgY29udHJvbC5IYXNFeHBPclBhcmVudFRhc2tGaWVsZCgpKSB7XHJcbiAgICAgICAgICAgIC8vICAgLy8gU2hvdyBlcnJvciBvbmx5IGZvciBjb250cm9scyBoYXZpbmcgRGF0YSBwcm9wZXJ0eSBhbmQgcGFya2FibGVcclxuICAgICAgICAgICAgLy8gICBpZihjb250cm9sLmlzTGlzdEJveCgpIHx8IGNvbnRyb2wuaXNDaGVja0JveCgpIHx8IGNvbnRyb2wuaXNDb21ib0JveCgpIHx8IGNvbnRyb2wuaXNUZXh0Q29udHJvbCgpIHx8IGNvbnRyb2wuaXNSYWRpbygpIHx8IGNvbnRyb2wuaXNUYWJDb250cm9sKCkpIHtcclxuICAgICAgICAgICAgLy8gICAgIENvbW1hbmRzLm1lc3NhZ2VCb3gobnVsbCwgXCJFcnJvclwiLCBcIkNvbnRyb2wgZWl0aGVyIGhhcyBleHByZXNzaW9uIG9yIGhhcyBwYXJlbnQgdGFzayB2YXJpYWJsZSBhdHRhY2hlZCB0byBpdC4gRmFpbGVkIHRvIHBhcmsgb24gY29udHJvbCB3aXRoIG5hbWU6IFwiICsgY29udHJvbC5OYW1lLCBTdHlsZXMuTVNHQk9YX0lDT05fRVJST1IgfCBTdHlsZXMuTVNHQk9YX0JVVFRPTl9PSyk7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBEZWZlY3QgMTUyNzI4OiBVc2UgbGFzdCBmb2N1c2VkIHRhc2sgaW5zdGVhZCBjb250cm9sIHRhc2sgYXMgY29udHJvbCBjYW4gYmUgZnJvbSBzdWJmb3JtLlxyXG4gICAgICAgICAgICAvLyAgICAgRm9jdXNNYW5hZ2VyLlNldEZvY3VzKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRMYXN0Rm9jdXNlZFRhc2soKSwgTGFzdEZvY3VzZWRNYW5hZ2VyLmdldExhc3RGb2N1c2VkQ29udHJvbCgpLCAwLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgIExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKSA9PT0gbnVsbCA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBjb250cm9sO1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFDbGllbnRNYW5hZ2VyLmhhbmRsaW5nRmlyc3RQYXJrYWJsZUNvbnRyb2wpXHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXMoY29udHJvbCwgbGluZUlkeCwgdHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiZGJsY2xpY2tcIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uRGJsQ2xpY2soY29udHJvbCwgbGluZUlkeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VkXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihndWlFdmVudC5WYWx1ZSwgY29udHJvbCwgbGluZUlkeCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImtleWRvd25cIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uS2V5RG93biggdGFzay5nZXRGb3JtKCksIGNvbnRyb2wsIGd1aUV2ZW50Lm1vZGlmaWVycywgZ3VpRXZlbnQua2V5Q29kZSwgMCwwLCAnJyxmYWxzZSwnJyx0cnVlICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInNldGV4dGVybmFsdmFsdWVcIjpcclxuICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRFeHRlcm5hbFZhbHVlRXZlbnQoKDxNZ0NvbnRyb2w+Y29udHJvbCksIGd1aUV2ZW50LmV4dGVybmFsVmFsdWUsIGd1aUV2ZW50LnBhcmFtKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInVuaGFuZGxlZCBldmVudDogXFxcIlwiICsgZ3VpRXZlbnQuRXZlbnRUeXBlICsgXCJcXFwiXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c09uTm9uTWFnaWNDb250cm9sXCI6XHJcbiAgICAgICAgICAgIGNvbnRyb2wgPSBMYXN0Rm9jdXNlZE1hbmFnZXIuZ2V0TGFzdEZvY3VzZWRDb250cm9sKCk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXNPbk5vbk1hZ2ljQ29udHJvbChjb250cm9sKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZihndWlFdmVudC5Db250cm9sTmFtZSA9PT0gXCJtYWdpY1Jvd1wiKSB7XHJcbiAgICAgICAgICAgICAgZHZSb3dJZHggPSBndWlFdmVudC5MaW5lIC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZUFuZExpbmUodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVgsIGR2Um93SWR4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJuYXZpZ2F0ZUluVGFibGVcIjpcclxuICAgICAgICAgICAgaWYgKGd1aUV2ZW50LkNvbnRyb2xOYW1lID09PSBcIm1hZ2ljUm93XCIpXHJcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVOYXZpZ2F0ZUluUm93RXZlbnQodGFzaywgZ3VpRXZlbnQuVmFsdWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbG9zZVwiOlxyXG4gICAgICAgICAgICBpZiAodGFzay5Jc1JvdXRlKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRSb3V0ZXJDbG9zZWRFdmVudCh0YXNrKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIEV2ZW50cy5DbG9zZUZvcm1FdmVudCh0YXNrLmdldEZvcm0oKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImRpc3Bvc2VcIjpcclxuICAgICAgICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5kZWxldGVNR0RhdGFUcmVlKHRhc2suZ2V0TWdkSUQoKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInJlc2l6ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHMuVGFibGVSZXNpemVFdmVudCh0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgZ3VpRXZlbnQuUGFnZVNpemUpO1xyXG4gICAgICAgICAgLy9jYXNlICdicmVhaycgaXMgbWlzc2luZyBmb3IgJ3Jlc2l6ZScgd2l0aCBpbnRlbnRpb24gdG8gZXhlY3V0ZSBnZXRSb3dzIHdpdGggdGhlIGRlc2lyZWQgZGF0YXZpZXcgcm93IGluZGV4LlxyXG4gICAgICAgICAgY2FzZSBcImdldFJvd3NcIjpcclxuICAgICAgICAgICAgZHZSb3dJZHggPSBsaW5lSWR4IC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgIGxldCBsYXN0Rm9jdXNlZFZhbDogTGFzdEZvY3VzZWRWYWwgPSB7Z3VpTWdDb250cm9sOiB0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgTGluZTogZHZSb3dJZHgsIFZhbDogXCJcIn07XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkdldFJvd3NEYXRhKHRhc2suZ2V0Rm9ybSgpLmdldFRhYmxlQ3RybCgpLCBkdlJvd0lkeCwgdHJ1ZSwgbGFzdEZvY3VzZWRWYWwpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJSb3V0ZXJOYXZpZ2F0ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkFkZFJvdXRlRXZlbnQodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQkNMSUVOVF9ST1VURSwgZ3VpRXZlbnQuUm91dGVyUGF0aCwgZ3VpRXZlbnQuUm91dGVyT3V0bGV0TmFtZSxcclxuICAgICAgICAgICAgICBndWlFdmVudC5Sb3V0ZXJQYXJhbXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJzZXRleHRlcm5hbHZhbHVlXCI6XHJcbiAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJVbmFibGUgdG8gZmluZCB7MH06IFRyeWluZyB0byBzZXQgdmFsdWUgZm9yIGEgbm9uLWV4aXN0aW5nIGNvbnRyb2wuXCIsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coIFwidW5oYW5kbGVkIGV2ZW50OiBcXFwiXCIgKyBndWlFdmVudC5FdmVudFR5cGUgKyBcIlxcXCJcIik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSAvL3Rhc2sgPT0gbnVsbFxyXG4gICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG4gICAgICAgIGNhc2UgXCJjb25maXJtYXRpb25DbG9zZWRcIjpcclxuICAgICAgICAgIHRoaXMuQ29uZmlybWF0aW9uQ2xvc2VkKGd1aUV2ZW50LmtleUNvZGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTmF2aWdhdGVJblJvd0V2ZW50KHRhc2s6IFRhc2ssIGV2dDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTk9ORTtcclxuICAgIGV2dCA9IGV2dC50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIHN3aXRjaCAoZXZ0KSB7XHJcbiAgICAgIGNhc2UgXCJiZWdpbi1wYWdlXCI6XHJcbiAgICAgICAgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1BBR0U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwicHJldmlvdXMtcGFnZVwiOlxyXG4gICAgICAgIGludGVybmFsRXZ0ID0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZQQUdFO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImVuZC1wYWdlXCI6XHJcbiAgICAgICAgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0VORFBBR0U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwibmV4dC1wYWdlXCI6XHJcbiAgICAgICAgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX05YVFBBR0U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwicHJldmlvdXMtbGluZVwiOlxyXG4gICAgICAgIGludGVybmFsRXZ0ID0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZMSU5FO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcIm5leHQtbGluZVwiOlxyXG4gICAgICAgIGludGVybmFsRXZ0ID0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9OWFRMSU5FO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImJlZ2luLXRhYmxlXCI6XHJcbiAgICAgICAgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1RCTDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJlbmQtdGFibGVcIjpcclxuICAgICAgICBpbnRlcm5hbEV2dCA9IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfRU5EVEJMO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpbnRlcm5hbEV2dCAhPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTk9ORSlcclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZSh0YXNrLCBpbnRlcm5hbEV2dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJhaXNlIGNhbGxiYWNrIG9uIGNsb3NpbmcgY29uZmlybWF0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDb25maXJtYXRpb25DbG9zZWQocmVzOiBudW1iZXIpOiB2b2lkXHJcbiAge1xyXG4gICAgQ29tbWFuZHMuUmVzb2x2ZVByb21pc2UocmVzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gdGhlIHdvcmsgdGhyZWFkJ3MgZW50cnkgbWV0aG9kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBXb3JrVGhyZWFkRXhlY3V0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2coKSkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIlwiLCB0cnVlKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJTdGFydGVkIG9uIFwiICsgRGF0ZVRpbWVVdGlscy5Ub1N0cmluZyhEYXRlVGltZS5Ob3csIFhNTENvbnN0YW50cy5FUlJPUl9MT0dfREFURV9GT1JNQVQsIExvZ2dlci5JbnN0YW5jZSksIHRydWUpO1xyXG4gICAgICB0aGlzLldyaXRlRXhlY3V0aW9uUHJvcGVydGllc1RvTG9nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGF3YWl0IENvbW1hbmRzUHJvY2Vzc29yTWFuYWdlci5TdGFydFNlc3Npb24oKSkge1xyXG4gICAgICAgIGxldCBtZ0RhdGFUYWI6IE1HRGF0YUNvbGxlY3Rpb24gPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgICAgIGxldCBzdGFydHVwTWdEYXRhOiBNR0RhdGEgPSBtZ0RhdGFUYWIuU3RhcnR1cE1nRGF0YTtcclxuICAgICAgICBtZ0RhdGFUYWIuY3Vyck1nZElEID0gc3RhcnR1cE1nRGF0YS5HZXRJZCgpO1xyXG5cclxuICAgICAgICBsZXQgbm9uSW50ZXJhY3RpdmVUYXNrOiBUYXNrID0gbnVsbDtcclxuICAgICAgICBpZiAoIXN0YXJ0dXBNZ0RhdGEuSXNBYm9ydGluZylcclxuICAgICAgICAgIG5vbkludGVyYWN0aXZlVGFzayA9IGF3YWl0IFRhc2suU3RhcnRQcm9ncmFtKGZhbHNlLCBmYWxzZSk7XHJcblxyXG4gICAgICAgIGlmIChub25JbnRlcmFjdGl2ZVRhc2sgPT09IG51bGwpXHJcbiAgICAgICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkV2ZW50c0xvb3Aoc3RhcnR1cE1nRGF0YSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Ob25JbnRlcmFjdGl2ZUV2ZW50c0xvb3Aoc3RhcnR1cE1nRGF0YSwgbm9uSW50ZXJhY3RpdmVUYXNrKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRoZSBcImVuZCBvZiB3b3JrXCIgZmxhZyBvbmx5IGZvciB0aGUgbWFpbiB3aW5kb3dcclxuICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLnNldEVuZE9mV29yayh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIGlmIChleCBpbnN0YW5jZW9mIEFwcGxpY2F0aW9uRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgbGV0IGlzTm9SZXN1bHRFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChleCBpbnN0YW5jZW9mIFNlcnZlckVycm9yICYmICg8U2VydmVyRXJyb3I+ZXgpLkdldENvZGUoKSA9PT0gU2VydmVyRXJyb3IuSU5GX05PX1JFU1VMVClcclxuICAgICAgICAgIGlzTm9SZXN1bHRFcnJvciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICghaXNOb1Jlc3VsdEVycm9yKVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Qcm9jZXNzQWJvcnRpbmdFcnJvcihleCk7XHJcblxyXG4gICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2Uuc2V0RW5kT2ZXb3JrKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBleDtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkNoZWNrQW5kU2hvd1NwaW5uZXIoZmFsc2UpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYWRkR2xvYmFsQ29tbWFuZChDb21tYW5kVHlwZS5FWElUX01BR0lDKTtcclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gV3JpdGUgRXhlY3V0aW9uIHByb3BlcnRpZXMgdG8gbG9nLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgV3JpdGVFeGVjdXRpb25Qcm9wZXJ0aWVzVG9Mb2coKTogdm9pZCB7XHJcbiAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLlNob3VsZExvZ1NlcnZlclJlbGF0ZWRNZXNzYWdlcygpKSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIiwgdHJ1ZSk7XHJcbiAgICAgIC8vIFdyaXRlIGhlYWRpbmdcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJFeGVjdXRpb24gUHJvcGVydGllczpcIiwgdHJ1ZSk7XHJcblxyXG4gICAgICBsZXQgcHJvcHNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShTZXJ2ZXJDb25maWcuSW5zdGFuY2UpO1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhwcm9wc1N0cmluZywgdHJ1ZSk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgQ2xpZW50TWFuYWdlci5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJTZXJ2ZXJDb25maWdVUkxcIikgPz8gXCIuL2Fzc2V0cy9zZXJ2ZXItY29uZmlnLmpzb25cIjtcclxuICAgIFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5Jbml0KFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLlJDX05PX0NPTlRFWFRfSUQpO1xyXG4gICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkluaXQoTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZSk7XHJcbiAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuTGFzdEFjdGlvblRpbWUgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG5cclxuXHJcbiAgICBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5TaG91bGRTY3JhbWJsZUFuZFVuc2NyYW1ibGVNZXNzYWdlcyA9IHRydWU7XHJcblxyXG5cclxuICAgIC8vIFRPRE86IEhvdyB0byBnZXQgUHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLklkP1xyXG4gICAgdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkID0gVW5pcXVlSURVdGlscy5HZXRVbmlxdWVNYWNoaW5lSUQoKSArIFwiX1wiOyAvLyArIFByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKS5JZDtcclxuXHJcbiAgICB0aGlzLlJlZ2lzdGVyRGVsZWdhdGVzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEluaXRpYWxpemUgdGhlIGRhdGEgbmVlZGVkIGJ5IHRoZSBndWkgbGlicmFyeVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBDbGllbnRNYW5hZ2VyIGluc3RhbmNlPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgSW5pdEd1aU1hbmFnZXIoKTogdm9pZCB7XHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIgPSBFdmVudHNNYW5hZ2VyLkluc3RhbmNlO1xyXG4gICAgTWFuYWdlci5EZWZhdWx0U2VydmVyTmFtZSA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRTZXJ2ZXIoKTtcclxuICAgIE1hbmFnZXIuRGVmYXVsdFByb3RvY29sID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFByb3RvY29sKCk7XHJcbiAgICBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gICAgR3VpRGF0YUNvbGxlY3Rpb24uTUdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLm5vQ29udGV4dElkID0gUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuUkNfTk9fQ09OVEVYVF9JRDtcclxuICB9XHJcblxyXG4gIC8vLyBJbml0aWFsaXplIGdsb2JhbCBkYXRhIGluIG9iamVjdHMgdXNlZCB0byBvdmVyY29tZSB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpc3N1ZVxyXG4gIHByaXZhdGUgSW5pdENpcmN1bGFyUmVmZXJlbmNlc0J5cGFzc2VzKCkge1xyXG4gICAgVGFza3NUYWJsZS5jcmVhdGVOZXd0YXNrID0gVGFzay5DcmVhdGVUYXNrO1xyXG4gICAgT3BlblVSTENvbW1hbmQuY3JlYXRlTmV3Q29tbWFuZHNUYWJsZSA9IENvbW1hbmRzVGFibGUuY3JlYXRlQ29tbWFuZHNUYWJsZTtcclxuXHJcbiAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlciA9IEV2ZW50c01hbmFnZXIuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmVudlBhcmFtc1RhYmxlID0gRW52UGFyYW1zVGFibGUuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIuZ2xvYmFsUGFyYW1zID0gR2xvYmFsUGFyYW1zLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmxhbmd1YWdlRGF0YSA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBFbnRyeSBwb2ludCB0byB0aGUgV2ViIENsaWVudCA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJnc1wiPmFycmF5IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHM8L3BhcmFtPlxyXG4gIHN0YXRpYyBNYWluKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGFyZ3M6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcclxuICAgIGxldCB2YWw6IEV4cFZhbDtcclxuXHJcbiAgICBhcmdzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgdmFsID0gbmV3IEV4cFZhbChTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUsIGZhbHNlLCB2YWx1ZSk7XHJcbiAgICAgIEdsb2JhbFBhcmFtcy5JbnN0YW5jZS5zZXRWYWx1ZShrZXksIG5ldyBNaXJyb3JFeHBWYWwodmFsKSwgdHJ1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBUT0RPIDogQ2hlY2sgaG93IHRvIGxvYWQgZnJvbSBTdHVkaW8gaS5lLiBGN1xyXG4gICAgLy8gaWYgKGFyZ3MubGVuZ3RoICE9PSAwICYmIE5TdHJpbmcuU3RhcnRzV2l0aChhcmdzWzBdLCBcIi9zcGF3bmFoZWFkXCIpKSB7XHJcbiAgICAvLyAgIENsaWVudE1hbmFnZXIuX3N0YXJ0ZWRGcm9tU3R1ZGlvID0gdHJ1ZTtcclxuICAgIC8vICAgU3R1ZGlvTGF1bmNoZXIuSW5pdChhcmdzKTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2VcclxuICAgIENsaWVudE1hbmFnZXIuU3RhcnRFeGVjdXRpb24oaHR0cENsaWVudCk7XHJcblxyXG4gICAgTG9nZ2VyLkluc3RhbmNlLkZsdXNoKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFRlcm1pbmF0ZSB0aGUgY2xpZW50IGFuZCB0ZXJtaW5hdGUgdGhlIGNvbnRleHQgPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBhc3luYyBTdG9wRXhlY3V0aW9uKCk6IFByb21pc2UgPHZvaWQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuSXNBYm9ydGluZ01hZ2ljRW5naW5lID0gdHJ1ZTtcclxuICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLkNsb3NpbmdGb3JtVUkgPSB0cnVlO1xyXG5cclxuICAgICAgYXdhaXQgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLmVuZFRhc2sodHJ1ZSwgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4Mykge1xyXG4gICAgICBpZiAoZXgzIGluc3RhbmNlb2YgQXBwbGljYXRpb25FeGNlcHRpb24pIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZyhleDMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBleDM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgU3RhcnRFeGVjdXRpb24oaHR0cENsaWVudDpIdHRwQ2xpZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBIdHRwTWFuYWdlci5zZXROYXRpdmVIdHRwQ2xpZW50KGh0dHBDbGllbnQpO1xyXG4gICAgbGV0IGxvYWRlZDogYm9vbGVhbiA9IGF3YWl0IENsaWVudE1hbmFnZXIuSW5zdGFuY2UuTG9hZEV4ZWN1dGlvblByb3BzKCk7XHJcblxyXG4gICAgaWYgKGxvYWRlZCkge1xyXG4gICAgICBuZXcgR3VpRXZlbnRzUHJvY2Vzc29yKCk7XHJcbiAgICAgIENsaWVudE1hbmFnZXIuSW5zdGFuY2UuSW5pdEd1aU1hbmFnZXIoKTtcclxuICAgICAgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Jbml0Q2lyY3VsYXJSZWZlcmVuY2VzQnlwYXNzZXMoKTtcclxuICAgICAgbGV0IHZlcnNpb25TdHJpbmcgPSBDdXJyZW50Q2xpZW50VmVyc2lvbiA9PT0gICcwLjAuMC4wJyA/IFwiRGV2ZWxvcG1lbnQgbW9kZVwiIDogXCJWZXJzaW9uIDogXCIgKyBDdXJyZW50Q2xpZW50VmVyc2lvbiA7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIk1hZ2ljIFdlYiBDbGllbnQuIFwiICsgdmVyc2lvblN0cmluZyk7XHJcblxyXG4gICAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLkh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEZpcnN0SHR0cFJlcXVlc3RUaW1lb3V0KCk7XHJcblxyXG4gICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkluaXQoKTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Jbml0aWFsaXplKFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLkdldEluc3RhbmNlKCkucGFyc2VMb2dMZXZlbChTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0SW50ZXJuYWxMb2dMZXZlbCgpKSxmYWxzZSk7XHJcblxyXG4gICAgICBsZXQgbWdkOiBNR0RhdGEgPSBuZXcgTUdEYXRhKFxyXG4gICAgICAgIG5ldyBDb21tYW5kc1RhYmxlKCksXHJcbiAgICAgICAgbmV3IENvbW1hbmRzVGFibGUoKSxcclxuICAgICAgICAwLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgIGF3YWl0IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuYWRkTUdEYXRhKG1nZCwgMCwgdHJ1ZSk7XHJcblxyXG4gICAgICBhd2FpdCBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLldvcmtUaHJlYWRFeGVjdXRpb24oKTtcclxuXHJcbiAgICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuU2hvdWxkTG9nKCkpIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhPU0Vudmlyb25tZW50LkVvbFNlcSArIFwiRW5kZWQgb24gXCIgKyBEYXRlVGltZVV0aWxzLlRvU3RyaW5nKERhdGVUaW1lLk5vdywgWE1MQ29uc3RhbnRzLkVSUk9SX0xPR19EQVRFX0ZPUk1BVCwgTG9nZ2VyLkluc3RhbmNlKSArIE9TRW52aXJvbm1lbnQuRW9sU2VxICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEsIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG4gICAgICBhd2FpdCBHVUlNYW5hZ2VyLkluc3RhbmNlLk1lc3NhZ2VCb3goXCJFcnJvclwiLCBcIkZhaWxlZCB0byBsb2FkIHNlcnZlciBjb25maWd1cmF0aW9uIGZpbGUgKFwiICsgdGhpcy5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lICsgXCIpXCIsIFN0eWxlcy5NU0dCT1hfSUNPTl9FUlJPUiB8IFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gTG9hZHMgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyLFxyXG4gIC8vLyBhcHBsaWNhdGlvbiBhbmQgcHJvZ3JhbSB0byBleGVjdXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBMb2FkRXhlY3V0aW9uUHJvcHMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cclxuICAgIGxldCByZXNwb25zZTogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBzdWNjZWVkZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIGlzRXJyb3IgY2Fubm90IGJlIHRydWUgaGVyZSwgYmVjYXVzZSBpdCBpcyByZXR1cm5lZCBieSBydW50aW1lIGVuZ2luZSBhbmQgdG8gcmVhZCBleGVjdXRpb24gcHJvcGVydGllcywgd2UgZG8gbm90IHJlYWNoIHRoZSBlbmdpbmUuXHJcbiAgICAgIGxldCBpc0Vycm9yOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbShmYWxzZSk7XHJcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5HZXRDb250ZW50KENsaWVudE1hbmFnZXIuX2V4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZSwgbnVsbCwgZmFsc2UsIGlzRXJyb3IpO1xyXG4gICAgICBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuSW5pdChKU09OLnBhcnNlKHJlc3BvbnNlKSk7XHJcblxyXG4gICAgICBsZXQgYXNzZXRzVVJMID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldEFzc2V0c1VSTCgpO1xyXG5cclxuICAgICAgaWYoYXNzZXRzVVJMICE9PSBudWxsKXtcclxuICAgICAgICBDbGllbnRNYW5hZ2VyLmFzc2V0c1VSTCA9IGFzc2V0c1VSTDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB3aW5kb3cuYXNzZXRzVVJMID0gQ2xpZW50TWFuYWdlci5hc3NldHNVUkw7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgc3VjY2VlZGVkID0gZmFsc2U7XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSB3cml0ZSB0aGUgZXJyb3IgbWVzc2FnZSB0byBsb2c/XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGJyb3dzZXI/XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN1Y2NlZWRlZDtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmdsb2JhbCB1bmlxdWUgSUQgb2YgdGhlIHNlc3Npb24gPSAnbWFjaGluZSB1bmlxdWUgSUQnICsgJ3Byb2Nlc3MgSUQnPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgY29udHJvbCdzIHBpY3R1cmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljICBHZXRDb250cm9sUGljdHVyZU1hc2sodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBQSUNcclxuICB7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbCAmJiB0YXNrICE9IG51bGwpIHtcclxuICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgICBwaWMgPSBjb250cm9sLmdldFBJQygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwaWM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGZvcm1hdHRlZCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgIEdldEZvcm1hdHRlZFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCByb3dJZD86IHN0cmluZyk6IHN0cmluZ1xyXG4gIHtcclxuICAgIGxldCBwaWM6IFBJQyA9IG51bGw7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IHZhbHVlO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbCAgJiYgdGFzayAhPT0gbnVsbClcclxuICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wgIT0gbnVsbCAmJiBjb250cm9sLkRhdGFUeXBlID09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQykge1xyXG4gICAgICBpZiAoY29udHJvbC5pc1JlcGVhdGFibGUoKSAmJiAgY29udHJvbC5nZXRQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPUk1BVCkuaXNFeHByZXNzaW9uKCkpXHJcbiAgICAgIHtcclxuICAgICAgICBsZXQgcGljdmFsID0gY29udHJvbC5nZXRQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPUk1BVCkuZ2V0UHJldlZhbHVlKCtyb3dJZCk7XHJcbiAgICAgICAgcGljID0gbmV3IFBJQyAocGljdmFsLCBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMsICBjb250cm9sLmdldEZvcm0oKS5nZXRUYXNrKCkuZ2V0Q29tcElkeCgpKVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBwaWMgPSBjb250cm9sLmdldFBJQygpO1xyXG5cclxuICAgICAgbGV0IGRpc3BWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XHJcbiAgICAgIGxldCAgbmV3UGljID0gcGljLmdldFVuZm9ybWF0dGVkTnVtZXJpY1BpYygpO1xyXG5cclxuICAgICAgbGV0IG51bSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0oZGlzcFZhbHVlLCBuZXdQaWMsIDApO1xyXG4gICAgICBuZXdWYWx1ZSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UuZnJvbU51bShudW0sIHBpYyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHJhbmdlZCB2YWx1ZSBmb3IgaW5wdXQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyAgR2V0UmFuZ2VkVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgICByZXR1cm4gY29udHJvbC5nZXRSYW5nZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB2YWxpZGF0ZSB1c2VyIGlucHV0IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgIFZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wudmFsaWRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGZsZCByYW5nZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBHZXRGbGRSYW5nZXModGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wuZ2V0UmFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBSZXR1cm5zIHdoZXRoZXIgY2xpZW50L3NlcnZlciBjYWNoZSBleGlzdHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUcmFuc0NhY2hlRXhpc3RzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNsaWVudFRyYW5zQ2FjaGVFeGlzdHM6IGJvb2xlYW4gPSBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpLmNsaWVudFRyYW5zYWN0aW9uQ2FjaGVFeGlzdHMoKTtcclxuICAgIGxldCBzZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzOiBib29sZWFuID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKS5zZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzKCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudFRyYW5zQ2FjaGVFeGlzdHMgfHwgc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0cztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU3Vic2NyaWJlIGZvciBldmVudHMgZGVmaW5lZCBhdCBIdHRwQ2xpZW50RXZlbnRzIGFuZFxyXG4gIC8vLyBhdHRhY2ggYXBwcm9wcmlhdGUgZXZlbnQgaGFuZGxlcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUmVnaXN0ZXJEZWxlZ2F0ZXMoKTogdm9pZCB7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldEV4ZWN1dGlvblByb3BlcnR5X0V2ZW50ID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEV4ZWN1dGlvblByb3BlcnR5LmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0UnVudGltZUN0eElEX0V2ZW50ID0gdGhpcy5HZXRSdW50aW1lQ3R4SUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEX0V2ZW50ID0gdGhpcy5HZXRHbG9iYWxVbmlxdWVTZXNzaW9uSUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcl9FdmVudCA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5TaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yLmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0cmlldmVzIHJ1bnRpbWUgY29udGV4dCBJRFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRSdW50aW1lQ3R4SUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuQ29udGV4dElEO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZW5kIGEgcmVxdWVzdCB0byBzZXJ2ZXIgdG8gdGVybWluYXRlIHRoZSBjb250ZXh0IHVzaW5nIGZldGNoIEFQSSB3aXRoIGtlZXAtYWxpdmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUZXJtaW5hdGVDb250ZXh0VXNpbmdGZXRjaEFQSSgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBJZiBTZXNzaW9uIGlzIHJlLWluaXRpYWxpemluZyBtZWFucyB0aGUgY29udGV4dCBpcyBub3QgZm91bmQgYXQgc2VydmVyLlxyXG4gICAgLy8gdGhlbiB0aGVyZSBpcyBubyBwb2ludCBpbiB0ZXJtaW5hdGluZyBjb250ZXh0LlxyXG4gICAgaWYgKFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLklzU2Vzc2lvblJlSW5pdGlhbGl6aW5nKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLklzQWJvcnRpbmdNYWdpY0VuZ2luZSA9IHRydWU7XHJcblxyXG4gICAgLy8gRHVlIHRvIHBheWxvYWQgbGltaXQgb2YgZmV0Y2ggQVBJLCBzZW5kIG9ubHkgdGhlIGNvbnRleHQgdGVybWluYXRpb24gY29tbWFuZCB0byBzZXJ2ZXJcclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5DbGVhcigpO1xyXG5cclxuICAgIGxldCBjb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQ6IENvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCA9IENvbW1hbmRGYWN0b3J5LlxyXG4gICAgQ3JlYXRlQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kKE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5nZXRUYXNrVGFnKCkpO1xyXG5cclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5BZGQoPElDbGllbnRDb21tYW5kPmNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCk7XHJcblxyXG4gICAgLy8gcmVzcG9uc2UgbmVlZCBub3QgdG8gYmUgaGFuZGxlZCBhcyB0aGUgYnJvd3NlciB1bmxvYWQgY2Fubm90IGJlIHN0b3BwZWQsIHNvIG5vIG5lZWQgdG8gd2FpdFxyXG4gICAgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5FeGVjdXRlKENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24uT05MWV9DT01NQU5EUyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIEdldEFzc2V0c1VSTCgpOiBzdHJpbmd7XHJcbiAgICByZXR1cm4gQ2xpZW50TWFuYWdlci5hc3NldHNVUkw7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ2xpZW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RixPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sSUFBSSxFQUNKLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsY0FBYyxFQUVkLE9BQU8sRUFFUCxHQUFHLEVBQUUsYUFBYSxFQUNsQixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUc5QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLGFBQWEs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LFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFpQiw4QkFBOEIsQ0FBQyxDQUFDO1FBRzNHLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRU0sTUFBTSxDQUFDLFlBQVk7UUFDeEIsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcGxpY2F0aW9uRXhjZXB0aW9uLCBEYXRlVGltZSwgTlN0cmluZywgUmVmUGFyYW19IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuXHJcbmltcG9ydCB7XHJcbiAgRGF0ZVRpbWVVdGlscyxcclxuICBJbnRlcm5hbEludGVyZmFjZSxcclxuICBMb2dnZXIsXHJcbiAgTWlzYyxcclxuICBPU0Vudmlyb25tZW50LFxyXG4gIFN0b3JhZ2VBdHRyaWJ1dGUsXHJcbiAgWE1MQ29uc3RhbnRzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tbWFuZHMsXHJcbiAgQ29tbWFuZFR5cGUsXHJcbiAgRGlzcGxheUNvbnZlcnRvcixcclxuICBFdmVudHMsXHJcbiAgR3VpRGF0YUNvbGxlY3Rpb24sXHJcbiAgR3VpRW52aXJvbm1lbnQsXHJcbiAgTGFzdEZvY3VzZWRWYWwsXHJcbiAgTWFuYWdlcixcclxuICBNZ0NvbnRyb2xCYXNlLFxyXG4gIFBJQywgUHJvcEludGVyZmFjZSxcclxuICBSdW50aW1lQ29udGV4dEJhc2UsXHJcbiAgU3R5bGVzLFxyXG4gIEV4cFZhbFxyXG59IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHtFdmVudHNNYW5hZ2VyfSBmcm9tICcuL2V2ZW50L0V2ZW50c01hbmFnZXInO1xyXG5pbXBvcnQge0d1aUV2ZW50c1Byb2Nlc3Nvcn0gZnJvbSAnLi9HdWlFdmVudHNQcm9jZXNzb3InO1xyXG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tICcuL2Vudi9FbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7TGFuZ3VhZ2VEYXRhfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQge1Rhc2tzVGFibGV9IGZyb20gJy4vdGFza3MvVGFza3NUYWJsZSc7XHJcbmltcG9ydCB7TWdDb250cm9sfSBmcm9tICcuL2d1aS9NZ0NvbnRyb2wnO1xyXG5pbXBvcnQge0lDbGllbnRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kJztcclxuaW1wb3J0IHtUYXNrfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQge01HRGF0YUNvbGxlY3Rpb259IGZyb20gJy4vdGFza3MvTUdEYXRhQ29sbGVjdGlvbic7XHJcbmltcG9ydCB7VW5pcXVlSURVdGlsc30gZnJvbSAnLi91dGlsL1VuaXF1ZUlEVXRpbHMnO1xyXG5pbXBvcnQge0h0dHBNYW5hZ2VyfSBmcm9tICcuL2h0dHAvSHR0cE1hbmFnZXInO1xyXG5pbXBvcnQge0NvbW1hbmRzVGFibGV9IGZyb20gJy4vQ29tbWFuZHNUYWJsZSc7XHJcbmltcG9ydCB7UmVtb3RlQ29tbWFuZHNQcm9jZXNzb3J9IGZyb20gJy4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yJztcclxuaW1wb3J0IHtDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9ufSBmcm9tICcuL0NvbW1hbmRzUHJvY2Vzc29yQmFzZSc7XHJcbmltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyfSBmcm9tICcuL0NvbW1hbmRzUHJvY2Vzc29yTWFuYWdlcic7XHJcbmltcG9ydCB7TUdEYXRhfSBmcm9tICcuL3Rhc2tzL01HRGF0YSc7XHJcbmltcG9ydCB7U2VydmVyRXJyb3J9IGZyb20gJy4vcmVtb3RlL1NlcnZlckVycm9yJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50RXZlbnRzfSBmcm9tICcuL2h0dHAvY2xpZW50L0h0dHBDbGllbnRFdmVudHMnO1xyXG5pbXBvcnQge0lHdWlFdmVudH0gZnJvbSAnLi9icmlkZ2UvSUd1aUV2ZW50JztcclxuaW1wb3J0IHtDb21tYW5kRmFjdG9yeX0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db21tYW5kRmFjdG9yeSc7XHJcbmltcG9ydCB7Q3VycmVudENsaWVudFZlcnNpb259IGZyb20gJy4vQ3VycmVudENsaWVudFZlcnNpb24nO1xyXG5pbXBvcnQge0RhdGFWaWV3fSBmcm9tICcuL2RhdGEvRGF0YVZpZXcnO1xyXG5pbXBvcnQge0xhc3RGb2N1c2VkTWFuYWdlcn0gZnJvbSAnLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXInO1xyXG5pbXBvcnQge0VudlBhcmFtc1RhYmxlfSBmcm9tICcuL2Vudi9FbnZWYXJpYWJsZXNUYWJsZSc7XHJcbmltcG9ydCB7R2xvYmFsUGFyYW1zLCBNaXJyb3JFeHBWYWx9IGZyb20gJy4vZXhwL0dsb2JhbFBhcmFtc1RhYmxlJztcclxuaW1wb3J0IHtPcGVuVVJMQ29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9PcGVuVVJMQ29tbWFuZCc7XHJcbmltcG9ydCB7U2VydmVyQ29uZmlnfSBmcm9tICcuL1NlcnZlckNvbmZpZyc7XHJcbmltcG9ydCB7QWNjZXNzSGVscGVyfSBmcm9tICcuL0FjY2Vzc0hlbHBlcic7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0NvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQnO1xyXG5pbXBvcnQge0dVSU1hbmFnZXJ9IGZyb20gXCIuL0dVSU1hbmFnZXJcIjtcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBDbGllbnRNYW5hZ2VyIHtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBDbGllbnRNYW5hZ2VyID0gbnVsbDtcclxuICBwcml2YXRlIF9nbG9iYWxVbmlxdWVTZXNzaW9uSWQ6IHN0cmluZyA9IG51bGw7XHJcbi8vICBwcml2YXRlIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsOyAvLyBjb250cm9sIHdoZXJlIGxhc3QgcGFya2luZyB3YXMgYXR0ZW1wdGVkIGJ1dCB3ZSBkaWQgbm90IHBhcmsgb24gaXRcclxuICBwcml2YXRlIF9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgc3RhdGljIGhhbmRsaW5nRmlyc3RQYXJrYWJsZUNvbnRyb2wgPSBmYWxzZTtcclxuXHJcblxyXG4gIC8vIEEgc3RhdGljIHZhcmlhYmxlIHRvIGhvbGQgZXhlY3V0aW9uIHByb3BlcnRpZXMgZmlsZSBlaXRoZXIgZnJvbSB0aGUgYXNzZXRzIGZvbGRlciBvciB0aGUgVVJMIHByb3ZpZGVkIGJ5IHRoZSBjdXN0b21lci5cclxuICBwcml2YXRlIHN0YXRpYyBfZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLyBBIHN0YXRpYyB2YXJpYWJsZSB0byBob2xkIGFzc2V0cyBVUkwsIGhhdmluZyBkZWZhdWx0IHZhbHVlIG9mIGFzc2V0cyBmb2xkZXIuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXNzZXRzVVJMOiBzdHJpbmcgPSBcIi4vYXNzZXRzXCI7XHJcblxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogQ2xpZW50TWFuYWdlciB7XHJcbiAgICBpZiAoQ2xpZW50TWFuYWdlci5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIENsaWVudE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IENsaWVudE1hbmFnZXIoKTtcclxuXHJcbiAgICByZXR1cm4gQ2xpZW50TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQWRkRXZlbnQoZ3VpRXZlbnQ6IElHdWlFdmVudCk6IHZvaWQge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKGd1aUV2ZW50LlRhc2tJRCk7XHJcbiAgICBsZXQgbGluZUlkeDogbnVtYmVyID0gK2d1aUV2ZW50LkxpbmU7XHJcbiAgICBsZXQgZHZSb3dJZHg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKHRhc2sgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgICBpZiAoZ3VpRXZlbnQuQ29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBkdjogRGF0YVZpZXcgPSA8RGF0YVZpZXc+dGFzay5EYXRhVmlldztcclxuICAgICAgICBpZiAoY29udHJvbC5Jc1RhYmxlQ2hpbGQpIHtcclxuICAgICAgICAgIGxpbmVJZHggLT0gZHYuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjb2x1bW5Tb3J0XCI6XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQ29sdW1uU29ydGFibGUoKSkge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJtb3VzZWRvd25cIjpcclxuICAgICAgICAgICAgLy8gRGVmZWN0IDE1MjI4OCAmIERlZmVjdCAxNTIyNjg6IFByb2JsZW06IFdoZW4gYnV0dG9uIGlzIGNsaWNrZWQsIHdlIGdldCBmb2N1cyBldmVudCBmaXJzdCBhbmQgaWYgbWVzc2FnZUJveCBpcyBvcGVuZWQgaGVyZSBsaWtlIHZlcmlmeSwgZXRjLlxyXG4gICAgICAgICAgICAvLyB3ZSBkbyBub3QgcmVjZWl2ZSBjbGljayBldmVudC4gSGVuY2UgZXZlbnRzIGFyZSBub3QgcHJvY2Vzc2VkLiBTb2x1dGlvbjogV2UgZG8gbmVlZCBjbGljayBoYW5kbGluZyBmb3IgYnV0dG9uIGFzIGl0IGlzIGNhbGxlZCB3aGVuIHdlIHBhcmtcclxuICAgICAgICAgICAgLy8gb24gYnV0dG9uIGFuZCBwcmVzcyBzcGFjZSBrZXkuIFdlIG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgZm9yIGV4ZWN1dGluZyBDUCAmIENTIHdoZW4gcGFya2VkIG9uIGJ1dHRvbiBieSB0YWIga2V5LiBTbyB3ZSBuZWVkIHRvIG1hbmFnZVxyXG4gICAgICAgICAgICAvLyBob3cgY2xpY2sgaXMgaGFuZGxlZC4gV2UgZG8gbm90IG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgd2hlbiB3ZSBjbGljayBvbiBidXR0b24sIHNvIG9uIG1vdXNlZG93biwgc2V0IGEgZmxhZyB3aGljaCB3aWxsIGJlIHVzZWQgaW4gZm9jdXNcclxuICAgICAgICAgICAgLy8gZXZlbnQgaGFuZGxpbmcgdG8gc2tpcCBpdHMgaGFuZGxpbmcuIFRoZW4gd2Ugd2lsbCByZWNlaXZlIGNsaWNrIGV2ZW50IHdoZXJlIHRoaXMgd2lsbCBiZSBhY3R1YWxseSBoYW5kbGVkIGFuZCBoZW5jZSB3b3JrLlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpIHx8IChjb250cm9sLklzVGFibGVDaGlsZCAmJiBjb250cm9sLmlzQ2hlY2tCb3goKSkgfHwgKGNvbnRyb2wuQ29ubmVjdGVkQ29udHJvbCAmJiBndWlFdmVudC5mcm9tQnV0dG9uKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2J1dHRvbklzQ2xpY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWNvbnRyb2wuaXNTdWJmb3JtKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0KE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpKS5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gY29udHJvbC5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpIHx8IChjb250cm9sLkNvbm5lY3RlZENvbnRyb2wgJiYgZ3VpRXZlbnQuZnJvbUJ1dHRvbikpe1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihcIlwiLCBjb250cm9sLCBsaW5lSWR4LCB0cnVlKTtcclxuICAgICAgICAgICAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjb250cm9sLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLl9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIHNvcnRpbmcgc2hvdWxkIGJlIGhhbmRsZWQgb25seSBvbiBjb2x1bW4gY2xpY2sgYW5kIG5vdCBvbiByb3dEYXRhXHJcbiAgICAgICAgICAgICAgLy8gZWxzZSBpZiAoY29udHJvbC5UeXBlID09PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DT0xVTU4pIHtcclxuICAgICAgICAgICAgICAvLyAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Gb2N1cyhjb250cm9sLCBsaW5lSWR4LCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgbGV0IHByb2R1Y2VDbGljazogYm9vbGVhbiA9IGNvbnRyb2wuaXNCdXR0b24oKSB8fCBjb250cm9sLmlzVGV4dENvbnRyb2woKSB8fCBjb250cm9sLmlzTGFiZWwoKSB8fCBjb250cm9sLmlzVGFiQ29udHJvbCgpIHx8IGNvbnRyb2wuaXNUYWJsZUNvbnRyb2woKSB8fCBjb250cm9sLmlzQ29tYm9Cb3goKSB8fCBjb250cm9sLmlzSW1hZ2VDb250cm9sKCk7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uTW91c2VEb3duKGNvbnRyb2wuZ2V0Rm9ybSgpLCBjb250cm9sLCBudWxsLCB0cnVlLCBsaW5lSWR4LCBmYWxzZSwgcHJvZHVjZUNsaWNrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c1wiOlxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbklzQ2xpY2tlZCB8fCAoY29udHJvbC5Db25uZWN0ZWRDb250cm9sICYmIGd1aUV2ZW50LmZyb21CdXR0b24pKVxyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIC8vIC8vIElmIHdlIGF0dGVtcHQgdG8gcGFyayBvbiBjb250cm9sIHdoZXJlIHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IHRvIHBhcmsgbGlrZSBpZiBjb250cm9sIGhhcyBleHByZXNzaW9uIG9yIHBhcmVudCB0YXNrIGZpZWxkLCBkbyBub3QgYWxsb3cgdG8gZm9jdXMgb24gaXQuXHJcbiAgICAgICAgICAgIC8vIC8vIFNldCBGb2N1cyBiYWNrIHRvIGxhc3RGb2N1c2VkQ29udHJvbC4gV2UgbmVlZCBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sIGFzIHdlIGdldCBmb2N1cyBldmVudCBvbiBhIGNvbnRyb2wgdHdpY2UuIFNvIHRvIGF2b2lkIHRvIHNob3cgZXJyb3IgbXVsdGlwbGUgdGltZXMsXHJcbiAgICAgICAgICAgIC8vIC8vIG1haW50YWluIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wuXHJcbiAgICAgICAgICAgIC8vIGlmIChjb250cm9sICE9PSB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgJiYgY29udHJvbC5IYXNFeHBPclBhcmVudFRhc2tGaWVsZCgpKSB7XHJcbiAgICAgICAgICAgIC8vICAgLy8gU2hvdyBlcnJvciBvbmx5IGZvciBjb250cm9scyBoYXZpbmcgRGF0YSBwcm9wZXJ0eSBhbmQgcGFya2FibGVcclxuICAgICAgICAgICAgLy8gICBpZihjb250cm9sLmlzTGlzdEJveCgpIHx8IGNvbnRyb2wuaXNDaGVja0JveCgpIHx8IGNvbnRyb2wuaXNDb21ib0JveCgpIHx8IGNvbnRyb2wuaXNUZXh0Q29udHJvbCgpIHx8IGNvbnRyb2wuaXNSYWRpbygpIHx8IGNvbnRyb2wuaXNUYWJDb250cm9sKCkpIHtcclxuICAgICAgICAgICAgLy8gICAgIENvbW1hbmRzLm1lc3NhZ2VCb3gobnVsbCwgXCJFcnJvclwiLCBcIkNvbnRyb2wgZWl0aGVyIGhhcyBleHByZXNzaW9uIG9yIGhhcyBwYXJlbnQgdGFzayB2YXJpYWJsZSBhdHRhY2hlZCB0byBpdC4gRmFpbGVkIHRvIHBhcmsgb24gY29udHJvbCB3aXRoIG5hbWU6IFwiICsgY29udHJvbC5OYW1lLCBTdHlsZXMuTVNHQk9YX0lDT05fRVJST1IgfCBTdHlsZXMuTVNHQk9YX0JVVFRPTl9PSyk7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBEZWZlY3QgMTUyNzI4OiBVc2UgbGFzdCBmb2N1c2VkIHRhc2sgaW5zdGVhZCBjb250cm9sIHRhc2sgYXMgY29udHJvbCBjYW4gYmUgZnJvbSBzdWJmb3JtLlxyXG4gICAgICAgICAgICAvLyAgICAgRm9jdXNNYW5hZ2VyLlNldEZvY3VzKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRMYXN0Rm9jdXNlZFRhc2soKSwgTGFzdEZvY3VzZWRNYW5hZ2VyLmdldExhc3RGb2N1c2VkQ29udHJvbCgpLCAwLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgIExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKSA9PT0gbnVsbCA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBjb250cm9sO1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFDbGllbnRNYW5hZ2VyLmhhbmRsaW5nRmlyc3RQYXJrYWJsZUNvbnRyb2wpXHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXMoY29udHJvbCwgbGluZUlkeCwgdHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiZGJsY2xpY2tcIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uRGJsQ2xpY2soY29udHJvbCwgbGluZUlkeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VkXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihndWlFdmVudC5WYWx1ZSwgY29udHJvbCwgbGluZUlkeCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImtleWRvd25cIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uS2V5RG93biggdGFzay5nZXRGb3JtKCksIGNvbnRyb2wsIGd1aUV2ZW50Lm1vZGlmaWVycywgZ3VpRXZlbnQua2V5Q29kZSwgMCwwLCAnJyxmYWxzZSwnJyx0cnVlICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInNldGV4dGVybmFsdmFsdWVcIjpcclxuICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRFeHRlcm5hbFZhbHVlRXZlbnQoKDxNZ0NvbnRyb2w+Y29udHJvbCksIGd1aUV2ZW50LmV4dGVybmFsVmFsdWUsIGd1aUV2ZW50LnBhcmFtKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInVuaGFuZGxlZCBldmVudDogXFxcIlwiICsgZ3VpRXZlbnQuRXZlbnRUeXBlICsgXCJcXFwiXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c09uTm9uTWFnaWNDb250cm9sXCI6XHJcbiAgICAgICAgICAgIGNvbnRyb2wgPSBMYXN0Rm9jdXNlZE1hbmFnZXIuZ2V0TGFzdEZvY3VzZWRDb250cm9sKCk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXNPbk5vbk1hZ2ljQ29udHJvbChjb250cm9sKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZihndWlFdmVudC5Db250cm9sTmFtZSA9PT0gXCJtYWdpY1Jvd1wiKSB7XHJcbiAgICAgICAgICAgICAgZHZSb3dJZHggPSBndWlFdmVudC5MaW5lIC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZUFuZExpbmUodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVgsIGR2Um93SWR4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJuYXZpZ2F0ZUluVGFibGVcIjpcclxuICAgICAgICAgICAgaWYgKGd1aUV2ZW50LkNvbnRyb2xOYW1lID09PSBcIm1hZ2ljUm93XCIpXHJcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVOYXZpZ2F0ZUluUm93RXZlbnQodGFzaywgZ3VpRXZlbnQuVmFsdWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbG9zZVwiOlxyXG4gICAgICAgICAgICBpZiAodGFzay5Jc1JvdXRlKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRSb3V0ZXJDbG9zZWRFdmVudCh0YXNrKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIEV2ZW50cy5DbG9zZUZvcm1FdmVudCh0YXNrLmdldEZvcm0oKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImRpc3Bvc2VcIjpcclxuICAgICAgICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5kZWxldGVNR0RhdGFUcmVlKHRhc2suZ2V0TWdkSUQoKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInJlc2l6ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHMuVGFibGVSZXNpemVFdmVudCh0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgZ3VpRXZlbnQuUGFnZVNpemUpO1xyXG4gICAgICAgICAgLy9jYXNlICdicmVhaycgaXMgbWlzc2luZyBmb3IgJ3Jlc2l6ZScgd2l0aCBpbnRlbnRpb24gdG8gZXhlY3V0ZSBnZXRSb3dzIHdpdGggdGhlIGRlc2lyZWQgZGF0YXZpZXcgcm93IGluZGV4LlxyXG4gICAgICAgICAgY2FzZSBcImdldFJvd3NcIjpcclxuICAgICAgICAgICAgZHZSb3dJZHggPSBsaW5lSWR4IC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgIGxldCBsYXN0Rm9jdXNlZFZhbDogTGFzdEZvY3VzZWRWYWwgPSB7Z3VpTWdDb250cm9sOiB0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgTGluZTogZHZSb3dJZHgsIFZhbDogXCJcIn07XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkdldFJvd3NEYXRhKHRhc2suZ2V0Rm9ybSgpLmdldFRhYmxlQ3RybCgpLCBkdlJvd0lkeCwgdHJ1ZSwgbGFzdEZvY3VzZWRWYWwpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJSb3V0ZXJOYXZpZ2F0ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkFkZFJvdXRlRXZlbnQodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQkNMSUVOVF9ST1VURSwgZ3VpRXZlbnQuUm91dGVyUGF0aCwgZ3VpRXZlbnQuUm91dGVyT3V0bGV0TmFtZSxcclxuICAgICAgICAgICAgICBndWlFdmVudC5Sb3V0ZXJQYXJhbXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJzZXRleHRlcm5hbHZhbHVlXCI6XHJcbiAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJVbmFibGUgdG8gZmluZCB7MH06IFRyeWluZyB0byBzZXQgdmFsdWUgZm9yIGEgbm9uLWV4aXN0aW5nIGNvbnRyb2wuXCIsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coIFwidW5oYW5kbGVkIGV2ZW50OiBcXFwiXCIgKyBndWlFdmVudC5FdmVudFR5cGUgKyBcIlxcXCJcIik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSAvL3Rhc2sgPT0gbnVsbFxyXG4gICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG4gICAgICAgIGNhc2UgXCJjb25maXJtYXRpb25DbG9zZWRcIjpcclxuICAgICAgICAgIHRoaXMuQ29uZmlybWF0aW9uQ2xvc2VkKGd1aUV2ZW50LmtleUNvZGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTmF2aWdhdGVJblJvd0V2ZW50KHRhc2s6IFRhc2ssIGV2dDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTk9ORTtcclxuICAgIGV2dCA9IGV2dC50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIHN3aXRjaCAoZXZ0KSB7XHJcbiAgICAgIGNhc2UgXCJiZWdpbi1wYWdlXCI6XHJcbiAgICAgICAgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1BBR0U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwicHJldmlvdXMtcGFnZVwiOlxyXG4gICAgICAgIGludGVybmFsRXZ0ID0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZQQUdFO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImVuZC1wYWdlXCI6XHJcbiAgICAgICAgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0VORFBBR0U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwibmV4dC1wYWdlXCI6XHJcbiAgICAgICAgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX05YVFBBR0U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwicHJldmlvdXMtbGluZVwiOlxyXG4gICAgICAgIGludGVybmFsRXZ0ID0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZMSU5FO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcIm5leHQtbGluZVwiOlxyXG4gICAgICAgIGludGVybmFsRXZ0ID0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9OWFRMSU5FO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImJlZ2luLXRhYmxlXCI6XHJcbiAgICAgICAgaW50ZXJuYWxFdnQgPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1RCTDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJlbmQtdGFibGVcIjpcclxuICAgICAgICBpbnRlcm5hbEV2dCA9IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfRU5EVEJMO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpbnRlcm5hbEV2dCAhPSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTk9ORSlcclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZSh0YXNrLCBpbnRlcm5hbEV2dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJhaXNlIGNhbGxiYWNrIG9uIGNsb3NpbmcgY29uZmlybWF0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDb25maXJtYXRpb25DbG9zZWQocmVzOiBudW1iZXIpOiB2b2lkXHJcbiAge1xyXG4gICAgQ29tbWFuZHMuUmVzb2x2ZVByb21pc2UocmVzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gdGhlIHdvcmsgdGhyZWFkJ3MgZW50cnkgbWV0aG9kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBXb3JrVGhyZWFkRXhlY3V0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2coKSkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIlwiLCB0cnVlKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJTdGFydGVkIG9uIFwiICsgRGF0ZVRpbWVVdGlscy5Ub1N0cmluZyhEYXRlVGltZS5Ob3csIFhNTENvbnN0YW50cy5FUlJPUl9MT0dfREFURV9GT1JNQVQsIExvZ2dlci5JbnN0YW5jZSksIHRydWUpO1xyXG4gICAgICB0aGlzLldyaXRlRXhlY3V0aW9uUHJvcGVydGllc1RvTG9nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGF3YWl0IENvbW1hbmRzUHJvY2Vzc29yTWFuYWdlci5TdGFydFNlc3Npb24oKSkge1xyXG4gICAgICAgIGxldCBtZ0RhdGFUYWI6IE1HRGF0YUNvbGxlY3Rpb24gPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgICAgIGxldCBzdGFydHVwTWdEYXRhOiBNR0RhdGEgPSBtZ0RhdGFUYWIuU3RhcnR1cE1nRGF0YTtcclxuICAgICAgICBtZ0RhdGFUYWIuY3Vyck1nZElEID0gc3RhcnR1cE1nRGF0YS5HZXRJZCgpO1xyXG5cclxuICAgICAgICBsZXQgbm9uSW50ZXJhY3RpdmVUYXNrOiBUYXNrID0gbnVsbDtcclxuICAgICAgICBpZiAoIXN0YXJ0dXBNZ0RhdGEuSXNBYm9ydGluZylcclxuICAgICAgICAgIG5vbkludGVyYWN0aXZlVGFzayA9IGF3YWl0IFRhc2suU3RhcnRQcm9ncmFtKGZhbHNlLCBmYWxzZSk7XHJcblxyXG4gICAgICAgIGlmIChub25JbnRlcmFjdGl2ZVRhc2sgPT09IG51bGwpXHJcbiAgICAgICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkV2ZW50c0xvb3Aoc3RhcnR1cE1nRGF0YSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Ob25JbnRlcmFjdGl2ZUV2ZW50c0xvb3Aoc3RhcnR1cE1nRGF0YSwgbm9uSW50ZXJhY3RpdmVUYXNrKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRoZSBcImVuZCBvZiB3b3JrXCIgZmxhZyBvbmx5IGZvciB0aGUgbWFpbiB3aW5kb3dcclxuICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLnNldEVuZE9mV29yayh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIGlmIChleCBpbnN0YW5jZW9mIEFwcGxpY2F0aW9uRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgbGV0IGlzTm9SZXN1bHRFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChleCBpbnN0YW5jZW9mIFNlcnZlckVycm9yICYmICg8U2VydmVyRXJyb3I+ZXgpLkdldENvZGUoKSA9PT0gU2VydmVyRXJyb3IuSU5GX05PX1JFU1VMVClcclxuICAgICAgICAgIGlzTm9SZXN1bHRFcnJvciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICghaXNOb1Jlc3VsdEVycm9yKVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Qcm9jZXNzQWJvcnRpbmdFcnJvcihleCk7XHJcblxyXG4gICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2Uuc2V0RW5kT2ZXb3JrKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBleDtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkNoZWNrQW5kU2hvd1NwaW5uZXIoZmFsc2UpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYWRkR2xvYmFsQ29tbWFuZChDb21tYW5kVHlwZS5FWElUX01BR0lDKTtcclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gV3JpdGUgRXhlY3V0aW9uIHByb3BlcnRpZXMgdG8gbG9nLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgV3JpdGVFeGVjdXRpb25Qcm9wZXJ0aWVzVG9Mb2coKTogdm9pZCB7XHJcbiAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLlNob3VsZExvZ1NlcnZlclJlbGF0ZWRNZXNzYWdlcygpKSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIiwgdHJ1ZSk7XHJcbiAgICAgIC8vIFdyaXRlIGhlYWRpbmdcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJFeGVjdXRpb24gUHJvcGVydGllczpcIiwgdHJ1ZSk7XHJcblxyXG4gICAgICBsZXQgcHJvcHNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShTZXJ2ZXJDb25maWcuSW5zdGFuY2UpO1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhwcm9wc1N0cmluZywgdHJ1ZSk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgQ2xpZW50TWFuYWdlci5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJTZXJ2ZXJDb25maWdVUkxcIikgPz8gXCIuL2Fzc2V0cy9zZXJ2ZXItY29uZmlnLmpzb25cIjtcclxuICAgIFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5Jbml0KFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLlJDX05PX0NPTlRFWFRfSUQpO1xyXG4gICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkluaXQoTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZSk7XHJcbiAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuTGFzdEFjdGlvblRpbWUgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG5cclxuXHJcbiAgICBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5TaG91bGRTY3JhbWJsZUFuZFVuc2NyYW1ibGVNZXNzYWdlcyA9IHRydWU7XHJcblxyXG5cclxuICAgIC8vIFRPRE86IEhvdyB0byBnZXQgUHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLklkP1xyXG4gICAgdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkID0gVW5pcXVlSURVdGlscy5HZXRVbmlxdWVNYWNoaW5lSUQoKSArIFwiX1wiOyAvLyArIFByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKS5JZDtcclxuXHJcbiAgICB0aGlzLlJlZ2lzdGVyRGVsZWdhdGVzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEluaXRpYWxpemUgdGhlIGRhdGEgbmVlZGVkIGJ5IHRoZSBndWkgbGlicmFyeVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBDbGllbnRNYW5hZ2VyIGluc3RhbmNlPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgSW5pdEd1aU1hbmFnZXIoKTogdm9pZCB7XHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIgPSBFdmVudHNNYW5hZ2VyLkluc3RhbmNlO1xyXG4gICAgTWFuYWdlci5EZWZhdWx0U2VydmVyTmFtZSA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRTZXJ2ZXIoKTtcclxuICAgIE1hbmFnZXIuRGVmYXVsdFByb3RvY29sID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFByb3RvY29sKCk7XHJcbiAgICBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gICAgR3VpRGF0YUNvbGxlY3Rpb24uTUdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLm5vQ29udGV4dElkID0gUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuUkNfTk9fQ09OVEVYVF9JRDtcclxuICB9XHJcblxyXG4gIC8vLyBJbml0aWFsaXplIGdsb2JhbCBkYXRhIGluIG9iamVjdHMgdXNlZCB0byBvdmVyY29tZSB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpc3N1ZVxyXG4gIHByaXZhdGUgSW5pdENpcmN1bGFyUmVmZXJlbmNlc0J5cGFzc2VzKCkge1xyXG4gICAgVGFza3NUYWJsZS5jcmVhdGVOZXd0YXNrID0gVGFzay5DcmVhdGVUYXNrO1xyXG4gICAgT3BlblVSTENvbW1hbmQuY3JlYXRlTmV3Q29tbWFuZHNUYWJsZSA9IENvbW1hbmRzVGFibGUuY3JlYXRlQ29tbWFuZHNUYWJsZTtcclxuXHJcbiAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlciA9IEV2ZW50c01hbmFnZXIuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmVudlBhcmFtc1RhYmxlID0gRW52UGFyYW1zVGFibGUuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIuZ2xvYmFsUGFyYW1zID0gR2xvYmFsUGFyYW1zLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmxhbmd1YWdlRGF0YSA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBFbnRyeSBwb2ludCB0byB0aGUgV2ViIENsaWVudCA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJnc1wiPmFycmF5IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHM8L3BhcmFtPlxyXG4gIHN0YXRpYyBNYWluKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGFyZ3M6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcclxuICAgIGxldCB2YWw6IEV4cFZhbDtcclxuXHJcbiAgICBhcmdzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcclxuICAgICAgdmFsID0gbmV3IEV4cFZhbChTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUsIGZhbHNlLCB2YWx1ZSk7XHJcbiAgICAgIEdsb2JhbFBhcmFtcy5JbnN0YW5jZS5zZXRWYWx1ZShrZXksIG5ldyBNaXJyb3JFeHBWYWwodmFsKSwgdHJ1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBUT0RPIDogQ2hlY2sgaG93IHRvIGxvYWQgZnJvbSBTdHVkaW8gaS5lLiBGN1xyXG4gICAgLy8gaWYgKGFyZ3MubGVuZ3RoICE9PSAwICYmIE5TdHJpbmcuU3RhcnRzV2l0aChhcmdzWzBdLCBcIi9zcGF3bmFoZWFkXCIpKSB7XHJcbiAgICAvLyAgIENsaWVudE1hbmFnZXIuX3N0YXJ0ZWRGcm9tU3R1ZGlvID0gdHJ1ZTtcclxuICAgIC8vICAgU3R1ZGlvTGF1bmNoZXIuSW5pdChhcmdzKTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2VcclxuICAgIENsaWVudE1hbmFnZXIuU3RhcnRFeGVjdXRpb24oaHR0cENsaWVudCk7XHJcblxyXG4gICAgTG9nZ2VyLkluc3RhbmNlLkZsdXNoKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFRlcm1pbmF0ZSB0aGUgY2xpZW50IGFuZCB0ZXJtaW5hdGUgdGhlIGNvbnRleHQgPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBhc3luYyBTdG9wRXhlY3V0aW9uKCk6IFByb21pc2UgPHZvaWQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuSXNBYm9ydGluZ01hZ2ljRW5naW5lID0gdHJ1ZTtcclxuICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLkNsb3NpbmdGb3JtVUkgPSB0cnVlO1xyXG5cclxuICAgICAgYXdhaXQgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLmVuZFRhc2sodHJ1ZSwgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4Mykge1xyXG4gICAgICBpZiAoZXgzIGluc3RhbmNlb2YgQXBwbGljYXRpb25FeGNlcHRpb24pIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZyhleDMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBleDM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgU3RhcnRFeGVjdXRpb24oaHR0cENsaWVudDpIdHRwQ2xpZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBIdHRwTWFuYWdlci5zZXROYXRpdmVIdHRwQ2xpZW50KGh0dHBDbGllbnQpO1xyXG4gICAgbGV0IGxvYWRlZDogYm9vbGVhbiA9IGF3YWl0IENsaWVudE1hbmFnZXIuSW5zdGFuY2UuTG9hZEV4ZWN1dGlvblByb3BzKCk7XHJcblxyXG4gICAgaWYgKGxvYWRlZCkge1xyXG4gICAgICBuZXcgR3VpRXZlbnRzUHJvY2Vzc29yKCk7XHJcbiAgICAgIENsaWVudE1hbmFnZXIuSW5zdGFuY2UuSW5pdEd1aU1hbmFnZXIoKTtcclxuICAgICAgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Jbml0Q2lyY3VsYXJSZWZlcmVuY2VzQnlwYXNzZXMoKTtcclxuICAgICAgbGV0IHZlcnNpb25TdHJpbmcgPSBDdXJyZW50Q2xpZW50VmVyc2lvbiA9PT0gICcwLjAuMC4wJyA/IFwiRGV2ZWxvcG1lbnQgbW9kZVwiIDogXCJWZXJzaW9uIDogXCIgKyBDdXJyZW50Q2xpZW50VmVyc2lvbiA7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIk1hZ2ljIFdlYiBDbGllbnQuIFwiICsgdmVyc2lvblN0cmluZyk7XHJcblxyXG4gICAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLkh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEZpcnN0SHR0cFJlcXVlc3RUaW1lb3V0KCk7XHJcblxyXG4gICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkluaXQoKTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Jbml0aWFsaXplKFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLkdldEluc3RhbmNlKCkucGFyc2VMb2dMZXZlbChTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0SW50ZXJuYWxMb2dMZXZlbCgpKSxmYWxzZSk7XHJcblxyXG4gICAgICBsZXQgbWdkOiBNR0RhdGEgPSBuZXcgTUdEYXRhKFxyXG4gICAgICAgIG5ldyBDb21tYW5kc1RhYmxlKCksXHJcbiAgICAgICAgbmV3IENvbW1hbmRzVGFibGUoKSxcclxuICAgICAgICAwLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgIGF3YWl0IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuYWRkTUdEYXRhKG1nZCwgMCwgdHJ1ZSk7XHJcblxyXG4gICAgICBhd2FpdCBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLldvcmtUaHJlYWRFeGVjdXRpb24oKTtcclxuXHJcbiAgICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuU2hvdWxkTG9nKCkpIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhPU0Vudmlyb25tZW50LkVvbFNlcSArIFwiRW5kZWQgb24gXCIgKyBEYXRlVGltZVV0aWxzLlRvU3RyaW5nKERhdGVUaW1lLk5vdywgWE1MQ29uc3RhbnRzLkVSUk9SX0xPR19EQVRFX0ZPUk1BVCwgTG9nZ2VyLkluc3RhbmNlKSArIE9TRW52aXJvbm1lbnQuRW9sU2VxICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEsIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG4gICAgICBhd2FpdCBHVUlNYW5hZ2VyLkluc3RhbmNlLk1lc3NhZ2VCb3goXCJFcnJvclwiLCBcIkZhaWxlZCB0byBsb2FkIHNlcnZlciBjb25maWd1cmF0aW9uIGZpbGUgKFwiICsgdGhpcy5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lICsgXCIpXCIsIFN0eWxlcy5NU0dCT1hfSUNPTl9FUlJPUiB8IFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gTG9hZHMgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyLFxyXG4gIC8vLyBhcHBsaWNhdGlvbiBhbmQgcHJvZ3JhbSB0byBleGVjdXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBMb2FkRXhlY3V0aW9uUHJvcHMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cclxuICAgIGxldCByZXNwb25zZTogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBzdWNjZWVkZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIGlzRXJyb3IgY2Fubm90IGJlIHRydWUgaGVyZSwgYmVjYXVzZSBpdCBpcyByZXR1cm5lZCBieSBydW50aW1lIGVuZ2luZSBhbmQgdG8gcmVhZCBleGVjdXRpb24gcHJvcGVydGllcywgd2UgZG8gbm90IHJlYWNoIHRoZSBlbmdpbmUuXHJcbiAgICAgIGxldCBpc0Vycm9yOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbShmYWxzZSk7XHJcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5HZXRDb250ZW50KENsaWVudE1hbmFnZXIuX2V4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZSwgbnVsbCwgZmFsc2UsIGlzRXJyb3IpO1xyXG4gICAgICBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuSW5pdChKU09OLnBhcnNlKHJlc3BvbnNlKSk7XHJcblxyXG4gICAgICBsZXQgYXNzZXRzVVJMID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldEFzc2V0c1VSTCgpO1xyXG5cclxuICAgICAgaWYoYXNzZXRzVVJMICE9PSBudWxsKXtcclxuICAgICAgICBDbGllbnRNYW5hZ2VyLmFzc2V0c1VSTCA9IGFzc2V0c1VSTDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB3aW5kb3cuYXNzZXRzVVJMID0gQ2xpZW50TWFuYWdlci5hc3NldHNVUkw7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgc3VjY2VlZGVkID0gZmFsc2U7XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSB3cml0ZSB0aGUgZXJyb3IgbWVzc2FnZSB0byBsb2c/XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGJyb3dzZXI/XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN1Y2NlZWRlZDtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmdsb2JhbCB1bmlxdWUgSUQgb2YgdGhlIHNlc3Npb24gPSAnbWFjaGluZSB1bmlxdWUgSUQnICsgJ3Byb2Nlc3MgSUQnPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgY29udHJvbCdzIHBpY3R1cmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljICBHZXRDb250cm9sUGljdHVyZU1hc2sodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBQSUNcclxuICB7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbCAmJiB0YXNrICE9IG51bGwpIHtcclxuICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgICBwaWMgPSBjb250cm9sLmdldFBJQygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwaWM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGZvcm1hdHRlZCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgIEdldEZvcm1hdHRlZFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCByb3dJZD86IHN0cmluZyk6IHN0cmluZ1xyXG4gIHtcclxuICAgIGxldCBwaWM6IFBJQyA9IG51bGw7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IHZhbHVlO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbCAgJiYgdGFzayAhPT0gbnVsbClcclxuICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wgIT0gbnVsbCAmJiBjb250cm9sLkRhdGFUeXBlID09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQykge1xyXG4gICAgICBpZiAoY29udHJvbC5pc1JlcGVhdGFibGUoKSAmJiAgY29udHJvbC5nZXRQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPUk1BVCkuaXNFeHByZXNzaW9uKCkpXHJcbiAgICAgIHtcclxuICAgICAgICBsZXQgcGljdmFsID0gY29udHJvbC5nZXRQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPUk1BVCkuZ2V0UHJldlZhbHVlKCtyb3dJZCk7XHJcbiAgICAgICAgcGljID0gbmV3IFBJQyAocGljdmFsLCBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMsICBjb250cm9sLmdldEZvcm0oKS5nZXRUYXNrKCkuZ2V0Q29tcElkeCgpKVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBwaWMgPSBjb250cm9sLmdldFBJQygpO1xyXG5cclxuICAgICAgbGV0IGRpc3BWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XHJcbiAgICAgIGxldCAgbmV3UGljID0gcGljLmdldFVuZm9ybWF0dGVkTnVtZXJpY1BpYygpO1xyXG5cclxuICAgICAgbGV0IG51bSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0oZGlzcFZhbHVlLCBuZXdQaWMsIDApO1xyXG4gICAgICBuZXdWYWx1ZSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UuZnJvbU51bShudW0sIHBpYyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHJhbmdlZCB2YWx1ZSBmb3IgaW5wdXQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyAgR2V0UmFuZ2VkVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgICByZXR1cm4gY29udHJvbC5nZXRSYW5nZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB2YWxpZGF0ZSB1c2VyIGlucHV0IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgIFZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wudmFsaWRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGZsZCByYW5nZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBHZXRGbGRSYW5nZXModGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wuZ2V0UmFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBSZXR1cm5zIHdoZXRoZXIgY2xpZW50L3NlcnZlciBjYWNoZSBleGlzdHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUcmFuc0NhY2hlRXhpc3RzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNsaWVudFRyYW5zQ2FjaGVFeGlzdHM6IGJvb2xlYW4gPSBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpLmNsaWVudFRyYW5zYWN0aW9uQ2FjaGVFeGlzdHMoKTtcclxuICAgIGxldCBzZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzOiBib29sZWFuID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKS5zZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzKCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudFRyYW5zQ2FjaGVFeGlzdHMgfHwgc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0cztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU3Vic2NyaWJlIGZvciBldmVudHMgZGVmaW5lZCBhdCBIdHRwQ2xpZW50RXZlbnRzIGFuZFxyXG4gIC8vLyBhdHRhY2ggYXBwcm9wcmlhdGUgZXZlbnQgaGFuZGxlcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUmVnaXN0ZXJEZWxlZ2F0ZXMoKTogdm9pZCB7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldEV4ZWN1dGlvblByb3BlcnR5X0V2ZW50ID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEV4ZWN1dGlvblByb3BlcnR5LmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0UnVudGltZUN0eElEX0V2ZW50ID0gdGhpcy5HZXRSdW50aW1lQ3R4SUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEX0V2ZW50ID0gdGhpcy5HZXRHbG9iYWxVbmlxdWVTZXNzaW9uSUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcl9FdmVudCA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5TaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yLmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0cmlldmVzIHJ1bnRpbWUgY29udGV4dCBJRFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRSdW50aW1lQ3R4SUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuQ29udGV4dElEO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZW5kIGEgcmVxdWVzdCB0byBzZXJ2ZXIgdG8gdGVybWluYXRlIHRoZSBjb250ZXh0IHVzaW5nIGZldGNoIEFQSSB3aXRoIGtlZXAtYWxpdmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUZXJtaW5hdGVDb250ZXh0VXNpbmdGZXRjaEFQSSgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBJZiBTZXNzaW9uIGlzIHJlLWluaXRpYWxpemluZyBtZWFucyB0aGUgY29udGV4dCBpcyBub3QgZm91bmQgYXQgc2VydmVyLlxyXG4gICAgLy8gdGhlbiB0aGVyZSBpcyBubyBwb2ludCBpbiB0ZXJtaW5hdGluZyBjb250ZXh0LlxyXG4gICAgaWYgKFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLklzU2Vzc2lvblJlSW5pdGlhbGl6aW5nKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLklzQWJvcnRpbmdNYWdpY0VuZ2luZSA9IHRydWU7XHJcblxyXG4gICAgLy8gRHVlIHRvIHBheWxvYWQgbGltaXQgb2YgZmV0Y2ggQVBJLCBzZW5kIG9ubHkgdGhlIGNvbnRleHQgdGVybWluYXRpb24gY29tbWFuZCB0byBzZXJ2ZXJcclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5DbGVhcigpO1xyXG5cclxuICAgIGxldCBjb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQ6IENvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCA9IENvbW1hbmRGYWN0b3J5LlxyXG4gICAgQ3JlYXRlQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kKE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5nZXRUYXNrVGFnKCkpO1xyXG5cclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5BZGQoPElDbGllbnRDb21tYW5kPmNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCk7XHJcblxyXG4gICAgLy8gcmVzcG9uc2UgbmVlZCBub3QgdG8gYmUgaGFuZGxlZCBhcyB0aGUgYnJvd3NlciB1bmxvYWQgY2Fubm90IGJlIHN0b3BwZWQsIHNvIG5vIG5lZWQgdG8gd2FpdFxyXG4gICAgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5FeGVjdXRlKENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24uT05MWV9DT01NQU5EUyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIEdldEFzc2V0c1VSTCgpOiBzdHJpbmd7XHJcbiAgICByZXR1cm4gQ2xpZW50TWFuYWdlci5hc3NldHNVUkw7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -53,4 +53,4 @@ export class CommandsProcessorBase {
53
53
  return core;
54
54
  }
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNQcm9jZXNzb3JCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9Db21tYW5kc1Byb2Nlc3NvckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxNQUFNLENBQU4sSUFBWSxrQ0FLWDtBQUxELFdBQVksa0NBQWtDO0lBRTVDLHFHQUFhLENBQUE7SUFDYixpR0FBTyxDQUFBO0lBQ1AsK0ZBQU0sQ0FBQTtBQUNSLENBQUMsRUFMVyxrQ0FBa0MsS0FBbEMsa0NBQWtDLFFBSzdDO0FBR0QsTUFBTSxDQUFOLElBQVksd0NBSVg7QUFKRCxXQUFZLHdDQUF3QztJQUNsRCx1SUFBb0IsQ0FBQTtJQUNwQix5SEFBYSxDQUFBO0lBQ2IsbUlBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQUpXLHdDQUF3QyxLQUF4Qyx3Q0FBd0MsUUFJbkQ7QUFHRCxNQUFNLE9BQWdCLHFCQUFxQjtJQUN6QyxlQUFlLEdBQVcsQ0FBQyxDQUFDO0lBRTVCLGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBTUQsS0FBSyxDQUFDLFlBQVk7UUFDaEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFRRCxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUE0RCxFQUFFLFlBQWlELEVBQUUsR0FBa0I7UUFDL0ksSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3pDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBSU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxrQkFBNEQ7UUFDbEYsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBTUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxrQkFBNEQsRUFBRSxZQUFnRCxFQUFFLEdBQWlCO1FBQy9JLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFLRCxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQW9CLEVBQUUsUUFBaUI7UUFDdEQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFPRCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQWU7UUFDL0IsSUFBSSxlQUFlLEdBQVcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEUsSUFBSSxJQUFZLENBQUM7UUFFakIsSUFBSSxlQUFlLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLEtBQUssR0FBVyxlQUFlLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDdEUsSUFBSSxPQUFPLEdBQVcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFL0MsSUFBSSxNQUFNLEdBQVcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEUsSUFBSSxRQUFRLEdBQVcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU5QyxJQUFJLEdBQUcsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQy9FLENBQUM7YUFDSSxDQUFDO1lBRUosSUFBSSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhNTENvbnN0YW50cyB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBJUmVzdWx0VmFsdWUgfSBmcm9tICcuL3J0L0lSZXN1bHRWYWx1ZSc7XHJcbmltcG9ydCB7IFNjcmFtYmxlciB9IGZyb20gJy4vdXRpbC9TY3JhbWJsZXInO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuXHJcbi8vIFRoZSBzdGFnZSBpbiB0aGUgc2Vzc2lvbiB0aGlzIGV4ZWN1dGlvbiBiZWxvbmdzIHRvXHJcbmV4cG9ydCBlbnVtIENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZXNzaW9uU3RhZ2Vcclxue1xyXG4gIEhBTkRTSEFLRSA9IDEsXHJcbiAgSU5JVElBTCxcclxuICBOT1JNQUxcclxufVxyXG5cclxuLy8gaW5zdHJ1Y3Rpb24gd2hhdCB0byBzZW5kIGR1cmluZyBleGVjdXRpb25cclxuZXhwb3J0IGVudW0gQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbiB7XHJcbiAgTk9fVEFTS1NfT1JfQ09NTUFORFMsXHJcbiAgT05MWV9DT01NQU5EUyxcclxuICBUQVNLU19BTkRfQ09NTUFORFNcclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PiB0aGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBzZXJ2ZXIgYW5kIGhhbmRsaW5nIHRoZSBzZXJ2ZXIgbWVzc2FnZXM8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21tYW5kc1Byb2Nlc3NvckJhc2Uge1xyXG4gIF9zZXNzaW9uQ291bnRlcjogbnVtYmVyID0gMDsgLy8gdGhlIHNlc3Npb24gY291bnRlciB0aGF0IHNob3VsZCBiZSB1c2VkIG9uIHRoZSBuZXh0IGFjY2VzcyB0byB0aGUgc2VydmVyLlxyXG5cclxuICBHZXRTZXNzaW9uQ291bnRlcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25Db3VudGVyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzdGFydCB0aGUgc2Vzc2lvbiAtIGUuZy4gZXhjaGFuZ2UgaGFuZHNoYWtlIHJlcXVlc3RzIHdpdGggdGhlIFNlcnZlciwgaWYgY29ubmVjdGVkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnRydWUgb25seSBpZiB0aGUgQ2xpZW50IHNob3VsZCBjb250aW51ZSB0byBzdGFydCB0aGUgYWN0dWFsIHJlcXVlc3RlZCBwcm9ncmFtLjwvcmV0dXJucz5cclxuICBhc3luYyBTdGFydFNlc3Npb24oKTogUHJvbWlzZTxib29sZWFuPntcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+YnVpbGQgdGhlIHhtbCByZXF1ZXN0OyBzZW5kIGl0IHRvIHRoZSBydW50aW1lLWVuZ2luZTsgcmVjZWl2ZSBhIHJlc3BvbnNlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNlbmRpbmdJbnN0cnVjdGlvblwiPmluc3RydWN0aW9uIHdoYXQgdG8gc2VuZCBkdXJpbmcgZXhlY3V0aW9uIC0gTk9fVEFTS1NfT1JfQ09NTUFORFMgLyBPTkxZX0NPTU1BTkRTIC8gVEFTS1NfQU5EX0NPTU1BTkRTLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2Vzc2lvblN0YWdlXCI+SEFORFNIQUtFIC8gSU5JVElBTCAvIE5PUk1BTC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc1wiPnJlc3VsdCBvdCBiZSAgcmVhZCBhZnRlciBwYXJzaW5nIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuPC9wYXJhbT5cclxuICBhc3luYyBFeGVjdXRlKHNlbmRpbmdJbnN0cnVjdGlvbjogQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbik6IFByb21pc2U8dm9pZD47XHJcbiAgYXN5bmMgRXhlY3V0ZShzZW5kaW5nSW5zdHJ1Y3Rpb246IENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24sIHNlc3Npb25TdGFnZTogQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1Nlc3Npb25TdGFnZSwgcmVzOiBJUmVzdWx0VmFsdWUpOiBQcm9taXNlPHZvaWQ+O1xyXG4gIGFzeW5jIEV4ZWN1dGUoc2VuZGluZ0luc3RydWN0aW9uOiBDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9uLCBzZXNzaW9uU3RhZ2U/OiBDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2Vzc2lvblN0YWdlLCByZXM/OiBJUmVzdWx0VmFsdWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChzZXNzaW9uU3RhZ2UpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuRXhlY3V0ZV8wKHNlbmRpbmdJbnN0cnVjdGlvbik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuRXhlY3V0ZV8xKHNlbmRpbmdJbnN0cnVjdGlvbiwgc2Vzc2lvblN0YWdlLCByZXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmJ1aWxkIHRoZSB4bWwgcmVxdWVzdDsgc2VuZCBpdCB0byB0aGUgcnVudGltZS1lbmdpbmU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2VuZGluZ0luc3RydWN0aW9uXCI+aW5zdHJ1Y3Rpb24gd2hhdCB0byBzZW5kIGR1cmluZyBleGVjdXRpb24gLSBOT19UQVNLU19PUl9DT01NQU5EUyAvIE9OTFlfQ09NTUFORFMgLyBUQVNLU19BTkRfQ09NTUFORFMuPC9wYXJhbT5cclxuICBwcml2YXRlIGFzeW5jIEV4ZWN1dGVfMChzZW5kaW5nSW5zdHJ1Y3Rpb246IENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuRXhlY3V0ZV8xKHNlbmRpbmdJbnN0cnVjdGlvbiwgQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1Nlc3Npb25TdGFnZS5OT1JNQUwsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmJ1aWxkIHRoZSB4bWwgcmVxdWVzdDsgc2VuZCBpdCB0byB0aGUgcnVudGltZS1lbmdpbmU7IHJlY2VpdmUgYSByZXNwb25zZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzZW5kaW5nSW5zdHJ1Y3Rpb25cIj5pbnN0cnVjdGlvbiB3aGF0IHRvIHNlbmQgZHVyaW5nIGV4ZWN1dGlvbiAtIE5PX1RBU0tTX09SX0NPTU1BTkRTIC8gT05MWV9DT01NQU5EUyAvIFRBU0tTX0FORF9DT01NQU5EUy48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNlc3Npb25TdGFnZVwiPkhBTkRTSEFLRSAvIElOSVRJQUwgLyBOT1JNQUwuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNcIj5yZXN1bHQgb3QgYmUgIHJlYWQgYWZ0ZXIgcGFyc2luZyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLjwvcGFyYW0+XHJcbiAgYXN5bmMgRXhlY3V0ZV8xKHNlbmRpbmdJbnN0cnVjdGlvbjogQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbiwgc2Vzc2lvblN0YWdlOiBDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2Vzc2lvblN0YWdlLCByZXM6IElSZXN1bHRWYWx1ZSk6IFByb21pc2U8dm9pZD57XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEludm9rZSB0aGUgcmVxdWVzdCBVUkwgJiByZXR1cm4gdGhlIHJlc3BvbnNlLjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXF1ZXN0ZWRVUkxcIj5VUkwgdG8gYmUgYWNjZXNzZWQuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+cmVzcG9uc2UgKGZyb20gdGhlIHNlcnZlcikuPC9yZXR1cm5zPlxyXG4gIGFzeW5jIEdldENvbnRlbnQocmVxdWVzdGVkVVJMOiBzdHJpbmcsIHVzZUNhY2hlOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+e1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnJyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+c2VuZCBNb25pdG9yIG1lc3NhZ2luZyB0byB0aGUgc2VydmVyPC9zdW1tYXJ5PlxyXG4gIGFic3RyYWN0IFNlbmRNb25pdG9yT25seSgpOiB2b2lkIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiB1bnNjcmFtYmxlIHNlcnZlcnMgcmVzcG9uc2U8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnVuc2NyYW1ibGVkIGNvbnRlbnQ8L3JldHVybnM+XHJcbiAgc3RhdGljIFVuU2NyYW1ibGUocmVzcEJ1Zjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBvcGVuVGFnTG9jYXRpb246IG51bWJlciA9IHJlc3BCdWYuaW5kZXhPZihYTUxDb25zdGFudHMuTUdfVEFHX09QRU4pO1xyXG4gICAgbGV0IGNvcmU6IHN0cmluZztcclxuXHJcbiAgICBpZiAob3BlblRhZ0xvY2F0aW9uICE9PSAtMSkge1xyXG4gICAgICBsZXQgc3RhcnQ6IG51bWJlciA9IG9wZW5UYWdMb2NhdGlvbiArIFhNTENvbnN0YW50cy5NR19UQUdfT1BFTi5sZW5ndGg7XHJcbiAgICAgIGxldCBvcGVuVGFnOiBzdHJpbmcgPSByZXNwQnVmLnN1YnN0cigwLCBzdGFydCk7XHJcblxyXG4gICAgICBsZXQgZmluaXNoOiBudW1iZXIgPSByZXNwQnVmLmxhc3RJbmRleE9mKFhNTENvbnN0YW50cy5UQUdfT1BFTik7XHJcbiAgICAgIGxldCBjbG9zZVRhZzogc3RyaW5nID0gcmVzcEJ1Zi5zdWJzdHIoZmluaXNoKTtcclxuXHJcbiAgICAgIGNvcmUgPSBvcGVuVGFnICsgU2NyYW1ibGVyLlVuU2NyYW1ibGUocmVzcEJ1Ziwgc3RhcnQsIGZpbmlzaCAtIDEpICsgY2xvc2VUYWc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gV2UgZ290IGEgc2NyYW1ibGVkIGVycm9yIG1lc3NhZ2UsIHRoZXJlIGlzIG5vIG9wZW4gdGFnXHJcbiAgICAgIGNvcmUgPSBTY3JhbWJsZXIuVW5TY3JhbWJsZShyZXNwQnVmLCAwLCByZXNwQnVmLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvcmU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNQcm9jZXNzb3JCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9Db21tYW5kc1Byb2Nlc3NvckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxNQUFNLENBQU4sSUFBWSxrQ0FLWDtBQUxELFdBQVksa0NBQWtDO0lBRTVDLHFHQUFhLENBQUE7SUFDYixpR0FBTyxDQUFBO0lBQ1AsK0ZBQU0sQ0FBQTtBQUNSLENBQUMsRUFMVyxrQ0FBa0MsS0FBbEMsa0NBQWtDLFFBSzdDO0FBR0QsTUFBTSxDQUFOLElBQVksd0NBSVg7QUFKRCxXQUFZLHdDQUF3QztJQUNsRCx1SUFBb0IsQ0FBQTtJQUNwQix5SEFBYSxDQUFBO0lBQ2IsbUlBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQUpXLHdDQUF3QyxLQUF4Qyx3Q0FBd0MsUUFJbkQ7QUFHRCxNQUFNLE9BQWdCLHFCQUFxQjtJQUN6QyxlQUFlLEdBQVcsQ0FBQyxDQUFDO0lBRTVCLGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBTUQsS0FBSyxDQUFDLFlBQVk7UUFDaEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFRRCxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUE0RCxFQUFFLFlBQWlELEVBQUUsR0FBa0I7UUFDL0ksSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNuQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN6QyxPQUFPO1NBQ1I7UUFDRCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFJTyxLQUFLLENBQUMsU0FBUyxDQUFDLGtCQUE0RDtRQUNsRixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsa0NBQWtDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFNRCxLQUFLLENBQUMsU0FBUyxDQUFDLGtCQUE0RCxFQUFFLFlBQWdELEVBQUUsR0FBaUI7UUFDL0ksT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUtELEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBb0IsRUFBRSxRQUFpQjtRQUN0RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQU9ELE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLGVBQWUsR0FBVyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxJQUFJLElBQVksQ0FBQztRQUVqQixJQUFJLGVBQWUsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMxQixJQUFJLEtBQUssR0FBVyxlQUFlLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDdEUsSUFBSSxPQUFPLEdBQVcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFL0MsSUFBSSxNQUFNLEdBQVcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEUsSUFBSSxRQUFRLEdBQVcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU5QyxJQUFJLEdBQUcsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQzlFO2FBQ0k7WUFFSCxJQUFJLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhNTENvbnN0YW50cyB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBJUmVzdWx0VmFsdWUgfSBmcm9tICcuL3J0L0lSZXN1bHRWYWx1ZSc7XHJcbmltcG9ydCB7IFNjcmFtYmxlciB9IGZyb20gJy4vdXRpbC9TY3JhbWJsZXInO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuXHJcbi8vIFRoZSBzdGFnZSBpbiB0aGUgc2Vzc2lvbiB0aGlzIGV4ZWN1dGlvbiBiZWxvbmdzIHRvXHJcbmV4cG9ydCBlbnVtIENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZXNzaW9uU3RhZ2Vcclxue1xyXG4gIEhBTkRTSEFLRSA9IDEsXHJcbiAgSU5JVElBTCxcclxuICBOT1JNQUxcclxufVxyXG5cclxuLy8gaW5zdHJ1Y3Rpb24gd2hhdCB0byBzZW5kIGR1cmluZyBleGVjdXRpb25cclxuZXhwb3J0IGVudW0gQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbiB7XHJcbiAgTk9fVEFTS1NfT1JfQ09NTUFORFMsXHJcbiAgT05MWV9DT01NQU5EUyxcclxuICBUQVNLU19BTkRfQ09NTUFORFNcclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PiB0aGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBzZXJ2ZXIgYW5kIGhhbmRsaW5nIHRoZSBzZXJ2ZXIgbWVzc2FnZXM8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21tYW5kc1Byb2Nlc3NvckJhc2Uge1xyXG4gIF9zZXNzaW9uQ291bnRlcjogbnVtYmVyID0gMDsgLy8gdGhlIHNlc3Npb24gY291bnRlciB0aGF0IHNob3VsZCBiZSB1c2VkIG9uIHRoZSBuZXh0IGFjY2VzcyB0byB0aGUgc2VydmVyLlxyXG5cclxuICBHZXRTZXNzaW9uQ291bnRlcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25Db3VudGVyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzdGFydCB0aGUgc2Vzc2lvbiAtIGUuZy4gZXhjaGFuZ2UgaGFuZHNoYWtlIHJlcXVlc3RzIHdpdGggdGhlIFNlcnZlciwgaWYgY29ubmVjdGVkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnRydWUgb25seSBpZiB0aGUgQ2xpZW50IHNob3VsZCBjb250aW51ZSB0byBzdGFydCB0aGUgYWN0dWFsIHJlcXVlc3RlZCBwcm9ncmFtLjwvcmV0dXJucz5cclxuICBhc3luYyBTdGFydFNlc3Npb24oKTogUHJvbWlzZTxib29sZWFuPntcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+YnVpbGQgdGhlIHhtbCByZXF1ZXN0OyBzZW5kIGl0IHRvIHRoZSBydW50aW1lLWVuZ2luZTsgcmVjZWl2ZSBhIHJlc3BvbnNlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNlbmRpbmdJbnN0cnVjdGlvblwiPmluc3RydWN0aW9uIHdoYXQgdG8gc2VuZCBkdXJpbmcgZXhlY3V0aW9uIC0gTk9fVEFTS1NfT1JfQ09NTUFORFMgLyBPTkxZX0NPTU1BTkRTIC8gVEFTS1NfQU5EX0NPTU1BTkRTLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2Vzc2lvblN0YWdlXCI+SEFORFNIQUtFIC8gSU5JVElBTCAvIE5PUk1BTC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc1wiPnJlc3VsdCBvdCBiZSAgcmVhZCBhZnRlciBwYXJzaW5nIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuPC9wYXJhbT5cclxuICBhc3luYyBFeGVjdXRlKHNlbmRpbmdJbnN0cnVjdGlvbjogQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbik6IFByb21pc2U8dm9pZD47XHJcbiAgYXN5bmMgRXhlY3V0ZShzZW5kaW5nSW5zdHJ1Y3Rpb246IENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24sIHNlc3Npb25TdGFnZTogQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1Nlc3Npb25TdGFnZSwgcmVzOiBJUmVzdWx0VmFsdWUpOiBQcm9taXNlPHZvaWQ+O1xyXG4gIGFzeW5jIEV4ZWN1dGUoc2VuZGluZ0luc3RydWN0aW9uOiBDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9uLCBzZXNzaW9uU3RhZ2U/OiBDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2Vzc2lvblN0YWdlLCByZXM/OiBJUmVzdWx0VmFsdWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChzZXNzaW9uU3RhZ2UpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuRXhlY3V0ZV8wKHNlbmRpbmdJbnN0cnVjdGlvbik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuRXhlY3V0ZV8xKHNlbmRpbmdJbnN0cnVjdGlvbiwgc2Vzc2lvblN0YWdlLCByZXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmJ1aWxkIHRoZSB4bWwgcmVxdWVzdDsgc2VuZCBpdCB0byB0aGUgcnVudGltZS1lbmdpbmU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2VuZGluZ0luc3RydWN0aW9uXCI+aW5zdHJ1Y3Rpb24gd2hhdCB0byBzZW5kIGR1cmluZyBleGVjdXRpb24gLSBOT19UQVNLU19PUl9DT01NQU5EUyAvIE9OTFlfQ09NTUFORFMgLyBUQVNLU19BTkRfQ09NTUFORFMuPC9wYXJhbT5cclxuICBwcml2YXRlIGFzeW5jIEV4ZWN1dGVfMChzZW5kaW5nSW5zdHJ1Y3Rpb246IENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuRXhlY3V0ZV8xKHNlbmRpbmdJbnN0cnVjdGlvbiwgQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1Nlc3Npb25TdGFnZS5OT1JNQUwsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmJ1aWxkIHRoZSB4bWwgcmVxdWVzdDsgc2VuZCBpdCB0byB0aGUgcnVudGltZS1lbmdpbmU7IHJlY2VpdmUgYSByZXNwb25zZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzZW5kaW5nSW5zdHJ1Y3Rpb25cIj5pbnN0cnVjdGlvbiB3aGF0IHRvIHNlbmQgZHVyaW5nIGV4ZWN1dGlvbiAtIE5PX1RBU0tTX09SX0NPTU1BTkRTIC8gT05MWV9DT01NQU5EUyAvIFRBU0tTX0FORF9DT01NQU5EUy48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNlc3Npb25TdGFnZVwiPkhBTkRTSEFLRSAvIElOSVRJQUwgLyBOT1JNQUwuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNcIj5yZXN1bHQgb3QgYmUgIHJlYWQgYWZ0ZXIgcGFyc2luZyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLjwvcGFyYW0+XHJcbiAgYXN5bmMgRXhlY3V0ZV8xKHNlbmRpbmdJbnN0cnVjdGlvbjogQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbiwgc2Vzc2lvblN0YWdlOiBDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2Vzc2lvblN0YWdlLCByZXM6IElSZXN1bHRWYWx1ZSk6IFByb21pc2U8dm9pZD57XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEludm9rZSB0aGUgcmVxdWVzdCBVUkwgJiByZXR1cm4gdGhlIHJlc3BvbnNlLjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXF1ZXN0ZWRVUkxcIj5VUkwgdG8gYmUgYWNjZXNzZWQuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+cmVzcG9uc2UgKGZyb20gdGhlIHNlcnZlcikuPC9yZXR1cm5zPlxyXG4gIGFzeW5jIEdldENvbnRlbnQocmVxdWVzdGVkVVJMOiBzdHJpbmcsIHVzZUNhY2hlOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+e1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnJyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+c2VuZCBNb25pdG9yIG1lc3NhZ2luZyB0byB0aGUgc2VydmVyPC9zdW1tYXJ5PlxyXG4gIGFic3RyYWN0IFNlbmRNb25pdG9yT25seSgpOiB2b2lkIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiB1bnNjcmFtYmxlIHNlcnZlcnMgcmVzcG9uc2U8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnVuc2NyYW1ibGVkIGNvbnRlbnQ8L3JldHVybnM+XHJcbiAgc3RhdGljIFVuU2NyYW1ibGUocmVzcEJ1Zjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBvcGVuVGFnTG9jYXRpb246IG51bWJlciA9IHJlc3BCdWYuaW5kZXhPZihYTUxDb25zdGFudHMuTUdfVEFHX09QRU4pO1xyXG4gICAgbGV0IGNvcmU6IHN0cmluZztcclxuXHJcbiAgICBpZiAob3BlblRhZ0xvY2F0aW9uICE9PSAtMSkge1xyXG4gICAgICBsZXQgc3RhcnQ6IG51bWJlciA9IG9wZW5UYWdMb2NhdGlvbiArIFhNTENvbnN0YW50cy5NR19UQUdfT1BFTi5sZW5ndGg7XHJcbiAgICAgIGxldCBvcGVuVGFnOiBzdHJpbmcgPSByZXNwQnVmLnN1YnN0cigwLCBzdGFydCk7XHJcblxyXG4gICAgICBsZXQgZmluaXNoOiBudW1iZXIgPSByZXNwQnVmLmxhc3RJbmRleE9mKFhNTENvbnN0YW50cy5UQUdfT1BFTik7XHJcbiAgICAgIGxldCBjbG9zZVRhZzogc3RyaW5nID0gcmVzcEJ1Zi5zdWJzdHIoZmluaXNoKTtcclxuXHJcbiAgICAgIGNvcmUgPSBvcGVuVGFnICsgU2NyYW1ibGVyLlVuU2NyYW1ibGUocmVzcEJ1Ziwgc3RhcnQsIGZpbmlzaCAtIDEpICsgY2xvc2VUYWc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gV2UgZ290IGEgc2NyYW1ibGVkIGVycm9yIG1lc3NhZ2UsIHRoZXJlIGlzIG5vIG9wZW4gdGFnXHJcbiAgICAgIGNvcmUgPSBTY3JhbWJsZXIuVW5TY3JhbWJsZShyZXNwQnVmLCAwLCByZXNwQnVmLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvcmU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -23,4 +23,4 @@ export class CommandsProcessorManager {
23
23
  return succeeded;
24
24
  }
25
25
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFHakgsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxNQUFNLENBQUMsb0JBQW9CO1FBQ3pCLE9BQU8sdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQU9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQW9CLEVBQUUsUUFBaUI7UUFDN0QsSUFBSSxHQUFHLEdBQVcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzdHLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQU1BLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWTtRQUN4QixJQUFJLFNBQVMsR0FBWSxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLCtCQUErQixDQUFDLElBQUksdUNBQXVDLEVBQUUsQ0FBQyxDQUFDO1lBR3pHLFNBQVMsR0FBRyxNQUFNLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pFLENBQUM7UUFDRCxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQ0FBbUMsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakgsTUFBTSxFQUFFLENBQUM7UUFDWCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2VyLCBTdHJVdGlsIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtDb21tYW5kc1Byb2Nlc3NvckJhc2V9IGZyb20gXCIuL0NvbW1hbmRzUHJvY2Vzc29yQmFzZVwiO1xyXG5pbXBvcnQge1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yfSBmcm9tIFwiLi9yZW1vdGUvUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3JcIjtcclxuaW1wb3J0IHtIdHRwTWFuYWdlcn0gZnJvbSBcIi4vaHR0cC9IdHRwTWFuYWdlclwiO1xyXG5pbXBvcnQge0ludGVyYWN0aXZlQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlcn0gZnJvbSBcIi4vY29tbXVuaWNhdGlvbnMvSW50ZXJhY3RpdmVDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyXCI7XHJcblxyXG4vLyBUT0RPOiBDb25zaWRlciByZW1vdmluZyB0aGlzIGNsYXNzIGFuZCB1c2luZyBSZW1vdGVDb21tYW5kc1Byb2Nlc3NvciBkaXJlY3RseS5cclxuZXhwb3J0IGNsYXNzIENvbW1hbmRzUHJvY2Vzc29yTWFuYWdlciB7XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgdGhlIGNvbW1hbmRzIHByb2Nlc3NvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q29tbWFuZHNQcm9jZXNzb3IoKTogQ29tbWFuZHNQcm9jZXNzb3JCYXNlIHtcclxuICAgIHJldHVybiBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgdGhlIFVSTCBjb250ZW50IGFjY29yZGluZyB0byB0aGUgYWN0aXZlIGNvbW1hbmRzIHByb2Nlc3NvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVxdWVzdGVkVVJMXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBhc3luYyBHZXRDb250ZW50KHJlcXVlc3RlZFVSTDogc3RyaW5nLCB1c2VDYWNoZTogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBsZXQgcmV0OiBzdHJpbmcgPSBhd2FpdCAoQ29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyLkdldENvbW1hbmRzUHJvY2Vzc29yKCkuR2V0Q29udGVudChyZXF1ZXN0ZWRVUkwsIHVzZUNhY2hlKSk7XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTdGFydCBzZXNzaW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gICBzdGF0aWMgYXN5bmMgU3RhcnRTZXNzaW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IHN1Y2NlZWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5TZXRDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyKG5ldyBJbnRlcmFjdGl2ZUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXIoKSk7XHJcblxyXG4gICAgICAvLyBhY2Nlc3MgdGhlIFNlcnZlclxyXG4gICAgICBzdWNjZWVkZWQgPSBhd2FpdCBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpLlN0YXJ0U2Vzc2lvbigpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlclRvTG9nKFwiRmFpbGVkIGNvbm5lY3RpbmcgdG8gdGhlIHNlcnZlcjogXCIgKyBTdHJVdGlsLmdldENvbnNvbGVFcm9yU3RyaW5nKGV4Lk1lc3NhZ2UpKTtcclxuICAgICAgdGhyb3cgZXg7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN1Y2NlZWRlZDtcclxuICB9XHJcbn1cclxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFHakgsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxNQUFNLENBQUMsb0JBQW9CO1FBQ3pCLE9BQU8sdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQU9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQW9CLEVBQUUsUUFBaUI7UUFDN0QsSUFBSSxHQUFHLEdBQVcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzdHLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQU1BLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWTtRQUN4QixJQUFJLFNBQVMsR0FBWSxLQUFLLENBQUM7UUFDL0IsSUFBSTtZQUNGLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLHVDQUF1QyxFQUFFLENBQUMsQ0FBQztZQUd6RyxTQUFTLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN4RTtRQUNELE9BQU8sRUFBRSxFQUFFO1lBQ1QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQ0FBbUMsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakgsTUFBTSxFQUFFLENBQUM7U0FDVjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlciwgU3RyVXRpbCB9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JCYXNlfSBmcm9tIFwiLi9Db21tYW5kc1Byb2Nlc3NvckJhc2VcIjtcclxuaW1wb3J0IHtSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvcn0gZnJvbSBcIi4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yXCI7XHJcbmltcG9ydCB7SHR0cE1hbmFnZXJ9IGZyb20gXCIuL2h0dHAvSHR0cE1hbmFnZXJcIjtcclxuaW1wb3J0IHtJbnRlcmFjdGl2ZUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXJ9IGZyb20gXCIuL2NvbW11bmljYXRpb25zL0ludGVyYWN0aXZlQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlclwiO1xyXG5cclxuLy8gVE9ETzogQ29uc2lkZXIgcmVtb3ZpbmcgdGhpcyBjbGFzcyBhbmQgdXNpbmcgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IgZGlyZWN0bHkuXHJcbmV4cG9ydCBjbGFzcyBDb21tYW5kc1Byb2Nlc3Nvck1hbmFnZXIge1xyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSBjb21tYW5kcyBwcm9jZXNzb3JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldENvbW1hbmRzUHJvY2Vzc29yKCk6IENvbW1hbmRzUHJvY2Vzc29yQmFzZSB7XHJcbiAgICByZXR1cm4gUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSBVUkwgY29udGVudCBhY2NvcmRpbmcgdG8gdGhlIGFjdGl2ZSBjb21tYW5kcyBwcm9jZXNzb3JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlcXVlc3RlZFVSTFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgYXN5bmMgR2V0Q29udGVudChyZXF1ZXN0ZWRVUkw6IHN0cmluZywgdXNlQ2FjaGU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgbGV0IHJldDogc3RyaW5nID0gYXdhaXQgKENvbW1hbmRzUHJvY2Vzc29yTWFuYWdlci5HZXRDb21tYW5kc1Byb2Nlc3NvcigpLkdldENvbnRlbnQocmVxdWVzdGVkVVJMLCB1c2VDYWNoZSkpO1xyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU3RhcnQgc2Vzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICAgc3RhdGljIGFzeW5jIFN0YXJ0U2Vzc2lvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCBzdWNjZWVkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHRyeSB7XHJcbiAgICAgIEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuU2V0Q29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlcihuZXcgSW50ZXJhY3RpdmVDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyKCkpO1xyXG5cclxuICAgICAgLy8gYWNjZXNzIHRoZSBTZXJ2ZXJcclxuICAgICAgc3VjY2VlZGVkID0gYXdhaXQgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5TdGFydFNlc3Npb24oKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTZXJ2ZXJUb0xvZyhcIkZhaWxlZCBjb25uZWN0aW5nIHRvIHRoZSBzZXJ2ZXI6IFwiICsgU3RyVXRpbC5nZXRDb25zb2xlRXJvclN0cmluZyhleC5NZXNzYWdlKSk7XHJcbiAgICAgIHRocm93IGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdWNjZWVkZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -159,4 +159,4 @@ export class CommandsTable {
159
159
  return this._cmds.length;
160
160
  }
161
161
  }
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ29tbWFuZHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUV4RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BFLE9BQU8sRUFBZ0IsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUU5RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsTUFBTSxPQUFPLGFBQWE7SUFDaEIsS0FBSyxHQUF5QixJQUFJLENBQUM7SUFDbkMsYUFBYSxHQUFXLENBQUMsQ0FBQztJQUVsQztRQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQjtRQUN4QixPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQU1ELFFBQVEsQ0FBQyxNQUFpQjtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FB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QUFNLENBQUM7SUFDM0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWG1sUGFyc2VyIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7SUNsaWVudFRhcmdldGVkQ29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9JQ2xpZW50VGFyZ2V0ZWRDb21tYW5kJztcclxuaW1wb3J0IHtYTUxCYXNlZENvbW1hbmRCdWlsZGVyfSBmcm9tICcuL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1hNTEJhc2VkQ29tbWFuZEJ1aWxkZXInO1xyXG5pbXBvcnQge0lSZXN1bHRWYWx1ZX0gZnJvbSAnLi9ydC9JUmVzdWx0VmFsdWUnO1xyXG5pbXBvcnQge1Jlc3VsdENvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvUmVzdWx0Q29tbWFuZCc7XHJcbmltcG9ydCB7SUNsaWVudENvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvSUNsaWVudENvbW1hbmQnO1xyXG5pbXBvcnQge0Fib3J0Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9BYm9ydENvbW1hbmQnO1xyXG5pbXBvcnQge1N0cmluZ0J1aWxkZXIsIExpc3R9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtWZXJpZnlDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1ZlcmlmeUNvbW1hbmQnO1xyXG5pbXBvcnQge0NsaWVudE9yaWdpbmF0ZWRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NsaWVudE9yaWdpbmF0ZWRDb21tYW5kJztcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSAnLi9Db25zdEludGVyZmFjZSc7XHJcbmltcG9ydCB7VGFza30gZnJvbSAnLi90YXNrcy9UYXNrJztcclxuaW1wb3J0IHtDbGllbnRPcmlnaW5hdGVkQ29tbWFuZFNlcmlhbGl6ZXJ9IGZyb20gJy4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ2xpZW50T3JpZ2luYXRlZENvbW1hbmRTZXJpYWxpemVyJztcclxuaW1wb3J0IHsgSUNvbW1hbmRzVGFibGUgfSBmcm9tICcuL0lDb21tYW5kc1RhYmxlJztcclxuaW1wb3J0IHsgR2xvYmFsQ29tbWFuZHNNYW5hZ2VyIH0gZnJvbSAnLi9HbG9iYWxDb21tYW5kc01hbmFnZXInO1xyXG5pbXBvcnQgeyBBY2Nlc3NIZWxwZXIgfSBmcm9tICcuL0FjY2Vzc0hlbHBlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgQ29tbWFuZHNUYWJsZSBpbXBsZW1lbnRzIElDb21tYW5kc1RhYmxle1xyXG4gIHByaXZhdGUgX2NtZHM6IExpc3Q8SUNsaWVudENvbW1hbmQ+ID0gbnVsbDtcclxuICBwcml2YXRlIF9pdGVyYXRpb25JZHg6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fY21kcyA9IG5ldyBMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlQ29tbWFuZHNUYWJsZSgpOklDb21tYW5kc1RhYmxlIHtcclxuICAgIHJldHVybiBuZXcgQ29tbWFuZHNUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFRvIHBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCAgX2NtZHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gaW5kZXggb2YgZW5kIGxhc3QgIDxjb21tYW5kIC4uLj4gdGFnPC9yZXR1cm5zPlxyXG4gIGZpbGxEYXRhKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICB3aGlsZSAodGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlci5nZXROZXh0VGFnKCksIHBhcnNlcikpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBUbyBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj4gIG5hbWUgb2YgaW5uZXIgdGFnIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBpbml0SW5uZXJPYmplY3RzKGZvdW5kVGFnTmFtZTogc3RyaW5nLCBwYXJzZXI6IFhtbFBhcnNlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0NPTU1BTkQpIHtcclxuICAgICAgbGV0IGNtZDogSUNsaWVudFRhcmdldGVkQ29tbWFuZCA9IG5ldyBYTUxCYXNlZENvbW1hbmRCdWlsZGVyKCkuZmlsbERhdGEocGFyc2VyKSBhcyBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG4gICAgICB0aGlzLl9jbWRzLnB1c2goY21kKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgRXhlY3V0ZSBhbGwgY29tbWFuZHMgaW4gY29tbWFuZCB0YWJsZSBhbmQgZGVsZXRlIHRoZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc1wiPnJlc3VsdC48L3BhcmFtPlxyXG4gIGFzeW5jIEV4ZWN1dGUocmVzOiBJUmVzdWx0VmFsdWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBjdXJyRnJhbWU6IG51bWJlciA9IEdsb2JhbENvbW1hbmRzTWFuYWdlci5JbnN0YW5jZS5nZXRDbWRGcmFtZSgpOyAvLyBjbWRGcmFtZSsrOyAgc2F2ZSBhIGxvY2FsIHZhbHVlIG9mIHRoZSBmcmFtZVxyXG4gICAgR2xvYmFsQ29tbWFuZHNNYW5hZ2VyLkluc3RhbmNlLmFkZDF0b0NtZEZyYW1lKCk7XHJcbiAgICBsZXQgZmlyc3RCbG9ja2luZzogbnVtYmVyID0gLTE7XHJcbiAgICBsZXQgaTogbnVtYmVyLCBqOiBudW1iZXI7XHJcbiAgICBsZXQgY21kOiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG5cclxuICAgIC8vIGZyYW1lcyBhcmUgdXNlZCBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5XHJcbiAgICAvLyB0aGUgaW5uZXIgY2FsbCB3aWxsIG5vdCBleGVjdXRlIGNvbW1hbmRzIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIGJ5IHNvbWUgb3V0ZXJcclxuICAgIC8vIGNhbGwgdG8gdGhlIG1ldGhvZFxyXG5cclxuICAgIC8vIEZpcnN0IHN0ZXAgLSBtb3ZlIGFsbCByZXN1bHQgY29tbWFuZHMgYmVmb3JlIGFueSBibG9ja2luZyBjb21tYW5kcyAoUUNSICM2OTM0MjgpXHJcbiAgICAvLyBpdCBjYW4ndCBiZSB0aGF0IHRoZXkgYmVsb25nIHRvIHRoZSBibG9ja2luZyB0YXNrLlxyXG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMuZ2V0U2l6ZSgpOyBpID0gaSArIDEpIHtcclxuXHJcbiAgICAgIGNtZCA9IHRoaXMuZ2V0Q21kKGkpIGFzIElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcbiAgICAgIGlmIChjbWQuSXNCbG9ja2luZyAmJiBmaXJzdEJsb2NraW5nID09PSAtMSlcclxuICAgICAgICBmaXJzdEJsb2NraW5nID0gaTtcclxuICAgICAgZWxzZSBpZiAoY21kIGluc3RhbmNlb2YgUmVzdWx0Q29tbWFuZCAmJiBmaXJzdEJsb2NraW5nICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuX2NtZHMuSW5zZXJ0KGZpcnN0QmxvY2tpbmcsIGNtZCk7XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdChpICsgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHNldCB0aGUgZnJhbWUgZm9yIGNvbW1hbmRzIHdoaWNoIGhhcyBubyBmcmFtZSB5ZXRcclxuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmdldFNpemUoKTsgaSA9IGkgKyAxKSB7XHJcblxyXG4gICAgICBjbWQgPSB0aGlzLmdldENtZChpKSBhcyBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG4gICAgICBjbWQuRnJhbWUgPSBjdXJyRnJhbWU7XHJcblxyXG4gICAgICAvLyBJZiBhIGNvbW1hbmQgYmxvY2tzIHRoZSBjYWxsZXIsIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgbW92ZWQgdG9cclxuICAgICAgLy8gdGhlIG5leHQgYWN0aXZlIE1HZGF0YSwgc28gdGhleSB3aWxsIGJlIGV4ZWN1dGVkIChRQ1IgIzQzODM4NylcclxuICAgICAgaWYgKGNtZC5Jc0Jsb2NraW5nKSB7XHJcbiAgICAgICAgZm9yIChqID0gaSArIDE7IGogPCB0aGlzLmdldFNpemUoKTsgaiA9IGogKyAxKVxyXG4gICAgICAgICAgR2xvYmFsQ29tbWFuZHNNYW5hZ2VyLkluc3RhbmNlLmFkZFVuZnJhbWVkQ21kKHRoaXMuZ2V0Q21kKGopKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY21kcy5TZXRTaXplKGkgKyAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdoaWxlICh0aGlzLmdldFNpemUoKSA+IDApIHtcclxuICAgICAgLy8gVE9ETzogQ2hlY2sgJ2FzJyBmb3IgSW50ZXJmYWNlIGluIHR5cGVzY3JpcHRcclxuICAgICAgY29uc3QgdG1wQ21kID0gdGhpcy5leHRyYWN0Q21kKGN1cnJGcmFtZSk7XHJcbiAgICAgIGlmICh0bXBDbWQgaW5zdGFuY2VvZiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kKVxyXG4gICAgICAgIGNtZCA9IHRtcENtZDtcclxuXHJcbiAgICAgIGlmIChjbWQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChjbWQuU2hvdWxkRXhlY3V0ZSkge1xyXG4gICAgICAgICAgYXdhaXQgY21kLkV4ZWN1dGUocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBHbG9iYWxDb21tYW5kc01hbmFnZXIuSW5zdGFuY2UuYWRkQ29tbWFuZHNFeGVjdXRlZEFmdGVyVGFza1N0YXJ0ZWQoY21kKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIG5leHQgY29tbWFuZCB0byBleGVjdXRlIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gc3VjaCBjb21tYW5kXHJcbiAgLy8vICAgdGhlIGFib3J0IGNvbW1hbmRzIGFyZSByZXR1cm5lZCBmaXJzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmcmFtZVwiPnRoZSBmcmFtZSBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgYSBjb21tYW5kIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBleHRyYWN0Q21kKGZyYW1lOiBudW1iZXIpOiBJQ2xpZW50Q29tbWFuZCB7XHJcbiAgICBsZXQgc2l6ZTogbnVtYmVyID0gdGhpcy5nZXRTaXplKCk7XHJcbiAgICBsZXQgY21kOiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kID0gbnVsbDtcclxuICAgIGxldCB2ZXJpZnlDbWQ6IElDbGllbnRUYXJnZXRlZENvbW1hbmQgPSBudWxsO1xyXG4gICAgbGV0IHZlcmlmeUluZGV4OiBudW1iZXI7XHJcbiAgICBsZXQgdmVyaWZ5VGFzazogVGFzayA9IG51bGw7XHJcbiAgICBsZXQgYWJvcnRUYXNrOiBUYXNrID0gbnVsbDtcclxuICAgIGxldCBzdGFydEl0ZXJhdGlvbklkeDogbnVtYmVyO1xyXG4gICAgbGV0IHRpZDogc3RyaW5nO1xyXG5cclxuICAgIGlmIChzaXplID09PSAwKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5faXRlcmF0aW9uSWR4ID49IHNpemUpXHJcbiAgICAgIHRoaXMuX2l0ZXJhdGlvbklkeCA9IDA7XHJcblxyXG4gICAgc3RhcnRJdGVyYXRpb25JZHggPSB0aGlzLl9pdGVyYXRpb25JZHg7XHJcblxyXG4gICAgLy8gdHJ5IHRvIGZpbmQgYW4gQUJPUlQgY29tbWFuZCBhbmQgcmV0dXJuIGl0XHJcbiAgICBmb3IgKDsgdGhpcy5faXRlcmF0aW9uSWR4IDwgc2l6ZTsgdGhpcy5faXRlcmF0aW9uSWR4KyspIHtcclxuICAgICAgY21kID0gKCh0aGlzLmdldENtZCh0aGlzLl9pdGVyYXRpb25JZHgpIGluc3RhbmNlb2YgQWJvcnRDb21tYW5kKSA/IDxBYm9ydENvbW1hbmQ+dGhpcy5nZXRDbWQodGhpcy5faXRlcmF0aW9uSWR4KSA6IG51bGwpO1xyXG4gICAgICBpZiAoY21kICE9IG51bGwgJiYgIWNtZC5UYXNrVGFnLnN0YXJ0c1dpdGgoJy0nKSAmJiBjbWQuRnJhbWUgPT09IGZyYW1lKSB7XHJcbiAgICAgICAgLy8gaWYgYW4gYWJvcnQgY29tbWFuZCB3YXMgZm91bmQsIGV4ZWN1dGUgYWxsIHByZXZpb3VzIHZlcmlmeSBjb21tYW5kcyBvZiB0aGUgdGFzayBvciBpdHMnIHN1Yi10YXNrc1xyXG4gICAgICAgIGZvciAodmVyaWZ5SW5kZXggPSAwOyB2ZXJpZnlJbmRleCA8IHRoaXMuX2l0ZXJhdGlvbklkeDsgdmVyaWZ5SW5kZXgrKykge1xyXG4gICAgICAgICAgdmVyaWZ5Q21kID0gKCh0aGlzLmdldENtZCh2ZXJpZnlJbmRleCkgaW5zdGFuY2VvZiBWZXJpZnlDb21tYW5kKSA/IDxWZXJpZnlDb21tYW5kPnRoaXMuZ2V0Q21kKHZlcmlmeUluZGV4KSA6IG51bGwpO1xyXG4gICAgICAgICAgaWYgKHZlcmlmeUNtZCAhPSBudWxsICYmIHZlcmlmeUNtZC5GcmFtZSA9PT0gZnJhbWUpIHtcclxuICAgICAgICAgICAgdmVyaWZ5VGFzayA9IDxUYXNrPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRUYXNrQnlJRCh2ZXJpZnlDbWQuVGFza1RhZyk7XHJcbiAgICAgICAgICAgIGFib3J0VGFzayA9IDxUYXNrPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRUYXNrQnlJRChjbWQuVGFza1RhZyk7XHJcblxyXG4gICAgICAgICAgICAvLyBTb21ldGltZXMgdGhlIHRhc2sgd2hpY2ggaXNzdWVkIHRoZSB2ZXJpZnkgaXMgbm90IGtub3duIHRvIHRoZSBjbGllbnQgKGUuZy4gYSBiYXRjaCB0YXNrKS5cclxuICAgICAgICAgICAgaWYgKHZlcmlmeVRhc2sgIT0gbnVsbCAmJiB2ZXJpZnlUYXNrLmlzRGVzY2VuZGVudE9mKGFib3J0VGFzaykpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9jbWRzLlJlbW92ZUF0KHZlcmlmeUluZGV4KTtcclxuICAgICAgICAgICAgICB0aGlzLl9pdGVyYXRpb25JZHgtLTtcclxuICAgICAgICAgICAgICByZXR1cm4gdmVyaWZ5Q21kO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQodGhpcy5faXRlcmF0aW9uSWR4KTtcclxuXHJcbiAgICAgICAgLy8gZm9yIGFuIGFib3J0IENNRCBvZiB0YXNrIFwidGlkXCIsIHRoZSBzZXJ2ZXIgbWlnaHQgc2VuZCBhbm90aGVyIGFib3J0IENNRCBmb3IgdGFza1xyXG4gICAgICAgIC8vIFwiLXRpZFwiLiBXZSBzaG91bGQgY29tYmluZSB0aGVtIGFuZCBnZXQgcmlkIG9mIHRoZSBzZWNvbmQgQ01ELlxyXG4gICAgICAgIHNpemUgPSB0aGlzLmdldFNpemUoKTtcclxuICAgICAgICBmb3IgKHN0YXJ0SXRlcmF0aW9uSWR4ID0gMDsgc3RhcnRJdGVyYXRpb25JZHggPCBzaXplOyBzdGFydEl0ZXJhdGlvbklkeCsrKSB7XHJcbiAgICAgICAgICB0aWQgPSAoPElDbGllbnRUYXJnZXRlZENvbW1hbmQ+dGhpcy5nZXRDbWQoc3RhcnRJdGVyYXRpb25JZHgpKS5UYXNrVGFnO1xyXG4gICAgICAgICAgaWYgKHRpZCAhPSBudWxsICYmIHRpZC5zdWJzdHIoMSkgPT09IGNtZC5UYXNrVGFnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQoc3RhcnRJdGVyYXRpb25JZHgpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjbWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBhdCB0aGlzIHN0YWdlIG5vIEFCT1JUIGNvbW1hbmQgd2FzIGZvdW5kIGluIHRoZSB0YWJsZVxyXG5cclxuICAgIGZvciAodmVyaWZ5SW5kZXggPSAwOyB2ZXJpZnlJbmRleCA8IHNpemU7IHZlcmlmeUluZGV4KyspIHtcclxuICAgICAgdmVyaWZ5Q21kID0gKCh0aGlzLmdldENtZCh2ZXJpZnlJbmRleCkgaW5zdGFuY2VvZiBWZXJpZnlDb21tYW5kKSA/IDxWZXJpZnlDb21tYW5kPnRoaXMuZ2V0Q21kKHZlcmlmeUluZGV4KSA6IG51bGwpO1xyXG4gICAgICBpZiAodmVyaWZ5Q21kICE9IG51bGwgJiYgdmVyaWZ5Q21kLkZyYW1lID09PSBmcmFtZSAmJlxyXG4gICAgICAgIEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRUYXNrQnlJRCh2ZXJpZnlDbWQuVGFza1RhZykgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQodmVyaWZ5SW5kZXgpO1xyXG4gICAgICAgIHJldHVybiB2ZXJpZnlDbWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBhdCB0aGlzIHN0YWdlIG5vIFZFUklGWSBjb21tYW5kIHdhcyBmb3VuZCBpbiB0aGUgdGFibGVcclxuXHJcbiAgICBmb3IgKHRoaXMuX2l0ZXJhdGlvbklkeCA9IDA7IHRoaXMuX2l0ZXJhdGlvbklkeCA8IHNpemU7IHRoaXMuX2l0ZXJhdGlvbklkeCsrKSB7XHJcbiAgICAgIGNtZCA9IHRoaXMuZ2V0Q21kKHRoaXMuX2l0ZXJhdGlvbklkeCkgYXMgSUNsaWVudFRhcmdldGVkQ29tbWFuZDtcclxuICAgICAgaWYgKGNtZC5GcmFtZSA9PT0gZnJhbWUpIHtcclxuICAgICAgICB0aGlzLl9jbWRzLlJlbW92ZUF0KHRoaXMuX2l0ZXJhdGlvbklkeCk7XHJcbiAgICAgICAgcmV0dXJuIGNtZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcblxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGNvbW1hbmQgYnkgaXRzIGluZGV4IGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggb2YgdGhlIHJlcXVlc3RlZCBjb21tYW5kPC9wYXJhbT5cclxuICBnZXRDbWQoaWR4OiBudW1iZXIpOiBJQ2xpZW50Q29tbWFuZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY21kcy5nZXRfSXRlbShpZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIHRoZSBYTUwgc3RydWN0dXJlIG9mIHRoZSBjb21tYW5kcyBhbmQgQ0xFQVIgdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBidWlsZFhNTChtZXNzYWdlOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fY21kcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgY21kOiBDbGllbnRPcmlnaW5hdGVkQ29tbWFuZCA9IDxDbGllbnRPcmlnaW5hdGVkQ29tbWFuZD50aGlzLl9jbWRzLmdldF9JdGVtKGkpO1xyXG4gICAgICBtZXNzYWdlLkFwcGVuZChDbGllbnRPcmlnaW5hdGVkQ29tbWFuZFNlcmlhbGl6ZXIuU2VyaWFsaXplKGNtZCwgQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhZGQgYSBjb21tYW5kIHRvIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjbWRcIj5hIGNvbW1hbmQgdG8gdG8gYWRkIHRvIHRoZSB0YWJsZTwvcGFyYW0+XHJcbiAgQWRkKGNtZDogSUNsaWVudENvbW1hbmQpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NtZHMucHVzaChjbWQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENsZWFyIG91dCB0aGUgY29tbWFuZCB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgQ2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jbWRzLkNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGV4dHJhY3QgYW5kIHJlbW92ZSBhIGNvbW1hbmQgZnJvbSB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbW1hbmRJbmRleFwiPiBpbmRleCBvZiBjb21tYW5kIGluIHRoZSB0YWJsZTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBFeHRyYWN0Q29tbWFuZChjb21tYW5kSW5kZXg6IG51bWJlcik6IElDbGllbnRDb21tYW5kIHtcclxuICAgIGxldCBjb21tYW5kOiBJQ2xpZW50Q29tbWFuZCA9IHRoaXMuZ2V0Q21kKGNvbW1hbmRJbmRleCk7XHJcbiAgICB0aGlzLl9jbWRzLlJlbW92ZUF0KGNvbW1hbmRJbmRleCk7XHJcbiAgICByZXR1cm4gY29tbWFuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjbGVhciBhbGwgdGhlIGNvbW1hbmRzIGZyb20gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NtZHMuQ2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY21kcy5sZW5ndGg7XHJcbiAgfVxyXG59XHJcbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ29tbWFuZHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUV4RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BFLE9BQU8sRUFBZ0IsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUU5RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsTUFBTSxPQUFPLGFBQWE7SUFDaEIsS0FBSyxHQUF5QixJQUFJLENBQUM7SUFDbkMsYUFBYSxHQUFXLENBQUMsQ0FBQztJQUVsQztRQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQjtRQUN4QixPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQU1ELFFBQVEsQ0FBQyxNQUFpQjtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7U0FDMUQ7SUFDSCxDQUFDO0lBTU8sZ0JB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LENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4RCxJQUFJLEdBQUcsR0FBcUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzVHO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQU1ELEdBQUcsQ0FBQyxHQUFtQjtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQU9ELGNBQWMsQ0FBQyxZQUFvQjtRQUNqQyxJQUFJLE9BQU8sR0FBbUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUtELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhtbFBhcnNlciB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge0lDbGllbnRUYXJnZXRlZENvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvSUNsaWVudFRhcmdldGVkQ29tbWFuZCc7XHJcbmltcG9ydCB7WE1MQmFzZWRDb21tYW5kQnVpbGRlcn0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9YTUxCYXNlZENvbW1hbmRCdWlsZGVyJztcclxuaW1wb3J0IHtJUmVzdWx0VmFsdWV9IGZyb20gJy4vcnQvSVJlc3VsdFZhbHVlJztcclxuaW1wb3J0IHtSZXN1bHRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1Jlc3VsdENvbW1hbmQnO1xyXG5pbXBvcnQge0lDbGllbnRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kJztcclxuaW1wb3J0IHtBYm9ydENvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvQWJvcnRDb21tYW5kJztcclxuaW1wb3J0IHtTdHJpbmdCdWlsZGVyLCBMaXN0fSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7VmVyaWZ5Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9WZXJpZnlDb21tYW5kJztcclxuaW1wb3J0IHtDbGllbnRPcmlnaW5hdGVkQ29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9DbGllbnRPcmlnaW5hdGVkQ29tbWFuZCc7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gJy4vQ29uc3RJbnRlcmZhY2UnO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gJy4vdGFza3MvVGFzayc7XHJcbmltcG9ydCB7Q2xpZW50T3JpZ2luYXRlZENvbW1hbmRTZXJpYWxpemVyfSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NsaWVudE9yaWdpbmF0ZWRDb21tYW5kU2VyaWFsaXplcic7XHJcbmltcG9ydCB7IElDb21tYW5kc1RhYmxlIH0gZnJvbSAnLi9JQ29tbWFuZHNUYWJsZSc7XHJcbmltcG9ydCB7IEdsb2JhbENvbW1hbmRzTWFuYWdlciB9IGZyb20gJy4vR2xvYmFsQ29tbWFuZHNNYW5hZ2VyJztcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSAnLi9BY2Nlc3NIZWxwZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbW1hbmRzVGFibGUgaW1wbGVtZW50cyBJQ29tbWFuZHNUYWJsZXtcclxuICBwcml2YXRlIF9jbWRzOiBMaXN0PElDbGllbnRDb21tYW5kPiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfaXRlcmF0aW9uSWR4OiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2NtZHMgPSBuZXcgTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZUNvbW1hbmRzVGFibGUoKTpJQ29tbWFuZHNUYWJsZSB7XHJcbiAgICByZXR1cm4gbmV3IENvbW1hbmRzVGFibGUoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBUbyBwYXJzZSBpbnB1dCBzdHJpbmcgYW5kIGZpbGwgIF9jbWRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IGluZGV4IG9mIGVuZCBsYXN0ICA8Y29tbWFuZCAuLi4+IHRhZzwvcmV0dXJucz5cclxuICBmaWxsRGF0YShwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgd2hpbGUgKHRoaXMuaW5pdElubmVyT2JqZWN0cyhwYXJzZXIuZ2V0TmV4dFRhZygpLCBwYXJzZXIpKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgVG8gYWxsb2NhdGUgYW5kIGZpbGwgaW5uZXIgb2JqZWN0cyBvZiB0aGUgY2xhc3NcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRUYWdOYW1lXCI+ICBuYW1lIG9mIGlubmVyIHRhZyA8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdElubmVyT2JqZWN0cyhmb3VuZFRhZ05hbWU6IHN0cmluZywgcGFyc2VyOiBYbWxQYXJzZXIpOiBib29sZWFuIHtcclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IENvbnN0SW50ZXJmYWNlLk1HX1RBR19DT01NQU5EKSB7XHJcbiAgICAgIGxldCBjbWQ6IElDbGllbnRUYXJnZXRlZENvbW1hbmQgPSBuZXcgWE1MQmFzZWRDb21tYW5kQnVpbGRlcigpLmZpbGxEYXRhKHBhcnNlcikgYXMgSUNsaWVudFRhcmdldGVkQ29tbWFuZDtcclxuICAgICAgdGhpcy5fY21kcy5wdXNoKGNtZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEV4ZWN1dGUgYWxsIGNvbW1hbmRzIGluIGNvbW1hbmQgdGFibGUgYW5kIGRlbGV0ZSB0aGVtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNcIj5yZXN1bHQuPC9wYXJhbT5cclxuICBhc3luYyBFeGVjdXRlKHJlczogSVJlc3VsdFZhbHVlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgY3VyckZyYW1lOiBudW1iZXIgPSBHbG9iYWxDb21tYW5kc01hbmFnZXIuSW5zdGFuY2UuZ2V0Q21kRnJhbWUoKTsgLy8gY21kRnJhbWUrKzsgIHNhdmUgYSBsb2NhbCB2YWx1ZSBvZiB0aGUgZnJhbWVcclxuICAgIEdsb2JhbENvbW1hbmRzTWFuYWdlci5JbnN0YW5jZS5hZGQxdG9DbWRGcmFtZSgpO1xyXG4gICAgbGV0IGZpcnN0QmxvY2tpbmc6IG51bWJlciA9IC0xO1xyXG4gICAgbGV0IGk6IG51bWJlciwgajogbnVtYmVyO1xyXG4gICAgbGV0IGNtZDogSUNsaWVudFRhcmdldGVkQ29tbWFuZDtcclxuXHJcbiAgICAvLyBmcmFtZXMgYXJlIHVzZWQgaGVyZSB0byBtYWtlIHN1cmUgdGhhdCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCByZWN1cnNpdmVseVxyXG4gICAgLy8gdGhlIGlubmVyIGNhbGwgd2lsbCBub3QgZXhlY3V0ZSBjb21tYW5kcyB0aGF0IHNob3VsZCBiZSBleGVjdXRlZCBieSBzb21lIG91dGVyXHJcbiAgICAvLyBjYWxsIHRvIHRoZSBtZXRob2RcclxuXHJcbiAgICAvLyBGaXJzdCBzdGVwIC0gbW92ZSBhbGwgcmVzdWx0IGNvbW1hbmRzIGJlZm9yZSBhbnkgYmxvY2tpbmcgY29tbWFuZHMgKFFDUiAjNjkzNDI4KVxyXG4gICAgLy8gaXQgY2FuJ3QgYmUgdGhhdCB0aGV5IGJlbG9uZyB0byB0aGUgYmxvY2tpbmcgdGFzay5cclxuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmdldFNpemUoKTsgaSA9IGkgKyAxKSB7XHJcblxyXG4gICAgICBjbWQgPSB0aGlzLmdldENtZChpKSBhcyBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG4gICAgICBpZiAoY21kLklzQmxvY2tpbmcgJiYgZmlyc3RCbG9ja2luZyA9PT0gLTEpXHJcbiAgICAgICAgZmlyc3RCbG9ja2luZyA9IGk7XHJcbiAgICAgIGVsc2UgaWYgKGNtZCBpbnN0YW5jZW9mIFJlc3VsdENvbW1hbmQgJiYgZmlyc3RCbG9ja2luZyAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLl9jbWRzLkluc2VydChmaXJzdEJsb2NraW5nLCBjbWQpO1xyXG4gICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQoaSArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzZXQgdGhlIGZyYW1lIGZvciBjb21tYW5kcyB3aGljaCBoYXMgbm8gZnJhbWUgeWV0XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5nZXRTaXplKCk7IGkgPSBpICsgMSkge1xyXG5cclxuICAgICAgY21kID0gdGhpcy5nZXRDbWQoaSkgYXMgSUNsaWVudFRhcmdldGVkQ29tbWFuZDtcclxuICAgICAgY21kLkZyYW1lID0gY3VyckZyYW1lO1xyXG5cclxuICAgICAgLy8gSWYgYSBjb21tYW5kIGJsb2NrcyB0aGUgY2FsbGVyLCBmb2xsb3dpbmcgY29tbWFuZHMgYXJlIG1vdmVkIHRvXHJcbiAgICAgIC8vIHRoZSBuZXh0IGFjdGl2ZSBNR2RhdGEsIHNvIHRoZXkgd2lsbCBiZSBleGVjdXRlZCAoUUNSICM0MzgzODcpXHJcbiAgICAgIGlmIChjbWQuSXNCbG9ja2luZykge1xyXG4gICAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgdGhpcy5nZXRTaXplKCk7IGogPSBqICsgMSlcclxuICAgICAgICAgIEdsb2JhbENvbW1hbmRzTWFuYWdlci5JbnN0YW5jZS5hZGRVbmZyYW1lZENtZCh0aGlzLmdldENtZChqKSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NtZHMuU2V0U2l6ZShpICsgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB3aGlsZSAodGhpcy5nZXRTaXplKCkgPiAwKSB7XHJcbiAgICAgIC8vIFRPRE86IENoZWNrICdhcycgZm9yIEludGVyZmFjZSBpbiB0eXBlc2NyaXB0XHJcbiAgICAgIGNvbnN0IHRtcENtZCA9IHRoaXMuZXh0cmFjdENtZChjdXJyRnJhbWUpO1xyXG4gICAgICBpZiAodG1wQ21kIGluc3RhbmNlb2YgSUNsaWVudFRhcmdldGVkQ29tbWFuZClcclxuICAgICAgICBjbWQgPSB0bXBDbWQ7XHJcblxyXG4gICAgICBpZiAoY21kICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoY21kLlNob3VsZEV4ZWN1dGUpIHtcclxuICAgICAgICAgIGF3YWl0IGNtZC5FeGVjdXRlKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgR2xvYmFsQ29tbWFuZHNNYW5hZ2VyLkluc3RhbmNlLmFkZENvbW1hbmRzRXhlY3V0ZWRBZnRlclRhc2tTdGFydGVkKGNtZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBuZXh0IGNvbW1hbmQgdG8gZXhlY3V0ZSBvciBudWxsIGlmIHRoZXJlIGlzIG5vIHN1Y2ggY29tbWFuZFxyXG4gIC8vLyAgIHRoZSBhYm9ydCBjb21tYW5kcyBhcmUgcmV0dXJuZWQgZmlyc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZnJhbWVcIj50aGUgZnJhbWUgZnJvbSB3aGljaCB0byBleHRyYWN0IGEgY29tbWFuZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgZXh0cmFjdENtZChmcmFtZTogbnVtYmVyKTogSUNsaWVudENvbW1hbmQge1xyXG4gICAgbGV0IHNpemU6IG51bWJlciA9IHRoaXMuZ2V0U2l6ZSgpO1xyXG4gICAgbGV0IGNtZDogSUNsaWVudFRhcmdldGVkQ29tbWFuZCA9IG51bGw7XHJcbiAgICBsZXQgdmVyaWZ5Q21kOiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kID0gbnVsbDtcclxuICAgIGxldCB2ZXJpZnlJbmRleDogbnVtYmVyO1xyXG4gICAgbGV0IHZlcmlmeVRhc2s6IFRhc2sgPSBudWxsO1xyXG4gICAgbGV0IGFib3J0VGFzazogVGFzayA9IG51bGw7XHJcbiAgICBsZXQgc3RhcnRJdGVyYXRpb25JZHg6IG51bWJlcjtcclxuICAgIGxldCB0aWQ6IHN0cmluZztcclxuXHJcbiAgICBpZiAoc2l6ZSA9PT0gMClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuX2l0ZXJhdGlvbklkeCA+PSBzaXplKVxyXG4gICAgICB0aGlzLl9pdGVyYXRpb25JZHggPSAwO1xyXG5cclxuICAgIHN0YXJ0SXRlcmF0aW9uSWR4ID0gdGhpcy5faXRlcmF0aW9uSWR4O1xyXG5cclxuICAgIC8vIHRyeSB0byBmaW5kIGFuIEFCT1JUIGNvbW1hbmQgYW5kIHJldHVybiBpdFxyXG4gICAgZm9yICg7IHRoaXMuX2l0ZXJhdGlvbklkeCA8IHNpemU7IHRoaXMuX2l0ZXJhdGlvbklkeCsrKSB7XHJcbiAgICAgIGNtZCA9ICgodGhpcy5nZXRDbWQodGhpcy5faXRlcmF0aW9uSWR4KSBpbnN0YW5jZW9mIEFib3J0Q29tbWFuZCkgPyA8QWJvcnRDb21tYW5kPnRoaXMuZ2V0Q21kKHRoaXMuX2l0ZXJhdGlvbklkeCkgOiBudWxsKTtcclxuICAgICAgaWYgKGNtZCAhPSBudWxsICYmICFjbWQuVGFza1RhZy5zdGFydHNXaXRoKCctJykgJiYgY21kLkZyYW1lID09PSBmcmFtZSkge1xyXG4gICAgICAgIC8vIGlmIGFuIGFib3J0IGNvbW1hbmQgd2FzIGZvdW5kLCBleGVjdXRlIGFsbCBwcmV2aW91cyB2ZXJpZnkgY29tbWFuZHMgb2YgdGhlIHRhc2sgb3IgaXRzJyBzdWItdGFza3NcclxuICAgICAgICBmb3IgKHZlcmlmeUluZGV4ID0gMDsgdmVyaWZ5SW5kZXggPCB0aGlzLl9pdGVyYXRpb25JZHg7IHZlcmlmeUluZGV4KyspIHtcclxuICAgICAgICAgIHZlcmlmeUNtZCA9ICgodGhpcy5nZXRDbWQodmVyaWZ5SW5kZXgpIGluc3RhbmNlb2YgVmVyaWZ5Q29tbWFuZCkgPyA8VmVyaWZ5Q29tbWFuZD50aGlzLmdldENtZCh2ZXJpZnlJbmRleCkgOiBudWxsKTtcclxuICAgICAgICAgIGlmICh2ZXJpZnlDbWQgIT0gbnVsbCAmJiB2ZXJpZnlDbWQuRnJhbWUgPT09IGZyYW1lKSB7XHJcbiAgICAgICAgICAgIHZlcmlmeVRhc2sgPSA8VGFzaz5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodmVyaWZ5Q21kLlRhc2tUYWcpO1xyXG4gICAgICAgICAgICBhYm9ydFRhc2sgPSA8VGFzaz5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQoY21kLlRhc2tUYWcpO1xyXG5cclxuICAgICAgICAgICAgLy8gU29tZXRpbWVzIHRoZSB0YXNrIHdoaWNoIGlzc3VlZCB0aGUgdmVyaWZ5IGlzIG5vdCBrbm93biB0byB0aGUgY2xpZW50IChlLmcuIGEgYmF0Y2ggdGFzaykuXHJcbiAgICAgICAgICAgIGlmICh2ZXJpZnlUYXNrICE9IG51bGwgJiYgdmVyaWZ5VGFzay5pc0Rlc2NlbmRlbnRPZihhYm9ydFRhc2spKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdCh2ZXJpZnlJbmRleCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5faXRlcmF0aW9uSWR4LS07XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmeUNtZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jbWRzLlJlbW92ZUF0KHRoaXMuX2l0ZXJhdGlvbklkeCk7XHJcblxyXG4gICAgICAgIC8vIGZvciBhbiBhYm9ydCBDTUQgb2YgdGFzayBcInRpZFwiLCB0aGUgc2VydmVyIG1pZ2h0IHNlbmQgYW5vdGhlciBhYm9ydCBDTUQgZm9yIHRhc2tcclxuICAgICAgICAvLyBcIi10aWRcIi4gV2Ugc2hvdWxkIGNvbWJpbmUgdGhlbSBhbmQgZ2V0IHJpZCBvZiB0aGUgc2Vjb25kIENNRC5cclxuICAgICAgICBzaXplID0gdGhpcy5nZXRTaXplKCk7XHJcbiAgICAgICAgZm9yIChzdGFydEl0ZXJhdGlvbklkeCA9IDA7IHN0YXJ0SXRlcmF0aW9uSWR4IDwgc2l6ZTsgc3RhcnRJdGVyYXRpb25JZHgrKykge1xyXG4gICAgICAgICAgdGlkID0gKDxJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kPnRoaXMuZ2V0Q21kKHN0YXJ0SXRlcmF0aW9uSWR4KSkuVGFza1RhZztcclxuICAgICAgICAgIGlmICh0aWQgIT0gbnVsbCAmJiB0aWQuc3Vic3RyKDEpID09PSBjbWQuVGFza1RhZykge1xyXG4gICAgICAgICAgICB0aGlzLl9jbWRzLlJlbW92ZUF0KHN0YXJ0SXRlcmF0aW9uSWR4KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY21kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXQgdGhpcyBzdGFnZSBubyBBQk9SVCBjb21tYW5kIHdhcyBmb3VuZCBpbiB0aGUgdGFibGVcclxuXHJcbiAgICBmb3IgKHZlcmlmeUluZGV4ID0gMDsgdmVyaWZ5SW5kZXggPCBzaXplOyB2ZXJpZnlJbmRleCsrKSB7XHJcbiAgICAgIHZlcmlmeUNtZCA9ICgodGhpcy5nZXRDbWQodmVyaWZ5SW5kZXgpIGluc3RhbmNlb2YgVmVyaWZ5Q29tbWFuZCkgPyA8VmVyaWZ5Q29tbWFuZD50aGlzLmdldENtZCh2ZXJpZnlJbmRleCkgOiBudWxsKTtcclxuICAgICAgaWYgKHZlcmlmeUNtZCAhPSBudWxsICYmIHZlcmlmeUNtZC5GcmFtZSA9PT0gZnJhbWUgJiZcclxuICAgICAgICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodmVyaWZ5Q21kLlRhc2tUYWcpICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9jbWRzLlJlbW92ZUF0KHZlcmlmeUluZGV4KTtcclxuICAgICAgICByZXR1cm4gdmVyaWZ5Q21kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXQgdGhpcyBzdGFnZSBubyBWRVJJRlkgY29tbWFuZCB3YXMgZm91bmQgaW4gdGhlIHRhYmxlXHJcblxyXG4gICAgZm9yICh0aGlzLl9pdGVyYXRpb25JZHggPSAwOyB0aGlzLl9pdGVyYXRpb25JZHggPCBzaXplOyB0aGlzLl9pdGVyYXRpb25JZHgrKykge1xyXG4gICAgICBjbWQgPSB0aGlzLmdldENtZCh0aGlzLl9pdGVyYXRpb25JZHgpIGFzIElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcbiAgICAgIGlmIChjbWQuRnJhbWUgPT09IGZyYW1lKSB7XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdCh0aGlzLl9pdGVyYXRpb25JZHgpO1xyXG4gICAgICAgIHJldHVybiBjbWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG5cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBjb21tYW5kIGJ5IGl0cyBpbmRleCBpbiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+dGhlIGluZGV4IG9mIHRoZSByZXF1ZXN0ZWQgY29tbWFuZDwvcGFyYW0+XHJcbiAgZ2V0Q21kKGlkeDogbnVtYmVyKTogSUNsaWVudENvbW1hbmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NtZHMuZ2V0X0l0ZW0oaWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBidWlsZCB0aGUgWE1MIHN0cnVjdHVyZSBvZiB0aGUgY29tbWFuZHMgYW5kIENMRUFSIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlcik6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX2NtZHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IGNtZDogQ2xpZW50T3JpZ2luYXRlZENvbW1hbmQgPSA8Q2xpZW50T3JpZ2luYXRlZENvbW1hbmQ+dGhpcy5fY21kcy5nZXRfSXRlbShpKTtcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoQ2xpZW50T3JpZ2luYXRlZENvbW1hbmRTZXJpYWxpemVyLlNlcmlhbGl6ZShjbWQsIEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRDdXJyTUdEYXRhKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkIGEgY29tbWFuZCB0byB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY21kXCI+YSBjb21tYW5kIHRvIHRvIGFkZCB0byB0aGUgdGFibGU8L3BhcmFtPlxyXG4gIEFkZChjbWQ6IElDbGllbnRDb21tYW5kKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jbWRzLnB1c2goY21kKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDbGVhciBvdXQgdGhlIGNvbW1hbmQgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIENsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY21kcy5DbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBleHRyYWN0IGFuZCByZW1vdmUgYSBjb21tYW5kIGZyb20gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb21tYW5kSW5kZXhcIj4gaW5kZXggb2YgY29tbWFuZCBpbiB0aGUgdGFibGU8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgRXh0cmFjdENvbW1hbmQoY29tbWFuZEluZGV4OiBudW1iZXIpOiBJQ2xpZW50Q29tbWFuZCB7XHJcbiAgICBsZXQgY29tbWFuZDogSUNsaWVudENvbW1hbmQgPSB0aGlzLmdldENtZChjb21tYW5kSW5kZXgpO1xyXG4gICAgdGhpcy5fY21kcy5SZW1vdmVBdChjb21tYW5kSW5kZXgpO1xyXG4gICAgcmV0dXJuIGNvbW1hbmQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY2xlYXIgYWxsIHRoZSBjb21tYW5kcyBmcm9tIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jbWRzLkNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NtZHMubGVuZ3RoO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export let CurrentClientVersion = '4.1100.0-dev4110.253';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VycmVudENsaWVudFZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL0N1cnJlbnRDbGllbnRWZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGxldCBDdXJyZW50Q2xpZW50VmVyc2lvbiA9ICc0LjExMDAuMC1kZXY0MTEwLjI1Myc7Il19
1
+ export let CurrentClientVersion = '4.1100.0-dev4110.256';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VycmVudENsaWVudFZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL0N1cnJlbnRDbGllbnRWZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGxldCBDdXJyZW50Q2xpZW50VmVyc2lvbiA9ICc0LjExMDAuMC1kZXY0MTEwLjI1Nic7Il19
@@ -59,4 +59,4 @@ export class GUIManager {
59
59
  return retResult == Styles.MSGBOX_RESULT_OK;
60
60
  }
61
61
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR1VJTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvR1VJTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLNUMsTUFBTSxPQUFPLFVBQVU7SUFDYixNQUFNLENBQUMsU0FBUyxHQUFlLElBQUksQ0FBQztJQUk1QyxNQUFNLEtBQUssUUFBUTtRQUNqQixJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUMvQixVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDMUMsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFNRCxtQkFBbUI7UUFDakIsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFRRCxVQUFVLENBQUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxXQUFvQjtRQUM5RCxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUVoQixJQUFJLFVBQVUsR0FBWSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxHQUFHLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMzRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXJCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQVFELFNBQVMsQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLFdBQW9CO1FBQzdELElBQUksT0FBTyxHQUFHLENBQUM7WUFFYixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFJRCxLQUFLLENBQUMsSUFBYTtRQUNqQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUVuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQU1PLE9BQU8sQ0FBQyxJQUFZO1FBQzFCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFLTyxPQUFPO1FBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksR0FBSSxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkUsSUFBRyxJQUFJLEtBQUssSUFBSTtnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQVNELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxLQUFhO1FBRXhELE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1RCxPQUFPLE1BQU0sUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFTRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ25FLElBQUksS0FBSyxHQUFXLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLElBQUksR0FBRyxHQUFXLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9ELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQVNELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBYSxFQUFFLEtBQWM7UUFFekMsT0FBTyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFRTSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQWE7UUFDckMsSUFBSSxTQUFTLEdBQVcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNsRixPQUFPLFNBQVMsSUFBWSxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TXNnSW50ZXJmYWNlfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHtDb21tYW5kcywgTWFuYWdlciwgU3R5bGVzfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7TUdEYXRhfSBmcm9tICcuL3Rhc2tzL01HRGF0YSc7XHJcbmltcG9ydCB7UkNUaW1lcn0gZnJvbSAnLi90YXNrcy9SQ1RpbWVyJztcclxuaW1wb3J0IHtNZ0Zvcm19IGZyb20gJy4vZ3VpL01nRm9ybSc7XHJcblxyXG5pbXBvcnQge0xhbmd1YWdlRGF0YX0gZnJvbSAnLi9lbnYvTGFuZ3VhZ2VEYXRhJztcclxuaW1wb3J0IHtBY2Nlc3NIZWxwZXJ9IGZyb20gJy4vQWNjZXNzSGVscGVyJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIDwvc3VtbWFyeT5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEdVSU1hbmFnZXIge1xyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogR1VJTWFuYWdlciA9IG51bGw7IC8vIHRoZSBzaW5nbGUgaW5zdGFuY2Ugb2YgdGhlIEdVSU1hbmFnZXJcclxuXHJcbiAgLy8vICAgc2luZ2xldG9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IEdVSU1hbmFnZXIge1xyXG4gICAgaWYgKEdVSU1hbmFnZXIuX2luc3RhbmNlID09PSBudWxsKVxyXG4gICAgICBHVUlNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBHVUlNYW5hZ2VyKCk7XHJcbiAgICByZXR1cm4gR1VJTWFuYWdlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGV4ZWN1dGUgdGhlIGNvbW1hbmRzIGluIHRoZSBxdWV1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZXhlY0d1aUNvbW1hbmRRdWV1ZSgpOiB2b2lkIHtcclxuICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc3RhcnQgYSB0aW1lclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtZ2RcIj4gTWdEYXRhIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+aW50ZXJ2YWwgaW4gZnVsbCBzZWNvbmRzIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gKGZyb20gY3VycmVudCB0aW1lKTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc0lkbGVUaW1lclwiPnRydWUgaWYgdGhpcyB0aW1lciBpcyB0aGUgaWRsZSB0aW1lcjwvcGFyYW0+XHJcbiAgc3RhcnRUaW1lcihtZ0RhdGE6IE1HRGF0YSwgc2Vjb25kczogbnVtYmVyLCBpc0lkbGVUaW1lcjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHNlY29uZHMgPiAwKSB7XHJcbiAgICAgIC8vIFJDVGltZXIvTWdUaW1lciB3b3JrcyBvbiBtaWxsaXNlY29uZHMgc28gY29udmVydCBzZWNvbmRzIHRvIG1pbGxpc2Vjb25kc1xyXG4gICAgICBsZXQgb2JqUkNUaW1lcjogUkNUaW1lciA9IG5ldyBSQ1RpbWVyKG1nRGF0YSwgc2Vjb25kcyAqIDEwMDAsIGlzSWRsZVRpbWVyKTtcclxuICAgICAgKG9ialJDVGltZXIpLlN0YXJ0KCk7XHJcbiAgICAgIC8vIGZpeGVkIGJ1ZyAyODQ1NjYsIHdoaWxlIHdlIGhhdmUgY29tbWFuZCBpbiBoZSBxdWV1ZSwgZXhlY3V0ZSB0aGVtXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc3RvcCB0aGUgdGltZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiTWdEYXRhXCI+IE1nRGF0YTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+aW50ZXJ2YWwgaW4gZnVsbCBzZWNvbmRzIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gKGZyb20gY3VycmVudCB0aW1lKTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc0lkbGVUaW1lclwiPnRydWUgaWYgdGhpcyB0aW1lciBpcyB0aGUgaWRsZSB0aW1lcjwvcGFyYW0+XHJcbiAgc3RvcFRpbWVyKG1nRGF0YTogTUdEYXRhLCBzZWNvbmRzOiBudW1iZXIsIGlzSWRsZVRpbWVyOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoc2Vjb25kcyA+IDApXHJcbiAgICAvLyBSQ1RpbWVyL01nVGltZXIgd29ya3Mgb24gbWlsbGlzZWNvbmRzIHNvIGNvbnZlcnQgc2Vjb25kcyB0byBtaWxsaXNlY29uZHNcclxuICAgICAgUkNUaW1lci5TdG9wVGltZXIobWdEYXRhLCBzZWNvbmRzICogMTAwMCwgaXNJZGxlVGltZXIpO1xyXG4gIH1cclxuXHJcbiAgYWJvcnQoZm9ybTogTWdGb3JtKTogdm9pZDtcclxuICBhYm9ydCgpOiB2b2lkO1xyXG4gIGFib3J0KGZvcm0/OiBNZ0Zvcm0pOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKVxyXG4gICAgICB0aGlzLmFib3J0XzAoZm9ybSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuYWJvcnRfMSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY2xvc2UgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9ybVwiPiA8L3BhcmFtPlxyXG4gIHByaXZhdGUgYWJvcnRfMChmb3JtOiBNZ0Zvcm0pOiB2b2lkIHtcclxuICAgIGlmIChmb3JtICE9PSBudWxsKSB7XHJcbiAgICAgIE1hbmFnZXIuQWJvcnQoZm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcHJvY2VzcyBBQk9SVCBjb21tYW5kLkNsb3NlIGFsbCBzaGVsbHMuIExhc3Qgc2hlbGwgY2xvc2VkLCB3aWxsIGNsb3NlIHRoZSBkaXNwbGF5LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhYm9ydF8xKCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRTaXplKCk7IGkgPiAwOyBpLS0pIHtcclxuICAgICAgY29uc3QgdGFzayA9ICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0TUdEYXRhKGkgLSAxKS5nZXRGaXJzdFRhc2soKTtcclxuICAgICAgaWYodGFzayAhPT0gbnVsbClcclxuICAgICAgICB0aGlzLmFib3J0KDxNZ0Zvcm0+dGFzay5Gb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBPcGVuIG1lc3NhZ2UgYm94IHdpdGggdGl0bGUgc3RyaW5nIGFuZCBtZXNzYWdlIHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0aXRsZVwiPnRpdGxlIG9mIHRoZSBtZXNzYWdlIGJveDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dcIj5tZXNzYWdlIGZvciB0aGUgbWVzc2FnZSBib3g8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj50aGUgc3R5bGUgb2YgdGhlIG1lc3NhZ2UgYm94IC0tLSBidXR0b25zLCBpY29uPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBidXR0b24gY2xpY2tlZCA8L3JldHVybnM+XHJcbiAgYXN5bmMgTWVzc2FnZUJveCh0aXRsZTogc3RyaW5nLCBtc2c6IHN0cmluZywgc3R5bGU6IG51bWJlcikgOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgLy8gU3RvcCB0aGUgc3Bpbm5lciBiZWZvcmUgc2hvd2luZyB0aGUgbWVzYWdlIGJveFxyXG4gICAgYXdhaXQgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuQ2hlY2tBbmRTaG93U3Bpbm5lcihmYWxzZSk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IENvbW1hbmRzLm1lc3NhZ2VCb3godGl0bGUsIG1zZywgc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE9wZW4gbWVzc2FnZSBib3ggd2l0aCB0aXRsZSBpZCBhbmQgbWVzc2FnZSBpZCB0aGF0IHdpbGwgdGFrZSBmcm9tIE1HQkNMKkVORy54bWwgKGNyZWF0ZWQgYnkgbWdjb25zdClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGl0bGVJZFwiPm1lc3NhZ2UgZnJvbSBmcm9tIE1HQkNMKkVORy54bWw8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5tZXNzYWdlIGZyb20gZnJvbSBNR0JDTCpFTkcueG1sPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0eWxlXCI+dGhlIHN0eWxlIG9mIHRoZSBtZXNzYWdlIGJveCBjYW4gYmUgZmxhZ3Mgb2YgU3R5bGVzLk1TR0JPWF94eHggPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG1lc3NhZ2UgYm94IHN0eWxlIGZyb20gU3R5bGVzLk1TR0JPWF9YWFg8L3JldHVybnM+XHJcbiAgYXN5bmMgd3JpdGVUb01lc3NhZ2VCb3godGl0bGVJZDogc3RyaW5nLCBtc2dJZDogc3RyaW5nLCBzdHlsZTogbnVtYmVyKTpQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgbGV0IHRpdGxlOiBzdHJpbmcgPSBMYW5ndWFnZURhdGEuSW5zdGFuY2UuZ2V0Q29uc3RNZXNzYWdlKHRpdGxlSWQpO1xyXG4gICAgbGV0IG1zZzogc3RyaW5nID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlLmdldENvbnN0TWVzc2FnZShtc2dJZCk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuTWVzc2FnZUJveCh0aXRsZSwgbXNnLCBzdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZGlzcGxheSBhIE1lc3NhZ2UgQm94IChjb25maXJtKSB3aXRoIDIgYnV0dG9ucyAuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ0lkXCI+bWVzc2FnZSBudW1iZXIgKGZyb20gTXNnSW50ZXJmYWNlLmphdmEpIHRoYXQgd2lsbCBiZSBkaXNwbGF5IG9uIHRoZSBjb250ZW50IG9mIHRoZSBNZXNzYWdlIEJveCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj50aGUgaWNvbiBhbmQgdGhlIGJ1dHRvbiB0aGF0IHdpbGwgYmUgZGlzcGxheSBvbiB0aGUgY29uZmlybWF0aW9uIGJveCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGJ1dHRvbiB0aGF0IHdhcyBwcmVzc2VkIChTdHlsZXMuTVNHQk9YX0JVVFRPTl94eHgpIDwvcmV0dXJucz5cclxuICBhc3luYyBjb25maXJtKG1zZ0lkOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj47XHJcbiAgYXN5bmMgY29uZmlybShtc2dJZDogc3RyaW5nLCBzdHlsZT86IG51bWJlcik6IFByb21pc2U8YW55PiB7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMud3JpdGVUb01lc3NhZ2VCb3goTXNnSW50ZXJmYWNlLkNPTkZJUk1fU1RSX1dJTkRPV19USVRMRSwgbXNnSWQsIHN0eWxlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBkaXNwbGF5IGEgTWVzc2FnZSBCb3ggKGNvbmZpcm0pIHdpdGggMiBidXR0b25zIDogeWVzICYgbm8gYW5kIGljb24gcXVlc3Rpb24uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ0lkXCI+bWVzc2FnZSBudW1iZXIgKGZyb20gTXNnSW50ZXJmYWNlLmphdmEpIHRoYXQgd2lsbCBiZSBkaXNwbGF5IG9uIHRoZSBjb250ZW50IG9mIHRoZSBNZXNzYWdlIEJveFxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHRoZSBidXR0b24gWUVTIHdhcyBwcmVzc2VkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgcHVibGljIGFzeW5jIGNvbmZpcm1fYm9vbChtc2dJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgcmV0UmVzdWx0OiBudW1iZXIgPSBhd2FpdCB0aGlzLmNvbmZpcm0obXNnSWQsIFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LX0NBTkNFTCk7XHJcbiAgICByZXR1cm4gcmV0UmVzdWx0ID09IDxudW1iZXI+U3R5bGVzLk1TR0JPWF9SRVNVTFRfT0s7XHJcbiAgfVxyXG59XHJcbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR1VJTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvR1VJTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLNUMsTUFBTSxPQUFPLFVBQVU7SUFDYixNQUFNLENBQUMsU0FBUyxHQUFlLElBQUksQ0FBQztJQUk1QyxNQUFNLEtBQUssUUFBUTtRQUNqQixJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUMvQixVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDMUMsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFNRCxtQkFBbUI7UUFDakIsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFRRCxVQUFVLENBQUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxXQUFvQjtRQUM5RCxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUU7WUFFZixJQUFJLFVBQVUsR0FBWSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxHQUFHLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMzRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXJCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFRRCxTQUFTLENBQUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxXQUFvQjtRQUM3RCxJQUFJLE9BQU8sR0FBRyxDQUFDO1lBRWIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxHQUFHLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBSUQsS0FBSyxDQUFDLElBQWE7UUFDakIsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7WUFFbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFNTyxPQUFPLENBQUMsSUFBWTtRQUMxQixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFLTyxPQUFPO1FBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0QsTUFBTSxJQUFJLEdBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZFLElBQUcsSUFBSSxLQUFLLElBQUk7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBU0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEtBQWE7UUFFeEQsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVELE9BQU8sTUFBTSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQVNELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLEtBQWE7UUFDbkUsSUFBSSxLQUFLLEdBQVcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsSUFBSSxHQUFHLEdBQVcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0QsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBU0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsS0FBYztRQUV6QyxPQUFPLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQVFNLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBYTtRQUNyQyxJQUFJLFNBQVMsR0FBVyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sU0FBUyxJQUFZLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNc2dJbnRlcmZhY2V9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge0NvbW1hbmRzLCBNYW5hZ2VyLCBTdHlsZXN9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gJy4vdGFza3MvTUdEYXRhJztcclxuaW1wb3J0IHtSQ1RpbWVyfSBmcm9tICcuL3Rhc2tzL1JDVGltZXInO1xyXG5pbXBvcnQge01nRm9ybX0gZnJvbSAnLi9ndWkvTWdGb3JtJztcclxuXHJcbmltcG9ydCB7TGFuZ3VhZ2VEYXRhfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSAnLi9BY2Nlc3NIZWxwZXInO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgR1VJTWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBHVUlNYW5hZ2VyID0gbnVsbDsgLy8gdGhlIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGUgR1VJTWFuYWdlclxyXG5cclxuICAvLy8gICBzaW5nbGV0b25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogR1VJTWFuYWdlciB7XHJcbiAgICBpZiAoR1VJTWFuYWdlci5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIEdVSU1hbmFnZXIuX2luc3RhbmNlID0gbmV3IEdVSU1hbmFnZXIoKTtcclxuICAgIHJldHVybiBHVUlNYW5hZ2VyLl9pbnN0YW5jZTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZXhlY3V0ZSB0aGUgY29tbWFuZHMgaW4gdGhlIHF1ZXVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBleGVjR3VpQ29tbWFuZFF1ZXVlKCk6IHZvaWQge1xyXG4gICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzdGFydCBhIHRpbWVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nZFwiPiBNZ0RhdGEgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNlY29uZHNcIj5pbnRlcnZhbCBpbiBmdWxsIHNlY29uZHMgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiAoZnJvbSBjdXJyZW50IHRpbWUpPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlzSWRsZVRpbWVyXCI+dHJ1ZSBpZiB0aGlzIHRpbWVyIGlzIHRoZSBpZGxlIHRpbWVyPC9wYXJhbT5cclxuICBzdGFydFRpbWVyKG1nRGF0YTogTUdEYXRhLCBzZWNvbmRzOiBudW1iZXIsIGlzSWRsZVRpbWVyOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoc2Vjb25kcyA+IDApIHtcclxuICAgICAgLy8gUkNUaW1lci9NZ1RpbWVyIHdvcmtzIG9uIG1pbGxpc2Vjb25kcyBzbyBjb252ZXJ0IHNlY29uZHMgdG8gbWlsbGlzZWNvbmRzXHJcbiAgICAgIGxldCBvYmpSQ1RpbWVyOiBSQ1RpbWVyID0gbmV3IFJDVGltZXIobWdEYXRhLCBzZWNvbmRzICogMTAwMCwgaXNJZGxlVGltZXIpO1xyXG4gICAgICAob2JqUkNUaW1lcikuU3RhcnQoKTtcclxuICAgICAgLy8gZml4ZWQgYnVnIDI4NDU2Niwgd2hpbGUgd2UgaGF2ZSBjb21tYW5kIGluIGhlIHF1ZXVlLCBleGVjdXRlIHRoZW1cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzdG9wIHRoZSB0aW1lclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJNZ0RhdGFcIj4gTWdEYXRhPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNlY29uZHNcIj5pbnRlcnZhbCBpbiBmdWxsIHNlY29uZHMgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiAoZnJvbSBjdXJyZW50IHRpbWUpPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlzSWRsZVRpbWVyXCI+dHJ1ZSBpZiB0aGlzIHRpbWVyIGlzIHRoZSBpZGxlIHRpbWVyPC9wYXJhbT5cclxuICBzdG9wVGltZXIobWdEYXRhOiBNR0RhdGEsIHNlY29uZHM6IG51bWJlciwgaXNJZGxlVGltZXI6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChzZWNvbmRzID4gMClcclxuICAgIC8vIFJDVGltZXIvTWdUaW1lciB3b3JrcyBvbiBtaWxsaXNlY29uZHMgc28gY29udmVydCBzZWNvbmRzIHRvIG1pbGxpc2Vjb25kc1xyXG4gICAgICBSQ1RpbWVyLlN0b3BUaW1lcihtZ0RhdGEsIHNlY29uZHMgKiAxMDAwLCBpc0lkbGVUaW1lcik7XHJcbiAgfVxyXG5cclxuICBhYm9ydChmb3JtOiBNZ0Zvcm0pOiB2b2lkO1xyXG4gIGFib3J0KCk6IHZvaWQ7XHJcbiAgYWJvcnQoZm9ybT86IE1nRm9ybSk6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpXHJcbiAgICAgIHRoaXMuYWJvcnRfMChmb3JtKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5hYm9ydF8xKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICBjbG9zZSB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3JtXCI+IDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBhYm9ydF8wKGZvcm06IE1nRm9ybSk6IHZvaWQge1xyXG4gICAgaWYgKGZvcm0gIT09IG51bGwpIHtcclxuICAgICAgTWFuYWdlci5BYm9ydChmb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwcm9jZXNzIEFCT1JUIGNvbW1hbmQuQ2xvc2UgYWxsIHNoZWxscy4gTGFzdCBzaGVsbCBjbG9zZWQsIHdpbGwgY2xvc2UgdGhlIGRpc3BsYXkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGFib3J0XzEoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldFNpemUoKTsgaSA+IDA7IGktLSkge1xyXG4gICAgICBjb25zdCB0YXNrID0gIEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRNR0RhdGEoaSAtIDEpLmdldEZpcnN0VGFzaygpO1xyXG4gICAgICBpZih0YXNrICE9PSBudWxsKVxyXG4gICAgICAgIHRoaXMuYWJvcnQoPE1nRm9ybT50YXNrLkZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE9wZW4gbWVzc2FnZSBib3ggd2l0aCB0aXRsZSBzdHJpbmcgYW5kIG1lc3NhZ2Ugc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRpdGxlXCI+dGl0bGUgb2YgdGhlIG1lc3NhZ2UgYm94PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ1wiPm1lc3NhZ2UgZm9yIHRoZSBtZXNzYWdlIGJveDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHlsZVwiPnRoZSBzdHlsZSBvZiB0aGUgbWVzc2FnZSBib3ggLS0tIGJ1dHRvbnMsIGljb248L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGJ1dHRvbiBjbGlja2VkIDwvcmV0dXJucz5cclxuICBhc3luYyBNZXNzYWdlQm94KHRpdGxlOiBzdHJpbmcsIG1zZzogc3RyaW5nLCBzdHlsZTogbnVtYmVyKSA6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICAvLyBTdG9wIHRoZSBzcGlubmVyIGJlZm9yZSBzaG93aW5nIHRoZSBtZXNhZ2UgYm94XHJcbiAgICBhd2FpdCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5DaGVja0FuZFNob3dTcGlubmVyKGZhbHNlKTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgQ29tbWFuZHMubWVzc2FnZUJveCh0aXRsZSwgbXNnLCBzdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgT3BlbiBtZXNzYWdlIGJveCB3aXRoIHRpdGxlIGlkIGFuZCBtZXNzYWdlIGlkIHRoYXQgd2lsbCB0YWtlIGZyb20gTUdCQ0wqRU5HLnhtbCAoY3JlYXRlZCBieSBtZ2NvbnN0KVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0aXRsZUlkXCI+bWVzc2FnZSBmcm9tIGZyb20gTUdCQ0wqRU5HLnhtbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dJZFwiPm1lc3NhZ2UgZnJvbSBmcm9tIE1HQkNMKkVORy54bWw8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj50aGUgc3R5bGUgb2YgdGhlIG1lc3NhZ2UgYm94IGNhbiBiZSBmbGFncyBvZiBTdHlsZXMuTVNHQk9YX3h4eCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbWVzc2FnZSBib3ggc3R5bGUgZnJvbSBTdHlsZXMuTVNHQk9YX1hYWDwvcmV0dXJucz5cclxuICBhc3luYyB3cml0ZVRvTWVzc2FnZUJveCh0aXRsZUlkOiBzdHJpbmcsIG1zZ0lkOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIpOlByb21pc2U8bnVtYmVyPiB7XHJcbiAgICBsZXQgdGl0bGU6IHN0cmluZyA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZS5nZXRDb25zdE1lc3NhZ2UodGl0bGVJZCk7XHJcbiAgICBsZXQgbXNnOiBzdHJpbmcgPSBMYW5ndWFnZURhdGEuSW5zdGFuY2UuZ2V0Q29uc3RNZXNzYWdlKG1zZ0lkKTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5NZXNzYWdlQm94KHRpdGxlLCBtc2csIHN0eWxlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBkaXNwbGF5IGEgTWVzc2FnZSBCb3ggKGNvbmZpcm0pIHdpdGggMiBidXR0b25zIC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5tZXNzYWdlIG51bWJlciAoZnJvbSBNc2dJbnRlcmZhY2UuamF2YSkgdGhhdCB3aWxsIGJlIGRpc3BsYXkgb24gdGhlIGNvbnRlbnQgb2YgdGhlIE1lc3NhZ2UgQm94IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHlsZVwiPnRoZSBpY29uIGFuZCB0aGUgYnV0dG9uIHRoYXQgd2lsbCBiZSBkaXNwbGF5IG9uIHRoZSBjb25maXJtYXRpb24gYm94IDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYnV0dG9uIHRoYXQgd2FzIHByZXNzZWQgKFN0eWxlcy5NU0dCT1hfQlVUVE9OX3h4eCkgPC9yZXR1cm5zPlxyXG4gIGFzeW5jIGNvbmZpcm0obXNnSWQ6IHN0cmluZywgc3R5bGU6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPjtcclxuICBhc3luYyBjb25maXJtKG1zZ0lkOiBzdHJpbmcsIHN0eWxlPzogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy53cml0ZVRvTWVzc2FnZUJveChNc2dJbnRlcmZhY2UuQ09ORklSTV9TVFJfV0lORE9XX1RJVExFLCBtc2dJZCwgc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRpc3BsYXkgYSBNZXNzYWdlIEJveCAoY29uZmlybSkgd2l0aCAyIGJ1dHRvbnMgOiB5ZXMgJiBubyBhbmQgaWNvbiBxdWVzdGlvbi5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5tZXNzYWdlIG51bWJlciAoZnJvbSBNc2dJbnRlcmZhY2UuamF2YSkgdGhhdCB3aWxsIGJlIGRpc3BsYXkgb24gdGhlIGNvbnRlbnQgb2YgdGhlIE1lc3NhZ2UgQm94XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgdGhlIGJ1dHRvbiBZRVMgd2FzIHByZXNzZWRcclxuICAvLy8gPC9wYXJhbT5cclxuICBwdWJsaWMgYXN5bmMgY29uZmlybV9ib29sKG1zZ0lkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCByZXRSZXN1bHQ6IG51bWJlciA9IGF3YWl0IHRoaXMuY29uZmlybShtc2dJZCwgU3R5bGVzLk1TR0JPWF9CVVRUT05fT0tfQ0FOQ0VMKTtcclxuICAgIHJldHVybiByZXRSZXN1bHQgPT0gPG51bWJlcj5TdHlsZXMuTVNHQk9YX1JFU1VMVF9PSztcclxuICB9XHJcbn1cclxuIl19