@kontur.candy/tools 2.129.0 → 2.130.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/distr/Common/AsyncUtils.js +1 -30
  3. package/distr/Common/CandyApiClient/CandyApiClient.js +9 -42
  4. package/distr/Common/CandyApiClient/CandyApiClientContext.js +1 -33
  5. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +0 -4
  6. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +0 -4
  7. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -29
  8. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +0 -4
  9. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -35
  10. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -35
  11. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -37
  12. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +1 -29
  13. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -34
  14. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +1 -28
  15. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +0 -4
  16. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +1 -33
  17. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -29
  18. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +1 -6
  19. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +0 -4
  20. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestResponse.js +0 -4
  21. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +5 -41
  22. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -5
  23. package/distr/Common/CandyApiClient/IsBuffer.js +1 -29
  24. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +0 -4
  25. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +0 -4
  26. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +0 -4
  27. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +0 -4
  28. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +0 -4
  29. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +1 -6
  30. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +0 -4
  31. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +0 -4
  32. package/distr/Common/CandyApiClient/Types/DraftFullId.js +0 -4
  33. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +0 -4
  34. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +1 -6
  35. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +0 -4
  36. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +0 -4
  37. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +1 -6
  38. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +0 -4
  39. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +0 -4
  40. package/distr/Common/CandyApiClient/Types/Guid.js +0 -4
  41. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +1 -6
  42. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +0 -4
  43. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +0 -4
  44. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +1 -6
  45. package/distr/Common/CommonConstants/SectionNames.js +1 -28
  46. package/distr/Common/Comparers.js +8 -30
  47. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +1 -29
  48. package/distr/Common/EndPoints.js +1 -34
  49. package/distr/Common/Errors.js +1 -69
  50. package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -30
  51. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +0 -4
  52. package/distr/Common/Funcs.js +1 -29
  53. package/distr/Common/GFV.js +0 -4
  54. package/distr/Common/Hooks/UseLocalStorage.js +42 -0
  55. package/distr/Common/HttpClient/AuthenticationMode.js +1 -32
  56. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +1 -28
  57. package/distr/Common/HttpClient/FetchImplementation/Fetch.js +0 -4
  58. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +1 -29
  59. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +3 -31
  60. package/distr/Common/HttpClient/HttpClient.js +1 -57
  61. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +0 -4
  62. package/distr/Common/HttpClient/IHttpClient.js +0 -4
  63. package/distr/Common/IntRangeUtils.js +1 -31
  64. package/distr/Common/IterableUtils.js +1 -38
  65. package/distr/Common/KCLangRuntimeUtils.js +3 -38
  66. package/distr/Common/ModelPath/AbsoluteModelPathSet.js +1 -34
  67. package/distr/Common/ModelPath/BuildIterationSequence.js +1 -29
  68. package/distr/Common/ModelPath/EachCurrentCollision.js +1 -6
  69. package/distr/Common/ModelPath/IEquatable.js +0 -4
  70. package/distr/Common/ModelPath/ModelPath.js +1 -54
  71. package/distr/Common/ModelPath/ModelPathBuilder.js +1 -34
  72. package/distr/Common/ModelPath/ModelPathMap.js +1 -41
  73. package/distr/Common/ModelPath/ModelPathSet.js +1 -34
  74. package/distr/Common/ModelPath/PathMatcher.js +1 -28
  75. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -34
  76. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +0 -4
  77. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -29
  78. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -34
  79. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -38
  80. package/distr/Common/NidusClient/INidusClient.js +1 -30
  81. package/distr/Common/NidusClient/NidusClientContext.js +1 -38
  82. package/distr/Common/NidusClient/NidusClientImpl.js +1 -34
  83. package/distr/Common/PathConstants.js +1 -29
  84. package/distr/Common/TypingUtils.js +6 -50
  85. package/distr/Common/UUID.js +1 -30
  86. package/distr/Common/UseAsyncEffect.js +1 -31
  87. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +3 -36
  88. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +1 -29
  89. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -30
  90. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +3 -36
  91. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +3 -36
  92. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -29
  93. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +3 -34
  94. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -28
  95. package/distr/Tools/src/BuildTasks/FSTask.js +3 -30
  96. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -32
  97. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +1 -37
  98. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -34
  99. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +3 -31
  100. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +1 -29
  101. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -31
  102. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +3 -36
  103. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +3 -37
  104. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +2 -37
  105. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +2 -34
  106. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +1 -5
  107. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +1 -5
  108. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +3 -33
  109. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +1 -28
  110. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +3 -30
  111. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +1 -34
  112. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +1 -45
  113. package/distr/Tools/src/BuildTasks/ReadFormSource.js +3 -39
  114. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +3 -33
  115. package/distr/Tools/src/BuildTasks/Version.js +1 -32
  116. package/distr/Tools/src/BuildTasks/WriteFormMeta.js +3 -31
  117. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +1 -30
  118. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +1 -28
  119. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +3 -33
  120. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +1 -34
  121. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +1 -29
  122. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +6 -37
  123. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +6 -47
  124. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +26 -43
  125. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +6 -40
  126. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +6 -38
  127. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +6 -37
  128. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +6 -39
  129. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +6 -37
  130. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +6 -39
  131. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +3 -36
  132. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +3 -36
  133. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +12 -37
  134. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +3 -31
  135. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +3 -31
  136. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +4 -36
  137. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +3 -31
  138. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +0 -4
  139. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +0 -4
  140. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +2 -42
  141. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +3 -36
  142. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -29
  143. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +0 -4
  144. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -30
  145. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +1 -29
  146. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +1 -29
  147. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +1 -30
  148. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +0 -4
  149. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +1 -28
  150. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +3 -31
  151. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +1 -28
  152. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +3 -31
  153. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +6 -40
  154. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}.calc.js +1 -30
  155. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/helpers/setKppValue.js +1 -29
  156. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +1 -34
  157. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +6 -37
  158. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/validations/kppValue.js +1 -29
  159. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +1 -28
  160. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -30
  161. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +1 -28
  162. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +3 -32
  163. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +1 -32
  164. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +1 -29
  165. package/distr/Tools/src/CandyCLI.js +3 -31
  166. package/distr/Tools/src/CheckNodeJsVersion.js +3 -33
  167. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +4 -35
  168. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -34
  169. package/distr/Tools/src/Commons/ErrorUntyped.js +0 -4
  170. package/distr/Tools/src/Commons/EventObject.js +2 -44
  171. package/distr/Tools/src/Commons/ExecUtils.js +1 -29
  172. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -29
  173. package/distr/Tools/src/Commons/FormGlobsUtils.js +3 -36
  174. package/distr/Tools/src/Commons/FsUtils.js +3 -34
  175. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -32
  176. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +2 -33
  177. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -34
  178. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -34
  179. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +0 -4
  180. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -34
  181. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -34
  182. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +2 -34
  183. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -34
  184. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +1 -36
  185. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -34
  186. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -34
  187. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -34
  188. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -34
  189. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +0 -4
  190. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -34
  191. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -34
  192. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +3 -57
  193. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +1 -28
  194. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +3 -36
  195. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +1 -34
  196. package/distr/Tools/src/Commons/Locks/Lock.js +3 -36
  197. package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -34
  198. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +3 -36
  199. package/distr/Tools/src/Commons/Logging/ELKLogger.js +3 -33
  200. package/distr/Tools/src/Commons/Logging/ILogger.js +1 -36
  201. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -41
  202. package/distr/Tools/src/Commons/Logging/Logger.js +3 -36
  203. package/distr/Tools/src/Commons/Logging/StaticLogger.js +1 -38
  204. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -30
  205. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +6 -53
  206. package/distr/Tools/src/Commons/PathPattern.js +1 -34
  207. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -34
  208. package/distr/Tools/src/Commons/TasksCore/BuildTask.js +0 -4
  209. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +3 -89
  210. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +3 -36
  211. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +1 -34
  212. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +3 -36
  213. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +3 -36
  214. package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -28
  215. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +1 -34
  216. package/distr/Tools/src/Commons/TimingUtils.js +1 -29
  217. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -44
  218. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -33
  219. package/distr/Tools/src/GenerateReadMe.js +1 -31
  220. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
  221. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  222. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  223. package/distr/Tools/src/Options/CandyToolOptions.js +1 -28
  224. package/distr/Tools/src/ReadFarmConfig.js +3 -31
  225. package/distr/Tools/src/SelfUpdate.js +4 -36
  226. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1 -5
  227. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +1 -5
  228. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +1 -5
  229. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1 -5
  230. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +1 -5
  231. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +1 -5
  232. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1 -5
  233. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +1 -5
  234. package/package.json +1 -1
@@ -7,15 +7,6 @@ exports.AbsoluteModelPathSet = void 0;
7
7
 
8
8
  var _EachCurrentCollision = require("./EachCurrentCollision");
9
9
 
10
- (function () {
11
- var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
12
- enterModule && enterModule(module);
13
- })();
14
-
15
- var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
16
- return a;
17
- };
18
-
19
10
  class AbsoluteModelPathSet {
20
11
  constructor(eachCurrentCollision = _EachCurrentCollision.EachCurrentCollision.AreSame) {
21
12
  this.hashMap = new Map();
@@ -65,31 +56,7 @@ class AbsoluteModelPathSet {
65
56
  this.hashMap.clear();
66
57
  }
67
58
 
68
- // @ts-ignore
69
- __reactstandin__regenerateByEval(key, code) {
70
- // @ts-ignore
71
- this[key] = eval(code);
72
- }
73
-
74
59
  }
75
60
 
76
61
  exports.AbsoluteModelPathSet = AbsoluteModelPathSet;
77
- ;
78
-
79
- (function () {
80
- var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
81
-
82
- if (!reactHotLoader) {
83
- return;
84
- }
85
-
86
- reactHotLoader.register(AbsoluteModelPathSet, "AbsoluteModelPathSet", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\AbsoluteModelPathSet.ts");
87
- })();
88
-
89
- ;
90
-
91
- (function () {
92
- var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
93
- leaveModule && leaveModule(module);
94
- })();
95
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvQWJzb2x1dGVNb2RlbFBhdGhTZXQudHMiXSwibmFtZXMiOlsiQWJzb2x1dGVNb2RlbFBhdGhTZXQiLCJjb25zdHJ1Y3RvciIsImVhY2hDdXJyZW50Q29sbGlzaW9uIiwiRWFjaEN1cnJlbnRDb2xsaXNpb24iLCJBcmVTYW1lIiwiaGFzaE1hcCIsIk1hcCIsInVuaXF1ZSIsInBhdGhzIiwic2V0IiwicGF0aCIsImFkZCIsImhhc2giLCJnZXRIYXNoIiwibGlzdCIsImdldCIsInVuZGVmaW5lZCIsImZpbmQiLCJ4IiwiaXNFcXVhbHMiLCJwdXNoIiwiaGFzIiwidmFsdWVzIiwiSXRlcmF0b3IiLCJmcm9tIiwiZmxhdE1hcCIsImNsZWFyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7Ozs7Ozs7Ozs7O0FBRU8sTUFBTUEsb0JBQU4sQ0FBMkI7QUFJdkJDLEVBQUFBLFdBQVcsQ0FBQ0Msb0JBQTBDLEdBQUdDLDJDQUFxQkMsT0FBbkUsRUFBNEU7QUFBQSxTQUg3RUMsT0FHNkUsR0FIbkUsSUFBSUMsR0FBSixFQUdtRTtBQUFBLFNBRjdFSixvQkFFNkU7QUFDMUYsU0FBS0Esb0JBQUwsR0FBNEJBLG9CQUE1QjtBQUNIOztBQUVvQixVQUFOSyxNQUFNLENBQUNDLEtBQUQsRUFBa0U7QUFDbkYsVUFBTUMsR0FBRyxHQUFHLElBQUlULG9CQUFKLEVBQVo7O0FBQ0EsU0FBSyxNQUFNVSxJQUFYLElBQW1CRixLQUFuQixFQUEwQjtBQUN0QixVQUFJQyxHQUFHLENBQUNFLEdBQUosQ0FBUUQsSUFBUixDQUFKLEVBQW1CO0FBQ2YsY0FBTUEsSUFBTjtBQUNIO0FBQ0o7QUFDSjs7QUFFTUMsRUFBQUEsR0FBRyxDQUFDRCxJQUFELEVBQW1DO0FBQ3pDLFVBQU1FLElBQUksR0FBR0YsSUFBSSxDQUFDRyxPQUFMLENBQWEsS0FBS1gsb0JBQWxCLENBQWI7QUFDQSxVQUFNWSxJQUFJLEdBQUcsS0FBS1QsT0FBTCxDQUFhVSxHQUFiLENBQWlCSCxJQUFqQixDQUFiOztBQUNBLFFBQUlFLElBQUksSUFBSUUsU0FBWixFQUF1QjtBQUNuQixXQUFLWCxPQUFMLENBQWFJLEdBQWIsQ0FBaUJHLElBQWpCLEVBQXVCLENBQUNGLElBQUQsQ0FBdkI7QUFDQSxhQUFPLElBQVA7QUFDSCxLQUhELE1BR087QUFDSCxVQUFJSSxJQUFJLENBQUNHLElBQUwsQ0FBVUMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLFFBQUYsQ0FBV1QsSUFBWCxDQUFmLEtBQW9DTSxTQUF4QyxFQUFtRDtBQUMvQ0YsUUFBQUEsSUFBSSxDQUFDTSxJQUFMLENBQVVWLElBQVY7QUFDQSxlQUFPLElBQVA7QUFDSDtBQUNKOztBQUNELFdBQU8sS0FBUDtBQUNIOztBQUVNVyxFQUFBQSxHQUFHLENBQUNYLElBQUQsRUFBbUM7QUFBQTs7QUFDekMsVUFBTUUsSUFBSSxHQUFHRixJQUFJLENBQUNHLE9BQUwsQ0FBYSxLQUFLWCxvQkFBbEIsQ0FBYjtBQUNBLFdBQU8sMkJBQUtHLE9BQUwsQ0FBYVUsR0FBYixDQUFpQkgsSUFBakIseUVBQXdCSyxJQUF4QixDQUE2QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLFFBQUYsQ0FBV1QsSUFBWCxDQUFsQyxNQUF1RE0sU0FBOUQ7QUFDSDs7QUFFTU0sRUFBQUEsTUFBTSxHQUFnQztBQUN6QyxXQUFPQyxRQUFRLENBQUNDLElBQVQsQ0FBYyxLQUFLbkIsT0FBTCxDQUFhaUIsTUFBYixFQUFkLEVBQXFDRyxPQUFyQyxDQUE2Q1AsQ0FBQyxJQUFJQSxDQUFsRCxDQUFQO0FBQ0g7O0FBRU1RLEVBQUFBLEtBQUssR0FBUztBQUNqQixTQUFLckIsT0FBTCxDQUFhcUIsS0FBYjtBQUNIOztBQTNDNkI7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTs7Ozs7Ozs7Ozs7OzBCQUFyQjFCLG9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzb2x1dGVNb2RlbFBhdGggfSBmcm9tIFwiLi9Nb2RlbFBhdGhcIjtcbmltcG9ydCB7IEVhY2hDdXJyZW50Q29sbGlzaW9uIH0gZnJvbSBcIi4vRWFjaEN1cnJlbnRDb2xsaXNpb25cIjtcblxuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kZWxQYXRoU2V0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhc2hNYXAgPSBuZXcgTWFwPG51bWJlciwgQWJzb2x1dGVNb2RlbFBhdGhbXT4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlYWNoQ3VycmVudENvbGxpc2lvbjogRWFjaEN1cnJlbnRDb2xsaXNpb24gPSBFYWNoQ3VycmVudENvbGxpc2lvbi5BcmVTYW1lKSB7XG4gICAgICAgIHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24gPSBlYWNoQ3VycmVudENvbGxpc2lvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljICp1bmlxdWUocGF0aHM6IEl0ZXJhYmxlPEFic29sdXRlTW9kZWxQYXRoPik6IEl0ZXJhYmxlPEFic29sdXRlTW9kZWxQYXRoPiB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBBYnNvbHV0ZU1vZGVsUGF0aFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICAgICAgICAgIGlmIChzZXQuYWRkKHBhdGgpKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgcGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGQocGF0aDogQWJzb2x1dGVNb2RlbFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHBhdGguZ2V0SGFzaCh0aGlzLmVhY2hDdXJyZW50Q29sbGlzaW9uKTtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuaGFzaE1hcC5nZXQoaGFzaCk7XG4gICAgICAgIGlmIChsaXN0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5oYXNoTWFwLnNldChoYXNoLCBbcGF0aF0pO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobGlzdC5maW5kKHggPT4geC5pc0VxdWFscyhwYXRoKSkgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbGlzdC5wdXNoKHBhdGgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzKHBhdGg6IEFic29sdXRlTW9kZWxQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSBwYXRoLmdldEhhc2godGhpcy5lYWNoQ3VycmVudENvbGxpc2lvbik7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc2hNYXAuZ2V0KGhhc2gpPy5maW5kKHggPT4geC5pc0VxdWFscyhwYXRoKSkgIT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWx1ZXMoKTogSXRlcmFibGU8QWJzb2x1dGVNb2RlbFBhdGg+IHtcbiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yLmZyb20odGhpcy5oYXNoTWFwLnZhbHVlcygpKS5mbGF0TWFwKHggPT4geCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc2hNYXAuY2xlYXIoKTtcbiAgICB9XG59XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvQWJzb2x1dGVNb2RlbFBhdGhTZXQudHMiXSwibmFtZXMiOlsiQWJzb2x1dGVNb2RlbFBhdGhTZXQiLCJjb25zdHJ1Y3RvciIsImVhY2hDdXJyZW50Q29sbGlzaW9uIiwiRWFjaEN1cnJlbnRDb2xsaXNpb24iLCJBcmVTYW1lIiwiaGFzaE1hcCIsIk1hcCIsInVuaXF1ZSIsInBhdGhzIiwic2V0IiwicGF0aCIsImFkZCIsImhhc2giLCJnZXRIYXNoIiwibGlzdCIsImdldCIsInVuZGVmaW5lZCIsImZpbmQiLCJ4IiwiaXNFcXVhbHMiLCJwdXNoIiwiaGFzIiwidmFsdWVzIiwiSXRlcmF0b3IiLCJmcm9tIiwiZmxhdE1hcCIsImNsZWFyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBRU8sTUFBTUEsb0JBQU4sQ0FBMkI7QUFJdkJDLEVBQUFBLFdBQVcsQ0FBQ0Msb0JBQTBDLEdBQUdDLDJDQUFxQkMsT0FBbkUsRUFBNEU7QUFBQSxTQUg3RUMsT0FHNkUsR0FIbkUsSUFBSUMsR0FBSixFQUdtRTtBQUFBLFNBRjdFSixvQkFFNkU7QUFDMUYsU0FBS0Esb0JBQUwsR0FBNEJBLG9CQUE1QjtBQUNIOztBQUVvQixVQUFOSyxNQUFNLENBQUNDLEtBQUQsRUFBa0U7QUFDbkYsVUFBTUMsR0FBRyxHQUFHLElBQUlULG9CQUFKLEVBQVo7O0FBQ0EsU0FBSyxNQUFNVSxJQUFYLElBQW1CRixLQUFuQixFQUEwQjtBQUN0QixVQUFJQyxHQUFHLENBQUNFLEdBQUosQ0FBUUQsSUFBUixDQUFKLEVBQW1CO0FBQ2YsY0FBTUEsSUFBTjtBQUNIO0FBQ0o7QUFDSjs7QUFFTUMsRUFBQUEsR0FBRyxDQUFDRCxJQUFELEVBQW1DO0FBQ3pDLFVBQU1FLElBQUksR0FBR0YsSUFBSSxDQUFDRyxPQUFMLENBQWEsS0FBS1gsb0JBQWxCLENBQWI7QUFDQSxVQUFNWSxJQUFJLEdBQUcsS0FBS1QsT0FBTCxDQUFhVSxHQUFiLENBQWlCSCxJQUFqQixDQUFiOztBQUNBLFFBQUlFLElBQUksSUFBSUUsU0FBWixFQUF1QjtBQUNuQixXQUFLWCxPQUFMLENBQWFJLEdBQWIsQ0FBaUJHLElBQWpCLEVBQXVCLENBQUNGLElBQUQsQ0FBdkI7QUFDQSxhQUFPLElBQVA7QUFDSCxLQUhELE1BR087QUFDSCxVQUFJSSxJQUFJLENBQUNHLElBQUwsQ0FBVUMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLFFBQUYsQ0FBV1QsSUFBWCxDQUFmLEtBQW9DTSxTQUF4QyxFQUFtRDtBQUMvQ0YsUUFBQUEsSUFBSSxDQUFDTSxJQUFMLENBQVVWLElBQVY7QUFDQSxlQUFPLElBQVA7QUFDSDtBQUNKOztBQUNELFdBQU8sS0FBUDtBQUNIOztBQUVNVyxFQUFBQSxHQUFHLENBQUNYLElBQUQsRUFBbUM7QUFBQTs7QUFDekMsVUFBTUUsSUFBSSxHQUFHRixJQUFJLENBQUNHLE9BQUwsQ0FBYSxLQUFLWCxvQkFBbEIsQ0FBYjtBQUNBLFdBQU8sMkJBQUtHLE9BQUwsQ0FBYVUsR0FBYixDQUFpQkgsSUFBakIseUVBQXdCSyxJQUF4QixDQUE2QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLFFBQUYsQ0FBV1QsSUFBWCxDQUFsQyxNQUF1RE0sU0FBOUQ7QUFDSDs7QUFFTU0sRUFBQUEsTUFBTSxHQUFnQztBQUN6QyxXQUFPQyxRQUFRLENBQUNDLElBQVQsQ0FBYyxLQUFLbkIsT0FBTCxDQUFhaUIsTUFBYixFQUFkLEVBQXFDRyxPQUFyQyxDQUE2Q1AsQ0FBQyxJQUFJQSxDQUFsRCxDQUFQO0FBQ0g7O0FBRU1RLEVBQUFBLEtBQUssR0FBUztBQUNqQixTQUFLckIsT0FBTCxDQUFhcUIsS0FBYjtBQUNIOztBQTNDNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnNvbHV0ZU1vZGVsUGF0aCB9IGZyb20gXCIuL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgRWFjaEN1cnJlbnRDb2xsaXNpb24gfSBmcm9tIFwiLi9FYWNoQ3VycmVudENvbGxpc2lvblwiO1xuXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVNb2RlbFBhdGhTZXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFzaE1hcCA9IG5ldyBNYXA8bnVtYmVyLCBBYnNvbHV0ZU1vZGVsUGF0aFtdPigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWUpIHtcbiAgICAgICAgdGhpcy5lYWNoQ3VycmVudENvbGxpc2lvbiA9IGVhY2hDdXJyZW50Q29sbGlzaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgKnVuaXF1ZShwYXRoczogSXRlcmFibGU8QWJzb2x1dGVNb2RlbFBhdGg+KTogSXRlcmFibGU8QWJzb2x1dGVNb2RlbFBhdGg+IHtcbiAgICAgICAgY29uc3Qgc2V0ID0gbmV3IEFic29sdXRlTW9kZWxQYXRoU2V0KCk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgICAgICAgICAgaWYgKHNldC5hZGQocGF0aCkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBwYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZChwYXRoOiBBYnNvbHV0ZU1vZGVsUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBoYXNoID0gcGF0aC5nZXRIYXNoKHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24pO1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5oYXNoTWFwLmdldChoYXNoKTtcbiAgICAgICAgaWYgKGxpc3QgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmhhc2hNYXAuc2V0KGhhc2gsIFtwYXRoXSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChsaXN0LmZpbmQoeCA9PiB4LmlzRXF1YWxzKHBhdGgpKSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBsaXN0LnB1c2gocGF0aCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXMocGF0aDogQWJzb2x1dGVNb2RlbFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHBhdGguZ2V0SGFzaCh0aGlzLmVhY2hDdXJyZW50Q29sbGlzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzaE1hcC5nZXQoaGFzaCk/LmZpbmQoeCA9PiB4LmlzRXF1YWxzKHBhdGgpKSAhPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbHVlcygpOiBJdGVyYWJsZTxBYnNvbHV0ZU1vZGVsUGF0aD4ge1xuICAgICAgICByZXR1cm4gSXRlcmF0b3IuZnJvbSh0aGlzLmhhc2hNYXAudmFsdWVzKCkpLmZsYXRNYXAoeCA9PiB4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzaE1hcC5jbGVhcigpO1xuICAgIH1cbn1cbiJdfQ==
@@ -7,15 +7,6 @@ exports.buildIterationSequence = buildIterationSequence;
7
7
 
8
8
  var _ModelPath = require("./ModelPath");
9
9
 
10
- (function () {
11
- var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
12
- enterModule && enterModule(module);
13
- })();
14
-
15
- var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
16
- return a;
17
- };
18
-
19
10
  function buildIterationSequence(modelPath) {
20
11
  const result = [];
21
12
  const tokens = modelPath.getPathPartsAsArray();
@@ -31,23 +22,4 @@ function buildIterationSequence(modelPath) {
31
22
 
32
23
  return result;
33
24
  }
34
-
35
- ;
36
-
37
- (function () {
38
- var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
39
-
40
- if (!reactHotLoader) {
41
- return;
42
- }
43
-
44
- reactHotLoader.register(buildIterationSequence, "buildIterationSequence", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\BuildIterationSequence.ts");
45
- })();
46
-
47
- ;
48
-
49
- (function () {
50
- var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
51
- leaveModule && leaveModule(module);
52
- })();
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvQnVpbGRJdGVyYXRpb25TZXF1ZW5jZS50cyJdLCJuYW1lcyI6WyJidWlsZEl0ZXJhdGlvblNlcXVlbmNlIiwibW9kZWxQYXRoIiwicmVzdWx0IiwidG9rZW5zIiwiZ2V0UGF0aFBhcnRzQXNBcnJheSIsImkiLCJsZW5ndGgiLCJQYXRoVG9rZW5zIiwiZWFjaCIsInB1c2giLCJpdGVyYWJsZSIsIk1vZGVsUGF0aCIsInNsaWNlIiwiaXNBYnNvbHV0ZSIsInN1ZmZpeCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7Ozs7OztBQU9PLFNBQVNBLHNCQUFULENBQWdDQyxTQUFoQyxFQUF3RTtBQUMzRSxRQUFNQyxNQUF3QixHQUFHLEVBQWpDO0FBQ0EsUUFBTUMsTUFBTSxHQUFHRixTQUFTLENBQUNHLG1CQUFWLEVBQWY7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQTNCLEVBQW1DRCxDQUFDLEVBQXBDLEVBQXdDO0FBQ3BDLFFBQUlGLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLEtBQWNFLHNCQUFXQyxJQUE3QixFQUFtQztBQUMvQk4sTUFBQUEsTUFBTSxDQUFDTyxJQUFQLENBQVk7QUFDUkMsUUFBQUEsUUFBUSxFQUFFLElBQUlDLG9CQUFKLENBQWNSLE1BQU0sQ0FBQ1MsS0FBUCxDQUFhLENBQWIsRUFBZ0JQLENBQWhCLENBQWQsRUFBa0NKLFNBQVMsQ0FBQ1ksVUFBVixFQUFsQyxDQURGO0FBRVJDLFFBQUFBLE1BQU0sRUFBRSxJQUFJSCxvQkFBSixDQUFjUixNQUFNLENBQUNTLEtBQVAsQ0FBYVAsQ0FBQyxHQUFHLENBQWpCLENBQWQsRUFBbUMsS0FBbkM7QUFGQSxPQUFaO0FBSUg7QUFDSjs7QUFDRCxTQUFPSCxNQUFQO0FBQ0g7Ozs7Ozs7Ozs7OzBCQVplRixzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsUGF0aCwgUGF0aFRva2VucyB9IGZyb20gXCIuL01vZGVsUGF0aFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdGlvbkVudHJ5IHtcbiAgICBpdGVyYWJsZTogTW9kZWxQYXRoO1xuICAgIHN1ZmZpeDogTW9kZWxQYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJdGVyYXRpb25TZXF1ZW5jZShtb2RlbFBhdGg6IE1vZGVsUGF0aCk6IEl0ZXJhdGlvbkVudHJ5W10ge1xuICAgIGNvbnN0IHJlc3VsdDogSXRlcmF0aW9uRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IHRva2VucyA9IG1vZGVsUGF0aC5nZXRQYXRoUGFydHNBc0FycmF5KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRva2Vuc1tpXSA9PT0gUGF0aFRva2Vucy5lYWNoKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgaXRlcmFibGU6IG5ldyBNb2RlbFBhdGgodG9rZW5zLnNsaWNlKDAsIGkpLCBtb2RlbFBhdGguaXNBYnNvbHV0ZSgpKSxcbiAgICAgICAgICAgICAgICBzdWZmaXg6IG5ldyBNb2RlbFBhdGgodG9rZW5zLnNsaWNlKGkgKyAxKSwgZmFsc2UpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvQnVpbGRJdGVyYXRpb25TZXF1ZW5jZS50cyJdLCJuYW1lcyI6WyJidWlsZEl0ZXJhdGlvblNlcXVlbmNlIiwibW9kZWxQYXRoIiwicmVzdWx0IiwidG9rZW5zIiwiZ2V0UGF0aFBhcnRzQXNBcnJheSIsImkiLCJsZW5ndGgiLCJQYXRoVG9rZW5zIiwiZWFjaCIsInB1c2giLCJpdGVyYWJsZSIsIk1vZGVsUGF0aCIsInNsaWNlIiwiaXNBYnNvbHV0ZSIsInN1ZmZpeCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQU9PLFNBQVNBLHNCQUFULENBQWdDQyxTQUFoQyxFQUF3RTtBQUMzRSxRQUFNQyxNQUF3QixHQUFHLEVBQWpDO0FBQ0EsUUFBTUMsTUFBTSxHQUFHRixTQUFTLENBQUNHLG1CQUFWLEVBQWY7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQTNCLEVBQW1DRCxDQUFDLEVBQXBDLEVBQXdDO0FBQ3BDLFFBQUlGLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLEtBQWNFLHNCQUFXQyxJQUE3QixFQUFtQztBQUMvQk4sTUFBQUEsTUFBTSxDQUFDTyxJQUFQLENBQVk7QUFDUkMsUUFBQUEsUUFBUSxFQUFFLElBQUlDLG9CQUFKLENBQWNSLE1BQU0sQ0FBQ1MsS0FBUCxDQUFhLENBQWIsRUFBZ0JQLENBQWhCLENBQWQsRUFBa0NKLFNBQVMsQ0FBQ1ksVUFBVixFQUFsQyxDQURGO0FBRVJDLFFBQUFBLE1BQU0sRUFBRSxJQUFJSCxvQkFBSixDQUFjUixNQUFNLENBQUNTLEtBQVAsQ0FBYVAsQ0FBQyxHQUFHLENBQWpCLENBQWQsRUFBbUMsS0FBbkM7QUFGQSxPQUFaO0FBSUg7QUFDSjs7QUFDRCxTQUFPSCxNQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbFBhdGgsIFBhdGhUb2tlbnMgfSBmcm9tIFwiLi9Nb2RlbFBhdGhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJdGVyYXRpb25FbnRyeSB7XG4gICAgaXRlcmFibGU6IE1vZGVsUGF0aDtcbiAgICBzdWZmaXg6IE1vZGVsUGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSXRlcmF0aW9uU2VxdWVuY2UobW9kZWxQYXRoOiBNb2RlbFBhdGgpOiBJdGVyYXRpb25FbnRyeVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IEl0ZXJhdGlvbkVudHJ5W10gPSBbXTtcbiAgICBjb25zdCB0b2tlbnMgPSBtb2RlbFBhdGguZ2V0UGF0aFBhcnRzQXNBcnJheSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbnNbaV0gPT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIGl0ZXJhYmxlOiBuZXcgTW9kZWxQYXRoKHRva2Vucy5zbGljZSgwLCBpKSwgbW9kZWxQYXRoLmlzQWJzb2x1dGUoKSksXG4gICAgICAgICAgICAgICAgc3VmZml4OiBuZXcgTW9kZWxQYXRoKHRva2Vucy5zbGljZShpICsgMSksIGZhbHNlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -4,11 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.EachCurrentCollision = void 0;
7
-
8
- var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
9
- return a;
10
- };
11
-
12
7
  let EachCurrentCollision;
13
8
  exports.EachCurrentCollision = EachCurrentCollision;
14
9
 
@@ -16,4 +11,4 @@ exports.EachCurrentCollision = EachCurrentCollision;
16
11
  EachCurrentCollision[EachCurrentCollision["AreSame"] = 0] = "AreSame";
17
12
  EachCurrentCollision[EachCurrentCollision["AreDifferent"] = 1] = "AreDifferent";
18
13
  })(EachCurrentCollision || (exports.EachCurrentCollision = EachCurrentCollision = {}));
19
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvRWFjaEN1cnJlbnRDb2xsaXNpb24udHMiXSwibmFtZXMiOlsiRWFjaEN1cnJlbnRDb2xsaXNpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQVlBLG9COzs7V0FBQUEsb0I7QUFBQUEsRUFBQUEsb0IsQ0FBQUEsb0I7QUFBQUEsRUFBQUEsb0IsQ0FBQUEsb0I7R0FBQUEsb0Isb0NBQUFBLG9CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRWFjaEN1cnJlbnRDb2xsaXNpb24ge1xuICAgIEFyZVNhbWUsXG4gICAgQXJlRGlmZmVyZW50LFxufVxuIl19
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvRWFjaEN1cnJlbnRDb2xsaXNpb24udHMiXSwibmFtZXMiOlsiRWFjaEN1cnJlbnRDb2xsaXNpb24iXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFZQSxvQjs7O1dBQUFBLG9CO0FBQUFBLEVBQUFBLG9CLENBQUFBLG9CO0FBQUFBLEVBQUFBLG9CLENBQUFBLG9CO0dBQUFBLG9CLG9DQUFBQSxvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVhY2hDdXJyZW50Q29sbGlzaW9uIHtcbiAgICBBcmVTYW1lLFxuICAgIEFyZURpZmZlcmVudCxcbn1cbiJdfQ==
@@ -3,8 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
- var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
8
- return a;
9
- };
10
6
  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -18,15 +18,6 @@ var _ModelPathBuilder = require("./ModelPathBuilder");
18
18
 
19
19
  var _PathMatcher = require("./PathMatcher");
20
20
 
21
- (function () {
22
- var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
23
- enterModule && enterModule(module);
24
- })();
25
-
26
- var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
27
- return a;
28
- };
29
-
30
21
  const EachSymbol = Symbol.for("__EACH__");
31
22
  const CurrentSymbol = Symbol.for("__CURRENT__");
32
23
 
@@ -97,12 +88,6 @@ class AbsoluteModelFieldPath {
97
88
  return new AbsoluteModelFieldPath(AbsoluteModelPath.createAbsoluteFromMask(pathWithFieldName, multiplicitySymbol), "value");
98
89
  }
99
90
 
100
- // @ts-ignore
101
- __reactstandin__regenerateByEval(key, code) {
102
- // @ts-ignore
103
- this[key] = eval(code);
104
- }
105
-
106
91
  }
107
92
 
108
93
  exports.AbsoluteModelFieldPath = AbsoluteModelFieldPath;
@@ -506,12 +491,6 @@ class ModelPath {
506
491
  throw new Error(`Unknown path part specified: ${(0, _TypingUtils.ensureAndGetString)(pathPart)}`);
507
492
  }
508
493
 
509
- // @ts-ignore
510
- __reactstandin__regenerateByEval(key, code) {
511
- // @ts-ignore
512
- this[key] = eval(code);
513
- }
514
-
515
494
  }
516
495
 
517
496
  exports.ModelPath = ModelPath;
@@ -560,39 +539,7 @@ class AbsoluteModelPath extends ModelPath {
560
539
  return super.applyInstancesDirty(instances).toAbsolute();
561
540
  }
562
541
 
563
- // @ts-ignore
564
- __reactstandin__regenerateByEval(key, code) {
565
- // @ts-ignore
566
- this[key] = eval(code);
567
- }
568
-
569
542
  }
570
543
 
571
544
  exports.AbsoluteModelPath = AbsoluteModelPath;
572
- ;
573
-
574
- (function () {
575
- var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
576
-
577
- if (!reactHotLoader) {
578
- return;
579
- }
580
-
581
- reactHotLoader.register(EachSymbol, "EachSymbol", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
582
- reactHotLoader.register(CurrentSymbol, "CurrentSymbol", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
583
- reactHotLoader.register(PathTokens, "PathTokens", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
584
- reactHotLoader.register(isModelPath, "isModelPath", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
585
- reactHotLoader.register(convertToLegacyPath, "convertToLegacyPath", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
586
- reactHotLoader.register(convertToAbsolutModelPath, "convertToAbsolutModelPath", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
587
- reactHotLoader.register(AbsoluteModelFieldPath, "AbsoluteModelFieldPath", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
588
- reactHotLoader.register(ModelPath, "ModelPath", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
589
- reactHotLoader.register(AbsoluteModelPath, "AbsoluteModelPath", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPath.ts");
590
- })();
591
-
592
- ;
593
-
594
- (function () {
595
- var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
596
- leaveModule && leaveModule(module);
597
- })();
598
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoLnRzIl0sIm5hbWVzIjpbIkVhY2hTeW1ib2wiLCJTeW1ib2wiLCJmb3IiLCJDdXJyZW50U3ltYm9sIiwiUGF0aFRva2VucyIsImlzTXVsdGlUb2tlbiIsInBhcnQiLCJlYWNoIiwiY3VycmVudCIsImlzU2ltcGxlVG9rZW4iLCJpc0luc3RhbmNlVG9rZW4iLCJ0ZXN0IiwiaXNNb2RlbFBhdGgiLCJwYXRoIiwiY29udmVydFRvTGVnYWN5UGF0aCIsInRvTGVnYWN5UGF0aCIsImNvbnZlcnRUb0Fic29sdXRNb2RlbFBhdGgiLCJBYnNvbHV0ZU1vZGVsUGF0aCIsImNyZWF0ZUFic29sdXRlRnJvbU1hc2siLCJBYnNvbHV0ZU1vZGVsRmllbGRQYXRoIiwiY29uc3RydWN0b3IiLCJmaWVsZE5hbWUiLCJmaWVsZCIsImlzRXF1YWxzIiwibW9kZWxQYXRoIiwiZWFjaEN1cnJlbnRDb2xsaXNpb24iLCJFYWNoQ3VycmVudENvbGxpc2lvbiIsIkFyZVNhbWUiLCJjcmVhdGVGcm9tU3RyaW5nIiwicGF0aFdpdGhGaWVsZE5hbWUiLCJlbmRzV2l0aCIsImNyZWF0ZUFic29sdXRlIiwicmVwbGFjZSIsImNyZWF0ZUZyb21NYXNrIiwibXVsdGlwbGljaXR5U3ltYm9sIiwiTW9kZWxQYXRoIiwicGF0aFBhcnRzIiwiYWJzb2x1dGUiLCJ0b2tlbnMiLCJsZWdhY3lQYXRoIiwiZmlsdGVyIiwieCIsImVtcHR5IiwiYnVpbGRlciIsImZvcmNlQWJzb2x1dGUiLCJNb2RlbFBhdGhCdWlsZGVyIiwicGFydFBhcnRTdHJpbmdzIiwic3BsaXQiLCJlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5Iiwic3RhcnRzV2l0aCIsInNsaWNlIiwibWFwIiwiam9pbiIsInBhcnRzIiwicmVzdWx0UGFydHMiLCJqb2luSXRlbSIsInB1c2giLCJpc0Fic29sdXRlIiwiQXJyYXkiLCJpc0FycmF5Iiwic29tZSIsIkVycm9yIiwiZ2V0UGF0aFBhcnRzIiwiZ2V0UGF0aFBhcnRzQXNBcnJheSIsImdldFNpbXBsZVRva2Vuc1N0cmljdCIsInRva2VuIiwiZ2V0U2ltcGxlVG9rZW5zQXNBcnJheVN0cmljdCIsImpvaW5XaXRoIiwiaXNSZXNvbHZlZCIsImV2ZXJ5IiwicmVzb2x2ZUFsbCIsImluc3RhbmNlIiwiaXNDb250YWluSXRlcmF0aW9uIiwiaXNDb250YWluQ3VycmVudEl0ZXJhdGlvbiIsInRvU3RyaW5nIiwibGVuZ3RoIiwicGF0aFBhcnRUb1N0cmluZyIsIkl0ZXJhdG9yIiwiZnJvbSIsIkl0ZXJVdGlscyIsInppcCIsInQxIiwidDIiLCJnZXRIYXNoIiwiaGFzaCIsImN1cnJlbnRTdHIiLCJBcmVEaWZmZXJlbnQiLCJzdHJpbmdJbmRleCIsImNoYXJDb2RlQXQiLCJpc0luY2x1ZGVzIiwiaSIsImxlZnRQYXJ0IiwicmlnaHRQYXJ0IiwiaXNGaW5pdGUiLCJOdW1iZXIiLCJnZXRJdGVyYXRpb25SYW5rIiwiaXNFbXB0eSIsIm1hdGNoRm9yIiwiUGF0aE1hdGNoZXIiLCJtYXRjaCIsInNwbGl0QnlNdWx0aXBsaWNpdHkiLCJsYXN0U2ltcGxlUGFydHMiLCJhcHBlbmQiLCJ0b1BhdGgiLCJub3JtYWxpemUiLCJyZXN1bHRUb2tlbnMiLCJwYXRoUGFydCIsInBvcCIsInRvQ3VycmVudEl0ZXJhdGlvbiIsInRvRWFjaEl0ZXJhdGlvbiIsInRvQWJzb2x1dGUiLCJnZXRBbGxQYXJlbnRQYXRocyIsInJlc3VsdCIsInNraXBMYXN0IiwidHJpbUxhc3RTdGFySWZMYXN0VG9rZW4iLCJsYXN0SXRlbSIsImxhc3QiLCJ1bmRlZmluZWQiLCJnZXRQYXJlbnRQYXRoIiwidG9BYnNvbHV0ZVBhdGgiLCJhcHBseUluc3RhbmNlc0RpcnR5IiwiaW5zdGFuY2VzIiwiaW5zdGFuY2VDb3VudGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7O0FB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eEMsQ0FBcEIsRUFBZ0U7QUFDNURrRCxNQUFBQSxNQUFNLENBQUNWLE1BQVAsQ0FBY3JDLEtBQWQ7QUFDSDs7QUFDRCxXQUFPK0MsTUFBTSxDQUFDTyxjQUFQLEVBQVA7QUFDSDs7QUFFTUMsRUFBQUEsbUJBQW1CLENBQUNDLFNBQUQsRUFBa0Q7QUFDeEUsV0FBTyxNQUFNRCxtQkFBTixDQUEwQkMsU0FBMUIsRUFBcUNYLFVBQXJDLEVBQVA7QUFDSDs7QUFwQzRDO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7Ozs7Ozs7Ozs7OzswQkE5YzNDOUcsVTswQkFDQUcsYTswQkFFT0MsVTswQkFxQkdRLFc7MEJBSUFFLG1COzBCQUlBRSx5QjswQkFJSEcsc0I7MEJBMERBZ0IsUzswQkFnWEFsQixpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpbmRpbmdQYXRoLCBWaWV3TW9kZWxGaWVsZE5hbWUgfSBmcm9tIFwiLi4vLi4vRW5naW5lL3NyYy9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB7IGNvdW50LCBJdGVyVXRpbHMsIHJldmVyc2VBcnJheSB9IGZyb20gXCIuLi9JdGVyYWJsZVV0aWxzXCI7XG5pbXBvcnQgeyBlbnN1cmVBbmRHZXRTdHJpbmcsIHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBFYWNoQ3VycmVudENvbGxpc2lvbiB9IGZyb20gXCIuL0VhY2hDdXJyZW50Q29sbGlzaW9uXCI7XG5pbXBvcnQgeyBNb2RlbFBhdGhCdWlsZGVyIH0gZnJvbSBcIi4vTW9kZWxQYXRoQnVpbGRlclwiO1xuaW1wb3J0IHsgUGF0aE1hdGNoZXIsIFBhdGhNYXRjaGluZyB9IGZyb20gXCIuL1BhdGhNYXRjaGVyXCI7XG5pbXBvcnQgeyBJRXF1YXRhYmxlIH0gZnJvbSBcIi4vSUVxdWF0YWJsZVwiO1xuXG5jb25zdCBFYWNoU3ltYm9sID0gU3ltYm9sLmZvcihcIl9fRUFDSF9fXCIpO1xuY29uc3QgQ3VycmVudFN5bWJvbCA9IFN5bWJvbC5mb3IoXCJfX0NVUlJFTlRfX1wiKTtcblxuZXhwb3J0IGNsYXNzIFBhdGhUb2tlbnMge1xuICAgIHB1YmxpYyBzdGF0aWMgZWFjaDogdHlwZW9mIEVhY2hTeW1ib2wgPSBFYWNoU3ltYm9sO1xuICAgIHB1YmxpYyBzdGF0aWMgY3VycmVudDogdHlwZW9mIEN1cnJlbnRTeW1ib2wgPSBDdXJyZW50U3ltYm9sO1xuXG4gICAgcHVibGljIHN0YXRpYyBpc011bHRpVG9rZW4ocGFydDogdW5kZWZpbmVkIHwgUGF0aFRva2VuKTogcGFydCBpcyB0eXBlb2YgRWFjaFN5bWJvbCB8IHR5cGVvZiBDdXJyZW50U3ltYm9sIHtcbiAgICAgICAgcmV0dXJuIHBhcnQgPT09IFBhdGhUb2tlbnMuZWFjaCB8fCBwYXJ0ID09PSBQYXRoVG9rZW5zLmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc1NpbXBsZVRva2VuKHBhcnQ6IHVuZGVmaW5lZCB8IFBhdGhUb2tlbik6IHBhcnQgaXMgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBwYXJ0ID09PSBcInN0cmluZ1wiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNJbnN0YW5jZVRva2VuKHBhcnQ6IHVuZGVmaW5lZCB8IFBhdGhUb2tlbik6IHBhcnQgaXMgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBwYXJ0ID09PSBcInN0cmluZ1wiICYmIC9eXFxkKyQvaS50ZXN0KHBhcnQpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgU2ltcGxlUGF0aFRva2VuID0gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBQYXRoVG9rZW4gPSBTaW1wbGVQYXRoVG9rZW4gfCB0eXBlb2YgRWFjaFN5bWJvbCB8IHR5cGVvZiBDdXJyZW50U3ltYm9sO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNNb2RlbFBhdGgocGF0aDogQmluZGluZ1BhdGggfCBNb2RlbFBhdGgpOiBwYXRoIGlzIE1vZGVsUGF0aCB7XG4gICAgcmV0dXJuIHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvTGVnYWN5UGF0aChwYXRoOiBCaW5kaW5nUGF0aCB8IE1vZGVsUGF0aCk6IEJpbmRpbmdQYXRoIHtcbiAgICByZXR1cm4gaXNNb2RlbFBhdGgocGF0aCkgPyBwYXRoLnRvTGVnYWN5UGF0aCgpIDogcGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Fic29sdXRNb2RlbFBhdGgocGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZU1vZGVsUGF0aCk6IEFic29sdXRlTW9kZWxQYXRoIHtcbiAgICByZXR1cm4gaXNNb2RlbFBhdGgocGF0aCkgPyBwYXRoIDogQWJzb2x1dGVNb2RlbFBhdGguY3JlYXRlQWJzb2x1dGVGcm9tTWFzayhwYXRoLCBQYXRoVG9rZW5zLmVhY2gpO1xufVxuXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHBhdGg6IEFic29sdXRlTW9kZWxQYXRoO1xuICAgIHB1YmxpYyByZWFkb25seSBmaWVsZDogVmlld01vZGVsRmllbGROYW1lIHwgXCIkZXJyb3JDb3VudFwiIHwgXCIkd2FybmluZ0NvdW50XCI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGF0aDogQWJzb2x1dGVNb2RlbFBhdGgsIGZpZWxkTmFtZTogVmlld01vZGVsRmllbGROYW1lIHwgXCIkZXJyb3JDb3VudFwiIHwgXCIkd2FybmluZ0NvdW50XCIpIHtcbiAgICAgICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNFcXVhbHMoXG4gICAgICAgIG1vZGVsUGF0aDogQWJzb2x1dGVNb2RlbEZpZWxkUGF0aCxcbiAgICAgICAgZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uID0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlU2FtZVxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXRoLmlzRXF1YWxzKG1vZGVsUGF0aC5wYXRoLCBlYWNoQ3VycmVudENvbGxpc2lvbikgJiYgdGhpcy5maWVsZCA9PT0gbW9kZWxQYXRoLmZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVN0cmluZyhwYXRoV2l0aEZpZWxkTmFtZTogc3RyaW5nKTogQWJzb2x1dGVNb2RlbEZpZWxkUGF0aCB7XG4gICAgICAgIGlmIChwYXRoV2l0aEZpZWxkTmFtZS5lbmRzV2l0aChcIi4kZXJyb3JDb3VudFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoKFxuICAgICAgICAgICAgICAgIEFic29sdXRlTW9kZWxQYXRoLmNyZWF0ZUFic29sdXRlKHBhdGhXaXRoRmllbGROYW1lLnJlcGxhY2UoXCIuJGVycm9yQ291bnRcIiwgXCJcIikpLFxuICAgICAgICAgICAgICAgIFwiJGVycm9yQ291bnRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIuJHdhcm5pbmdDb3VudFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoKFxuICAgICAgICAgICAgICAgIEFic29sdXRlTW9kZWxQYXRoLmNyZWF0ZUFic29sdXRlKHBhdGhXaXRoRmllbGROYW1lLnJlcGxhY2UoXCIuJHdhcm5pbmdDb3VudFwiLCBcIlwiKSksXG4gICAgICAgICAgICAgICAgXCIkd2FybmluZ0NvdW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoKEFic29sdXRlTW9kZWxQYXRoLmNyZWF0ZUFic29sdXRlKHBhdGhXaXRoRmllbGROYW1lKSwgXCJ2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21NYXNrKHBhdGhXaXRoRmllbGROYW1lOiBzdHJpbmcsIG11bHRpcGxpY2l0eVN5bWJvbDogUGF0aFRva2VuKTogQWJzb2x1dGVNb2RlbEZpZWxkUGF0aCB7XG4gICAgICAgIGlmIChwYXRoV2l0aEZpZWxkTmFtZS5lbmRzV2l0aChcIi4kZXJyb3JDb3VudFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoKFxuICAgICAgICAgICAgICAgIEFic29sdXRlTW9kZWxQYXRoLmNyZWF0ZUFic29sdXRlRnJvbU1hc2soXG4gICAgICAgICAgICAgICAgICAgIHBhdGhXaXRoRmllbGROYW1lLnJlcGxhY2UoXCIuJGVycm9yQ291bnRcIiwgXCJcIiksXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpY2l0eVN5bWJvbFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgXCIkZXJyb3JDb3VudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoV2l0aEZpZWxkTmFtZS5lbmRzV2l0aChcIi4kd2FybmluZ0NvdW50XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxGaWVsZFBhdGgoXG4gICAgICAgICAgICAgICAgQWJzb2x1dGVNb2RlbFBhdGguY3JlYXRlQWJzb2x1dGVGcm9tTWFzayhcbiAgICAgICAgICAgICAgICAgICAgcGF0aFdpdGhGaWVsZE5hbWUucmVwbGFjZShcIi4kd2FybmluZ0NvdW50XCIsIFwiXCIpLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNpdHlTeW1ib2xcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIFwiJHdhcm5pbmdDb3VudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgIEFic29sdXRlTW9kZWxQYXRoLmNyZWF0ZUFic29sdXRlRnJvbU1hc2socGF0aFdpdGhGaWVsZE5hbWUsIG11bHRpcGxpY2l0eVN5bWJvbCksXG4gICAgICAgICAgICBcInZhbHVlXCJcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFBhdGggaW1wbGVtZW50cyBJRXF1YXRhYmxlPE1vZGVsUGF0aD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5zOiByZWFkb25seSBQYXRoVG9rZW5bXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFic29sdXRlOiBib29sZWFuO1xuICAgIHByaXZhdGUgbGVnYWN5UGF0aDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGhQYXJ0czogcmVhZG9ubHkgUGF0aFRva2VuW10sIGFic29sdXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudG9rZW5zID0gcGF0aFBhcnRzLmZpbHRlcih4ID0+IHggIT09IFwiXCIpO1xuICAgICAgICB0aGlzLmFic29sdXRlID0gYWJzb2x1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBNb2RlbFBhdGgge1xuICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aChbXSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYnVpbGRlcihmb3JjZUFic29sdXRlOiBib29sZWFuID0gZmFsc2UpOiBNb2RlbFBhdGhCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGhCdWlsZGVyKGZvcmNlQWJzb2x1dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVN0cmluZyhwYXRoOiBzdHJpbmcsIGFic29sdXRlOiBib29sZWFuIHwgXCJhdXRvXCIpOiBNb2RlbFBhdGgge1xuICAgICAgICBjb25zdCBwYXJ0UGFydFN0cmluZ3MgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgdGhpcy5lbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5KHBhcnRQYXJ0U3RyaW5ncyk7XG4gICAgICAgIGlmIChhYnNvbHV0ZSA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgocGFydFBhcnRTdHJpbmdzLnNsaWNlKDEpLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgocGFydFBhcnRTdHJpbmdzLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFic29sdXRlICYmIHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgocGFydFBhcnRTdHJpbmdzLCBhYnNvbHV0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tTWFzayhwYXRoOiBzdHJpbmcsIGFic29sdXRlOiBib29sZWFuIHwgXCJhdXRvXCIsIG11bHRpcGxpY2l0eVN5bWJvbDogUGF0aFRva2VuKTogTW9kZWxQYXRoIHtcbiAgICAgICAgY29uc3QgcGFydFBhcnRTdHJpbmdzID0gcGF0aC5zcGxpdChcIi9cIikubWFwKHggPT4gKHggPT09IFwiKlwiID8gbXVsdGlwbGljaXR5U3ltYm9sIDogeCkpO1xuICAgICAgICBpZiAoYWJzb2x1dGUgPT09IFwiYXV0b1wiKSB7XG4gICAgICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSwgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhYnNvbHV0ZSAmJiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aChwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncywgYWJzb2x1dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgam9pbiguLi5wYXJ0czogQXJyYXk8TW9kZWxQYXRoIHwgUGF0aFRva2VuIHwgUGF0aFRva2VuW10+KTogTW9kZWxQYXRoIHtcbiAgICAgICAgbGV0IGFic29sdXRlID0gZmFsc2U7XG4gICAgICAgIGxldCByZXN1bHRQYXJ0czogUGF0aFRva2VuW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBqb2luSXRlbSBvZiBwYXJ0cykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBqb2luSXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJlc3VsdFBhcnRzLnB1c2goam9pbkl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChqb2luSXRlbSBpbnN0YW5jZW9mIE1vZGVsUGF0aCkge1xuICAgICAgICAgICAgICAgIGlmIChqb2luSXRlbS5pc0Fic29sdXRlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRQYXJ0cyA9IFsuLi5qb2luSXRlbS50b2tlbnNdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFBhcnRzLnB1c2goLi4uam9pbkl0ZW0udG9rZW5zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoam9pbkl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0UGFydHMucHVzaCguLi5qb2luSXRlbSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFBhdGhUb2tlbnMuaXNNdWx0aVRva2VuKGpvaW5JdGVtKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFBhcnRzLnB1c2goam9pbkl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgocmVzdWx0UGFydHMsIGFic29sdXRlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIGVuc3VyZVBsYWluUGF0aFBhcnRzRG9lc05vdENvbnRhaW5NdWx0aXBsaWNpdHkocGFydHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGlmIChwYXJ0cy5zb21lKHggPT4geCA9PT0gXCIqXCIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3Qgbm90IGNvbnRhaW4gKiBzeW1ib2xcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGF0aFBhcnRzKCk6IEl0ZXJhYmxlPFBhdGhUb2tlbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhdGhQYXJ0c0FzQXJyYXkoKTogcmVhZG9ubHkgUGF0aFRva2VuW10ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gICAgfVxuXG4gICAgcHVibGljICpnZXRTaW1wbGVUb2tlbnNTdHJpY3QoKTogSXRlcmFibGU8U2ltcGxlUGF0aFRva2VuPiB7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGhpcy50b2tlbnMpIHtcbiAgICAgICAgICAgIGlmICghUGF0aFRva2Vucy5pc1NpbXBsZVRva2VuKHRva2VuKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBub3QgY29udGFpbiBzcGVjIHRva2Vuc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNpbXBsZVRva2Vuc0FzQXJyYXlTdHJpY3QoKTogcmVhZG9ubHkgU2ltcGxlUGF0aFRva2VuW10ge1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRoaXMudG9rZW5zKSB7XG4gICAgICAgICAgICBpZiAoIVBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3Qgbm90IGNvbnRhaW4gc3BlYyB0b2tlbnNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g0J/RgNC+0LLQtdGA0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC10L3RgtC40YDRg9C10YIg0YfRgtC+INCx0YPQtNGD0YIg0YLQvtC70YzQutC+IFNpbXBsZVBhdGhUb2tlbi5cbiAgICAgICAgLy8g0JLRgdC1IG1hcCDQuCBmaWx0ZXIg0YPQsdGA0LDQvdGLINC00LvRjyDQv9GA0L7QuNC30LLQvtC00LjRgtC10LvRjNC90L7RgdGC0LhcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGpvaW5XaXRoKC4uLnBhdGg6IEFycmF5PE1vZGVsUGF0aCB8IFBhdGhUb2tlbj4pOiBNb2RlbFBhdGgge1xuICAgICAgICByZXR1cm4gTW9kZWxQYXRoLmpvaW4odGhpcywgLi4ucGF0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzUmVzb2x2ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2Vucy5ldmVyeShQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNvbHZlQWxsKGluc3RhbmNlOiBzdHJpbmcpOiBNb2RlbFBhdGgge1xuICAgICAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnRva2Vucy5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgICAgaWYgKFBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgodG9rZW5zLCB0aGlzLmFic29sdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNDb250YWluSXRlcmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMuc29tZSh4ID0+IHggPT09IFBhdGhUb2tlbnMuZWFjaCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ29udGFpbkN1cnJlbnRJdGVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2Vucy5zb21lKHggPT4geCA9PT0gUGF0aFRva2Vucy5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBYnNvbHV0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzb2x1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnRva2Vucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGhpcy5hYnNvbHV0ZSA/IFwiL1wiIDogXCJcIikgKyB0aGlzLnRva2Vucy5tYXAoeCA9PiB0aGlzLnBhdGhQYXJ0VG9TdHJpbmcoeCkpLmpvaW4oXCIvXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0xlZ2FjeVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVnYWN5UGF0aCA/PyAodGhpcy5sZWdhY3lQYXRoID0gdGhpcy50b2tlbnMubWFwKHggPT4gdGhpcy5wYXRoUGFydFRvU3RyaW5nKHgpKS5qb2luKFwiL1wiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXF1YWxzKFxuICAgICAgICBtb2RlbFBhdGg6IE1vZGVsUGF0aCxcbiAgICAgICAgZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uID0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlU2FtZVxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZWFjaEN1cnJlbnRDb2xsaXNpb24gPT09IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvTGVnYWN5UGF0aCgpID09PSBtb2RlbFBhdGgudG9MZWdhY3lQYXRoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNBYnNvbHV0ZSgpID09PSBtb2RlbFBhdGguaXNBYnNvbHV0ZSgpICYmXG4gICAgICAgICAgICAgICAgSXRlcmF0b3IuZnJvbShJdGVyVXRpbHMuemlwKHRoaXMuZ2V0UGF0aFBhcnRzKCksIG1vZGVsUGF0aC5nZXRQYXRoUGFydHMoKSkpLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICAgICAoW3QxLCB0Ml0pID0+IHQxID09PSB0MlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGB0LXQs9C00LAg0YbQtdC70L7QtSDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7QtSDQsdC10LfQt9C90LDQutC+0LLQvtC1IDMyLdCx0LjRgtC90L7QtSDRh9C40YHQu9C+XG4gICAgICovXG4gICAgcHVibGljIGdldEhhc2goZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uID0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlU2FtZSk6IG51bWJlciB7XG4gICAgICAgIGxldCBoYXNoID0gNTM4MTtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiByZXZlcnNlQXJyYXkodGhpcy50b2tlbnMpKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFN0cjogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKFBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RyID0gdG9rZW47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlYWNoQ3VycmVudENvbGxpc2lvbiA9PT0gRWFjaEN1cnJlbnRDb2xsaXNpb24uQXJlRGlmZmVyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHIgPSB0b2tlbiA9PT0gUGF0aFRva2Vucy5lYWNoID8gXCIqXCIgOiBcIiFcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyID0gXCIqXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHN0cmluZ0luZGV4ID0gY3VycmVudFN0ci5sZW5ndGg7XG4gICAgICAgICAgICB3aGlsZSAoc3RyaW5nSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgICAgIGhhc2ggPSAoaGFzaCAqIDMzKSBeIGN1cnJlbnRTdHIuY2hhckNvZGVBdCgtLXN0cmluZ0luZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qXG4gICAgICAgICAgICB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICAgICAgICAgICAgSmF2YVNjcmlwdCBkb2VzIGJpdHdpc2Ugb3BlcmF0aW9ucyAobGlrZSBYT1IsIGFib3ZlKSBvbiAzMi1iaXQgc2lnbmVkXG4gICAgICAgICAgICBpbnRlZ2Vycy4gU2luY2Ugd2Ugd2FudCB0aGUgcmVzdWx0cyB0byBiZSBhbHdheXMgcG9zaXRpdmUsIGNvbnZlcnQgdGhlXG4gICAgICAgICAgICBzaWduZWQgaW50IHRvIGFuIHVuc2lnbmVkIGJ5IGRvaW5nIGFuIHVuc2lnbmVkIGJpdHNoaWZ0LlxuICAgICAgKi9cbiAgICAgICAgcmV0dXJuIGhhc2ggPj4+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSW5jbHVkZXMobW9kZWxQYXRoOiBNb2RlbFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5zLmxlbmd0aCAhPT0gbW9kZWxQYXRoLnRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0UGFydCA9IHRoaXMudG9rZW5zW2ldO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRQYXJ0ID0gbW9kZWxQYXRoLnRva2Vuc1tpXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGVmdFBhcnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJpZ2h0UGFydCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVmdFBhcnQgIT09IHJpZ2h0UGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnRQYXJ0ID09PSBQYXRoVG9rZW5zLmN1cnJlbnQgfHwgbGVmdFBhcnQgPT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmlnaHRQYXJ0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNGaW5pdGUoTnVtYmVyKHJpZ2h0UGFydCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0UGFydCAhPT0gUGF0aFRva2Vucy5jdXJyZW50ICYmIHJpZ2h0UGFydCAhPT0gUGF0aFRva2Vucy5lYWNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVyYXRpb25SYW5rKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBjb3VudChJdGVyYXRvci5mcm9tKHRoaXMudG9rZW5zKS5maWx0ZXIoeCA9PiB4ID09PSBQYXRoVG9rZW5zLmVhY2gpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWF0Y2hGb3IobW9kZWxQYXRoOiBNb2RlbFBhdGgpOiBQYXRoTWF0Y2hpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaXNBYnNvbHV0ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBtYXRjaCBub24gYWJzb2x1dGUgcGF0aCAnJHt0aGlzLnRvU3RyaW5nKCl9J2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbW9kZWxQYXRoLmlzQWJzb2x1dGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbWF0Y2ggbm9uIGFic29sdXRlIHBhdGggJyR7bW9kZWxQYXRoLnRvU3RyaW5nKCl9J2ApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQYXRoTWF0Y2hlci5tYXRjaCh0aGlzLnRva2VucywgbW9kZWxQYXRoLnRva2Vucyk7XG4gICAgfVxuXG4gICAgcHVibGljICpzcGxpdEJ5TXVsdGlwbGljaXR5KCk6IEl0ZXJhYmxlPE1vZGVsUGF0aCB8IHR5cGVvZiBFYWNoU3ltYm9sIHwgdHlwZW9mIEN1cnJlbnRTeW1ib2w+IHtcbiAgICAgICAgbGV0IGxhc3RTaW1wbGVQYXJ0cyA9IE1vZGVsUGF0aC5idWlsZGVyKHRoaXMuaXNBYnNvbHV0ZSgpKTtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiB0aGlzLnRva2Vucykge1xuICAgICAgICAgICAgaWYgKFBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICBsYXN0U2ltcGxlUGFydHMuYXBwZW5kKHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFsYXN0U2ltcGxlUGFydHMuZW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgbGFzdFNpbXBsZVBhcnRzLnRvUGF0aCgpO1xuICAgICAgICAgICAgICAgICAgICBsYXN0U2ltcGxlUGFydHMgPSBNb2RlbFBhdGguYnVpbGRlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB5aWVsZCB0b2tlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxhc3RTaW1wbGVQYXJ0cy5lbXB0eSkge1xuICAgICAgICAgICAgeWllbGQgbGFzdFNpbXBsZVBhcnRzLnRvUGF0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5vcm1hbGl6ZSgpOiBNb2RlbFBhdGgge1xuICAgICAgICBjb25zdCByZXN1bHRUb2tlbnM6IFBhdGhUb2tlbltdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF0aFBhcnQgb2YgdGhpcy50b2tlbnMpIHtcbiAgICAgICAgICAgIGlmIChwYXRoUGFydCA9PT0gXCIuLlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHRUb2tlbnMucG9wKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBYnNvbHV0ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdGggaXMgaW52YWxpZCAnJHt0aGlzLnRvU3RyaW5nKCl9J2ApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0VG9rZW5zLnB1c2goXCIuLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhdGhQYXJ0ID09PSBcIi5cIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0VG9rZW5zLnB1c2gocGF0aFBhcnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHJlc3VsdFRva2VucywgdGhpcy5pc0Fic29sdXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5INCh0L/QtdGG0LjRhNC40LrQsNGC0L7RgNGLINC80L3QvtC20LXRgdGC0LLQtdC90L3QvtGB0YLQuCBFYWNoINC30LDQvNC10L3Rj9C10YIg0L3QsCBDdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIHRvQ3VycmVudEl0ZXJhdGlvbigpOiBNb2RlbFBhdGgge1xuICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aChcbiAgICAgICAgICAgIHRoaXMudG9rZW5zLm1hcCh4ID0+ICh4ID09PSBQYXRoVG9rZW5zLmVhY2ggPyBQYXRoVG9rZW5zLmN1cnJlbnQgOiB4KSksXG4gICAgICAgICAgICB0aGlzLmlzQWJzb2x1dGUoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0VhY2hJdGVyYXRpb24oKTogTW9kZWxQYXRoIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgoXG4gICAgICAgICAgICB0aGlzLnRva2Vucy5tYXAoeCA9PiAoeCA9PT0gUGF0aFRva2Vucy5jdXJyZW50ID8gUGF0aFRva2Vucy5lYWNoIDogeCkpLFxuICAgICAgICAgICAgdGhpcy5pc0Fic29sdXRlKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9BYnNvbHV0ZSgpOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgICAgIGlmICghdGhpcy5hYnNvbHV0ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXRoICcke3RoaXMudG9MZWdhY3lQYXRoKCl9IGlzIG5vdCBhYnNvbHV0ZSdgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxQYXRoKHRoaXMudG9rZW5zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgKmdldEFsbFBhcmVudFBhdGhzKCk6IEl0ZXJhYmxlPE1vZGVsUGF0aD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBNb2RlbFBhdGguYnVpbGRlcih0aGlzLmlzQWJzb2x1dGUoKSk7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgSXRlclV0aWxzLnNraXBMYXN0KHRoaXMuZ2V0UGF0aFBhcnRzKCksIDEpKSB7XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRva2VuKTtcbiAgICAgICAgICAgIHlpZWxkIHJlc3VsdC50b1BhdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0cmltTGFzdFN0YXJJZkxhc3RUb2tlbigpOiBNb2RlbFBhdGgge1xuICAgICAgICBjb25zdCBsYXN0SXRlbSA9IEl0ZXJVdGlscy5sYXN0KHRoaXMudG9rZW5zKTtcbiAgICAgICAgaWYgKGxhc3RJdGVtICE9IHVuZGVmaW5lZCAmJiBQYXRoVG9rZW5zLmlzTXVsdGlUb2tlbihsYXN0SXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHRoaXMudG9rZW5zLnNsaWNlKDAsIC0xKSwgdGhpcy5hYnNvbHV0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcmVudFBhdGgoKTogTW9kZWxQYXRoIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gTW9kZWxQYXRoLmJ1aWxkZXIodGhpcy5pc0Fic29sdXRlKCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIEl0ZXJVdGlscy5za2lwTGFzdCh0aGlzLmdldFBhdGhQYXJ0cygpLCAxKSkge1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b0Fic29sdXRlUGF0aCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBseUluc3RhbmNlc0RpcnR5KGluc3RhbmNlczogU2ltcGxlUGF0aFRva2VuW10pOiBNb2RlbFBhdGgge1xuICAgICAgICBpZiAodGhpcy5pc1Jlc29sdmVkKCkgfHwgaW5zdGFuY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluc3RhbmNlQ291bnRlciA9IDA7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE1vZGVsUGF0aC5idWlsZGVyKCk7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGhpcy5nZXRQYXRoUGFydHMoKSkge1xuICAgICAgICAgICAgaWYgKFBhdGhUb2tlbnMuaXNNdWx0aVRva2VuKHRva2VuKSAmJiBpbnN0YW5jZUNvdW50ZXIgPCBpbnN0YW5jZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbnN0YW5jZXNbaW5zdGFuY2VDb3VudGVyXSA/PyByZWplY3QoKSk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2VDb3VudGVyKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudG9BYnNvbHV0ZVBhdGgoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhdGhQYXJ0VG9TdHJpbmcocGF0aFBhcnQ6IFBhdGhUb2tlbik6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aFBhcnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoUGFydDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFBhcnQgPT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiKlwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoUGFydCA9PT0gUGF0aFRva2Vucy5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gXCIqXCI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHBhdGggcGFydCBzcGVjaWZpZWQ6ICR7ZW5zdXJlQW5kR2V0U3RyaW5nKHBhdGhQYXJ0KX1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZU1vZGVsUGF0aCBleHRlbmRzIE1vZGVsUGF0aCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGhQYXJ0czogcmVhZG9ubHkgUGF0aFRva2VuW10pIHtcbiAgICAgICAgc3VwZXIocGF0aFBhcnRzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUFic29sdXRlRnJvbU1hc2socGF0aDogc3RyaW5nLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IE1vZGVsUGF0aCB7XG4gICAgICAgIGNvbnN0IHBhcnRQYXJ0U3RyaW5ncyA9IHBhdGguc3BsaXQoXCIvXCIpLm1hcCh4ID0+ICh4ID09PSBcIipcIiA/IG11bHRpcGxpY2l0eVN5bWJvbCA6IHgpKTtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbFBhdGgocGFydFBhcnRTdHJpbmdzLnNsaWNlKDEpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgICAgIGNvbnN0IHBhcnRQYXJ0U3RyaW5ncyA9IHBhdGguc3BsaXQoXCIvXCIpO1xuICAgICAgICB0aGlzLmVuc3VyZVBsYWluUGF0aFBhcnRzRG9lc05vdENvbnRhaW5NdWx0aXBsaWNpdHkocGFydFBhcnRTdHJpbmdzKTtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbFBhdGgocGFydFBhcnRTdHJpbmdzLnNsaWNlKDEpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncyk7XG4gICAgfVxuXG4gICAgcHVibGljIGpvaW5XaXRoKHBhdGg6IE1vZGVsUGF0aCB8IFBhdGhUb2tlbik6IEFic29sdXRlTW9kZWxQYXRoIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmpvaW5XaXRoKHBhdGgpLnRvQWJzb2x1dGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFyZW50UGF0aCgpOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE1vZGVsUGF0aC5idWlsZGVyKHRydWUpO1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIEl0ZXJVdGlscy5za2lwTGFzdCh0aGlzLmdldFBhdGhQYXJ0cygpLCAxKSkge1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b0Fic29sdXRlUGF0aCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBseUluc3RhbmNlc0RpcnR5KGluc3RhbmNlczogU2ltcGxlUGF0aFRva2VuW10pOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgICAgIHJldHVybiBzdXBlci5hcHBseUluc3RhbmNlc0RpcnR5KGluc3RhbmNlcykudG9BYnNvbHV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
545
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoLnRzIl0sIm5hbWVzIjpbIkVhY2hTeW1ib2wiLCJTeW1ib2wiLCJmb3IiLCJDdXJyZW50U3ltYm9sIiwiUGF0aFRva2VucyIsImlzTXVsdGlUb2tlbiIsInBhcnQiLCJlYWNoIiwiY3VycmVudCIsImlzU2ltcGxlVG9rZW4iLCJpc0luc3RhbmNlVG9rZW4iLCJ0ZXN0IiwiaXNNb2RlbFBhdGgiLCJwYXRoIiwiY29udmVydFRvTGVnYWN5UGF0aCIsInRvTGVnYWN5UGF0aCIsImNvbnZlcnRUb0Fic29sdXRNb2RlbFBhdGgiLCJBYnNvbHV0ZU1vZGVsUGF0aCIsImNyZWF0ZUFic29sdXRlRnJvbU1hc2siLCJBYnNvbHV0ZU1vZGVsRmllbGRQYXRoIiwiY29uc3RydWN0b3IiLCJmaWVsZE5hbWUiLCJmaWVsZCIsImlzRXF1YWxzIiwibW9kZWxQYXRoIiwiZWFjaEN1cnJlbnRDb2xsaXNpb24iLCJFYWNoQ3VycmVudENvbGxpc2lvbiIsIkFyZVNhbWUiLCJjcmVhdGVGcm9tU3RyaW5nIiwicGF0aFdpdGhGaWVsZE5hbWUiLCJlbmRzV2l0aCIsImNyZWF0ZUFic29sdXRlIiwicmVwbGFjZSIsImNyZWF0ZUZyb21NYXNrIiwibXVsdGlwbGljaXR5U3ltYm9sIiwiTW9kZWxQYXRoIiwicGF0aFBhcnRzIiwiYWJzb2x1dGUiLCJ0b2tlbnMiLCJsZWdhY3lQYXRoIiwiZmlsdGVyIiwieCIsImVtcHR5IiwiYnVpbGRlciIsImZvcmNlQWJzb2x1dGUiLCJNb2RlbFBhdGhCdWlsZGVyIiwicGFydFBhcnRTdHJpbmdzIiwic3BsaXQiLCJlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5Iiwic3RhcnRzV2l0aCIsInNsaWNlIiwibWFwIiwiam9pbiIsInBhcnRzIiwicmVzdWx0UGFydHMiLCJqb2luSXRlbSIsInB1c2giLCJpc0Fic29sdXRlIiwiQXJyYXkiLCJpc0FycmF5Iiwic29tZSIsIkVycm9yIiwiZ2V0UGF0aFBhcnRzIiwiZ2V0UGF0aFBhcnRzQXNBcnJheSIsImdldFNpbXBsZVRva2Vuc1N0cmljdCIsInRva2VuIiwiZ2V0U2ltcGxlVG9rZW5zQXNBcnJheVN0cmljdCIsImpvaW5XaXRoIiwiaXNSZXNvbHZlZCIsImV2ZXJ5IiwicmVzb2x2ZUFsbCIsImluc3RhbmNlIiwiaXNDb250YWluSXRlcmF0aW9uIiwiaXNDb250YWluQ3VycmVudEl0ZXJhdGlvbiIsInRvU3RyaW5nIiwibGVuZ3RoIiwicGF0aFBhcnRUb1N0cmluZyIsIkl0ZXJhdG9yIiwiZnJvbSIsIkl0ZXJVdGlscyIsInppcCIsInQxIiwidDIiLCJnZXRIYXNoIiwiaGFzaCIsImN1cnJlbnRTdHIiLCJBcmVEaWZmZXJlbnQiLCJzdHJpbmdJbmRleCIsImNoYXJDb2RlQXQiLCJpc0luY2x1ZGVzIiwiaSIsImxlZnRQYXJ0IiwicmlnaHRQYXJ0IiwiaXNGaW5pdGUiLCJOdW1iZXIiLCJnZXRJdGVyYXRpb25SYW5rIiwiaXNFbXB0eSIsIm1hdGNoRm9yIiwiUGF0aE1hdGNoZXIiLCJtYXRjaCIsInNwbGl0QnlNdWx0aXBsaWNpdHkiLCJsYXN0U2ltcGxlUGFydHMiLCJhcHBlbmQiLCJ0b1BhdGgiLCJub3JtYWxpemUiLCJyZXN1bHRUb2tlbnMiLCJwYXRoUGFydCIsInBvcCIsInRvQ3VycmVudEl0ZXJhdGlvbiIsInRvRWFjaEl0ZXJhdGlvbiIsInRvQWJzb2x1dGUiLCJnZXRBbGxQYXJlbnRQYXRocyIsInJlc3VsdCIsInNraXBMYXN0IiwidHJpbUxhc3RTdGFySWZMYXN0VG9rZW4iLCJsYXN0SXRlbSIsImxhc3QiLCJ1bmRlZmluZWQiLCJnZXRQYXJlbnRQYXRoIiwidG9BYnNvbHV0ZVBhdGgiLCJhcHBseUluc3RhbmNlc0RpcnR5IiwiaW5zdGFuY2VzIiwiaW5zdGFuY2VDb3VudGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEs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OztBQUNELFdBQU8rQyxNQUFNLENBQUNPLGNBQVAsRUFBUDtBQUNIOztBQUVNQyxFQUFBQSxtQkFBbUIsQ0FBQ0MsU0FBRCxFQUFrRDtBQUN4RSxXQUFPLE1BQU1ELG1CQUFOLENBQTBCQyxTQUExQixFQUFxQ1gsVUFBckMsRUFBUDtBQUNIOztBQXBDNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaW5kaW5nUGF0aCwgVmlld01vZGVsRmllbGROYW1lIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9zcmMvRW5naW5lL0NvcmUvQ29yZVR5cGVzXCI7XG5pbXBvcnQgeyBjb3VudCwgSXRlclV0aWxzLCByZXZlcnNlQXJyYXkgfSBmcm9tIFwiLi4vSXRlcmFibGVVdGlsc1wiO1xuaW1wb3J0IHsgZW5zdXJlQW5kR2V0U3RyaW5nLCByZWplY3QgfSBmcm9tIFwiLi4vVHlwaW5nVXRpbHNcIjtcblxuaW1wb3J0IHsgRWFjaEN1cnJlbnRDb2xsaXNpb24gfSBmcm9tIFwiLi9FYWNoQ3VycmVudENvbGxpc2lvblwiO1xuaW1wb3J0IHsgTW9kZWxQYXRoQnVpbGRlciB9IGZyb20gXCIuL01vZGVsUGF0aEJ1aWxkZXJcIjtcbmltcG9ydCB7IFBhdGhNYXRjaGVyLCBQYXRoTWF0Y2hpbmcgfSBmcm9tIFwiLi9QYXRoTWF0Y2hlclwiO1xuaW1wb3J0IHsgSUVxdWF0YWJsZSB9IGZyb20gXCIuL0lFcXVhdGFibGVcIjtcblxuY29uc3QgRWFjaFN5bWJvbCA9IFN5bWJvbC5mb3IoXCJfX0VBQ0hfX1wiKTtcbmNvbnN0IEN1cnJlbnRTeW1ib2wgPSBTeW1ib2wuZm9yKFwiX19DVVJSRU5UX19cIik7XG5cbmV4cG9ydCBjbGFzcyBQYXRoVG9rZW5zIHtcbiAgICBwdWJsaWMgc3RhdGljIGVhY2g6IHR5cGVvZiBFYWNoU3ltYm9sID0gRWFjaFN5bWJvbDtcbiAgICBwdWJsaWMgc3RhdGljIGN1cnJlbnQ6IHR5cGVvZiBDdXJyZW50U3ltYm9sID0gQ3VycmVudFN5bWJvbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaXNNdWx0aVRva2VuKHBhcnQ6IHVuZGVmaW5lZCB8IFBhdGhUb2tlbik6IHBhcnQgaXMgdHlwZW9mIEVhY2hTeW1ib2wgfCB0eXBlb2YgQ3VycmVudFN5bWJvbCB7XG4gICAgICAgIHJldHVybiBwYXJ0ID09PSBQYXRoVG9rZW5zLmVhY2ggfHwgcGFydCA9PT0gUGF0aFRva2Vucy5jdXJyZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNTaW1wbGVUb2tlbihwYXJ0OiB1bmRlZmluZWQgfCBQYXRoVG9rZW4pOiBwYXJ0IGlzIHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgcGFydCA9PT0gXCJzdHJpbmdcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzSW5zdGFuY2VUb2tlbihwYXJ0OiB1bmRlZmluZWQgfCBQYXRoVG9rZW4pOiBwYXJ0IGlzIHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgcGFydCA9PT0gXCJzdHJpbmdcIiAmJiAvXlxcZCskL2kudGVzdChwYXJ0KTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFNpbXBsZVBhdGhUb2tlbiA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgUGF0aFRva2VuID0gU2ltcGxlUGF0aFRva2VuIHwgdHlwZW9mIEVhY2hTeW1ib2wgfCB0eXBlb2YgQ3VycmVudFN5bWJvbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kZWxQYXRoKHBhdGg6IEJpbmRpbmdQYXRoIHwgTW9kZWxQYXRoKTogcGF0aCBpcyBNb2RlbFBhdGgge1xuICAgIHJldHVybiB0eXBlb2YgcGF0aCAhPT0gXCJzdHJpbmdcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0xlZ2FjeVBhdGgocGF0aDogQmluZGluZ1BhdGggfCBNb2RlbFBhdGgpOiBCaW5kaW5nUGF0aCB7XG4gICAgcmV0dXJuIGlzTW9kZWxQYXRoKHBhdGgpID8gcGF0aC50b0xlZ2FjeVBhdGgoKSA6IHBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9BYnNvbHV0TW9kZWxQYXRoKHBhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVNb2RlbFBhdGgpOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgcmV0dXJuIGlzTW9kZWxQYXRoKHBhdGgpID8gcGF0aCA6IEFic29sdXRlTW9kZWxQYXRoLmNyZWF0ZUFic29sdXRlRnJvbU1hc2socGF0aCwgUGF0aFRva2Vucy5lYWNoKTtcbn1cblxuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgIHB1YmxpYyByZWFkb25seSBwYXRoOiBBYnNvbHV0ZU1vZGVsUGF0aDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGQ6IFZpZXdNb2RlbEZpZWxkTmFtZSB8IFwiJGVycm9yQ291bnRcIiB8IFwiJHdhcm5pbmdDb3VudFwiO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGg6IEFic29sdXRlTW9kZWxQYXRoLCBmaWVsZE5hbWU6IFZpZXdNb2RlbEZpZWxkTmFtZSB8IFwiJGVycm9yQ291bnRcIiB8IFwiJHdhcm5pbmdDb3VudFwiKSB7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZE5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXF1YWxzKFxuICAgICAgICBtb2RlbFBhdGg6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgsXG4gICAgICAgIGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWVcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aC5pc0VxdWFscyhtb2RlbFBhdGgucGF0aCwgZWFjaEN1cnJlbnRDb2xsaXNpb24pICYmIHRoaXMuZmllbGQgPT09IG1vZGVsUGF0aC5maWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21TdHJpbmcocGF0aFdpdGhGaWVsZE5hbWU6IHN0cmluZyk6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIuJGVycm9yQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBBYnNvbHV0ZU1vZGVsUGF0aC5jcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiRlcnJvckNvdW50XCIsIFwiXCIpKSxcbiAgICAgICAgICAgICAgICBcIiRlcnJvckNvdW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhXaXRoRmllbGROYW1lLmVuZHNXaXRoKFwiLiR3YXJuaW5nQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBBYnNvbHV0ZU1vZGVsUGF0aC5jcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiR3YXJuaW5nQ291bnRcIiwgXCJcIikpLFxuICAgICAgICAgICAgICAgIFwiJHdhcm5pbmdDb3VudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChBYnNvbHV0ZU1vZGVsUGF0aC5jcmVhdGVBYnNvbHV0ZShwYXRoV2l0aEZpZWxkTmFtZSksIFwidmFsdWVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tTWFzayhwYXRoV2l0aEZpZWxkTmFtZTogc3RyaW5nLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIuJGVycm9yQ291bnRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChcbiAgICAgICAgICAgICAgICBBYnNvbHV0ZU1vZGVsUGF0aC5jcmVhdGVBYnNvbHV0ZUZyb21NYXNrKFxuICAgICAgICAgICAgICAgICAgICBwYXRoV2l0aEZpZWxkTmFtZS5yZXBsYWNlKFwiLiRlcnJvckNvdW50XCIsIFwiXCIpLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWNpdHlTeW1ib2xcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIFwiJGVycm9yQ291bnRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFdpdGhGaWVsZE5hbWUuZW5kc1dpdGgoXCIuJHdhcm5pbmdDb3VudFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoKFxuICAgICAgICAgICAgICAgIEFic29sdXRlTW9kZWxQYXRoLmNyZWF0ZUFic29sdXRlRnJvbU1hc2soXG4gICAgICAgICAgICAgICAgICAgIHBhdGhXaXRoRmllbGROYW1lLnJlcGxhY2UoXCIuJHdhcm5pbmdDb3VudFwiLCBcIlwiKSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGljaXR5U3ltYm9sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBcIiR3YXJuaW5nQ291bnRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxGaWVsZFBhdGgoXG4gICAgICAgICAgICBBYnNvbHV0ZU1vZGVsUGF0aC5jcmVhdGVBYnNvbHV0ZUZyb21NYXNrKHBhdGhXaXRoRmllbGROYW1lLCBtdWx0aXBsaWNpdHlTeW1ib2wpLFxuICAgICAgICAgICAgXCJ2YWx1ZVwiXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9kZWxQYXRoIGltcGxlbWVudHMgSUVxdWF0YWJsZTxNb2RlbFBhdGg+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRva2VuczogcmVhZG9ubHkgUGF0aFRva2VuW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBhYnNvbHV0ZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGxlZ2FjeVBhdGg6IHVuZGVmaW5lZCB8IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXRoUGFydHM6IHJlYWRvbmx5IFBhdGhUb2tlbltdLCBhYnNvbHV0ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRva2VucyA9IHBhdGhQYXJ0cy5maWx0ZXIoeCA9PiB4ICE9PSBcIlwiKTtcbiAgICAgICAgdGhpcy5hYnNvbHV0ZSA9IGFic29sdXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZW1wdHkoKTogTW9kZWxQYXRoIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgoW10sIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGJ1aWxkZXIoZm9yY2VBYnNvbHV0ZTogYm9vbGVhbiA9IGZhbHNlKTogTW9kZWxQYXRoQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoQnVpbGRlcihmb3JjZUFic29sdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21TdHJpbmcocGF0aDogc3RyaW5nLCBhYnNvbHV0ZTogYm9vbGVhbiB8IFwiYXV0b1wiKTogTW9kZWxQYXRoIHtcbiAgICAgICAgY29uc3QgcGFydFBhcnRTdHJpbmdzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gICAgICAgIHRoaXMuZW5zdXJlUGxhaW5QYXRoUGFydHNEb2VzTm90Q29udGFpbk11bHRpcGxpY2l0eShwYXJ0UGFydFN0cmluZ3MpO1xuICAgICAgICBpZiAoYWJzb2x1dGUgPT09IFwiYXV0b1wiKSB7XG4gICAgICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSwgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhYnNvbHV0ZSAmJiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aChwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncywgYWJzb2x1dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbU1hc2socGF0aDogc3RyaW5nLCBhYnNvbHV0ZTogYm9vbGVhbiB8IFwiYXV0b1wiLCBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbik6IE1vZGVsUGF0aCB7XG4gICAgICAgIGNvbnN0IHBhcnRQYXJ0U3RyaW5ncyA9IHBhdGguc3BsaXQoXCIvXCIpLm1hcCh4ID0+ICh4ID09PSBcIipcIiA/IG11bHRpcGxpY2l0eVN5bWJvbCA6IHgpKTtcbiAgICAgICAgaWYgKGFic29sdXRlID09PSBcImF1dG9cIikge1xuICAgICAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aChwYXJ0UGFydFN0cmluZ3Muc2xpY2UoMSksIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aChwYXJ0UGFydFN0cmluZ3MsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWJzb2x1dGUgJiYgcGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgocGFydFBhcnRTdHJpbmdzLnNsaWNlKDEpLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aChwYXJ0UGFydFN0cmluZ3MsIGFic29sdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGpvaW4oLi4ucGFydHM6IEFycmF5PE1vZGVsUGF0aCB8IFBhdGhUb2tlbiB8IFBhdGhUb2tlbltdPik6IE1vZGVsUGF0aCB7XG4gICAgICAgIGxldCBhYnNvbHV0ZSA9IGZhbHNlO1xuICAgICAgICBsZXQgcmVzdWx0UGFydHM6IFBhdGhUb2tlbltdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgam9pbkl0ZW0gb2YgcGFydHMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygam9pbkl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRQYXJ0cy5wdXNoKGpvaW5JdGVtKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoam9pbkl0ZW0gaW5zdGFuY2VvZiBNb2RlbFBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoam9pbkl0ZW0uaXNBYnNvbHV0ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGFydHMgPSBbLi4uam9pbkl0ZW0udG9rZW5zXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRQYXJ0cy5wdXNoKC4uLmpvaW5JdGVtLnRva2Vucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGpvaW5JdGVtKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFBhcnRzLnB1c2goLi4uam9pbkl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChQYXRoVG9rZW5zLmlzTXVsdGlUb2tlbihqb2luSXRlbSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRQYXJ0cy5wdXNoKGpvaW5JdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHJlc3VsdFBhcnRzLCBhYnNvbHV0ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBlbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5KHBhcnRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAocGFydHMuc29tZSh4ID0+IHggPT09IFwiKlwiKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBtdXN0IG5vdCBjb250YWluICogc3ltYm9sXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhdGhQYXJ0cygpOiBJdGVyYWJsZTxQYXRoVG9rZW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXRoUGFydHNBc0FycmF5KCk6IHJlYWRvbmx5IFBhdGhUb2tlbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zO1xuICAgIH1cblxuICAgIHB1YmxpYyAqZ2V0U2ltcGxlVG9rZW5zU3RyaWN0KCk6IEl0ZXJhYmxlPFNpbXBsZVBhdGhUb2tlbj4ge1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRoaXMudG9rZW5zKSB7XG4gICAgICAgICAgICBpZiAoIVBhdGhUb2tlbnMuaXNTaW1wbGVUb2tlbih0b2tlbikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3Qgbm90IGNvbnRhaW4gc3BlYyB0b2tlbnNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB5aWVsZCB0b2tlbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaW1wbGVUb2tlbnNBc0FycmF5U3RyaWN0KCk6IHJlYWRvbmx5IFNpbXBsZVBhdGhUb2tlbltdIHtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiB0aGlzLnRva2Vucykge1xuICAgICAgICAgICAgaWYgKCFQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBtdXN0IG5vdCBjb250YWluIHNwZWMgdG9rZW5zXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vINCf0YDQvtCy0LXRgNC60LAg0LLRi9GI0LUg0LPQsNGA0LDQtdC90YLQuNGA0YPQtdGCINGH0YLQviDQsdGD0LTRg9GCINGC0L7Qu9GM0LrQviBTaW1wbGVQYXRoVG9rZW4uXG4gICAgICAgIC8vINCS0YHQtSBtYXAg0LggZmlsdGVyINGD0LHRgNCw0L3RiyDQtNC70Y8g0L/RgNC+0LjQt9Cy0L7QtNC40YLQtdC70YzQvdC+0YHRgtC4XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zO1xuICAgIH1cblxuICAgIHB1YmxpYyBqb2luV2l0aCguLi5wYXRoOiBBcnJheTxNb2RlbFBhdGggfCBQYXRoVG9rZW4+KTogTW9kZWxQYXRoIHtcbiAgICAgICAgcmV0dXJuIE1vZGVsUGF0aC5qb2luKHRoaXMsIC4uLnBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1Jlc29sdmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMuZXZlcnkoUGF0aFRva2Vucy5pc1NpbXBsZVRva2VuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzb2x2ZUFsbChpbnN0YW5jZTogc3RyaW5nKTogTW9kZWxQYXRoIHtcbiAgICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbnMubWFwKHRva2VuID0+IHtcbiAgICAgICAgICAgIGlmIChQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKHRva2VucywgdGhpcy5hYnNvbHV0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ29udGFpbkl0ZXJhdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLnNvbWUoeCA9PiB4ID09PSBQYXRoVG9rZW5zLmVhY2gpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0NvbnRhaW5DdXJyZW50SXRlcmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMuc29tZSh4ID0+IHggPT09IFBhdGhUb2tlbnMuY3VycmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQWJzb2x1dGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy50b2tlbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRoaXMuYWJzb2x1dGUgPyBcIi9cIiA6IFwiXCIpICsgdGhpcy50b2tlbnMubWFwKHggPT4gdGhpcy5wYXRoUGFydFRvU3RyaW5nKHgpKS5qb2luKFwiL1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9MZWdhY3lQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxlZ2FjeVBhdGggPz8gKHRoaXMubGVnYWN5UGF0aCA9IHRoaXMudG9rZW5zLm1hcCh4ID0+IHRoaXMucGF0aFBhcnRUb1N0cmluZyh4KSkuam9pbihcIi9cIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VxdWFscyhcbiAgICAgICAgbW9kZWxQYXRoOiBNb2RlbFBhdGgsXG4gICAgICAgIGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWVcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGVhY2hDdXJyZW50Q29sbGlzaW9uID09PSBFYWNoQ3VycmVudENvbGxpc2lvbi5BcmVTYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b0xlZ2FjeVBhdGgoKSA9PT0gbW9kZWxQYXRoLnRvTGVnYWN5UGF0aCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWJzb2x1dGUoKSA9PT0gbW9kZWxQYXRoLmlzQWJzb2x1dGUoKSAmJlxuICAgICAgICAgICAgICAgIEl0ZXJhdG9yLmZyb20oSXRlclV0aWxzLnppcCh0aGlzLmdldFBhdGhQYXJ0cygpLCBtb2RlbFBhdGguZ2V0UGF0aFBhcnRzKCkpKS5ldmVyeShcbiAgICAgICAgICAgICAgICAgICAgKFt0MSwgdDJdKSA9PiB0MSA9PT0gdDJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRgdC10LPQtNCwINGG0LXQu9C+0LUg0L/QvtC70L7QttC40YLQtdC70YzQvdC+0LUg0LHQtdC30LfQvdCw0LrQvtCy0L7QtSAzMi3QsdC40YLQvdC+0LUg0YfQuNGB0LvQvlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRIYXNoKGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWUpOiBudW1iZXIge1xuICAgICAgICBsZXQgaGFzaCA9IDUzODE7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgcmV2ZXJzZUFycmF5KHRoaXMudG9rZW5zKSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRTdHI6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFN0ciA9IHRva2VuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZWFjaEN1cnJlbnRDb2xsaXNpb24gPT09IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZURpZmZlcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyID0gdG9rZW4gPT09IFBhdGhUb2tlbnMuZWFjaCA/IFwiKlwiIDogXCIhXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ciA9IFwiKlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBzdHJpbmdJbmRleCA9IGN1cnJlbnRTdHIubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKHN0cmluZ0luZGV4KSB7XG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgICAgICBoYXNoID0gKGhhc2ggKiAzMykgXiBjdXJyZW50U3RyLmNoYXJDb2RlQXQoLS1zdHJpbmdJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgICAgdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcbiAgICAgICAgICAgIEphdmFTY3JpcHQgZG9lcyBiaXR3aXNlIG9wZXJhdGlvbnMgKGxpa2UgWE9SLCBhYm92ZSkgb24gMzItYml0IHNpZ25lZFxuICAgICAgICAgICAgaW50ZWdlcnMuIFNpbmNlIHdlIHdhbnQgdGhlIHJlc3VsdHMgdG8gYmUgYWx3YXlzIHBvc2l0aXZlLCBjb252ZXJ0IHRoZVxuICAgICAgICAgICAgc2lnbmVkIGludCB0byBhbiB1bnNpZ25lZCBieSBkb2luZyBhbiB1bnNpZ25lZCBiaXRzaGlmdC5cbiAgICAgICovXG4gICAgICAgIHJldHVybiBoYXNoID4+PiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0luY2x1ZGVzKG1vZGVsUGF0aDogTW9kZWxQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnRva2Vucy5sZW5ndGggIT09IG1vZGVsUGF0aC50b2tlbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgbGVmdFBhcnQgPSB0aGlzLnRva2Vuc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0UGFydCA9IG1vZGVsUGF0aC50b2tlbnNbaV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxlZnRQYXJ0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByaWdodFBhcnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRQYXJ0ICE9PSByaWdodFBhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChsZWZ0UGFydCA9PT0gUGF0aFRva2Vucy5jdXJyZW50IHx8IGxlZnRQYXJ0ID09PSBQYXRoVG9rZW5zLmVhY2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJpZ2h0UGFydCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKE51bWJlcihyaWdodFBhcnQpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyaWdodFBhcnQgIT09IFBhdGhUb2tlbnMuY3VycmVudCAmJiByaWdodFBhcnQgIT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SXRlcmF0aW9uUmFuaygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gY291bnQoSXRlcmF0b3IuZnJvbSh0aGlzLnRva2VucykuZmlsdGVyKHggPT4geCA9PT0gUGF0aFRva2Vucy5lYWNoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2Vucy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoRm9yKG1vZGVsUGF0aDogTW9kZWxQYXRoKTogUGF0aE1hdGNoaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQWJzb2x1dGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbWF0Y2ggbm9uIGFic29sdXRlIHBhdGggJyR7dGhpcy50b1N0cmluZygpfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vZGVsUGF0aC5pc0Fic29sdXRlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IG1hdGNoIG5vbiBhYnNvbHV0ZSBwYXRoICcke21vZGVsUGF0aC50b1N0cmluZygpfSdgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUGF0aE1hdGNoZXIubWF0Y2godGhpcy50b2tlbnMsIG1vZGVsUGF0aC50b2tlbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyAqc3BsaXRCeU11bHRpcGxpY2l0eSgpOiBJdGVyYWJsZTxNb2RlbFBhdGggfCB0eXBlb2YgRWFjaFN5bWJvbCB8IHR5cGVvZiBDdXJyZW50U3ltYm9sPiB7XG4gICAgICAgIGxldCBsYXN0U2ltcGxlUGFydHMgPSBNb2RlbFBhdGguYnVpbGRlcih0aGlzLmlzQWJzb2x1dGUoKSk7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGhpcy50b2tlbnMpIHtcbiAgICAgICAgICAgIGlmIChQYXRoVG9rZW5zLmlzU2ltcGxlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgbGFzdFNpbXBsZVBhcnRzLmFwcGVuZCh0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghbGFzdFNpbXBsZVBhcnRzLmVtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGxhc3RTaW1wbGVQYXJ0cy50b1BhdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNpbXBsZVBhcnRzID0gTW9kZWxQYXRoLmJ1aWxkZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFsYXN0U2ltcGxlUGFydHMuZW1wdHkpIHtcbiAgICAgICAgICAgIHlpZWxkIGxhc3RTaW1wbGVQYXJ0cy50b1BhdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBub3JtYWxpemUoKTogTW9kZWxQYXRoIHtcbiAgICAgICAgY29uc3QgcmVzdWx0VG9rZW5zOiBQYXRoVG9rZW5bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0IG9mIHRoaXMudG9rZW5zKSB7XG4gICAgICAgICAgICBpZiAocGF0aFBhcnQgPT09IFwiLi5cIikge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0VG9rZW5zLnBvcCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWJzb2x1dGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXRoIGlzIGludmFsaWQgJyR7dGhpcy50b1N0cmluZygpfSdgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFRva2Vucy5wdXNoKFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXRoUGFydCA9PT0gXCIuXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdFRva2Vucy5wdXNoKHBhdGhQYXJ0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aChyZXN1bHRUb2tlbnMsIHRoaXMuaXNBYnNvbHV0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSDQodC/0LXRhtC40YTQuNC60LDRgtC+0YDRiyDQvNC90L7QttC10YHRgtCy0LXQvdC90L7RgdGC0LggRWFjaCDQt9Cw0LzQtdC90Y/QtdGCINC90LAgQ3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyB0b0N1cnJlbnRJdGVyYXRpb24oKTogTW9kZWxQYXRoIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFBhdGgoXG4gICAgICAgICAgICB0aGlzLnRva2Vucy5tYXAoeCA9PiAoeCA9PT0gUGF0aFRva2Vucy5lYWNoID8gUGF0aFRva2Vucy5jdXJyZW50IDogeCkpLFxuICAgICAgICAgICAgdGhpcy5pc0Fic29sdXRlKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9FYWNoSXRlcmF0aW9uKCk6IE1vZGVsUGF0aCB7XG4gICAgICAgIHJldHVybiBuZXcgTW9kZWxQYXRoKFxuICAgICAgICAgICAgdGhpcy50b2tlbnMubWFwKHggPT4gKHggPT09IFBhdGhUb2tlbnMuY3VycmVudCA/IFBhdGhUb2tlbnMuZWFjaCA6IHgpKSxcbiAgICAgICAgICAgIHRoaXMuaXNBYnNvbHV0ZSgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvQWJzb2x1dGUoKTogQWJzb2x1dGVNb2RlbFBhdGgge1xuICAgICAgICBpZiAoIXRoaXMuYWJzb2x1dGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0aCAnJHt0aGlzLnRvTGVnYWN5UGF0aCgpfSBpcyBub3QgYWJzb2x1dGUnYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsUGF0aCh0aGlzLnRva2Vucyk7XG4gICAgfVxuXG4gICAgcHVibGljICpnZXRBbGxQYXJlbnRQYXRocygpOiBJdGVyYWJsZTxNb2RlbFBhdGg+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gTW9kZWxQYXRoLmJ1aWxkZXIodGhpcy5pc0Fic29sdXRlKCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIEl0ZXJVdGlscy5za2lwTGFzdCh0aGlzLmdldFBhdGhQYXJ0cygpLCAxKSkge1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0b2tlbik7XG4gICAgICAgICAgICB5aWVsZCByZXN1bHQudG9QYXRoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdHJpbUxhc3RTdGFySWZMYXN0VG9rZW4oKTogTW9kZWxQYXRoIHtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW0gPSBJdGVyVXRpbHMubGFzdCh0aGlzLnRva2Vucyk7XG4gICAgICAgIGlmIChsYXN0SXRlbSAhPSB1bmRlZmluZWQgJiYgUGF0aFRva2Vucy5pc011bHRpVG9rZW4obGFzdEl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsUGF0aCh0aGlzLnRva2Vucy5zbGljZSgwLCAtMSksIHRoaXMuYWJzb2x1dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJlbnRQYXRoKCk6IE1vZGVsUGF0aCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE1vZGVsUGF0aC5idWlsZGVyKHRoaXMuaXNBYnNvbHV0ZSgpKTtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiBJdGVyVXRpbHMuc2tpcExhc3QodGhpcy5nZXRQYXRoUGFydHMoKSwgMSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudG9BYnNvbHV0ZVBhdGgoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwbHlJbnN0YW5jZXNEaXJ0eShpbnN0YW5jZXM6IFNpbXBsZVBhdGhUb2tlbltdKTogTW9kZWxQYXRoIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZXNvbHZlZCgpIHx8IGluc3RhbmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbnN0YW5jZUNvdW50ZXIgPSAwO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBNb2RlbFBhdGguYnVpbGRlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRoaXMuZ2V0UGF0aFBhcnRzKCkpIHtcbiAgICAgICAgICAgIGlmIChQYXRoVG9rZW5zLmlzTXVsdGlUb2tlbih0b2tlbikgJiYgaW5zdGFuY2VDb3VudGVyIDwgaW5zdGFuY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaW5zdGFuY2VzW2luc3RhbmNlQ291bnRlcl0gPz8gcmVqZWN0KCkpO1xuICAgICAgICAgICAgICAgIGluc3RhbmNlQ291bnRlcisrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0LnRvQWJzb2x1dGVQYXRoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXRoUGFydFRvU3RyaW5nKHBhdGhQYXJ0OiBQYXRoVG9rZW4pOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIHBhdGhQYXJ0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aFBhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhQYXJ0ID09PSBQYXRoVG9rZW5zLmVhY2gpIHtcbiAgICAgICAgICAgIHJldHVybiBcIipcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFBhcnQgPT09IFBhdGhUb2tlbnMuY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiKlwiO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwYXRoIHBhcnQgc3BlY2lmaWVkOiAke2Vuc3VyZUFuZEdldFN0cmluZyhwYXRoUGFydCl9YCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVNb2RlbFBhdGggZXh0ZW5kcyBNb2RlbFBhdGgge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXRoUGFydHM6IHJlYWRvbmx5IFBhdGhUb2tlbltdKSB7XG4gICAgICAgIHN1cGVyKHBhdGhQYXJ0cywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVBYnNvbHV0ZUZyb21NYXNrKHBhdGg6IHN0cmluZywgbXVsdGlwbGljaXR5U3ltYm9sOiBQYXRoVG9rZW4pOiBNb2RlbFBhdGgge1xuICAgICAgICBjb25zdCBwYXJ0UGFydFN0cmluZ3MgPSBwYXRoLnNwbGl0KFwiL1wiKS5tYXAoeCA9PiAoeCA9PT0gXCIqXCIgPyBtdWx0aXBsaWNpdHlTeW1ib2wgOiB4KSk7XG4gICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsUGF0aChwYXJ0UGFydFN0cmluZ3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlQWJzb2x1dGUocGF0aDogc3RyaW5nKTogQWJzb2x1dGVNb2RlbFBhdGgge1xuICAgICAgICBjb25zdCBwYXJ0UGFydFN0cmluZ3MgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgdGhpcy5lbnN1cmVQbGFpblBhdGhQYXJ0c0RvZXNOb3RDb250YWluTXVsdGlwbGljaXR5KHBhcnRQYXJ0U3RyaW5ncyk7XG4gICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxQYXRoKHBhcnRQYXJ0U3RyaW5ncy5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsUGF0aChwYXJ0UGFydFN0cmluZ3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBqb2luV2l0aChwYXRoOiBNb2RlbFBhdGggfCBQYXRoVG9rZW4pOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgICAgIHJldHVybiBzdXBlci5qb2luV2l0aChwYXRoKS50b0Fic29sdXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcmVudFBhdGgoKTogQWJzb2x1dGVNb2RlbFBhdGgge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBNb2RlbFBhdGguYnVpbGRlcih0cnVlKTtcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiBJdGVyVXRpbHMuc2tpcExhc3QodGhpcy5nZXRQYXRoUGFydHMoKSwgMSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudG9BYnNvbHV0ZVBhdGgoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwbHlJbnN0YW5jZXNEaXJ0eShpbnN0YW5jZXM6IFNpbXBsZVBhdGhUb2tlbltdKTogQWJzb2x1dGVNb2RlbFBhdGgge1xuICAgICAgICByZXR1cm4gc3VwZXIuYXBwbHlJbnN0YW5jZXNEaXJ0eShpbnN0YW5jZXMpLnRvQWJzb2x1dGUoKTtcbiAgICB9XG59XG4iXX0=
@@ -7,15 +7,6 @@ exports.ModelPathBuilder = void 0;
7
7
 
8
8
  var _ModelPath = require("./ModelPath");
9
9
 
10
- (function () {
11
- var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
12
- enterModule && enterModule(module);
13
- })();
14
-
15
- var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
16
- return a;
17
- };
18
-
19
10
  class ModelPathBuilder {
20
11
  constructor(forceAbsolute = false) {
21
12
  this.parts = void 0;
@@ -54,31 +45,7 @@ class ModelPathBuilder {
54
45
  return this.toPath().toString();
55
46
  }
56
47
 
57
- // @ts-ignore
58
- __reactstandin__regenerateByEval(key, code) {
59
- // @ts-ignore
60
- this[key] = eval(code);
61
- }
62
-
63
48
  }
64
49
 
65
50
  exports.ModelPathBuilder = ModelPathBuilder;
66
- ;
67
-
68
- (function () {
69
- var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
70
-
71
- if (!reactHotLoader) {
72
- return;
73
- }
74
-
75
- reactHotLoader.register(ModelPathBuilder, "ModelPathBuilder", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPathBuilder.ts");
76
- })();
77
-
78
- ;
79
-
80
- (function () {
81
- var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
82
- leaveModule && leaveModule(module);
83
- })();
84
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoQnVpbGRlci50cyJdLCJuYW1lcyI6WyJNb2RlbFBhdGhCdWlsZGVyIiwiY29uc3RydWN0b3IiLCJmb3JjZUFic29sdXRlIiwicGFydHMiLCJNb2RlbFBhdGgiLCJlbXB0eSIsImxlbmd0aCIsImFwcGVuZCIsInBhdGhQYXJ0IiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsInRvUGF0aCIsImpvaW4iLCJ0b0Fic29sdXRlUGF0aCIsInJlc3VsdCIsImlzQWJzb2x1dGUiLCJFcnJvciIsIkFic29sdXRlTW9kZWxQYXRoIiwiZ2V0UGF0aFBhcnRzIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7QUFFTyxNQUFNQSxnQkFBTixDQUF1QjtBQUduQkMsRUFBQUEsV0FBVyxDQUFDQyxhQUFzQixHQUFHLEtBQTFCLEVBQWlDO0FBQUEsU0FGbENDLEtBRWtDO0FBQy9DLFNBQUtBLEtBQUwsR0FBYUQsYUFBYSxHQUFHLENBQUMsSUFBSUUsb0JBQUosQ0FBYyxFQUFkLEVBQWtCLElBQWxCLENBQUQsQ0FBSCxHQUErQixFQUF6RDtBQUNIOztBQUVlLE1BQUxDLEtBQUssR0FBWTtBQUN4QixXQUFPLEtBQUtGLEtBQUwsQ0FBV0csTUFBWCxLQUFzQixDQUE3QjtBQUNIOztBQUVNQyxFQUFBQSxNQUFNLENBQUNDLFFBQUQsRUFBdUU7QUFDaEYsUUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLFFBQWQsQ0FBSixFQUE2QjtBQUN6QixXQUFLTCxLQUFMLENBQVdRLElBQVgsQ0FBZ0IsR0FBR0gsUUFBbkI7QUFDSCxLQUZELE1BRU87QUFDSCxXQUFLTCxLQUFMLENBQVdRLElBQVgsQ0FBZ0JILFFBQWhCO0FBQ0g7O0FBQ0QsV0FBTyxJQUFQO0FBQ0g7O0FBRU1JLEVBQUFBLE1BQU0sR0FBYztBQUN2QixXQUFPUixxQkFBVVMsSUFBVixDQUFlLEdBQUcsS0FBS1YsS0FBdkIsQ0FBUDtBQUNIOztBQUVNVyxFQUFBQSxjQUFjLEdBQXNCO0FBQ3ZDLFVBQU1DLE1BQU0sR0FBRyxLQUFLSCxNQUFMLEVBQWY7O0FBQ0EsUUFBSSxDQUFDRyxNQUFNLENBQUNDLFVBQVAsRUFBTCxFQUEwQjtBQUN0QixZQUFNLElBQUlDLEtBQUosQ0FBVSxzQkFBVixDQUFOO0FBQ0g7O0FBQ0QsV0FBTyxJQUFJQyw0QkFBSixDQUFzQixDQUFDLEdBQUcsS0FBS04sTUFBTCxHQUFjTyxZQUFkLEVBQUosQ0FBdEIsQ0FBUDtBQUNIOztBQUVNQyxFQUFBQSxRQUFRLEdBQVc7QUFDdEIsV0FBTyxLQUFLUixNQUFMLEdBQWNRLFFBQWQsRUFBUDtBQUNIOztBQWxDeUI7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTs7Ozs7Ozs7Ozs7OzBCQUFqQnBCLGdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzb2x1dGVNb2RlbFBhdGgsIE1vZGVsUGF0aCwgUGF0aFRva2VuIH0gZnJvbSBcIi4vTW9kZWxQYXRoXCI7XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFBhdGhCdWlsZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcnRzOiBBcnJheTxNb2RlbFBhdGggfCBQYXRoVG9rZW4+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZvcmNlQWJzb2x1dGU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLnBhcnRzID0gZm9yY2VBYnNvbHV0ZSA/IFtuZXcgTW9kZWxQYXRoKFtdLCB0cnVlKV0gOiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJ0cy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGVuZChwYXRoUGFydDogTW9kZWxQYXRoIHwgUGF0aFRva2VuIHwgQXJyYXk8TW9kZWxQYXRoIHwgUGF0aFRva2VuPik6IHRoaXMge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoUGFydCkpIHtcbiAgICAgICAgICAgIHRoaXMucGFydHMucHVzaCguLi5wYXRoUGFydCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhcnRzLnB1c2gocGF0aFBhcnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1BhdGgoKTogTW9kZWxQYXRoIHtcbiAgICAgICAgcmV0dXJuIE1vZGVsUGF0aC5qb2luKC4uLnRoaXMucGFydHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0Fic29sdXRlUGF0aCgpOiBBYnNvbHV0ZU1vZGVsUGF0aCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9QYXRoKCk7XG4gICAgICAgIGlmICghcmVzdWx0LmlzQWJzb2x1dGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBpcyBub3QgYWJzb2x1dGVcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBYnNvbHV0ZU1vZGVsUGF0aChbLi4udGhpcy50b1BhdGgoKS5nZXRQYXRoUGFydHMoKV0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50b1BhdGgoKS50b1N0cmluZygpO1xuICAgIH1cbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoQnVpbGRlci50cyJdLCJuYW1lcyI6WyJNb2RlbFBhdGhCdWlsZGVyIiwiY29uc3RydWN0b3IiLCJmb3JjZUFic29sdXRlIiwicGFydHMiLCJNb2RlbFBhdGgiLCJlbXB0eSIsImxlbmd0aCIsImFwcGVuZCIsInBhdGhQYXJ0IiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsInRvUGF0aCIsImpvaW4iLCJ0b0Fic29sdXRlUGF0aCIsInJlc3VsdCIsImlzQWJzb2x1dGUiLCJFcnJvciIsIkFic29sdXRlTW9kZWxQYXRoIiwiZ2V0UGF0aFBhcnRzIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFTyxNQUFNQSxnQkFBTixDQUF1QjtBQUduQkMsRUFBQUEsV0FBVyxDQUFDQyxhQUFzQixHQUFHLEtBQTFCLEVBQWlDO0FBQUEsU0FGbENDLEtBRWtDO0FBQy9DLFNBQUtBLEtBQUwsR0FBYUQsYUFBYSxHQUFHLENBQUMsSUFBSUUsb0JBQUosQ0FBYyxFQUFkLEVBQWtCLElBQWxCLENBQUQsQ0FBSCxHQUErQixFQUF6RDtBQUNIOztBQUVlLE1BQUxDLEtBQUssR0FBWTtBQUN4QixXQUFPLEtBQUtGLEtBQUwsQ0FBV0csTUFBWCxLQUFzQixDQUE3QjtBQUNIOztBQUVNQyxFQUFBQSxNQUFNLENBQUNDLFFBQUQsRUFBdUU7QUFDaEYsUUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLFFBQWQsQ0FBSixFQUE2QjtBQUN6QixXQUFLTCxLQUFMLENBQVdRLElBQVgsQ0FBZ0IsR0FBR0gsUUFBbkI7QUFDSCxLQUZELE1BRU87QUFDSCxXQUFLTCxLQUFMLENBQVdRLElBQVgsQ0FBZ0JILFFBQWhCO0FBQ0g7O0FBQ0QsV0FBTyxJQUFQO0FBQ0g7O0FBRU1JLEVBQUFBLE1BQU0sR0FBYztBQUN2QixXQUFPUixxQkFBVVMsSUFBVixDQUFlLEdBQUcsS0FBS1YsS0FBdkIsQ0FBUDtBQUNIOztBQUVNVyxFQUFBQSxjQUFjLEdBQXNCO0FBQ3ZDLFVBQU1DLE1BQU0sR0FBRyxLQUFLSCxNQUFMLEVBQWY7O0FBQ0EsUUFBSSxDQUFDRyxNQUFNLENBQUNDLFVBQVAsRUFBTCxFQUEwQjtBQUN0QixZQUFNLElBQUlDLEtBQUosQ0FBVSxzQkFBVixDQUFOO0FBQ0g7O0FBQ0QsV0FBTyxJQUFJQyw0QkFBSixDQUFzQixDQUFDLEdBQUcsS0FBS04sTUFBTCxHQUFjTyxZQUFkLEVBQUosQ0FBdEIsQ0FBUDtBQUNIOztBQUVNQyxFQUFBQSxRQUFRLEdBQVc7QUFDdEIsV0FBTyxLQUFLUixNQUFMLEdBQWNRLFFBQWQsRUFBUDtBQUNIOztBQWxDeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnNvbHV0ZU1vZGVsUGF0aCwgTW9kZWxQYXRoLCBQYXRoVG9rZW4gfSBmcm9tIFwiLi9Nb2RlbFBhdGhcIjtcblxuZXhwb3J0IGNsYXNzIE1vZGVsUGF0aEJ1aWxkZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFydHM6IEFycmF5PE1vZGVsUGF0aCB8IFBhdGhUb2tlbj47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9yY2VBYnNvbHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMucGFydHMgPSBmb3JjZUFic29sdXRlID8gW25ldyBNb2RlbFBhdGgoW10sIHRydWUpXSA6IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwZW5kKHBhdGhQYXJ0OiBNb2RlbFBhdGggfCBQYXRoVG9rZW4gfCBBcnJheTxNb2RlbFBhdGggfCBQYXRoVG9rZW4+KTogdGhpcyB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJ0cy5wdXNoKC4uLnBhdGhQYXJ0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFydHMucHVzaChwYXRoUGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHRvUGF0aCgpOiBNb2RlbFBhdGgge1xuICAgICAgICByZXR1cm4gTW9kZWxQYXRoLmpvaW4oLi4udGhpcy5wYXJ0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvQWJzb2x1dGVQYXRoKCk6IEFic29sdXRlTW9kZWxQYXRoIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy50b1BhdGgoKTtcbiAgICAgICAgaWYgKCFyZXN1bHQuaXNBYnNvbHV0ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIGlzIG5vdCBhYnNvbHV0ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxQYXRoKFsuLi50aGlzLnRvUGF0aCgpLmdldFBhdGhQYXJ0cygpXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUGF0aCgpLnRvU3RyaW5nKCk7XG4gICAgfVxufVxuIl19
@@ -9,15 +9,6 @@ var _TypingUtils = require("../TypingUtils");
9
9
 
10
10
  var _EachCurrentCollision = require("./EachCurrentCollision");
11
11
 
12
- (function () {
13
- var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
14
- enterModule && enterModule(module);
15
- })();
16
-
17
- var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
18
- return a;
19
- };
20
-
21
12
  class Map2 {
22
13
  constructor() {
23
14
  this.hashMap = new Map();
@@ -104,12 +95,6 @@ class Map2 {
104
95
  return (_this$hashMap$get = this.hashMap.get(hash)) === null || _this$hashMap$get === void 0 ? void 0 : _this$hashMap$get.find(x => this.areKeyEqual(x[0], key));
105
96
  }
106
97
 
107
- // @ts-ignore
108
- __reactstandin__regenerateByEval(key, code) {
109
- // @ts-ignore
110
- this[key] = eval(code);
111
- }
112
-
113
98
  }
114
99
 
115
100
  exports.Map2 = Map2;
@@ -129,32 +114,7 @@ class ModelPathMap extends Map2 {
129
114
  return key.getHash(this.eachCurrentCollision);
130
115
  }
131
116
 
132
- // @ts-ignore
133
- __reactstandin__regenerateByEval(key, code) {
134
- // @ts-ignore
135
- this[key] = eval(code);
136
- }
137
-
138
117
  }
139
118
 
140
119
  exports.ModelPathMap = ModelPathMap;
141
- ;
142
-
143
- (function () {
144
- var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
145
-
146
- if (!reactHotLoader) {
147
- return;
148
- }
149
-
150
- reactHotLoader.register(Map2, "Map2", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPathMap.ts");
151
- reactHotLoader.register(ModelPathMap, "ModelPathMap", "C:\\buildAgent\\work\\8df8f1edd755969c\\Common\\ModelPath\\ModelPathMap.ts");
152
- })();
153
-
154
- ;
155
-
156
- (function () {
157
- var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
158
- leaveModule && leaveModule(module);
159
- })();
160
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoTWFwLnRzIl0sIm5hbWVzIjpbIk1hcDIiLCJoYXNoTWFwIiwiTWFwIiwic2V0Iiwia2V5IiwidmFsdWUiLCJzZXRPclVwZGF0ZSIsImdldE9yU2V0IiwiZGVmYXVsdFZhbHVlIiwiayIsInYiLCJnZXQiLCJnZXRFbnRyeU9yVW5kZWZpbmVkIiwiaGFzIiwidW5kZWZpbmVkIiwibmV3VmFsdWVGYWN0b3J5IiwidXBkYXRlVmFsdWVGYWN0b3J5IiwiaGFzaCIsImdldEtleUhhc2giLCJsaXN0IiwicmVzdWx0IiwiaXRlbUluZGV4IiwiZmluZEluZGV4IiwieCIsImFyZUtleUVxdWFsIiwicHVzaCIsImVudHJ5Iiwia2V5cyIsIkl0ZXJhdG9yIiwiZnJvbSIsImVudHJpZXMiLCJtYXAiLCJlIiwidmFsdWVzIiwiZmxhdE1hcCIsImNsZWFyIiwiZ2V0SGFzaCIsImxlZnQiLCJyaWdodCIsImlzRXF1YWxzIiwiZmluZCIsIk1vZGVsUGF0aE1hcCIsImNvbnN0cnVjdG9yIiwiZWFjaEN1cnJlbnRDb2xsaXNpb24iLCJFYWNoQ3VycmVudENvbGxpc2lvbiIsIkFyZVNhbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFJQTs7Ozs7Ozs7Ozs7QUFFTyxNQUFNQSxJQUFOLENBQXVDO0FBQUE7QUFBQSxTQUN6QkMsT0FEeUIsR0FDZixJQUFJQyxHQUFKLEVBRGU7QUFBQTs7QUFHbkNDLEVBQUFBLEdBQUcsQ0FBQ0MsR0FBRCxFQUFTQyxLQUFULEVBQXlCO0FBQy9CLFNBQUtDLFdBQUwsQ0FDSUYsR0FESixFQUVJLE1BQU1DLEtBRlYsRUFHSSxNQUFNQSxLQUhWO0FBS0g7O0FBRU1FLEVBQUFBLFFBQVEsQ0FBQ0gsR0FBRCxFQUFTSSxZQUFULEVBQTZCO0FBQ3hDLFdBQU8sS0FBS0YsV0FBTCxDQUNIRixHQURHLEVBRUgsTUFBTUksWUFGSCxFQUdILENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFV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QUFBOztBQUNwRCxVQUFNYSxJQUFJLEdBQUcsS0FBS0MsVUFBTCxDQUFnQmQsR0FBaEIsQ0FBYjtBQUNBLGdDQUFPLEtBQUtILE9BQUwsQ0FBYVUsR0FBYixDQUFpQk0sSUFBakIsQ0FBUCxzREFBTyxrQkFBd0J1QixJQUF4QixDQUE2QmpCLENBQUMsSUFBSSxLQUFLQyxXQUFMLENBQWlCRCxDQUFDLENBQUMsQ0FBRCxDQUFsQixFQUF1Qm5CLEdBQXZCLENBQWxDLENBQVA7QUFDSDs7QUFqRnlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7Ozs7QUFvRnZDLE1BQU1xQyxZQUFOLFNBQThCekMsSUFBOUIsQ0FBaUQ7QUFHN0MwQyxFQUFBQSxXQUFXLENBQUNDLG9CQUEwQyxHQUFHQywyQ0FBcUJDLE9BQW5FLEVBQTRFO0FBQzFGO0FBRDBGLFNBRjdFRixvQkFFNkU7QUFFMUYsU0FBS0Esb0JBQUwsR0FBNEJBLG9CQUE1QjtBQUNIOztBQUVTbkIsRUFBQUEsV0FBVyxDQUFDYSxJQUFELEVBQWtCQyxLQUFsQixFQUE2QztBQUM5RCxXQUFPRCxJQUFJLENBQUNFLFFBQUwsQ0FBY0QsS0FBZCxFQUFxQixLQUFLSyxvQkFBMUIsQ0FBUDtBQUNIOztBQUVTekIsRUFBQUEsVUFBVSxDQUFDZCxHQUFELEVBQXlCO0FBQ3pDLFdBQU9BLEdBQUcsQ0FBQ2dDLE9BQUosQ0FBWSxLQUFLTyxvQkFBakIsQ0FBUDtBQUNIOztBQWRtRDtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBOzs7Ozs7Ozs7Ozs7MEJBcEYzQzNDLEk7MEJBb0ZBeUMsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBNb2RlbFBhdGggfSBmcm9tIFwiLi9Nb2RlbFBhdGhcIjtcbmltcG9ydCB7IElFcXVhdGFibGUgfSBmcm9tIFwiLi9JRXF1YXRhYmxlXCI7XG5pbXBvcnQgeyBFYWNoQ3VycmVudENvbGxpc2lvbiB9IGZyb20gXCIuL0VhY2hDdXJyZW50Q29sbGlzaW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBNYXAyPEsgZXh0ZW5kcyBJRXF1YXRhYmxlPEs+LCBWPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBoYXNoTWFwID0gbmV3IE1hcDxudW1iZXIsIEFycmF5PFtLLCBWXT4+KCk7XG5cbiAgICBwdWJsaWMgc2V0KGtleTogSywgdmFsdWU6IFYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRPclVwZGF0ZShcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICgpID0+IHZhbHVlLFxuICAgICAgICAgICAgKCkgPT4gdmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3JTZXQoa2V5OiBLLCBkZWZhdWx0VmFsdWU6IFYpOiBWIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0T3JVcGRhdGUoXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAoKSA9PiBkZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICAoaywgdikgPT4gdlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQoa2V5OiBLKTogViB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEVudHJ5T3JVbmRlZmluZWQoa2V5KT8uWzFdO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXMoa2V5OiBLKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEVudHJ5T3JVbmRlZmluZWQoa2V5KSAhPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdC90L7QstC70Y/QtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0YHQu9C+0LLQsNGA0LUg0L/QviDQutC70Y7Rh9GOLCDQtdGB0LvQuCDQt9C90LDRh9C10L3QuNGPINC90LXRgiAtLSDRg9GB0YLQvdCw0LLQuNGCINC90L7QstC+0LVcbiAgICAgKiBAcGFyYW0ga2V5INC60LvRjtGHINGB0LvQvtCy0LDRgNGPINC00LvRjyDRgNC+0LHQvdC+0LLQu9C10L3QuNGPXG4gICAgICogQHBhcmFtIG5ld1ZhbHVlRmFjdG9yeSDQldGB0LvQuCDQt9C90LDRh9C10L3QuNGPINC90LXRgiAtLSDQsdGD0LTQtdGCINGD0YHRgtCw0L3QvtCy0LvQtdC9INGA0LXQt9GD0LvRjNGC0LDRgiDRjdGC0L7QuSDRhNGD0L3QutGG0LjQuFxuICAgICAqIEBwYXJhbSB1cGRhdGVWYWx1ZUZhY3Rvcnkg0JXRgdC70Lgg0LfQvdCw0YfQtdC90LjQtSDQtdGB0YLRjCAtLSDQsdGD0LTQtdGCINGD0YHRgtCw0L3QvtCy0LvQtdC9INGA0LXQt9GD0LvRjNGC0LDRgiDRjdGC0L7QuSDRhNGD0L3QutGG0LjQuFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRPclVwZGF0ZShrZXk6IEssIG5ld1ZhbHVlRmFjdG9yeTogKGtleTogSykgPT4gViwgdXBkYXRlVmFsdWVGYWN0b3J5OiAoa2V5OiBLLCB1cGRhdGU6IFYpID0+IFYpOiBWIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuZ2V0S2V5SGFzaChrZXkpO1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5oYXNoTWFwLmdldChoYXNoKTtcbiAgICAgICAgaWYgKGxpc3QgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXdWYWx1ZUZhY3Rvcnkoa2V5KTtcbiAgICAgICAgICAgIHRoaXMuaGFzaE1hcC5zZXQoaGFzaCwgW1trZXksIG5ld1ZhbHVlRmFjdG9yeShrZXkpXV0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGxpc3QuZmluZEluZGV4KHggPT4gdGhpcy5hcmVLZXlFcXVhbCh4WzBdLCBrZXkpKTtcbiAgICAgICAgICAgIGlmIChpdGVtSW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXdWYWx1ZUZhY3Rvcnkoa2V5KTtcbiAgICAgICAgICAgICAgICBsaXN0LnB1c2goW2tleSwgcmVzdWx0XSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBsaXN0W2l0ZW1JbmRleF0gPz8gcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgZW50cnlbMV0gPSB1cGRhdGVWYWx1ZUZhY3Rvcnkoa2V5LCBlbnRyeVsxXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGtleXMoKTogSXRlcmFibGU8Sz4ge1xuICAgICAgICByZXR1cm4gSXRlcmF0b3IuZnJvbSh0aGlzLmVudHJpZXMoKSkubWFwKGUgPT4gZVswXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbHVlcygpOiBJdGVyYWJsZTxWPiB7XG4gICAgICAgIHJldHVybiBJdGVyYXRvci5mcm9tKHRoaXMuZW50cmllcygpKS5tYXAoZSA9PiBlWzFdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW50cmllcygpOiBJdGVyYWJsZTxba2V5OiBLLCB2YWx1ZTogVl0+IHtcbiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yLmZyb20odGhpcy5oYXNoTWFwLnZhbHVlcygpKS5mbGF0TWFwKHggPT4geCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc2hNYXAuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0S2V5SGFzaChrZXk6IEspOiBudW1iZXIge1xuICAgICAgICByZXR1cm4ga2V5LmdldEhhc2goKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXJlS2V5RXF1YWwobGVmdDogSywgcmlnaHQ6IEspOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGxlZnQuaXNFcXVhbHMocmlnaHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RW50cnlPclVuZGVmaW5lZChrZXk6IEspOiBbSywgVl0gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBoYXNoID0gdGhpcy5nZXRLZXlIYXNoKGtleSk7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc2hNYXAuZ2V0KGhhc2gpPy5maW5kKHggPT4gdGhpcy5hcmVLZXlFcXVhbCh4WzBdLCBrZXkpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFBhdGhNYXA8Vj4gZXh0ZW5kcyBNYXAyPE1vZGVsUGF0aCwgVj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWFjaEN1cnJlbnRDb2xsaXNpb246IEVhY2hDdXJyZW50Q29sbGlzaW9uO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lYWNoQ3VycmVudENvbGxpc2lvbiA9IGVhY2hDdXJyZW50Q29sbGlzaW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhcmVLZXlFcXVhbChsZWZ0OiBNb2RlbFBhdGgsIHJpZ2h0OiBNb2RlbFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGxlZnQuaXNFcXVhbHMocmlnaHQsIHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRLZXlIYXNoKGtleTogTW9kZWxQYXRoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGtleS5nZXRIYXNoKHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24pO1xuICAgIH1cbn1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoTWFwLnRzIl0sIm5hbWVzIjpbIk1hcDIiLCJoYXNoTWFwIiwiTWFwIiwic2V0Iiwia2V5IiwidmFsdWUiLCJzZXRPclVwZGF0ZSIsImdldE9yU2V0IiwiZGVmYXVsdFZhbHVlIiwiayIsInYiLCJnZXQiLCJnZXRFbnRyeU9yVW5kZWZpbmVkIiwiaGFzIiwidW5kZWZpbmVkIiwibmV3VmFsdWVGYWN0b3J5IiwidXBkYXRlVmFsdWVGYWN0b3J5IiwiaGFzaCIsImdldEtleUhhc2giLCJsaXN0IiwicmVzdWx0IiwiaXRlbUluZGV4IiwiZmluZEluZGV4IiwieCIsImFyZUtleUVxdWFsIiwicHVzaCIsImVudHJ5Iiwia2V5cyIsIkl0ZXJhdG9yIiwiZnJvbSIsImVudHJpZXMiLCJtYXAiLCJlIiwidmFsdWVzIiwiZmxhdE1hcCIsImNsZWFyIiwiZ2V0SGFzaCIsImxlZnQiLCJyaWdodCIsImlzRXF1YWxzIiwiZmluZCIsIk1vZGVsUGF0aE1hcCIsImNvbnN0cnVjdG9yIiwiZWFjaEN1cnJlbnRDb2xsaXNpb24iLCJFYWNoQ3VycmVudENvbGxpc2lvbiIsIkFyZVNhbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFJQTs7QUFFTyxNQUFNQSxJQUFOLENBQXVDO0FBQUE7QUFBQSxTQUN6QkMsT0FEeUIsR0FDZixJQUFJQyxHQUFKLEVBRGU7QUFBQTs7QUFHbkNDLEVBQUFBLEdBQUcsQ0FBQ0MsR0FBRCxFQUFTQyxLQUFULEVBQXlCO0FBQy9CLFNBQUtDLFdBQUwsQ0FDSUYsR0FESixFQUVJLE1BQU1DLEtBRlYsRUFHSSxNQUFNQSxLQUhWO0FBS0g7O0FBRU1FLEVBQUFBLFFBQVEsQ0FBQ0gsR0FBRCxFQUFTSSxZQUFULEVBQTZCO0FBQ3hDLFdBQU8sS0FBS0YsV0FBTCxDQUNIRixHQURHLEVBRUgsTUFBTUksWUFGSCxFQUdILENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVQSxDQUhQLENB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RCxVQUFNYSxJQUFJLEdBQUcsS0FBS0MsVUFBTCxDQUFnQmQsR0FBaEIsQ0FBYjtBQUNBLGdDQUFPLEtBQUtILE9BQUwsQ0FBYVUsR0FBYixDQUFpQk0sSUFBakIsQ0FBUCxzREFBTyxrQkFBd0J1QixJQUF4QixDQUE2QmpCLENBQUMsSUFBSSxLQUFLQyxXQUFMLENBQWlCRCxDQUFDLENBQUMsQ0FBRCxDQUFsQixFQUF1Qm5CLEdBQXZCLENBQWxDLENBQVA7QUFDSDs7QUFqRnlDOzs7O0FBb0Z2QyxNQUFNcUMsWUFBTixTQUE4QnpDLElBQTlCLENBQWlEO0FBRzdDMEMsRUFBQUEsV0FBVyxDQUFDQyxvQkFBMEMsR0FBR0MsMkNBQXFCQyxPQUFuRSxFQUE0RTtBQUMxRjtBQUQwRixTQUY3RUYsb0JBRTZFO0FBRTFGLFNBQUtBLG9CQUFMLEdBQTRCQSxvQkFBNUI7QUFDSDs7QUFFU25CLEVBQUFBLFdBQVcsQ0FBQ2EsSUFBRCxFQUFrQkMsS0FBbEIsRUFBNkM7QUFDOUQsV0FBT0QsSUFBSSxDQUFDRSxRQUFMLENBQWNELEtBQWQsRUFBcUIsS0FBS0ssb0JBQTFCLENBQVA7QUFDSDs7QUFFU3pCLEVBQUFBLFVBQVUsQ0FBQ2QsR0FBRCxFQUF5QjtBQUN6QyxXQUFPQSxHQUFHLENBQUNnQyxPQUFKLENBQVksS0FBS08sb0JBQWpCLENBQVA7QUFDSDs7QUFkbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vVHlwaW5nVXRpbHNcIjtcblxuaW1wb3J0IHsgTW9kZWxQYXRoIH0gZnJvbSBcIi4vTW9kZWxQYXRoXCI7XG5pbXBvcnQgeyBJRXF1YXRhYmxlIH0gZnJvbSBcIi4vSUVxdWF0YWJsZVwiO1xuaW1wb3J0IHsgRWFjaEN1cnJlbnRDb2xsaXNpb24gfSBmcm9tIFwiLi9FYWNoQ3VycmVudENvbGxpc2lvblwiO1xuXG5leHBvcnQgY2xhc3MgTWFwMjxLIGV4dGVuZHMgSUVxdWF0YWJsZTxLPiwgVj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFzaE1hcCA9IG5ldyBNYXA8bnVtYmVyLCBBcnJheTxbSywgVl0+PigpO1xuXG4gICAgcHVibGljIHNldChrZXk6IEssIHZhbHVlOiBWKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0T3JVcGRhdGUoXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAoKSA9PiB2YWx1ZSxcbiAgICAgICAgICAgICgpID0+IHZhbHVlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9yU2V0KGtleTogSywgZGVmYXVsdFZhbHVlOiBWKTogViB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldE9yVXBkYXRlKFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgKCkgPT4gZGVmYXVsdFZhbHVlLFxuICAgICAgICAgICAgKGssIHYpID0+IHZcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KGtleTogSyk6IFYgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRFbnRyeU9yVW5kZWZpbmVkKGtleSk/LlsxXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzKGtleTogSyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRFbnRyeU9yVW5kZWZpbmVkKGtleSkgIT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDQt9C90LDRh9C10L3QuNC1INCyINGB0LvQvtCy0LDRgNC1INC/0L4g0LrQu9GO0YfRjiwg0LXRgdC70Lgg0LfQvdCw0YfQtdC90LjRjyDQvdC10YIgLS0g0YPRgdGC0L3QsNCy0LjRgiDQvdC+0LLQvtC1XG4gICAgICogQHBhcmFtIGtleSDQutC70Y7RhyDRgdC70L7QstCw0YDRjyDQtNC70Y8g0YDQvtCx0L3QvtCy0LvQtdC90LjRj1xuICAgICAqIEBwYXJhbSBuZXdWYWx1ZUZhY3Rvcnkg0JXRgdC70Lgg0LfQvdCw0YfQtdC90LjRjyDQvdC10YIgLS0g0LHRg9C00LXRgiDRg9GB0YLQsNC90L7QstC70LXQvSDRgNC10LfRg9C70YzRgtCw0YIg0Y3RgtC+0Lkg0YTRg9C90LrRhtC40LhcbiAgICAgKiBAcGFyYW0gdXBkYXRlVmFsdWVGYWN0b3J5INCV0YHQu9C4INC30L3QsNGH0LXQvdC40LUg0LXRgdGC0YwgLS0g0LHRg9C00LXRgiDRg9GB0YLQsNC90L7QstC70LXQvSDRgNC10LfRg9C70YzRgtCw0YIg0Y3RgtC+0Lkg0YTRg9C90LrRhtC40LhcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0T3JVcGRhdGUoa2V5OiBLLCBuZXdWYWx1ZUZhY3Rvcnk6IChrZXk6IEspID0+IFYsIHVwZGF0ZVZhbHVlRmFjdG9yeTogKGtleTogSywgdXBkYXRlOiBWKSA9PiBWKTogViB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSB0aGlzLmdldEtleUhhc2goa2V5KTtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuaGFzaE1hcC5nZXQoaGFzaCk7XG4gICAgICAgIGlmIChsaXN0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3VmFsdWVGYWN0b3J5KGtleSk7XG4gICAgICAgICAgICB0aGlzLmhhc2hNYXAuc2V0KGhhc2gsIFtba2V5LCBuZXdWYWx1ZUZhY3Rvcnkoa2V5KV1dKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBsaXN0LmZpbmRJbmRleCh4ID0+IHRoaXMuYXJlS2V5RXF1YWwoeFswXSwga2V5KSk7XG4gICAgICAgICAgICBpZiAoaXRlbUluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3VmFsdWVGYWN0b3J5KGtleSk7XG4gICAgICAgICAgICAgICAgbGlzdC5wdXNoKFtrZXksIHJlc3VsdF0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gbGlzdFtpdGVtSW5kZXhdID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgICAgIGVudHJ5WzFdID0gdXBkYXRlVmFsdWVGYWN0b3J5KGtleSwgZW50cnlbMV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeVsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBrZXlzKCk6IEl0ZXJhYmxlPEs+IHtcbiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yLmZyb20odGhpcy5lbnRyaWVzKCkpLm1hcChlID0+IGVbMF0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWx1ZXMoKTogSXRlcmFibGU8Vj4ge1xuICAgICAgICByZXR1cm4gSXRlcmF0b3IuZnJvbSh0aGlzLmVudHJpZXMoKSkubWFwKGUgPT4gZVsxXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGVudHJpZXMoKTogSXRlcmFibGU8W2tleTogSywgdmFsdWU6IFZdPiB7XG4gICAgICAgIHJldHVybiBJdGVyYXRvci5mcm9tKHRoaXMuaGFzaE1hcC52YWx1ZXMoKSkuZmxhdE1hcCh4ID0+IHgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNoTWFwLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEtleUhhc2goa2V5OiBLKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGtleS5nZXRIYXNoKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFyZUtleUVxdWFsKGxlZnQ6IEssIHJpZ2h0OiBLKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBsZWZ0LmlzRXF1YWxzKHJpZ2h0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVudHJ5T3JVbmRlZmluZWQoa2V5OiBLKTogW0ssIFZdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuZ2V0S2V5SGFzaChrZXkpO1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNoTWFwLmdldChoYXNoKT8uZmluZCh4ID0+IHRoaXMuYXJlS2V5RXF1YWwoeFswXSwga2V5KSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9kZWxQYXRoTWFwPFY+IGV4dGVuZHMgTWFwMjxNb2RlbFBhdGgsIFY+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlYWNoQ3VycmVudENvbGxpc2lvbjogRWFjaEN1cnJlbnRDb2xsaXNpb24gPSBFYWNoQ3VycmVudENvbGxpc2lvbi5BcmVTYW1lKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWFjaEN1cnJlbnRDb2xsaXNpb24gPSBlYWNoQ3VycmVudENvbGxpc2lvbjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXJlS2V5RXF1YWwobGVmdDogTW9kZWxQYXRoLCByaWdodDogTW9kZWxQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBsZWZ0LmlzRXF1YWxzKHJpZ2h0LCB0aGlzLmVhY2hDdXJyZW50Q29sbGlzaW9uKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0S2V5SGFzaChrZXk6IE1vZGVsUGF0aCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBrZXkuZ2V0SGFzaCh0aGlzLmVhY2hDdXJyZW50Q29sbGlzaW9uKTtcbiAgICB9XG59XG4iXX0=