@magic-xpa/engine 4.801.0-dev481.231 → 4.801.0-dev481.235

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/bundles/magic-xpa-engine.umd.js +153 -167
  2. package/bundles/magic-xpa-engine.umd.js.map +1 -1
  3. package/bundles/magic-xpa-engine.umd.min.js +1 -1
  4. package/bundles/magic-xpa-engine.umd.min.js.map +1 -1
  5. package/esm2015/src/ClientManager.js +2 -2
  6. package/esm2015/src/CurrentClientVersion.js +2 -2
  7. package/esm2015/src/GUIManager.js +2 -2
  8. package/esm2015/src/GuiEventsProcessor.js +5 -5
  9. package/esm2015/src/commands/ClientToServer/BrowserEscEventCommand.js +2 -2
  10. package/esm2015/src/commands/ClientToServer/ClientOriginatedCommand.js +2 -2
  11. package/esm2015/src/commands/ClientToServer/ClientOriginatedCommandSerializer.js +3 -3
  12. package/esm2015/src/commands/ClientToServer/ColumnSortEventCommand.js +2 -2
  13. package/esm2015/src/commands/ClientToServer/ComputeEventCommand.js +2 -2
  14. package/esm2015/src/commands/ClientToServer/ContextTerminationEventCommand.js +2 -2
  15. package/esm2015/src/commands/ClientToServer/ContextTimeoutResetCommand.js +2 -2
  16. package/esm2015/src/commands/ClientToServer/DataviewCommand.js +2 -2
  17. package/esm2015/src/commands/ClientToServer/EvaluateCommand.js +2 -2
  18. package/esm2015/src/commands/ClientToServer/EventCommand.js +2 -2
  19. package/esm2015/src/commands/ClientToServer/ExecOperCommand.js +2 -2
  20. package/esm2015/src/commands/ClientToServer/FetchDataControlValuesEventCommand.js +2 -2
  21. package/esm2015/src/commands/ClientToServer/IndexChangeEventCommand.js +2 -2
  22. package/esm2015/src/commands/ClientToServer/IniputForceWriteCommand.js +2 -2
  23. package/esm2015/src/commands/ClientToServer/NonReversibleExitEventCommand.js +2 -2
  24. package/esm2015/src/commands/ClientToServer/QueryCommand.js +2 -2
  25. package/esm2015/src/commands/ClientToServer/RecomputeCommand.js +2 -2
  26. package/esm2015/src/commands/ClientToServer/RefreshEventCommand.js +2 -2
  27. package/esm2015/src/commands/ClientToServer/RefreshScreenEventCommand.js +2 -2
  28. package/esm2015/src/commands/ClientToServer/RollbackEventCommand.js +2 -2
  29. package/esm2015/src/commands/ClientToServer/SubformOpenEventCommand.js +2 -2
  30. package/esm2015/src/commands/ClientToServer/SubformRefreshEventCommand.js +2 -2
  31. package/esm2015/src/commands/ClientToServer/TransactionCommand.js +2 -2
  32. package/esm2015/src/commands/ClientToServer/WriteMessageToServerLogCommand.js +2 -2
  33. package/esm2015/src/data/DataView.js +2 -2
  34. package/esm2015/src/data/Field.js +2 -2
  35. package/esm2015/src/data/Record.js +4 -4
  36. package/esm2015/src/data/RecordsTable.js +2 -2
  37. package/esm2015/src/data/TaskTransactionManager.js +2 -2
  38. package/esm2015/src/data/XMLBasedDcValuesBuilder.js +3 -3
  39. package/esm2015/src/env/Environment.js +1 -7
  40. package/esm2015/src/event/Event.js +6 -14
  41. package/esm2015/src/event/EventsManager.js +32 -32
  42. package/esm2015/src/event/IEventsManager.js +1 -1
  43. package/esm2015/src/event/RunTimeEvent.js +7 -7
  44. package/esm2015/src/exp/ExpressionEvaluator.js +21 -21
  45. package/esm2015/src/exp/ExpressionLocalJpn.js +3 -3
  46. package/esm2015/src/gui/MgControl.js +1 -1
  47. package/esm2015/src/gui/MgForm.js +9 -9
  48. package/esm2015/src/http/client/HttpClientAsync.js +4 -4
  49. package/esm2015/src/http/client/HttpClientBase.js +4 -4
  50. package/esm2015/src/http/client/HttpClientSync.js +3 -3
  51. package/esm2015/src/remote/RemoteCommandsProcessor.js +7 -8
  52. package/esm2015/src/rt/Boundary.js +4 -4
  53. package/esm2015/src/rt/DataviewHeaderBase.js +1 -1
  54. package/esm2015/src/rt/DataviewHeaderFactory.js +2 -2
  55. package/esm2015/src/rt/DataviewHeadersSaxHandler.js +2 -2
  56. package/esm2015/src/rt/Operation.js +5 -5
  57. package/esm2015/src/rt/RemoteDataviewHeader.js +6 -6
  58. package/esm2015/src/rt/Transaction.js +2 -2
  59. package/esm2015/src/tasks/MGDataCollection.js +3 -3
  60. package/esm2015/src/tasks/RemoteTaskService.js +3 -3
  61. package/esm2015/src/tasks/Task.js +9 -9
  62. package/esm2015/src/tasks/TaskServiceBase.js +1 -1
  63. package/esm2015/src/tasks/sort/SortCollection.js +4 -4
  64. package/esm2015/src/util/FlowMonitorQueue.js +2 -2
  65. package/esm2015/src/util/Process.js +2 -2
  66. package/esm2015/src/util/ReturnResult.js +3 -3
  67. package/fesm2015/magic-xpa-engine.js +153 -167
  68. package/fesm2015/magic-xpa-engine.js.map +1 -1
  69. package/package.json +4 -4
  70. package/src/GuiEventsProcessor.d.ts +1 -1
  71. package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +1 -2
  72. package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +1 -2
  73. package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +1 -2
  74. package/src/commands/ClientToServer/ComputeEventCommand.d.ts +1 -2
  75. package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +1 -2
  76. package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +1 -2
  77. package/src/commands/ClientToServer/DataviewCommand.d.ts +1 -2
  78. package/src/commands/ClientToServer/EvaluateCommand.d.ts +1 -2
  79. package/src/commands/ClientToServer/EventCommand.d.ts +1 -2
  80. package/src/commands/ClientToServer/ExecOperCommand.d.ts +1 -2
  81. package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +1 -2
  82. package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +1 -2
  83. package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +1 -2
  84. package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +1 -2
  85. package/src/commands/ClientToServer/QueryCommand.d.ts +1 -2
  86. package/src/commands/ClientToServer/RecomputeCommand.d.ts +1 -2
  87. package/src/commands/ClientToServer/RefreshEventCommand.d.ts +1 -2
  88. package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +1 -2
  89. package/src/commands/ClientToServer/RollbackEventCommand.d.ts +1 -2
  90. package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +1 -2
  91. package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +1 -2
  92. package/src/commands/ClientToServer/TransactionCommand.d.ts +1 -2
  93. package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +1 -2
  94. package/src/data/RecordsTable.d.ts +1 -2
  95. package/src/data/XMLBasedDcValuesBuilder.d.ts +1 -1
  96. package/src/env/Environment.d.ts +0 -3
  97. package/src/event/Event.d.ts +0 -3
  98. package/src/event/EventsManager.d.ts +7 -8
  99. package/src/event/IEventsManager.d.ts +5 -6
  100. package/src/exp/ExpressionEvaluator.d.ts +2 -2
  101. package/src/exp/ExpressionLocalJpn.d.ts +2 -2
  102. package/src/gui/MgForm.d.ts +4 -4
  103. package/src/http/client/HttpClientAsync.d.ts +2 -2
  104. package/src/http/client/HttpClientBase.d.ts +2 -2
  105. package/src/http/client/HttpClientSync.d.ts +2 -2
  106. package/src/remote/RemoteCommandsProcessor.d.ts +1 -1
  107. package/src/rt/DataviewHeaderBase.d.ts +1 -1
  108. package/src/rt/DataviewHeaderFactory.d.ts +1 -1
  109. package/src/rt/Operation.d.ts +1 -1
  110. package/src/rt/RemoteDataviewHeader.d.ts +1 -2
  111. package/src/rt/Transaction.d.ts +1 -1
  112. package/src/tasks/RemoteTaskService.d.ts +2 -3
  113. package/src/tasks/Task.d.ts +1 -1
  114. package/src/tasks/TaskServiceBase.d.ts +2 -4
  115. package/src/tasks/sort/SortCollection.d.ts +2 -3
  116. package/src/util/FlowMonitorQueue.d.ts +1 -1
  117. package/src/util/Process.d.ts +1 -1
@@ -259,7 +259,7 @@ export class ClientManager {
259
259
  console.log("Magic Web Client. " + versionString);
260
260
  HttpManager.GetInstance().HttpCommunicationTimeoutMS = ServerConfig.Instance.GetFirstHttpRequestTimeout();
261
261
  EventsManager.Instance.Init();
262
- Logger.Instance.Initialize(RemoteCommandsProcessor.GetInstance().parseLogLevel(ServerConfig.Instance.getInternalLogLevel()), ServerConfig.Instance.getInternalLogSync(), false);
262
+ Logger.Instance.Initialize(RemoteCommandsProcessor.GetInstance().parseLogLevel(ServerConfig.Instance.getInternalLogLevel()), false);
263
263
  let mgd = new MGData(new CommandsTable(), new CommandsTable(), 0, null, false);
264
264
  yield MGDataCollection.Instance.addMGData(mgd, 0, true);
265
265
  yield ClientManager.Instance.WorkThreadExecution();
@@ -409,4 +409,4 @@ export class ClientManager {
409
409
  }
410
410
  ClientManager._instance = null;
411
411
  ClientManager._executionPropertiesFileName = "./assets/server-config.json";
412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ2xpZW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRyxPQUFPLEVBQ0wsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUMvRSxZQUFZLEVBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFBRSxnQkFBZ0IsRUFDN0IsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsY0FBYyxFQUVkLE9BQU8sRUFHUCxrQkFBa0IsRUFDbEIsTUFBTSxFQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSWhELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxF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T0FBTztRQUNULFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFHdkQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUvRCxJQUFJLDhCQUE4QixHQUFtQyxjQUFjO1lBQ25GLG9DQUFvQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUxRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBaUIsOEJBQThCLENBQUMsQ0FBQztRQUczRyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEcsQ0FBQzs7QUF0bEJjLHVCQUFTLEdBQWtCLElBQUksQ0FBQztBQVF2QiwwQ0FBNEIsR0FBVyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uRXhjZXB0aW9uLCBEYXRlVGltZSwgRGVidWcsIEV4Y2VwdGlvbiwgTlN0cmluZywgUmVmUGFyYW0gfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcblxyXG5pbXBvcnQge1xyXG4gIERhdGVUaW1lVXRpbHMsIEludGVybmFsSW50ZXJmYWNlLCBMb2dnZXIsIE1pc2MsIE9TRW52aXJvbm1lbnQsIFN0b3JhZ2VBdHRyaWJ1dGUsXHJcbiAgWE1MQ29uc3RhbnRzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tbWFuZHMsXHJcbiAgQ29tbWFuZFR5cGUsIERpc3BsYXlDb252ZXJ0b3IsXHJcbiAgRXZlbnRzLFxyXG4gIEd1aUNvbnN0YW50cyxcclxuICBHdWlEYXRhQ29sbGVjdGlvbixcclxuICBHdWlFbnZpcm9ubWVudCxcclxuICBMYXN0Rm9jdXNlZFZhbCxcclxuICBNYW5hZ2VyLFxyXG4gIE1nQ29udHJvbEJhc2UsXHJcbiAgUElDLFxyXG4gIFJ1bnRpbWVDb250ZXh0QmFzZSxcclxuICBTdHlsZXNcclxufSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7IEV2ZW50c01hbmFnZXIgfSBmcm9tICcuL2V2ZW50L0V2ZW50c01hbmFnZXInO1xyXG5pbXBvcnQgeyBHdWlFdmVudHNQcm9jZXNzb3IgfSBmcm9tICcuL0d1aUV2ZW50c1Byb2Nlc3Nvcic7XHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9lbnYvRW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZURhdGEgfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQgeyBUYXNrc1RhYmxlIH0gZnJvbSAnLi90YXNrcy9UYXNrc1RhYmxlJztcclxuaW1wb3J0IHsgVGFibGVDYWNoZU1hbmFnZXIgfSBmcm9tICcuL3J0L1RhYmxlQ2FjaGVNYW5hZ2VyJztcclxuaW1wb3J0IHsgTWdDb250cm9sIH0gZnJvbSAnLi9ndWkvTWdDb250cm9sJztcclxuaW1wb3J0IHsgSUNsaWVudENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4vdGFza3MvVGFzayc7XHJcbmltcG9ydCB7IE1HRGF0YUNvbGxlY3Rpb24gfSBmcm9tICcuL3Rhc2tzL01HRGF0YUNvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBVbmlxdWVJRFV0aWxzIH0gZnJvbSAnLi91dGlsL1VuaXF1ZUlEVXRpbHMnO1xyXG5pbXBvcnQgeyBIdHRwTWFuYWdlciB9IGZyb20gJy4vaHR0cC9IdHRwTWFuYWdlcic7XHJcbmltcG9ydCB7IENvbW1hbmRzVGFibGUgfSBmcm9tICcuL0NvbW1hbmRzVGFibGUnO1xyXG5pbXBvcnQgeyBSZW1vdGVDb21tYW5kc1Byb2Nlc3NvciB9IGZyb20gJy4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yJztcclxuaW1wb3J0IHsgQ29uc3RJbnRlcmZhY2UgfSBmcm9tICcuL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbiB9IGZyb20gJy4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlJztcclxuaW1wb3J0IHsgQ29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyIH0gZnJvbSAnLi9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXInO1xyXG5pbXBvcnQgeyBNR0RhdGEgfSBmcm9tICcuL3Rhc2tzL01HRGF0YSc7XHJcbmltcG9ydCB7IFNlcnZlckVycm9yIH0gZnJvbSAnLi9yZW1vdGUvU2VydmVyRXJyb3InO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50RXZlbnRzIH0gZnJvbSAnLi9odHRwL2NsaWVudC9IdHRwQ2xpZW50RXZlbnRzJztcclxuaW1wb3J0IHsgSUd1aUV2ZW50IH0gZnJvbSAnLi9icmlkZ2UvSUd1aUV2ZW50JztcclxuaW1wb3J0IHsgQ29tbWFuZEZhY3RvcnkgfSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VycmVudENsaWVudFZlcnNpb24gfSBmcm9tICcuL0N1cnJlbnRDbGllbnRWZXJzaW9uJztcclxuaW1wb3J0IHsgSVNlcnZlckNvbmZpZyB9IGZyb20gJy4vdXRpbC9JU2VydmVyQ29uZmlnJztcclxuaW1wb3J0IHsgRGF0YVZpZXcgfSBmcm9tICcuL2RhdGEvRGF0YVZpZXcnO1xyXG5pbXBvcnQgeyBMYXN0Rm9jdXNlZE1hbmFnZXIgfSBmcm9tICcuL3J0L0xhc3RGb2N1c2VkTWFuYWdlcic7XHJcbmltcG9ydCB7IEVudlBhcmFtc1RhYmxlIH0gZnJvbSAnLi9lbnYvRW52VmFyaWFibGVzVGFibGUnO1xyXG5pbXBvcnQgeyBHbG9iYWxQYXJhbXMgfSBmcm9tICcuL2V4cC9HbG9iYWxQYXJhbXNUYWJsZSc7XHJcbmltcG9ydCB7IE9wZW5VUkxDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9PcGVuVVJMQ29tbWFuZCc7XHJcbmltcG9ydCB7IFNlcnZlckNvbmZpZyB9IGZyb20gJy4vU2VydmVyQ29uZmlnJztcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSAnLi9BY2Nlc3NIZWxwZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCc7XHJcbmltcG9ydCB7R1VJTWFuYWdlcn0gZnJvbSBcIi4vR1VJTWFuYWdlclwiO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIENsaWVudE1hbmFnZXIge1xyXG4gIHByaXZhdGUgX2d1aUV2ZW50c1Byb2Nlc3NvcjogR3VpRXZlbnRzUHJvY2Vzc29yID0gbnVsbDtcclxuXHJcblxyXG5cclxuICBwcml2YXRlIF90YWJsZUNhY2hlTWFuYWdlcjogVGFibGVDYWNoZU1hbmFnZXIgPSBudWxsO1xyXG4gIHByaXZhdGUgX2RlbGF5SW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlOyAgLy8gdHJ1ZSBpZiBkZWxheSBpcyBpbiBwcm9ncmVzc1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IENsaWVudE1hbmFnZXIgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9kZWJ1Z0NsaWVudDogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF9nbG9iYWxVbmlxdWVTZXNzaW9uSWQ6IHN0cmluZyA9IG51bGw7XHJcbi8vICBwcml2YXRlIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsOyAvLyBjb250cm9sIHdoZXJlIGxhc3QgcGFya2luZyB3YXMgYXR0ZW1wdGVkIGJ1dCB3ZSBkaWQgbm90IHBhcmsgb24gaXRcclxuICBwcml2YXRlIF9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9leGVjdXRpb25Qcm9wZXJ0aWVzRmlsZU5hbWU6IHN0cmluZyA9IFwiLi9hc3NldHMvc2VydmVyLWNvbmZpZy5qc29uXCI7IC8vIHBhdGggb2YgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgZnJvbSBhc3NldHMgZm9sZGVyXHJcblxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogQ2xpZW50TWFuYWdlciB7XHJcbiAgICBpZiAoQ2xpZW50TWFuYWdlci5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIENsaWVudE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IENsaWVudE1hbmFnZXIoKTtcclxuXHJcbiAgICByZXR1cm4gQ2xpZW50TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBwdWJsaWMgQWRkRXZlbnQoZ3VpRXZlbnQ6IElHdWlFdmVudCk6IHZvaWQge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKGd1aUV2ZW50LlRhc2tJRCk7XHJcbiAgICBsZXQgbGluZUlkeDogbnVtYmVyID0gK2d1aUV2ZW50LkxpbmU7XHJcbiAgICBsZXQgY2xpY2tEYmxDbGlja1N1Y2NlZWRlZDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgZHZSb3dJZHg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKHRhc2sgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgICBpZiAoZ3VpRXZlbnQuQ29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBkdjogRGF0YVZpZXcgPSA8RGF0YVZpZXc+dGFzay5EYXRhVmlldztcclxuICAgICAgICBpZiAoY29udHJvbC5Jc1RhYmxlQ2hpbGQpIHtcclxuICAgICAgICAgIGxpbmVJZHggLT0gZHYuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjb2x1bW5Tb3J0XCI6XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQ29sdW1uU29ydGFibGUoKSkge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJtb3VzZWRvd25cIjpcclxuICAgICAgICAgICAgLy8gRGVmZWN0IDE1MjI4OCAmIERlZmVjdCAxNTIyNjg6IFByb2JsZW06IFdoZW4gYnV0dG9uIGlzIGNsaWNrZWQsIHdlIGdldCBmb2N1cyBldmVudCBmaXJzdCBhbmQgaWYgbWVzc2FnZUJveCBpcyBvcGVuZWQgaGVyZSBsaWtlIHZlcmlmeSwgZXRjLlxyXG4gICAgICAgICAgICAvLyB3ZSBkbyBub3QgcmVjZWl2ZSBjbGljayBldmVudC4gSGVuY2UgZXZlbnRzIGFyZSBub3QgcHJvY2Vzc2VkLiBTb2x1dGlvbjogV2UgZG8gbmVlZCBjbGljayBoYW5kbGluZyBmb3IgYnV0dG9uIGFzIGl0IGlzIGNhbGxlZCB3aGVuIHdlIHBhcmtcclxuICAgICAgICAgICAgLy8gb24gYnV0dG9uIGFuZCBwcmVzcyBzcGFjZSBrZXkuIFdlIG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgZm9yIGV4ZWN1dGluZyBDUCAmIENTIHdoZW4gcGFya2VkIG9uIGJ1dHRvbiBieSB0YWIga2V5LiBTbyB3ZSBuZWVkIHRvIG1hbmFnZVxyXG4gICAgICAgICAgICAvLyBob3cgY2xpY2sgaXMgaGFuZGxlZC4gV2UgZG8gbm90IG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgd2hlbiB3ZSBjbGljayBvbiBidXR0b24sIHNvIG9uIG1vdXNlZG93biwgc2V0IGEgZmxhZyB3aGljaCB3aWxsIGJlIHVzZWQgaW4gZm9jdXNcclxuICAgICAgICAgICAgLy8gZXZlbnQgaGFuZGxpbmcgdG8gc2tpcCBpdHMgaGFuZGxpbmcuIFRoZW4gd2Ugd2lsbCByZWNlaXZlIGNsaWNrIGV2ZW50IHdoZXJlIHRoaXMgd2lsbCBiZSBhY3R1YWxseSBoYW5kbGVkIGFuZCBoZW5jZSB3b3JrLlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fYnV0dG9uSXNDbGlja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghY29udHJvbC5pc1N1YmZvcm0oKSlcclxuICAgICAgICAgICAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjb250cm9sLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcImNsaWNrXCI6XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQnV0dG9uKCkgfHwgKGNvbnRyb2wuQ29ubmVjdGVkQ29udHJvbCAmJiBndWlFdmVudC5mcm9tQnV0dG9uKSl7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uU2VsZWN0aW9uKFwiXCIsIGNvbnRyb2wsIGxpbmVJZHgsIHRydWUpO1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dChNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKSkuTGFzdENsaWNrZWRDdHJsTmFtZSA9IGNvbnRyb2wuZ2V0TmFtZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX2J1dHRvbklzQ2xpY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNvcnRpbmcgc2hvdWxkIGJlIGhhbmRsZWQgb25seSBvbiBjb2x1bW4gY2xpY2sgYW5kIG5vdCBvbiByb3dEYXRhXHJcbiAgICAgICAgICAgIC8vIGVsc2UgaWYgKGNvbnRyb2wuVHlwZSA9PT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQ09MVU1OKSB7XHJcbiAgICAgICAgICAgIC8vICAgRXZlbnRzLk9uQ29sdW1uQ2xpY2soY29udHJvbCwgZ3VpRXZlbnQuTGluZSwgZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkZvY3VzKGNvbnRyb2wsIGxpbmVJZHgsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBsZXQgcHJvZHVjZUNsaWNrOiBib29sZWFuID0gY29udHJvbC5pc0J1dHRvbigpIHx8IGNvbnRyb2wuaXNUZXh0Q29udHJvbCgpIHx8IGNvbnRyb2wuaXNMYWJlbCgpIHx8IGNvbnRyb2wuaXNUYWJDb250cm9sKCkgfHwgY29udHJvbC5pc1RhYmxlQ29udHJvbCgpIHx8IGNvbnRyb2wuaXNDb21ib0JveCgpIHx8IGNvbnRyb2wuaXNJbWFnZUNvbnRyb2woKTtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Nb3VzZURvd24oY29udHJvbC5nZXRGb3JtKCksIGNvbnRyb2wsIG51bGwsIHRydWUsIGxpbmVJZHgsIGZhbHNlLCBwcm9kdWNlQ2xpY2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImZvY3VzXCI6XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fYnV0dG9uSXNDbGlja2VkKVxyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIC8vIC8vIElmIHdlIGF0dGVtcHQgdG8gcGFyayBvbiBjb250cm9sIHdoZXJlIHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IHRvIHBhcmsgbGlrZSBpZiBjb250cm9sIGhhcyBleHByZXNzaW9uIG9yIHBhcmVudCB0YXNrIGZpZWxkLCBkbyBub3QgYWxsb3cgdG8gZm9jdXMgb24gaXQuXHJcbiAgICAgICAgICAgIC8vIC8vIFNldCBGb2N1cyBiYWNrIHRvIGxhc3RGb2N1c2VkQ29udHJvbC4gV2UgbmVlZCBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sIGFzIHdlIGdldCBmb2N1cyBldmVudCBvbiBhIGNvbnRyb2wgdHdpY2UuIFNvIHRvIGF2b2lkIHRvIHNob3cgZXJyb3IgbXVsdGlwbGUgdGltZXMsXHJcbiAgICAgICAgICAgIC8vIC8vIG1haW50YWluIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wuXHJcbiAgICAgICAgICAgIC8vIGlmIChjb250cm9sICE9PSB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgJiYgY29udHJvbC5IYXNFeHBPclBhcmVudFRhc2tGaWVsZCgpKSB7XHJcbiAgICAgICAgICAgIC8vICAgLy8gU2hvdyBlcnJvciBvbmx5IGZvciBjb250cm9scyBoYXZpbmcgRGF0YSBwcm9wZXJ0eSBhbmQgcGFya2FibGVcclxuICAgICAgICAgICAgLy8gICBpZihjb250cm9sLmlzTGlzdEJveCgpIHx8IGNvbnRyb2wuaXNDaGVja0JveCgpIHx8IGNvbnRyb2wuaXNDb21ib0JveCgpIHx8IGNvbnRyb2wuaXNUZXh0Q29udHJvbCgpIHx8IGNvbnRyb2wuaXNSYWRpbygpIHx8IGNvbnRyb2wuaXNUYWJDb250cm9sKCkpIHtcclxuICAgICAgICAgICAgLy8gICAgIENvbW1hbmRzLm1lc3NhZ2VCb3gobnVsbCwgXCJFcnJvclwiLCBcIkNvbnRyb2wgZWl0aGVyIGhhcyBleHByZXNzaW9uIG9yIGhhcyBwYXJlbnQgdGFzayB2YXJpYWJsZSBhdHRhY2hlZCB0byBpdC4gRmFpbGVkIHRvIHBhcmsgb24gY29udHJvbCB3aXRoIG5hbWU6IFwiICsgY29udHJvbC5OYW1lLCBTdHlsZXMuTVNHQk9YX0lDT05fRVJST1IgfCBTdHlsZXMuTVNHQk9YX0JVVFRPTl9PSyk7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBEZWZlY3QgMTUyNzI4OiBVc2UgbGFzdCBmb2N1c2VkIHRhc2sgaW5zdGVhZCBjb250cm9sIHRhc2sgYXMgY29udHJvbCBjYW4gYmUgZnJvbSBzdWJmb3JtLlxyXG4gICAgICAgICAgICAvLyAgICAgRm9jdXNNYW5hZ2VyLlNldEZvY3VzKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRMYXN0Rm9jdXNlZFRhc2soKSwgTGFzdEZvY3VzZWRNYW5hZ2VyLmdldExhc3RGb2N1c2VkQ29udHJvbCgpLCAwLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgIExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKSA9PT0gbnVsbCA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBjb250cm9sO1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXMoY29udHJvbCwgbGluZUlkeCwgdHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiZGJsY2xpY2tcIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uRGJsQ2xpY2soY29udHJvbCwgbGluZUlkeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VkXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihndWlFdmVudC5WYWx1ZSwgY29udHJvbCwgbGluZUlkeCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImtleWRvd25cIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uS2V5RG93biggdGFzay5nZXRGb3JtKCksIGNvbnRyb2wsIGd1aUV2ZW50Lm1vZGlmaWVycywgZ3VpRXZlbnQua2V5Q29kZSwgMCwwLCAnJyxmYWxzZSwnJyx0cnVlICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInNldGV4dGVybmFsdmFsdWVcIjpcclxuICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRFeHRlcm5hbFZhbHVlRXZlbnQoKDxNZ0NvbnRyb2w+Y29udHJvbCksIGd1aUV2ZW50LmV4dGVybmFsVmFsdWUsIGd1aUV2ZW50LnBhcmFtKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInVuaGFuZGxlZCBldmVudDogXFxcIlwiICsgZ3VpRXZlbnQuRXZlbnRUeXBlICsgXCJcXFwiXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c09uTm9uTWFnaWNDb250cm9sXCI6XHJcbiAgICAgICAgICAgIGNvbnRyb2wgPSBMYXN0Rm9jdXNlZE1hbmFnZXIuZ2V0TGFzdEZvY3VzZWRDb250cm9sKCk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXNPbk5vbk1hZ2ljQ29udHJvbChjb250cm9sKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZihndWlFdmVudC5Db250cm9sTmFtZSA9PT0gXCJtYWdpY1Jvd1wiKSB7XHJcbiAgICAgICAgICAgICAgZHZSb3dJZHggPSBndWlFdmVudC5MaW5lIC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZUFuZExpbmUodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVgsIGR2Um93SWR4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbG9zZVwiOlxyXG4gICAgICAgICAgICBpZiAodGFzay5Jc1JvdXRlKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRSb3V0ZXJDbG9zZWRFdmVudCh0YXNrKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIEV2ZW50cy5DbG9zZUZvcm1FdmVudCh0YXNrLmdldEZvcm0oKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImRpc3Bvc2VcIjpcclxuICAgICAgICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5kZWxldGVNR0RhdGFUcmVlKHRhc2suZ2V0TWdkSUQoKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInJlc2l6ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHMuVGFibGVSZXNpemVFdmVudCh0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgZ3VpRXZlbnQuUGFnZVNpemUpO1xyXG4gICAgICAgICAgLy9jYXNlICdicmVhaycgaXMgbWlzc2luZyBmb3IgJ3Jlc2l6ZScgd2l0aCBpbnRlbnRpb24gdG8gZXhlY3V0ZSBnZXRSb3dzIHdpdGggdGhlIGRlc2lyZWQgZGF0YXZpZXcgcm93IGluZGV4LlxyXG4gICAgICAgICAgY2FzZSBcImdldFJvd3NcIjpcclxuICAgICAgICAgICAgZHZSb3dJZHggPSBsaW5lSWR4IC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgIGxldCBsYXN0Rm9jdXNlZFZhbDogTGFzdEZvY3VzZWRWYWwgPSB7Z3VpTWdDb250cm9sOiB0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgTGluZTogZHZSb3dJZHgsIFZhbDogXCJcIn07XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkdldFJvd3NEYXRhKHRhc2suZ2V0Rm9ybSgpLmdldFRhYmxlQ3RybCgpLCBkdlJvd0lkeCwgdHJ1ZSwgbGFzdEZvY3VzZWRWYWwpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJSb3V0ZXJOYXZpZ2F0ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkFkZFJvdXRlRXZlbnQodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQkNMSUVOVF9ST1VURSwgZ3VpRXZlbnQuUm91dGVyUGF0aCwgZ3VpRXZlbnQuUm91dGVyT3V0bGV0TmFtZSxcclxuICAgICAgICAgICAgICBndWlFdmVudC5Sb3V0ZXJQYXJhbXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJzZXRleHRlcm5hbHZhbHVlXCI6XHJcbiAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJVbmFibGUgdG8gZmluZCB7MH06IFRyeWluZyB0byBzZXQgdmFsdWUgZm9yIGEgbm9uLWV4aXN0aW5nIGNvbnRyb2wuXCIsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coIFwidW5oYW5kbGVkIGV2ZW50OiBcXFwiXCIgKyBndWlFdmVudC5FdmVudFR5cGUgKyBcIlxcXCJcIik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSAvL3Rhc2sgPT0gbnVsbFxyXG4gICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG4gICAgICAgIGNhc2UgXCJjb25maXJtYXRpb25DbG9zZWRcIjpcclxuICAgICAgICAgIHRoaXMuQ29uZmlybWF0aW9uQ2xvc2VkKGd1aUV2ZW50LmtleUNvZGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJhaXNlIGNhbGxiYWNrIG9uIGNsb3NpbmcgY29uZmlybWF0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDb25maXJtYXRpb25DbG9zZWQocmVzOiBudW1iZXIpOiB2b2lkXHJcbiAge1xyXG4gICAgQ29tbWFuZHMuUmVzb2x2ZVByb21pc2UocmVzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gdGhlIHdvcmsgdGhyZWFkJ3MgZW50cnkgbWV0aG9kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBXb3JrVGhyZWFkRXhlY3V0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2coKSkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIlwiLCB0cnVlKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJTdGFydGVkIG9uIFwiICsgRGF0ZVRpbWVVdGlscy5Ub1N0cmluZyhEYXRlVGltZS5Ob3csIFhNTENvbnN0YW50cy5FUlJPUl9MT0dfREFURV9GT1JNQVQsIExvZ2dlci5JbnN0YW5jZSksIHRydWUpO1xyXG4gICAgICB0aGlzLldyaXRlRXhlY3V0aW9uUHJvcGVydGllc1RvTG9nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGF3YWl0IENvbW1hbmRzUHJvY2Vzc29yTWFuYWdlci5TdGFydFNlc3Npb24oKSkge1xyXG4gICAgICAgIGxldCBtZ0RhdGFUYWI6IE1HRGF0YUNvbGxlY3Rpb24gPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgICAgIGxldCBzdGFydHVwTWdEYXRhOiBNR0RhdGEgPSBtZ0RhdGFUYWIuU3RhcnR1cE1nRGF0YTtcclxuICAgICAgICBtZ0RhdGFUYWIuY3Vyck1nZElEID0gc3RhcnR1cE1nRGF0YS5HZXRJZCgpO1xyXG5cclxuICAgICAgICBsZXQgbm9uSW50ZXJhY3RpdmVUYXNrOiBUYXNrID0gbnVsbDtcclxuICAgICAgICBpZiAoIXN0YXJ0dXBNZ0RhdGEuSXNBYm9ydGluZylcclxuICAgICAgICAgIG5vbkludGVyYWN0aXZlVGFzayA9IGF3YWl0IFRhc2suU3RhcnRQcm9ncmFtKGZhbHNlLCBmYWxzZSk7XHJcblxyXG4gICAgICAgIGlmIChub25JbnRlcmFjdGl2ZVRhc2sgPT09IG51bGwpXHJcbiAgICAgICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkV2ZW50c0xvb3Aoc3RhcnR1cE1nRGF0YSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Ob25JbnRlcmFjdGl2ZUV2ZW50c0xvb3Aoc3RhcnR1cE1nRGF0YSwgbm9uSW50ZXJhY3RpdmVUYXNrKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRoZSBcImVuZCBvZiB3b3JrXCIgZmxhZyBvbmx5IGZvciB0aGUgbWFpbiB3aW5kb3dcclxuICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLnNldEVuZE9mV29yayh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIGlmIChleCBpbnN0YW5jZW9mIEFwcGxpY2F0aW9uRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgbGV0IGlzTm9SZXN1bHRFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChleCBpbnN0YW5jZW9mIFNlcnZlckVycm9yICYmICg8U2VydmVyRXJyb3I+ZXgpLkdldENvZGUoKSA9PT0gU2VydmVyRXJyb3IuSU5GX05PX1JFU1VMVClcclxuICAgICAgICAgIGlzTm9SZXN1bHRFcnJvciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICghaXNOb1Jlc3VsdEVycm9yKVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Qcm9jZXNzQWJvcnRpbmdFcnJvcihleCk7XHJcblxyXG4gICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2Uuc2V0RW5kT2ZXb3JrKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBleDtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkNoZWNrQW5kU2hvd1NwaW5uZXIoZmFsc2UpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYWRkR2xvYmFsQ29tbWFuZChDb21tYW5kVHlwZS5FWElUX01BR0lDKTtcclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gV3JpdGUgRXhlY3V0aW9uIHByb3BlcnRpZXMgdG8gbG9nLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgV3JpdGVFeGVjdXRpb25Qcm9wZXJ0aWVzVG9Mb2coKTogdm9pZCB7XHJcbiAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLlNob3VsZExvZ1NlcnZlclJlbGF0ZWRNZXNzYWdlcygpKSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIiwgdHJ1ZSk7XHJcbiAgICAgIC8vIFdyaXRlIGhlYWRpbmdcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJFeGVjdXRpb24gUHJvcGVydGllczpcIiwgdHJ1ZSk7XHJcblxyXG4gICAgICBsZXQgcHJvcHNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShTZXJ2ZXJDb25maWcuSW5zdGFuY2UpO1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhwcm9wc1N0cmluZywgdHJ1ZSk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLkluc3RhbmNlLkluaXQoUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuUkNfTk9fQ09OVEVYVF9JRCk7XHJcbiAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuSW5pdChNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlKTtcclxuICAgIExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5MYXN0QWN0aW9uVGltZSA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcblxyXG5cclxuICAgIFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLlNob3VsZFNjcmFtYmxlQW5kVW5zY3JhbWJsZU1lc3NhZ2VzID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgLy8gVE9ETzogSG93IHRvIGdldCBQcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCkuSWQ/XHJcbiAgICB0aGlzLl9nbG9iYWxVbmlxdWVTZXNzaW9uSWQgPSBVbmlxdWVJRFV0aWxzLkdldFVuaXF1ZU1hY2hpbmVJRCgpICsgXCJfXCI7IC8vICsgUHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLklkO1xyXG5cclxuICAgIHRoaXMuUmVnaXN0ZXJEZWxlZ2F0ZXMoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gSW5pdGlhbGl6ZSB0aGUgZGF0YSBuZWVkZWQgYnkgdGhlIGd1aSBsaWJyYXJ5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IENsaWVudE1hbmFnZXIgaW5zdGFuY2U8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBJbml0R3VpTWFuYWdlcigpOiB2b2lkIHtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlciA9IEV2ZW50c01hbmFnZXIuSW5zdGFuY2U7XHJcbiAgICBNYW5hZ2VyLkRlZmF1bHRTZXJ2ZXJOYW1lID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFNlcnZlcigpO1xyXG4gICAgTWFuYWdlci5EZWZhdWx0UHJvdG9jb2wgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0UHJvdG9jb2woKTtcclxuICAgIEd1aUVudmlyb25tZW50LkVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuSW5zdGFuY2U7XHJcbiAgICBHdWlEYXRhQ29sbGVjdGlvbi5NR0RhdGFUYWJsZSA9IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2U7XHJcbiAgICBSdW50aW1lQ29udGV4dEJhc2Uubm9Db250ZXh0SWQgPSBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5SQ19OT19DT05URVhUX0lEO1xyXG4gIH1cclxuXHJcbiAgLy8vIEluaXRpYWxpemUgZ2xvYmFsIGRhdGEgaW4gb2JqZWN0cyB1c2VkIHRvIG92ZXJjb21lIHRoZSBjaXJjdWxhciByZWZlcmVuY2VzIGlzc3VlXHJcbiAgcHJpdmF0ZSBJbml0Q2lyY3VsYXJSZWZlcmVuY2VzQnlwYXNzZXMoKSB7XHJcbiAgICBUYXNrc1RhYmxlLmNyZWF0ZU5ld3Rhc2sgPSBUYXNrLkNyZWF0ZVRhc2s7XHJcbiAgICBPcGVuVVJMQ29tbWFuZC5jcmVhdGVOZXdDb21tYW5kc1RhYmxlID0gQ29tbWFuZHNUYWJsZS5jcmVhdGVDb21tYW5kc1RhYmxlO1xyXG5cclxuICAgIEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyID0gRXZlbnRzTWFuYWdlci5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZSA9IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIuZW52UGFyYW1zVGFibGUgPSBFbnZQYXJhbXNUYWJsZS5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5nbG9iYWxQYXJhbXMgPSBHbG9iYWxQYXJhbXMuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIubGFuZ3VhZ2VEYXRhID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuSW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEVudHJ5IHBvaW50IHRvIHRoZSBXZWIgQ2xpZW50IDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhcmdzXCI+YXJyYXkgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50czwvcGFyYW0+XHJcbiAgc3RhdGljIE1haW4oaHR0cENsaWVudDogSHR0cENsaWVudCk6IHZvaWQge1xyXG4gICAgLy8gVE9ETyA6IENoZWNrIGhvdyB0byBsb2FkIGZyb20gU3R1ZGlvIGkuZS4gRjdcclxuICAgIC8vIGlmIChhcmdzLmxlbmd0aCAhPT0gMCAmJiBOU3RyaW5nLlN0YXJ0c1dpdGgoYXJnc1swXSwgXCIvc3Bhd25haGVhZFwiKSkge1xyXG4gICAgLy8gICBDbGllbnRNYW5hZ2VyLl9zdGFydGVkRnJvbVN0dWRpbyA9IHRydWU7XHJcbiAgICAvLyAgIFN0dWRpb0xhdW5jaGVyLkluaXQoYXJncyk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlXHJcbiAgICBDbGllbnRNYW5hZ2VyLlN0YXJ0RXhlY3V0aW9uKGh0dHBDbGllbnQpO1xyXG5cclxuICAgIExvZ2dlci5JbnN0YW5jZS5GbHVzaCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUZXJtaW5hdGUgdGhlIGNsaWVudCBhbmQgdGVybWluYXRlIHRoZSBjb250ZXh0IDwvc3VtbWFyeT5cclxuICBzdGF0aWMgYXN5bmMgU3RvcEV4ZWN1dGlvbigpOiBQcm9taXNlIDx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLklzQWJvcnRpbmdNYWdpY0VuZ2luZSA9IHRydWU7XHJcbiAgICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5DbG9zaW5nRm9ybVVJID0gdHJ1ZTtcclxuXHJcbiAgICAgIGF3YWl0IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5lbmRUYXNrKHRydWUsIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDMpIHtcclxuICAgICAgaWYgKGV4MyBpbnN0YW5jZW9mIEFwcGxpY2F0aW9uRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2coZXgzKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhyb3cgZXgzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIFN0YXJ0RXhlY3V0aW9uKGh0dHBDbGllbnQ6SHR0cENsaWVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgSHR0cE1hbmFnZXIuc2V0TmF0aXZlSHR0cENsaWVudChodHRwQ2xpZW50KTtcclxuICAgIGxldCBsb2FkZWQ6IGJvb2xlYW4gPSBhd2FpdCBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLkxvYWRFeGVjdXRpb25Qcm9wcygpO1xyXG5cclxuICAgIGlmIChsb2FkZWQpIHtcclxuICAgICAgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5fZ3VpRXZlbnRzUHJvY2Vzc29yID0gbmV3IEd1aUV2ZW50c1Byb2Nlc3NvcigpO1xyXG4gICAgICBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLkluaXRHdWlNYW5hZ2VyKCk7XHJcbiAgICAgIENsaWVudE1hbmFnZXIuSW5zdGFuY2UuSW5pdENpcmN1bGFyUmVmZXJlbmNlc0J5cGFzc2VzKCk7XHJcbiAgICAgIGxldCB2ZXJzaW9uU3RyaW5nID0gQ3VycmVudENsaWVudFZlcnNpb24gPT09ICAnMC4wLjAuMCcgPyBcIkRldmVsb3BtZW50IG1vZGVcIiA6IFwiVmVyc2lvbiA6IFwiICsgQ3VycmVudENsaWVudFZlcnNpb24gO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJNYWdpYyBXZWIgQ2xpZW50LiBcIiArIHZlcnNpb25TdHJpbmcpO1xyXG5cclxuICAgICAgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5IdHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUyA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5HZXRGaXJzdEh0dHBSZXF1ZXN0VGltZW91dCgpO1xyXG5cclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Jbml0KCk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuSW5pdGlhbGl6ZShSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpLnBhcnNlTG9nTGV2ZWwoU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldEludGVybmFsTG9nTGV2ZWwoKSksIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRJbnRlcm5hbExvZ1N5bmMoKSwgZmFsc2UpO1xyXG5cclxuICAgICAgbGV0IG1nZDogTUdEYXRhID0gbmV3IE1HRGF0YShcclxuICAgICAgICBuZXcgQ29tbWFuZHNUYWJsZSgpLFxyXG4gICAgICAgIG5ldyBDb21tYW5kc1RhYmxlKCksXHJcbiAgICAgICAgMCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgICBhd2FpdCBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLmFkZE1HRGF0YShtZ2QsIDAsIHRydWUpO1xyXG5cclxuICAgICAgYXdhaXQgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Xb3JrVGhyZWFkRXhlY3V0aW9uKCk7XHJcblxyXG4gICAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLlNob3VsZExvZygpKSB7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coT1NFbnZpcm9ubWVudC5Fb2xTZXEgKyBcIkVuZGVkIG9uIFwiICsgRGF0ZVRpbWVVdGlscy5Ub1N0cmluZyhEYXRlVGltZS5Ob3csIFwiZGQvTU0veXl5eVwiLCBMb2dnZXIuSW5zdGFuY2UpICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEgKyBPU0Vudmlyb25tZW50LkVvbFNlcSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICB7XHJcbiAgICAgIGF3YWl0IEdVSU1hbmFnZXIuSW5zdGFuY2UuTWVzc2FnZUJveChcIkVycm9yXCIsIFwiRmFpbGVkIHRvIGxvYWQgc2VydmVyIGNvbmZpZ3VyYXRpb24gZmlsZSAoXCIgKyB0aGlzLl9leGVjdXRpb25Qcm9wZXJ0aWVzRmlsZU5hbWUgKyBcIilcIiwgU3R5bGVzLk1TR0JPWF9JQ09OX0VSUk9SIHwgU3R5bGVzLk1TR0JPWF9CVVRUT05fT0spO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBMb2FkcyB0aGUgZXhlY3V0aW9uIHByb3BlcnRpZXMgZmlsZSB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXJ2ZXIsXHJcbiAgLy8vIGFwcGxpY2F0aW9uIGFuZCBwcm9ncmFtIHRvIGV4ZWN1dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIExvYWRFeGVjdXRpb25Qcm9wcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vIHJldHVybiB0cnVlLCBpZiBzdWNjZXNzZnVsbHkgbG9hZGVkLlxyXG4gICAgbGV0IHJlc3BvbnNlOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgbGV0IHN1Y2NlZWRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gaXNFcnJvciBjYW5ub3QgYmUgdHJ1ZSBoZXJlLCBiZWNhdXNlIGl0IGlzIHJldHVybmVkIGJ5IHJ1bnRpbWUgZW5naW5lIGFuZCB0byByZWFkIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzLCB3ZSBkbyBub3QgcmVhY2ggdGhlIGVuZ2luZS5cclxuICAgICAgbGV0IGlzRXJyb3I6IFJlZlBhcmFtPGJvb2xlYW4+ID0gbmV3IFJlZlBhcmFtKGZhbHNlKTtcclxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLkdldENvbnRlbnQoQ2xpZW50TWFuYWdlci5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lLCBudWxsLCBmYWxzZSwgaXNFcnJvcik7XHJcbiAgICAgIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5Jbml0KEpTT04ucGFyc2UocmVzcG9uc2UpKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICBzdWNjZWVkZWQgPSBmYWxzZTtcclxuICAgICAgLy8gVE9ETzogc2hvdWxkIHdlIHdyaXRlIHRoZSBlcnJvciBtZXNzYWdlIHRvIGxvZz9cclxuICAgICAgLy8gVE9ETzogc2hvdWxkIHdlIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBvbiB0aGUgYnJvd3Nlcj9cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3VjY2VlZGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm4gYSBjb3B5IG9mIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBwcm9wZXJ0aWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+YSBjb3B5IG9mIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBwcm9wZXJ0aWVzPC9yZXR1cm5zPlxyXG4gIGNvcHlFeGVjdXRpb25Qcm9wcygpOiBJU2VydmVyQ29uZmlnIHtcclxuICAgIC8vcmV0dXJuIHRoaXMuX2V4ZWN1dGlvblByb3BzLkNsb25lKCk7XHJcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFwiY29weUV4ZWN1dGlvblByb3BzIG5vdCBpbXBsZW1lbnRlZFwiKTtcclxuICB9XHJcblxyXG4gIGdldERlYnVnQ2xpZW50KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVidWdDbGllbnQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHRVQgVVJMIHZhbHVlIG9mIHRoZSBleGVjdXRpb24gcHJvcGVydHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0VVJMRnJvbUV4ZWN1dGlvblByb3BlcnRpZXMoZXhlY3V0aW9uUHJvcE5hbWU6IHN0cmluZyk6IFVSTCB7XHJcbiAgICBsZXQgdXJsOiBVUkwgPSBudWxsO1xyXG4gICAgbGV0IHVybFN0cjogc3RyaW5nID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEV4ZWN1dGlvblByb3BlcnR5W2V4ZWN1dGlvblByb3BOYW1lXTtcclxuXHJcbiAgICBpZiAodXJsU3RyICE9PSBudWxsICYmIHR5cGVvZiB1cmxTdHIgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgLy8gaWYgcmVsYXRpdmUsIHByZWZpeCB3aXRoIHRoZSAncHJvdG9jb2w6Ly9zZXJ2ZXIvJyBmcm9tIHdoaWNoIHRoZSByaWNoLWNsaWVudCB3YXMgYWN0aXZhdGVkXHJcbiAgICAgIGlmICh1cmxTdHIuc3RhcnRzV2l0aChcIi9cIikpXHJcbiAgICAgICAgdXJsU3RyID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFByb3RvY29sKCkgKyBcIjovL1wiICsgU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFNlcnZlcigpICsgdXJsU3RyO1xyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICB1cmwgPSBuZXcgVVJMKHVybFN0cik7XHJcbiAgICAgICAgRGVidWcuQXNzZXJ0KHVybC5wcm90b2NvbCA9PT0gXCJodHRwOlwiIHx8IHVybC5wcm90b2NvbCA9PT0gXCJodHRwczpcIik7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2coZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldExvZ29uV2luZG93SWNvblVSTCgpOiBVUkwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VVJMRnJvbUV4ZWN1dGlvblByb3BlcnRpZXMoR3VpQ29uc3RhbnRzLlNUUl9MT0dPX1dJTl9JQ09OX1VSTCk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2dvbldpbmRvd0ltYWdlVVJMKCk6IFVSTCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVUkxGcm9tRXhlY3V0aW9uUHJvcGVydGllcyhHdWlDb25zdGFudHMuU1RSX0xPR09OX0lNQUdFX1VSTCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiB0cnVlIGlmIGRlbGF5IGlzIGluIHByb2dyZXNzPC9zdW1tYXJ5PlxyXG4gIGlzRGVsYXlJblByb2dyZXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGF5SW5Qcm9ncmVzcztcclxuICB9XHJcblxyXG4gIHNldERlbGF5SW5Qcm9ncmVzcyhkZWxheUluUHJvZ3Jlc3M6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2RlbGF5SW5Qcm9ncmVzcyA9IGRlbGF5SW5Qcm9ncmVzcztcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2xvYmFsIHVuaXF1ZSBJRCBvZiB0aGUgc2Vzc2lvbiA9ICdtYWNoaW5lIHVuaXF1ZSBJRCcgKyAncHJvY2VzcyBJRCc8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRHbG9iYWxVbmlxdWVTZXNzaW9uSUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9nbG9iYWxVbmlxdWVTZXNzaW9uSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmV0dXJuIHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWUgb2YgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgYmVpbmcgdXNlZCBieSB0aGUgY2xpZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0RXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IGxhc3RQYXRoU2VwYXJhdG9yOiBudW1iZXIgPSBmdWxseVF1YWxpZmllZE5hbWUubGFzdEluZGV4T2YoJ1xcXFwnKTtcclxuICAgIHJldHVybiBOU3RyaW5nLlJlbW92ZShmdWxseVF1YWxpZmllZE5hbWUsIGxhc3RQYXRoU2VwYXJhdG9yICsgMSwgZnVsbHlRdWFsaWZpZWROYW1lLmxlbmd0aCAtIGxhc3RQYXRoU2VwYXJhdG9yIC0gMSkgKyBDb25zdEludGVyZmFjZS5FWEVDVVRJT05fUFJPUEVSVElFU19GSUxFX05BTUU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCBjb250cm9sJ3MgcGljdHVyZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgIEdldENvbnRyb2xQaWN0dXJlTWFzayh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZyk6IFBJQ1xyXG4gIHtcclxuICAgIGxldCBwaWM6IFBJQyA9IG51bGw7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnRyb2wgPSB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKTtcclxuICAgICAgcGljID0gY29udHJvbC5nZXRQSUMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGljO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCBmb3JtYXR0ZWQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljICBHZXRGb3JtYXR0ZWRWYWx1ZSh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZ1xyXG4gIHtcclxuICAgIGxldCBwaWM6IFBJQyA9IG51bGw7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IHZhbHVlO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wgIT0gbnVsbCAmJiBjb250cm9sLkRhdGFUeXBlID09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQykge1xyXG4gICAgICBwaWMgPSBjb250cm9sLmdldFBJQygpO1xyXG5cclxuICAgICAgbGV0IGRpc3BWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XHJcbiAgICAgIGxldCAgbmV3UGljID0gcGljLmdldFVuZm9ybWF0dGVkTnVtZXJpY1BpYygpO1xyXG5cclxuICAgICAgbGV0IG51bSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0oZGlzcFZhbHVlLCBuZXdQaWMsIDApO1xyXG4gICAgICBuZXdWYWx1ZSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UuZnJvbU51bShudW0sIHBpYyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHJhbmdlZCB2YWx1ZSBmb3IgaW5wdXQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyAgR2V0UmFuZ2VkVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgICByZXR1cm4gY29udHJvbC5nZXRSYW5nZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB2YWxpZGF0ZSB1c2VyIGlucHV0IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgIFZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wudmFsaWRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGZsZCByYW5nZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBHZXRGbGRSYW5nZXModGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wuZ2V0UmFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBSZXR1cm5zIHdoZXRoZXIgY2xpZW50L3NlcnZlciBjYWNoZSBleGlzdHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUcmFuc0NhY2hlRXhpc3RzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNsaWVudFRyYW5zQ2FjaGVFeGlzdHM6IGJvb2xlYW4gPSBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpLmNsaWVudFRyYW5zYWN0aW9uQ2FjaGVFeGlzdHMoKTtcclxuICAgIGxldCBzZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzOiBib29sZWFuID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKS5zZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzKCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudFRyYW5zQ2FjaGVFeGlzdHMgfHwgc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0cztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU3Vic2NyaWJlIGZvciBldmVudHMgZGVmaW5lZCBhdCBIdHRwQ2xpZW50RXZlbnRzIGFuZFxyXG4gIC8vLyBhdHRhY2ggYXBwcm9wcmlhdGUgZXZlbnQgaGFuZGxlcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUmVnaXN0ZXJEZWxlZ2F0ZXMoKTogdm9pZCB7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldEV4ZWN1dGlvblByb3BlcnR5X0V2ZW50ID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEV4ZWN1dGlvblByb3BlcnR5LmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0UnVudGltZUN0eElEX0V2ZW50ID0gdGhpcy5HZXRSdW50aW1lQ3R4SUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEX0V2ZW50ID0gdGhpcy5HZXRHbG9iYWxVbmlxdWVTZXNzaW9uSUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcl9FdmVudCA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5TaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yLmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0cmlldmVzIHJ1bnRpbWUgY29udGV4dCBJRFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRSdW50aW1lQ3R4SUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuQ29udGV4dElEO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZW5kIGEgcmVxdWVzdCB0byBzZXJ2ZXIgdG8gdGVybWluYXRlIHRoZSBjb250ZXh0IHVzaW5nIGZldGNoIEFQSSB3aXRoIGtlZXAtYWxpdmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUZXJtaW5hdGVDb250ZXh0VXNpbmdGZXRjaEFQSSgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBJZiBTZXNzaW9uIGlzIHJlLWluaXRpYWxpemluZyBtZWFucyB0aGUgY29udGV4dCBpcyBub3QgZm91bmQgYXQgc2VydmVyLlxyXG4gICAgLy8gdGhlbiB0aGVyZSBpcyBubyBwb2ludCBpbiB0ZXJtaW5hdGluZyBjb250ZXh0LlxyXG4gICAgaWYgKFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLklzU2Vzc2lvblJlSW5pdGlhbGl6aW5nKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLklzQWJvcnRpbmdNYWdpY0VuZ2luZSA9IHRydWU7XHJcblxyXG4gICAgLy8gRHVlIHRvIHBheWxvYWQgbGltaXQgb2YgZmV0Y2ggQVBJLCBzZW5kIG9ubHkgdGhlIGNvbnRleHQgdGVybWluYXRpb24gY29tbWFuZCB0byBzZXJ2ZXJcclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5DbGVhcigpO1xyXG5cclxuICAgIGxldCBjb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQ6IENvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCA9IENvbW1hbmRGYWN0b3J5LlxyXG4gICAgQ3JlYXRlQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kKE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5nZXRUYXNrVGFnKCkpO1xyXG5cclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5BZGQoPElDbGllbnRDb21tYW5kPmNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCk7XHJcblxyXG4gICAgLy8gcmVzcG9uc2UgbmVlZCBub3QgdG8gYmUgaGFuZGxlZCBhcyB0aGUgYnJvd3NlciB1bmxvYWQgY2Fubm90IGJlIHN0b3BwZWQsIHNvIG5vIG5lZWQgdG8gd2FpdFxyXG4gICAgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5FeGVjdXRlKENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24uT05MWV9DT01NQU5EUyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ2xpZW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sSUFBSSxFQUNKLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGNBQWMsRUFFZCxPQUFPLEVBR1Asa0JBQWtCLEVBQ2xCLE1BQU0sRUFDUCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUk5QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsd0NBQXdDLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUc1RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHeEMsTUFBTSxPQUFPLGFBQWE7SUE2UHhCO1FBNVBRLHdCQUFtQixHQUF1QixJQUFJLENBQUM7UUFJL0MsdUJBQWtCLEdBQXNCLElBQUksQ0FBQztRQUM3QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFJbEMsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsMkJBQXNCLEdBQVcsSUFBSSxDQUFDO1FBRXRDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQWlQL0Isa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUcxRSx1QkFBdUIsQ0FBQyxtQ0FBbUMsR0FBRyxJQUFJLENBQUM7UUFJbkUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUV2RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBeFBELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLElBQUksYUFBYSxDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQ2xDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUVoRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUtNLFFBQVEsQ0FBQyxRQUFtQjtRQUNqQyxJQUFJLElBQUksR0FBZSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RSxJQUFJLE9BQU8sR0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDckMsSUFBSSxzQkFBc0IsR0FBVyxLQUFLLENBQUM7UUFDM0MsSUFBSSxRQUFRLEdBQVcsQ0FBQyxDQUFDO1FBRXpCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNoQixJQUFJLE9BQU8sR0FBa0IsSUFBSSxDQUFDO1lBRWxDLElBQUksUUFBUSxDQUFDLFdBQVcsS0FBSyxJQUFJO2dCQUMvQixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFekQsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO2dCQUNuQixJQUFJLEVBQUUsR0FBdUIsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDM0MsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO29CQUN4QixPQUFPLElBQUksRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN4QztnQkFDRCxRQUFRLFFBQVEsQ0FBQyxTQUFTLEVBQUU7b0JBRTFCLEtBQUssWUFBWTt3QkFDZixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFOzRCQUM5QixNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQzt5QkFDcEU7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLFdBQVc7d0JBTWQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUU7NEJBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7eUJBQzlCOzZCQUNJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFOzRCQUMzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ2xHLE1BQU07b0JBRVIsS0FBSyxPQUFPO3dCQUNWLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBQzs0QkFDMUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDL0MsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUNoRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO3lCQUMvQjs2QkFLSTs0QkFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDOzRCQUM5QyxJQUFJLFlBQVksR0FBWSxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7NEJBQ3pNLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7eUJBQzFGO3dCQUNELE1BQU07b0JBQ1IsS0FBSyxPQUFPO3dCQUVWLElBQUksSUFBSSxDQUFDLGdCQUFnQjs0QkFDdkIsT0FBTzt3QkFtQlQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFFOUMsTUFBTTtvQkFDUixLQUFLLFVBQVU7d0JBQ2IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ3BDLE1BQU07b0JBRVIsS0FBSyxrQkFBa0I7d0JBQ3JCLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUMzRCxNQUFNO29CQUNSLEtBQUssU0FBUzt3QkFDWixNQUFNLENBQUMsU0FBUyxDQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUMsSUFBSSxDQUFFLENBQUM7d0JBQ3pHLE1BQU07b0JBQ1IsS0FBSyxrQkFBa0I7d0JBQ3JCLGFBQWEsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQWEsT0FBUSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMzRyxNQUFNO29CQUNSO3dCQUVFLE1BQU07aUJBQ1Q7YUFDRjtpQkFDSTtnQkFDSCxRQUFRLFFBQVEsQ0FBQyxTQUFTLEVBQUU7b0JBQzFCLEtBQUssd0JBQXdCO3dCQUMzQixPQUFPLEdBQUcsa0JBQWtCLENBQUMscUJBQXFCLEVBQUUsQ0FBQzt3QkFDckQsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFOzRCQUNwQixNQUFNLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQzFDO3dCQUNELE1BQU07b0JBQ1IsS0FBSyxPQUFPO3dCQUNWLElBQUcsUUFBUSxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUU7NEJBQ3RDLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFjLElBQUksQ0FBQyxRQUFTLENBQUMsd0JBQXdCLENBQUM7NEJBQzlFLGFBQWEsQ0FBQyxRQUFRLENBQUMsMENBQTBDLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDO3lCQUN4SDt3QkFDRCxNQUFNO29CQUNSLEtBQUssT0FBTzt3QkFDVixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7NEJBQ2hCLGFBQWEsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7OzRCQUVsRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO3dCQUN4QyxNQUFNO29CQUNSLEtBQUssU0FBUzt3QkFDWixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQzVELE1BQU07b0JBQ1IsS0FBSyxRQUFRO3dCQUNYLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUU1RSxLQUFLLFNBQVM7d0JBQ1osUUFBUSxHQUFHLE9BQU8sR0FBYyxJQUFJLENBQUMsUUFBUyxDQUFDLHdCQUF3QixDQUFDO3dCQUN4RSxJQUFJLGNBQWMsR0FBbUIsRUFBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBQyxDQUFDO3dCQUM1RyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO3dCQUNwRixNQUFNO29CQUNSLEtBQUssZ0JBQWdCO3dCQUNuQixhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLEVBQ2pJLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFDekIsTUFBTTtvQkFDUixLQUFLLGtCQUFrQjt3QkFDckIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxxRUFBcUUsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzt3QkFDN0ksTUFBTTtvQkFDUjt3QkFFRSxNQUFNO2lCQUNUO2FBQ0Y7U0FDRjs7WUFFQyxRQUFRLFFBQVEsQ0FBQyxTQUFTLEVBQUU7Z0JBQzFCLEtBQUssb0JBQW9CO29CQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMxQyxNQUFNO2FBQ1Q7SUFDTCxDQUFDO0lBTUQsa0JBQWtCLENBQUMsR0FBVztRQUU1QixRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFLSyxtQkFBbUI7O1lBQ3ZCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDL0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzVJLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2FBQ3RDO1lBRUQsSUFBSTtnQkFDRixJQUFJLE1BQU0sd0JBQXdCLENBQUMsWUFBWSxFQUFFLEVBQUU7b0JBQ2pELElBQUksU0FBUyxHQUFxQixnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7b0JBQzVELElBQUksYUFBYSxHQUFXLFNBQVMsQ0FBQyxhQUFhLENBQUM7b0JBQ3BELFNBQVMsQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUU1QyxJQUFJLGtCQUFrQixHQUFTLElBQUksQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVO3dCQUMzQixrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUU3RCxJQUFJLGtCQUFrQixLQUFLLElBQUk7d0JBQzdCLE1BQU0sYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7O3dCQUV2RCxNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7b0JBRzNGLGFBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMzQzthQUNGO1lBQ0QsT0FBTyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLFlBQVksb0JBQW9CLEVBQUU7b0JBQ3RDLElBQUksZUFBZSxHQUFZLEtBQUssQ0FBQztvQkFDckMsSUFBSSxFQUFFLFlBQVksV0FBVyxJQUFrQixFQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVyxDQUFDLGFBQWE7d0JBQ3hGLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBRXpCLElBQUksQ0FBQyxlQUFlO3dCQUNsQixNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRXhELGFBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMzQzs7b0JBRUMsTUFBTSxFQUFFLENBQUM7YUFDWjtvQkFDTztnQkFDTixNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXhELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2xELFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN4QjtRQUNILENBQUM7S0FBQTtJQUtELDZCQUE2QjtRQUMzQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsOEJBQThCLEVBQUUsRUFBRTtZQUNwRCxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQywrRUFBK0UsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVsSCxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUUxRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFOUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsK0VBQStFLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkg7SUFDSCxDQUFDO0lBcUJPLGNBQWM7UUFDcEIsT0FBTyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlELE9BQU8sQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5RCxjQUFjLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDbEQsaUJBQWlCLENBQUMsV0FBVyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztRQUMxRCxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUM7SUFDNUUsQ0FBQztJQUdPLDhCQUE4QjtRQUNwQyxVQUFVLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDM0MsY0FBYyxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztRQUUxRSxZQUFZLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDcEQsWUFBWSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDckQsWUFBWSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3RELFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxZQUFZLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDbEQsWUFBWSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ2xELENBQUM7SUFJRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQXNCO1FBT2hDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBR0QsTUFBTSxDQUFPLGFBQWE7O1lBQ3hCLElBQUk7Z0JBQ0YsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztnQkFDdkQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUU1RSxNQUFNLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQzlFLEtBQUssQ0FBQyxDQUFDO2FBQ1Y7WUFDRCxPQUFPLEdBQUcsRUFBRTtnQkFDVixJQUFJLEdBQUcsWUFBWSxvQkFBb0IsRUFBRTtvQkFDdkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDMUM7O29CQUVDLE1BQU0sR0FBRyxDQUFDO2FBQ2I7UUFDSCxDQUFDO0tBQUE7SUFFRCxNQUFNLENBQU8sY0FBYyxDQUFDLFVBQXFCOztZQUMvQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsSUFBSSxNQUFNLEdBQVksTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFeEUsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3RFLGFBQWEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hDLGFBQWEsQ0FBQyxRQUFRLENBQUMsOEJBQThCLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxhQUFhLEdBQUcsb0JBQW9CLEtBQU0sU0FBUyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLG9CQUFvQixDQUFFO2dCQUVwSCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxDQUFDO2dCQUVsRCxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsMEJBQTBCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2dCQUUxRyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUU5QixNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRW5JLElBQUksR0FBRyxHQUFXLElBQUksTUFBTSxDQUMxQixJQUFJLGFBQWEsRUFBRSxFQUNuQixJQUFJLGFBQWEsRUFBRSxFQUNuQixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixNQUFNLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFeEQsTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBRW5ELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRTtvQkFDL0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUMzTDthQUNGO2lCQUVEO2dCQUNFLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLDRDQUE0QyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQzNMO1FBQ0gsQ0FBQztLQUFBO0lBS0ssa0JBQWtCOztZQUV0QixJQUFJLFFBQVEsR0FBVyxFQUFFLENBQUM7WUFDMUIsSUFBSSxTQUFTLEdBQVksSUFBSSxDQUFDO1lBRTlCLElBQUk7Z0JBRUYsSUFBSSxPQUFPLEdBQXNCLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyRCxRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN4SCxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7YUFDbEQ7WUFDRCxPQUFPLEVBQUUsRUFBRTtnQkFDVCxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBR25CO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztLQUFBO0lBTUQsa0JBQWtCO1FBRWhCLE1BQU0sSUFBSSxTQUFTLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBT0QsNkJBQTZCLENBQUMsaUJBQXlCO1FBQ3JELElBQUksR0FBRyxHQUFRLElBQUksQ0FBQztRQUNwQixJQUFJLE1BQU0sR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFbkYsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUVwRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUN4QixNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFFcEcsSUFBSTtnQkFDRixHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxPQUFPLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQzthQUNyRTtZQUNELE9BQU8sRUFBRSxFQUFFO2dCQUNULE1BQU0sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDekM7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUdELHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFPRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsZUFBd0I7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUMxQyxDQUFDO0lBS0Qsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFJTyxNQUFNLENBQUMsOEJBQThCO1FBQzNDLElBQUksa0JBQWtCLEdBQVcsSUFBSSxDQUFDO1FBQ3RDLElBQUksaUJBQWlCLEdBQVcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQztJQUN0SyxDQUFDO0lBT0QsTUFBTSxDQUFFLHFCQUFxQixDQUFDLE1BQWMsRUFBRSxXQUFtQjtRQUUvRCxJQUFJLEdBQUcsR0FBUSxJQUFJLENBQUM7UUFDcEIsSUFBSSxJQUFJLEdBQWUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRSxJQUFJLE9BQU8sR0FBa0IsSUFBSSxDQUFDO1FBRWxDLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtZQUN4QixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBTUQsTUFBTSxDQUFFLGlCQUFpQixDQUFDLE1BQWMsRUFBRSxXQUFtQixFQUFFLEtBQVU7UUFFdkUsSUFBSSxHQUFHLEdBQVEsSUFBSSxDQUFDO1FBQ3BCLElBQUksSUFBSSxHQUFlLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckUsSUFBSSxPQUFPLEdBQWtCLElBQUksQ0FBQztRQUNsQyxJQUFJLFFBQVEsR0FBUSxLQUFLLENBQUM7UUFFMUIsSUFBSSxXQUFXLEtBQUssSUFBSTtZQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7WUFDbkUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV2QixJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsSUFBSyxNQUFNLEdBQUcsR0FBRyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFFN0MsSUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN4RDtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFLRCxNQUFNLENBQUUsY0FBYyxDQUFDLE1BQWMsRUFBRSxXQUFtQixFQUFFLEtBQWE7UUFFdkUsSUFBSSxJQUFJLEdBQWUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRSxJQUFJLE9BQU8sR0FBa0IsSUFBSSxDQUFDO1FBRWxDLElBQUksV0FBVyxLQUFLLElBQUksRUFDeEI7WUFDRSxPQUFPLEdBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQyxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLRCxNQUFNLENBQUUsb0JBQW9CLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsS0FBVTtRQUUxRSxJQUFJLElBQUksR0FBZSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJFLElBQUksT0FBTyxHQUFjLElBQUksQ0FBQztRQUU5QixJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQ3hCO1lBQ0UsT0FBTyxHQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFjLENBQUM7WUFDNUQsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDckQsSUFBSSxJQUFJLEdBQWUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRSxJQUFJLE9BQU8sR0FBYyxJQUFJLENBQUM7UUFFOUIsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUN4QjtZQUNFLE9BQU8sR0FBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBYyxDQUFDO1lBQzVELE9BQU8sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsTUFBTSxDQUFDLGdCQUFnQjtRQUNyQixJQUFJLHNCQUFzQixHQUFZLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUM5RyxJQUFJLDRCQUE0QixHQUFZLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUVwSCxPQUFPLHNCQUFzQixJQUFJLDRCQUE0QixDQUFDO0lBQ2hFLENBQUM7SUFPRCxpQkFBaUI7UUFDZixnQkFBZ0IsQ0FBQywwQkFBMEIsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckgsZ0JBQWdCLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsZ0JBQWdCLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRixnQkFBZ0IsQ0FBQywrQkFBK0IsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakksQ0FBQztJQU1ELGVBQWU7UUFDYixPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUtELE1BQU0sQ0FBQyw2QkFBNkI7UUFJbEMsSUFBSSx1QkFBdUIsQ0FBQyx1QkFBdUI7WUFDakQsT0FBTztRQUNULFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFHdkQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUvRCxJQUFJLDhCQUE4QixHQUFtQyxjQUFjO1lBQ25GLG9DQUFvQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUxRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBaUIsOEJBQThCLENBQUMsQ0FBQztRQUczRyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEcsQ0FBQzs7QUF0bEJjLHVCQUFTLEdBQWtCLElBQUksQ0FBQztBQVF2QiwwQ0FBNEIsR0FBVyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBwbGljYXRpb25FeGNlcHRpb24sIERhdGVUaW1lLCBEZWJ1ZywgRXhjZXB0aW9uLCBOU3RyaW5nLCBSZWZQYXJhbX0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5cclxuaW1wb3J0IHtcclxuICBEYXRlVGltZVV0aWxzLFxyXG4gIEludGVybmFsSW50ZXJmYWNlLFxyXG4gIExvZ2dlcixcclxuICBNaXNjLFxyXG4gIE9TRW52aXJvbm1lbnQsXHJcbiAgU3RvcmFnZUF0dHJpYnV0ZSxcclxuICBYTUxDb25zdGFudHNcclxufSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHtcclxuICBDb21tYW5kcyxcclxuICBDb21tYW5kVHlwZSxcclxuICBEaXNwbGF5Q29udmVydG9yLFxyXG4gIEV2ZW50cyxcclxuICBHdWlDb25zdGFudHMsXHJcbiAgR3VpRGF0YUNvbGxlY3Rpb24sXHJcbiAgR3VpRW52aXJvbm1lbnQsXHJcbiAgTGFzdEZvY3VzZWRWYWwsXHJcbiAgTWFuYWdlcixcclxuICBNZ0NvbnRyb2xCYXNlLFxyXG4gIFBJQyxcclxuICBSdW50aW1lQ29udGV4dEJhc2UsXHJcbiAgU3R5bGVzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQge0V2ZW50c01hbmFnZXJ9IGZyb20gJy4vZXZlbnQvRXZlbnRzTWFuYWdlcic7XHJcbmltcG9ydCB7R3VpRXZlbnRzUHJvY2Vzc29yfSBmcm9tICcuL0d1aUV2ZW50c1Byb2Nlc3Nvcic7XHJcbmltcG9ydCB7RW52aXJvbm1lbnR9IGZyb20gJy4vZW52L0Vudmlyb25tZW50JztcclxuaW1wb3J0IHtMYW5ndWFnZURhdGF9IGZyb20gJy4vZW52L0xhbmd1YWdlRGF0YSc7XHJcbmltcG9ydCB7VGFza3NUYWJsZX0gZnJvbSAnLi90YXNrcy9UYXNrc1RhYmxlJztcclxuaW1wb3J0IHtUYWJsZUNhY2hlTWFuYWdlcn0gZnJvbSAnLi9ydC9UYWJsZUNhY2hlTWFuYWdlcic7XHJcbmltcG9ydCB7TWdDb250cm9sfSBmcm9tICcuL2d1aS9NZ0NvbnRyb2wnO1xyXG5pbXBvcnQge0lDbGllbnRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kJztcclxuaW1wb3J0IHtUYXNrfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQge01HRGF0YUNvbGxlY3Rpb259IGZyb20gJy4vdGFza3MvTUdEYXRhQ29sbGVjdGlvbic7XHJcbmltcG9ydCB7VW5pcXVlSURVdGlsc30gZnJvbSAnLi91dGlsL1VuaXF1ZUlEVXRpbHMnO1xyXG5pbXBvcnQge0h0dHBNYW5hZ2VyfSBmcm9tICcuL2h0dHAvSHR0cE1hbmFnZXInO1xyXG5pbXBvcnQge0NvbW1hbmRzVGFibGV9IGZyb20gJy4vQ29tbWFuZHNUYWJsZSc7XHJcbmltcG9ydCB7UmVtb3RlQ29tbWFuZHNQcm9jZXNzb3J9IGZyb20gJy4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yJztcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSAnLi9Db25zdEludGVyZmFjZSc7XHJcbmltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbn0gZnJvbSAnLi9Db21tYW5kc1Byb2Nlc3NvckJhc2UnO1xyXG5pbXBvcnQge0NvbW1hbmRzUHJvY2Vzc29yTWFuYWdlcn0gZnJvbSAnLi9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXInO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSAnLi90YXNrcy9NR0RhdGEnO1xyXG5pbXBvcnQge1NlcnZlckVycm9yfSBmcm9tICcuL3JlbW90ZS9TZXJ2ZXJFcnJvcic7XHJcbmltcG9ydCB7SHR0cENsaWVudEV2ZW50c30gZnJvbSAnLi9odHRwL2NsaWVudC9IdHRwQ2xpZW50RXZlbnRzJztcclxuaW1wb3J0IHtJR3VpRXZlbnR9IGZyb20gJy4vYnJpZGdlL0lHdWlFdmVudCc7XHJcbmltcG9ydCB7Q29tbWFuZEZhY3Rvcnl9IGZyb20gJy4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29tbWFuZEZhY3RvcnknO1xyXG5pbXBvcnQge0N1cnJlbnRDbGllbnRWZXJzaW9ufSBmcm9tICcuL0N1cnJlbnRDbGllbnRWZXJzaW9uJztcclxuaW1wb3J0IHtJU2VydmVyQ29uZmlnfSBmcm9tICcuL3V0aWwvSVNlcnZlckNvbmZpZyc7XHJcbmltcG9ydCB7RGF0YVZpZXd9IGZyb20gJy4vZGF0YS9EYXRhVmlldyc7XHJcbmltcG9ydCB7TGFzdEZvY3VzZWRNYW5hZ2VyfSBmcm9tICcuL3J0L0xhc3RGb2N1c2VkTWFuYWdlcic7XHJcbmltcG9ydCB7RW52UGFyYW1zVGFibGV9IGZyb20gJy4vZW52L0VudlZhcmlhYmxlc1RhYmxlJztcclxuaW1wb3J0IHtHbG9iYWxQYXJhbXN9IGZyb20gJy4vZXhwL0dsb2JhbFBhcmFtc1RhYmxlJztcclxuaW1wb3J0IHtPcGVuVVJMQ29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9PcGVuVVJMQ29tbWFuZCc7XHJcbmltcG9ydCB7U2VydmVyQ29uZmlnfSBmcm9tICcuL1NlcnZlckNvbmZpZyc7XHJcbmltcG9ydCB7QWNjZXNzSGVscGVyfSBmcm9tICcuL0FjY2Vzc0hlbHBlcic7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0NvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQnO1xyXG5pbXBvcnQge0dVSU1hbmFnZXJ9IGZyb20gXCIuL0dVSU1hbmFnZXJcIjtcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBDbGllbnRNYW5hZ2VyIHtcclxuICBwcml2YXRlIF9ndWlFdmVudHNQcm9jZXNzb3I6IEd1aUV2ZW50c1Byb2Nlc3NvciA9IG51bGw7XHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfdGFibGVDYWNoZU1hbmFnZXI6IFRhYmxlQ2FjaGVNYW5hZ2VyID0gbnVsbDtcclxuICBwcml2YXRlIF9kZWxheUluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTsgIC8vIHRydWUgaWYgZGVsYXkgaXMgaW4gcHJvZ3Jlc3NcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBDbGllbnRNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfZGVidWdDbGllbnQ6IHN0cmluZyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfZ2xvYmFsVW5pcXVlU2Vzc2lvbklkOiBzdHJpbmcgPSBudWxsO1xyXG4vLyAgcHJpdmF0ZSBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDsgLy8gY29udHJvbCB3aGVyZSBsYXN0IHBhcmtpbmcgd2FzIGF0dGVtcHRlZCBidXQgd2UgZGlkIG5vdCBwYXJrIG9uIGl0XHJcbiAgcHJpdmF0ZSBfYnV0dG9uSXNDbGlja2VkID0gZmFsc2U7XHJcblxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lOiBzdHJpbmcgPSBcIi4vYXNzZXRzL3NlcnZlci1jb25maWcuanNvblwiOyAvLyBwYXRoIG9mIHRoZSBleGVjdXRpb24gcHJvcGVydGllcyBmaWxlIGZyb20gYXNzZXRzIGZvbGRlclxyXG5cclxuICBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IENsaWVudE1hbmFnZXIge1xyXG4gICAgaWYgKENsaWVudE1hbmFnZXIuX2luc3RhbmNlID09PSBudWxsKVxyXG4gICAgICBDbGllbnRNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBDbGllbnRNYW5hZ2VyKCk7XHJcblxyXG4gICAgcmV0dXJuIENsaWVudE1hbmFnZXIuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcHVibGljIEFkZEV2ZW50KGd1aUV2ZW50OiBJR3VpRXZlbnQpOiB2b2lkIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRChndWlFdmVudC5UYXNrSUQpO1xyXG4gICAgbGV0IGxpbmVJZHg6IG51bWJlciA9ICtndWlFdmVudC5MaW5lO1xyXG4gICAgbGV0IGNsaWNrRGJsQ2xpY2tTdWNjZWVkZWQ6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbGV0IGR2Um93SWR4OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGlmICh0YXNrICE9IG51bGwpIHtcclxuICAgICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKGd1aUV2ZW50LkNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAgICAgIGNvbnRyb2wgPSB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuXHJcbiAgICAgIGlmIChjb250cm9sICE9IG51bGwpIHtcclxuICAgICAgICBsZXQgZHY6IERhdGFWaWV3ID0gPERhdGFWaWV3PnRhc2suRGF0YVZpZXc7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuSXNUYWJsZUNoaWxkKSB7XHJcbiAgICAgICAgICBsaW5lSWR4IC09IGR2LlJlY29yZHNCZWZvcmVDdXJyZW50VmlldztcclxuICAgICAgICB9XHJcbiAgICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuXHJcbiAgICAgICAgICBjYXNlIFwiY29sdW1uU29ydFwiOlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0NvbHVtblNvcnRhYmxlKCkpIHtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Db2x1bW5DbGljayhjb250cm9sLCBndWlFdmVudC5MaW5lLCBndWlFdmVudC5Db250cm9sTmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwibW91c2Vkb3duXCI6XHJcbiAgICAgICAgICAgIC8vIERlZmVjdCAxNTIyODggJiBEZWZlY3QgMTUyMjY4OiBQcm9ibGVtOiBXaGVuIGJ1dHRvbiBpcyBjbGlja2VkLCB3ZSBnZXQgZm9jdXMgZXZlbnQgZmlyc3QgYW5kIGlmIG1lc3NhZ2VCb3ggaXMgb3BlbmVkIGhlcmUgbGlrZSB2ZXJpZnksIGV0Yy5cclxuICAgICAgICAgICAgLy8gd2UgZG8gbm90IHJlY2VpdmUgY2xpY2sgZXZlbnQuIEhlbmNlIGV2ZW50cyBhcmUgbm90IHByb2Nlc3NlZC4gU29sdXRpb246IFdlIGRvIG5lZWQgY2xpY2sgaGFuZGxpbmcgZm9yIGJ1dHRvbiBhcyBpdCBpcyBjYWxsZWQgd2hlbiB3ZSBwYXJrXHJcbiAgICAgICAgICAgIC8vIG9uIGJ1dHRvbiBhbmQgcHJlc3Mgc3BhY2Uga2V5LiBXZSBuZWVkIGZvY3VzIGV2ZW50IGhhbmRsaW5nIGZvciBleGVjdXRpbmcgQ1AgJiBDUyB3aGVuIHBhcmtlZCBvbiBidXR0b24gYnkgdGFiIGtleS4gU28gd2UgbmVlZCB0byBtYW5hZ2VcclxuICAgICAgICAgICAgLy8gaG93IGNsaWNrIGlzIGhhbmRsZWQuIFdlIGRvIG5vdCBuZWVkIGZvY3VzIGV2ZW50IGhhbmRsaW5nIHdoZW4gd2UgY2xpY2sgb24gYnV0dG9uLCBzbyBvbiBtb3VzZWRvd24sIHNldCBhIGZsYWcgd2hpY2ggd2lsbCBiZSB1c2VkIGluIGZvY3VzXHJcbiAgICAgICAgICAgIC8vIGV2ZW50IGhhbmRsaW5nIHRvIHNraXAgaXRzIGhhbmRsaW5nLiBUaGVuIHdlIHdpbGwgcmVjZWl2ZSBjbGljayBldmVudCB3aGVyZSB0aGlzIHdpbGwgYmUgYWN0dWFsbHkgaGFuZGxlZCBhbmQgaGVuY2Ugd29yay5cclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wuaXNCdXR0b24oKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2J1dHRvbklzQ2xpY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWNvbnRyb2wuaXNTdWJmb3JtKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0KE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpKS5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gY29udHJvbC5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpIHx8IChjb250cm9sLkNvbm5lY3RlZENvbnRyb2wgJiYgZ3VpRXZlbnQuZnJvbUJ1dHRvbikpe1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihcIlwiLCBjb250cm9sLCBsaW5lSWR4LCB0cnVlKTtcclxuICAgICAgICAgICAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjb250cm9sLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLl9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBzb3J0aW5nIHNob3VsZCBiZSBoYW5kbGVkIG9ubHkgb24gY29sdW1uIGNsaWNrIGFuZCBub3Qgb24gcm93RGF0YVxyXG4gICAgICAgICAgICAvLyBlbHNlIGlmIChjb250cm9sLlR5cGUgPT09IE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0NPTFVNTikge1xyXG4gICAgICAgICAgICAvLyAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Gb2N1cyhjb250cm9sLCBsaW5lSWR4LCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgbGV0IHByb2R1Y2VDbGljazogYm9vbGVhbiA9IGNvbnRyb2wuaXNCdXR0b24oKSB8fCBjb250cm9sLmlzVGV4dENvbnRyb2woKSB8fCBjb250cm9sLmlzTGFiZWwoKSB8fCBjb250cm9sLmlzVGFiQ29udHJvbCgpIHx8IGNvbnRyb2wuaXNUYWJsZUNvbnRyb2woKSB8fCBjb250cm9sLmlzQ29tYm9Cb3goKSB8fCBjb250cm9sLmlzSW1hZ2VDb250cm9sKCk7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uTW91c2VEb3duKGNvbnRyb2wuZ2V0Rm9ybSgpLCBjb250cm9sLCBudWxsLCB0cnVlLCBsaW5lSWR4LCBmYWxzZSwgcHJvZHVjZUNsaWNrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c1wiOlxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2J1dHRvbklzQ2xpY2tlZClcclxuICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAvLyAvLyBJZiB3ZSBhdHRlbXB0IHRvIHBhcmsgb24gY29udHJvbCB3aGVyZSB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyB0byBwYXJrIGxpa2UgaWYgY29udHJvbCBoYXMgZXhwcmVzc2lvbiBvciBwYXJlbnQgdGFzayBmaWVsZCwgZG8gbm90IGFsbG93IHRvIGZvY3VzIG9uIGl0LlxyXG4gICAgICAgICAgICAvLyAvLyBTZXQgRm9jdXMgYmFjayB0byBsYXN0Rm9jdXNlZENvbnRyb2wuIFdlIG5lZWQgX2xhc3RGYWlsZWRGb2N1c2VkQ29udHJvbCBhcyB3ZSBnZXQgZm9jdXMgZXZlbnQgb24gYSBjb250cm9sIHR3aWNlLiBTbyB0byBhdm9pZCB0byBzaG93IGVycm9yIG11bHRpcGxlIHRpbWVzLFxyXG4gICAgICAgICAgICAvLyAvLyBtYWludGFpbiBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sLlxyXG4gICAgICAgICAgICAvLyBpZiAoY29udHJvbCAhPT0gdGhpcy5fbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sICYmIGNvbnRyb2wuSGFzRXhwT3JQYXJlbnRUYXNrRmllbGQoKSkge1xyXG4gICAgICAgICAgICAvLyAgIC8vIFNob3cgZXJyb3Igb25seSBmb3IgY29udHJvbHMgaGF2aW5nIERhdGEgcHJvcGVydHkgYW5kIHBhcmthYmxlXHJcbiAgICAgICAgICAgIC8vICAgaWYoY29udHJvbC5pc0xpc3RCb3goKSB8fCBjb250cm9sLmlzQ2hlY2tCb3goKSB8fCBjb250cm9sLmlzQ29tYm9Cb3goKSB8fCBjb250cm9sLmlzVGV4dENvbnRyb2woKSB8fCBjb250cm9sLmlzUmFkaW8oKSB8fCBjb250cm9sLmlzVGFiQ29udHJvbCgpKSB7XHJcbiAgICAgICAgICAgIC8vICAgICBDb21tYW5kcy5tZXNzYWdlQm94KG51bGwsIFwiRXJyb3JcIiwgXCJDb250cm9sIGVpdGhlciBoYXMgZXhwcmVzc2lvbiBvciBoYXMgcGFyZW50IHRhc2sgdmFyaWFibGUgYXR0YWNoZWQgdG8gaXQuIEZhaWxlZCB0byBwYXJrIG9uIGNvbnRyb2wgd2l0aCBuYW1lOiBcIiArIGNvbnRyb2wuTmFtZSwgU3R5bGVzLk1TR0JPWF9JQ09OX0VSUk9SIHwgU3R5bGVzLk1TR0JPWF9CVVRUT05fT0spO1xyXG4gICAgICAgICAgICAvLyAgICAgLy8gRGVmZWN0IDE1MjcyODogVXNlIGxhc3QgZm9jdXNlZCB0YXNrIGluc3RlYWQgY29udHJvbCB0YXNrIGFzIGNvbnRyb2wgY2FuIGJlIGZyb20gc3ViZm9ybS5cclxuICAgICAgICAgICAgLy8gICAgIEZvY3VzTWFuYWdlci5TZXRGb2N1cyhMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0TGFzdEZvY3VzZWRUYXNrKCksIExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKSwgMCxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuZ2V0TGFzdEZvY3VzZWRDb250cm9sKCkgPT09IG51bGwgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5fbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sID0gY29udHJvbDtcclxuICAgICAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy9cclxuICAgICAgICAgICAgLy8gdGhpcy5fbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkZvY3VzKGNvbnRyb2wsIGxpbmVJZHgsIHRydWUsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImRibGNsaWNrXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkRibENsaWNrKGNvbnRyb2wsIGxpbmVJZHgpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwic2VsZWN0aW9uY2hhbmdlZFwiOlxyXG4gICAgICAgICAgICBFdmVudHMuT25TZWxlY3Rpb24oZ3VpRXZlbnQuVmFsdWUsIGNvbnRyb2wsIGxpbmVJZHgsIHRydWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJrZXlkb3duXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbktleURvd24oIHRhc2suZ2V0Rm9ybSgpLCBjb250cm9sLCBndWlFdmVudC5tb2RpZmllcnMsIGd1aUV2ZW50LmtleUNvZGUsIDAsMCwgJycsZmFsc2UsJycsdHJ1ZSApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJzZXRleHRlcm5hbHZhbHVlXCI6XHJcbiAgICAgICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuQWRkRXh0ZXJuYWxWYWx1ZUV2ZW50KCg8TWdDb250cm9sPmNvbnRyb2wpLCBndWlFdmVudC5leHRlcm5hbFZhbHVlLCBndWlFdmVudC5wYXJhbSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJ1bmhhbmRsZWQgZXZlbnQ6IFxcXCJcIiArIGd1aUV2ZW50LkV2ZW50VHlwZSArIFwiXFxcIlwiKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHN3aXRjaCAoZ3VpRXZlbnQuRXZlbnRUeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwiZm9jdXNPbk5vbk1hZ2ljQ29udHJvbFwiOlxyXG4gICAgICAgICAgICBjb250cm9sID0gTGFzdEZvY3VzZWRNYW5hZ2VyLmdldExhc3RGb2N1c2VkQ29udHJvbCgpO1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkZvY3VzT25Ob25NYWdpY0NvbnRyb2woY29udHJvbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiY2xpY2tcIjpcclxuICAgICAgICAgICAgaWYoZ3VpRXZlbnQuQ29udHJvbE5hbWUgPT09IFwibWFnaWNSb3dcIikge1xyXG4gICAgICAgICAgICAgIGR2Um93SWR4ID0gZ3VpRXZlbnQuTGluZSAtICg8RGF0YVZpZXc+dGFzay5EYXRhVmlldykuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoVGFza0FuZENvZGVBbmRMaW5lKHRhc2ssIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfUFJFRklYLCBkdlJvd0lkeCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiY2xvc2VcIjpcclxuICAgICAgICAgICAgaWYgKHRhc2suSXNSb3V0ZSgpKVxyXG4gICAgICAgICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuQWRkUm91dGVyQ2xvc2VkRXZlbnQodGFzayk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICBFdmVudHMuQ2xvc2VGb3JtRXZlbnQodGFzay5nZXRGb3JtKCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJkaXNwb3NlXCI6XHJcbiAgICAgICAgICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZGVsZXRlTUdEYXRhVHJlZSh0YXNrLmdldE1nZElEKCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJyZXNpemVcIjpcclxuICAgICAgICAgICAgRXZlbnRzLlRhYmxlUmVzaXplRXZlbnQodGFzay5nZXRGb3JtKCkuZ2V0VGFibGVDdHJsKCksIGd1aUV2ZW50LlBhZ2VTaXplKTtcclxuICAgICAgICAgIC8vY2FzZSAnYnJlYWsnIGlzIG1pc3NpbmcgZm9yICdyZXNpemUnIHdpdGggaW50ZW50aW9uIHRvIGV4ZWN1dGUgZ2V0Um93cyB3aXRoIHRoZSBkZXNpcmVkIGRhdGF2aWV3IHJvdyBpbmRleC5cclxuICAgICAgICAgIGNhc2UgXCJnZXRSb3dzXCI6XHJcbiAgICAgICAgICAgIGR2Um93SWR4ID0gbGluZUlkeCAtICg8RGF0YVZpZXc+dGFzay5EYXRhVmlldykuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgICAgICBsZXQgbGFzdEZvY3VzZWRWYWw6IExhc3RGb2N1c2VkVmFsID0ge2d1aU1nQ29udHJvbDogdGFzay5nZXRGb3JtKCkuZ2V0VGFibGVDdHJsKCksIExpbmU6IGR2Um93SWR4LCBWYWw6IFwiXCJ9O1xyXG4gICAgICAgICAgICBFdmVudHMuT25HZXRSb3dzRGF0YSh0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgZHZSb3dJZHgsIHRydWUsIGxhc3RGb2N1c2VkVmFsKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiUm91dGVyTmF2aWdhdGVcIjpcclxuICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRSb3V0ZUV2ZW50KHRhc2ssIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XRUJDTElFTlRfUk9VVEUsIGd1aUV2ZW50LlJvdXRlclBhdGgsIGd1aUV2ZW50LlJvdXRlck91dGxldE5hbWUsXHJcbiAgICAgICAgICAgICAgZ3VpRXZlbnQuUm91dGVyUGFyYW1zKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwic2V0ZXh0ZXJuYWx2YWx1ZVwiOlxyXG4gICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFcnJvclRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVW5hYmxlIHRvIGZpbmQgezB9OiBUcnlpbmcgdG8gc2V0IHZhbHVlIGZvciBhIG5vbi1leGlzdGluZyBjb250cm9sLlwiLCBndWlFdmVudC5Db250cm9sTmFtZSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCBcInVuaGFuZGxlZCBldmVudDogXFxcIlwiICsgZ3VpRXZlbnQuRXZlbnRUeXBlICsgXCJcXFwiXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgLy90YXNrID09IG51bGxcclxuICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuICAgICAgICBjYXNlIFwiY29uZmlybWF0aW9uQ2xvc2VkXCI6XHJcbiAgICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbkNsb3NlZChndWlFdmVudC5rZXlDb2RlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByYWlzZSBjYWxsYmFjayBvbiBjbG9zaW5nIGNvbmZpcm1hdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgQ29uZmlybWF0aW9uQ2xvc2VkKHJlczogbnVtYmVyKTogdm9pZFxyXG4gIHtcclxuICAgIENvbW1hbmRzLlJlc29sdmVQcm9taXNlKHJlcyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHRoZSB3b3JrIHRocmVhZCdzIGVudHJ5IG1ldGhvZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgV29ya1RocmVhZEV4ZWN1dGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuU2hvdWxkTG9nKCkpIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJcIiwgdHJ1ZSk7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiU3RhcnRlZCBvbiBcIiArIERhdGVUaW1lVXRpbHMuVG9TdHJpbmcoRGF0ZVRpbWUuTm93LCBYTUxDb25zdGFudHMuRVJST1JfTE9HX0RBVEVfRk9STUFULCBMb2dnZXIuSW5zdGFuY2UpLCB0cnVlKTtcclxuICAgICAgdGhpcy5Xcml0ZUV4ZWN1dGlvblByb3BlcnRpZXNUb0xvZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChhd2FpdCBDb21tYW5kc1Byb2Nlc3Nvck1hbmFnZXIuU3RhcnRTZXNzaW9uKCkpIHtcclxuICAgICAgICBsZXQgbWdEYXRhVGFiOiBNR0RhdGFDb2xsZWN0aW9uID0gTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZTtcclxuICAgICAgICBsZXQgc3RhcnR1cE1nRGF0YTogTUdEYXRhID0gbWdEYXRhVGFiLlN0YXJ0dXBNZ0RhdGE7XHJcbiAgICAgICAgbWdEYXRhVGFiLmN1cnJNZ2RJRCA9IHN0YXJ0dXBNZ0RhdGEuR2V0SWQoKTtcclxuXHJcbiAgICAgICAgbGV0IG5vbkludGVyYWN0aXZlVGFzazogVGFzayA9IG51bGw7XHJcbiAgICAgICAgaWYgKCFzdGFydHVwTWdEYXRhLklzQWJvcnRpbmcpXHJcbiAgICAgICAgICBub25JbnRlcmFjdGl2ZVRhc2sgPSBhd2FpdCBUYXNrLlN0YXJ0UHJvZ3JhbShmYWxzZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICBpZiAobm9uSW50ZXJhY3RpdmVUYXNrID09PSBudWxsKVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5FdmVudHNMb29wKHN0YXJ0dXBNZ0RhdGEpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGF3YWl0IEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuTm9uSW50ZXJhY3RpdmVFdmVudHNMb29wKHN0YXJ0dXBNZ0RhdGEsIG5vbkludGVyYWN0aXZlVGFzayk7XHJcblxyXG4gICAgICAgIC8vIHNldCB0aGUgXCJlbmQgb2Ygd29ya1wiIGZsYWcgb25seSBmb3IgdGhlIG1haW4gd2luZG93XHJcbiAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5zZXRFbmRPZldvcmsodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICBpZiAoZXggaW5zdGFuY2VvZiBBcHBsaWNhdGlvbkV4Y2VwdGlvbikge1xyXG4gICAgICAgIGxldCBpc05vUmVzdWx0RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBpZiAoZXggaW5zdGFuY2VvZiBTZXJ2ZXJFcnJvciAmJiAoPFNlcnZlckVycm9yPmV4KS5HZXRDb2RlKCkgPT09IFNlcnZlckVycm9yLklORl9OT19SRVNVTFQpXHJcbiAgICAgICAgICBpc05vUmVzdWx0RXJyb3IgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAoIWlzTm9SZXN1bHRFcnJvcilcclxuICAgICAgICAgIGF3YWl0IEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuUHJvY2Vzc0Fib3J0aW5nRXJyb3IoZXgpO1xyXG5cclxuICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLnNldEVuZE9mV29yayh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhyb3cgZXg7XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5DaGVja0FuZFNob3dTcGlubmVyKGZhbHNlKTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmFkZEdsb2JhbENvbW1hbmQoQ29tbWFuZFR5cGUuRVhJVF9NQUdJQyk7XHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFdyaXRlIEV4ZWN1dGlvbiBwcm9wZXJ0aWVzIHRvIGxvZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFdyaXRlRXhlY3V0aW9uUHJvcGVydGllc1RvTG9nKCk6IHZvaWQge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2dTZXJ2ZXJSZWxhdGVkTWVzc2FnZXMoKSkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIsIHRydWUpO1xyXG4gICAgICAvLyBXcml0ZSBoZWFkaW5nXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiRXhlY3V0aW9uIFByb3BlcnRpZXM6XCIsIHRydWUpO1xyXG5cclxuICAgICAgbGV0IHByb3BzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2cocHJvcHNTdHJpbmcsIHRydWUpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5Jbml0KFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLlJDX05PX0NPTlRFWFRfSUQpO1xyXG4gICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkluaXQoTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZSk7XHJcbiAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuTGFzdEFjdGlvblRpbWUgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG5cclxuXHJcbiAgICBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5TaG91bGRTY3JhbWJsZUFuZFVuc2NyYW1ibGVNZXNzYWdlcyA9IHRydWU7XHJcblxyXG5cclxuICAgIC8vIFRPRE86IEhvdyB0byBnZXQgUHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLklkP1xyXG4gICAgdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkID0gVW5pcXVlSURVdGlscy5HZXRVbmlxdWVNYWNoaW5lSUQoKSArIFwiX1wiOyAvLyArIFByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKS5JZDtcclxuXHJcbiAgICB0aGlzLlJlZ2lzdGVyRGVsZWdhdGVzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEluaXRpYWxpemUgdGhlIGRhdGEgbmVlZGVkIGJ5IHRoZSBndWkgbGlicmFyeVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBDbGllbnRNYW5hZ2VyIGluc3RhbmNlPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgSW5pdEd1aU1hbmFnZXIoKTogdm9pZCB7XHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIgPSBFdmVudHNNYW5hZ2VyLkluc3RhbmNlO1xyXG4gICAgTWFuYWdlci5EZWZhdWx0U2VydmVyTmFtZSA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRTZXJ2ZXIoKTtcclxuICAgIE1hbmFnZXIuRGVmYXVsdFByb3RvY29sID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFByb3RvY29sKCk7XHJcbiAgICBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gICAgR3VpRGF0YUNvbGxlY3Rpb24uTUdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLm5vQ29udGV4dElkID0gUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuUkNfTk9fQ09OVEVYVF9JRDtcclxuICB9XHJcblxyXG4gIC8vLyBJbml0aWFsaXplIGdsb2JhbCBkYXRhIGluIG9iamVjdHMgdXNlZCB0byBvdmVyY29tZSB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpc3N1ZVxyXG4gIHByaXZhdGUgSW5pdENpcmN1bGFyUmVmZXJlbmNlc0J5cGFzc2VzKCkge1xyXG4gICAgVGFza3NUYWJsZS5jcmVhdGVOZXd0YXNrID0gVGFzay5DcmVhdGVUYXNrO1xyXG4gICAgT3BlblVSTENvbW1hbmQuY3JlYXRlTmV3Q29tbWFuZHNUYWJsZSA9IENvbW1hbmRzVGFibGUuY3JlYXRlQ29tbWFuZHNUYWJsZTtcclxuXHJcbiAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlciA9IEV2ZW50c01hbmFnZXIuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmVudlBhcmFtc1RhYmxlID0gRW52UGFyYW1zVGFibGUuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIuZ2xvYmFsUGFyYW1zID0gR2xvYmFsUGFyYW1zLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmxhbmd1YWdlRGF0YSA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBFbnRyeSBwb2ludCB0byB0aGUgV2ViIENsaWVudCA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJnc1wiPmFycmF5IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHM8L3BhcmFtPlxyXG4gIHN0YXRpYyBNYWluKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpOiB2b2lkIHtcclxuICAgIC8vIFRPRE8gOiBDaGVjayBob3cgdG8gbG9hZCBmcm9tIFN0dWRpbyBpLmUuIEY3XHJcbiAgICAvLyBpZiAoYXJncy5sZW5ndGggIT09IDAgJiYgTlN0cmluZy5TdGFydHNXaXRoKGFyZ3NbMF0sIFwiL3NwYXduYWhlYWRcIikpIHtcclxuICAgIC8vICAgQ2xpZW50TWFuYWdlci5fc3RhcnRlZEZyb21TdHVkaW8gPSB0cnVlO1xyXG4gICAgLy8gICBTdHVkaW9MYXVuY2hlci5Jbml0KGFyZ3MpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZVxyXG4gICAgQ2xpZW50TWFuYWdlci5TdGFydEV4ZWN1dGlvbihodHRwQ2xpZW50KTtcclxuXHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuRmx1c2goKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGVybWluYXRlIHRoZSBjbGllbnQgYW5kIHRlcm1pbmF0ZSB0aGUgY29udGV4dCA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGFzeW5jIFN0b3BFeGVjdXRpb24oKTogUHJvbWlzZSA8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5Jc0Fib3J0aW5nTWFnaWNFbmdpbmUgPSB0cnVlO1xyXG4gICAgICBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuQ2xvc2luZ0Zvcm1VSSA9IHRydWU7XHJcblxyXG4gICAgICBhd2FpdCBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuZW5kVGFzayh0cnVlLCBmYWxzZSxcclxuICAgICAgICBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgzKSB7XHJcbiAgICAgIGlmIChleDMgaW5zdGFuY2VvZiBBcHBsaWNhdGlvbkV4Y2VwdGlvbikge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nKGV4Myk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRocm93IGV4MztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBTdGFydEV4ZWN1dGlvbihodHRwQ2xpZW50Okh0dHBDbGllbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIEh0dHBNYW5hZ2VyLnNldE5hdGl2ZUh0dHBDbGllbnQoaHR0cENsaWVudCk7XHJcbiAgICBsZXQgbG9hZGVkOiBib29sZWFuID0gYXdhaXQgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Mb2FkRXhlY3V0aW9uUHJvcHMoKTtcclxuXHJcbiAgICBpZiAobG9hZGVkKSB7XHJcbiAgICAgIENsaWVudE1hbmFnZXIuSW5zdGFuY2UuX2d1aUV2ZW50c1Byb2Nlc3NvciA9IG5ldyBHdWlFdmVudHNQcm9jZXNzb3IoKTtcclxuICAgICAgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Jbml0R3VpTWFuYWdlcigpO1xyXG4gICAgICBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLkluaXRDaXJjdWxhclJlZmVyZW5jZXNCeXBhc3NlcygpO1xyXG4gICAgICBsZXQgdmVyc2lvblN0cmluZyA9IEN1cnJlbnRDbGllbnRWZXJzaW9uID09PSAgJzAuMC4wLjAnID8gXCJEZXZlbG9wbWVudCBtb2RlXCIgOiBcIlZlcnNpb24gOiBcIiArIEN1cnJlbnRDbGllbnRWZXJzaW9uIDtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiTWFnaWMgV2ViIENsaWVudC4gXCIgKyB2ZXJzaW9uU3RyaW5nKTtcclxuXHJcbiAgICAgIEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuSHR0cENvbW11bmljYXRpb25UaW1lb3V0TVMgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuR2V0Rmlyc3RIdHRwUmVxdWVzdFRpbWVvdXQoKTtcclxuXHJcbiAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuSW5pdCgpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLkluaXRpYWxpemUoUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5wYXJzZUxvZ0xldmVsKFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRJbnRlcm5hbExvZ0xldmVsKCkpLGZhbHNlKTtcclxuXHJcbiAgICAgIGxldCBtZ2Q6IE1HRGF0YSA9IG5ldyBNR0RhdGEoXHJcbiAgICAgICAgbmV3IENvbW1hbmRzVGFibGUoKSxcclxuICAgICAgICBuZXcgQ29tbWFuZHNUYWJsZSgpLFxyXG4gICAgICAgIDAsIG51bGwsIGZhbHNlKTtcclxuICAgICAgYXdhaXQgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5hZGRNR0RhdGEobWdkLCAwLCB0cnVlKTtcclxuXHJcbiAgICAgIGF3YWl0IENsaWVudE1hbmFnZXIuSW5zdGFuY2UuV29ya1RocmVhZEV4ZWN1dGlvbigpO1xyXG5cclxuICAgICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2coKSkge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKE9TRW52aXJvbm1lbnQuRW9sU2VxICsgXCJFbmRlZCBvbiBcIiArIERhdGVUaW1lVXRpbHMuVG9TdHJpbmcoRGF0ZVRpbWUuTm93LCBcImRkL01NL3l5eXlcIiwgTG9nZ2VyLkluc3RhbmNlKSArIE9TRW52aXJvbm1lbnQuRW9sU2VxICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEsIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG4gICAgICBhd2FpdCBHVUlNYW5hZ2VyLkluc3RhbmNlLk1lc3NhZ2VCb3goXCJFcnJvclwiLCBcIkZhaWxlZCB0byBsb2FkIHNlcnZlciBjb25maWd1cmF0aW9uIGZpbGUgKFwiICsgdGhpcy5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lICsgXCIpXCIsIFN0eWxlcy5NU0dCT1hfSUNPTl9FUlJPUiB8IFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gTG9hZHMgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyLFxyXG4gIC8vLyBhcHBsaWNhdGlvbiBhbmQgcHJvZ3JhbSB0byBleGVjdXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBMb2FkRXhlY3V0aW9uUHJvcHMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cclxuICAgIGxldCByZXNwb25zZTogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBzdWNjZWVkZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIGlzRXJyb3IgY2Fubm90IGJlIHRydWUgaGVyZSwgYmVjYXVzZSBpdCBpcyByZXR1cm5lZCBieSBydW50aW1lIGVuZ2luZSBhbmQgdG8gcmVhZCBleGVjdXRpb24gcHJvcGVydGllcywgd2UgZG8gbm90IHJlYWNoIHRoZSBlbmdpbmUuXHJcbiAgICAgIGxldCBpc0Vycm9yOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbShmYWxzZSk7XHJcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5HZXRDb250ZW50KENsaWVudE1hbmFnZXIuX2V4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZSwgbnVsbCwgZmFsc2UsIGlzRXJyb3IpO1xyXG4gICAgICBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuSW5pdChKU09OLnBhcnNlKHJlc3BvbnNlKSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgc3VjY2VlZGVkID0gZmFsc2U7XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSB3cml0ZSB0aGUgZXJyb3IgbWVzc2FnZSB0byBsb2c/XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGJyb3dzZXI/XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN1Y2NlZWRlZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIGEgY29weSBvZiB0aGUgY3VycmVudCBleGVjdXRpb24gcHJvcGVydGllc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmEgY29weSBvZiB0aGUgY3VycmVudCBleGVjdXRpb24gcHJvcGVydGllczwvcmV0dXJucz5cclxuICBjb3B5RXhlY3V0aW9uUHJvcHMoKTogSVNlcnZlckNvbmZpZyB7XHJcbiAgICAvL3JldHVybiB0aGlzLl9leGVjdXRpb25Qcm9wcy5DbG9uZSgpO1xyXG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcImNvcHlFeGVjdXRpb25Qcm9wcyBub3QgaW1wbGVtZW50ZWRcIik7XHJcbiAgfVxyXG5cclxuICBnZXREZWJ1Z0NsaWVudCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlYnVnQ2xpZW50O1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR0VUIFVSTCB2YWx1ZSBvZiB0aGUgZXhlY3V0aW9uIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldFVSTEZyb21FeGVjdXRpb25Qcm9wZXJ0aWVzKGV4ZWN1dGlvblByb3BOYW1lOiBzdHJpbmcpOiBVUkwge1xyXG4gICAgbGV0IHVybDogVVJMID0gbnVsbDtcclxuICAgIGxldCB1cmxTdHI6IHN0cmluZyA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5HZXRFeGVjdXRpb25Qcm9wZXJ0eVtleGVjdXRpb25Qcm9wTmFtZV07XHJcblxyXG4gICAgaWYgKHVybFN0ciAhPT0gbnVsbCAmJiB0eXBlb2YgdXJsU3RyICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIC8vIGlmIHJlbGF0aXZlLCBwcmVmaXggd2l0aCB0aGUgJ3Byb3RvY29sOi8vc2VydmVyLycgZnJvbSB3aGljaCB0aGUgcmljaC1jbGllbnQgd2FzIGFjdGl2YXRlZFxyXG4gICAgICBpZiAodXJsU3RyLnN0YXJ0c1dpdGgoXCIvXCIpKVxyXG4gICAgICAgIHVybFN0ciA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRQcm90b2NvbCgpICsgXCI6Ly9cIiArIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRTZXJ2ZXIoKSArIHVybFN0cjtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdXJsID0gbmV3IFVSTCh1cmxTdHIpO1xyXG4gICAgICAgIERlYnVnLkFzc2VydCh1cmwucHJvdG9jb2wgPT09IFwiaHR0cDpcIiB8fCB1cmwucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nKGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG5cclxuICBnZXRMb2dvbldpbmRvd0ljb25VUkwoKTogVVJMIHtcclxuICAgIHJldHVybiB0aGlzLmdldFVSTEZyb21FeGVjdXRpb25Qcm9wZXJ0aWVzKEd1aUNvbnN0YW50cy5TVFJfTE9HT19XSU5fSUNPTl9VUkwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9nb25XaW5kb3dJbWFnZVVSTCgpOiBVUkwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VVJMRnJvbUV4ZWN1dGlvblByb3BlcnRpZXMoR3VpQ29uc3RhbnRzLlNUUl9MT0dPTl9JTUFHRV9VUkwpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gdHJ1ZSBpZiBkZWxheSBpcyBpbiBwcm9ncmVzczwvc3VtbWFyeT5cclxuICBpc0RlbGF5SW5Qcm9ncmVzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxheUluUHJvZ3Jlc3M7XHJcbiAgfVxyXG5cclxuICBzZXREZWxheUluUHJvZ3Jlc3MoZGVsYXlJblByb2dyZXNzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZWxheUluUHJvZ3Jlc3MgPSBkZWxheUluUHJvZ3Jlc3M7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmdsb2JhbCB1bmlxdWUgSUQgb2YgdGhlIHNlc3Npb24gPSAnbWFjaGluZSB1bmlxdWUgSUQnICsgJ3Byb2Nlc3MgSUQnPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnJldHVybiB0aGUgYWJzb2x1dGUgZmlsZSBuYW1lIG9mIHRoZSBleGVjdXRpb24gcHJvcGVydGllcyBmaWxlIGJlaW5nIHVzZWQgYnkgdGhlIGNsaWVudDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGdldEV4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBsYXN0UGF0aFNlcGFyYXRvcjogbnVtYmVyID0gZnVsbHlRdWFsaWZpZWROYW1lLmxhc3RJbmRleE9mKCdcXFxcJyk7XHJcbiAgICByZXR1cm4gTlN0cmluZy5SZW1vdmUoZnVsbHlRdWFsaWZpZWROYW1lLCBsYXN0UGF0aFNlcGFyYXRvciArIDEsIGZ1bGx5UXVhbGlmaWVkTmFtZS5sZW5ndGggLSBsYXN0UGF0aFNlcGFyYXRvciAtIDEpICsgQ29uc3RJbnRlcmZhY2UuRVhFQ1VUSU9OX1BST1BFUlRJRVNfRklMRV9OQU1FO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgY29udHJvbCdzIHBpY3R1cmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljICBHZXRDb250cm9sUGljdHVyZU1hc2sodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBQSUNcclxuICB7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbCkge1xyXG4gICAgICBjb250cm9sID0gdGFzay5nZXRGb3JtKCkuR2V0Q3RybChjb250cm9sTmFtZSk7XHJcbiAgICAgIHBpYyA9IGNvbnRyb2wuZ2V0UElDKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBpYztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgZm9ybWF0dGVkIHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyAgR2V0Rm9ybWF0dGVkVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gICAgbGV0IG5ld1ZhbHVlOiBhbnkgPSB2YWx1ZTtcclxuXHJcbiAgICBpZiAoY29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICAgIGNvbnRyb2wgPSB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKTtcclxuICAgIGlmIChjb250cm9sICE9IG51bGwgJiYgY29udHJvbC5EYXRhVHlwZSA9PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMpIHtcclxuICAgICAgcGljID0gY29udHJvbC5nZXRQSUMoKTtcclxuXHJcbiAgICAgIGxldCBkaXNwVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xyXG4gICAgICBsZXQgIG5ld1BpYyA9IHBpYy5nZXRVbmZvcm1hdHRlZE51bWVyaWNQaWMoKTtcclxuXHJcbiAgICAgIGxldCBudW0gPSBEaXNwbGF5Q29udmVydG9yLkluc3RhbmNlLnRvTnVtKGRpc3BWYWx1ZSwgbmV3UGljLCAwKTtcclxuICAgICAgbmV3VmFsdWUgPSBEaXNwbGF5Q29udmVydG9yLkluc3RhbmNlLmZyb21OdW0obnVtLCBwaWMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1ZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCByYW5nZWQgdmFsdWUgZm9yIGlucHV0IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgIEdldFJhbmdlZFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgIHtcclxuICAgICAgY29udHJvbCA9ICB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKTtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wuZ2V0UmFuZ2VkVmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdmFsaWRhdGUgdXNlciBpbnB1dCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljICBWYWxpZGF0ZUNvbnRyb2xWYWx1ZSh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZ1xyXG4gIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRCh0YXNrSWQpO1xyXG5cclxuICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgIHtcclxuICAgICAgY29udHJvbCA9ICB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKSBhcyBNZ0NvbnRyb2w7XHJcbiAgICAgIHJldHVybiBjb250cm9sLnZhbGlkYXRlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCBmbGQgcmFuZ2VzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgR2V0RmxkUmFuZ2VzKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRCh0YXNrSWQpO1xyXG5cclxuICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgIHtcclxuICAgICAgY29udHJvbCA9ICB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKSBhcyBNZ0NvbnRyb2w7XHJcbiAgICAgIHJldHVybiBjb250cm9sLmdldFJhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmV0dXJucyB3aGV0aGVyIGNsaWVudC9zZXJ2ZXIgY2FjaGUgZXhpc3RzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgVHJhbnNDYWNoZUV4aXN0cygpOiBib29sZWFuIHtcclxuICAgIGxldCBjbGllbnRUcmFuc0NhY2hlRXhpc3RzOiBib29sZWFuID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKS5jbGllbnRUcmFuc2FjdGlvbkNhY2hlRXhpc3RzKCk7XHJcbiAgICBsZXQgc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0czogYm9vbGVhbiA9IEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRDdXJyTUdEYXRhKCkuc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0cygpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnRUcmFuc0NhY2hlRXhpc3RzIHx8IHNlcnZlclRyYW5zYWN0aW9uQ2FjaGVFeGlzdHM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFN1YnNjcmliZSBmb3IgZXZlbnRzIGRlZmluZWQgYXQgSHR0cENsaWVudEV2ZW50cyBhbmRcclxuICAvLy8gYXR0YWNoIGFwcHJvcHJpYXRlIGV2ZW50IGhhbmRsZXJzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFJlZ2lzdGVyRGVsZWdhdGVzKCk6IHZvaWQge1xyXG4gICAgSHR0cENsaWVudEV2ZW50cy5HZXRFeGVjdXRpb25Qcm9wZXJ0eV9FdmVudCA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5HZXRFeGVjdXRpb25Qcm9wZXJ0eS5iaW5kKFNlcnZlckNvbmZpZy5JbnN0YW5jZSk7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldFJ1bnRpbWVDdHhJRF9FdmVudCA9IHRoaXMuR2V0UnVudGltZUN0eElELmJpbmQodGhpcyk7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldEdsb2JhbFVuaXF1ZVNlc3Npb25JRF9FdmVudCA9IHRoaXMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklELmJpbmQodGhpcyk7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLlNob3VsZERpc3BsYXlHZW5lcmljRXJyb3JfRXZlbnQgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvci5iaW5kKFNlcnZlckNvbmZpZy5JbnN0YW5jZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHJpZXZlcyBydW50aW1lIGNvbnRleHQgSURcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0UnVudGltZUN0eElEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gUnVudGltZUNvbnRleHRCYXNlLkluc3RhbmNlLkNvbnRleHRJRDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2VuZCBhIHJlcXVlc3QgdG8gc2VydmVyIHRvIHRlcm1pbmF0ZSB0aGUgY29udGV4dCB1c2luZyBmZXRjaCBBUEkgd2l0aCBrZWVwLWFsaXZlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgVGVybWluYXRlQ29udGV4dFVzaW5nRmV0Y2hBUEkoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gSWYgU2Vzc2lvbiBpcyByZS1pbml0aWFsaXppbmcgbWVhbnMgdGhlIGNvbnRleHQgaXMgbm90IGZvdW5kIGF0IHNlcnZlci5cclxuICAgIC8vIHRoZW4gdGhlcmUgaXMgbm8gcG9pbnQgaW4gdGVybWluYXRpbmcgY29udGV4dC5cclxuICAgIGlmIChSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5Jc1Nlc3Npb25SZUluaXRpYWxpemluZylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5Jc0Fib3J0aW5nTWFnaWNFbmdpbmUgPSB0cnVlO1xyXG5cclxuICAgIC8vIER1ZSB0byBwYXlsb2FkIGxpbWl0IG9mIGZldGNoIEFQSSwgc2VuZCBvbmx5IHRoZSBjb250ZXh0IHRlcm1pbmF0aW9uIGNvbW1hbmQgdG8gc2VydmVyXHJcbiAgICBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLmdldEN1cnJNR0RhdGEoKS5DbWRzVG9TZXJ2ZXIuQ2xlYXIoKTtcclxuXHJcbiAgICBsZXQgY29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kOiBDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQgPSBDb21tYW5kRmFjdG9yeS5cclxuICAgIENyZWF0ZUNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZChNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuZ2V0VGFza1RhZygpKTtcclxuXHJcbiAgICBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLmdldEN1cnJNR0RhdGEoKS5DbWRzVG9TZXJ2ZXIuQWRkKDxJQ2xpZW50Q29tbWFuZD5jb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQpO1xyXG5cclxuICAgIC8vIHJlc3BvbnNlIG5lZWQgbm90IHRvIGJlIGhhbmRsZWQgYXMgdGhlIGJyb3dzZXIgdW5sb2FkIGNhbm5vdCBiZSBzdG9wcGVkLCBzbyBubyBuZWVkIHRvIHdhaXRcclxuICAgIFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLkdldEluc3RhbmNlKCkuRXhlY3V0ZShDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9uLk9OTFlfQ09NTUFORFMpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export let CurrentClientVersion = '4.801.0-dev481.231';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VycmVudENsaWVudFZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL0N1cnJlbnRDbGllbnRWZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGxldCBDdXJyZW50Q2xpZW50VmVyc2lvbiA9ICc0LjgwMS4wLWRldjQ4MS4yMzEnOyJdfQ==
1
+ export let CurrentClientVersion = '4.801.0-dev481.235';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VycmVudENsaWVudFZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL0N1cnJlbnRDbGllbnRWZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGxldCBDdXJyZW50Q2xpZW50VmVyc2lvbiA9ICc0LjgwMS4wLWRldjQ4MS4yMzUnOyJdfQ==
@@ -33,7 +33,7 @@ export class GUIManager {
33
33
  abort_0(form) {
34
34
  if (form !== null) {
35
35
  let mainProgByCtlIdx = AccessHelper.mgDataTable.GetMainProgByCtlIdx(-1, form.getTask().getCtlIdx());
36
- Manager.Abort(form, mainProgByCtlIdx);
36
+ Manager.Abort(form);
37
37
  }
38
38
  }
39
39
  abort_1() {
@@ -69,4 +69,4 @@ export class GUIManager {
69
69
  }
70
70
  }
71
71
  GUIManager._instance = null;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR1VJTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvR1VJTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFhLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzlDLE1BQU0sT0FBTyxVQUFVO0lBS3JCLE1BQU0sS0FBSyxRQUFRO1FBQ2pCLElBQUksVUFBVSxDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQy9CLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMxQyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQU1ELG1CQUFtQjtRQUNqQixRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQVFELFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLFdBQW9CO1FBQzlELElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtZQUVmLElBQUksVUFBVSxHQUFZLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFckIsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQVFELFNBQVMsQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLFdBQW9CO1FBQzdELElBQUksT0FBTyxHQUFHLENBQUM7WUFFYixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFJRCxLQUFLLENBQUMsSUFBYTtRQUNqQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUVuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQU1PLE9BQU8sQ0FBQyxJQUFZO1FBQzFCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLGdCQUFnQixHQUFlLFlBQVksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDaEgsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFLTyxPQUFPO1FBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0QsTUFBTSxJQUFJLEdBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZFLElBQUcsSUFBSSxLQUFLLElBQUk7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBU0ssVUFBVSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsS0FBYTs7WUFFeEQsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTVELE9BQU8sTUFBTSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztLQUFBO0lBU0ssaUJBQWlCLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxLQUFhOztZQUNuRSxJQUFJLEtBQUssR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuRSxJQUFJLEdBQUcsR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUvRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xELENBQUM7S0FBQTtJQVNLLE9BQU8sQ0FBQyxLQUFhLEVBQUUsS0FBYzs7WUFFekMsT0FBTyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNGLENBQUM7S0FBQTtJQVFZLFlBQVksQ0FBQyxLQUFhOztZQUNyQyxJQUFJLFNBQVMsR0FBVyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2xGLE9BQU8sU0FBUyxJQUFZLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUN0RCxDQUFDO0tBQUE7O0FBOUhjLG9CQUFTLEdBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIGltcG9ydCB7IE5TdHJpbmcgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IE1zZ0ludGVyZmFjZSB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBDb21tYW5kcywgTWFuYWdlciwgTWdDdXJzb3JzLCBTdHlsZXMgfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7IE1HRGF0YSB9IGZyb20gJy4vdGFza3MvTUdEYXRhJztcclxuaW1wb3J0IHsgUkNUaW1lciB9IGZyb20gJy4vdGFza3MvUkNUaW1lcic7XHJcbmltcG9ydCB7IE1nRm9ybSB9IGZyb20gJy4vZ3VpL01nRm9ybSc7XHJcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQgeyBMYW5ndWFnZURhdGEgfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQgeyBBY2Nlc3NIZWxwZXIgfSBmcm9tICcuL0FjY2Vzc0hlbHBlcic7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyA8L3N1bW1hcnk+XHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBHVUlNYW5hZ2VyIHtcclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEdVSU1hbmFnZXIgPSBudWxsOyAvLyB0aGUgc2luZ2xlIGluc3RhbmNlIG9mIHRoZSBHVUlNYW5hZ2VyXHJcblxyXG4gIC8vLyAgIHNpbmdsZXRvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBHVUlNYW5hZ2VyIHtcclxuICAgIGlmIChHVUlNYW5hZ2VyLl9pbnN0YW5jZSA9PT0gbnVsbClcclxuICAgICAgR1VJTWFuYWdlci5faW5zdGFuY2UgPSBuZXcgR1VJTWFuYWdlcigpO1xyXG4gICAgcmV0dXJuIEdVSU1hbmFnZXIuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlIHRoZSBjb21tYW5kcyBpbiB0aGUgcXVldWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGV4ZWNHdWlDb21tYW5kUXVldWUoKTogdm9pZCB7XHJcbiAgICBDb21tYW5kcy5iZWdpbkludm9rZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHN0YXJ0IGEgdGltZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWdkXCI+IE1nRGF0YSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2Vjb25kc1wiPmludGVydmFsIGluIGZ1bGwgc2Vjb25kcyB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIChmcm9tIGN1cnJlbnQgdGltZSk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXNJZGxlVGltZXJcIj50cnVlIGlmIHRoaXMgdGltZXIgaXMgdGhlIGlkbGUgdGltZXI8L3BhcmFtPlxyXG4gIHN0YXJ0VGltZXIobWdEYXRhOiBNR0RhdGEsIHNlY29uZHM6IG51bWJlciwgaXNJZGxlVGltZXI6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChzZWNvbmRzID4gMCkge1xyXG4gICAgICAvLyBSQ1RpbWVyL01nVGltZXIgd29ya3Mgb24gbWlsbGlzZWNvbmRzIHNvIGNvbnZlcnQgc2Vjb25kcyB0byBtaWxsaXNlY29uZHNcclxuICAgICAgbGV0IG9ialJDVGltZXI6IFJDVGltZXIgPSBuZXcgUkNUaW1lcihtZ0RhdGEsIHNlY29uZHMgKiAxMDAwLCBpc0lkbGVUaW1lcik7XHJcbiAgICAgIChvYmpSQ1RpbWVyKS5TdGFydCgpO1xyXG4gICAgICAvLyBmaXhlZCBidWcgMjg0NTY2LCB3aGlsZSB3ZSBoYXZlIGNvbW1hbmQgaW4gaGUgcXVldWUsIGV4ZWN1dGUgdGhlbVxyXG4gICAgICBDb21tYW5kcy5iZWdpbkludm9rZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHN0b3AgdGhlIHRpbWVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIk1nRGF0YVwiPiBNZ0RhdGE8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2Vjb25kc1wiPmludGVydmFsIGluIGZ1bGwgc2Vjb25kcyB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIChmcm9tIGN1cnJlbnQgdGltZSk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXNJZGxlVGltZXJcIj50cnVlIGlmIHRoaXMgdGltZXIgaXMgdGhlIGlkbGUgdGltZXI8L3BhcmFtPlxyXG4gIHN0b3BUaW1lcihtZ0RhdGE6IE1HRGF0YSwgc2Vjb25kczogbnVtYmVyLCBpc0lkbGVUaW1lcjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHNlY29uZHMgPiAwKVxyXG4gICAgLy8gUkNUaW1lci9NZ1RpbWVyIHdvcmtzIG9uIG1pbGxpc2Vjb25kcyBzbyBjb252ZXJ0IHNlY29uZHMgdG8gbWlsbGlzZWNvbmRzXHJcbiAgICAgIFJDVGltZXIuU3RvcFRpbWVyKG1nRGF0YSwgc2Vjb25kcyAqIDEwMDAsIGlzSWRsZVRpbWVyKTtcclxuICB9XHJcblxyXG4gIGFib3J0KGZvcm06IE1nRm9ybSk6IHZvaWQ7XHJcbiAgYWJvcnQoKTogdm9pZDtcclxuICBhYm9ydChmb3JtPzogTWdGb3JtKTogdm9pZCB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgdGhpcy5hYm9ydF8wKGZvcm0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmFib3J0XzEoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIGNsb3NlIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvcm1cIj4gPC9wYXJhbT5cclxuICBwcml2YXRlIGFib3J0XzAoZm9ybTogTWdGb3JtKTogdm9pZCB7XHJcbiAgICBpZiAoZm9ybSAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgbWFpblByb2dCeUN0bElkeDogVGFzayA9IDxUYXNrPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRNYWluUHJvZ0J5Q3RsSWR4KC0xLCBmb3JtLmdldFRhc2soKS5nZXRDdGxJZHgoKSk7XHJcbiAgICAgIE1hbmFnZXIuQWJvcnQoZm9ybSwgbWFpblByb2dCeUN0bElkeCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcHJvY2VzcyBBQk9SVCBjb21tYW5kLkNsb3NlIGFsbCBzaGVsbHMuIExhc3Qgc2hlbGwgY2xvc2VkLCB3aWxsIGNsb3NlIHRoZSBkaXNwbGF5LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhYm9ydF8xKCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRTaXplKCk7IGkgPiAwOyBpLS0pIHtcclxuICAgICAgY29uc3QgdGFzayA9ICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0TUdEYXRhKGkgLSAxKS5nZXRGaXJzdFRhc2soKTtcclxuICAgICAgaWYodGFzayAhPT0gbnVsbClcclxuICAgICAgICB0aGlzLmFib3J0KDxNZ0Zvcm0+dGFzay5Gb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBPcGVuIG1lc3NhZ2UgYm94IHdpdGggdGl0bGUgc3RyaW5nIGFuZCBtZXNzYWdlIHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0aXRsZVwiPnRpdGxlIG9mIHRoZSBtZXNzYWdlIGJveDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dcIj5tZXNzYWdlIGZvciB0aGUgbWVzc2FnZSBib3g8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj50aGUgc3R5bGUgb2YgdGhlIG1lc3NhZ2UgYm94IC0tLSBidXR0b25zLCBpY29uPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBidXR0b24gY2xpY2tlZCA8L3JldHVybnM+XHJcbiAgYXN5bmMgTWVzc2FnZUJveCh0aXRsZTogc3RyaW5nLCBtc2c6IHN0cmluZywgc3R5bGU6IG51bWJlcikgOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgLy8gU3RvcCB0aGUgc3Bpbm5lciBiZWZvcmUgc2hvd2luZyB0aGUgbWVzYWdlIGJveFxyXG4gICAgYXdhaXQgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuQ2hlY2tBbmRTaG93U3Bpbm5lcihmYWxzZSk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IENvbW1hbmRzLm1lc3NhZ2VCb3godGl0bGUsIG1zZywgc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE9wZW4gbWVzc2FnZSBib3ggd2l0aCB0aXRsZSBpZCBhbmQgbWVzc2FnZSBpZCB0aGF0IHdpbGwgdGFrZSBmcm9tIE1HQkNMKkVORy54bWwgKGNyZWF0ZWQgYnkgbWdjb25zdClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGl0bGVJZFwiPm1lc3NhZ2UgZnJvbSBmcm9tIE1HQkNMKkVORy54bWw8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5tZXNzYWdlIGZyb20gZnJvbSBNR0JDTCpFTkcueG1sPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0eWxlXCI+dGhlIHN0eWxlIG9mIHRoZSBtZXNzYWdlIGJveCBjYW4gYmUgZmxhZ3Mgb2YgU3R5bGVzLk1TR0JPWF94eHggPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG1lc3NhZ2UgYm94IHN0eWxlIGZyb20gU3R5bGVzLk1TR0JPWF9YWFg8L3JldHVybnM+XHJcbiAgYXN5bmMgd3JpdGVUb01lc3NhZ2VCb3godGl0bGVJZDogc3RyaW5nLCBtc2dJZDogc3RyaW5nLCBzdHlsZTogbnVtYmVyKTpQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgbGV0IHRpdGxlOiBzdHJpbmcgPSBMYW5ndWFnZURhdGEuSW5zdGFuY2UuZ2V0Q29uc3RNZXNzYWdlKHRpdGxlSWQpO1xyXG4gICAgbGV0IG1zZzogc3RyaW5nID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlLmdldENvbnN0TWVzc2FnZShtc2dJZCk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuTWVzc2FnZUJveCh0aXRsZSwgbXNnLCBzdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZGlzcGxheSBhIE1lc3NhZ2UgQm94IChjb25maXJtKSB3aXRoIDIgYnV0dG9ucyAuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ0lkXCI+bWVzc2FnZSBudW1iZXIgKGZyb20gTXNnSW50ZXJmYWNlLmphdmEpIHRoYXQgd2lsbCBiZSBkaXNwbGF5IG9uIHRoZSBjb250ZW50IG9mIHRoZSBNZXNzYWdlIEJveCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj50aGUgaWNvbiBhbmQgdGhlIGJ1dHRvbiB0aGF0IHdpbGwgYmUgZGlzcGxheSBvbiB0aGUgY29uZmlybWF0aW9uIGJveCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGJ1dHRvbiB0aGF0IHdhcyBwcmVzc2VkIChTdHlsZXMuTVNHQk9YX0JVVFRPTl94eHgpIDwvcmV0dXJucz5cclxuICBhc3luYyBjb25maXJtKG1zZ0lkOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj47XHJcbiAgYXN5bmMgY29uZmlybShtc2dJZDogc3RyaW5nLCBzdHlsZT86IG51bWJlcik6IFByb21pc2U8YW55PiB7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMud3JpdGVUb01lc3NhZ2VCb3goTXNnSW50ZXJmYWNlLkNPTkZJUk1fU1RSX1dJTkRPV19USVRMRSwgbXNnSWQsIHN0eWxlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBkaXNwbGF5IGEgTWVzc2FnZSBCb3ggKGNvbmZpcm0pIHdpdGggMiBidXR0b25zIDogeWVzICYgbm8gYW5kIGljb24gcXVlc3Rpb24uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ0lkXCI+bWVzc2FnZSBudW1iZXIgKGZyb20gTXNnSW50ZXJmYWNlLmphdmEpIHRoYXQgd2lsbCBiZSBkaXNwbGF5IG9uIHRoZSBjb250ZW50IG9mIHRoZSBNZXNzYWdlIEJveFxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHRoZSBidXR0b24gWUVTIHdhcyBwcmVzc2VkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgcHVibGljIGFzeW5jIGNvbmZpcm1fYm9vbChtc2dJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgcmV0UmVzdWx0OiBudW1iZXIgPSBhd2FpdCB0aGlzLmNvbmZpcm0obXNnSWQsIFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LX0NBTkNFTCk7XHJcbiAgICByZXR1cm4gcmV0UmVzdWx0ID09IDxudW1iZXI+U3R5bGVzLk1TR0JPWF9SRVNVTFRfT0s7XHJcbiAgfVxyXG59XHJcbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR1VJTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvR1VJTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUd4QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSzVDLE1BQU0sT0FBTyxVQUFVO0lBS3JCLE1BQU0sS0FBSyxRQUFRO1FBQ2pCLElBQUksVUFBVSxDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQy9CLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMxQyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQU1ELG1CQUFtQjtRQUNqQixRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQVFELFVBQVUsQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLFdBQW9CO1FBQzlELElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtZQUVmLElBQUksVUFBVSxHQUFZLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFckIsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQVFELFNBQVMsQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLFdBQW9CO1FBQzdELElBQUksT0FBTyxHQUFHLENBQUM7WUFFYixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFJRCxLQUFLLENBQUMsSUFBYTtRQUNqQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUVuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQU1PLE9BQU8sQ0FBQyxJQUFZO1FBQzFCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLGdCQUFnQixHQUFlLFlBQVksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDaEgsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFLTyxPQUFPO1FBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0QsTUFBTSxJQUFJLEdBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZFLElBQUcsSUFBSSxLQUFLLElBQUk7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBU0ssVUFBVSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsS0FBYTs7WUFFeEQsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTVELE9BQU8sTUFBTSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztLQUFBO0lBU0ssaUJBQWlCLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxLQUFhOztZQUNuRSxJQUFJLEtBQUssR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuRSxJQUFJLEdBQUcsR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUvRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xELENBQUM7S0FBQTtJQVNLLE9BQU8sQ0FBQyxLQUFhLEVBQUUsS0FBYzs7WUFFekMsT0FBTyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNGLENBQUM7S0FBQTtJQVFZLFlBQVksQ0FBQyxLQUFhOztZQUNyQyxJQUFJLFNBQVMsR0FBVyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2xGLE9BQU8sU0FBUyxJQUFZLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUN0RCxDQUFDO0tBQUE7O0FBOUhjLG9CQUFTLEdBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNc2dJbnRlcmZhY2V9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge0NvbW1hbmRzLCBNYW5hZ2VyLCBTdHlsZXN9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gJy4vdGFza3MvTUdEYXRhJztcclxuaW1wb3J0IHtSQ1RpbWVyfSBmcm9tICcuL3Rhc2tzL1JDVGltZXInO1xyXG5pbXBvcnQge01nRm9ybX0gZnJvbSAnLi9ndWkvTWdGb3JtJztcclxuaW1wb3J0IHtUYXNrfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQge0xhbmd1YWdlRGF0YX0gZnJvbSAnLi9lbnYvTGFuZ3VhZ2VEYXRhJztcclxuaW1wb3J0IHtBY2Nlc3NIZWxwZXJ9IGZyb20gJy4vQWNjZXNzSGVscGVyJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIDwvc3VtbWFyeT5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEdVSU1hbmFnZXIge1xyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogR1VJTWFuYWdlciA9IG51bGw7IC8vIHRoZSBzaW5nbGUgaW5zdGFuY2Ugb2YgdGhlIEdVSU1hbmFnZXJcclxuXHJcbiAgLy8vICAgc2luZ2xldG9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IEdVSU1hbmFnZXIge1xyXG4gICAgaWYgKEdVSU1hbmFnZXIuX2luc3RhbmNlID09PSBudWxsKVxyXG4gICAgICBHVUlNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBHVUlNYW5hZ2VyKCk7XHJcbiAgICByZXR1cm4gR1VJTWFuYWdlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGV4ZWN1dGUgdGhlIGNvbW1hbmRzIGluIHRoZSBxdWV1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZXhlY0d1aUNvbW1hbmRRdWV1ZSgpOiB2b2lkIHtcclxuICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc3RhcnQgYSB0aW1lclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtZ2RcIj4gTWdEYXRhIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+aW50ZXJ2YWwgaW4gZnVsbCBzZWNvbmRzIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gKGZyb20gY3VycmVudCB0aW1lKTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc0lkbGVUaW1lclwiPnRydWUgaWYgdGhpcyB0aW1lciBpcyB0aGUgaWRsZSB0aW1lcjwvcGFyYW0+XHJcbiAgc3RhcnRUaW1lcihtZ0RhdGE6IE1HRGF0YSwgc2Vjb25kczogbnVtYmVyLCBpc0lkbGVUaW1lcjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHNlY29uZHMgPiAwKSB7XHJcbiAgICAgIC8vIFJDVGltZXIvTWdUaW1lciB3b3JrcyBvbiBtaWxsaXNlY29uZHMgc28gY29udmVydCBzZWNvbmRzIHRvIG1pbGxpc2Vjb25kc1xyXG4gICAgICBsZXQgb2JqUkNUaW1lcjogUkNUaW1lciA9IG5ldyBSQ1RpbWVyKG1nRGF0YSwgc2Vjb25kcyAqIDEwMDAsIGlzSWRsZVRpbWVyKTtcclxuICAgICAgKG9ialJDVGltZXIpLlN0YXJ0KCk7XHJcbiAgICAgIC8vIGZpeGVkIGJ1ZyAyODQ1NjYsIHdoaWxlIHdlIGhhdmUgY29tbWFuZCBpbiBoZSBxdWV1ZSwgZXhlY3V0ZSB0aGVtXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc3RvcCB0aGUgdGltZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiTWdEYXRhXCI+IE1nRGF0YTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+aW50ZXJ2YWwgaW4gZnVsbCBzZWNvbmRzIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gKGZyb20gY3VycmVudCB0aW1lKTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc0lkbGVUaW1lclwiPnRydWUgaWYgdGhpcyB0aW1lciBpcyB0aGUgaWRsZSB0aW1lcjwvcGFyYW0+XHJcbiAgc3RvcFRpbWVyKG1nRGF0YTogTUdEYXRhLCBzZWNvbmRzOiBudW1iZXIsIGlzSWRsZVRpbWVyOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoc2Vjb25kcyA+IDApXHJcbiAgICAvLyBSQ1RpbWVyL01nVGltZXIgd29ya3Mgb24gbWlsbGlzZWNvbmRzIHNvIGNvbnZlcnQgc2Vjb25kcyB0byBtaWxsaXNlY29uZHNcclxuICAgICAgUkNUaW1lci5TdG9wVGltZXIobWdEYXRhLCBzZWNvbmRzICogMTAwMCwgaXNJZGxlVGltZXIpO1xyXG4gIH1cclxuXHJcbiAgYWJvcnQoZm9ybTogTWdGb3JtKTogdm9pZDtcclxuICBhYm9ydCgpOiB2b2lkO1xyXG4gIGFib3J0KGZvcm0/OiBNZ0Zvcm0pOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKVxyXG4gICAgICB0aGlzLmFib3J0XzAoZm9ybSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuYWJvcnRfMSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY2xvc2UgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9ybVwiPiA8L3BhcmFtPlxyXG4gIHByaXZhdGUgYWJvcnRfMChmb3JtOiBNZ0Zvcm0pOiB2b2lkIHtcclxuICAgIGlmIChmb3JtICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBtYWluUHJvZ0J5Q3RsSWR4OiBUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldE1haW5Qcm9nQnlDdGxJZHgoLTEsIGZvcm0uZ2V0VGFzaygpLmdldEN0bElkeCgpKTtcclxuICAgICAgTWFuYWdlci5BYm9ydChmb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwcm9jZXNzIEFCT1JUIGNvbW1hbmQuQ2xvc2UgYWxsIHNoZWxscy4gTGFzdCBzaGVsbCBjbG9zZWQsIHdpbGwgY2xvc2UgdGhlIGRpc3BsYXkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGFib3J0XzEoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldFNpemUoKTsgaSA+IDA7IGktLSkge1xyXG4gICAgICBjb25zdCB0YXNrID0gIEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRNR0RhdGEoaSAtIDEpLmdldEZpcnN0VGFzaygpO1xyXG4gICAgICBpZih0YXNrICE9PSBudWxsKVxyXG4gICAgICAgIHRoaXMuYWJvcnQoPE1nRm9ybT50YXNrLkZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE9wZW4gbWVzc2FnZSBib3ggd2l0aCB0aXRsZSBzdHJpbmcgYW5kIG1lc3NhZ2Ugc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRpdGxlXCI+dGl0bGUgb2YgdGhlIG1lc3NhZ2UgYm94PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ1wiPm1lc3NhZ2UgZm9yIHRoZSBtZXNzYWdlIGJveDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHlsZVwiPnRoZSBzdHlsZSBvZiB0aGUgbWVzc2FnZSBib3ggLS0tIGJ1dHRvbnMsIGljb248L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGJ1dHRvbiBjbGlja2VkIDwvcmV0dXJucz5cclxuICBhc3luYyBNZXNzYWdlQm94KHRpdGxlOiBzdHJpbmcsIG1zZzogc3RyaW5nLCBzdHlsZTogbnVtYmVyKSA6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICAvLyBTdG9wIHRoZSBzcGlubmVyIGJlZm9yZSBzaG93aW5nIHRoZSBtZXNhZ2UgYm94XHJcbiAgICBhd2FpdCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5DaGVja0FuZFNob3dTcGlubmVyKGZhbHNlKTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgQ29tbWFuZHMubWVzc2FnZUJveCh0aXRsZSwgbXNnLCBzdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgT3BlbiBtZXNzYWdlIGJveCB3aXRoIHRpdGxlIGlkIGFuZCBtZXNzYWdlIGlkIHRoYXQgd2lsbCB0YWtlIGZyb20gTUdCQ0wqRU5HLnhtbCAoY3JlYXRlZCBieSBtZ2NvbnN0KVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0aXRsZUlkXCI+bWVzc2FnZSBmcm9tIGZyb20gTUdCQ0wqRU5HLnhtbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dJZFwiPm1lc3NhZ2UgZnJvbSBmcm9tIE1HQkNMKkVORy54bWw8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj50aGUgc3R5bGUgb2YgdGhlIG1lc3NhZ2UgYm94IGNhbiBiZSBmbGFncyBvZiBTdHlsZXMuTVNHQk9YX3h4eCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbWVzc2FnZSBib3ggc3R5bGUgZnJvbSBTdHlsZXMuTVNHQk9YX1hYWDwvcmV0dXJucz5cclxuICBhc3luYyB3cml0ZVRvTWVzc2FnZUJveCh0aXRsZUlkOiBzdHJpbmcsIG1zZ0lkOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIpOlByb21pc2U8bnVtYmVyPiB7XHJcbiAgICBsZXQgdGl0bGU6IHN0cmluZyA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZS5nZXRDb25zdE1lc3NhZ2UodGl0bGVJZCk7XHJcbiAgICBsZXQgbXNnOiBzdHJpbmcgPSBMYW5ndWFnZURhdGEuSW5zdGFuY2UuZ2V0Q29uc3RNZXNzYWdlKG1zZ0lkKTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5NZXNzYWdlQm94KHRpdGxlLCBtc2csIHN0eWxlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBkaXNwbGF5IGEgTWVzc2FnZSBCb3ggKGNvbmZpcm0pIHdpdGggMiBidXR0b25zIC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5tZXNzYWdlIG51bWJlciAoZnJvbSBNc2dJbnRlcmZhY2UuamF2YSkgdGhhdCB3aWxsIGJlIGRpc3BsYXkgb24gdGhlIGNvbnRlbnQgb2YgdGhlIE1lc3NhZ2UgQm94IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHlsZVwiPnRoZSBpY29uIGFuZCB0aGUgYnV0dG9uIHRoYXQgd2lsbCBiZSBkaXNwbGF5IG9uIHRoZSBjb25maXJtYXRpb24gYm94IDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYnV0dG9uIHRoYXQgd2FzIHByZXNzZWQgKFN0eWxlcy5NU0dCT1hfQlVUVE9OX3h4eCkgPC9yZXR1cm5zPlxyXG4gIGFzeW5jIGNvbmZpcm0obXNnSWQ6IHN0cmluZywgc3R5bGU6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPjtcclxuICBhc3luYyBjb25maXJtKG1zZ0lkOiBzdHJpbmcsIHN0eWxlPzogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy53cml0ZVRvTWVzc2FnZUJveChNc2dJbnRlcmZhY2UuQ09ORklSTV9TVFJfV0lORE9XX1RJVExFLCBtc2dJZCwgc3R5bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRpc3BsYXkgYSBNZXNzYWdlIEJveCAoY29uZmlybSkgd2l0aCAyIGJ1dHRvbnMgOiB5ZXMgJiBubyBhbmQgaWNvbiBxdWVzdGlvbi5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5tZXNzYWdlIG51bWJlciAoZnJvbSBNc2dJbnRlcmZhY2UuamF2YSkgdGhhdCB3aWxsIGJlIGRpc3BsYXkgb24gdGhlIGNvbnRlbnQgb2YgdGhlIE1lc3NhZ2UgQm94XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgdGhlIGJ1dHRvbiBZRVMgd2FzIHByZXNzZWRcclxuICAvLy8gPC9wYXJhbT5cclxuICBwdWJsaWMgYXN5bmMgY29uZmlybV9ib29sKG1zZ0lkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCByZXRSZXN1bHQ6IG51bWJlciA9IGF3YWl0IHRoaXMuY29uZmlybShtc2dJZCwgU3R5bGVzLk1TR0JPWF9CVVRUT05fT0tfQ0FOQ0VMKTtcclxuICAgIHJldHVybiByZXRSZXN1bHQgPT0gPG51bWJlcj5TdHlsZXMuTVNHQk9YX1JFU1VMVF9PSztcclxuICB9XHJcbn1cclxuIl19
@@ -130,9 +130,9 @@ export class GuiEventsProcessor extends EventsProcessor {
130
130
  EventsManager.Instance.addToTail(rtEvt);
131
131
  }
132
132
  }
133
- processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, comboIsDropDown, handled) {
133
+ processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, handled) {
134
134
  LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
135
- return super.processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, comboIsDropDown, handled);
135
+ return super.processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, handled);
136
136
  }
137
137
  static peekEndOfWork() {
138
138
  return EventsManager.Instance.getEndOfWork();
@@ -143,10 +143,10 @@ export class GuiEventsProcessor extends EventsProcessor {
143
143
  static GetRuntimeContext(contextID) {
144
144
  return RuntimeContextBase.Instance;
145
145
  }
146
- static SaveLastClickedControlName(guiMgControl, ctrlName) {
146
+ static SaveLastClickedControlName(ctrlName) {
147
147
  RuntimeContextBase.Instance.LastClickedCtrlName = ctrlName;
148
148
  }
149
- static SaveLastClickInfo(guiMgForm, controlName, X, Y, offsetX, offsetY, LastClickCoordinatesAreInPixels) {
149
+ static SaveLastClickInfo(controlName, X, Y, offsetX, offsetY, LastClickCoordinatesAreInPixels) {
150
150
  RuntimeContextBase.Instance.SaveLastClickInfo(controlName, X, Y, offsetX, offsetY, LastClickCoordinatesAreInPixels);
151
151
  }
152
152
  static ProcessPress(guiMgForm, guiMgCtrl, line) {
@@ -168,4 +168,4 @@ export class GuiEventsProcessor extends EventsProcessor {
168
168
  return false;
169
169
  }
170
170
  }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRXZlbnRzUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9HdWlFdmVudHNQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckcsT0FBTyxFQUNMLE1BQU0sRUFDTixlQUFlLEVBS2YsT0FBTyxFQUtQLGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUdwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBQ3JELHdCQUF3QjtRQUN0QixNQUFNLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQztRQUNwRCxNQUFNLENBQUMsMkJBQTJCLEdBQUcsa0JBQWtCLENBQUMsNkJBQTZCLENBQUM7UUFDdEYsTUFBTSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7UUFDeEQsTUFBTSxDQUFDLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxnQkFB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QVEsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLCtCQUErQixDQUFDLENBQUM7SUFDdEgsQ0FBQztJQVFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUF1QixFQUFFLElBQVk7UUFDckYsSUFBSSxTQUFTLEdBQWlDLFNBQVMsQ0FBQztRQUd4RCxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQ25CLE9BQU8sQ0FBQyxhQUFhLENBQUMsbUNBQW1DLENBQWMsU0FBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3hILElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUM1QixTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7O1lBRTNCLE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV2SCxPQUFPLENBQUMsYUFBYSxDQUFDLDBDQUEwQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQU1PLE1BQU0sQ0FBQyxVQUFVO1FBQ3ZCLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBSU8sTUFBTSxDQUFDLHFCQUFxQjtJQUNwQyxDQUFDO0lBT08sTUFBTSxDQUFDLHdCQUF3QjtRQUNyQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN0cmxCdXR0b25UeXBlR3VpLCBJbnRlcm5hbEludGVyZmFjZSwgTG9nZ2VyLCBNZ0NvbnRyb2xUeXBlLCBNaXNjIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnRzLFxyXG4gIEV2ZW50c1Byb2Nlc3NvcixcclxuICBHdWlNZ0NvbnRyb2wsXHJcbiAgR3VpTWdGb3JtLFxyXG4gIElUYXNrLFxyXG4gIExhc3RGb2N1c2VkVmFsLFxyXG4gIE1hbmFnZXIsXHJcbiAgTWdDb250cm9sQmFzZSxcclxuICBNZ0Zvcm1CYXNlLFxyXG4gIE1nVGltZXIsXHJcbiAgTW9kaWZpZXJzLFxyXG4gIFJ1bnRpbWVDb250ZXh0QmFzZVxyXG59IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgTWdDb250cm9sIH0gZnJvbSAnLi9ndWkvTWdDb250cm9sJztcclxuaW1wb3J0IHsgUnVuVGltZUV2ZW50IH0gZnJvbSAnLi9ldmVudC9SdW5UaW1lRXZlbnQnO1xyXG5pbXBvcnQgeyBNZ0Zvcm0gfSBmcm9tICcuL2d1aS9NZ0Zvcm0nO1xyXG5pbXBvcnQgeyBNR0RhdGEgfSBmcm9tICcuL3Rhc2tzL01HRGF0YSc7XHJcbmltcG9ydCB7IFJDVGltZXIgfSBmcm9tICcuL3Rhc2tzL1JDVGltZXInO1xyXG5pbXBvcnQgeyBNR0RhdGFDb2xsZWN0aW9uIH0gZnJvbSAnLi90YXNrcy9NR0RhdGFDb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4vdGFza3MvVGFzayc7XHJcbmltcG9ydCB7IEV2ZW50c01hbmFnZXIgfSBmcm9tICcuL2V2ZW50L0V2ZW50c01hbmFnZXInO1xyXG5pbXBvcnQgeyBMYW5ndWFnZURhdGEgfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQgeyBFbnZQYXJhbXNUYWJsZSB9IGZyb20gJy4vZW52L0VudlZhcmlhYmxlc1RhYmxlJztcclxuaW1wb3J0IHsgTGFzdEZvY3VzZWRNYW5hZ2VyIH0gZnJvbSAnLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXInO1xyXG5pbXBvcnQgeyBTZXJ2ZXJDb25maWcgfSBmcm9tICcuL1NlcnZlckNvbmZpZyc7XHJcblxyXG5leHBvcnQgY2xhc3MgR3VpRXZlbnRzUHJvY2Vzc29yIGV4dGVuZHMgRXZlbnRzUHJvY2Vzc29yIHtcclxuICBSZWdpc3RlclN1YmNsYXNzSGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICBFdmVudHMuRm9jdXNFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wcm9jZXNzRm9jdXM7XHJcbiAgICBFdmVudHMuRm9jdXNPbk5vbk1hZ2ljQ29udHJvbEV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLnByb2Nlc3NGb2N1c09uTm9uTWFnaWNDb250cm9sO1xyXG4gICAgRXZlbnRzLk1vdXNlVXBFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wcm9jZXNzTW91c2VVcDtcclxuICAgIEV2ZW50cy5TZWxlY3Rpb25FdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wcm9jZXNzU2VsZWN0aW9uO1xyXG4gICAgRXZlbnRzLkRpc3Bvc2VFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wcm9jZXNzRGlzcG9zZTtcclxuICAgIEV2ZW50cy5UaW1lckV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLlByb2Nlc3NUaW1lcjtcclxuICAgIEV2ZW50cy5UYWJsZVJlc2l6ZUV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLnByb2Nlc3NUYWJsZVJlc2l6ZTtcclxuICAgIEV2ZW50cy5HZXRSb3dzRGF0YUV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLnByb2Nlc3NHZXRSb3dzRGF0YTtcclxuICAgIEV2ZW50cy5Ob25QYXJrYWJsZUxhc3RQYXJrZWRDdHJsRXZlbnQgPSBHdWlFdmVudHNQcm9jZXNzb3IuT25Ob25QYXJrYWJsZUxhc3RQYXJrZWRDdHJsO1xyXG4gICAgRXZlbnRzLlNob3dTZXNzaW9uU3RhdGlzdGljc0V2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLlNob3dTZXNzaW9uU3RhdGlzdGljcztcclxuXHJcbiAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZ0V2ZW50ID0gTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnLmJpbmQoTG9nZ2VyLkluc3RhbmNlKTtcclxuICAgIEV2ZW50cy5Xcml0ZUVycm9yVG9Mb2dFdmVudCA9IExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2cuYmluZChMb2dnZXIuSW5zdGFuY2UpO1xyXG4gICAgRXZlbnRzLldyaXRlV2FybmluZ1RvTG9nRXZlbnQgPSBMb2dnZXIuSW5zdGFuY2UuV3JpdGVXYXJuaW5nVG9Mb2dXaXRoTXNnLmJpbmQoTG9nZ2VyLkluc3RhbmNlKTtcclxuICAgIEV2ZW50cy5TaG91bGRMb2dFdmVudCA9IExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2cuYmluZChMb2dnZXIuSW5zdGFuY2UpO1xyXG4gICAgRXZlbnRzLldyaXRlR3VpVG9Mb2dFdmVudCA9IExvZ2dlci5JbnN0YW5jZS5Xcml0ZUd1aVRvTG9nLmJpbmQoTG9nZ2VyLkluc3RhbmNlKTtcclxuICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nRXZlbnQgPSBMb2dnZXIuSW5zdGFuY2UuV3JpdGVEZXZUb0xvZy5iaW5kKExvZ2dlci5JbnN0YW5jZSk7XHJcblxyXG4gICAgRXZlbnRzLlRyYW5zbGF0ZUV2ZW50ID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlLnRyYW5zbGF0ZS5iaW5kKExhbmd1YWdlRGF0YS5JbnN0YW5jZSk7XHJcblxyXG4gICAgRXZlbnRzLlBlZWtFbmRPZldvcmtFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wZWVrRW5kT2ZXb3JrO1xyXG5cclxuICAgIEV2ZW50cy5UcmFuc2xhdGVMb2dpY2FsTmFtZUV2ZW50ID0gRW52UGFyYW1zVGFibGUuSW5zdGFuY2UudHJhbnNsYXRlLmJpbmQoRW52UGFyYW1zVGFibGUuSW5zdGFuY2UpO1xyXG4gICAgRXZlbnRzLkdldE1haW5Qcm9ncmFtRXZlbnQgPSBHdWlFdmVudHNQcm9jZXNzb3IuZ2V0TWFpblByb2dyYW07XHJcbiAgICBFdmVudHMuR2V0TWVzc2FnZVN0cmluZ0V2ZW50ID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlLmdldENvbnN0TWVzc2FnZS5iaW5kKExhbmd1YWdlRGF0YS5JbnN0YW5jZSk7XHJcblxyXG4gICAgRXZlbnRzLkN0cmxGb2N1c0V2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLnByb2Nlc3NDdHJsRm9jdXM7XHJcbiAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHRFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5HZXRSdW50aW1lQ29udGV4dDtcclxuICAgIEV2ZW50cy5TYXZlTGFzdENsaWNrZWRDdHJsRXZlbnQgPSBHdWlFdmVudHNQcm9jZXNzb3IuU2F2ZUxhc3RDbGlja2VkQ29udHJvbE5hbWU7XHJcbiAgICBFdmVudHMuU2F2ZUxhc3RDbGlja0luZm9FdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5TYXZlTGFzdENsaWNrSW5mbztcclxuXHJcblxyXG4gICAgRXZlbnRzLk9uSXNMb2dvblJUTEV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLklzTG9nb25SVEw7XHJcbiAgICBFdmVudHMuU2hvdWxkQWRkRW50ZXJBc0tleUV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLlNob3VsZEFkZEVudGVyQXNLZXlFdmVudDtcclxuXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IENUT1IgPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlUYXNrXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ0NvbnRyb2xcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIHByb2Nlc3NDdHJsRm9jdXMoaVRhc2s6IElUYXNrLCBtZ0NvbnRyb2w6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIExhc3RGb2N1c2VkTWFuYWdlci5zZXRMYXN0Rm9jdXNlZENvbnRyb2woPFRhc2s+aVRhc2ssIG1nQ29udHJvbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBcImZvY3VzXCIgZXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWx1ZVwiPnRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+dGhlIGxpbmUgb2YgbXVsdGlsaW5lIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gVFJVRSBpZiBNYWdpYyBpbnRlcm5hbCBydWxlcyBhbGxvdyB1cyB0byBwZXJmb3JtIHRoZSBmb2N1cy5cclxuICAvLy8gICBzb21ldGltZXMsIE1hZ2ljIGZvcmNlcyB1cyB0byByZXR1cm4gdG8gdGhlIG9yaWdpbmFsIGNvbnRyb2wgdGh1cyBGQUxTRSB3aWxsIGJlIHJldHVybmVkLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvY2Vzc0ZvY3VzKGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIsIGlzUHJvZHVjZUNsaWNrOiBib29sZWFuLCBvbk11bHRpTWFyazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sID0gPE1nQ29udHJvbD5ndWlNZ0N0cmw7XHJcbiAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRMaW5lQW5kQ29kZUFuZElzUHJvZHVjdENsaWNrKG1nQ29udHJvbCwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfRk9DVVMsIGxpbmUsIGlzUHJvZHVjZUNsaWNrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wcm9jZXNzIFwiZm9jdXNcIiBldmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPnRoZSBjb250cm9sPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzRm9jdXNPbk5vbk1hZ2ljQ29udHJvbChndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCk6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sID0gPE1nQ29udHJvbD5ndWlNZ0N0cmw7XHJcbiAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0ZPQ1VTX09OX05PTl9NQUdJQ19DT05UUk9MLCBtZ0NvbnRyb2wuZ2V0RGlzcGxheUxpbmUodHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnByb2Nlc3MgXCJjbGlja1wiIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLzxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+IHRoZSBsaW5lIG9mIHRoZSBtdWx0aWxpbmUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWx1ZVwiPnRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvY2Vzc01vdXNlVXAoZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbCA9IDxNZ0NvbnRyb2w+Z3VpTWdDdHJsO1xyXG4gICAgbGV0IHJ0RXZ0ID0gbmV3IFJ1blRpbWVFdmVudChtZ0NvbnRyb2wsIGxpbmUsIHRydWUpO1xyXG4gICAgbGV0IHByb2R1Y2VDbGljazogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgaWYgKG1nQ29udHJvbC5UeXBlID09PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9CVVRUT04gJiYgZ3VpTWdDdHJsLkJ1dHRvblN0eWxlID09PSBDdHJsQnV0dG9uVHlwZUd1aS5IeXBlcnRleHQpXHJcbiAgICAgIHByb2R1Y2VDbGljayA9IGZhbHNlO1xyXG5cclxuICAgIHJ0RXZ0LnNldFByb2R1Y2VDbGljayhwcm9kdWNlQ2xpY2spO1xyXG4gICAgcnRFdnQuc2V0SW50ZXJuYWwoSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfTU9VU0VVUCk7XHJcbiAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZFRvVGFpbChydEV2dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmVsZWFzZSByZWZlcmVuY2VzIHRvIG1nRGF0YSBhbmQgdG8gdGhlIHRhc2sgaW4gb3JkZXIgdG8gbGV0IHRoZSBnYyB0byBmcmVlIHRoZSBtZW1vcnkuXHJcbiAgLy8vICAgVGhpcyBjb2RlIHdhcyBtb3ZlZCBmcm9tIHByb2Nlc3NDbG9zZSBpbiBvcmRlciB0byBjbGVhbiBhbHNvIHdoZW4gdGhlIFwib3BlbiB3aW5kb3cgPSBOT1wiIChub24gaW50ZXJhY3RpdmUgdGFza3MpLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3JtXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzRGlzcG9zZShndWlNZ0Zvcm06IEd1aU1nRm9ybSk6IHZvaWQge1xyXG4gICAgbGV0IGZvcm0gPSA8TWdGb3JtPmd1aU1nRm9ybTtcclxuICAgIGxldCB0YXNrID0gPFRhc2s+Zm9ybS5nZXRUYXNrKCk7XHJcbiAgICBsZXQgbWdkOiBNR0RhdGEgPSB0YXNrLmdldE1HRGF0YSgpO1xyXG5cclxuICAgIFJDVGltZXIuU3RvcEFsbChtZ2QpO1xyXG5cclxuICAgIGlmIChtZ2QuSXNBYm9ydGluZylcclxuICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5kZWxldGVNR0RhdGFUcmVlKG1nZC5HZXRJZCgpKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wcm9jZXNzIFwidGltZXJcIiBldmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nVGltZXJcIj5vYmplY3Qgb2YgJ01nVGltZXInIGNsYXNzPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBQcm9jZXNzVGltZXIobWdUaW1lcjogTWdUaW1lcik6IHZvaWQge1xyXG4gICAgbGV0IG1nZDogTUdEYXRhID0gKDxSQ1RpbWVyPm1nVGltZXIpLkdldE1nZGF0YSgpO1xyXG4gICAgbGV0IHRhc2sgPSBtZ2QuZ2V0Rmlyc3RUYXNrKCk7XHJcblxyXG4gICAgLy8gTWdUaW1lci9SQ1RpbWVyIHVzZXMgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGJ1dCBSdW50aW1lRXZlbnQgdXNlcyBpbnRlcnZhbCBpbiBzZWNvbmRzXHJcbiAgICAvLyBzbyBjb252ZXJ0IGl0IHRvIHNlY29uZHMuXHJcbiAgICBsZXQgc2Vjb25kczogbnVtYmVyID0gTWF0aC5mbG9vcigoKDxSQ1RpbWVyPm1nVGltZXIpLlRpbWVySW50ZXJ2YWxNaWxpU2Vjb25kcykgLyAxMDAwKTtcclxuICAgIGxldCBpc0lkbGU6IGJvb2xlYW4gPSAoPFJDVGltZXI+bWdUaW1lcikuSXNJZGxlVGltZXI7XHJcblxyXG4gICAgaWYgKG1nZC5Jc0Fib3J0aW5nKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IHJ0RXZ0ID0gbmV3IFJ1blRpbWVFdmVudCh0YXNrLCB0cnVlKTtcclxuICAgIHJ0RXZ0LnNldFRpbWVyKHNlY29uZHMsIG1nZC5HZXRJZCgpLCBpc0lkbGUpO1xyXG4gICAgcnRFdnQuc2V0TWFpblByZ0NyZWF0b3IocnRFdnQuZ2V0VGFzaygpKTtcclxuXHJcbiAgICBpZiAoIWlzSWRsZSlcclxuICAgICAgcnRFdnQuc2V0Q3RybCg8TWdDb250cm9sPnRhc2suZ2V0TGFzdFBhcmtlZEN0cmwoKSk7XHJcblxyXG4gICAgcnRFdnQuc2V0SW50ZXJuYWwoSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RJTUVSKTtcclxuICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuYWRkVG9UYWlsKHJ0RXZ0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wcm9jZXNzIFJlc2l6ZSBvZiB0aGUgcGFnZSwgZm9yIHRhYmxlIGNvbnRyb2xzIG9ubHk8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibmV3Um93c0luUGFnZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvY2Vzc1RhYmxlUmVzaXplKGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBuZXdSb3dzSW5QYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgbGV0IG1nQ29udHJvbCA9IDxNZ0NvbnRyb2w+Z3VpTWdDdHJsO1xyXG4gICAgICBpZiAobWdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgICAgIGxldCBydEV2dCA9IG5ldyBSdW5UaW1lRXZlbnQobWdDb250cm9sLCBuZXdSb3dzSW5QYWdlLCB0cnVlKTtcclxuICAgICAgICAgIHJ0RXZ0LnNldEludGVybmFsKEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRVNJWkUpO1xyXG4gICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRUb1RhaWwocnRFdnQpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBzZXQgZGF0YSBmb3Igcm93PC9zdW1tYXJ5PlxyXG4gIC8vLzxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50YWJsZSBjb250cm9sPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNlbmRBbGxcIj5pZiB0cnVlICwgYWx3YXlzIHNlbmQgYWxsIHJlY29yZHM8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIHByb2Nlc3NHZXRSb3dzRGF0YShndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZGVzaXJlZFRvcEluZGV4OiBudW1iZXIsIHNlbmRBbGw6IGJvb2xlYW4sIGxhc3RGb2N1c2VkVmFsOiBMYXN0Rm9jdXNlZFZhbCk6IHZvaWQge1xyXG4gICAgICBsZXQgbWdDb250cm9sID0gPE1nQ29udHJvbD5ndWlNZ0N0cmw7XHJcblxyXG4gICAgICBpZiAobWdDb250cm9sICE9IG51bGwgJiYgbWdDb250cm9sLlR5cGUgPT09IE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX1RBQkxFKSB7XHJcbiAgICAgICAgICBsZXQgcnRFdnQgPSBuZXcgUnVuVGltZUV2ZW50KG1nQ29udHJvbCwgZGVzaXJlZFRvcEluZGV4LCB0cnVlKTtcclxuICAgICAgICAgIHJ0RXZ0LnNldEludGVybmFsKEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ST1dfREFUQV9DVVJSX1BBR0UpO1xyXG4gICAgICAgICAgcnRFdnQuc2V0U2VuZEFsbChzZW5kQWxsKTtcclxuICAgICAgICAgIHJ0RXZ0Lkxhc3RGb2N1c2VkVmFsID0gbGFzdEZvY3VzZWRWYWw7XHJcbiAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZFRvVGFpbChydEV2dCk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT50cmlnZ2VyZWQgYnkgZ3VpLiBlbmFibGUvZGlzYWJsZSBhIGdpdmVuIGFjdCBsaXN0Ljwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhY3RMaXN0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImVuYWJsZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvY2Vzc0VuYWJsZUFjdHMoZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGFjdExpc3Q6IG51bWJlcltdLCBlbmFibGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgbGV0IG1nQ29udHJvbCA9IDxNZ0NvbnRyb2w+Z3VpTWdDdHJsO1xyXG4gICAgICBsZXQgcnRFdnQgPSBuZXcgUnVuVGltZUV2ZW50KG1nQ29udHJvbCwgdHJ1ZSk7XHJcbiAgICAgIHJ0RXZ0LnNldEludGVybmFsKGVuYWJsZSA/IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FTkFCTEVfRVZFTlRTIDogSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RJU0FCTEVfRVZFTlRTKTtcclxuICAgICAgcnRFdnQuc2V0QWN0RW5hYmxlTGlzdChhY3RMaXN0KTtcclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRUb1RhaWwocnRFdnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSWYgY3VycmVudCBjb250cm9sIGJlY29tZXMgaW52aXNpYmxlL2Rpc2FibGVkL25vbiBwYXJrYWJsZSwgdGhlbiBwdXQgTUdfQUNUX1RCTF9OWFRGTEQgaW50byBxdWV1ZS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj5jb250cm9sIHdob3NlIHByb3BlcnR5IGlzIGNoYW5nZWQuPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBPbk5vblBhcmthYmxlTGFzdFBhcmtlZEN0cmwoY3RybDogR3VpTWdDb250cm9sKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBcInNlbGVjdGlvblwiIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+dGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50aGUgY29udHJvbCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPiB0aGUgbGluZSBvZiB0aGUgbXVsdGlsaW5lIGNvbnRyb2wgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb2R1Y2VDbGlja1wiPlRPRE8gPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzU2VsZWN0aW9uKHZhbDogc3RyaW5nLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCBwcm9kdWNlQ2xpY2s6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBtZ0NvbnRyb2wgPSA8TWdDb250cm9sPmd1aU1nQ3RybDtcclxuICAgIGlmIChtZ0NvbnRyb2wuVHlwZSA9PT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQlVUVE9OICYmIG1nQ29udHJvbC5nZXRGb3JtKCkuZ2V0VGFzaygpLmdldExhc3RQYXJrZWRDdHJsKCkgIT09IG1nQ29udHJvbClcclxuICAgICAgcHJvZHVjZUNsaWNrID0gdHJ1ZTtcclxuXHJcbiAgICBpZihndWlNZ0N0cmwuQ29ubmVjdGVkQ29udHJvbClcclxuICAgIHtcclxuICAgICAgbGV0IHJ0RXZ0ID0gbmV3IFJ1blRpbWVFdmVudChtZ0NvbnRyb2wsICtsaW5lLCB0cnVlKTtcclxuICAgICAgcnRFdnQuc2V0SW50ZXJuYWwoSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1pPT00pO1xyXG4gICAgICBydEV2dC5zZXRQcm9kdWNlQ2xpY2socHJvZHVjZUNsaWNrKTtcclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRUb1RhaWwocnRFdnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBydEV2dCA9IG5ldyBSdW5UaW1lRXZlbnQobWdDb250cm9sLCArbGluZSwgdHJ1ZSk7XHJcbiAgICAgIHJ0RXZ0LnNldEludGVybmFsKEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TRUxFQ1RJT04pO1xyXG4gICAgICBydEV2dC5zZXRWYWx1ZSh2YWwpO1xyXG4gICAgICBydEV2dC5zZXRQcm9kdWNlQ2xpY2socHJvZHVjZUNsaWNrKTtcclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRUb1RhaWwocnRFdnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibW9kaWZpZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwia2V5Q29kZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJlbmRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGV4dFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc0FjdENoYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3VnZ2VzdGVkVmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZG90TmV0QXJnc1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21ib0lzRHJvcERvd25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhhbmRsZWRcIj5ib29sZWFuIHZhcmlhYmxlIGV2ZW50IGlzIGhhbmRsZWQgb3Igbm90LjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIG9ubHkgaWYgd2UgaGF2ZSBoYW5kbGVkIHRoZSBLZXlEb3duIGV2ZW50IChvdGhlcndpc2UgdGhlIENMUiBzaG91bGQgaGFuZGxlKS4gSWYgdHJ1ZSBtYWdpYyB3aWxsIGhhbmRsZSBlbHNlIENMUiB3aWxsIGhhbmRsZS48L3JldHVybnM+XHJcbiAgcHJvY2Vzc0tleURvd24oZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0sIGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLFxyXG4gICAgICAgICAgICAgICAgIGtleUNvZGU6IG51bWJlciwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICBpc0FjdENoYXI6IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIGNvbWJvSXNEcm9wRG93bjogYm9vbGVhbixcclxuICAgICAgICAgICAgICAgICBoYW5kbGVkOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICAvLyB0aW1lIG9mIGxhc3QgdXNlciBhY3Rpb24gZm9yIElETEUgZnVuY3Rpb25cclxuICAgIExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5MYXN0QWN0aW9uVGltZSA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcblxyXG4gICAgLy8gRE9XTiBvciBVUCBpbnZva2VkIG9uIGEgU0VMRUNUL1JBRElPIGNvbnRyb2xcclxuICAgIHJldHVybiBzdXBlci5wcm9jZXNzS2V5RG93bihndWlNZ0Zvcm0sIGd1aU1nQ3RybCwgbW9kaWZpZXIsIGtleUNvZGUsIHN0YXJ0LCBlbmQsIHRleHQsIGlzQWN0Q2hhciwgc3VnZ2VzdGVkVmFsdWUsIGNvbWJvSXNEcm9wRG93biwgaGFuZGxlZCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+cGVlayB0aGUgdmFsdWUgb2YgdGhlIFwiZW5kIG9mIHdvcmtcIiBmbGFnLjwvc3VtbWFyeT5cclxuICBwcml2YXRlIHN0YXRpYyBwZWVrRW5kT2ZXb3JrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuZ2V0RW5kT2ZXb3JrKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+VGhpcyBtZXRob2QgcmV0dXJucyBNYWluIHByb2dyYW0gZm9yIGEgY3RsPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPmFjdGl2ZS90YXJnZXQgY29udGV4dCAoaXJlbGV2YW50IGZvciBSQyk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0bElkeFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRNYWluUHJvZ3JhbShjb250ZXh0SUQ6IG51bWJlciwgY3RsSWR4OiBudW1iZXIpOiBUYXNrIHtcclxuICAgIHJldHVybiBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldE1haW5Qcm9nQnlDdGxJZHgoY29udGV4dElELCBjdGxJZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIFJ1bnRpbWVDb250ZXh0IG9mIENsaWVudE1hbmFnZXIuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIEdldFJ1bnRpbWVDb250ZXh0KGNvbnRleHRJRDogc3RyaW5nKTogUnVudGltZUNvbnRleHRCYXNlIHtcclxuICAgIHJldHVybiBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNhdmVzIHRoZSBsYXN0IGNsaWNrZWQgY29udHJvbCBpbiBhIHJlc3BlY3RpdmUgUnVudGltZUNvbnRleHRCYXNlLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdDb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsTmFtZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU2F2ZUxhc3RDbGlja2VkQ29udHJvbE5hbWUoZ3VpTWdDb250cm9sOiBHdWlNZ0NvbnRyb2wsIGN0cmxOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gY3RybE5hbWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNhdmVzIHRoZSBsYXN0IGNsaWNrZWQgaW5mb3JtYXRpb24uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRyb2xOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJYXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJZXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvZmZzZXRYXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvZmZzZXRZXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJMYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBTYXZlTGFzdENsaWNrSW5mbyhndWlNZ0Zvcm06IEd1aU1nRm9ybSwgY29udHJvbE5hbWU6IHN0cmluZywgWDogbnVtYmVyLCBZOiBudW1iZXIsIG9mZnNldFg6IG51bWJlciwgb2Zmc2V0WTogbnVtYmVyLCBMYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuU2F2ZUxhc3RDbGlja0luZm8oY29udHJvbE5hbWUsIFgsIFksIG9mZnNldFgsIG9mZnNldFksIExhc3RDbGlja0Nvb3JkaW5hdGVzQXJlSW5QaXhlbHMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBQcm9jZXNzIHByZXNzIGV2ZW50LiBNb3ZlIEZvY3VzIGFuZCByYWlzZSBpbnRlcm5hbCBwcmVzcyBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIFByb2Nlc3NQcmVzcyhndWlNZ0Zvcm06IEd1aU1nRm9ybSwgZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuXHJcbiAgICAvLyBUaGUgaW50ZXJuYWwgcHJlc3MgZXZlbnQgaXMgZmlyZWQgaWYgcHJlc3MgZXZlbnQgaXMgZmlyZWQgb24gZm9ybSBvciBzdWJmb3JtXHJcbiAgICBpZiAobWdDb250cm9sID09IG51bGwpXHJcbiAgICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZSgoPE1nRm9ybUJhc2U+Z3VpTWdGb3JtKS5nZXRUYXNrKCksIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ISVQpO1xyXG4gICAgZWxzZSBpZiAobWdDb250cm9sLmlzU3ViZm9ybSgpKVxyXG4gICAgICBtZ0NvbnRyb2wuT25TdWJmb3JtQ2xpY2soKTtcclxuICAgIGVsc2VcclxuICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0hJVCwgbGluZSk7XHJcblxyXG4gICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUkVTUywgbGluZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNob3VsZCB3ZSBzaG93IGxvZ29uIHdpbmRvdyBSVEwgb3Igbm90LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBJc0xvZ29uUlRMKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5Jc0xvZ29uUlRMKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHN0YXRpYyBTaG93U2Vzc2lvblN0YXRpc3RpY3MoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEluIFJJQSwgZW50ZXIgd2lsbCBjYXVzZSBhIGtleWJvYXJkIGV2ZW50IGFjY29yZGluZyB0byB0aGUgT1MuXHJcbiAgLy8vIFRoaXMgaXMgbW9zdGx5IGltcG9ydGFudCBmb3IgZGVmYXVsdCBidXR0b24sIHdoZXJlIEVOVEVSIG9uIGFueSBjb250cm9sIHRyaWdnZXJzIGNsaWNrIGV2ZW50IG9uIHRoZSBidXR0b24uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIFNob3VsZEFkZEVudGVyQXNLZXlFdmVudCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRXZlbnRzUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9HdWlFdmVudHNQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbkcsT0FBTyxFQUNMLE1BQU0sRUFDTixlQUFlLEVBS2YsT0FBTyxFQUtQLGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdsRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBQ3JELHdCQUF3QjtRQUN0QixNQUFNLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQztRQUNwRCxNQUFNLENBQUMsMkJBQTJCLEdBQUcsa0JBQWtCLENBQUMsNkJBQTZCLENBQUM7UUFDdEYsTUFBTSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7UUFDeEQsTUFBTSxDQUFDLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxnQkFB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QyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsK0JBQStCLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBUU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQXVCLEVBQUUsSUFBWTtRQUNyRixJQUFJLFNBQVMsR0FBaUMsU0FBUyxDQUFDO1FBR3hELElBQUksU0FBUyxJQUFJLElBQUk7WUFDbkIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsQ0FBYyxTQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDeEgsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQzVCLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzs7WUFFM0IsT0FBTyxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZILE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBTU8sTUFBTSxDQUFDLFVBQVU7UUFDdkIsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFJTyxNQUFNLENBQUMscUJBQXFCO0lBQ3BDLENBQUM7SUFPTyxNQUFNLENBQUMsd0JBQXdCO1FBQ3JDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDdHJsQnV0dG9uVHlwZUd1aSwgSW50ZXJuYWxJbnRlcmZhY2UsIExvZ2dlciwgTWdDb250cm9sVHlwZSwgTWlzY30gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnRzLFxyXG4gIEV2ZW50c1Byb2Nlc3NvcixcclxuICBHdWlNZ0NvbnRyb2wsXHJcbiAgR3VpTWdGb3JtLFxyXG4gIElUYXNrLFxyXG4gIExhc3RGb2N1c2VkVmFsLFxyXG4gIE1hbmFnZXIsXHJcbiAgTWdDb250cm9sQmFzZSxcclxuICBNZ0Zvcm1CYXNlLFxyXG4gIE1nVGltZXIsXHJcbiAgTW9kaWZpZXJzLFxyXG4gIFJ1bnRpbWVDb250ZXh0QmFzZVxyXG59IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHtNZ0NvbnRyb2x9IGZyb20gJy4vZ3VpL01nQ29udHJvbCc7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50fSBmcm9tICcuL2V2ZW50L1J1blRpbWVFdmVudCc7XHJcbmltcG9ydCB7TWdGb3JtfSBmcm9tICcuL2d1aS9NZ0Zvcm0nO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSAnLi90YXNrcy9NR0RhdGEnO1xyXG5pbXBvcnQge1JDVGltZXJ9IGZyb20gJy4vdGFza3MvUkNUaW1lcic7XHJcbmltcG9ydCB7TUdEYXRhQ29sbGVjdGlvbn0gZnJvbSAnLi90YXNrcy9NR0RhdGFDb2xsZWN0aW9uJztcclxuaW1wb3J0IHtUYXNrfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQge0V2ZW50c01hbmFnZXJ9IGZyb20gJy4vZXZlbnQvRXZlbnRzTWFuYWdlcic7XHJcbmltcG9ydCB7TGFuZ3VhZ2VEYXRhfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQge0VudlBhcmFtc1RhYmxlfSBmcm9tICcuL2Vudi9FbnZWYXJpYWJsZXNUYWJsZSc7XHJcbmltcG9ydCB7TGFzdEZvY3VzZWRNYW5hZ2VyfSBmcm9tICcuL3J0L0xhc3RGb2N1c2VkTWFuYWdlcic7XHJcbmltcG9ydCB7U2VydmVyQ29uZmlnfSBmcm9tICcuL1NlcnZlckNvbmZpZyc7XHJcblxyXG5leHBvcnQgY2xhc3MgR3VpRXZlbnRzUHJvY2Vzc29yIGV4dGVuZHMgRXZlbnRzUHJvY2Vzc29yIHtcclxuICBSZWdpc3RlclN1YmNsYXNzSGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICBFdmVudHMuRm9jdXNFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wcm9jZXNzRm9jdXM7XHJcbiAgICBFdmVudHMuRm9jdXNPbk5vbk1hZ2ljQ29udHJvbEV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLnByb2Nlc3NGb2N1c09uTm9uTWFnaWNDb250cm9sO1xyXG4gICAgRXZlbnRzLk1vdXNlVXBFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wcm9jZXNzTW91c2VVcDtcclxuICAgIEV2ZW50cy5TZWxlY3Rpb25FdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wcm9jZXNzU2VsZWN0aW9uO1xyXG4gICAgRXZlbnRzLkRpc3Bvc2VFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wcm9jZXNzRGlzcG9zZTtcclxuICAgIEV2ZW50cy5UaW1lckV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLlByb2Nlc3NUaW1lcjtcclxuICAgIEV2ZW50cy5UYWJsZVJlc2l6ZUV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLnByb2Nlc3NUYWJsZVJlc2l6ZTtcclxuICAgIEV2ZW50cy5HZXRSb3dzRGF0YUV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLnByb2Nlc3NHZXRSb3dzRGF0YTtcclxuICAgIEV2ZW50cy5Ob25QYXJrYWJsZUxhc3RQYXJrZWRDdHJsRXZlbnQgPSBHdWlFdmVudHNQcm9jZXNzb3IuT25Ob25QYXJrYWJsZUxhc3RQYXJrZWRDdHJsO1xyXG4gICAgRXZlbnRzLlNob3dTZXNzaW9uU3RhdGlzdGljc0V2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLlNob3dTZXNzaW9uU3RhdGlzdGljcztcclxuXHJcbiAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZ0V2ZW50ID0gTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnLmJpbmQoTG9nZ2VyLkluc3RhbmNlKTtcclxuICAgIEV2ZW50cy5Xcml0ZUVycm9yVG9Mb2dFdmVudCA9IExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2cuYmluZChMb2dnZXIuSW5zdGFuY2UpO1xyXG4gICAgRXZlbnRzLldyaXRlV2FybmluZ1RvTG9nRXZlbnQgPSBMb2dnZXIuSW5zdGFuY2UuV3JpdGVXYXJuaW5nVG9Mb2dXaXRoTXNnLmJpbmQoTG9nZ2VyLkluc3RhbmNlKTtcclxuICAgIEV2ZW50cy5TaG91bGRMb2dFdmVudCA9IExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2cuYmluZChMb2dnZXIuSW5zdGFuY2UpO1xyXG4gICAgRXZlbnRzLldyaXRlR3VpVG9Mb2dFdmVudCA9IExvZ2dlci5JbnN0YW5jZS5Xcml0ZUd1aVRvTG9nLmJpbmQoTG9nZ2VyLkluc3RhbmNlKTtcclxuICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nRXZlbnQgPSBMb2dnZXIuSW5zdGFuY2UuV3JpdGVEZXZUb0xvZy5iaW5kKExvZ2dlci5JbnN0YW5jZSk7XHJcblxyXG4gICAgRXZlbnRzLlRyYW5zbGF0ZUV2ZW50ID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlLnRyYW5zbGF0ZS5iaW5kKExhbmd1YWdlRGF0YS5JbnN0YW5jZSk7XHJcblxyXG4gICAgRXZlbnRzLlBlZWtFbmRPZldvcmtFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5wZWVrRW5kT2ZXb3JrO1xyXG5cclxuICAgIEV2ZW50cy5UcmFuc2xhdGVMb2dpY2FsTmFtZUV2ZW50ID0gRW52UGFyYW1zVGFibGUuSW5zdGFuY2UudHJhbnNsYXRlLmJpbmQoRW52UGFyYW1zVGFibGUuSW5zdGFuY2UpO1xyXG4gICAgRXZlbnRzLkdldE1haW5Qcm9ncmFtRXZlbnQgPSBHdWlFdmVudHNQcm9jZXNzb3IuZ2V0TWFpblByb2dyYW07XHJcbiAgICBFdmVudHMuR2V0TWVzc2FnZVN0cmluZ0V2ZW50ID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlLmdldENvbnN0TWVzc2FnZS5iaW5kKExhbmd1YWdlRGF0YS5JbnN0YW5jZSk7XHJcblxyXG4gICAgRXZlbnRzLkN0cmxGb2N1c0V2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLnByb2Nlc3NDdHJsRm9jdXM7XHJcbiAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHRFdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5HZXRSdW50aW1lQ29udGV4dDtcclxuICAgIEV2ZW50cy5TYXZlTGFzdENsaWNrZWRDdHJsRXZlbnQgPSBHdWlFdmVudHNQcm9jZXNzb3IuU2F2ZUxhc3RDbGlja2VkQ29udHJvbE5hbWU7XHJcbiAgICBFdmVudHMuU2F2ZUxhc3RDbGlja0luZm9FdmVudCA9IEd1aUV2ZW50c1Byb2Nlc3Nvci5TYXZlTGFzdENsaWNrSW5mbztcclxuXHJcblxyXG4gICAgRXZlbnRzLk9uSXNMb2dvblJUTEV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLklzTG9nb25SVEw7XHJcbiAgICBFdmVudHMuU2hvdWxkQWRkRW50ZXJBc0tleUV2ZW50ID0gR3VpRXZlbnRzUHJvY2Vzc29yLlNob3VsZEFkZEVudGVyQXNLZXlFdmVudDtcclxuXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IENUT1IgPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlUYXNrXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ0NvbnRyb2xcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIHByb2Nlc3NDdHJsRm9jdXMoaVRhc2s6IElUYXNrLCBtZ0NvbnRyb2w6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIExhc3RGb2N1c2VkTWFuYWdlci5zZXRMYXN0Rm9jdXNlZENvbnRyb2woPFRhc2s+aVRhc2ssIG1nQ29udHJvbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBcImZvY3VzXCIgZXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWx1ZVwiPnRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+dGhlIGxpbmUgb2YgbXVsdGlsaW5lIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gVFJVRSBpZiBNYWdpYyBpbnRlcm5hbCBydWxlcyBhbGxvdyB1cyB0byBwZXJmb3JtIHRoZSBmb2N1cy5cclxuICAvLy8gICBzb21ldGltZXMsIE1hZ2ljIGZvcmNlcyB1cyB0byByZXR1cm4gdG8gdGhlIG9yaWdpbmFsIGNvbnRyb2wgdGh1cyBGQUxTRSB3aWxsIGJlIHJldHVybmVkLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvY2Vzc0ZvY3VzKGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIsIGlzUHJvZHVjZUNsaWNrOiBib29sZWFuLCBvbk11bHRpTWFyazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sID0gPE1nQ29udHJvbD5ndWlNZ0N0cmw7XHJcbiAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRMaW5lQW5kQ29kZUFuZElzUHJvZHVjdENsaWNrKG1nQ29udHJvbCwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfRk9DVVMsIGxpbmUsIGlzUHJvZHVjZUNsaWNrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wcm9jZXNzIFwiZm9jdXNcIiBldmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPnRoZSBjb250cm9sPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzRm9jdXNPbk5vbk1hZ2ljQ29udHJvbChndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCk6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sID0gPE1nQ29udHJvbD5ndWlNZ0N0cmw7XHJcbiAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0ZPQ1VTX09OX05PTl9NQUdJQ19DT05UUk9MLCBtZ0NvbnRyb2wuZ2V0RGlzcGxheUxpbmUodHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnByb2Nlc3MgXCJjbGlja1wiIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLzxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+IHRoZSBsaW5lIG9mIHRoZSBtdWx0aWxpbmUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWx1ZVwiPnRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvY2Vzc01vdXNlVXAoZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbCA9IDxNZ0NvbnRyb2w+Z3VpTWdDdHJsO1xyXG4gICAgbGV0IHJ0RXZ0ID0gbmV3IFJ1blRpbWVFdmVudChtZ0NvbnRyb2wsIGxpbmUsIHRydWUpO1xyXG4gICAgbGV0IHByb2R1Y2VDbGljazogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgaWYgKG1nQ29udHJvbC5UeXBlID09PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9CVVRUT04gJiYgZ3VpTWdDdHJsLkJ1dHRvblN0eWxlID09PSBDdHJsQnV0dG9uVHlwZUd1aS5IeXBlcnRleHQpXHJcbiAgICAgIHByb2R1Y2VDbGljayA9IGZhbHNlO1xyXG5cclxuICAgIHJ0RXZ0LnNldFByb2R1Y2VDbGljayhwcm9kdWNlQ2xpY2spO1xyXG4gICAgcnRFdnQuc2V0SW50ZXJuYWwoSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfTU9VU0VVUCk7XHJcbiAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZFRvVGFpbChydEV2dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmVsZWFzZSByZWZlcmVuY2VzIHRvIG1nRGF0YSBhbmQgdG8gdGhlIHRhc2sgaW4gb3JkZXIgdG8gbGV0IHRoZSBnYyB0byBmcmVlIHRoZSBtZW1vcnkuXHJcbiAgLy8vICAgVGhpcyBjb2RlIHdhcyBtb3ZlZCBmcm9tIHByb2Nlc3NDbG9zZSBpbiBvcmRlciB0byBjbGVhbiBhbHNvIHdoZW4gdGhlIFwib3BlbiB3aW5kb3cgPSBOT1wiIChub24gaW50ZXJhY3RpdmUgdGFza3MpLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3JtXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzRGlzcG9zZShndWlNZ0Zvcm06IEd1aU1nRm9ybSk6IHZvaWQge1xyXG4gICAgbGV0IGZvcm0gPSA8TWdGb3JtPmd1aU1nRm9ybTtcclxuICAgIGxldCB0YXNrID0gPFRhc2s+Zm9ybS5nZXRUYXNrKCk7XHJcbiAgICBsZXQgbWdkOiBNR0RhdGEgPSB0YXNrLmdldE1HRGF0YSgpO1xyXG5cclxuICAgIFJDVGltZXIuU3RvcEFsbChtZ2QpO1xyXG5cclxuICAgIGlmIChtZ2QuSXNBYm9ydGluZylcclxuICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5kZWxldGVNR0RhdGFUcmVlKG1nZC5HZXRJZCgpKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wcm9jZXNzIFwidGltZXJcIiBldmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nVGltZXJcIj5vYmplY3Qgb2YgJ01nVGltZXInIGNsYXNzPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBQcm9jZXNzVGltZXIobWdUaW1lcjogTWdUaW1lcik6IHZvaWQge1xyXG4gICAgbGV0IG1nZDogTUdEYXRhID0gKDxSQ1RpbWVyPm1nVGltZXIpLkdldE1nZGF0YSgpO1xyXG4gICAgbGV0IHRhc2sgPSBtZ2QuZ2V0Rmlyc3RUYXNrKCk7XHJcblxyXG4gICAgLy8gTWdUaW1lci9SQ1RpbWVyIHVzZXMgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGJ1dCBSdW50aW1lRXZlbnQgdXNlcyBpbnRlcnZhbCBpbiBzZWNvbmRzXHJcbiAgICAvLyBzbyBjb252ZXJ0IGl0IHRvIHNlY29uZHMuXHJcbiAgICBsZXQgc2Vjb25kczogbnVtYmVyID0gTWF0aC5mbG9vcigoKDxSQ1RpbWVyPm1nVGltZXIpLlRpbWVySW50ZXJ2YWxNaWxpU2Vjb25kcykgLyAxMDAwKTtcclxuICAgIGxldCBpc0lkbGU6IGJvb2xlYW4gPSAoPFJDVGltZXI+bWdUaW1lcikuSXNJZGxlVGltZXI7XHJcblxyXG4gICAgaWYgKG1nZC5Jc0Fib3J0aW5nKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IHJ0RXZ0ID0gbmV3IFJ1blRpbWVFdmVudCh0YXNrLCB0cnVlKTtcclxuICAgIHJ0RXZ0LnNldFRpbWVyKHNlY29uZHMsIG1nZC5HZXRJZCgpLCBpc0lkbGUpO1xyXG4gICAgcnRFdnQuc2V0TWFpblByZ0NyZWF0b3IocnRFdnQuZ2V0VGFzaygpKTtcclxuXHJcbiAgICBpZiAoIWlzSWRsZSlcclxuICAgICAgcnRFdnQuc2V0Q3RybCg8TWdDb250cm9sPnRhc2suZ2V0TGFzdFBhcmtlZEN0cmwoKSk7XHJcblxyXG4gICAgcnRFdnQuc2V0SW50ZXJuYWwoSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RJTUVSKTtcclxuICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuYWRkVG9UYWlsKHJ0RXZ0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wcm9jZXNzIFJlc2l6ZSBvZiB0aGUgcGFnZSwgZm9yIHRhYmxlIGNvbnRyb2xzIG9ubHk8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibmV3Um93c0luUGFnZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvY2Vzc1RhYmxlUmVzaXplKGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBuZXdSb3dzSW5QYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgbGV0IG1nQ29udHJvbCA9IDxNZ0NvbnRyb2w+Z3VpTWdDdHJsO1xyXG4gICAgICBpZiAobWdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgICAgIGxldCBydEV2dCA9IG5ldyBSdW5UaW1lRXZlbnQobWdDb250cm9sLCBuZXdSb3dzSW5QYWdlLCB0cnVlKTtcclxuICAgICAgICAgIHJ0RXZ0LnNldEludGVybmFsKEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRVNJWkUpO1xyXG4gICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRUb1RhaWwocnRFdnQpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBzZXQgZGF0YSBmb3Igcm93PC9zdW1tYXJ5PlxyXG4gIC8vLzxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50YWJsZSBjb250cm9sPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNlbmRBbGxcIj5pZiB0cnVlICwgYWx3YXlzIHNlbmQgYWxsIHJlY29yZHM8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIHByb2Nlc3NHZXRSb3dzRGF0YShndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZGVzaXJlZFRvcEluZGV4OiBudW1iZXIsIHNlbmRBbGw6IGJvb2xlYW4sIGxhc3RGb2N1c2VkVmFsOiBMYXN0Rm9jdXNlZFZhbCk6IHZvaWQge1xyXG4gICAgICBsZXQgbWdDb250cm9sID0gPE1nQ29udHJvbD5ndWlNZ0N0cmw7XHJcblxyXG4gICAgICBpZiAobWdDb250cm9sICE9IG51bGwgJiYgbWdDb250cm9sLlR5cGUgPT09IE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX1RBQkxFKSB7XHJcbiAgICAgICAgICBsZXQgcnRFdnQgPSBuZXcgUnVuVGltZUV2ZW50KG1nQ29udHJvbCwgZGVzaXJlZFRvcEluZGV4LCB0cnVlKTtcclxuICAgICAgICAgIHJ0RXZ0LnNldEludGVybmFsKEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ST1dfREFUQV9DVVJSX1BBR0UpO1xyXG4gICAgICAgICAgcnRFdnQuc2V0U2VuZEFsbChzZW5kQWxsKTtcclxuICAgICAgICAgIHJ0RXZ0Lkxhc3RGb2N1c2VkVmFsID0gbGFzdEZvY3VzZWRWYWw7XHJcbiAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLmFkZFRvVGFpbChydEV2dCk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT50cmlnZ2VyZWQgYnkgZ3VpLiBlbmFibGUvZGlzYWJsZSBhIGdpdmVuIGFjdCBsaXN0Ljwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhY3RMaXN0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImVuYWJsZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcHJvY2Vzc0VuYWJsZUFjdHMoZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGFjdExpc3Q6IG51bWJlcltdLCBlbmFibGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgbGV0IG1nQ29udHJvbCA9IDxNZ0NvbnRyb2w+Z3VpTWdDdHJsO1xyXG4gICAgICBsZXQgcnRFdnQgPSBuZXcgUnVuVGltZUV2ZW50KG1nQ29udHJvbCwgdHJ1ZSk7XHJcbiAgICAgIHJ0RXZ0LnNldEludGVybmFsKGVuYWJsZSA/IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FTkFCTEVfRVZFTlRTIDogSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RJU0FCTEVfRVZFTlRTKTtcclxuICAgICAgcnRFdnQuc2V0QWN0RW5hYmxlTGlzdChhY3RMaXN0KTtcclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRUb1RhaWwocnRFdnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSWYgY3VycmVudCBjb250cm9sIGJlY29tZXMgaW52aXNpYmxlL2Rpc2FibGVkL25vbiBwYXJrYWJsZSwgdGhlbiBwdXQgTUdfQUNUX1RCTF9OWFRGTEQgaW50byBxdWV1ZS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj5jb250cm9sIHdob3NlIHByb3BlcnR5IGlzIGNoYW5nZWQuPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBPbk5vblBhcmthYmxlTGFzdFBhcmtlZEN0cmwoY3RybDogR3VpTWdDb250cm9sKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBcInNlbGVjdGlvblwiIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+dGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50aGUgY29udHJvbCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPiB0aGUgbGluZSBvZiB0aGUgbXVsdGlsaW5lIGNvbnRyb2wgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb2R1Y2VDbGlja1wiPlRPRE8gPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzU2VsZWN0aW9uKHZhbDogc3RyaW5nLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCBwcm9kdWNlQ2xpY2s6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBtZ0NvbnRyb2wgPSA8TWdDb250cm9sPmd1aU1nQ3RybDtcclxuICAgIGlmIChtZ0NvbnRyb2wuVHlwZSA9PT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQlVUVE9OICYmIG1nQ29udHJvbC5nZXRGb3JtKCkuZ2V0VGFzaygpLmdldExhc3RQYXJrZWRDdHJsKCkgIT09IG1nQ29udHJvbClcclxuICAgICAgcHJvZHVjZUNsaWNrID0gdHJ1ZTtcclxuXHJcbiAgICBpZihndWlNZ0N0cmwuQ29ubmVjdGVkQ29udHJvbClcclxuICAgIHtcclxuICAgICAgbGV0IHJ0RXZ0ID0gbmV3IFJ1blRpbWVFdmVudChtZ0NvbnRyb2wsICtsaW5lLCB0cnVlKTtcclxuICAgICAgcnRFdnQuc2V0SW50ZXJuYWwoSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1pPT00pO1xyXG4gICAgICBydEV2dC5zZXRQcm9kdWNlQ2xpY2socHJvZHVjZUNsaWNrKTtcclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRUb1RhaWwocnRFdnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBydEV2dCA9IG5ldyBSdW5UaW1lRXZlbnQobWdDb250cm9sLCArbGluZSwgdHJ1ZSk7XHJcbiAgICAgIHJ0RXZ0LnNldEludGVybmFsKEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TRUxFQ1RJT04pO1xyXG4gICAgICBydEV2dC5zZXRWYWx1ZSh2YWwpO1xyXG4gICAgICBydEV2dC5zZXRQcm9kdWNlQ2xpY2socHJvZHVjZUNsaWNrKTtcclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRUb1RhaWwocnRFdnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibW9kaWZpZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwia2V5Q29kZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJlbmRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGV4dFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc0FjdENoYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3VnZ2VzdGVkVmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZG90TmV0QXJnc1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21ib0lzRHJvcERvd25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhhbmRsZWRcIj5ib29sZWFuIHZhcmlhYmxlIGV2ZW50IGlzIGhhbmRsZWQgb3Igbm90LjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIG9ubHkgaWYgd2UgaGF2ZSBoYW5kbGVkIHRoZSBLZXlEb3duIGV2ZW50IChvdGhlcndpc2UgdGhlIENMUiBzaG91bGQgaGFuZGxlKS4gSWYgdHJ1ZSBtYWdpYyB3aWxsIGhhbmRsZSBlbHNlIENMUiB3aWxsIGhhbmRsZS48L3JldHVybnM+XHJcbiAgcHJvY2Vzc0tleURvd24oZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0sIGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLFxyXG4gICAgICAgICAgICAgICAgIGtleUNvZGU6IG51bWJlciwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICBpc0FjdENoYXI6IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgaGFuZGxlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgLy8gdGltZSBvZiBsYXN0IHVzZXIgYWN0aW9uIGZvciBJRExFIGZ1bmN0aW9uXHJcbiAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuTGFzdEFjdGlvblRpbWUgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG5cclxuICAgIC8vIERPV04gb3IgVVAgaW52b2tlZCBvbiBhIFNFTEVDVC9SQURJTyBjb250cm9sXHJcbiAgICByZXR1cm4gc3VwZXIucHJvY2Vzc0tleURvd24oZ3VpTWdGb3JtLCBndWlNZ0N0cmwsIG1vZGlmaWVyLCBrZXlDb2RlLCBzdGFydCwgZW5kLCB0ZXh0LCBpc0FjdENoYXIsIHN1Z2dlc3RlZFZhbHVlLCAgaGFuZGxlZCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+cGVlayB0aGUgdmFsdWUgb2YgdGhlIFwiZW5kIG9mIHdvcmtcIiBmbGFnLjwvc3VtbWFyeT5cclxuICBwcml2YXRlIHN0YXRpYyBwZWVrRW5kT2ZXb3JrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuZ2V0RW5kT2ZXb3JrKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+VGhpcyBtZXRob2QgcmV0dXJucyBNYWluIHByb2dyYW0gZm9yIGEgY3RsPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPmFjdGl2ZS90YXJnZXQgY29udGV4dCAoaXJlbGV2YW50IGZvciBSQyk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0bElkeFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRNYWluUHJvZ3JhbShjb250ZXh0SUQ6IG51bWJlciwgY3RsSWR4OiBudW1iZXIpOiBUYXNrIHtcclxuICAgIHJldHVybiBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldE1haW5Qcm9nQnlDdGxJZHgoY29udGV4dElELCBjdGxJZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIFJ1bnRpbWVDb250ZXh0IG9mIENsaWVudE1hbmFnZXIuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIEdldFJ1bnRpbWVDb250ZXh0KGNvbnRleHRJRDogc3RyaW5nKTogUnVudGltZUNvbnRleHRCYXNlIHtcclxuICAgIHJldHVybiBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNhdmVzIHRoZSBsYXN0IGNsaWNrZWQgY29udHJvbCBpbiBhIHJlc3BlY3RpdmUgUnVudGltZUNvbnRleHRCYXNlLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdDb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsTmFtZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU2F2ZUxhc3RDbGlja2VkQ29udHJvbE5hbWUoY3RybE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLkluc3RhbmNlLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjdHJsTmFtZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2F2ZXMgdGhlIGxhc3QgY2xpY2tlZCBpbmZvcm1hdGlvbi5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udHJvbE5hbWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIlhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIllcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mZnNldFhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mZnNldFlcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIkxhc3RDbGlja0Nvb3JkaW5hdGVzQXJlSW5QaXhlbHNcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIFNhdmVMYXN0Q2xpY2tJbmZvKGNvbnRyb2xOYW1lOiBzdHJpbmcsIFg6IG51bWJlciwgWTogbnVtYmVyLCBvZmZzZXRYOiBudW1iZXIsIG9mZnNldFk6IG51bWJlciwgTGFzdENsaWNrQ29vcmRpbmF0ZXNBcmVJblBpeGVsczogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLkluc3RhbmNlLlNhdmVMYXN0Q2xpY2tJbmZvKGNvbnRyb2xOYW1lLCBYLCBZLCBvZmZzZXRYLCBvZmZzZXRZLCBMYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUHJvY2VzcyBwcmVzcyBldmVudC4gTW92ZSBGb2N1cyBhbmQgcmFpc2UgaW50ZXJuYWwgcHJlc3MgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdDdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBQcm9jZXNzUHJlc3MoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0sIGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGxldCBtZ0NvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT5ndWlNZ0N0cmw7XHJcblxyXG4gICAgLy8gVGhlIGludGVybmFsIHByZXNzIGV2ZW50IGlzIGZpcmVkIGlmIHByZXNzIGV2ZW50IGlzIGZpcmVkIG9uIGZvcm0gb3Igc3ViZm9ybVxyXG4gICAgaWYgKG1nQ29udHJvbCA9PSBudWxsKVxyXG4gICAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoVGFza0FuZENvZGUoKDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybSkuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUKTtcclxuICAgIGVsc2UgaWYgKG1nQ29udHJvbC5pc1N1YmZvcm0oKSlcclxuICAgICAgbWdDb250cm9sLk9uU3ViZm9ybUNsaWNrKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhDdHJsQW5kQ29kZUFuZExpbmUobWdDb250cm9sLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9ISVQsIGxpbmUpO1xyXG5cclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhDdHJsQW5kQ29kZUFuZExpbmUobWdDb250cm9sLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUFJFU1MsIGxpbmUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTaG91bGQgd2Ugc2hvdyBsb2dvbiB3aW5kb3cgUlRMIG9yIG5vdC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgSXNMb2dvblJUTCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuSXNMb2dvblJUTCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU2hvd1Nlc3Npb25TdGF0aXN0aWNzKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBJbiBSSUEsIGVudGVyIHdpbGwgY2F1c2UgYSBrZXlib2FyZCBldmVudCBhY2NvcmRpbmcgdG8gdGhlIE9TLlxyXG4gIC8vLyBUaGlzIGlzIG1vc3RseSBpbXBvcnRhbnQgZm9yIGRlZmF1bHQgYnV0dG9uLCB3aGVyZSBFTlRFUiBvbiBhbnkgY29udHJvbCB0cmlnZ2VycyBjbGljayBldmVudCBvbiB0aGUgYnV0dG9uLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBTaG91bGRBZGRFbnRlckFzS2V5RXZlbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
@@ -9,7 +9,7 @@ export class BrowserEscEventCommand extends EventCommand {
9
9
  super(InternalInterface.MG_ACT_BROWSER_ESC);
10
10
  this.CloseSubformOnly = false;
11
11
  }
12
- SerializeCommandData(refHasChildElements) {
12
+ SerializeCommandData() {
13
13
  let helper = new CommandSerializationHelper();
14
14
  helper.SerializeTaskTag(this.TaskTag);
15
15
  helper.SerializeMagicEvent(this.MagicEvent);
@@ -21,4 +21,4 @@ export class BrowserEscEventCommand extends EventCommand {
21
21
  return NString.Format('[{0}{1} in {2}]', this.EventDescription, this.CloseSubformOnly ? ' Subform Only' : NString.Empty, isNullOrUndefined(this.Task) ? NString.Empty : this.Task.getTaskInfo());
22
22
  }
23
23
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJvd3NlckVzY0V2ZW50Q29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQnJvd3NlckVzY0V2ZW50Q29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQVksTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHekMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFlBQVk7SUFPdEQ7UUFDRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQU45QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFPbEMsQ0FBQztJQVFELG9CQUFvQixDQUFDLG1CQUFzQztRQUN6RCxJQUFJLE1BQU0sR0FBK0IsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1FBRTFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEQsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQ0gsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFDdEQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDL0csQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRDb21tYW5kIH0gZnJvbSAnLi9FdmVudENvbW1hbmQnO1xyXG5pbXBvcnQgeyBDb21tYW5kU2VyaWFsaXphdGlvbkhlbHBlciB9IGZyb20gJy4vQ29tbWFuZFNlcmlhbGl6YXRpb25IZWxwZXInO1xyXG5pbXBvcnQgeyBJbnRlcm5hbEludGVyZmFjZSB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uLy4uL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTlN0cmluZywgUmVmUGFyYW0gfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IElDbGllbnRUb1NlcnZlckNvbW1hbmRJbmZvIH0gZnJvbSAnLi4vSUNsaWVudFRvU2VydmVyQ29tbWFuZEluZm8nO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCJ1dGlsXCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEJyb3dzZXJFc2NFdmVudENvbW1hbmQgZXh0ZW5kcyBFdmVudENvbW1hbmQgaW1wbGVtZW50cyBJQ2xpZW50VG9TZXJ2ZXJDb21tYW5kSW5mbyB7XHJcblxyXG4gIENsb3NlU3ViZm9ybU9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9CUk9XU0VSX0VTQyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGFzQ2hpbGRFbGVtZW50c1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBTZXJpYWxpemVDb21tYW5kRGF0YShyZWZIYXNDaGlsZEVsZW1lbnRzOiBSZWZQYXJhbTxib29sZWFuPik6IHN0cmluZyB7XHJcbiAgICBsZXQgaGVscGVyOiBDb21tYW5kU2VyaWFsaXphdGlvbkhlbHBlciA9IG5ldyBDb21tYW5kU2VyaWFsaXphdGlvbkhlbHBlcigpO1xyXG5cclxuICAgIGhlbHBlci5TZXJpYWxpemVUYXNrVGFnKHRoaXMuVGFza1RhZyk7XHJcbiAgICBoZWxwZXIuU2VyaWFsaXplTWFnaWNFdmVudCh0aGlzLk1hZ2ljRXZlbnQpO1xyXG4gICAgaGVscGVyLlNlcmlhbGl6ZUF0dHJpYnV0ZShDb25zdEludGVyZmFjZS5NR19BVFRSX09CSkVDVCwgXCIxXCIpO1xyXG4gICAgaGVscGVyLlNlcmlhbGl6ZUNsb3NlU3ViZm9ybU9ubHkodGhpcy5DbG9zZVN1YmZvcm1Pbmx5KTtcclxuXHJcbiAgICByZXR1cm4gaGVscGVyLkdldFN0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tbWFuZEluZm8oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBOU3RyaW5nLkZvcm1hdCgnW3swfXsxfSBpbiB7Mn1dJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgdGhpcy5FdmVudERlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB0aGlzLkNsb3NlU3ViZm9ybU9ubHkgPyAnIFN1YmZvcm0gT25seScgOiBOU3RyaW5nLkVtcHR5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5UYXNrKSA/IE5TdHJpbmcuRW1wdHkgOiB0aGlzLlRhc2suZ2V0VGFza0luZm8oKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJvd3NlckVzY0V2ZW50Q29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQnJvd3NlckVzY0V2ZW50Q29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUU3QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHdkMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFlBQVk7SUFPdEQ7UUFDRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQU45QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFPbEMsQ0FBQztJQVFELG9CQUFvQjtRQUNsQixJQUFJLE1BQU0sR0FBK0IsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1FBRTFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEQsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQ0gsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFDdEQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDL0csQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudENvbW1hbmR9IGZyb20gJy4vRXZlbnRDb21tYW5kJztcclxuaW1wb3J0IHtDb21tYW5kU2VyaWFsaXphdGlvbkhlbHBlcn0gZnJvbSAnLi9Db21tYW5kU2VyaWFsaXphdGlvbkhlbHBlcic7XHJcbmltcG9ydCB7SW50ZXJuYWxJbnRlcmZhY2V9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tICcuLi8uLi9Db25zdEludGVyZmFjZSc7XHJcbmltcG9ydCB7TlN0cmluZ30gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQge0lDbGllbnRUb1NlcnZlckNvbW1hbmRJbmZvfSBmcm9tICcuLi9JQ2xpZW50VG9TZXJ2ZXJDb21tYW5kSW5mbyc7XHJcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJ1dGlsXCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEJyb3dzZXJFc2NFdmVudENvbW1hbmQgZXh0ZW5kcyBFdmVudENvbW1hbmQgaW1wbGVtZW50cyBJQ2xpZW50VG9TZXJ2ZXJDb21tYW5kSW5mbyB7XHJcblxyXG4gIENsb3NlU3ViZm9ybU9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9CUk9XU0VSX0VTQyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGFzQ2hpbGRFbGVtZW50c1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBTZXJpYWxpemVDb21tYW5kRGF0YSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGhlbHBlcjogQ29tbWFuZFNlcmlhbGl6YXRpb25IZWxwZXIgPSBuZXcgQ29tbWFuZFNlcmlhbGl6YXRpb25IZWxwZXIoKTtcclxuXHJcbiAgICBoZWxwZXIuU2VyaWFsaXplVGFza1RhZyh0aGlzLlRhc2tUYWcpO1xyXG4gICAgaGVscGVyLlNlcmlhbGl6ZU1hZ2ljRXZlbnQodGhpcy5NYWdpY0V2ZW50KTtcclxuICAgIGhlbHBlci5TZXJpYWxpemVBdHRyaWJ1dGUoQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9PQkpFQ1QsIFwiMVwiKTtcclxuICAgIGhlbHBlci5TZXJpYWxpemVDbG9zZVN1YmZvcm1Pbmx5KHRoaXMuQ2xvc2VTdWJmb3JtT25seSk7XHJcblxyXG4gICAgcmV0dXJuIGhlbHBlci5HZXRTdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGdldENvbW1hbmRJbmZvKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoJ1t7MH17MX0gaW4gezJ9XSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHRoaXMuRXZlbnREZXNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgdGhpcy5DbG9zZVN1YmZvcm1Pbmx5ID8gJyBTdWJmb3JtIE9ubHknIDogTlN0cmluZy5FbXB0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgIGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuVGFzaykgPyBOU3RyaW5nLkVtcHR5IDogdGhpcy5UYXNrLmdldFRhc2tJbmZvKCkpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -5,11 +5,11 @@ export class ClientOriginatedCommand {
5
5
  get ShouldSerializeRecords() {
6
6
  return true;
7
7
  }
8
- SerializeCommandData(refHasChildElements) {
8
+ SerializeCommandData() {
9
9
  return null;
10
10
  }
11
11
  SerializeDataAfterCommand() {
12
12
  return null;
13
13
  }
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50T3JpZ2luYXRlZENvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NsaWVudE9yaWdpbmF0ZWRDb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sT0FBZ0IsdUJBQXVCO0lBVTNDLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFPRCxvQkFBb0IsQ0FBQyxtQkFBc0M7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQ2xpZW50Q29tbWFuZH0gZnJvbSBcIi4uL0lDbGllbnRDb21tYW5kXCI7XHJcbmltcG9ydCB7UmVmUGFyYW19IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gYmFzZSBjbGFzcyBmb3IgY29tbWFuZHMgY3JlYXRlZCBpbiB0aGUgY2xpZW50XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbGllbnRPcmlnaW5hdGVkQ29tbWFuZCBpbXBsZW1lbnRzIElDbGllbnRDb21tYW5kIHtcclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGF0dHJpYnV0ZSBvZiBjb21tYW5kIHRvIGJlIHNlbnQgdG8gdGhlIHNlcnZlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYWJzdHJhY3QgZ2V0IENvbW1hbmRUeXBlQXR0cmlidXRlKCk6IHN0cmluZztcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyB1c2VkIHRvIHRlbGwgd2hpY2ggY29tbWFuZHMgYXJlIGhhbmRsZWQgbG9jYWxseSBhbmQgc2hvdWxkIG5vdCBiZSBzZXJpYWxpemVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldCBTaG91bGRTZXJpYWxpemUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2hvdWxkIHRoZSBTZXJpYWxpemVSZWNvcmRzIG1ldGhvZCBiZSBjYWxsZWQgZm9yIHRoaXMgY29tbWFuZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0IFNob3VsZFNlcmlhbGl6ZVJlY29yZHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gdmlydHVhbCBtZXRob2QsIHRvIGFsbG93IGNvbW1hbmRzIHRvIHNlcmlhbGl6ZSBzcGVjaWZpYyBkYXRhXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoYXNDaGlsZEVsZW1lbnRzXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFNlcmlhbGl6ZUNvbW1hbmREYXRhKHJlZkhhc0NoaWxkRWxlbWVudHM6IFJlZlBhcmFtPGJvb2xlYW4+KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBlbmFibGUgY29tbWFuZHMgdG8gc2VyaWFsaXplIGV4dHJhIGRhdGEgYWZ0ZXIgdGhlIGNvbW1hbmQgc2VyaWFsaXphdGlvbiAoZS5nLiBleGVjdXRpb24gc3RhY2spXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFNlcmlhbGl6ZURhdGFBZnRlckNvbW1hbmQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50T3JpZ2luYXRlZENvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NsaWVudE9yaWdpbmF0ZWRDb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBZ0IsdUJBQXVCO0lBVTNDLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFPRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQ2xpZW50Q29tbWFuZH0gZnJvbSBcIi4uL0lDbGllbnRDb21tYW5kXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBiYXNlIGNsYXNzIGZvciBjb21tYW5kcyBjcmVhdGVkIGluIHRoZSBjbGllbnRcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsaWVudE9yaWdpbmF0ZWRDb21tYW5kIGltcGxlbWVudHMgSUNsaWVudENvbW1hbmQge1xyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gYXR0cmlidXRlIG9mIGNvbW1hbmQgdG8gYmUgc2VudCB0byB0aGUgc2VydmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhYnN0cmFjdCBnZXQgQ29tbWFuZFR5cGVBdHRyaWJ1dGUoKTogc3RyaW5nO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHVzZWQgdG8gdGVsbCB3aGljaCBjb21tYW5kcyBhcmUgaGFuZGxlZCBsb2NhbGx5IGFuZCBzaG91bGQgbm90IGJlIHNlcmlhbGl6ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0IFNob3VsZFNlcmlhbGl6ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzaG91bGQgdGhlIFNlcmlhbGl6ZVJlY29yZHMgbWV0aG9kIGJlIGNhbGxlZCBmb3IgdGhpcyBjb21tYW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXQgU2hvdWxkU2VyaWFsaXplUmVjb3JkcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyB2aXJ0dWFsIG1ldGhvZCwgdG8gYWxsb3cgY29tbWFuZHMgdG8gc2VyaWFsaXplIHNwZWNpZmljIGRhdGFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhhc0NoaWxkRWxlbWVudHNcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgU2VyaWFsaXplQ29tbWFuZERhdGEoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBlbmFibGUgY29tbWFuZHMgdG8gc2VyaWFsaXplIGV4dHJhIGRhdGEgYWZ0ZXIgdGhlIGNvbW1hbmQgc2VyaWFsaXphdGlvbiAoZS5nLiBleGVjdXRpb24gc3RhY2spXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFNlcmlhbGl6ZURhdGFBZnRlckNvbW1hbmQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=