@kontur.candy/tools 2.185.0 → 2.185.2

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 (599) hide show
  1. package/candy.js +0 -0
  2. package/distr/Common/AsyncUtils.js +1 -1
  3. package/distr/Common/AsyncUtils.js.map +1 -0
  4. package/distr/Common/AutoValidationUtils.js +2 -3
  5. package/distr/Common/AutoValidationUtils.js.map +1 -0
  6. package/distr/Common/CandyApiClient/CandyApiClient.js +2 -3
  7. package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -0
  8. package/distr/Common/CandyApiClient/CandyApiClientContext.js +4 -5
  9. package/distr/Common/CandyApiClient/CandyApiClientContext.js.map +1 -0
  10. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +1 -1
  11. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js.map +1 -0
  12. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +1 -1
  13. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js.map +1 -0
  14. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -1
  15. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js.map +1 -0
  16. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +1 -1
  17. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js.map +1 -0
  18. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -1
  19. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js.map +1 -0
  20. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -1
  21. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js.map +1 -0
  22. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -1
  23. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js.map +1 -0
  24. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +2 -3
  25. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js.map +1 -0
  26. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -1
  27. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js.map +1 -0
  28. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +2 -3
  29. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js.map +1 -0
  30. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
  31. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js.map +1 -0
  32. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +4 -5
  33. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js.map +1 -0
  34. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -1
  35. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js.map +1 -0
  36. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +3 -5
  37. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js.map +1 -0
  38. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +1 -1
  39. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js.map +1 -0
  40. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +1 -1
  41. package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +1 -0
  42. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
  43. package/distr/Common/CandyApiClient/ICandyApiClient.js.map +1 -0
  44. package/distr/Common/CandyApiClient/IsBuffer.js +1 -1
  45. package/distr/Common/CandyApiClient/IsBuffer.js.map +1 -0
  46. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +1 -1
  47. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js.map +1 -0
  48. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +1 -1
  49. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js.map +1 -0
  50. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
  51. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js.map +1 -0
  52. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +1 -1
  53. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js.map +1 -0
  54. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +1 -1
  55. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js.map +1 -0
  56. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +3 -5
  57. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js.map +1 -0
  58. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +1 -1
  59. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js.map +1 -0
  60. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
  61. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js.map +1 -0
  62. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +1 -1
  63. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js.map +1 -0
  64. package/distr/Common/CandyApiClient/Types/DraftFullId.js +1 -1
  65. package/distr/Common/CandyApiClient/Types/DraftFullId.js.map +1 -0
  66. package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +2 -3
  67. package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js.map +1 -0
  68. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +3 -5
  69. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js.map +1 -0
  70. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +2 -3
  71. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js.map +1 -0
  72. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +1 -1
  73. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js.map +1 -0
  74. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +1 -1
  75. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js.map +1 -0
  76. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +2 -3
  77. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js.map +1 -0
  78. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +1 -1
  79. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js.map +1 -0
  80. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +1 -1
  81. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js.map +1 -0
  82. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +1 -1
  83. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js.map +1 -0
  84. package/distr/Common/CandyApiClient/Types/Guid.js +1 -1
  85. package/distr/Common/CandyApiClient/Types/Guid.js.map +1 -0
  86. package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +1 -1
  87. package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js.map +1 -0
  88. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +1 -1
  89. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js.map +1 -0
  90. package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +1 -1
  91. package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js.map +1 -0
  92. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +2 -3
  93. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js.map +1 -0
  94. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +1 -1
  95. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js.map +1 -0
  96. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +1 -1
  97. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js.map +1 -0
  98. package/distr/Common/CandyApiClient/Types/Print/PrintType.js +2 -3
  99. package/distr/Common/CandyApiClient/Types/Print/PrintType.js.map +1 -0
  100. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +1 -1
  101. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js.map +1 -0
  102. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +1 -1
  103. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js.map +1 -0
  104. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +1 -1
  105. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js.map +1 -0
  106. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +1 -1
  107. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js.map +1 -0
  108. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +1 -1
  109. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js.map +1 -0
  110. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +1 -1
  111. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js.map +1 -0
  112. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +1 -1
  113. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js.map +1 -0
  114. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +1 -1
  115. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js.map +1 -0
  116. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +1 -1
  117. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js.map +1 -0
  118. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +1 -1
  119. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js.map +1 -0
  120. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +1 -1
  121. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js.map +1 -0
  122. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +1 -1
  123. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js.map +1 -0
  124. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +1 -1
  125. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js.map +1 -0
  126. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +1 -1
  127. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js.map +1 -0
  128. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +1 -1
  129. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js.map +1 -0
  130. package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +1 -1
  131. package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js.map +1 -0
  132. package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +1 -1
  133. package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js.map +1 -0
  134. package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +1 -1
  135. package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js.map +1 -0
  136. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +1 -1
  137. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js.map +1 -0
  138. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +1 -1
  139. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js.map +1 -0
  140. package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +1 -1
  141. package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js.map +1 -0
  142. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +1 -1
  143. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js.map +1 -0
  144. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +2 -3
  145. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js.map +1 -0
  146. package/distr/Common/CandyApiClient/Types/TestClassification.js +1 -1
  147. package/distr/Common/CandyApiClient/Types/TestClassification.js.map +1 -0
  148. package/distr/Common/CollectionUtils.js +1 -1
  149. package/distr/Common/CollectionUtils.js.map +1 -0
  150. package/distr/Common/CommonConstants/SectionNames.js +1 -1
  151. package/distr/Common/CommonConstants/SectionNames.js.map +1 -0
  152. package/distr/Common/Comparers.js +1 -1
  153. package/distr/Common/Comparers.js.map +1 -0
  154. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +3 -3
  155. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js.map +1 -0
  156. package/distr/Common/EndPoints.js +6 -11
  157. package/distr/Common/EndPoints.js.map +1 -0
  158. package/distr/Common/Enums/ButtonSettingsTypeEnum.js +2 -3
  159. package/distr/Common/Enums/ButtonSettingsTypeEnum.js.map +1 -0
  160. package/distr/Common/Errors.js +1 -1
  161. package/distr/Common/Errors.js.map +1 -0
  162. package/distr/Common/ExtractGFVPath/ExtractGFVPath.js +1 -1
  163. package/distr/Common/ExtractGFVPath/ExtractGFVPath.js.map +1 -0
  164. package/distr/Common/FSPrinterClient/FSPrinterClient.js +2 -2
  165. package/distr/Common/FSPrinterClient/FSPrinterClient.js.map +1 -0
  166. package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +1 -1
  167. package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js.map +1 -0
  168. package/distr/Common/FSPrinterClient/IFSPrinterClient.js +6 -11
  169. package/distr/Common/FSPrinterClient/IFSPrinterClient.js.map +1 -0
  170. package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -1
  171. package/distr/Common/FormActionHandlers/ContextualActionNames.js.map +1 -0
  172. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +1 -1
  173. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js.map +1 -0
  174. package/distr/Common/FormPathUtils.js +2 -2
  175. package/distr/Common/FormPathUtils.js.map +1 -0
  176. package/distr/Common/Funcs.js +1 -1
  177. package/distr/Common/Funcs.js.map +1 -0
  178. package/distr/Common/GFV.js +1 -1
  179. package/distr/Common/GFV.js.map +1 -0
  180. package/distr/Common/Hooks/UseLocalStorage.js +3 -3
  181. package/distr/Common/Hooks/UseLocalStorage.js.map +1 -0
  182. package/distr/Common/HttpClient/AuthenticationMode.js +1 -1
  183. package/distr/Common/HttpClient/AuthenticationMode.js.map +1 -0
  184. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +2 -3
  185. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js.map +1 -0
  186. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +2 -3
  187. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js.map +1 -0
  188. package/distr/Common/HttpClient/FetchImplementation/Fetch.js +1 -1
  189. package/distr/Common/HttpClient/FetchImplementation/Fetch.js.map +1 -0
  190. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +2 -3
  191. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js.map +1 -0
  192. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +1 -1
  193. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js.map +1 -0
  194. package/distr/Common/HttpClient/HttpClient.js +2 -2
  195. package/distr/Common/HttpClient/HttpClient.js.map +1 -0
  196. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +1 -1
  197. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js.map +1 -0
  198. package/distr/Common/HttpClient/IHttpClient.js +1 -1
  199. package/distr/Common/HttpClient/IHttpClient.js.map +1 -0
  200. package/distr/Common/IndentString.js +1 -1
  201. package/distr/Common/IndentString.js.map +1 -0
  202. package/distr/Common/IntRangeUtils.js +1 -1
  203. package/distr/Common/IntRangeUtils.js.map +1 -0
  204. package/distr/Common/IterableUtils.js +1 -1
  205. package/distr/Common/IterableUtils.js.map +1 -0
  206. package/distr/Common/KCLangRuntimeUtils.js +1 -1
  207. package/distr/Common/KCLangRuntimeUtils.js.map +1 -0
  208. package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +4 -2
  209. package/distr/Common/ModelPath/AbsoluteModelFieldPath.js.map +1 -0
  210. package/distr/Common/ModelPath/BuildIterationSequence.js +1 -1
  211. package/distr/Common/ModelPath/BuildIterationSequence.js.map +1 -0
  212. package/distr/Common/ModelPath/EachCurrentCollision.js +2 -3
  213. package/distr/Common/ModelPath/EachCurrentCollision.js.map +1 -0
  214. package/distr/Common/ModelPath/IEquatable.js +1 -1
  215. package/distr/Common/ModelPath/IEquatable.js.map +1 -0
  216. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +1 -1
  217. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js.map +1 -0
  218. package/distr/Common/ModelPath/Map/Map2.js +1 -1
  219. package/distr/Common/ModelPath/Map/Map2.js.map +1 -0
  220. package/distr/Common/ModelPath/Map/ModelPathMap.js +1 -1
  221. package/distr/Common/ModelPath/Map/ModelPathMap.js.map +1 -0
  222. package/distr/Common/ModelPath/ModelPath.js +1 -1
  223. package/distr/Common/ModelPath/ModelPath.js.map +1 -0
  224. package/distr/Common/ModelPath/ModelPathBuilder.js +1 -1
  225. package/distr/Common/ModelPath/ModelPathBuilder.js.map +1 -0
  226. package/distr/Common/ModelPath/ModelPathHelper.js +1 -1
  227. package/distr/Common/ModelPath/ModelPathHelper.js.map +1 -0
  228. package/distr/Common/ModelPath/PathMatcher.js +2 -3
  229. package/distr/Common/ModelPath/PathMatcher.js.map +1 -0
  230. package/distr/Common/ModelPath/PathSplitHelper.js +1 -1
  231. package/distr/Common/ModelPath/PathSplitHelper.js.map +1 -0
  232. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +1 -1
  233. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js.map +1 -0
  234. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +1 -1
  235. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js.map +1 -0
  236. package/distr/Common/ModelPath/Set/ModelPathSet.js +1 -1
  237. package/distr/Common/ModelPath/Set/ModelPathSet.js.map +1 -0
  238. package/distr/Common/ModelPath/Set/Set2.js +1 -1
  239. package/distr/Common/ModelPath/Set/Set2.js.map +1 -0
  240. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -1
  241. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js.map +1 -0
  242. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +1 -1
  243. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js.map +1 -0
  244. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -1
  245. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js.map +1 -0
  246. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -1
  247. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js.map +1 -0
  248. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -1
  249. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js.map +1 -0
  250. package/distr/Common/NidusClient/INidusClient.js +1 -1
  251. package/distr/Common/NidusClient/INidusClient.js.map +1 -0
  252. package/distr/Common/NidusClient/NidusClientContext.js +3 -3
  253. package/distr/Common/NidusClient/NidusClientContext.js.map +1 -0
  254. package/distr/Common/NidusClient/NidusClientImpl.js +3 -3
  255. package/distr/Common/NidusClient/NidusClientImpl.js.map +1 -0
  256. package/distr/Common/PathConstants.js +4 -7
  257. package/distr/Common/PathConstants.js.map +1 -0
  258. package/distr/Common/PicklistApiClient/IPicklistApiClient.js +1 -1
  259. package/distr/Common/PicklistApiClient/IPicklistApiClient.js.map +1 -0
  260. package/distr/Common/PicklistApiClient/PicklistApiClient.js +1 -1
  261. package/distr/Common/PicklistApiClient/PicklistApiClient.js.map +1 -0
  262. package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +1 -1
  263. package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js.map +1 -0
  264. package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +1 -1
  265. package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js.map +1 -0
  266. package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +1 -1
  267. package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js.map +1 -0
  268. package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +1 -1
  269. package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js.map +1 -0
  270. package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +1 -1
  271. package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js.map +1 -0
  272. package/distr/Common/RngSchemeTypes/types.js +1 -1
  273. package/distr/Common/RngSchemeTypes/types.js.map +1 -0
  274. package/distr/Common/StringArrayKey.js +1 -1
  275. package/distr/Common/StringArrayKey.js.map +1 -0
  276. package/distr/Common/TextExtractor/TextExtractorTypes.js +1 -1
  277. package/distr/Common/TextExtractor/TextExtractorTypes.js.map +1 -0
  278. package/distr/Common/TypingUtils.js +1 -1
  279. package/distr/Common/TypingUtils.js.map +1 -0
  280. package/distr/Common/UUID.js +1 -1
  281. package/distr/Common/UUID.js.map +1 -0
  282. package/distr/Common/UseAsyncEffect.js +3 -3
  283. package/distr/Common/UseAsyncEffect.js.map +1 -0
  284. package/distr/Common/UseShowOnce.js +1 -1
  285. package/distr/Common/UseShowOnce.js.map +1 -0
  286. package/distr/Common/UseTypedSelector.js +2 -3
  287. package/distr/Common/UseTypedSelector.js.map +1 -0
  288. package/distr/Common/WellKnownDirectories.js +1 -1
  289. package/distr/Common/WellKnownDirectories.js.map +1 -0
  290. package/distr/Common/getRngSchemaFilename.js +1 -1
  291. package/distr/Common/getRngSchemaFilename.js.map +1 -0
  292. package/distr/Common/hashUtils.js +1 -1
  293. package/distr/Common/hashUtils.js.map +1 -0
  294. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +9 -4
  295. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js.map +1 -0
  296. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +6 -12
  297. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js.map +1 -0
  298. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -1
  299. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js.map +1 -0
  300. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +3 -3
  301. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js.map +1 -0
  302. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +4 -3
  303. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js.map +1 -0
  304. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -1
  305. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js.map +1 -0
  306. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +1 -1
  307. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js.map +1 -0
  308. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -1
  309. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js.map +1 -0
  310. package/distr/Tools/src/BuildTasks/FSTask.js +1 -1
  311. package/distr/Tools/src/BuildTasks/FSTask.js.map +1 -0
  312. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -3
  313. package/distr/Tools/src/BuildTasks/Form/CompileForm.js.map +1 -0
  314. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +3 -3
  315. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js.map +1 -0
  316. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -1
  317. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js.map +1 -0
  318. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +1 -1
  319. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js.map +1 -0
  320. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +3 -3
  321. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js.map +1 -0
  322. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -1
  323. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js.map +1 -0
  324. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +3 -3
  325. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js.map +1 -0
  326. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +4 -3
  327. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js.map +1 -0
  328. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +1 -1
  329. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js.map +1 -0
  330. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +4 -4
  331. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js.map +1 -0
  332. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +1 -1
  333. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js.map +1 -0
  334. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +1 -1
  335. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map +1 -0
  336. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +1 -1
  337. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js.map +1 -0
  338. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +1 -1
  339. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js.map +1 -0
  340. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +1 -1
  341. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js.map +1 -0
  342. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +5 -5
  343. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js.map +1 -0
  344. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +3 -3
  345. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js.map +1 -0
  346. package/distr/Tools/src/BuildTasks/ReadFormSource.js +1 -1
  347. package/distr/Tools/src/BuildTasks/ReadFormSource.js.map +1 -0
  348. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +2 -3
  349. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js.map +1 -0
  350. package/distr/Tools/src/BuildTasks/Version.js +3 -3
  351. package/distr/Tools/src/BuildTasks/Version.js.map +1 -0
  352. package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -1
  353. package/distr/Tools/src/BuildTasks/WriteFormMeta.js.map +1 -0
  354. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +2 -3
  355. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js.map +1 -0
  356. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +2 -3
  357. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -0
  358. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +1 -1
  359. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -0
  360. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +3 -3
  361. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js.map +1 -0
  362. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +3 -5
  363. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js.map +1 -0
  364. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +4 -5
  365. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js.map +1 -0
  366. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +5 -6
  367. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +1 -0
  368. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +4 -5
  369. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js.map +1 -0
  370. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +2 -3
  371. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js.map +1 -0
  372. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +4 -5
  373. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js.map +1 -0
  374. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +4 -5
  375. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js.map +1 -0
  376. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +2 -3
  377. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js.map +1 -0
  378. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +4 -5
  379. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js.map +1 -0
  380. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +4 -5
  381. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js.map +1 -0
  382. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +4 -4
  383. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +1 -0
  384. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +1 -1
  385. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js.map +1 -0
  386. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +1 -1
  387. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js.map +1 -0
  388. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +1 -1
  389. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js.map +1 -0
  390. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +1 -1
  391. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js.map +1 -0
  392. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +1 -1
  393. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js.map +1 -0
  394. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +1 -1
  395. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js.map +1 -0
  396. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +1 -1
  397. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js.map +1 -0
  398. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +1 -1
  399. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js.map +1 -0
  400. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +3 -3
  401. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js.map +1 -0
  402. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -1
  403. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js.map +1 -0
  404. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -1
  405. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js.map +1 -0
  406. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +1 -1
  407. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js.map +1 -0
  408. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -1
  409. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js.map +1 -0
  410. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +1 -1
  411. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js.map +1 -0
  412. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +2 -3
  413. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js.map +1 -0
  414. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +3 -5
  415. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js.map +1 -0
  416. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +1 -1
  417. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js.map +1 -0
  418. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +2 -3
  419. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js.map +1 -0
  420. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +1 -1
  421. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -0
  422. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +2 -3
  423. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js.map +1 -0
  424. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +2 -2
  425. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js.map +1 -0
  426. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +4 -5
  427. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js.map +1 -0
  428. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js +1 -1
  429. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js.map +1 -0
  430. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +2 -3
  431. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js.map +1 -0
  432. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +2 -3
  433. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js.map +1 -0
  434. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +2 -3
  435. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js.map +1 -0
  436. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +3 -3
  437. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js.map +1 -0
  438. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +2 -3
  439. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js.map +1 -0
  440. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +1 -1
  441. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js.map +1 -0
  442. package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +2 -3
  443. package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js.map +1 -0
  444. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +3 -3
  445. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js.map +1 -0
  446. package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +2 -3
  447. package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js.map +1 -0
  448. package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +1 -1
  449. package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js.map +1 -0
  450. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +3 -3
  451. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js.map +1 -0
  452. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +2 -3
  453. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js.map +1 -0
  454. package/distr/Tools/src/CandyCLI.js +1 -1
  455. package/distr/Tools/src/CandyCLI.js.map +1 -0
  456. package/distr/Tools/src/CheckNodeJsVersion.js +2 -3
  457. package/distr/Tools/src/CheckNodeJsVersion.js.map +1 -0
  458. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +1 -1
  459. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js.map +1 -0
  460. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +3 -3
  461. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js.map +1 -0
  462. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -1
  463. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js.map +1 -0
  464. package/distr/Tools/src/Commons/ErrorUntyped.js +1 -1
  465. package/distr/Tools/src/Commons/ErrorUntyped.js.map +1 -0
  466. package/distr/Tools/src/Commons/EventObject.js +1 -1
  467. package/distr/Tools/src/Commons/EventObject.js.map +1 -0
  468. package/distr/Tools/src/Commons/ExecUtils.js +1 -1
  469. package/distr/Tools/src/Commons/ExecUtils.js.map +1 -0
  470. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -1
  471. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js.map +1 -0
  472. package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -1
  473. package/distr/Tools/src/Commons/FormGlobsUtils.js.map +1 -0
  474. package/distr/Tools/src/Commons/FormLocationInfo.js +1 -1
  475. package/distr/Tools/src/Commons/FormLocationInfo.js.map +1 -0
  476. package/distr/Tools/src/Commons/FsUtils.js +5 -7
  477. package/distr/Tools/src/Commons/FsUtils.js.map +1 -0
  478. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -1
  479. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js.map +1 -0
  480. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +1 -1
  481. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js.map +1 -0
  482. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -1
  483. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js.map +1 -0
  484. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -1
  485. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js.map +1 -0
  486. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +1 -1
  487. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js.map +1 -0
  488. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -1
  489. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js.map +1 -0
  490. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -1
  491. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js.map +1 -0
  492. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +1 -1
  493. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js.map +1 -0
  494. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -1
  495. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js.map +1 -0
  496. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +2 -3
  497. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js.map +1 -0
  498. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -1
  499. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js.map +1 -0
  500. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -1
  501. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js.map +1 -0
  502. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -1
  503. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js.map +1 -0
  504. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -1
  505. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js.map +1 -0
  506. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +1 -1
  507. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js.map +1 -0
  508. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -1
  509. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js.map +1 -0
  510. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -1
  511. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js.map +1 -0
  512. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +3 -3
  513. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js.map +1 -0
  514. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +2 -3
  515. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js.map +1 -0
  516. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +6 -6
  517. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js.map +1 -0
  518. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +1 -1
  519. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js.map +1 -0
  520. package/distr/Tools/src/Commons/Locks/Lock.js +1 -1
  521. package/distr/Tools/src/Commons/Locks/Lock.js.map +1 -0
  522. package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -1
  523. package/distr/Tools/src/Commons/Locks/LockHandle.js.map +1 -0
  524. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +1 -1
  525. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js.map +1 -0
  526. package/distr/Tools/src/Commons/Logging/ELKLogger.js +2 -3
  527. package/distr/Tools/src/Commons/Logging/ELKLogger.js.map +1 -0
  528. package/distr/Tools/src/Commons/Logging/ILogger.js +1 -1
  529. package/distr/Tools/src/Commons/Logging/ILogger.js.map +1 -0
  530. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -1
  531. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js.map +1 -0
  532. package/distr/Tools/src/Commons/Logging/Logger.js +1 -1
  533. package/distr/Tools/src/Commons/Logging/Logger.js.map +1 -0
  534. package/distr/Tools/src/Commons/Logging/StaticLogger.js +1 -1
  535. package/distr/Tools/src/Commons/Logging/StaticLogger.js.map +1 -0
  536. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -1
  537. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js.map +1 -0
  538. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +3 -3
  539. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js.map +1 -0
  540. package/distr/Tools/src/Commons/PathPattern.js +1 -1
  541. package/distr/Tools/src/Commons/PathPattern.js.map +1 -0
  542. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -1
  543. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js.map +1 -0
  544. package/distr/Tools/src/Commons/TasksCore/BuildTask.js +1 -1
  545. package/distr/Tools/src/Commons/TasksCore/BuildTask.js.map +1 -0
  546. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +5 -5
  547. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js.map +1 -0
  548. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +3 -3
  549. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js.map +1 -0
  550. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +1 -1
  551. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js.map +1 -0
  552. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +1 -1
  553. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js.map +1 -0
  554. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +1 -1
  555. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js.map +1 -0
  556. package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js +1 -1
  557. package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js.map +1 -0
  558. package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -1
  559. package/distr/Tools/src/Commons/TasksCore/Observe.js.map +1 -0
  560. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +1 -1
  561. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js.map +1 -0
  562. package/distr/Tools/src/Commons/TimingUtils.js +1 -1
  563. package/distr/Tools/src/Commons/TimingUtils.js.map +1 -0
  564. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -3
  565. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js.map +1 -0
  566. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +2 -2
  567. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +1 -0
  568. package/distr/Tools/src/GenerateReadMe.js +1 -1
  569. package/distr/Tools/src/GenerateReadMe.js.map +1 -0
  570. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
  571. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +5 -3
  572. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  573. package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +5 -3
  574. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  575. package/distr/Tools/src/Options/CandyToolOptions.js +2 -3
  576. package/distr/Tools/src/Options/CandyToolOptions.js.map +1 -0
  577. package/distr/Tools/src/ReadFarmConfig.js +1 -1
  578. package/distr/Tools/src/ReadFarmConfig.js.map +1 -0
  579. package/distr/Tools/src/SelfUpdate.js +3 -3
  580. package/distr/Tools/src/SelfUpdate.js.map +1 -0
  581. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +681 -686
  582. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  583. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +581 -866
  584. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.LICENSE.txt +1 -1
  585. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  586. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +1 -1
  587. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js.map +1 -0
  588. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1 -1
  589. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js.map +1 -0
  590. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +1 -1
  591. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js.map +1 -0
  592. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +1 -1
  593. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js.map +1 -0
  594. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1 -1
  595. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js.map +1 -0
  596. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +1 -1
  597. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js.map +1 -0
  598. package/package.json +24 -24
  599. package/CHANGELOG.md +0 -1659
@@ -156,7 +156,7 @@ class HttpClient {
156
156
  return response;
157
157
  } catch (e) {
158
158
  var _this$exceptionLogger;
159
- (_this$exceptionLogger = this.exceptionLogger) === null || _this$exceptionLogger === void 0 ? void 0 : _this$exceptionLogger.call(this, e, {
159
+ (_this$exceptionLogger = this.exceptionLogger) === null || _this$exceptionLogger === void 0 || _this$exceptionLogger.call(this, e, {
160
160
  fetchUrl: fetchUrl
161
161
  });
162
162
  return (0, _TypingUtils.reject)(e);
@@ -306,4 +306,4 @@ class HttpError extends Error {
306
306
  }
307
307
  }
308
308
  exports.HttpError = HttpError;
309
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRXJyb3JzIiwicmVxdWlyZSIsIl9UeXBpbmdVdGlscyIsInRyaW1UcmFpbGluZ1NsYXNoIiwidXJsIiwic2xpY2UiLCJ0cmltTGVhZGluZ1NsYXNoIiwiSHR0cENsaWVudFJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJmZXRjaFJlc3BvbnNlIiwic3RhdHVzIiwianNvbiIsInJlc3BvbnNlRGF0YSIsImV4cG9ydHMiLCJIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIiLCJleGVjdXRlIiwiZXhlY3V0ZVJlcXVlc3QiLCJhY2NlcHRDb2RlcyIsInF1ZXJ5UGFyYW1zIiwic2lnbmFsIiwiYm9keUZhY3RvcnkiLCJjb250ZW50VHlwZSIsInRoZW4iLCJhcmdzIiwicmVzdWx0UHJvbWlzZSIsInJlc3VsdCIsImNyZWF0ZUNvbmZpZyIsIndpdGhBYm9ydFNpZ25hbCIsIndpdGhDb250ZW50VHlwZSIsIndpdGhCb2R5RnJvbUJ1ZmZlciIsImJvZHkiLCJ1bmRlZmluZWQiLCJ3aXRoSnNvbkJvZHkiLCJzZXJpYWxpemFibGVCb2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhSYXdCb2R5IiwiYWNjZXB0Q29kZSIsImNvZGUiLCJwdXNoIiwiY3JlYXRlIiwiZm4iLCJIdHRwQ2xpZW50IiwiZmV0Y2hJbXBsIiwiYmFzZVVybCIsImF1dGhlbnRpY2F0aW9uUHJvdmlkZXIiLCJkZWZhdWx0UXVlcnlQYXJhbXMiLCJleGNlcHRpb25Mb2dnZXIiLCJkZWZhdWx0UGFyYW1zIiwiZ2V0IiwibWV0aG9kIiwicG9zdCIsInB1dCIsInBhdGNoIiwiZGVsZXRlIiwiY29uZmlnIiwiZmV0Y2hVcmwiLCJyZXF1ZXN0IiwiYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJyZXNwb25zZSIsImNoZWNrU3RhdHVzIiwiZSIsIl90aGlzJGV4Y2VwdGlvbkxvZ2dlciIsImNhbGwiLCJyZWplY3QiLCJvcHRpb25zIiwiX29wdGlvbnMkaGVhZGVycyIsImhlYWRlcnMiLCJwYXRoIiwicGFyYW1zIiwicmVzdWx0UGFyYW1zIiwiaW5jbHVkZXMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiTm90U3VwcG9ydGVkRXJyb3IiLCJjcmVhdGVRdWVyeVN0cmluZyIsImlzU3VjY2Vzc1Jlc3BvbnNlU3RhdHVzIiwiaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMiLCJlcnJvclRleHQiLCJ0ZXh0Iiwic2VydmVyUmVzcG9uc2UiLCJwYXJzZSIsIl9yZWYiLCJfc2VydmVyUmVzcG9uc2UkTWVzc2EiLCJlcnJvciIsIkh0dHBFcnJvciIsIk1lc3NhZ2UiLCJtZXNzYWdlIiwiRXJyb3IiLCJwb3N0U3luYyIsImRhdGEiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsInJlc3BvbnNlVGV4dCIsIm1ha2VQYXJhbVZhbHVlU3RyaW5nIiwicGFyYW0iLCJ2YWx1ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInBhcmFtczIiLCJtYXAiLCJrZXkiLCJ0b1N0cmluZyIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW0iLCJmaWx0ZXIiLCJ4Iiwiam9pbiIsImNyZWF0ZUZldGNoSW1wbCIsImZldGNoV2l0aE9wdGlvbnMiLCJpbnB1dCIsImluaXQiLCJfaW5pdCIsIl9pbml0JGhlYWRlcnMiLCJyZXF1ZXN0SW5pdCIsImNhY2hlIiwiY3JlZGVudGlhbHMiLCJpbnRlZ3JpdHkiLCJrZWVwYWxpdmUiLCJtb2RlIiwicmVkaXJlY3QiLCJyZWZlcnJlciIsInJlZmVycmVyUG9saWN5Iiwic3RhdHVzQ29kZSIsIm5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9Db21tb24vSHR0cENsaWVudC9IdHRwQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBOb3RTdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuLi9FcnJvcnNcIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuL0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7XG4gICAgSHR0cFN0YXR1c0NvZGUsXG4gICAgSUh0dHBDbGllbnQsXG4gICAgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlcixcbiAgICBJSHR0cENsaWVudFJlc3BvbnNlLFxuICAgIElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jLFxuICAgIFF1ZXJ5UGFyYW1zT2JqZWN0LFxufSBmcm9tIFwiLi9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi9IdHRwQ2xpZW50QXV0aGVudGljYXRpb25Qcm92aWRlclwiO1xuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgtMSkgPT09IFwiL1wiID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybDtcbn1cblxuZnVuY3Rpb24gdHJpbUxlYWRpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybFswXSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMSkgOiB1cmw7XG59XG5cbnR5cGUgQm9keUZhY3RvcnkgPSAoKSA9PiBCb2R5SW5pdCB8IG51bGw7XG5cbmludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RDb25maWcge1xuICAgIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAgIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW107XG4gICAgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0O1xuICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFeGNlcHRpb25Mb2dnZXJQYXJhbXMge1xuICAgIGZldGNoVXJsPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgRXhjZXB0aW9uTG9nZ2VyID0gKGVycm9yOiB1bmtub3duLCBwYXJhbXM/OiBJRXhjZXB0aW9uTG9nZ2VyUGFyYW1zKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlc3BvbnNlIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXNwb25zZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmZXRjaFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmZXRjaFJlc3BvbnNlOiBSZXNwb25zZSkge1xuICAgICAgICB0aGlzLmZldGNoUmVzcG9uc2UgPSBmZXRjaFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RhdHVzKCk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hSZXNwb25zZS5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGpzb248VD4oKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hSZXNwb25zZS5qc29uKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhO1xuICAgIH1cbn1cblxudHlwZSBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24gPSAoY29uZmlnOiBJSHR0cENsaWVudFJlcXVlc3RDb25maWcpID0+IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlIHwgUmVzcG9uc2U+O1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRlUmVxdWVzdDogUmVxdWVzdEV4ZWN1dGlvbkZ1bmN0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW10gPSBbXTtcbiAgICBwcml2YXRlIHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc09iamVjdCA9IHt9O1xuICAgIHByaXZhdGUgc2lnbmFsOiB1bmRlZmluZWQgfCBBYm9ydFNpZ25hbDtcbiAgICBwcml2YXRlIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgcHJpdmF0ZSBjb250ZW50VHlwZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihleGVjdXRlOiBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCA9IGV4ZWN1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBYm9ydFNpZ25hbChzaWduYWw6IHVuZGVmaW5lZCB8IEFib3J0U2lnbmFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuc2lnbmFsID0gc2lnbmFsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IGZhbHNlIHwgQnVmZmVyIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChib2R5ID09PSBmYWxzZSB8fCBib2R5ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IGJvZHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSnNvbkJvZHkoc2VyaWFsaXphYmxlQm9keTogdW5rbm93biB8IHt9IHwgdW5rbm93bltdIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChzZXJpYWxpemFibGVCb2R5ICE9PSBmYWxzZSAmJiBzZXJpYWxpemFibGVCb2R5ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6YWJsZUJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICAgICAgLi4ucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmF3Qm9keShib2R5OiBCdWZmZXIgfCBzdHJpbmcgfCBmYWxzZSB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgICAgICBpZiAoYm9keSAhPT0gZmFsc2UgJiYgYm9keSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9keUZhY3RvcnkgPSAoKSA9PiBib2R5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBqc29uPFQ+KCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lmpzb248VD4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWNjZXB0Q29kZShjb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmFjY2VwdENvZGVzLnB1c2goY29kZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSB0aGVuOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZT5bXCJ0aGVuXCJdID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0KHRoaXMuY3JlYXRlQ29uZmlnKCkpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEh0dHBDbGllbnRSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlc3BvbnNlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJldHVybiByZXN1bHRQcm9taXNlLnRoZW4oLi4uYXJncyk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY3JlYXRlQ29uZmlnKCk6IElIdHRwQ2xpZW50UmVxdWVzdENvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYWw6IHRoaXMuc2lnbmFsLFxuICAgICAgICAgICAgYm9keUZhY3Rvcnk6IHRoaXMuYm9keUZhY3RvcnksXG4gICAgICAgICAgICBhY2NlcHRDb2RlczogdGhpcy5hY2NlcHRDb2RlcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgY29udGVudFR5cGU6IHRoaXMuY29udGVudFR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoZm46IFJlcXVlc3RFeGVjdXRpb25GdW5jdGlvbik6IEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyKGZuKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50IGltcGxlbWVudHMgSUh0dHBDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmV0Y2hJbXBsOiBGZXRjaDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI6IEh0dHBDbGllbnRBdXRoZW50aWNhdGlvblByb3ZpZGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNlcHRpb25Mb2dnZXI/OiBFeGNlcHRpb25Mb2dnZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZldGNoSW1wbDogRmV0Y2gsXG4gICAgICAgIGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICAgICAgYXV0aGVudGljYXRpb25Qcm92aWRlcjogSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIsXG4gICAgICAgIGRlZmF1bHRRdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0LFxuICAgICAgICBleGNlcHRpb25Mb2dnZXI/OiBFeGNlcHRpb25Mb2dnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5mZXRjaEltcGwgPSBmZXRjaEltcGw7XG4gICAgICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmwgPT0gdW5kZWZpbmVkID8gYmFzZVVybCA6IHRyaW1UcmFpbGluZ1NsYXNoKGJhc2VVcmwpO1xuICAgICAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSBkZWZhdWx0UXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlciA9IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZXhjZXB0aW9uTG9nZ2VyID0gZXhjZXB0aW9uTG9nZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiR0VUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUE9TVFwiKSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUFVUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoKHVybDogc3RyaW5nKTogSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZChcIlBBVENIXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2QoXCJERUxFVEVcIikodXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ldGhvZChtZXRob2Q6IFwiR0VUXCIgfCBcIlBPU1RcIiB8IFwiUFVUXCIgfCBcIlBBVENIXCIgfCBcIkRFTEVURVwiKTogKHVybDogc3RyaW5nKSA9PiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuICh1cmw6IHN0cmluZykgPT5cbiAgICAgICAgICAgIEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlci5jcmVhdGUoYXN5bmMgY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKHVybCwgY29uZmlnLnF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzKHsgbWV0aG9kOiBtZXRob2QgfSwgY29uZmlnLmNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gdGhpcy5hdXRoZW50aWNhdGlvblByb3ZpZGVyKHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2lnbmFsID0gY29uZmlnLnNpZ25hbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5ib2R5RmFjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtZXRob2RcIiwgXCJCb2R5IGlzIG5vdCBhbGxvd2VkIGZvciBHRVQgcmVxdWVzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5ib2R5ID0gY29uZmlnLmJvZHlGYWN0b3J5KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoSW1wbChmZXRjaFVybCwgcmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tTdGF0dXMocmVzcG9uc2UsIGNvbmZpZy5hY2NlcHRDb2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhjZXB0aW9uTG9nZ2VyPy4oZSwgeyBmZXRjaFVybDogZmV0Y2hVcmwgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZSBhcyBFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmREZWZhdWx0UmVxdWVzdEhlYWRlcnMob3B0aW9uczogUmVxdWVzdEluaXQsIGNvbnRlbnRUeXBlPzogdW5kZWZpbmVkIHwgc3RyaW5nKTogUmVxdWVzdEluaXQge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgPz8ge307XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IGNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzW1wiUHJhZ21hXCJdID0gXCJuby1jYWNoZVwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJFeHBpcmVzXCJdID0gXCIwXCI7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHBhdGg7XG4gICAgICAgIGlmICh0aGlzLmJhc2VVcmwgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLmJhc2VVcmwgKyBcIi9cIiArIHRyaW1MZWFkaW5nU2xhc2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHRQYXJhbXMgPSB7IC4uLnRoaXMuZGVmYXVsdFBhcmFtcywgLi4ucGFyYW1zIH07XG4gICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKFwiP1wiKSAmJiBwYXJhbXMgIT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHJlc3VsdFBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZEVycm9yKGBQYXNzaW5nIHNlYXJjaCBwYXJhbXMgaW4gdXJsIGFuZCB2aWEgcGFyYW1zIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5jcmVhdGVRdWVyeVN0cmluZyhyZXN1bHRQYXJhbXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlLCBhY2NlcHRDb2Rlcz86IEh0dHBTdGF0dXNDb2RlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMDtcbiAgICAgICAgY29uc3QgaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMgPSAoYWNjZXB0Q29kZXMgPz8gW10pLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIGlmICghaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgJiYgIWlzQWNjZXB0Q29kZXNJbmNsdWRlc1Jlc3BvbnNlU3RhdHVzKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICBsZXQgc2VydmVyUmVzcG9uc2U7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gSlNPTi5wYXJzZShlcnJvclRleHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlcnZlclJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gc2VydmVyUmVzcG9uc2UgJiYgdHlwZW9mIHNlcnZlclJlc3BvbnNlLmVycm9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2VydmVyUmVzcG9uc2UuZXJyb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlLk1lc3NhZ2UgPz8gc2VydmVyUmVzcG9uc2UubWVzc2FnZSA/PyBzZXJ2ZXJSZXNwb25zZS5FcnJvcixcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoZXJyb3JUZXh0LCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3RTeW5jKHVybDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0LCBkYXRhOiB7fSk6IElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICByZXF1ZXN0Lm9wZW4oXCJQT1NUXCIsIHRoaXMudXJsKHVybCwgcGFyYW1zKSwgZmFsc2UpO1xuICAgICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIik7XG4gICAgICAgIHJlcXVlc3Quc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICAgICAganNvbjogPFQ+KCkgPT4gSlNPTi5wYXJzZShyZXF1ZXN0LnJlc3BvbnNlVGV4dCkgYXMgVCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VQYXJhbVZhbHVlU3RyaW5nKHBhcmFtOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtKX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVRdWVyeVN0cmluZyhwYXJhbXM/OiBRdWVyeVBhcmFtc09iamVjdCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwYXJhbXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMyID0gcGFyYW1zO1xuICAgICAgICBsZXQgcmVzdWx0ID0gT2JqZWN0LmtleXMocGFyYW1zKVxuICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zMltrZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCBpdGVtLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4ICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4geCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAuam9pbihcIiZcIik7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA/IFwiP1wiICsgcmVzdWx0IDogXCJcIjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoIHtcbiAgICAgICAgY29uc3QgZmV0Y2hXaXRoT3B0aW9ucyA9IChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKGlucHV0LCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGluaXQgPSBpbml0ID8/IHt9O1xuICAgICAgICAgICAgICAgIGluaXQuaGVhZGVycyA9IGluaXQuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJQcmFnbWFcIl0gPSBcIm5vLWNhY2hlXCI7XG4gICAgICAgICAgICAgICAgaW5pdC5oZWFkZXJzW1wiRXhwaXJlc1wiXSA9IFwiMFwiO1xuICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoaW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCBpbml0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hVcmwgPSB0aGlzLnVybChpbnB1dC51cmwsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVlc3RJbml0OiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FjaGUtQ29udHJvbFwiXTogXCJuby1jYWNoZSwgbm8tc3RvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByYWdtYVwiXTogXCJuby1jYWNoZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiRXhwaXJlc1wiXTogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzaWduYWw6IGlucHV0LnNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGlucHV0LmNhY2hlLFxuICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogaW5wdXQuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVncml0eTogaW5wdXQuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICBrZWVwYWxpdmU6IGlucHV0LmtlZXBhbGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBpbnB1dC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IGlucHV0Lm1vZGUsXG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBpbnB1dC5yZWRpcmVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXI6IGlucHV0LnJlZmVycmVyLFxuICAgICAgICAgICAgICAgICAgICByZWZlcnJlclBvbGljeTogaW5wdXQucmVmZXJyZXJQb2xpY3ksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SW5pdCA9IHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlcihyZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCByZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmZXRjaFdpdGhPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkh0dHBFcnJvclwiO1xuICAgICAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3VwZXIubWVzc2FnZSArIGAuIFN0YXR1c0NvZGU6ICR7dGhpcy5zdGF0dXNDb2RlfWA7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFhQSxTQUFTRSxpQkFBaUJBLENBQUNDLEdBQVcsRUFBVTtFQUM1QyxPQUFPQSxHQUFHLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBR0QsR0FBRyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUdELEdBQUc7QUFDekQ7QUFFQSxTQUFTRSxnQkFBZ0JBLENBQUNGLEdBQVcsRUFBVTtFQUMzQyxPQUFPQSxHQUFHLENBQUMsQ0FBQyxDQUFD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
309
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRXJyb3JzIiwicmVxdWlyZSIsIl9UeXBpbmdVdGlscyIsInRyaW1UcmFpbGluZ1NsYXNoIiwidXJsIiwic2xpY2UiLCJ0cmltTGVhZGluZ1NsYXNoIiwiSHR0cENsaWVudFJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJmZXRjaFJlc3BvbnNlIiwic3RhdHVzIiwianNvbiIsInJlc3BvbnNlRGF0YSIsImV4cG9ydHMiLCJIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIiLCJleGVjdXRlIiwiZXhlY3V0ZVJlcXVlc3QiLCJhY2NlcHRDb2RlcyIsInF1ZXJ5UGFyYW1zIiwic2lnbmFsIiwiYm9keUZhY3RvcnkiLCJjb250ZW50VHlwZSIsInRoZW4iLCJhcmdzIiwicmVzdWx0UHJvbWlzZSIsInJlc3VsdCIsImNyZWF0ZUNvbmZpZyIsIndpdGhBYm9ydFNpZ25hbCIsIndpdGhDb250ZW50VHlwZSIsIndpdGhCb2R5RnJvbUJ1ZmZlciIsImJvZHkiLCJ1bmRlZmluZWQiLCJ3aXRoSnNvbkJvZHkiLCJzZXJpYWxpemFibGVCb2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhSYXdCb2R5IiwiYWNjZXB0Q29kZSIsImNvZGUiLCJwdXNoIiwiY3JlYXRlIiwiZm4iLCJIdHRwQ2xpZW50IiwiZmV0Y2hJbXBsIiwiYmFzZVVybCIsImF1dGhlbnRpY2F0aW9uUHJvdmlkZXIiLCJkZWZhdWx0UXVlcnlQYXJhbXMiLCJleGNlcHRpb25Mb2dnZXIiLCJkZWZhdWx0UGFyYW1zIiwiZ2V0IiwibWV0aG9kIiwicG9zdCIsInB1dCIsInBhdGNoIiwiZGVsZXRlIiwiY29uZmlnIiwiZmV0Y2hVcmwiLCJyZXF1ZXN0IiwiYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJyZXNwb25zZSIsImNoZWNrU3RhdHVzIiwiZSIsIl90aGlzJGV4Y2VwdGlvbkxvZ2dlciIsImNhbGwiLCJyZWplY3QiLCJvcHRpb25zIiwiX29wdGlvbnMkaGVhZGVycyIsImhlYWRlcnMiLCJwYXRoIiwicGFyYW1zIiwicmVzdWx0UGFyYW1zIiwiaW5jbHVkZXMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiTm90U3VwcG9ydGVkRXJyb3IiLCJjcmVhdGVRdWVyeVN0cmluZyIsImlzU3VjY2Vzc1Jlc3BvbnNlU3RhdHVzIiwiaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMiLCJlcnJvclRleHQiLCJ0ZXh0Iiwic2VydmVyUmVzcG9uc2UiLCJwYXJzZSIsIl9yZWYiLCJfc2VydmVyUmVzcG9uc2UkTWVzc2EiLCJlcnJvciIsIkh0dHBFcnJvciIsIk1lc3NhZ2UiLCJtZXNzYWdlIiwiRXJyb3IiLCJwb3N0U3luYyIsImRhdGEiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsInJlc3BvbnNlVGV4dCIsIm1ha2VQYXJhbVZhbHVlU3RyaW5nIiwicGFyYW0iLCJ2YWx1ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInBhcmFtczIiLCJtYXAiLCJrZXkiLCJ0b1N0cmluZyIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW0iLCJmaWx0ZXIiLCJ4Iiwiam9pbiIsImNyZWF0ZUZldGNoSW1wbCIsImZldGNoV2l0aE9wdGlvbnMiLCJpbnB1dCIsImluaXQiLCJfaW5pdCIsIl9pbml0JGhlYWRlcnMiLCJyZXF1ZXN0SW5pdCIsImNhY2hlIiwiY3JlZGVudGlhbHMiLCJpbnRlZ3JpdHkiLCJrZWVwYWxpdmUiLCJtb2RlIiwicmVkaXJlY3QiLCJyZWZlcnJlciIsInJlZmVycmVyUG9saWN5Iiwic3RhdHVzQ29kZSIsIm5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9Db21tb24vSHR0cENsaWVudC9IdHRwQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBOb3RTdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuLi9FcnJvcnNcIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuL0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7XG4gICAgSHR0cFN0YXR1c0NvZGUsXG4gICAgSUh0dHBDbGllbnQsXG4gICAgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlcixcbiAgICBJSHR0cENsaWVudFJlc3BvbnNlLFxuICAgIElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jLFxuICAgIFF1ZXJ5UGFyYW1zT2JqZWN0LFxufSBmcm9tIFwiLi9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi9IdHRwQ2xpZW50QXV0aGVudGljYXRpb25Qcm92aWRlclwiO1xuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgtMSkgPT09IFwiL1wiID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybDtcbn1cblxuZnVuY3Rpb24gdHJpbUxlYWRpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybFswXSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMSkgOiB1cmw7XG59XG5cbnR5cGUgQm9keUZhY3RvcnkgPSAoKSA9PiBCb2R5SW5pdCB8IG51bGw7XG5cbmludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RDb25maWcge1xuICAgIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAgIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW107XG4gICAgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0O1xuICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFeGNlcHRpb25Mb2dnZXJQYXJhbXMge1xuICAgIGZldGNoVXJsPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgRXhjZXB0aW9uTG9nZ2VyID0gKGVycm9yOiB1bmtub3duLCBwYXJhbXM/OiBJRXhjZXB0aW9uTG9nZ2VyUGFyYW1zKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlc3BvbnNlIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXNwb25zZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmZXRjaFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmZXRjaFJlc3BvbnNlOiBSZXNwb25zZSkge1xuICAgICAgICB0aGlzLmZldGNoUmVzcG9uc2UgPSBmZXRjaFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RhdHVzKCk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hSZXNwb25zZS5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGpzb248VD4oKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hSZXNwb25zZS5qc29uKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhO1xuICAgIH1cbn1cblxudHlwZSBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24gPSAoY29uZmlnOiBJSHR0cENsaWVudFJlcXVlc3RDb25maWcpID0+IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlIHwgUmVzcG9uc2U+O1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRlUmVxdWVzdDogUmVxdWVzdEV4ZWN1dGlvbkZ1bmN0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW10gPSBbXTtcbiAgICBwcml2YXRlIHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc09iamVjdCA9IHt9O1xuICAgIHByaXZhdGUgc2lnbmFsOiB1bmRlZmluZWQgfCBBYm9ydFNpZ25hbDtcbiAgICBwcml2YXRlIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgcHJpdmF0ZSBjb250ZW50VHlwZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihleGVjdXRlOiBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCA9IGV4ZWN1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBYm9ydFNpZ25hbChzaWduYWw6IHVuZGVmaW5lZCB8IEFib3J0U2lnbmFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuc2lnbmFsID0gc2lnbmFsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IGZhbHNlIHwgQnVmZmVyIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChib2R5ID09PSBmYWxzZSB8fCBib2R5ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IGJvZHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSnNvbkJvZHkoc2VyaWFsaXphYmxlQm9keTogdW5rbm93biB8IHt9IHwgdW5rbm93bltdIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChzZXJpYWxpemFibGVCb2R5ICE9PSBmYWxzZSAmJiBzZXJpYWxpemFibGVCb2R5ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6YWJsZUJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICAgICAgLi4ucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmF3Qm9keShib2R5OiBCdWZmZXIgfCBzdHJpbmcgfCBmYWxzZSB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgICAgICBpZiAoYm9keSAhPT0gZmFsc2UgJiYgYm9keSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9keUZhY3RvcnkgPSAoKSA9PiBib2R5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBqc29uPFQ+KCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lmpzb248VD4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWNjZXB0Q29kZShjb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmFjY2VwdENvZGVzLnB1c2goY29kZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSB0aGVuOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZT5bXCJ0aGVuXCJdID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0KHRoaXMuY3JlYXRlQ29uZmlnKCkpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEh0dHBDbGllbnRSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlc3BvbnNlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJldHVybiByZXN1bHRQcm9taXNlLnRoZW4oLi4uYXJncyk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY3JlYXRlQ29uZmlnKCk6IElIdHRwQ2xpZW50UmVxdWVzdENvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYWw6IHRoaXMuc2lnbmFsLFxuICAgICAgICAgICAgYm9keUZhY3Rvcnk6IHRoaXMuYm9keUZhY3RvcnksXG4gICAgICAgICAgICBhY2NlcHRDb2RlczogdGhpcy5hY2NlcHRDb2RlcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgY29udGVudFR5cGU6IHRoaXMuY29udGVudFR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoZm46IFJlcXVlc3RFeGVjdXRpb25GdW5jdGlvbik6IEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyKGZuKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50IGltcGxlbWVudHMgSUh0dHBDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmV0Y2hJbXBsOiBGZXRjaDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI6IEh0dHBDbGllbnRBdXRoZW50aWNhdGlvblByb3ZpZGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNlcHRpb25Mb2dnZXI/OiBFeGNlcHRpb25Mb2dnZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZldGNoSW1wbDogRmV0Y2gsXG4gICAgICAgIGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICAgICAgYXV0aGVudGljYXRpb25Qcm92aWRlcjogSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIsXG4gICAgICAgIGRlZmF1bHRRdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0LFxuICAgICAgICBleGNlcHRpb25Mb2dnZXI/OiBFeGNlcHRpb25Mb2dnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5mZXRjaEltcGwgPSBmZXRjaEltcGw7XG4gICAgICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmwgPT0gdW5kZWZpbmVkID8gYmFzZVVybCA6IHRyaW1UcmFpbGluZ1NsYXNoKGJhc2VVcmwpO1xuICAgICAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSBkZWZhdWx0UXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlciA9IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZXhjZXB0aW9uTG9nZ2VyID0gZXhjZXB0aW9uTG9nZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiR0VUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUE9TVFwiKSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUFVUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoKHVybDogc3RyaW5nKTogSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZChcIlBBVENIXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2QoXCJERUxFVEVcIikodXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ldGhvZChtZXRob2Q6IFwiR0VUXCIgfCBcIlBPU1RcIiB8IFwiUFVUXCIgfCBcIlBBVENIXCIgfCBcIkRFTEVURVwiKTogKHVybDogc3RyaW5nKSA9PiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuICh1cmw6IHN0cmluZykgPT5cbiAgICAgICAgICAgIEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlci5jcmVhdGUoYXN5bmMgY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKHVybCwgY29uZmlnLnF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzKHsgbWV0aG9kOiBtZXRob2QgfSwgY29uZmlnLmNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gdGhpcy5hdXRoZW50aWNhdGlvblByb3ZpZGVyKHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2lnbmFsID0gY29uZmlnLnNpZ25hbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5ib2R5RmFjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtZXRob2RcIiwgXCJCb2R5IGlzIG5vdCBhbGxvd2VkIGZvciBHRVQgcmVxdWVzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5ib2R5ID0gY29uZmlnLmJvZHlGYWN0b3J5KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoSW1wbChmZXRjaFVybCwgcmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tTdGF0dXMocmVzcG9uc2UsIGNvbmZpZy5hY2NlcHRDb2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhjZXB0aW9uTG9nZ2VyPy4oZSwgeyBmZXRjaFVybDogZmV0Y2hVcmwgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZSBhcyBFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmREZWZhdWx0UmVxdWVzdEhlYWRlcnMob3B0aW9uczogUmVxdWVzdEluaXQsIGNvbnRlbnRUeXBlPzogdW5kZWZpbmVkIHwgc3RyaW5nKTogUmVxdWVzdEluaXQge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgPz8ge307XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IGNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzW1wiUHJhZ21hXCJdID0gXCJuby1jYWNoZVwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJFeHBpcmVzXCJdID0gXCIwXCI7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHBhdGg7XG4gICAgICAgIGlmICh0aGlzLmJhc2VVcmwgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLmJhc2VVcmwgKyBcIi9cIiArIHRyaW1MZWFkaW5nU2xhc2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHRQYXJhbXMgPSB7IC4uLnRoaXMuZGVmYXVsdFBhcmFtcywgLi4ucGFyYW1zIH07XG4gICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKFwiP1wiKSAmJiBwYXJhbXMgIT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHJlc3VsdFBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZEVycm9yKGBQYXNzaW5nIHNlYXJjaCBwYXJhbXMgaW4gdXJsIGFuZCB2aWEgcGFyYW1zIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5jcmVhdGVRdWVyeVN0cmluZyhyZXN1bHRQYXJhbXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlLCBhY2NlcHRDb2Rlcz86IEh0dHBTdGF0dXNDb2RlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMDtcbiAgICAgICAgY29uc3QgaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMgPSAoYWNjZXB0Q29kZXMgPz8gW10pLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIGlmICghaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgJiYgIWlzQWNjZXB0Q29kZXNJbmNsdWRlc1Jlc3BvbnNlU3RhdHVzKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICBsZXQgc2VydmVyUmVzcG9uc2U7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gSlNPTi5wYXJzZShlcnJvclRleHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlcnZlclJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gc2VydmVyUmVzcG9uc2UgJiYgdHlwZW9mIHNlcnZlclJlc3BvbnNlLmVycm9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2VydmVyUmVzcG9uc2UuZXJyb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlLk1lc3NhZ2UgPz8gc2VydmVyUmVzcG9uc2UubWVzc2FnZSA/PyBzZXJ2ZXJSZXNwb25zZS5FcnJvcixcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoZXJyb3JUZXh0LCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3RTeW5jKHVybDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0LCBkYXRhOiB7fSk6IElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICByZXF1ZXN0Lm9wZW4oXCJQT1NUXCIsIHRoaXMudXJsKHVybCwgcGFyYW1zKSwgZmFsc2UpO1xuICAgICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIik7XG4gICAgICAgIHJlcXVlc3Quc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICAgICAganNvbjogPFQ+KCkgPT4gSlNPTi5wYXJzZShyZXF1ZXN0LnJlc3BvbnNlVGV4dCkgYXMgVCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VQYXJhbVZhbHVlU3RyaW5nKHBhcmFtOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtKX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVRdWVyeVN0cmluZyhwYXJhbXM/OiBRdWVyeVBhcmFtc09iamVjdCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwYXJhbXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMyID0gcGFyYW1zO1xuICAgICAgICBsZXQgcmVzdWx0ID0gT2JqZWN0LmtleXMocGFyYW1zKVxuICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zMltrZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCBpdGVtLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4ICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4geCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAuam9pbihcIiZcIik7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA/IFwiP1wiICsgcmVzdWx0IDogXCJcIjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoIHtcbiAgICAgICAgY29uc3QgZmV0Y2hXaXRoT3B0aW9ucyA9IChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKGlucHV0LCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGluaXQgPSBpbml0ID8/IHt9O1xuICAgICAgICAgICAgICAgIGluaXQuaGVhZGVycyA9IGluaXQuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJQcmFnbWFcIl0gPSBcIm5vLWNhY2hlXCI7XG4gICAgICAgICAgICAgICAgaW5pdC5oZWFkZXJzW1wiRXhwaXJlc1wiXSA9IFwiMFwiO1xuICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoaW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCBpbml0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hVcmwgPSB0aGlzLnVybChpbnB1dC51cmwsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVlc3RJbml0OiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FjaGUtQ29udHJvbFwiXTogXCJuby1jYWNoZSwgbm8tc3RvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByYWdtYVwiXTogXCJuby1jYWNoZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiRXhwaXJlc1wiXTogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzaWduYWw6IGlucHV0LnNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGlucHV0LmNhY2hlLFxuICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogaW5wdXQuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVncml0eTogaW5wdXQuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICBrZWVwYWxpdmU6IGlucHV0LmtlZXBhbGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBpbnB1dC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IGlucHV0Lm1vZGUsXG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBpbnB1dC5yZWRpcmVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXI6IGlucHV0LnJlZmVycmVyLFxuICAgICAgICAgICAgICAgICAgICByZWZlcnJlclBvbGljeTogaW5wdXQucmVmZXJyZXJQb2xpY3ksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SW5pdCA9IHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlcihyZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCByZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmZXRjaFdpdGhPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkh0dHBFcnJvclwiO1xuICAgICAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3VwZXIubWVzc2FnZSArIGAuIFN0YXR1c0NvZGU6ICR7dGhpcy5zdGF0dXNDb2RlfWA7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFhQSxTQUFTRSxpQkFBaUJBLENBQUNDLEdBQVcsRUFBVTtFQUM1QyxPQUFPQSxHQUFHLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBR0QsR0FBRyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUdELEdBQUc7QUFDekQ7QUFFQSxTQUFTRSxnQkFBZ0JBLENBQUNGLEdBQVcsRUFBVTtFQUMzQyxPQUFPQSxHQUFHLENBQUMsQ0FBQyxDQUFD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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpClient.js","names":["_Errors","require","_TypingUtils","trimTrailingSlash","url","slice","trimLeadingSlash","HttpClientResponse","constructor","fetchResponse","status","json","responseData","exports","HttpClientRequestWrapper","execute","executeRequest","acceptCodes","queryParams","signal","bodyFactory","contentType","then","args","resultPromise","result","createConfig","withAbortSignal","withContentType","withBodyFromBuffer","body","undefined","withJsonBody","serializableBody","JSON","stringify","withQueryParams","withRawBody","acceptCode","code","push","create","fn","HttpClient","fetchImpl","baseUrl","authenticationProvider","defaultQueryParams","exceptionLogger","defaultParams","get","method","post","put","patch","delete","config","fetchUrl","request","appendDefaultRequestHeaders","InvalidArgumentError","response","checkStatus","e","_this$exceptionLogger","call","reject","options","_options$headers","headers","path","params","resultParams","includes","Object","keys","length","NotSupportedError","createQueryString","isSuccessResponseStatus","isAcceptCodesIncludesResponseStatus","errorText","text","serverResponse","parse","_ref","_serverResponse$Messa","error","HttpError","Message","message","Error","postSync","data","XMLHttpRequest","open","withCredentials","setRequestHeader","send","responseText","makeParamValueString","param","value","encodeURIComponent","params2","map","key","toString","Array","isArray","item","filter","x","join","createFetchImpl","fetchWithOptions","input","init","_init","_init$headers","requestInit","cache","credentials","integrity","keepalive","mode","redirect","referrer","referrerPolicy","statusCode","name"],"sources":["../../../../Common/HttpClient/HttpClient.ts"],"sourcesContent":["import { InvalidArgumentError, NotSupportedError } from \"../Errors\";\nimport { reject } from \"../TypingUtils\";\n\nimport { Fetch } from \"./FetchImplementation/Fetch\";\nimport {\n HttpStatusCode,\n IHttpClient,\n IHttpClientRequestWrapper,\n IHttpClientResponse,\n IHttpClientResponseSync,\n QueryParamsObject,\n} from \"./IHttpClient\";\nimport { HttpClientAuthenticationProvider } from \"./HttpClientAuthenticationProvider\";\n\nfunction trimTrailingSlash(url: string): string {\n return url.slice(-1) === \"/\" ? url.slice(0, -1) : url;\n}\n\nfunction trimLeadingSlash(url: string): string {\n return url[0] === \"/\" ? url.slice(1) : url;\n}\n\ntype BodyFactory = () => BodyInit | null;\n\ninterface IHttpClientRequestConfig {\n signal?: AbortSignal;\n bodyFactory?: BodyFactory;\n acceptCodes: HttpStatusCode[];\n queryParams: QueryParamsObject;\n contentType?: string;\n}\n\nexport interface IExceptionLoggerParams {\n fetchUrl?: string;\n}\nexport type ExceptionLogger = (error: unknown, params?: IExceptionLoggerParams) => void;\n\nexport class HttpClientResponse implements IHttpClientResponse {\n private readonly fetchResponse: Response;\n\n public constructor(fetchResponse: Response) {\n this.fetchResponse = fetchResponse;\n }\n\n public get status(): HttpStatusCode {\n return this.fetchResponse.status;\n }\n\n public async json<T>(): Promise<T> {\n const responseData = await this.fetchResponse.json();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return responseData;\n }\n}\n\ntype RequestExecutionFunction = (config: IHttpClientRequestConfig) => Promise<HttpClientResponse | Response>;\n\nexport class HttpClientRequestWrapper implements IHttpClientRequestWrapper {\n private readonly executeRequest: RequestExecutionFunction;\n private readonly acceptCodes: HttpStatusCode[] = [];\n private queryParams: QueryParamsObject = {};\n private signal: undefined | AbortSignal;\n private bodyFactory?: BodyFactory;\n private contentType?: string;\n\n public constructor(execute: RequestExecutionFunction) {\n this.executeRequest = execute;\n }\n\n public withAbortSignal(signal: undefined | AbortSignal): this {\n this.signal = signal;\n return this;\n }\n\n public withContentType(contentType: string): this {\n this.contentType = contentType;\n return this;\n }\n\n public withBodyFromBuffer(body: false | Buffer | undefined): this {\n if (body === false || body == undefined) {\n return this;\n }\n this.bodyFactory = () => body;\n return this;\n }\n\n public withJsonBody(serializableBody: unknown | {} | unknown[] | undefined): this {\n if (serializableBody !== false && serializableBody != undefined) {\n this.bodyFactory = () => JSON.stringify(serializableBody);\n }\n return this;\n }\n\n public withQueryParams(queryParams: QueryParamsObject | false | undefined): this {\n if (queryParams) {\n this.queryParams = {\n ...this.queryParams,\n ...queryParams,\n };\n }\n return this;\n }\n\n public withRawBody(body: Buffer | string | false | undefined): this {\n if (body !== false && body != undefined) {\n this.bodyFactory = () => body;\n }\n return this;\n }\n\n public async json<T>(): Promise<T> {\n const result = await this;\n return result.json<T>();\n }\n\n public acceptCode(code: HttpStatusCode): this {\n this.acceptCodes.push(code);\n return this;\n }\n\n public readonly then: Promise<HttpClientResponse>[\"then\"] = (...args) => {\n const resultPromise = (async () => {\n const result = await this.executeRequest(this.createConfig());\n if (result instanceof HttpClientResponse) {\n return result;\n } else {\n return new HttpClientResponse(result);\n }\n })();\n return resultPromise.then(...args);\n };\n\n private createConfig(): IHttpClientRequestConfig {\n return {\n signal: this.signal,\n bodyFactory: this.bodyFactory,\n acceptCodes: this.acceptCodes,\n queryParams: this.queryParams,\n contentType: this.contentType,\n };\n }\n\n public static create(fn: RequestExecutionFunction): HttpClientRequestWrapper {\n return new HttpClientRequestWrapper(fn);\n }\n}\n\nexport class HttpClient implements IHttpClient {\n private readonly fetchImpl: Fetch;\n private readonly baseUrl: undefined | string;\n private readonly authenticationProvider: HttpClientAuthenticationProvider;\n private readonly defaultParams?: QueryParamsObject = {};\n private readonly exceptionLogger?: ExceptionLogger;\n\n public constructor(\n fetchImpl: Fetch,\n baseUrl: undefined | string,\n authenticationProvider: HttpClientAuthenticationProvider,\n defaultQueryParams?: QueryParamsObject,\n exceptionLogger?: ExceptionLogger\n ) {\n this.fetchImpl = fetchImpl;\n this.baseUrl = baseUrl == undefined ? baseUrl : trimTrailingSlash(baseUrl);\n this.defaultParams = defaultQueryParams;\n this.authenticationProvider = authenticationProvider;\n this.exceptionLogger = exceptionLogger;\n }\n\n public get(url: string): IHttpClientRequestWrapper {\n return this.method(\"GET\")(url);\n }\n\n public post(url: string): IHttpClientRequestWrapper {\n return this.method(\"POST\")(url);\n }\n\n public put(url: string): IHttpClientRequestWrapper {\n return this.method(\"PUT\")(url);\n }\n\n public patch(url: string): IHttpClientRequestWrapper {\n return this.method(\"PATCH\")(url);\n }\n\n public delete(url: string): IHttpClientRequestWrapper {\n return this.method(\"DELETE\")(url);\n }\n\n private method(method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\"): (url: string) => IHttpClientRequestWrapper {\n return (url: string) =>\n HttpClientRequestWrapper.create(async config => {\n const fetchUrl = this.url(url, config.queryParams);\n let request = this.appendDefaultRequestHeaders({ method: method }, config.contentType);\n request = this.authenticationProvider(request);\n if (config.signal) {\n request.signal = config.signal;\n }\n if (config.bodyFactory) {\n if (method === \"GET\") {\n throw new InvalidArgumentError(\"method\", \"Body is not allowed for GET requests\");\n }\n request.body = config.bodyFactory();\n }\n\n try {\n const response = await this.fetchImpl(fetchUrl, request);\n await this.checkStatus(response, config.acceptCodes);\n return response;\n } catch (e) {\n this.exceptionLogger?.(e, { fetchUrl: fetchUrl });\n return reject(e as Error);\n }\n });\n }\n\n private appendDefaultRequestHeaders(options: RequestInit, contentType?: undefined | string): RequestInit {\n options.headers = options.headers ?? {};\n options.headers[\"Content-Type\"] = contentType ?? \"application/json\";\n options.headers[\"Cache-Control\"] = \"no-cache, no-store\";\n options.headers[\"Pragma\"] = \"no-cache\";\n options.headers[\"Expires\"] = \"0\";\n return options;\n }\n\n public url(path: string, params: undefined | QueryParamsObject): string {\n let result = path;\n if (this.baseUrl != undefined) {\n result = this.baseUrl + \"/\" + trimLeadingSlash(result);\n }\n const resultParams = { ...this.defaultParams, ...params };\n if (path.includes(\"?\") && params != undefined && Object.keys(resultParams).length > 0) {\n throw new NotSupportedError(`Passing search params in url and via params object is not supported`);\n }\n result = result + this.createQueryString(resultParams);\n return result;\n }\n\n private async checkStatus(response: Response, acceptCodes?: HttpStatusCode[]): Promise<void> {\n const isSuccessResponseStatus = response.status >= 200 && response.status < 300;\n const isAcceptCodesIncludesResponseStatus = (acceptCodes ?? []).includes(response.status);\n if (!isSuccessResponseStatus && !isAcceptCodesIncludesResponseStatus) {\n const errorText = await response.text();\n let serverResponse;\n try {\n serverResponse = JSON.parse(errorText);\n } catch (e) {\n serverResponse = undefined;\n }\n if (serverResponse != undefined) {\n if (\"error\" in serverResponse && typeof serverResponse.error === \"object\") {\n throw new HttpError(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n JSON.stringify(serverResponse.error),\n response.status\n );\n }\n throw new HttpError(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n serverResponse.Message ?? serverResponse.message ?? serverResponse.Error,\n response.status\n );\n }\n throw new HttpError(errorText, response.status);\n }\n }\n\n public postSync(url: string, params: undefined | QueryParamsObject, data: {}): IHttpClientResponseSync {\n const request = new XMLHttpRequest();\n request.open(\"POST\", this.url(url, params), false);\n request.withCredentials = true;\n request.setRequestHeader(\"Content-Type\", \"application/json; charset=UTF-8\");\n request.send(JSON.stringify(data));\n return {\n status: request.status,\n json: <T>() => JSON.parse(request.responseText) as T,\n };\n }\n\n private makeParamValueString(param: string, value: string): string {\n return `${encodeURIComponent(param)}=${encodeURIComponent(value)}`;\n }\n\n private createQueryString(params?: QueryParamsObject): string {\n if (params == undefined) {\n return \"\";\n }\n const params2 = params;\n let result = Object.keys(params)\n .map(key => {\n const value = params2[key];\n if (typeof value === \"string\") {\n return this.makeParamValueString(key, value);\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return this.makeParamValueString(key, value.toString());\n }\n if (Array.isArray(value)) {\n return value\n .map(item => {\n if (typeof item === \"string\") {\n return this.makeParamValueString(key, item);\n }\n if (typeof item === \"number\") {\n return this.makeParamValueString(key, item.toString());\n }\n return undefined;\n })\n .filter(x => x != undefined)\n .join(\"&\");\n }\n return undefined;\n })\n .filter(x => x != undefined)\n .join(\"&\");\n result = result ? \"?\" + result : \"\";\n return result;\n }\n\n public createFetchImpl(): Fetch {\n const fetchWithOptions = (input: RequestInfo, init?: RequestInit): Promise<Response> => {\n if (typeof input === \"string\") {\n const fetchUrl = this.url(input, undefined);\n init = init ?? {};\n init.headers = init.headers ?? {};\n init.headers[\"Cache-Control\"] = \"no-cache, no-store\";\n init.headers[\"Pragma\"] = \"no-cache\";\n init.headers[\"Expires\"] = \"0\";\n init = this.authenticationProvider(init);\n return this.fetchImpl(fetchUrl, init);\n } else {\n const fetchUrl = this.url(input.url, undefined);\n let requestInit: RequestInit = {\n headers: {\n [\"Cache-Control\"]: \"no-cache, no-store\",\n [\"Pragma\"]: \"no-cache\",\n [\"Expires\"]: \"0\",\n ...input.headers,\n },\n signal: input.signal,\n cache: input.cache,\n credentials: input.credentials,\n integrity: input.integrity,\n keepalive: input.keepalive,\n method: input.method,\n mode: input.mode,\n redirect: input.redirect,\n referrer: input.referrer,\n referrerPolicy: input.referrerPolicy,\n };\n requestInit = this.authenticationProvider(requestInit);\n return this.fetchImpl(fetchUrl, requestInit);\n }\n };\n return fetchWithOptions;\n }\n}\n\nexport class HttpError extends Error {\n public readonly statusCode: number;\n\n public constructor(message: string, statusCode: number) {\n super(message);\n this.name = \"HttpError\";\n this.statusCode = statusCode;\n }\n\n public override get message(): string {\n return super.message + `. StatusCode: ${this.statusCode}`;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgPSAocmVxdWVzdDogUmVxdWVzdEluaXQpID0+IFJlcXVlc3RJbml0O1xuIl0sIm1hcHBpbmdzIjoiIn0=
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgPSAocmVxdWVzdDogUmVxdWVzdEluaXQpID0+IFJlcXVlc3RJbml0O1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpClientAuthenticationProvider.js","names":[],"sources":["../../../../Common/HttpClient/HttpClientAuthenticationProvider.ts"],"sourcesContent":["export type HttpClientAuthenticationProvider = (request: RequestInit) => RequestInit;\n"],"mappings":"","ignoreList":[]}
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvSUh0dHBDbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmV0Y2ggfSBmcm9tIFwiLi9GZXRjaEltcGxlbWVudGF0aW9uL0ZldGNoXCI7XG5cbmV4cG9ydCB0eXBlIEh0dHBTdGF0dXNDb2RlID0gbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50UmVzcG9uc2Uge1xuICAgIGpzb248VD4oKTogUHJvbWlzZTxUPjtcbiAgICBzdGF0dXM6IEh0dHBTdGF0dXNDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jIHtcbiAgICBqc29uPFQ+KCk6IFQ7XG4gICAgc3RhdHVzOiBIdHRwU3RhdHVzQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGV4dGVuZHMgUHJvbWlzZUxpa2U8SUh0dHBDbGllbnRSZXNwb25zZT4ge1xuICAgIGpzb248VD4oKTogUHJvbWlzZTxUPjtcbiAgICB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzO1xuICAgIHdpdGhKc29uQm9keShzZXJpYWxpemFibGVCb2R5OiB1bmtub3duIHwgdW5kZWZpbmVkIHwge30gfCB1bmtub3duW10pOiB0aGlzO1xuICAgIHdpdGhSYXdCb2R5KGJvZHk6IEJ1ZmZlciB8IHN0cmluZyB8IGZhbHNlIHwgdW5kZWZpbmVkKTogdGhpcztcbiAgICB3aXRoQ29udGVudFR5cGUoY29udGVudFR5cGU6IHN0cmluZyk6IHRoaXM7XG4gICAgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IHVuZGVmaW5lZCB8IGZhbHNlIHwgQnVmZmVyKTogdGhpcztcbiAgICB3aXRoQWJvcnRTaWduYWwoc2lnbmFsPzogQWJvcnRTaWduYWwpOiB0aGlzO1xuICAgIGFjY2VwdENvZGUoY29kZTogSHR0cFN0YXR1c0NvZGUpOiB0aGlzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50IHtcbiAgICBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIHB1dCh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXI7XG4gICAgcGF0Y2godXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXI7XG4gICAgdXJsKHBhdGg6IHN0cmluZywgcGFyYW1zPzogdW5kZWZpbmVkIHwgUXVlcnlQYXJhbXNPYmplY3QpOiBzdHJpbmc7XG4gICAgcG9zdFN5bmModXJsOiBzdHJpbmcsIHBhcmFtczogdW5kZWZpbmVkIHwgUXVlcnlQYXJhbXNPYmplY3QsIGRhdGE6IHt9KTogSUh0dHBDbGllbnRSZXNwb25zZVN5bmM7XG4gICAgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UGFyYW1zT2JqZWN0IHtcbiAgICBba2V5OiBzdHJpbmddOiBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XG59XG4iXSwibWFwcGluZ3MiOiIifQ==
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvSUh0dHBDbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmV0Y2ggfSBmcm9tIFwiLi9GZXRjaEltcGxlbWVudGF0aW9uL0ZldGNoXCI7XG5cbmV4cG9ydCB0eXBlIEh0dHBTdGF0dXNDb2RlID0gbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50UmVzcG9uc2Uge1xuICAgIGpzb248VD4oKTogUHJvbWlzZTxUPjtcbiAgICBzdGF0dXM6IEh0dHBTdGF0dXNDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jIHtcbiAgICBqc29uPFQ+KCk6IFQ7XG4gICAgc3RhdHVzOiBIdHRwU3RhdHVzQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGV4dGVuZHMgUHJvbWlzZUxpa2U8SUh0dHBDbGllbnRSZXNwb25zZT4ge1xuICAgIGpzb248VD4oKTogUHJvbWlzZTxUPjtcbiAgICB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzO1xuICAgIHdpdGhKc29uQm9keShzZXJpYWxpemFibGVCb2R5OiB1bmtub3duIHwgdW5kZWZpbmVkIHwge30gfCB1bmtub3duW10pOiB0aGlzO1xuICAgIHdpdGhSYXdCb2R5KGJvZHk6IEJ1ZmZlciB8IHN0cmluZyB8IGZhbHNlIHwgdW5kZWZpbmVkKTogdGhpcztcbiAgICB3aXRoQ29udGVudFR5cGUoY29udGVudFR5cGU6IHN0cmluZyk6IHRoaXM7XG4gICAgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IHVuZGVmaW5lZCB8IGZhbHNlIHwgQnVmZmVyKTogdGhpcztcbiAgICB3aXRoQWJvcnRTaWduYWwoc2lnbmFsPzogQWJvcnRTaWduYWwpOiB0aGlzO1xuICAgIGFjY2VwdENvZGUoY29kZTogSHR0cFN0YXR1c0NvZGUpOiB0aGlzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50IHtcbiAgICBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIHB1dCh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXI7XG4gICAgcGF0Y2godXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXI7XG4gICAgdXJsKHBhdGg6IHN0cmluZywgcGFyYW1zPzogdW5kZWZpbmVkIHwgUXVlcnlQYXJhbXNPYmplY3QpOiBzdHJpbmc7XG4gICAgcG9zdFN5bmModXJsOiBzdHJpbmcsIHBhcmFtczogdW5kZWZpbmVkIHwgUXVlcnlQYXJhbXNPYmplY3QsIGRhdGE6IHt9KTogSUh0dHBDbGllbnRSZXNwb25zZVN5bmM7XG4gICAgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UGFyYW1zT2JqZWN0IHtcbiAgICBba2V5OiBzdHJpbmddOiBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IHttpClient.js","names":[],"sources":["../../../../Common/HttpClient/IHttpClient.ts"],"sourcesContent":["import { Fetch } from \"./FetchImplementation/Fetch\";\n\nexport type HttpStatusCode = number;\n\nexport interface IHttpClientResponse {\n json<T>(): Promise<T>;\n status: HttpStatusCode;\n}\n\nexport interface IHttpClientResponseSync {\n json<T>(): T;\n status: HttpStatusCode;\n}\n\nexport interface IHttpClientRequestWrapper extends PromiseLike<IHttpClientResponse> {\n json<T>(): Promise<T>;\n withQueryParams(queryParams: QueryParamsObject | false | undefined): this;\n withJsonBody(serializableBody: unknown | undefined | {} | unknown[]): this;\n withRawBody(body: Buffer | string | false | undefined): this;\n withContentType(contentType: string): this;\n withBodyFromBuffer(body: undefined | false | Buffer): this;\n withAbortSignal(signal?: AbortSignal): this;\n acceptCode(code: HttpStatusCode): this;\n}\n\nexport interface IHttpClient {\n get(url: string): IHttpClientRequestWrapper;\n post(url: string): IHttpClientRequestWrapper;\n put(url: string): IHttpClientRequestWrapper;\n patch(url: string): IHttpClientRequestWrapper;\n delete(url: string): IHttpClientRequestWrapper;\n url(path: string, params?: undefined | QueryParamsObject): string;\n postSync(url: string, params: undefined | QueryParamsObject, data: {}): IHttpClientResponseSync;\n createFetchImpl(): Fetch;\n}\n\nexport interface QueryParamsObject {\n [key: string]: null | undefined | number | string | boolean | Array<string | number>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -13,4 +13,4 @@ function indent(str, count) {
13
13
  return indentStr + x;
14
14
  }).join("\n");
15
15
  }
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRlbnQiLCJzdHIiLCJjb3VudCIsImluZGVudFN0ciIsIkFycmF5IiwiZmlsbCIsImpvaW4iLCJzcGxpdCIsIm1hcCIsIngiXSwic291cmNlcyI6WyIuLi8uLi8uLi9Db21tb24vSW5kZW50U3RyaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc3RyOiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZGVudFN0ciA9IG5ldyBBcnJheShjb3VudCAqIDIpLmZpbGwoXCIgXCIpLmpvaW4oXCJcIik7XG4gICAgcmV0dXJuIHN0clxuICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh4ID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5kZW50U3RyICsgeDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCJcXG5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLFNBQVNBLE1BQU1BLENBQUNDLEdBQVcsRUFBRUMsS0FBYSxFQUFVO0VBQ3ZELE1BQU1DLFNBQVMsR0FBRyxJQUFJQyxLQUFLLENBQUNGLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsRUFBRSxDQUFDO0VBQ3pELE9BQU9MLEdBQUcsQ0FDTE0sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUNYQyxHQUFHLENBQUNDLENBQUMsSUFBSTtJQUNOLElBQUlBLENBQUMsS0FBSyxFQUFFLEVBQUU7TUFDVixPQUFPQSxDQUFDO0lBQ1o7SUFDQSxPQUFPTixTQUFTLEdBQUdNLENBQUM7RUFDeEIsQ0FBQyxDQUFDLENBQ0RILElBQUksQ0FBQyxJQUFJLENBQUM7QUFDbkIifQ==
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRlbnQiLCJzdHIiLCJjb3VudCIsImluZGVudFN0ciIsIkFycmF5IiwiZmlsbCIsImpvaW4iLCJzcGxpdCIsIm1hcCIsIngiXSwic291cmNlcyI6WyIuLi8uLi8uLi9Db21tb24vSW5kZW50U3RyaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc3RyOiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZGVudFN0ciA9IG5ldyBBcnJheShjb3VudCAqIDIpLmZpbGwoXCIgXCIpLmpvaW4oXCJcIik7XG4gICAgcmV0dXJuIHN0clxuICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh4ID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5kZW50U3RyICsgeDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCJcXG5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLFNBQVNBLE1BQU1BLENBQUNDLEdBQVcsRUFBRUMsS0FBYSxFQUFVO0VBQ3ZELE1BQU1DLFNBQVMsR0FBRyxJQUFJQyxLQUFLLENBQUNGLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsRUFBRSxDQUFDO0VBQ3pELE9BQU9MLEdBQUcsQ0FDTE0sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUNYQyxHQUFHLENBQUNDLENBQUMsSUFBSTtJQUNOLElBQUlBLENBQUMsS0FBSyxFQUFFLEVBQUU7TUFDVixPQUFPQSxDQUFDO0lBQ1o7SUFDQSxPQUFPTixTQUFTLEdBQUdNLENBQUM7RUFDeEIsQ0FBQyxDQUFDLENBQ0RILElBQUksQ0FBQyxJQUFJLENBQUM7QUFDbkIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndentString.js","names":["indent","str","count","indentStr","Array","fill","join","split","map","x"],"sources":["../../../Common/IndentString.ts"],"sourcesContent":["export function indent(str: string, count: number): string {\n const indentStr = new Array(count * 2).fill(\" \").join(\"\");\n return str\n .split(\"\\n\")\n .map(x => {\n if (x === \"\") {\n return x;\n }\n return indentStr + x;\n })\n .join(\"\\n\");\n}\n"],"mappings":";;;;;;AAAO,SAASA,MAAMA,CAACC,GAAW,EAAEC,KAAa,EAAU;EACvD,MAAMC,SAAS,GAAG,IAAIC,KAAK,CAACF,KAAK,GAAG,CAAC,CAAC,CAACG,IAAI,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;EACzD,OAAOL,GAAG,CACLM,KAAK,CAAC,IAAI,CAAC,CACXC,GAAG,CAACC,CAAC,IAAI;IACN,IAAIA,CAAC,KAAK,EAAE,EAAE;MACV,OAAOA,CAAC;IACZ;IACA,OAAON,SAAS,GAAGM,CAAC;EACxB,CAAC,CAAC,CACDH,IAAI,CAAC,IAAI,CAAC;AACnB","ignoreList":[]}
@@ -29,4 +29,4 @@ function sign(value) {
29
29
  }
30
30
  return 0;
31
31
  }
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGFtcCIsInZhbHVlIiwibWluIiwibWF4IiwiY2xhbXBVSW50IiwicmVzdWx0Iiwic2lnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JbnRSYW5nZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgTGVuZ3RoPFQgZXh0ZW5kcyB1bmtub3duW10+ID0gVCBleHRlbmRzIHsgbGVuZ3RoOiBpbmZlciBMIH0gPyAoTCBleHRlbmRzIG51bWJlciA/IEwgOiBuZXZlcikgOiBuZXZlcjtcblxudHlwZSBCdWlsZFR1cGxlPEwgZXh0ZW5kcyBudW1iZXIsIFQgZXh0ZW5kcyB1bmtub3duW10gPSBbXT4gPSBUIGV4dGVuZHMgeyBsZW5ndGg6IEwgfVxuICAgID8gVFxuICAgIDogQnVpbGRUdXBsZTxMLCBbLi4uVCwgdW5rbm93bl0+O1xuXG50eXBlIEFkZDxBIGV4dGVuZHMgbnVtYmVyLCBCIGV4dGVuZHMgbnVtYmVyPiA9IExlbmd0aDxbLi4uQnVpbGRUdXBsZTxBPiwgLi4uQnVpbGRUdXBsZTxCPl0+O1xuXG5leHBvcnQgdHlwZSBJbnRSYW5nZTxUTWluIGV4dGVuZHMgbnVtYmVyLCBUTWF4IGV4dGVuZHMgbnVtYmVyPiA9IFRNaW4gZXh0ZW5kcyBUTWF4XG4gICAgPyBUTWluXG4gICAgOiBUTWluIHwgSW50UmFuZ2U8QWRkPFRNaW4sIDE+LCBUTWF4PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID4gbWF4KSB7XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA8IG1pbikge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcFVJbnQ8VExlZnQgZXh0ZW5kcyBudW1iZXIsIFRSaWdodCBleHRlbmRzIG51bWJlcj4oXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBtaW46IFRMZWZ0LFxuICAgIG1heDogVFJpZ2h0XG4pOiBJbnRSYW5nZTxUTGVmdCwgVFJpZ2h0PiB7XG4gICAgY29uc3QgcmVzdWx0OiBudW1iZXIgPSBjbGFtcCh2YWx1ZSwgbWluLCBtYXgpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbih2YWx1ZTogbnVtYmVyKTogLTEgfCAwIHwgMSB7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA+IDApIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVlPLFNBQVNBLEtBQUtBLENBQUNDLEtBQWEsRUFBRUMsR0FBVyxFQUFFQyxHQUFXLEVBQVU7RUFDbkUsSUFBSUYsS0FBSyxHQUFHRSxHQUFHLEVBQUU7SUFDYixPQUFPQSxHQUFHO0VBQ2Q7RUFDQSxJQUFJRixLQUFLLEdBQUdDLEdBQUcsRUFBRTtJQUNiLE9BQU9BLEdBQUc7RUFDZDtFQUNBLE9BQU9ELEtBQUs7QUFDaEI7QUFFTyxTQUFTRyxTQUFTQSxDQUNyQkgsS0FBYSxFQUNiQyxHQUFVLEVBQ1ZDLEdBQVcsRUFDWTtFQUN2QixNQUFNRSxNQUFjLEdBQUdMLEtBQUssQ0FBQ0MsS0FBSyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsQ0FBQztFQUM3QztFQUNBLE9BQU9FLE1BQU07QUFDakI7QUFFTyxTQUFTQyxJQUFJQSxDQUFDTCxLQUFhLEVBQWM7RUFDNUMsSUFBSUEsS0FBSyxHQUFHLENBQUMsRUFBRTtJQUNYLE9BQU8sQ0FBQyxDQUFDO0VBQ2I7RUFDQSxJQUFJQSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0lBQ1gsT0FBTyxDQUFDO0VBQ1o7RUFDQSxPQUFPLENBQUM7QUFDWiJ9
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGFtcCIsInZhbHVlIiwibWluIiwibWF4IiwiY2xhbXBVSW50IiwicmVzdWx0Iiwic2lnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JbnRSYW5nZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgTGVuZ3RoPFQgZXh0ZW5kcyB1bmtub3duW10+ID0gVCBleHRlbmRzIHsgbGVuZ3RoOiBpbmZlciBMIH0gPyAoTCBleHRlbmRzIG51bWJlciA/IEwgOiBuZXZlcikgOiBuZXZlcjtcblxudHlwZSBCdWlsZFR1cGxlPEwgZXh0ZW5kcyBudW1iZXIsIFQgZXh0ZW5kcyB1bmtub3duW10gPSBbXT4gPSBUIGV4dGVuZHMgeyBsZW5ndGg6IEwgfVxuICAgID8gVFxuICAgIDogQnVpbGRUdXBsZTxMLCBbLi4uVCwgdW5rbm93bl0+O1xuXG50eXBlIEFkZDxBIGV4dGVuZHMgbnVtYmVyLCBCIGV4dGVuZHMgbnVtYmVyPiA9IExlbmd0aDxbLi4uQnVpbGRUdXBsZTxBPiwgLi4uQnVpbGRUdXBsZTxCPl0+O1xuXG5leHBvcnQgdHlwZSBJbnRSYW5nZTxUTWluIGV4dGVuZHMgbnVtYmVyLCBUTWF4IGV4dGVuZHMgbnVtYmVyPiA9IFRNaW4gZXh0ZW5kcyBUTWF4XG4gICAgPyBUTWluXG4gICAgOiBUTWluIHwgSW50UmFuZ2U8QWRkPFRNaW4sIDE+LCBUTWF4PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID4gbWF4KSB7XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA8IG1pbikge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcFVJbnQ8VExlZnQgZXh0ZW5kcyBudW1iZXIsIFRSaWdodCBleHRlbmRzIG51bWJlcj4oXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBtaW46IFRMZWZ0LFxuICAgIG1heDogVFJpZ2h0XG4pOiBJbnRSYW5nZTxUTGVmdCwgVFJpZ2h0PiB7XG4gICAgY29uc3QgcmVzdWx0OiBudW1iZXIgPSBjbGFtcCh2YWx1ZSwgbWluLCBtYXgpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbih2YWx1ZTogbnVtYmVyKTogLTEgfCAwIHwgMSB7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA+IDApIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVlPLFNBQVNBLEtBQUtBLENBQUNDLEtBQWEsRUFBRUMsR0FBVyxFQUFFQyxHQUFXLEVBQVU7RUFDbkUsSUFBSUYsS0FBSyxHQUFHRSxHQUFHLEVBQUU7SUFDYixPQUFPQSxHQUFHO0VBQ2Q7RUFDQSxJQUFJRixLQUFLLEdBQUdDLEdBQUcsRUFBRTtJQUNiLE9BQU9BLEdBQUc7RUFDZDtFQUNBLE9BQU9ELEtBQUs7QUFDaEI7QUFFTyxTQUFTRyxTQUFTQSxDQUNyQkgsS0FBYSxFQUNiQyxHQUFVLEVBQ1ZDLEdBQVcsRUFDWTtFQUN2QixNQUFNRSxNQUFjLEdBQUdMLEtBQUssQ0FBQ0MsS0FBSyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsQ0FBQztFQUM3QztFQUNBLE9BQU9FLE1BQU07QUFDakI7QUFFTyxTQUFTQyxJQUFJQSxDQUFDTCxLQUFhLEVBQWM7RUFDNUMsSUFBSUEsS0FBSyxHQUFHLENBQUMsRUFBRTtJQUNYLE9BQU8sQ0FBQyxDQUFDO0VBQ2I7RUFDQSxJQUFJQSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0lBQ1gsT0FBTyxDQUFDO0VBQ1o7RUFDQSxPQUFPLENBQUM7QUFDWiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntRangeUtils.js","names":["clamp","value","min","max","clampUInt","result","sign"],"sources":["../../../Common/IntRangeUtils.ts"],"sourcesContent":["type Length<T extends unknown[]> = T extends { length: infer L } ? (L extends number ? L : never) : never;\n\ntype BuildTuple<L extends number, T extends unknown[] = []> = T extends { length: L }\n ? T\n : BuildTuple<L, [...T, unknown]>;\n\ntype Add<A extends number, B extends number> = Length<[...BuildTuple<A>, ...BuildTuple<B>]>;\n\nexport type IntRange<TMin extends number, TMax extends number> = TMin extends TMax\n ? TMin\n : TMin | IntRange<Add<TMin, 1>, TMax>;\n\nexport function clamp(value: number, min: number, max: number): number {\n if (value > max) {\n return max;\n }\n if (value < min) {\n return min;\n }\n return value;\n}\n\nexport function clampUInt<TLeft extends number, TRight extends number>(\n value: number,\n min: TLeft,\n max: TRight\n): IntRange<TLeft, TRight> {\n const result: number = clamp(value, min, max);\n // @ts-ignore\n return result;\n}\n\nexport function sign(value: number): -1 | 0 | 1 {\n if (value < 0) {\n return -1;\n }\n if (value > 0) {\n return 1;\n }\n return 0;\n}\n"],"mappings":";;;;;;;;AAYO,SAASA,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EACnE,IAAIF,KAAK,GAAGE,GAAG,EAAE;IACb,OAAOA,GAAG;EACd;EACA,IAAIF,KAAK,GAAGC,GAAG,EAAE;IACb,OAAOA,GAAG;EACd;EACA,OAAOD,KAAK;AAChB;AAEO,SAASG,SAASA,CACrBH,KAAa,EACbC,GAAU,EACVC,GAAW,EACY;EACvB,MAAME,MAAc,GAAGL,KAAK,CAACC,KAAK,EAAEC,GAAG,EAAEC,GAAG,CAAC;EAC7C;EACA,OAAOE,MAAM;AACjB;AAEO,SAASC,IAAIA,CAACL,KAAa,EAAc;EAC5C,IAAIA,KAAK,GAAG,CAAC,EAAE;IACX,OAAO,CAAC,CAAC;EACb;EACA,IAAIA,KAAK,GAAG,CAAC,EAAE;IACX,OAAO,CAAC;EACZ;EACA,OAAO,CAAC;AACZ","ignoreList":[]}
@@ -285,4 +285,4 @@ class IterUtils {
285
285
  exports.IterUtils = IterUtils;
286
286
  IterUtils.count = count;
287
287
  IterUtils.concat = concat;
288
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0Vycm9ycyIsInJldmVyc2VBcnJheSIsImFycmF5IiwiaSIsImxlbmd0aCIsInRvQXN5bmNJdGVyYXRvciIsImdlbmVyYXRvciIsIkFzeW5jSXRlcmF0b3IiLCJmcm9tIiwiZmluZExhc3QiLCJpdGVtcyIsImNvbmRpdGlvbiIsInJlc3VsdCIsIml0ZW0iLCJjb25jYXQiLCJpdGVyYWJsZXMiLCJpdGVyYWJsZUl0ZW0iLCJpdGVyYXRlVmFsdWVzIiwib2JqIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaXRlcmF0ZUtleXMiLCJpdGVyYXRlRW50cmllcyIsImNvdW50IiwiX2l0ZW0iLCJFbXB0eVNpbmdsZUVsZW1lbnQiLCJTeW1ib2wiLCJmb3IiLCJOb1ZhbHVlTWFya2VyIiwiSXRlclV0aWxzIiwiaXNFbXB0eSIsIml0ZXJhYmxlIiwiZ3JvdXBCeSIsInNlbGVjdEtleSIsIk1hcCIsImtleUxpc3QiLCJnZXQiLCJ1bmRlZmluZWQiLCJzZXQiLCJwdXNoIiwic29ydEJ5Iiwic2VsZWN0b3IiLCJzb3J0IiwiYUl0ZW0iLCJiSXRlbSIsImxlZnRWYWx1ZSIsInJpZ2h0VmFsdWUiLCJsYXN0IiwiQXJyYXkiLCJpc0FycmF5IiwibGFzdEl0ZW0iLCJmaXJzdCIsImZpcnN0SXRlbSIsInNpbmdsZSIsInNpbmdsZUFzc2VydE1lc3NhZ2UiLCJfaXRlbXMkIiwiRXJyb3IiLCJyZWplY3QiLCJzaW5nbGVFbGVtZW50IiwiaW5kZXgiLCJza2lwTGFzdCIsInNraXBDb3VudCIsInByZXZJdGVtcyIsImZpbGwiLCJyZXN1bHRJdGVtIiwiY3VycmVudEluZGV4IiwibWluQnkiLCJjb21wYXJlRnVuYyIsIm1pblZhbHVlIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtaW5CeU9yVW5kZWZpbmVkIiwicmFuZ2UiLCJpblN0YXJ0T3JDb3VudCIsImluSXRlbUNvdW50Iiwic3RhcnQiLCJpdGVtQ291bnQiLCJpbnRlcnNwZXJzZSIsImludGVyc3BlcnNlRm4iLCJmbGF0TWFwIiwieCIsInppcCIsIml0ZXJhdG9ycyIsIm1hcCIsIml0IiwiSXRlcmF0b3IiLCJoYXNVbmRvbmVJdGVyYXRvcnMiLCJyZXN1bHRFbnRyeSIsIml0ZXJhdG9yIiwicmVzdWx0VmFsdWUiLCJuZXh0IiwiZG9uZSIsInZhbHVlIiwiZGlzdGluY3RCeSIsImlkU2VsZWN0b3IiLCJTZXQiLCJpZCIsImhhcyIsImFkZCIsInJlZHVjZSIsInJlZHVjZXIiLCJpbml0aWFsVmFsdWUiLCJhY2MiLCJiYXRjaCIsImJhdGNoU2l6ZSIsInNhZmVCYXRjaFNpemUiLCJjdXJyZW50IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JdGVyYWJsZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbkxlbmd0aEFycmF5LCByZWplY3QgfSBmcm9tIFwiLi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgQ29tcGFyZUZ1bmMgfSBmcm9tIFwiLi9Db21wYXJlcnNcIjtcbmltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gZnJvbSBcIi4vRXJyb3JzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiogcmV2ZXJzZUFycmF5PFQ+KGFycmF5OiByZWFkb25seSBUW10pOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgeWllbGQgYXJyYXlbaV0hO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQXN5bmNJdGVyYXRvcjxUPihnZW5lcmF0b3I6ICgpID0+IEFzeW5jR2VuZXJhdG9yPFQ+KTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICByZXR1cm4gQXN5bmNJdGVyYXRvci5mcm9tKGdlbmVyYXRvcigpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgY29uZGl0aW9uOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IFQgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ6IFQgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChjb25kaXRpb24oaXRlbSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjb25jYXQ8VD4oLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTxUPj4pOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICBmb3IgKGNvbnN0IGl0ZXJhYmxlSXRlbSBvZiBpdGVyYWJsZXMpIHtcbiAgICAgICAgeWllbGQqIGl0ZXJhYmxlSXRlbTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZVZhbHVlczxUSyBleHRlbmRzIHN0cmluZyB8IHN5bWJvbCB8IG51bWJlciwgVFY+KG9iajogeyBba2V5IGluIFRLXTogVFYgfSk6IEl0ZXJhYmxlPFRWPiB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB5aWVsZCBvYmpba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzPFRPPihvYmo6IFJlYWRvbmx5PFRPPik6IEl0ZXJhYmxlPEV4dHJhY3Q8a2V5b2YgVE8sIHN0cmluZz4+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzPFRWPihvYmo6IFJlYWRvbmx5PHsgW2tleTogc3RyaW5nXTogVFYgfT4pOiBJdGVyYWJsZTxzdHJpbmc+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzKG9iajogUmVhZG9ubHk8e30+KTogSXRlcmFibGU8c3RyaW5nPjtcbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUtleXM8VEsgZXh0ZW5kcyBzdHJpbmcgfCBzeW1ib2wgfCBudW1iZXI+KG9iajogeyBba2V5IGluIFRLXTogdW5rbm93biB9KTogSXRlcmFibGU8VEs+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHlpZWxkIGtleTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzPFRPPihvYmo6IFJlYWRvbmx5PFRPPik6IEl0ZXJhYmxlPFtFeHRyYWN0PGtleW9mIFRPLCBzdHJpbmc+LCBUT1trZXlvZiBUT11dPjtcbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlRW50cmllczxUVj4ob2JqOiBSZWFkb25seTx7IFtrZXk6IHN0cmluZ106IFRWIH0+KTogSXRlcmFibGU8W3N0cmluZywgVFZdPjtcbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlRW50cmllcyhvYmo6IFJlYWRvbmx5PHt9Pik6IEl0ZXJhYmxlPFtzdHJpbmcsIHVua25vd25dPjtcbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUVudHJpZXM8VFY+KG9iajogUmVhZG9ubHk8eyBba2V5OiBzdHJpbmddOiBUViB9Pik6IEl0ZXJhYmxlPFtzdHJpbmcsIFRWXT4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgIHlpZWxkIFtrZXksIG9ialtrZXldIV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3VudDxUPihpdGVtczogSXRlcmFibGU8VD4pOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGZvciAoY29uc3QgX2l0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgcmVzdWx0Kys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbnN0IEVtcHR5U2luZ2xlRWxlbWVudCA9IFN5bWJvbC5mb3IoXCJFbXB0eVNpbmdsZUVsZW1lbnRcIik7XG5jb25zdCBOb1ZhbHVlTWFya2VyID0gU3ltYm9sLmZvcihcIk5vVmFsdWVNYXJrZXJcIik7XG5cbmV4cG9ydCBjbGFzcyBJdGVyVXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMgY291bnQgPSBjb3VudDtcbiAgICBwdWJsaWMgc3RhdGljIGNvbmNhdCA9IGNvbmNhdDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaXNFbXB0eTxUPihpdGVyYWJsZTogSXRlcmFibGU8VD4pOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBfaXRlbSBvZiBpdGVyYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ3JvdXBCeTxULCBUS2V5PihpdGVyYWJsZTogSXRlcmFibGU8VD4sIHNlbGVjdEtleTogKGl0ZW06IFQpID0+IFRLZXkpOiBNYXA8VEtleSwgVFtdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8VEtleSwgVFtdPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlcmFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHNlbGVjdEtleShpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGtleUxpc3QgPSByZXN1bHQuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoa2V5TGlzdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgW2l0ZW1dKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAga2V5TGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzb3J0Qnk8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBzZWxlY3RvcjogKGl0ZW06IFQpID0+IHN0cmluZyB8IG51bWJlcik6IFRbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5pdGVtc107XG4gICAgICAgIHJlc3VsdC5zb3J0KChhSXRlbSwgYkl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRWYWx1ZSA9IHNlbGVjdG9yKGFJdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPSBzZWxlY3RvcihiSXRlbSk7XG4gICAgICAgICAgICBpZiAobGVmdFZhbHVlID09PSByaWdodFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnRWYWx1ZSA8IHJpZ2h0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IE1pbkxlbmd0aEFycmF5PFQsIDE+KTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsYXN0SXRlbTogVCB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBsYXN0SXRlbSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhc3RJdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IFtULCAuLi51bmtub3duW11dKTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGZpcnN0PFQ+KGl0ZW1zOiBNaW5MZW5ndGhBcnJheTxULCAxPik6IFQ7XG4gICAgcHVibGljIHN0YXRpYyBmaXJzdDxUPihpdGVtczogSXRlcmFibGU8VD4gfCByZWFkb25seSBUW10pOiB1bmRlZmluZWQgfCBUO1xuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaXJzdEl0ZW06IFQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgZmlyc3RJdGVtID0gaXRlbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaXJzdEl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaW5nbGU8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IEl0ZXJhYmxlPFQ+LCBzaW5nbGVBc3NlcnRNZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlQXNzZXJ0TWVzc2FnZSA/PyBgU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgJHtpdGVtcy5sZW5ndGh9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbXNbMF0gPz8gcmVqZWN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2luZ2xlRWxlbWVudDogVCB8IHR5cGVvZiBFbXB0eVNpbmdsZUVsZW1lbnQgPSBFbXB0eVNpbmdsZUVsZW1lbnQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRWxlbWVudCAhPT0gRW1wdHlTaW5nbGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZUFzc2VydE1lc3NhZ2UgPz8gYFNlcXVlbmNlIG11c3QgY29udGFpbiBleGFjdGx5IHNpbmdsZSBlbGVtZW50LCBidXQgZ290IGF0IGxlYXN0IDJgXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNpbmdsZUVsZW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNpbmdsZUVsZW1lbnQgPT09IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzaW5nbGVBc3NlcnRNZXNzYWdlID8/IFwiU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqaXRlcmF0ZUVudHJpZXM8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IFRbXSB8IEl0ZXJhYmxlPFQ+KTogSXRlcmFibGU8W251bWJlciwgVF0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICB5aWVsZCBbaW5kZXgsIGl0ZW1dO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgKnNraXBMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgc2tpcENvdW50OiBudW1iZXIpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGlmIChza2lwQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHlpZWxkKiBpdGVtcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2SXRlbXM6IEFycmF5PFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50PiA9IG5ldyBBcnJheShza2lwQ291bnQpLmZpbGwoRW1wdHlTaW5nbGVFbGVtZW50KTtcbiAgICAgICAgbGV0IHJlc3VsdEl0ZW06IFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50ID0gRW1wdHlTaW5nbGVFbGVtZW50O1xuICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yINCSINC+0LHRidC10LwsINGB0YLRgNC+0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC90YLQuNGA0YPQtdGCINC00LvQuNC90YMg0LzQsNGB0YHQuNCy0LBcbiAgICAgICAgICAgIHJlc3VsdEl0ZW0gPSBwcmV2SXRlbXNbY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgIHByZXZJdGVtc1tjdXJyZW50SW5kZXhdID0gaXRlbTtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIHNraXBDb3VudDtcbiAgICAgICAgICAgIGlmIChyZXN1bHRJdGVtICE9IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1pbkJ5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10gfCBUW10gfCBJdGVyYWJsZTxUPiwgY29tcGFyZUZ1bmM6IENvbXBhcmVGdW5jPFQ+KTogVCB7XG4gICAgICAgIGxldCBtaW5WYWx1ZTogdHlwZW9mIE5vVmFsdWVNYXJrZXIgfCBUID0gTm9WYWx1ZU1hcmtlcjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAobWluVmFsdWUgPT09IE5vVmFsdWVNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmVGdW5jKGl0ZW0sIG1pblZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJpdGVtc1wiLCBcIkl0ZW1zIHNob3VsZCBiZSBub3QgZW1wdHkgbGlzdFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtaW5CeU9yVW5kZWZpbmVkPFQ+KFxuICAgICAgICBpdGVtczogcmVhZG9ubHkgVFtdIHwgVFtdIHwgSXRlcmFibGU8VD4sXG4gICAgICAgIGNvbXBhcmVGdW5jOiBDb21wYXJlRnVuYzxUPlxuICAgICk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgbWluVmFsdWU6IHR5cGVvZiBOb1ZhbHVlTWFya2VyIHwgVCA9IE5vVmFsdWVNYXJrZXI7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlRnVuYyhpdGVtLCBtaW5WYWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5WYWx1ZSA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyAqcmFuZ2UoaW5TdGFydE9yQ291bnQ6IG51bWJlciwgaW5JdGVtQ291bnQ/OiBudW1iZXIpOiBJdGVyYWJsZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gMCA6IGluU3RhcnRPckNvdW50O1xuICAgICAgICBjb25zdCBpdGVtQ291bnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gaW5TdGFydE9yQ291bnQgOiBpbkl0ZW1Db3VudDtcbiAgICAgICAgaWYgKGl0ZW1Db3VudCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIml0ZW1Db3VudFwiLCBcIml0ZW1Db3VudCBtdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGl0ZW1Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICB5aWVsZCBpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkg0JLRgdGC0LDQstC70Y/QtdGCINC80LXQttC00YMg0Y3Qu9C10LzQtdC90YLQsNC80Lgg0LzQsNGB0YHQuNCy0LAg0LfQsNC00LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQvdC+0LLRi9C5INC80LDRgdGB0LjQslxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzcGVyc2U8VEksIFRTPihpdGVtczogVElbXSwgaXRlbTogVFMpOiBBcnJheTxUSSB8IFRTPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyc3BlcnNlRm4oaXRlbXMsICgpID0+IGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5INCS0YHRgtCw0LLQu9GP0LXRgiDQvNC10LbQtNGDINGN0LvQtdC80LXQvdGC0LDQvNC4INC80LDRgdGB0LjQstCwINGN0LvQtdC80LXQvdGCLCDRgdC+0LfQtNCw0LLQsNC10LzRi9C5INGE0YPQvdC60YbQuNC10LksINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC90L7QstGL0Lkg0LzQsNGB0YHQuNCyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpbnRlcnNwZXJzZUZuPFRJLCBUUz4oaXRlbXM6IFRJW10sIGl0ZW06IChuZXh0SXRlbTogVEksIGluZGV4OiBudW1iZXIpID0+IFRTKTogQXJyYXk8VEkgfCBUUz4ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmxhdE1hcCgoeCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IFt4XSA6IFtpdGVtKHgsIGluZGV4KSwgeF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHppcDxUMSwgVDI+KGl0ZW1zMTogSXRlcmFibGU8VDE+LCBpdGVtczI6IEl0ZXJhYmxlPFQyPik6IEl0ZXJhYmxlPFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWRdPjtcbiAgICBwdWJsaWMgc3RhdGljICp6aXAoLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTx1bmtub3duPj4pOiBJdGVyYWJsZTx1bmtub3duW10+IHtcbiAgICAgICAgY29uc3QgaXRlcmF0b3JzOiBBcnJheTxJdGVyYXRvcjx1bmtub3duPiB8IHR5cGVvZiBOb1ZhbHVlTWFya2VyPiA9IGl0ZXJhYmxlcy5tYXAoaXQgPT4gSXRlcmF0b3IuZnJvbShpdCkpO1xuICAgICAgICBsZXQgaGFzVW5kb25lSXRlcmF0b3JzID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0RW50cnkgPSBbXTtcbiAgICAgICAgICAgIGhhc1VuZG9uZUl0ZXJhdG9ycyA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaSwgaXRlcmF0b3JdIG9mIHRoaXMuaXRlcmF0ZUVudHJpZXMoaXRlcmF0b3JzKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0VmFsdWUgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRWYWx1ZS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcnNbaV0gPSBOb1ZhbHVlTWFya2VyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0RW50cnkucHVzaChyZXN1bHRWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNVbmRvbmVJdGVyYXRvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqZGlzdGluY3RCeTxUPihpdGVtczogSXRlcmFibGU8VD4sIGlkU2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaWRTZWxlY3RvcihpdGVtKTtcbiAgICAgICAgICAgIGlmICghc2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGlkKTtcbiAgICAgICAgICAgICAgICB5aWVsZCBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZWR1Y2U8VCwgVT4oXG4gICAgICAgIGl0ZW1zOiBJdGVyYWJsZTxUPixcbiAgICAgICAgcmVkdWNlcjogKGFjY3VtdWxhdG9yOiBVLCBpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBVLFxuICAgICAgICBpbml0aWFsVmFsdWU6IFVcbiAgICApOiBVIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yLmZyb20oaXRlbXMpLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiByZWR1Y2VyKGFjYywgaXRlbSwgaW5kZXgrKyksIGluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqYmF0Y2g8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBiYXRjaFNpemU6IG51bWJlcik6IEl0ZXJhYmxlPEl0ZXJhYmxlPFQ+PiB7XG4gICAgICAgIGNvbnN0IGl0ZXJhdG9yID0gSXRlcmF0b3IuZnJvbShpdGVtcyk7XG4gICAgICAgIGNvbnN0IHNhZmVCYXRjaFNpemUgPSBiYXRjaFNpemUgPiAwID8gYmF0Y2hTaXplIDogMTtcbiAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICBjb25zdCBiYXRjaDogVFtdID0gW107XG4gICAgICAgICAgICB3aGlsZSAoYmF0Y2gubGVuZ3RoIDwgc2FmZUJhdGNoU2l6ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYmF0Y2gucHVzaChjdXJyZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYmF0Y2gubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGJhdGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxu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
288
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0Vycm9ycyIsInJldmVyc2VBcnJheSIsImFycmF5IiwiaSIsImxlbmd0aCIsInRvQXN5bmNJdGVyYXRvciIsImdlbmVyYXRvciIsIkFzeW5jSXRlcmF0b3IiLCJmcm9tIiwiZmluZExhc3QiLCJpdGVtcyIsImNvbmRpdGlvbiIsInJlc3VsdCIsIml0ZW0iLCJjb25jYXQiLCJpdGVyYWJsZXMiLCJpdGVyYWJsZUl0ZW0iLCJpdGVyYXRlVmFsdWVzIiwib2JqIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaXRlcmF0ZUtleXMiLCJpdGVyYXRlRW50cmllcyIsImNvdW50IiwiX2l0ZW0iLCJFbXB0eVNpbmdsZUVsZW1lbnQiLCJTeW1ib2wiLCJmb3IiLCJOb1ZhbHVlTWFya2VyIiwiSXRlclV0aWxzIiwiaXNFbXB0eSIsIml0ZXJhYmxlIiwiZ3JvdXBCeSIsInNlbGVjdEtleSIsIk1hcCIsImtleUxpc3QiLCJnZXQiLCJ1bmRlZmluZWQiLCJzZXQiLCJwdXNoIiwic29ydEJ5Iiwic2VsZWN0b3IiLCJzb3J0IiwiYUl0ZW0iLCJiSXRlbSIsImxlZnRWYWx1ZSIsInJpZ2h0VmFsdWUiLCJsYXN0IiwiQXJyYXkiLCJpc0FycmF5IiwibGFzdEl0ZW0iLCJmaXJzdCIsImZpcnN0SXRlbSIsInNpbmdsZSIsInNpbmdsZUFzc2VydE1lc3NhZ2UiLCJfaXRlbXMkIiwiRXJyb3IiLCJyZWplY3QiLCJzaW5nbGVFbGVtZW50IiwiaW5kZXgiLCJza2lwTGFzdCIsInNraXBDb3VudCIsInByZXZJdGVtcyIsImZpbGwiLCJyZXN1bHRJdGVtIiwiY3VycmVudEluZGV4IiwibWluQnkiLCJjb21wYXJlRnVuYyIsIm1pblZhbHVlIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtaW5CeU9yVW5kZWZpbmVkIiwicmFuZ2UiLCJpblN0YXJ0T3JDb3VudCIsImluSXRlbUNvdW50Iiwic3RhcnQiLCJpdGVtQ291bnQiLCJpbnRlcnNwZXJzZSIsImludGVyc3BlcnNlRm4iLCJmbGF0TWFwIiwieCIsInppcCIsIml0ZXJhdG9ycyIsIm1hcCIsIml0IiwiSXRlcmF0b3IiLCJoYXNVbmRvbmVJdGVyYXRvcnMiLCJyZXN1bHRFbnRyeSIsIml0ZXJhdG9yIiwicmVzdWx0VmFsdWUiLCJuZXh0IiwiZG9uZSIsInZhbHVlIiwiZGlzdGluY3RCeSIsImlkU2VsZWN0b3IiLCJTZXQiLCJpZCIsImhhcyIsImFkZCIsInJlZHVjZSIsInJlZHVjZXIiLCJpbml0aWFsVmFsdWUiLCJhY2MiLCJiYXRjaCIsImJhdGNoU2l6ZSIsInNhZmVCYXRjaFNpemUiLCJjdXJyZW50IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JdGVyYWJsZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbkxlbmd0aEFycmF5LCByZWplY3QgfSBmcm9tIFwiLi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgQ29tcGFyZUZ1bmMgfSBmcm9tIFwiLi9Db21wYXJlcnNcIjtcbmltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gZnJvbSBcIi4vRXJyb3JzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiogcmV2ZXJzZUFycmF5PFQ+KGFycmF5OiByZWFkb25seSBUW10pOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgeWllbGQgYXJyYXlbaV0hO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQXN5bmNJdGVyYXRvcjxUPihnZW5lcmF0b3I6ICgpID0+IEFzeW5jR2VuZXJhdG9yPFQ+KTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICByZXR1cm4gQXN5bmNJdGVyYXRvci5mcm9tKGdlbmVyYXRvcigpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgY29uZGl0aW9uOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IFQgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ6IFQgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChjb25kaXRpb24oaXRlbSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjb25jYXQ8VD4oLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTxUPj4pOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICBmb3IgKGNvbnN0IGl0ZXJhYmxlSXRlbSBvZiBpdGVyYWJsZXMpIHtcbiAgICAgICAgeWllbGQqIGl0ZXJhYmxlSXRlbTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZVZhbHVlczxUSyBleHRlbmRzIHN0cmluZyB8IHN5bWJvbCB8IG51bWJlciwgVFY+KG9iajogeyBba2V5IGluIFRLXTogVFYgfSk6IEl0ZXJhYmxlPFRWPiB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB5aWVsZCBvYmpba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzPFRPPihvYmo6IFJlYWRvbmx5PFRPPik6IEl0ZXJhYmxlPEV4dHJhY3Q8a2V5b2YgVE8sIHN0cmluZz4+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzPFRWPihvYmo6IFJlYWRvbmx5PHsgW2tleTogc3RyaW5nXTogVFYgfT4pOiBJdGVyYWJsZTxzdHJpbmc+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzKG9iajogUmVhZG9ubHk8e30+KTogSXRlcmFibGU8c3RyaW5nPjtcbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUtleXM8VEsgZXh0ZW5kcyBzdHJpbmcgfCBzeW1ib2wgfCBudW1iZXI+KG9iajogeyBba2V5IGluIFRLXTogdW5rbm93biB9KTogSXRlcmFibGU8VEs+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHlpZWxkIGtleTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzPFRPPihvYmo6IFJlYWRvbmx5PFRPPik6IEl0ZXJhYmxlPFtFeHRyYWN0PGtleW9mIFRPLCBzdHJpbmc+LCBUT1trZXlvZiBUT11dPjtcbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlRW50cmllczxUVj4ob2JqOiBSZWFkb25seTx7IFtrZXk6IHN0cmluZ106IFRWIH0+KTogSXRlcmFibGU8W3N0cmluZywgVFZdPjtcbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlRW50cmllcyhvYmo6IFJlYWRvbmx5PHt9Pik6IEl0ZXJhYmxlPFtzdHJpbmcsIHVua25vd25dPjtcbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUVudHJpZXM8VFY+KG9iajogUmVhZG9ubHk8eyBba2V5OiBzdHJpbmddOiBUViB9Pik6IEl0ZXJhYmxlPFtzdHJpbmcsIFRWXT4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgIHlpZWxkIFtrZXksIG9ialtrZXldIV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3VudDxUPihpdGVtczogSXRlcmFibGU8VD4pOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGZvciAoY29uc3QgX2l0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgcmVzdWx0Kys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbnN0IEVtcHR5U2luZ2xlRWxlbWVudCA9IFN5bWJvbC5mb3IoXCJFbXB0eVNpbmdsZUVsZW1lbnRcIik7XG5jb25zdCBOb1ZhbHVlTWFya2VyID0gU3ltYm9sLmZvcihcIk5vVmFsdWVNYXJrZXJcIik7XG5cbmV4cG9ydCBjbGFzcyBJdGVyVXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMgY291bnQgPSBjb3VudDtcbiAgICBwdWJsaWMgc3RhdGljIGNvbmNhdCA9IGNvbmNhdDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaXNFbXB0eTxUPihpdGVyYWJsZTogSXRlcmFibGU8VD4pOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBfaXRlbSBvZiBpdGVyYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ3JvdXBCeTxULCBUS2V5PihpdGVyYWJsZTogSXRlcmFibGU8VD4sIHNlbGVjdEtleTogKGl0ZW06IFQpID0+IFRLZXkpOiBNYXA8VEtleSwgVFtdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8VEtleSwgVFtdPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlcmFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHNlbGVjdEtleShpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGtleUxpc3QgPSByZXN1bHQuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoa2V5TGlzdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgW2l0ZW1dKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAga2V5TGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzb3J0Qnk8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBzZWxlY3RvcjogKGl0ZW06IFQpID0+IHN0cmluZyB8IG51bWJlcik6IFRbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5pdGVtc107XG4gICAgICAgIHJlc3VsdC5zb3J0KChhSXRlbSwgYkl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRWYWx1ZSA9IHNlbGVjdG9yKGFJdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPSBzZWxlY3RvcihiSXRlbSk7XG4gICAgICAgICAgICBpZiAobGVmdFZhbHVlID09PSByaWdodFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnRWYWx1ZSA8IHJpZ2h0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IE1pbkxlbmd0aEFycmF5PFQsIDE+KTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsYXN0SXRlbTogVCB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBsYXN0SXRlbSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhc3RJdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IFtULCAuLi51bmtub3duW11dKTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGZpcnN0PFQ+KGl0ZW1zOiBNaW5MZW5ndGhBcnJheTxULCAxPik6IFQ7XG4gICAgcHVibGljIHN0YXRpYyBmaXJzdDxUPihpdGVtczogSXRlcmFibGU8VD4gfCByZWFkb25seSBUW10pOiB1bmRlZmluZWQgfCBUO1xuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaXJzdEl0ZW06IFQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgZmlyc3RJdGVtID0gaXRlbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaXJzdEl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaW5nbGU8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IEl0ZXJhYmxlPFQ+LCBzaW5nbGVBc3NlcnRNZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlQXNzZXJ0TWVzc2FnZSA/PyBgU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgJHtpdGVtcy5sZW5ndGh9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbXNbMF0gPz8gcmVqZWN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2luZ2xlRWxlbWVudDogVCB8IHR5cGVvZiBFbXB0eVNpbmdsZUVsZW1lbnQgPSBFbXB0eVNpbmdsZUVsZW1lbnQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRWxlbWVudCAhPT0gRW1wdHlTaW5nbGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZUFzc2VydE1lc3NhZ2UgPz8gYFNlcXVlbmNlIG11c3QgY29udGFpbiBleGFjdGx5IHNpbmdsZSBlbGVtZW50LCBidXQgZ290IGF0IGxlYXN0IDJgXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNpbmdsZUVsZW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNpbmdsZUVsZW1lbnQgPT09IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzaW5nbGVBc3NlcnRNZXNzYWdlID8/IFwiU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqaXRlcmF0ZUVudHJpZXM8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IFRbXSB8IEl0ZXJhYmxlPFQ+KTogSXRlcmFibGU8W251bWJlciwgVF0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICB5aWVsZCBbaW5kZXgsIGl0ZW1dO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgKnNraXBMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgc2tpcENvdW50OiBudW1iZXIpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGlmIChza2lwQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHlpZWxkKiBpdGVtcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2SXRlbXM6IEFycmF5PFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50PiA9IG5ldyBBcnJheShza2lwQ291bnQpLmZpbGwoRW1wdHlTaW5nbGVFbGVtZW50KTtcbiAgICAgICAgbGV0IHJlc3VsdEl0ZW06IFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50ID0gRW1wdHlTaW5nbGVFbGVtZW50O1xuICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yINCSINC+0LHRidC10LwsINGB0YLRgNC+0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC90YLQuNGA0YPQtdGCINC00LvQuNC90YMg0LzQsNGB0YHQuNCy0LBcbiAgICAgICAgICAgIHJlc3VsdEl0ZW0gPSBwcmV2SXRlbXNbY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgIHByZXZJdGVtc1tjdXJyZW50SW5kZXhdID0gaXRlbTtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIHNraXBDb3VudDtcbiAgICAgICAgICAgIGlmIChyZXN1bHRJdGVtICE9IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1pbkJ5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10gfCBUW10gfCBJdGVyYWJsZTxUPiwgY29tcGFyZUZ1bmM6IENvbXBhcmVGdW5jPFQ+KTogVCB7XG4gICAgICAgIGxldCBtaW5WYWx1ZTogdHlwZW9mIE5vVmFsdWVNYXJrZXIgfCBUID0gTm9WYWx1ZU1hcmtlcjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAobWluVmFsdWUgPT09IE5vVmFsdWVNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmVGdW5jKGl0ZW0sIG1pblZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJpdGVtc1wiLCBcIkl0ZW1zIHNob3VsZCBiZSBub3QgZW1wdHkgbGlzdFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtaW5CeU9yVW5kZWZpbmVkPFQ+KFxuICAgICAgICBpdGVtczogcmVhZG9ubHkgVFtdIHwgVFtdIHwgSXRlcmFibGU8VD4sXG4gICAgICAgIGNvbXBhcmVGdW5jOiBDb21wYXJlRnVuYzxUPlxuICAgICk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgbWluVmFsdWU6IHR5cGVvZiBOb1ZhbHVlTWFya2VyIHwgVCA9IE5vVmFsdWVNYXJrZXI7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlRnVuYyhpdGVtLCBtaW5WYWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5WYWx1ZSA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyAqcmFuZ2UoaW5TdGFydE9yQ291bnQ6IG51bWJlciwgaW5JdGVtQ291bnQ/OiBudW1iZXIpOiBJdGVyYWJsZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gMCA6IGluU3RhcnRPckNvdW50O1xuICAgICAgICBjb25zdCBpdGVtQ291bnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gaW5TdGFydE9yQ291bnQgOiBpbkl0ZW1Db3VudDtcbiAgICAgICAgaWYgKGl0ZW1Db3VudCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIml0ZW1Db3VudFwiLCBcIml0ZW1Db3VudCBtdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGl0ZW1Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICB5aWVsZCBpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkg0JLRgdGC0LDQstC70Y/QtdGCINC80LXQttC00YMg0Y3Qu9C10LzQtdC90YLQsNC80Lgg0LzQsNGB0YHQuNCy0LAg0LfQsNC00LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQvdC+0LLRi9C5INC80LDRgdGB0LjQslxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzcGVyc2U8VEksIFRTPihpdGVtczogVElbXSwgaXRlbTogVFMpOiBBcnJheTxUSSB8IFRTPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyc3BlcnNlRm4oaXRlbXMsICgpID0+IGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5INCS0YHRgtCw0LLQu9GP0LXRgiDQvNC10LbQtNGDINGN0LvQtdC80LXQvdGC0LDQvNC4INC80LDRgdGB0LjQstCwINGN0LvQtdC80LXQvdGCLCDRgdC+0LfQtNCw0LLQsNC10LzRi9C5INGE0YPQvdC60YbQuNC10LksINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC90L7QstGL0Lkg0LzQsNGB0YHQuNCyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpbnRlcnNwZXJzZUZuPFRJLCBUUz4oaXRlbXM6IFRJW10sIGl0ZW06IChuZXh0SXRlbTogVEksIGluZGV4OiBudW1iZXIpID0+IFRTKTogQXJyYXk8VEkgfCBUUz4ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmxhdE1hcCgoeCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IFt4XSA6IFtpdGVtKHgsIGluZGV4KSwgeF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHppcDxUMSwgVDI+KGl0ZW1zMTogSXRlcmFibGU8VDE+LCBpdGVtczI6IEl0ZXJhYmxlPFQyPik6IEl0ZXJhYmxlPFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWRdPjtcbiAgICBwdWJsaWMgc3RhdGljICp6aXAoLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTx1bmtub3duPj4pOiBJdGVyYWJsZTx1bmtub3duW10+IHtcbiAgICAgICAgY29uc3QgaXRlcmF0b3JzOiBBcnJheTxJdGVyYXRvcjx1bmtub3duPiB8IHR5cGVvZiBOb1ZhbHVlTWFya2VyPiA9IGl0ZXJhYmxlcy5tYXAoaXQgPT4gSXRlcmF0b3IuZnJvbShpdCkpO1xuICAgICAgICBsZXQgaGFzVW5kb25lSXRlcmF0b3JzID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0RW50cnkgPSBbXTtcbiAgICAgICAgICAgIGhhc1VuZG9uZUl0ZXJhdG9ycyA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaSwgaXRlcmF0b3JdIG9mIHRoaXMuaXRlcmF0ZUVudHJpZXMoaXRlcmF0b3JzKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0VmFsdWUgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRWYWx1ZS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcnNbaV0gPSBOb1ZhbHVlTWFya2VyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0RW50cnkucHVzaChyZXN1bHRWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNVbmRvbmVJdGVyYXRvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqZGlzdGluY3RCeTxUPihpdGVtczogSXRlcmFibGU8VD4sIGlkU2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaWRTZWxlY3RvcihpdGVtKTtcbiAgICAgICAgICAgIGlmICghc2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGlkKTtcbiAgICAgICAgICAgICAgICB5aWVsZCBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZWR1Y2U8VCwgVT4oXG4gICAgICAgIGl0ZW1zOiBJdGVyYWJsZTxUPixcbiAgICAgICAgcmVkdWNlcjogKGFjY3VtdWxhdG9yOiBVLCBpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBVLFxuICAgICAgICBpbml0aWFsVmFsdWU6IFVcbiAgICApOiBVIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yLmZyb20oaXRlbXMpLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiByZWR1Y2VyKGFjYywgaXRlbSwgaW5kZXgrKyksIGluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqYmF0Y2g8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBiYXRjaFNpemU6IG51bWJlcik6IEl0ZXJhYmxlPEl0ZXJhYmxlPFQ+PiB7XG4gICAgICAgIGNvbnN0IGl0ZXJhdG9yID0gSXRlcmF0b3IuZnJvbShpdGVtcyk7XG4gICAgICAgIGNvbnN0IHNhZmVCYXRjaFNpemUgPSBiYXRjaFNpemUgPiAwID8gYmF0Y2hTaXplIDogMTtcbiAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICBjb25zdCBiYXRjaDogVFtdID0gW107XG4gICAgICAgICAgICB3aGlsZSAoYmF0Y2gubGVuZ3RoIDwgc2FmZUJhdGNoU2l6ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYmF0Y2gucHVzaChjdXJyZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYmF0Y2gubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGJhdGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVPLFVBQVVFLFlBQVlBLENBQUlDLEtBQW1CLEVBQXVCO0VBQ3ZFLEtBQUssSUFBSUMsQ0FBQyxHQUFHRCxLQUFLLENBQUNFLE1BQU0sR0FBRyxDQUFDLEVBQUVELENBQUMsSUFBSSxDQUFDLEVBQUVBLENBQUMsRUFBRSxFQUFFO0lBQ3hDO0lBQ0EsTUFBTUQsS0FBSyxDQUFDQyxDQUFDLENBQUU7RUFDbkI7QUFDSjtBQUVPLFNBQVNFLGVBQWVBLENBQUlDLFNBQWtDLEVBQTRCO0VBQzdGLE9BQU9DLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzFDO0FBRU8sU0FBU0csUUFBUUEsQ0FBSUMsS0FBa0IsRUFBRUMsU0FBK0IsRUFBaUI7RUFDNUYsSUFBSUMsTUFBcUI7RUFDekIsS0FBSyxNQUFNQyxJQUFJLElBQUlILEtBQUssRUFBRTtJQUN0QixJQUFJQyxTQUFTLENBQUNFLElBQUksQ0FBQyxFQUFFO01BQ2pCRCxNQUFNLEdBQUdDLElBQUk7SUFDakI7RUFDSjtFQUNBLE9BQU9ELE1BQU07QUFDakI7QUFFTyxVQUFVRSxNQUFNQSxDQUFJLEdBQUdDLFNBQTZCLEVBQXVCO0VBQzlFLEtBQUssTUFBTUMsWUFBWSxJQUFJRCxTQUFTLEVBQUU7SUFDbEMsT0FBT0MsWUFBWTtFQUN2QjtBQUNKO0FBRU8sVUFBVUMsYUFBYUEsQ0FBMENDLEdBQXdCLEVBQWdCO0VBQzVHLEtBQUssTUFBTUMsR0FBRyxJQUFJRCxHQUFHLEVBQUU7SUFDbkIsSUFBSUUsTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDTCxHQUFHLEVBQUVDLEdBQUcsQ0FBQyxFQUFFO01BQ2hELE1BQU1ELEdBQUcsQ0FBQ0MsR0FBRyxDQUFDO0lBQ2xCO0VBQ0o7QUFDSjtBQUtPLFVBQVVLLFdBQVdBLENBQXNDTixHQUE2QixFQUFnQjtFQUMzRyxLQUFLLE1BQU1DLEdBQUcsSUFBSUQsR0FBRyxFQUFFO0lBQ25CLElBQUlFLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0wsR0FBRyxFQUFFQyxHQUFHLENBQUMsRUFBRTtNQUNoRCxNQUFNQSxHQUFHO0lBQ2I7RUFDSjtBQUNKO0FBS08sVUFBVU0sY0FBY0EsQ0FBS1AsR0FBb0MsRUFBMEI7RUFDOUYsS0FBSyxNQUFNQyxHQUFHLElBQUlELEdBQUcsRUFBRTtJQUNuQixJQUFJRSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNMLEdBQUcsRUFBRUMsR0FBRyxDQUFDLEVBQUU7TUFDaEQ7TUFDQSxNQUFNLENBQUNBLEdBQUcsRUFBRUQsR0FBRyxDQUFDQyxHQUFHLENBQUMsQ0FBRTtJQUMxQjtFQUNKO0FBQ0o7QUFFTyxTQUFTTyxLQUFLQSxDQUFJaEIsS0FBa0IsRUFBVTtFQUNqRCxJQUFJRSxNQUFNLEdBQUcsQ0FBQztFQUNkLEtBQUssTUFBTWUsS0FBSyxJQUFJakIsS0FBSyxFQUFFO0lBQ3ZCRSxNQUFNLEVBQUU7RUFDWjtFQUNBLE9BQU9BLE1BQU07QUFDakI7QUFFQSxNQUFNZ0Isa0JBQWtCLEdBQUdDLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDLG9CQUFvQixDQUFDO0FBQzNELE1BQU1DLGFBQWEsR0FBR0YsTUFBTSxDQUFDQyxHQUFHLENBQUMsZUFBZSxDQUFDO0FBRTFDLE1BQU1FLFNBQVMsQ0FBQztFQUluQixPQUFjQyxPQUFPQSxDQUFJQyxRQUFxQixFQUFXO0lBQ3JELEtBQUssTUFBTVAsS0FBSyxJQUFJTyxRQUFRLEVBQUU7TUFDMUIsT0FBTyxLQUFLO0lBQ2hCO0lBQ0EsT0FBTyxJQUFJO0VBQ2Y7RUFFQSxPQUFjQyxPQUFPQSxDQUFVRCxRQUFxQixFQUFFRSxTQUE0QixFQUFrQjtJQUNoRyxNQUFNeEIsTUFBTSxHQUFHLElBQUl5QixHQUFHLENBQVksQ0FBQztJQUNuQyxLQUFLLE1BQU14QixJQUFJLElBQUlxQixRQUFRLEVBQUU7TUFDekIsTUFBTWYsR0FBRyxHQUFHaUIsU0FBUyxDQUFDdkIsSUFBSSxDQUFDO01BQzNCLE1BQU15QixPQUFPLEdBQUcxQixNQUFNLENBQUMyQixHQUFHLENBQUNwQixHQUFHLENBQUM7TUFDL0IsSUFBSW1CLE9BQU8sSUFBSUUsU0FBUyxFQUFFO1FBQ3RCNUIsTUFBTSxDQUFDNkIsR0FBRyxDQUFDdEIsR0FBRyxFQUFFLENBQUNOLElBQUksQ0FBQyxDQUFDO01BQzNCLENBQUMsTUFBTTtRQUNIeUIsT0FBTyxDQUFDSSxJQUFJLENBQUM3QixJQUFJLENBQUM7TUFDdEI7SUFDSjtJQUNBLE9BQU9ELE1BQU07RUFDakI7RUFFQSxPQUFjK0IsTUFBTUEsQ0FBSWpDLEtBQWtCLEVBQUVrQyxRQUFzQyxFQUFPO0lBQ3JGLE1BQU1oQyxNQUFNLEdBQUcsQ0FBQyxHQUFHRixLQUFLLENBQUM7SUFDekJFLE1BQU0sQ0FBQ2lDLElBQUksQ0FBQyxDQUFDQyxLQUFLLEVBQUVDLEtBQUssS0FBSztNQUMxQixNQUFNQyxTQUFTLEdBQUdKLFFBQVEsQ0FBQ0UsS0FBSyxDQUFDO01BQ2pDLE1BQU1HLFVBQVUsR0FBR0wsUUFBUSxDQUFDRyxLQUFLLENBQUM7TUFDbEMsSUFBSUMsU0FBUyxLQUFLQyxVQUFVLEVBQUU7UUFDMUIsT0FBTyxDQUFDO01BQ1osQ0FBQyxNQUFNLElBQUlELFNBQVMsR0FBR0MsVUFBVSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxDQUFDO01BQ2IsQ0FBQyxNQUFNO1FBQ0gsT0FBTyxDQUFDO01BQ1o7SUFDSixDQUFDLENBQUM7SUFDRixPQUFPckMsTUFBTTtFQUNqQjtFQUlBLE9BQWNzQyxJQUFJQSxDQUFJeEMsS0FBaUMsRUFBaUI7SUFDcEUsSUFBSXlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMUMsS0FBSyxDQUFDLEVBQUU7TUFDdEIsT0FBT0EsS0FBSyxDQUFDQSxLQUFLLENBQUNOLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEM7SUFDQSxJQUFJaUQsUUFBdUI7SUFDM0IsS0FBSyxNQUFNeEMsSUFBSSxJQUFJSCxLQUFLLEVBQUU7TUFDdEIyQyxRQUFRLEdBQUd4QyxJQUFJO0lBQ25CO0lBQ0EsT0FBT3dDLFFBQVE7RUFDbkI7RUFLQSxPQUFjQyxLQUFLQSxDQUFJNUMsS0FBaUMsRUFBaUI7SUFDckUsSUFBSXlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMUMsS0FBSyxDQUFDLEVBQUU7TUFDdEIsT0FBT0EsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuQjtJQUNBLElBQUk2QyxTQUF3QjtJQUM1QixLQUFLLE1BQU0xQyxJQUFJLElBQUlILEtBQUssRUFBRTtNQUN0QjZDLFNBQVMsR0FBRzFDLElBQUk7TUFDaEI7SUFDSjtJQUNBLE9BQU8wQyxTQUFTO0VBQ3BCO0VBRUEsT0FBY0MsTUFBTUEsQ0FBSTlDLEtBQWlDLEVBQUUrQyxtQkFBNEIsRUFBSztJQUN4RixJQUFJTixLQUFLLENBQUNDLE9BQU8sQ0FBQzFDLEtBQUssQ0FBQyxFQUFFO01BQUEsSUFBQWdELE9BQUE7TUFDdEIsSUFBSWhELEtBQUssQ0FBQ04sTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNwQixNQUFNLElBQUl1RCxLQUFLLENBQ1hGLG1CQUFtQixhQUFuQkEsbUJBQW1CLGNBQW5CQSxtQkFBbUIsR0FBSSx5REFBeUQvQyxLQUFLLENBQUNOLE1BQU0sRUFDaEcsQ0FBQztNQUNMO01BQ0EsUUFBQXNELE9BQUEsR0FBT2hELEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBQWdELE9BQUEsY0FBQUEsT0FBQSxHQUFJLElBQUFFLG1CQUFNLEVBQUMsQ0FBQztJQUMvQixDQUFDLE1BQU07TUFDSCxJQUFJQyxhQUE0QyxHQUFHakMsa0JBQWtCO01BQ3JFLEtBQUssTUFBTWYsSUFBSSxJQUFJSCxLQUFLLEVBQUU7UUFDdEIsSUFBSW1ELGFBQWEsS0FBS2pDLGtCQUFrQixFQUFFO1VBQ3RDLE1BQU0sSUFBSStCLEtBQUssQ0FDWEYsbUJBQW1CLGFBQW5CQSxtQkFBbUIsY0FBbkJBLG1CQUFtQixHQUFJLGtFQUMzQixDQUFDO1FBQ0w7UUFDQUksYUFBYSxHQUFHaEQsSUFBSTtNQUN4QjtNQUNBLElBQUlnRCxhQUFhLEtBQUtqQyxrQkFBa0IsRUFBRTtRQUN0QyxNQUFNLElBQUkrQixLQUFLLENBQUNGLG1CQUFtQixhQUFuQkEsbUJBQW1CLGNBQW5CQSxtQkFBbUIsR0FBSSx5REFBeUQsQ0FBQztNQUNyRztNQUNBLE9BQU9JLGFBQWE7SUFDeEI7RUFDSjtFQUVBLFFBQWVwQyxjQUFjQSxDQUFJZixLQUF1QyxFQUF5QjtJQUM3RixJQUFJb0QsS0FBSyxHQUFHLENBQUM7SUFDYixLQUFLLE1BQU1qRCxJQUFJLElBQUlILEtBQUssRUFBRTtNQUN0QixNQUFNLENBQUNvRCxLQUFLLEVBQUVqRCxJQUFJLENBQUM7TUFDbkJpRCxLQUFLLEVBQUU7SUFDWDtFQUNKO0VBRUEsUUFBZUMsUUFBUUEsQ0FBSXJELEtBQWtCLEVBQUVzRCxTQUFpQixFQUFlO0lBQzNFLElBQUlBLFNBQVMsS0FBSyxDQUFDLEVBQUU7TUFDakIsT0FBT3RELEtBQUs7TUFDWjtJQUNKO0lBQ0EsTUFBTXVELFNBQStDLEdBQUcsSUFBSWQsS0FBSyxDQUFDYSxTQUFTLENBQUMsQ0FBQ0UsSUFBSSxDQUFDdEMsa0JBQWtCLENBQUM7SUFDckcsSUFBSXVDLFVBQXlDLEdBQUd2QyxrQkFBa0I7SUFDbEUsSUFBSXdDLFlBQVksR0FBRyxDQUFDO0lBQ3BCLEtBQUssTUFBTXZELElBQUksSUFBSUgsS0FBSyxFQUFFO01BQ3RCO01BQ0F5RCxVQUFVLEdBQUdGLFNBQVMsQ0FBQ0csWUFBWSxDQUFDO01BQ3BDSCxTQUFTLENBQUNHLFlBQVksQ0FBQyxHQUFHdkQsSUFBSTtNQUM5QnVELFlBQVksR0FBRyxDQUFDQSxZQUFZLEdBQUcsQ0FBQyxJQUFJSixTQUFTO01BQzdDLElBQUlHLFVBQVUsSUFBSXZDLGtCQUFrQixFQUFFO1FBQ2xDLE1BQU11QyxVQUFVO01BQ3BCO0lBQ0o7RUFDSjtFQUVBLE9BQWNFLEtBQUtBLENBQUkzRCxLQUF1QyxFQUFFNEQsV0FBMkIsRUFBSztJQUM1RixJQUFJQyxRQUFrQyxHQUFHeEMsYUFBYTtJQUN0RCxLQUFLLE1BQU1sQixJQUFJLElBQUlILEtBQUssRUFBRTtNQUN0QixJQUFJNkQsUUFBUSxLQUFLeEMsYUFBYSxFQUFFO1FBQzVCd0MsUUFBUSxHQUFHMUQsSUFBSTtNQUNuQixDQUFDLE1BQU0sSUFBSXlELFdBQVcsQ0FBQ3pELElBQUksRUFBRTBELFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQzNDQSxRQUFRLEdBQUcxRCxJQUFJO01BQ25CO0lBQ0o7SUFDQSxJQUFJMEQsUUFBUSxLQUFLeEMsYUFBYSxFQUFFO01BQzVCLE1BQU0sSUFBSXlDLDRCQUFvQixDQUFDLE9BQU8sRUFBRSxnQ0FBZ0MsQ0FBQztJQUM3RTtJQUNBLE9BQU9ELFFBQVE7RUFDbkI7RUFFQSxPQUFjRSxnQkFBZ0JBLENBQzFCL0QsS0FBdUMsRUFDdkM0RCxXQUEyQixFQUNkO0lBQ2IsSUFBSUMsUUFBa0MsR0FBR3hDLGFBQWE7SUFDdEQsS0FBSyxNQUFNbEIsSUFBSSxJQUFJSCxLQUFLLEVBQUU7TUFDdEIsSUFBSTZELFFBQVEsS0FBS3hDLGFBQWEsRUFBRTtRQUM1QndDLFFBQVEsR0FBRzFELElBQUk7TUFDbkIsQ0FBQyxNQUFNLElBQUl5RCxXQUFXLENBQUN6RCxJQUFJLEVBQUUwRCxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUMzQ0EsUUFBUSxHQUFHMUQsSUFBSTtNQUNuQjtJQUNKO0lBQ0EsSUFBSTBELFFBQVEsS0FBS3hDLGFBQWEsRUFBRTtNQUM1QixPQUFPUyxTQUFTO0lBQ3BCO0lBQ0EsT0FBTytCLFFBQVE7RUFDbkI7RUFJQSxRQUFlRyxLQUFLQSxDQUFDQyxjQUFzQixFQUFFQyxXQUFvQixFQUFvQjtJQUNqRixNQUFNQyxLQUFLLEdBQUdELFdBQVcsS0FBS3BDLFNBQVMsR0FBRyxDQUFDLEdBQUdtQyxjQUFjO0lBQzVELE1BQU1HLFNBQVMsR0FBR0YsV0FBVyxLQUFLcEMsU0FBUyxHQUFHbUMsY0FBYyxHQUFHQyxXQUFXO0lBQzFFLElBQUlFLFNBQVMsR0FBRyxDQUFDLEVBQUU7TUFDZixNQUFNLElBQUlOLDRCQUFvQixDQUFDLFdBQVcsRUFBRSx5Q0FBeUMsQ0FBQztJQUMxRjtJQUNBLEtBQUssSUFBSXJFLENBQUMsR0FBRzBFLEtBQUssRUFBRTFFLENBQUMsR0FBRzBFLEtBQUssR0FBR0MsU0FBUyxFQUFFM0UsQ0FBQyxFQUFFLEVBQUU7TUFDNUMsTUFBTUEsQ0FBQztJQUNYO0VBQ0o7O0VBRUE7QUFDSjtBQUNBO0VBQ0ksT0FBYzRFLFdBQVdBLENBQVNyRSxLQUFXLEVBQUVHLElBQVEsRUFBa0I7SUFDckUsT0FBTyxJQUFJLENBQUNtRSxhQUFhLENBQUN0RSxLQUFLLEVBQUUsTUFBTUcsSUFBSSxDQUFDO0VBQ2hEOztFQUVBO0FBQ0o7QUFDQTtFQUNJLE9BQWNtRSxhQUFhQSxDQUFTdEUsS0FBVyxFQUFFRyxJQUF5QyxFQUFrQjtJQUN4RyxPQUFPSCxLQUFLLENBQUN1RSxPQUFPLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFcEIsS0FBSyxLQUFNQSxLQUFLLEtBQUssQ0FBQyxHQUFHLENBQUNvQixDQUFDLENBQUMsR0FBRyxDQUFDckUsSUFBSSxDQUFDcUUsQ0FBQyxFQUFFcEIsS0FBSyxDQUFDLEVBQUVvQixDQUFDLENBQUUsQ0FBQztFQUNqRjtFQUdBLFFBQWVDLEdBQUdBLENBQUMsR0FBR3BFLFNBQW1DLEVBQXVCO0lBQzVFLE1BQU1xRSxTQUEwRCxHQUFHckUsU0FBUyxDQUFDc0UsR0FBRyxDQUFDQyxFQUFFLElBQUlDLFFBQVEsQ0FBQy9FLElBQUksQ0FBQzhFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pHLElBQUlFLGtCQUFrQixHQUFHLElBQUk7SUFDN0IsT0FBT0Esa0JBQWtCLEVBQUU7TUFDdkIsTUFBTUMsV0FBVyxHQUFHLEVBQUU7TUFDdEJELGtCQUFrQixHQUFHLEtBQUs7TUFDMUIsS0FBSyxNQUFNLENBQUNyRixDQUFDLEVBQUV1RixRQUFRLENBQUMsSUFBSSxJQUFJLENBQUNqRSxjQUFjLENBQUMyRCxTQUFTLENBQUMsRUFBRTtRQUN4RCxJQUFJTSxRQUFRLEtBQUszRCxhQUFhLEVBQUU7VUFDNUIwRCxXQUFXLENBQUMvQyxJQUFJLENBQUNGLFNBQVMsQ0FBQztRQUMvQixDQUFDLE1BQU07VUFDSCxNQUFNbUQsV0FBVyxHQUFHRCxRQUFRLENBQUNFLElBQUksQ0FBQyxDQUFDO1VBQ25DLElBQUlELFdBQVcsQ0FBQ0UsSUFBSSxFQUFFO1lBQ2xCSixXQUFXLENBQUMvQyxJQUFJLENBQUNGLFNBQVMsQ0FBQztZQUMzQjRDLFNBQVMsQ0FBQ2pGLENBQUMsQ0FBQyxHQUFHNEIsYUFBYTtVQUNoQyxDQUFDLE1BQU07WUFDSDBELFdBQVcsQ0FBQy9DLElBQUksQ0FBQ2lELFdBQVcsQ0FBQ0csS0FBSyxDQUFDO1lBQ25DTixrQkFBa0IsR0FBRyxJQUFJO1VBQzdCO1FBQ0o7TUFDSjtNQUNBLElBQUlBLGtCQUFrQixFQUFFO1FBQ3BCLE1BQU1DLFdBQVc7TUFDckI7SUFDSjtFQUNKO0VBRUEsUUFBZU0sVUFBVUEsQ0FBSXJGLEtBQWtCLEVBQUVzRixVQUErQixFQUFlO0lBQzNGLE1BQU12RCxHQUFHLEdBQUcsSUFBSXdELEdBQUcsQ0FBUyxDQUFDO0lBQzdCLEtBQUssTUFBTXBGLElBQUksSUFBSUgsS0FBSyxFQUFFO01BQ3RCLE1BQU13RixFQUFFLEdBQUdGLFVBQVUsQ0FBQ25GLElBQUksQ0FBQztNQUMzQixJQUFJLENBQUM0QixHQUFHLENBQUMwRCxHQUFHLENBQUNELEVBQUUsQ0FBQyxFQUFFO1FBQ2R6RCxHQUFHLENBQUMyRCxHQUFHLENBQUNGLEVBQUUsQ0FBQztRQUNYLE1BQU1yRixJQUFJO01BQ2Q7SUFDSjtFQUNKO0VBRUEsT0FBY3dGLE1BQU1BLENBQ2hCM0YsS0FBa0IsRUFDbEI0RixPQUFzRCxFQUN0REMsWUFBZSxFQUNkO0lBQ0QsSUFBSXpDLEtBQUssR0FBRyxDQUFDO0lBQ2IsT0FBT3lCLFFBQVEsQ0FBQy9FLElBQUksQ0FBQ0UsS0FBSyxDQUFDLENBQUMyRixNQUFNLENBQUMsQ0FBQ0csR0FBRyxFQUFFM0YsSUFBSSxLQUFLeUYsT0FBTyxDQUFDRSxHQUFHLEVBQUUzRixJQUFJLEVBQUVpRCxLQUFLLEVBQUUsQ0FBQyxFQUFFeUMsWUFBWSxDQUFDO0VBQ2hHO0VBRUEsUUFBZUUsS0FBS0EsQ0FBSS9GLEtBQWtCLEVBQUVnRyxTQUFpQixFQUF5QjtJQUNsRixNQUFNaEIsUUFBUSxHQUFHSCxRQUFRLENBQUMvRSxJQUFJLENBQUNFLEtBQUssQ0FBQztJQUNyQyxNQUFNaUcsYUFBYSxHQUFHRCxTQUFTLEdBQUcsQ0FBQyxHQUFHQSxTQUFTLEdBQUcsQ0FBQztJQUNuRCxJQUFJYixJQUFJLEdBQUcsS0FBSztJQUNoQixPQUFPLENBQUNBLElBQUksRUFBRTtNQUNWLE1BQU1ZLEtBQVUsR0FBRyxFQUFFO01BQ3JCLE9BQU9BLEtBQUssQ0FBQ3JHLE1BQU0sR0FBR3VHLGFBQWEsRUFBRTtRQUNqQyxNQUFNQyxPQUFPLEdBQUdsQixRQUFRLENBQUNFLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUlnQixPQUFPLENBQUNmLElBQUksRUFBRTtVQUNkQSxJQUFJLEdBQUcsSUFBSTtVQUNYO1FBQ0osQ0FBQyxNQUFNO1VBQ0hZLEtBQUssQ0FBQy9ELElBQUksQ0FBQ2tFLE9BQU8sQ0FBQ2QsS0FBSyxDQUFDO1FBQzdCO01BQ0o7TUFDQSxJQUFJVyxLQUFLLENBQUNyRyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2xCLE1BQU1xRyxLQUFLO01BQ2Y7SUFDSjtFQUNKO0FBQ0o7QUFBQ0ksT0FBQSxDQUFBN0UsU0FBQSxHQUFBQSxTQUFBO0FBeFBZQSxTQUFTLENBQ0pOLEtBQUssR0FBR0EsS0FBSztBQURsQk0sU0FBUyxDQUVKbEIsTUFBTSxHQUFHQSxNQUFNIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IterableUtils.js","names":["_TypingUtils","require","_Errors","reverseArray","array","i","length","toAsyncIterator","generator","AsyncIterator","from","findLast","items","condition","result","item","concat","iterables","iterableItem","iterateValues","obj","key","Object","prototype","hasOwnProperty","call","iterateKeys","iterateEntries","count","_item","EmptySingleElement","Symbol","for","NoValueMarker","IterUtils","isEmpty","iterable","groupBy","selectKey","Map","keyList","get","undefined","set","push","sortBy","selector","sort","aItem","bItem","leftValue","rightValue","last","Array","isArray","lastItem","first","firstItem","single","singleAssertMessage","_items$","Error","reject","singleElement","index","skipLast","skipCount","prevItems","fill","resultItem","currentIndex","minBy","compareFunc","minValue","InvalidArgumentError","minByOrUndefined","range","inStartOrCount","inItemCount","start","itemCount","intersperse","intersperseFn","flatMap","x","zip","iterators","map","it","Iterator","hasUndoneIterators","resultEntry","iterator","resultValue","next","done","value","distinctBy","idSelector","Set","id","has","add","reduce","reducer","initialValue","acc","batch","batchSize","safeBatchSize","current","exports"],"sources":["../../../Common/IterableUtils.ts"],"sourcesContent":["import { MinLengthArray, reject } from \"./TypingUtils\";\nimport { CompareFunc } from \"./Comparers\";\nimport { InvalidArgumentError } from \"./Errors\";\n\nexport function* reverseArray<T>(array: readonly T[]): IterableIterator<T> {\n for (let i = array.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n yield array[i]!;\n }\n}\n\nexport function toAsyncIterator<T>(generator: () => AsyncGenerator<T>): AsyncIterableIterator<T> {\n return AsyncIterator.from(generator());\n}\n\nexport function findLast<T>(items: Iterable<T>, condition: (item: T) => boolean): T | undefined {\n let result: T | undefined;\n for (const item of items) {\n if (condition(item)) {\n result = item;\n }\n }\n return result;\n}\n\nexport function* concat<T>(...iterables: Array<Iterable<T>>): IterableIterator<T> {\n for (const iterableItem of iterables) {\n yield* iterableItem;\n }\n}\n\nexport function* iterateValues<TK extends string | symbol | number, TV>(obj: { [key in TK]: TV }): Iterable<TV> {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n yield obj[key];\n }\n }\n}\n\nexport function iterateKeys<TO>(obj: Readonly<TO>): Iterable<Extract<keyof TO, string>>;\nexport function iterateKeys<TV>(obj: Readonly<{ [key: string]: TV }>): Iterable<string>;\nexport function iterateKeys(obj: Readonly<{}>): Iterable<string>;\nexport function* iterateKeys<TK extends string | symbol | number>(obj: { [key in TK]: unknown }): Iterable<TK> {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n yield key;\n }\n }\n}\n\nexport function iterateEntries<TO>(obj: Readonly<TO>): Iterable<[Extract<keyof TO, string>, TO[keyof TO]]>;\nexport function iterateEntries<TV>(obj: Readonly<{ [key: string]: TV }>): Iterable<[string, TV]>;\nexport function iterateEntries(obj: Readonly<{}>): Iterable<[string, unknown]>;\nexport function* iterateEntries<TV>(obj: Readonly<{ [key: string]: TV }>): Iterable<[string, TV]> {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n yield [key, obj[key]!];\n }\n }\n}\n\nexport function count<T>(items: Iterable<T>): number {\n let result = 0;\n for (const _item of items) {\n result++;\n }\n return result;\n}\n\nconst EmptySingleElement = Symbol.for(\"EmptySingleElement\");\nconst NoValueMarker = Symbol.for(\"NoValueMarker\");\n\nexport class IterUtils {\n public static count = count;\n public static concat = concat;\n\n public static isEmpty<T>(iterable: Iterable<T>): boolean {\n for (const _item of iterable) {\n return false;\n }\n return true;\n }\n\n public static groupBy<T, TKey>(iterable: Iterable<T>, selectKey: (item: T) => TKey): Map<TKey, T[]> {\n const result = new Map<TKey, T[]>();\n for (const item of iterable) {\n const key = selectKey(item);\n const keyList = result.get(key);\n if (keyList == undefined) {\n result.set(key, [item]);\n } else {\n keyList.push(item);\n }\n }\n return result;\n }\n\n public static sortBy<T>(items: Iterable<T>, selector: (item: T) => string | number): T[] {\n const result = [...items];\n result.sort((aItem, bItem) => {\n const leftValue = selector(aItem);\n const rightValue = selector(bItem);\n if (leftValue === rightValue) {\n return 0;\n } else if (leftValue < rightValue) {\n return -1;\n } else {\n return 1;\n }\n });\n return result;\n }\n\n public static last<T>(items: MinLengthArray<T, 1>): T;\n public static last<T>(items: Iterable<T> | readonly T[]): undefined | T;\n public static last<T>(items: Iterable<T> | readonly T[]): undefined | T {\n if (Array.isArray(items)) {\n return items[items.length - 1];\n }\n let lastItem: T | undefined;\n for (const item of items) {\n lastItem = item;\n }\n return lastItem;\n }\n\n public static first<T>(items: [T, ...unknown[]]): T;\n public static first<T>(items: MinLengthArray<T, 1>): T;\n public static first<T>(items: Iterable<T> | readonly T[]): undefined | T;\n public static first<T>(items: Iterable<T> | readonly T[]): undefined | T {\n if (Array.isArray(items)) {\n return items[0];\n }\n let firstItem: T | undefined;\n for (const item of items) {\n firstItem = item;\n break;\n }\n return firstItem;\n }\n\n public static single<T>(items: readonly T[] | Iterable<T>, singleAssertMessage?: string): T {\n if (Array.isArray(items)) {\n if (items.length !== 1) {\n throw new Error(\n singleAssertMessage ?? `Sequence must contain exactly single element, but got ${items.length}`\n );\n }\n return items[0] ?? reject();\n } else {\n let singleElement: T | typeof EmptySingleElement = EmptySingleElement;\n for (const item of items) {\n if (singleElement !== EmptySingleElement) {\n throw new Error(\n singleAssertMessage ?? `Sequence must contain exactly single element, but got at least 2`\n );\n }\n singleElement = item;\n }\n if (singleElement === EmptySingleElement) {\n throw new Error(singleAssertMessage ?? \"Sequence must contain exactly single element, but got 0\");\n }\n return singleElement;\n }\n }\n\n public static *iterateEntries<T>(items: readonly T[] | T[] | Iterable<T>): Iterable<[number, T]> {\n let index = 0;\n for (const item of items) {\n yield [index, item];\n index++;\n }\n }\n\n public static *skipLast<T>(items: Iterable<T>, skipCount: number): Iterable<T> {\n if (skipCount === 0) {\n yield* items;\n return;\n }\n const prevItems: Array<T | typeof EmptySingleElement> = new Array(skipCount).fill(EmptySingleElement);\n let resultItem: T | typeof EmptySingleElement = EmptySingleElement;\n let currentIndex = 0;\n for (const item of items) {\n // @ts-expect-error В общем, строка выше гарантирует длину массива\n resultItem = prevItems[currentIndex];\n prevItems[currentIndex] = item;\n currentIndex = (currentIndex + 1) % skipCount;\n if (resultItem != EmptySingleElement) {\n yield resultItem;\n }\n }\n }\n\n public static minBy<T>(items: readonly T[] | T[] | Iterable<T>, compareFunc: CompareFunc<T>): T {\n let minValue: typeof NoValueMarker | T = NoValueMarker;\n for (const item of items) {\n if (minValue === NoValueMarker) {\n minValue = item;\n } else if (compareFunc(item, minValue) === -1) {\n minValue = item;\n }\n }\n if (minValue === NoValueMarker) {\n throw new InvalidArgumentError(\"items\", \"Items should be not empty list\");\n }\n return minValue;\n }\n\n public static minByOrUndefined<T>(\n items: readonly T[] | T[] | Iterable<T>,\n compareFunc: CompareFunc<T>\n ): T | undefined {\n let minValue: typeof NoValueMarker | T = NoValueMarker;\n for (const item of items) {\n if (minValue === NoValueMarker) {\n minValue = item;\n } else if (compareFunc(item, minValue) === -1) {\n minValue = item;\n }\n }\n if (minValue === NoValueMarker) {\n return undefined;\n }\n return minValue;\n }\n\n public static range(itemCount: number): Iterable<number>;\n public static range(start: number, itemCount: number): Iterable<number>;\n public static *range(inStartOrCount: number, inItemCount?: number): Iterable<number> {\n const start = inItemCount === undefined ? 0 : inStartOrCount;\n const itemCount = inItemCount === undefined ? inStartOrCount : inItemCount;\n if (itemCount < 0) {\n throw new InvalidArgumentError(\"itemCount\", \"itemCount must be a non negative number\");\n }\n for (let i = start; i < start + itemCount; i++) {\n yield i;\n }\n }\n\n /**\n * @summary Вставляет между элементами массива заданный элемент и возвращает новый массив\n */\n public static intersperse<TI, TS>(items: TI[], item: TS): Array<TI | TS> {\n return this.intersperseFn(items, () => item);\n }\n\n /**\n * @summary Вставляет между элементами массива элемент, создаваемый функцией, и возвращает новый массив\n */\n public static intersperseFn<TI, TS>(items: TI[], item: (nextItem: TI, index: number) => TS): Array<TI | TS> {\n return items.flatMap((x, index) => (index === 0 ? [x] : [item(x, index), x]));\n }\n\n public static zip<T1, T2>(items1: Iterable<T1>, items2: Iterable<T2>): Iterable<[T1 | undefined, T2 | undefined]>;\n public static *zip(...iterables: Array<Iterable<unknown>>): Iterable<unknown[]> {\n const iterators: Array<Iterator<unknown> | typeof NoValueMarker> = iterables.map(it => Iterator.from(it));\n let hasUndoneIterators = true;\n while (hasUndoneIterators) {\n const resultEntry = [];\n hasUndoneIterators = false;\n for (const [i, iterator] of this.iterateEntries(iterators)) {\n if (iterator === NoValueMarker) {\n resultEntry.push(undefined);\n } else {\n const resultValue = iterator.next();\n if (resultValue.done) {\n resultEntry.push(undefined);\n iterators[i] = NoValueMarker;\n } else {\n resultEntry.push(resultValue.value);\n hasUndoneIterators = true;\n }\n }\n }\n if (hasUndoneIterators) {\n yield resultEntry;\n }\n }\n }\n\n public static *distinctBy<T>(items: Iterable<T>, idSelector: (item: T) => string): Iterable<T> {\n const set = new Set<string>();\n for (const item of items) {\n const id = idSelector(item);\n if (!set.has(id)) {\n set.add(id);\n yield item;\n }\n }\n }\n\n public static reduce<T, U>(\n items: Iterable<T>,\n reducer: (accumulator: U, item: T, index: number) => U,\n initialValue: U\n ): U {\n let index = 0;\n return Iterator.from(items).reduce((acc, item) => reducer(acc, item, index++), initialValue);\n }\n\n public static *batch<T>(items: Iterable<T>, batchSize: number): Iterable<Iterable<T>> {\n const iterator = Iterator.from(items);\n const safeBatchSize = batchSize > 0 ? batchSize : 1;\n let done = false;\n while (!done) {\n const batch: T[] = [];\n while (batch.length < safeBatchSize) {\n const current = iterator.next();\n if (current.done) {\n done = true;\n break;\n } else {\n batch.push(current.value);\n }\n }\n if (batch.length > 0) {\n yield batch;\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}