@kontur.candy/tools 2.112.0 → 2.113.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/distr/Common/CandyApiClient/CandyApiClient.js +7 -11
  3. package/distr/Common/CandyApiClient/CandyApiClientContext.js +26 -0
  4. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +60 -0
  5. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +51 -0
  6. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +50 -0
  7. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +90 -0
  8. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +56 -0
  9. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +12 -0
  10. package/distr/Common/CandyApiClient/{Types/Picklist/DigestRequest.js → DigestApiClient/IDigestApiClient.js} +0 -0
  11. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +26 -0
  12. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +25 -0
  13. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +24 -0
  14. package/distr/Common/CandyApiClient/{Types/Picklist/PicklistServerResponses.js → DigestApiClient/Types/DigestRequest.js} +0 -0
  15. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestResponse.js +6 -0
  16. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +7 -42
  17. package/distr/Common/EndPoints.js +4 -2
  18. package/distr/Common/HttpClient/AuthenticationMode.js +25 -15
  19. package/distr/Common/IterableUtils.js +14 -8
  20. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +4 -4
  21. package/distr/Tools/src/LocalServerFrontEndDist/index.js +2899 -332
  22. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  23. package/package.json +1 -1
  24. package/distr/Common/CandyApiClient/Types/Picklist/PicklistQueryFilter.js +0 -24
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ <a name="2.113.0"></a>
2
+ # [2.113.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.112.0...release/tools/v2.113.0) (2021-10-12)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * исправлена ошибка с затиранием части валидаций, при использовании нескольких блоков проверкок на один путь ([b861f47](https://git.skbkontur.ru/ke/candy-utils/commit/b861f47)), see [#6169](https://yt.skbkontur.ru/issue/FS-6169)
8
+
9
+
10
+ ### Features
11
+
12
+ * Атрибут description для условных валидаций сделан обязательным ([ce1a814](https://git.skbkontur.ru/ke/candy-utils/commit/ce1a814))
13
+
1
14
  <a name="2.112.0"></a>
2
15
  # [2.112.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.111.0...release/tools/v2.112.0) (2021-10-04)
3
16
 
@@ -17,6 +17,8 @@ var _DraftPresentationType = require("./Types/Presentations/DraftPresentationTyp
17
17
 
18
18
  var _IsBuffer = require("./IsBuffer");
19
19
 
20
+ var _DigestApiClient = require("./DigestApiClient/DigestApiClient");
21
+
20
22
  const strangeOptions = {
21
23
  src: "changeSet",
22
24
  dataVersion: "0"
@@ -34,6 +36,10 @@ class CandyApiClient {
34
36
  return new CandyApiDraftClient(this.httpClient, draftFullId);
35
37
  }
36
38
 
39
+ createDigestApiClient(draftFullId) {
40
+ return new _DigestApiClient.DigestApiClient(this.httpClient, draftFullId);
41
+ }
42
+
37
43
  async getInfoByInns(draftFullId, inns) {
38
44
  const paths = inns.map(inn => `@focus/${inn}`);
39
45
  const response = await this.httpClient.post(this.getDraftUrl(draftFullId, "get-inner")).withJsonBody(paths).json();
@@ -64,16 +70,6 @@ class CandyApiClient {
64
70
  return result;
65
71
  }
66
72
 
67
- async getDigestMultiple(draftFullId, requests) {
68
- const requestKeys = requests.map(x => x.filter != undefined ? `@digest/${x.gId}/${JSON.stringify(x.filter)}` : `@digest/${x.gId}`);
69
- const response = await this.httpClient.post(this.getDraftUrl(draftFullId, "get-inner")).withJsonBody(requestKeys).json();
70
- return requestKeys.map(x => {
71
- var _response$x;
72
-
73
- return (_response$x = response[x]) === null || _response$x === void 0 ? void 0 : _response$x.value;
74
- }).filter(_TypingUtils.isNotNullOrUndefined);
75
- }
76
-
77
73
  async getAllGfvs(abortSignal) {
78
74
  const body = await this.httpClient.get(`v1/diag/resources`).json();
79
75
  return Object.keys(body.forms);
@@ -365,4 +361,4 @@ class CandyApiDraftClient {
365
361
  }
366
362
 
367
363
  exports.CandyApiDraftClient = CandyApiDraftClient;
368
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJuYW1lcyI6WyJzdHJhbmdlT3B0aW9ucyIsInNyYyIsImRhdGFWZXJzaW9uIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiZm9yRHJhZnQiLCJkcmFmdEZ1bGxJZCIsIkNhbmR5QXBpRHJhZnRDbGllbnQiLCJnZXRJbmZvQnlJbm5zIiwiaW5ucyIsInBhdGhzIiwibWFwIiwiaW5uIiwicmVzcG9uc2UiLCJwb3N0IiwiZ2V0RHJhZnRVcmwiLCJ3aXRoSnNvbkJvZHkiLCJqc29uIiwicmVzdWx0IiwiaW5uU2VydmVyVmFsdWUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImVycm9yIiwiZXJyb3JDb2RlIiwiRm9jdXNTZXJ2ZXJFcnJvckNvZGUiLCJOb0lubkVycm9yIiwiZ2V0RGlnZXN0TXVsdGlwbGUiLCJyZXF1ZXN0cyIsInJlcXVlc3RLZXlzIiwieCIsImZpbHRlciIsImdJZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc05vdE51bGxPclVuZGVmaW5lZCIsImdldEFsbEdmdnMiLCJhYm9ydFNpZ25hbCIsImJvZHkiLCJnZXQiLCJPYmplY3QiLCJrZXlzIiwiZm9ybXMiLCJjcmVhdGVEcmFmdEZyb21Ecml2ZSIsIm5zIiwiZnVmRHJpdmVVcmkiLCJ3aXRoUXVlcnlQYXJhbXMiLCJ3aXRoQWJvcnRTaWduYWwiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2Z2IiwiY3JlYXRlRHJhZnQiLCJmdWZDb250ZW50Iiwid2l0aENvbnRlbnRUeXBlIiwid2l0aEJvZHlGcm9tQnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsIkVycm9yIiwiY2hlY2tBbGl2ZSIsImRyYWZ0UmVsYXRlZFVybCIsImRyYWZ0SWQiLCJnZXRGZWF0dXJlRmxhZ3MiLCJnZXRIcmVmVG9Jbm5lckVkaXRvciIsInVybCIsImdldEhyZWZEb3dubG9hZEZ1ZiIsImdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZyIsImdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYiLCJnZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbiIsIkRyYWZ0UHJlc2VudGF0aW9uVHlwZSIsImlubmVyRnVmIiwiZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvIiwiY2xpZW50SW5mbyIsImdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvIiwiZm9ybXNDbGllbnRJbmZvIiwiZ2V0SHJlZkRvd25sb2FkSW5uZXIiLCJpbm5lciIsImdldEVycm9yTG9nIiwiZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwiLCJlcnJvckxvZyIsImdldFRhc2tCeUlkIiwidGFza0lkIiwidGFza3MiLCJnZXRBbGxUYXNrcyIsInZhbHVlcyIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJhZGRlZCIsImNoYW5nZWQiLCJpZCIsInJlbW92ZWQiLCJjYW5jZWxUYXNrIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJlcnJvcmxvZ0V4cGVydCIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwicHJvcHNEcml2ZU5hbWUiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJwcmV2R2Z2RHJhZnRJZCIsInNlbmRDaGFuZ2VTZXQiLCJkYXRhIiwic2VuZENoYW5nZVNldFN5bmMiLCJwb3N0U3luYyIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJnZXRQYXJ0aWFsSW5uZXIiLCJydWxlcyIsIm1heEluc3RhbmNlQ291bnQiLCJ0b1N0cmluZyIsImdldEV4cGxhbmF0b3J5Tm90ZSIsImV4cGxhbmF0b3J5Tm90ZSIsImdldEF0dGFjaG1lbnRCeUlkIiwiYXR0YWNobWVudElkIiwiZ2V0QWxsQXR0YWNobWVudHMiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiY29udGVudFVyaSIsIm1ldGEiLCJzZXRQcmVzZW50YXRpb24iLCJwcmVzZW50YXRpb25UeXBlIiwiY29udGVudCIsInJlcXVlc3QiLCJwdXQiLCJ3aXRoUmF3Qm9keSIsInBhdGNoUHJlc2VudGF0aW9uIiwicHJlc2VudGF0aW9uQ29udGVudCIsInBhdGNoIiwiZ2V0RmlsZVByb3BlcnRpZXMiLCJkcml2ZVVyaSIsImFjY2VwdENvZGUiLCJzdGF0dXMiLCJwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwibm9ybWFsaXplQnlSdWxlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUVBOztBQWFBOztBQUVBOztBQVFBOztBQUlBLE1BQU1BLGNBQWMsR0FBRztBQUFFQyxFQUFBQSxHQUFHLEVBQUUsV0FBUDtBQUFvQkMsRUFBQUEsV0FBVyxFQUFFO0FBQWpDLENBQXZCOztBQUVPLE1BQU1DLGNBQU4sQ0FBZ0Q7QUFHNUNDLEVBQUFBLFdBQVcsQ0FDZEMsU0FEYyxFQUVkQyxPQUZjLEVBR2RDLFlBSGMsRUFJZEMsY0FKYyxFQUtoQjtBQUFBLFNBUGVDLFVBT2Y7QUFDRSxTQUFLQSxVQUFMLEdBQWtCLElBQUlDLHNCQUFKLENBQWVMLFNBQWYsRUFBMEJDLE9BQTFCLEVBQW1DLHNEQUE2QkUsY0FBN0IsQ0FBbkMsRUFBaUY7QUFDL0ZELE1BQUFBLFlBQVksRUFBRUE7QUFEaUYsS0FBakYsQ0FBbEI7QUFHSDs7QUFFTUksRUFBQUEsUUFBUSxDQUFDQyxXQUFELEVBQWlEO0FBQzVELFdBQU8sSUFBSUMsbUJBQUosQ0FBd0IsS0FBS0osVUFBN0IsRUFBeUNHLFdBQXpDLENBQVA7QUFDSDs7QUFFeUIsUUFBYkUsYUFBYSxDQUFDRixXQUFELEVB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S0FGRSxDQUF2Qjs7QUFHQSxRQUFJNUgsUUFBUSxDQUFDd0gsTUFBVCxLQUFvQixHQUF4QixFQUE2QjtBQUN6QixhQUFPaEgsU0FBUDtBQUNIOztBQUNELFdBQU8sTUFBTVIsUUFBUSxDQUFDSSxJQUFULEVBQWI7QUFDSDs7QUFFNEIsUUFBaEJ5SCxnQkFBZ0IsQ0FBQ2hDLEtBQUQsRUFBK0I7QUFDeEQsVUFBTSxLQUFLdkcsVUFBTCxDQUFnQlcsSUFBaEIsQ0FBcUIsS0FBS0MsV0FBTCxDQUFpQixXQUFqQixDQUFyQixFQUFvREMsWUFBcEQsQ0FBaUUwRixLQUFqRSxDQUFOO0FBQ0g7O0FBRU96QyxFQUFBQSxnQ0FBZ0MsQ0FBQ3lELGdCQUFELEVBQWtEO0FBQ3RGLFdBQU8sS0FBS3ZILFVBQUwsQ0FBZ0IwRCxHQUFoQixDQUFvQixLQUFLYyx1QkFBTCxDQUE2QitDLGdCQUE3QixDQUFwQixDQUFQO0FBQ0g7O0FBRU8zRyxFQUFBQSxXQUFXLENBQUMwQyxlQUFELEVBQWtDO0FBQ2pELFdBQVEsU0FBUSxLQUFLbkQsV0FBTCxDQUFpQnFDLEVBQUcsV0FBVSxLQUFLckMsV0FBTCxDQUFpQm9ELE9BQVEsSUFBR0QsZUFBZ0IsRUFBMUY7QUFDSDs7QUFFT2tCLEVBQUFBLHVCQUF1QixDQUFDK0MsZ0JBQUQsRUFBa0Q7QUFDN0UsV0FBTyxLQUFLM0csV0FBTCxDQUFrQixpQkFBZ0IyRyxnQkFBZ0IsQ0FBQ2QsUUFBakIsRUFBNEIsRUFBOUQsQ0FBUDtBQUNIOztBQXpRNEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCwgcmVqZWN0IH0gZnJvbSBcIi4uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9IdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBIdHRwU3RhdHVzQ29kZSwgSUh0dHBDbGllbnQgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBjcmVhdGVBdXRoZW50aWNhdGlvblByb3ZpZGVyIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvQXV0aGVudGljYXRpb25Nb2RlXCI7XG5cbmltcG9ydCB7IFNlcnZlckRpZ2VzdFJlc3BvbnNlLCBTZXJ2ZXJNdWx0aURpZ2VzdFJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvUGlja2xpc3QvUGlja2xpc3RTZXJ2ZXJSZXNwb25zZXNcIjtcbmltcG9ydCB7IElDYW5keUFwaUNsaWVudCwgSUNhbmR5QXBpRHJhZnRDbGllbnQgfSBmcm9tIFwiLi9JQ2FuZHlBcGlDbGllbnRcIjtcbmltcG9ydCB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4vVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB7IFNlcnZlcklubmVyUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJJbm5lclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBGaWxlUHJvcGVydGllcyB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GaWxlUHJvcGVydGllc1wiO1xuaW1wb3J0IHsgQ3JlYXRlRHJhZnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0NyZWF0ZURyYWZ0L0NyZWF0ZURyYWZ0UmVzcG9uc2VcIjtcbmltcG9ydCB7IENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRXhwbGFuYXRvcnlOb3RlL0NyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlXCI7XG5pbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5pbXBvcnQgeyBTZXJ2ZXJDaGFuZ2VTZXQgfSBmcm9tIFwiLi9UeXBlcy9DaGFuZ2VTZXQvU2VydmVyQ2hhbmdlU2V0XCI7XG5pbXBvcnQgeyBTZXJ2ZXJUYXNrLCBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL1Rhc2tzXCI7XG5pbXBvcnQgeyBEaWdlc3RSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvUGlja2xpc3QvRGlnZXN0UmVxdWVzdFwiO1xuaW1wb3J0IHsgRm9jdXNTZXJ2ZXJFcnJvckNvZGUsIEdldEJ5SW5uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9Gb2N1cy9Gb2N1c1R5cGVzXCI7XG5pbXBvcnQgeyBBdHRhY2hJbmZvIH0gZnJvbSBcIi4vVHlwZXMvQXR0YWNobWVudHMvQXR0YWNtZW50c1wiO1xuaW1wb3J0IHsgRHJhZnRQcmVzZW50YXRpb25UeXBlIH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9EcmFmdFByZXNlbnRhdGlvblR5cGVcIjtcbmltcG9ydCB7IFByZXNlbnRhdGlvbkNvbnRlbnQgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL1ByZXNlbnRhdGlvbkNvbnRlbnRcIjtcbmltcG9ydCB7IENvbnZlcnREcmFmdFJlcXVlc3QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29udmVydERyYWZ0UmVxdWVzdFwiO1xuaW1wb3J0IHsgR2V0QXR0YWNobWVudHNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0F0dGFjaG1lbnRzL0dldEF0dGFjaG1lbnRzUmVzcG9uc2VcIjtcbmltcG9ydCB7IEZvY3VzU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9Gb2N1cy9Gb2N1c1NlcnZlclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBHZXRUYXNrc1NlcnZlclJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvVGFza3MvR2V0VGFza3NTZXJ2ZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgRGlhZ1Jlc291cmNlc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRGlhZ1Jlc291cmNlc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IGlzQnVmZmVyIH0gZnJvbSBcIi4vSXNCdWZmZXJcIjtcbmltcG9ydCB7IEZ1ZkNvbWJpbmVNZXRob2QsIENvbWJpbmVGdWZSZXN1bHQgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29tYmluZUZ1ZlJlc3VsdFwiO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9GZWF0dXJlRmxhZ3MvRmVhdHVyZUZsYWdzUmVzcG9uc2VcIjtcblxuY29uc3Qgc3RyYW5nZU9wdGlvbnMgPSB7IHNyYzogXCJjaGFuZ2VTZXRcIiwgZGF0YVZlcnNpb246IFwiMFwiIH07XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBJSHR0cENsaWVudDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgZmV0Y2hJbXBsOiBGZXRjaCxcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICByZXNvdXJjZVpvbmU6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICAgICAgYXV0aGVudGljYXRpb246IHVuZGVmaW5lZCB8IEF1dGhlbnRpY2F0aW9uTW9kZVxuICAgICkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudChmZXRjaEltcGwsIGJhc2VVcmwsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoYXV0aGVudGljYXRpb24pLCB7XG4gICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvckRyYWZ0KGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCk6IElDYW5keUFwaURyYWZ0Q2xpZW50IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5keUFwaURyYWZ0Q2xpZW50KHRoaXMuaHR0cENsaWVudCwgZHJhZnRGdWxsSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvQnlJbm5zKGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCwgaW5uczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPEdldEJ5SW5uUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcGF0aHMgPSBpbm5zLm1hcChpbm4gPT4gYEBmb2N1cy8ke2lubn1gKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoZHJhZnRGdWxsSWQsIFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPEZvY3VzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogR2V0QnlJbm5SZXNwb25zZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGlubiBvZiBpbm5zKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5TZXJ2ZXJWYWx1ZSA9IHJlc3BvbnNlW2BAZm9jdXMvJHtpbm59YF0/LnZhbHVlO1xuICAgICAgICAgICAgaWYgKGlublNlcnZlclZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbm5dID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogXCJTZXJ2ZXIgZG9lcyBub3QgcmV0dXJuIGlubiBpbmZvXCIsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZTogRm9jdXNTZXJ2ZXJFcnJvckNvZGUuTm9Jbm5FcnJvcixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaW5uXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlublNlcnZlclZhbHVlLnZhbHVlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlOiBpbm5TZXJ2ZXJWYWx1ZS5lcnJvckNvZGUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogaW5uU2VydmVyVmFsdWUuZXJyb3IgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGlnZXN0TXVsdGlwbGUoXG4gICAgICAgIGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCxcbiAgICAgICAgcmVxdWVzdHM6IERpZ2VzdFJlcXVlc3RbXVxuICAgICk6IFByb21pc2U8U2VydmVyRGlnZXN0UmVzcG9uc2VbXT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0S2V5cyA9IHJlcXVlc3RzLm1hcCh4ID0+XG4gICAgICAgICAgICB4LmZpbHRlciAhPSB1bmRlZmluZWQgPyBgQGRpZ2VzdC8ke3guZ0lkfS8ke0pTT04uc3RyaW5naWZ5KHguZmlsdGVyKX1gIDogYEBkaWdlc3QvJHt4LmdJZH1gXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKGRyYWZ0RnVsbElkLCBcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocmVxdWVzdEtleXMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJNdWx0aURpZ2VzdFJlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVxdWVzdEtleXMubWFwKHggPT4gcmVzcG9uc2VbeF0/LnZhbHVlKS5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGB2MS9kaWFnL3Jlc291cmNlc2ApLmpzb248RGlhZ1Jlc291cmNlc1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoYm9keS5mb3Jtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZURyYWZ0RnJvbURyaXZlKFxuICAgICAgICBuczogc3RyaW5nLFxuICAgICAgICBmdWZEcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnQtZnJvbS1kcml2ZWApXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICBuczogbnMsXG4gICAgICAgICAgICAgICAgZnVmRHJpdmVVcmk6IGZ1ZkRyaXZlVXJpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVFbXB0eURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nLCBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnRgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCwgZnVmQ29udGVudDogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQgfCBzdHJpbmcsIGZ1ZkNvbnRlbnQ/OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgaWYgKGdmdiA9PSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgICAgICAud2l0aENvbnRlbnRUeXBlKFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpXG4gICAgICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihmdWZDb250ZW50KVxuICAgICAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdmdiAhPSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZ2Z2OiBnZnYgfSlcbiAgICAgICAgICAgICAgICAud2l0aENvbnRlbnRUeXBlKFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpXG4gICAgICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShbXSkpXG4gICAgICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2Z2ID09IHVuZGVmaW5lZCAmJiBmdWZDb250ZW50ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNyZWF0ZSBkcmFmdDogbm8gZ2Z2IGFuZCBubyBmdWYgc3BlY2lmaWVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnRgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAud2l0aENvbnRlbnRUeXBlKFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpXG4gICAgICAgICAgICAud2l0aEJvZHlGcm9tQnVmZmVyKGZ1ZkNvbnRlbnQpXG4gICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjaGVja0FsaXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGBfc3RhdHVzL3BpbmdgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERyYWZ0VXJsKGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCwgZHJhZnRSZWxhdGVkVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHYxL25zLyR7ZHJhZnRGdWxsSWQubnN9L2RyYWZ0cy8ke2RyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZlYXR1cmVGbGFncygpOiBQcm9taXNlPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KFwidjEvZmVhdHVyZXMvZmxhZ3NcIikuanNvbjxGZWF0dXJlRmxhZ3NSZXNwb25zZT4oKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaURyYWZ0Q2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSUh0dHBDbGllbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUh0dHBDbGllbnQsIGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xuICAgICAgICB0aGlzLmRyYWZ0RnVsbElkID0gZHJhZnRGdWxsSWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0lubmVyRWRpdG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKGBpbm5lci1lZGl0b3IvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZEZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1ZlwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiY29udmVyc2lvblwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyRnVmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5jbGllbnRJbmZvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmZvcm1zQ2xpZW50SW5mbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXJyb3JMb2cpKS5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRUYXNrQnlJZCh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8U2VydmVyVGFzayB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCB0YXNrcyA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAdGFzay8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRUYXNrc1NlcnZlclJlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gdGFza3NbYEB0YXNrLyR7dGFza0lkfWBdPy52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVGFza3MoKTogUHJvbWlzZTxTZXJ2ZXJUYXNrW10+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFza3MpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7XG4gICAgICAgICAgICAgICAgICAgIFtgQHRhc2svJHt0YXNrSWR9YF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRhc2tJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRhc2tJZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IHt9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtgQHRhc2svJHt0YXNrSWR9YF0sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwZXJ0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmVycm9ybG9nRXhwZXJ0KSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9FcnJvckxvZ1BkZihlcnJvckxvZ05hbWU6IHN0cmluZywgcHJvcHNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwicHJlc2VudGF0aW9ucy9lcnJvckxvZy9wcmludFwiKSwge1xuICAgICAgICAgICAgZXJyb3JMb2dOYW1lOiBlcnJvckxvZ05hbWUsXG4gICAgICAgICAgICBwcm9wc0RyaXZlTmFtZTogcHJvcHNOYW1lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYXJEcmFmdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNsZWFyXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29udmVydERyYWZ0RnJvbVByZXZHZnYoeyBwcmV2R2Z2RHJhZnRJZCwgZ2Z2IH06IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNvbnZlcnRcIikpLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICBpZDogcHJldkdmdkRyYWZ0SWQsXG4gICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VTZXQoZGF0YTogU2VydmVyQ2hhbmdlU2V0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbmRDaGFuZ2VTZXRTeW5jKGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0U3luYyhcbiAgICAgICAgICAgIHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSxcbiAgICAgICAgICAgIHN0cmFuZ2VPcHRpb25zLFxuICAgICAgICAgICAgZGF0YVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRSZXF1aXNpdGVzKHJlcXVpc2l0ZUxpc3Q6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocmVxdWlzaXRlTGlzdClcbiAgICAgICAgICAgIC5qc29uPFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5uZXIocGF0aHM6IHVuZGVmaW5lZCB8IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhzKVxuICAgICAgICAgICAgLmpzb248U2VydmVySW5uZXJSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFydGlhbElubmVyKHJ1bGVzOiBbXCIqXCJdIHwgc3RyaW5nW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShydWxlcylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXhwbGFuYXRvcnlOb3RlKSlcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVzdWx0W2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnRJZH1gXT8udmFsdWUgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAYXR0YWNobWVudC8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogYXR0YWNobWVudElkcy5tYXAoaWQgPT4gYEBhdHRhY2htZW50LyR7aWR9YCksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkW2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YF0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudFVyaTogYXR0YWNobWVudC5jb250ZW50VXJpLFxuICAgICAgICAgICAgICAgIGlkOiBhdHRhY2htZW50LmlkLFxuICAgICAgICAgICAgICAgIG1ldGE6IGF0dGFjaG1lbnQubWV0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQsXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvblR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogc3RyaW5nIHwgdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aFJhd0JvZHkoY29udGVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNCdWZmZXIoY29udGVudCkpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aEpzb25Cb2R5KGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBhdGNoUHJlc2VudGF0aW9uKFxuICAgICAgICBwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsXG4gICAgICAgIHByZXNlbnRhdGlvbkNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnRcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpLndpdGhKc29uQm9keShwcmVzZW50YXRpb25Db250ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGB2MS9maWxlcy9nZXQtcHJvcGVydGllcz9kcml2ZVVyaT0ke2RyaXZlVXJpfWApLmFjY2VwdENvZGUoNDAwKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEZpbGVQcm9wZXJ0aWVzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KGB2MS9maWxlcy9wcmVwYXJlLWFuZC1nZXQtcHJvcGVydGllcz9kcml2ZVVyaT0ke2RyaXZlVXJpfSZnZnY9JHtnZnZ9YClcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxGaWxlUHJvcGVydGllcz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0RnVmQnlEcml2ZVVyaShkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFVybChcInNldC1mdWZcIikpLndpdGhRdWVyeVBhcmFtcyh7IGRyaXZlVXJpOiBkcml2ZVVyaSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2RcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZ1ZkRyaXZlVXJpOiBkcml2ZVVyaSwgY29tYmluZU1ldGhvZDogY29tYmluZU1ldGhvZCB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG5vcm1hbGl6ZUJ5UnVsZXMocnVsZXM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwibm9ybWFsaXplXCIpKS53aXRoSnNvbkJvZHkocnVsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcmFmdFVybChgcHJlc2VudGF0aW9ucy8ke3ByZXNlbnRhdGlvblR5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG59XG4iXX0=
364
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJuYW1lcyI6WyJzdHJhbmdlT3B0aW9ucyIsInNyYyIsImRhdGFWZXJzaW9uIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiZm9yRHJhZnQiLCJkcmFmdEZ1bGxJZCIsIkNhbmR5QXBpRHJhZnRDbGllbnQiLCJjcmVhdGVEaWdlc3RBcGlDbGllbnQiLCJEaWdlc3RBcGlDbGllbnQiLCJnZXRJbmZvQnlJbm5zIiwiaW5ucyIsInBhdGhzIiwibWFwIiwiaW5uIiwicmVzcG9uc2UiLCJwb3N0IiwiZ2V0RHJhZnRVcmwiLCJ3aXRoSnNvbkJvZHkiLCJqc29uIiwicmVzdWx0IiwiaW5uU2VydmVyVmFsdWUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImVycm9yIiwiZXJyb3JDb2RlIiwiRm9jdXNTZXJ2ZXJFcnJvckNvZGUiLCJOb0lubkVycm9yIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiYm9keSIsImdldCIsIk9iamVjdCIsImtleXMiLCJmb3JtcyIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwibnMiLCJmdWZEcml2ZVVyaSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhBYm9ydFNpZ25hbCIsImNyZWF0ZUVtcHR5RHJhZnQiLCJnZnYiLCJjcmVhdGVEcmFmdCIsImZ1ZkNvbnRlbnQiLCJ3aXRoQ29udGVudFR5cGUiLCJ3aXRoQm9keUZyb21CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiRXJyb3IiLCJjaGVja0FsaXZlIiwiZHJhZnRSZWxhdGVkVXJsIiwiZHJhZnRJZCIsImdldEZlYXR1cmVGbGFncyIsImdldEhyZWZUb0lubmVyRWRpdG9yIiwidXJsIiwiZ2V0SHJlZkRvd25sb2FkRnVmIiwiZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nIiwiZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZiIsImdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uIiwiRHJhZnRQcmVzZW50YXRpb25UeXBlIiwiaW5uZXJGdWYiLCJnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8iLCJjbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8iLCJmb3Jtc0NsaWVudEluZm8iLCJnZXRIcmVmRG93bmxvYWRJbm5lciIsImlubmVyIiwiZ2V0RXJyb3JMb2ciLCJnZXREcmFmdFByZXNlbnRhdGlvblVybCIsImVycm9yTG9nIiwiZ2V0VGFza0J5SWQiLCJ0YXNrSWQiLCJ0YXNrcyIsImdldEFsbFRhc2tzIiwidmFsdWVzIiwieCIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJhZGRlZCIsImNoYW5nZWQiLCJpZCIsInJlbW92ZWQiLCJjYW5jZWxUYXNrIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJlcnJvcmxvZ0V4cGVydCIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwicHJvcHNEcml2ZU5hbWUiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJwcmV2R2Z2RHJhZnRJZCIsInNlbmRDaGFuZ2VTZXQiLCJkYXRhIiwic2VuZENoYW5nZVNldFN5bmMiLCJwb3N0U3luYyIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJnZXRQYXJ0aWFsSW5uZXIiLCJydWxlcyIsIm1heEluc3RhbmNlQ291bnQiLCJ0b1N0cmluZyIsImdldEV4cGxhbmF0b3J5Tm90ZSIsImV4cGxhbmF0b3J5Tm90ZSIsImdldEF0dGFjaG1lbnRCeUlkIiwiYXR0YWNobWVudElkIiwiZ2V0QWxsQXR0YWNobWVudHMiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiY29udGVudFVyaSIsIm1ldGEiLCJzZXRQcmVzZW50YXRpb24iLCJwcmVzZW50YXRpb25UeXBlIiwiY29udGVudCIsInJlcXVlc3QiLCJwdXQiLCJ3aXRoUmF3Qm9keSIsInBhdGNoUHJlc2VudGF0aW9uIiwicHJlc2VudGF0aW9uQ29udGVudCIsInBhdGNoIiwiZ2V0RmlsZVByb3BlcnRpZXMiLCJkcml2ZVVyaSIsImFjY2VwdENvZGUiLCJzdGF0dXMiLCJwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwibm9ybWFsaXplQnlSdWxlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUVBOztBQVdBOztBQUVBOztBQVFBOztBQUdBOztBQUdBLE1BQU1BLGNBQWMsR0FBRztBQUFFQyxFQUFBQSxHQUFHLEVBQUUsV0FBUDtBQUFvQkMsRUFBQUEsV0FBVyxFQUFFO0FBQWpDLENBQXZCOztBQUVPLE1BQU1DLGNBQU4sQ0FBZ0Q7QUFHNUNDLEVBQUFBLFdBQVcsQ0FDZEMsU0FEYyxFQUVkQyxPQUZjLEVBR2RDLFlBSGMsRUFJZEMsY0FKYyxFQUtoQjtBQUFBLFNBUGVDLFVBT2Y7QUFDRSxTQUFLQSxVQUFMLEdBQWtCLElBQUlDLHNCQUFKLENBQWVMLFNBQWYsRUFBMEJDLE9BQTFCLEVBQW1DLHNEQUE2QkUsY0FBN0IsQ0FBbkMsRUFBaUY7QUFDL0ZELE1BQUFBLFlBQVksRUFBRUE7QUFEaUYsS0FBakYsQ0FBbEI7QUFHSDs7QUFFTUksRUFBQUEsUUFBUSxDQUFDQyxXQUFELEVBQWlEO0FBQzVELFdBQU8sSUFBSUMsbUJBQUosQ0FBd0IsS0FBS0osVUFBN0IsRUFBeUNHLFdBQXpDLENBQVA7QUFDSDs7QUFFTUUsRUFBQUEscUJBQXFCLENBQUNGLFdBQUQsRUFBNkM7QUFDckUsV0FBTyxJQUFJRyxnQ0FBSixDQUFvQixLQUFLTixVQUF6QixFQUFxQ0cs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R0QsZUFBZ0IsRUFBMUY7QUFDSDs7QUFFT2tCLEVBQUFBLHVCQUF1QixDQUFDZ0QsZ0JBQUQsRUFBa0Q7QUFDN0UsV0FBTyxLQUFLbkcsV0FBTCxDQUFrQixpQkFBZ0JtRyxnQkFBZ0IsQ0FBQ2QsUUFBakIsRUFBNEIsRUFBOUQsQ0FBUDtBQUNIOztBQXpRNEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IEZldGNoIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvRmV0Y2hJbXBsZW1lbnRhdGlvbi9GZXRjaFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0h0dHBDbGllbnRcIjtcbmltcG9ydCB7IEh0dHBTdGF0dXNDb2RlLCBJSHR0cENsaWVudCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0lIdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZGUsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9BdXRoZW50aWNhdGlvbk1vZGVcIjtcblxuaW1wb3J0IHsgSUNhbmR5QXBpQ2xpZW50LCBJQ2FuZHlBcGlEcmFmdENsaWVudCB9IGZyb20gXCIuL0lDYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHsgU2VydmVySW5uZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlcklubmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IEZpbGVQcm9wZXJ0aWVzIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0ZpbGVQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgeyBDcmVhdGVEcmFmdFJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQ3JlYXRlRHJhZnQvQ3JlYXRlRHJhZnRSZXNwb25zZVwiO1xuaW1wb3J0IHsgQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9FeHBsYW5hdG9yeU5vdGUvQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2VcIjtcbmltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcbmltcG9ydCB7IFNlcnZlckNoYW5nZVNldCB9IGZyb20gXCIuL1R5cGVzL0NoYW5nZVNldC9TZXJ2ZXJDaGFuZ2VTZXRcIjtcbmltcG9ydCB7IFNlcnZlclRhc2ssIFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvIH0gZnJvbSBcIi4vVHlwZXMvVGFza3MvVGFza3NcIjtcbmltcG9ydCB7IEZvY3VzU2VydmVyRXJyb3JDb2RlLCBHZXRCeUlublJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNUeXBlc1wiO1xuaW1wb3J0IHsgQXR0YWNoSW5mbyB9IGZyb20gXCIuL1R5cGVzL0F0dGFjaG1lbnRzL0F0dGFjbWVudHNcIjtcbmltcG9ydCB7IERyYWZ0UHJlc2VudGF0aW9uVHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvRHJhZnRQcmVzZW50YXRpb25UeXBlXCI7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250ZW50IH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9QcmVzZW50YXRpb25Db250ZW50XCI7XG5pbXBvcnQgeyBDb252ZXJ0RHJhZnRSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbnZlcnREcmFmdFJlcXVlc3RcIjtcbmltcG9ydCB7IEdldEF0dGFjaG1lbnRzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9HZXRBdHRhY2htZW50c1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBGb2N1c1NlcnZlclJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNTZXJ2ZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgR2V0VGFza3NTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL0dldFRhc2tzU2VydmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IERpYWdSZXNvdXJjZXNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0RpYWdSZXNvdXJjZXNSZXNwb25zZVwiO1xuaW1wb3J0IHsgU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBpc0J1ZmZlciB9IGZyb20gXCIuL0lzQnVmZmVyXCI7XG5pbXBvcnQgeyBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi9EaWdlc3RBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBJRGlnZXN0QXBpQ2xpZW50IH0gZnJvbSBcIi4vRGlnZXN0QXBpQ2xpZW50L0lEaWdlc3RBcGlDbGllbnRcIjtcblxuY29uc3Qgc3RyYW5nZU9wdGlvbnMgPSB7IHNyYzogXCJjaGFuZ2VTZXRcIiwgZGF0YVZlcnNpb246IFwiMFwiIH07XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBJSHR0cENsaWVudDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgZmV0Y2hJbXBsOiBGZXRjaCxcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICByZXNvdXJjZVpvbmU6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICAgICAgYXV0aGVudGljYXRpb246IHVuZGVmaW5lZCB8IEF1dGhlbnRpY2F0aW9uTW9kZVxuICAgICkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudChmZXRjaEltcGwsIGJhc2VVcmwsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoYXV0aGVudGljYXRpb24pLCB7XG4gICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvckRyYWZ0KGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCk6IElDYW5keUFwaURyYWZ0Q2xpZW50IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5keUFwaURyYWZ0Q2xpZW50KHRoaXMuaHR0cENsaWVudCwgZHJhZnRGdWxsSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEaWdlc3RBcGlDbGllbnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSURpZ2VzdEFwaUNsaWVudCB7XG4gICAgICAgIHJldHVybiBuZXcgRGlnZXN0QXBpQ2xpZW50KHRoaXMuaHR0cENsaWVudCwgZHJhZnRGdWxsSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvQnlJbm5zKGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCwgaW5uczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPEdldEJ5SW5uUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcGF0aHMgPSBpbm5zLm1hcChpbm4gPT4gYEBmb2N1cy8ke2lubn1gKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoZHJhZnRGdWxsSWQsIFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPEZvY3VzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogR2V0QnlJbm5SZXNwb25zZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGlubiBvZiBpbm5zKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5TZXJ2ZXJWYWx1ZSA9IHJlc3BvbnNlW2BAZm9jdXMvJHtpbm59YF0/LnZhbHVlO1xuICAgICAgICAgICAgaWYgKGlublNlcnZlclZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbm5dID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogXCJTZXJ2ZXIgZG9lcyBub3QgcmV0dXJuIGlubiBpbmZvXCIsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZTogRm9jdXNTZXJ2ZXJFcnJvckNvZGUuTm9Jbm5FcnJvcixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaW5uXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlublNlcnZlclZhbHVlLnZhbHVlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlOiBpbm5TZXJ2ZXJWYWx1ZS5lcnJvckNvZGUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogaW5uU2VydmVyVmFsdWUuZXJyb3IgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsR2Z2cyhhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgdjEvZGlhZy9yZXNvdXJjZXNgKS5qc29uPERpYWdSZXNvdXJjZXNSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGJvZHkuZm9ybXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVEcmFmdEZyb21Ecml2ZShcbiAgICAgICAgbnM6IHN0cmluZyxcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0LWZyb20tZHJpdmVgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgbnM6IG5zLFxuICAgICAgICAgICAgICAgIGZ1ZkRyaXZlVXJpOiBmdWZEcml2ZVVyaSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRW1wdHlEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZywgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQsIGZ1ZkNvbnRlbnQ6IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkIHwgc3RyaW5nLCBmdWZDb250ZW50PzogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIGlmIChnZnYgPT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoZnVmQ29udGVudClcbiAgICAgICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZnYgIT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoQnVmZmVyLmZyb20oW10pKVxuICAgICAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdmdiA9PSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjcmVhdGUgZHJhZnQ6IG5vIGdmdiBhbmQgbm8gZnVmIHNwZWNpZmllZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihmdWZDb250ZW50KVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tBbGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgX3N0YXR1cy9waW5nYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGRyYWZ0UmVsYXRlZFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHtkcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGZWF0dXJlRmxhZ3MoKTogUHJvbWlzZTxGZWF0dXJlRmxhZ3NSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChcInYxL2ZlYXR1cmVzL2ZsYWdzXCIpLmpzb248RmVhdHVyZUZsYWdzUmVzcG9uc2U+KCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2FuZHlBcGlEcmFmdENsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaURyYWZ0Q2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50LCBkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcbiAgICAgICAgdGhpcy5kcmFmdEZ1bGxJZCA9IGRyYWZ0RnVsbElkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Jbm5lckVkaXRvcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybChgaW5uZXItZWRpdG9yL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFVybChcImdldC1mdWZcIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2coKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFVybChcImNvbnZlcnNpb25cIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lckZ1Zik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbihEcmFmdFByZXNlbnRhdGlvblR5cGUuY2xpZW50SW5mbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5mb3Jtc0NsaWVudEluZm8pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRJbm5lcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbihEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmVycm9yTG9nKSkuanNvbjxTZXJ2ZXJFcnJvckxvZz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VGFza0J5SWQodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPFNlcnZlclRhc2sgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIHRhc2tzW2BAdGFzay8ke3Rhc2tJZH1gXT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFRhc2tzKCk6IFByb21pc2U8U2VydmVyVGFza1tdPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRhc2tzKS5tYXAoeCA9PiB4LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5xdWV1ZVRhc2sodGFza0lkOiBzdHJpbmcsIHRhc2tJbmZvOiBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge1xuICAgICAgICAgICAgICAgICAgICBbYEB0YXNrLyR7dGFza0lkfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50YXNrSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0YXNrSWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZW1vdmVkOiBbXSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjYW5jZWxUYXNrKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7fSxcbiAgICAgICAgICAgICAgICByZW1vdmVkOiBbYEB0YXNrLyR7dGFza0lkfWBdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGVydEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5lcnJvcmxvZ0V4cGVydCkpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJFcnJvckxvZz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRXJyb3JMb2dQZGYoZXJyb3JMb2dOYW1lOiBzdHJpbmcsIHByb3BzTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFVybChcInByZXNlbnRhdGlvbnMvZXJyb3JMb2cvcHJpbnRcIiksIHtcbiAgICAgICAgICAgIGVycm9yTG9nTmFtZTogZXJyb3JMb2dOYW1lLFxuICAgICAgICAgICAgcHJvcHNEcml2ZU5hbWU6IHByb3BzTmFtZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsZWFyRHJhZnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJjbGVhclwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvbnZlcnREcmFmdEZyb21QcmV2R2Z2KHsgcHJldkdmdkRyYWZ0SWQsIGdmdiB9OiBDb252ZXJ0RHJhZnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJjb252ZXJ0XCIpKS53aXRoUXVlcnlQYXJhbXMoe1xuICAgICAgICAgICAgaWQ6IHByZXZHZnZEcmFmdElkLFxuICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kQ2hhbmdlU2V0KGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQ2hhbmdlU2V0U3luYyhkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBIdHRwU3RhdHVzQ29kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdFN5bmMoXG4gICAgICAgICAgICB0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lciksXG4gICAgICAgICAgICBzdHJhbmdlT3B0aW9ucyxcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVpc2l0ZUxpc3QpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiB1bmRlZmluZWQgfCByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogW1wiKlwiXSB8IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtcGFydGlhbC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMobWF4SW5zdGFuY2VDb3VudCAhPSB1bmRlZmluZWQgJiYgeyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJJbm5lclJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFeHBsYW5hdG9yeU5vdGUoKTogUHJvbWlzZTxDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmV4cGxhbmF0b3J5Tm90ZSkpXG4gICAgICAgICAgICAuanNvbjxDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudEJ5SWQoYXR0YWNobWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEF0dGFjaEluZm8+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEBhdHRhY2htZW50LyR7YXR0YWNobWVudElkfWBdKVxuICAgICAgICAgICAgLmpzb248R2V0QXR0YWNobWVudHNSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0/LnZhbHVlID8/IHJlamVjdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50cygpOiBQcm9taXNlPEF0dGFjaEluZm9bXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0QXR0YWNobWVudHNSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzdWx0KS5tYXAoeCA9PiB4LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlQXR0YWNobWVudHMoYXR0YWNobWVudElkczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IHt9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IGF0dGFjaG1lbnRJZHMubWFwKGlkID0+IGBAYXR0YWNobWVudC8ke2lkfWApLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMoYXR0YWNobWVudHM6IHJlYWRvbmx5IEF0dGFjaEluZm9bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0ge307XG4gICAgICAgIGZvciAoY29uc3QgYXR0YWNobWVudCBvZiBhdHRhY2htZW50cykge1xuICAgICAgICAgICAgY2hhbmdlZFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50LmlkfWBdID0ge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRVcmk6IGF0dGFjaG1lbnQuY29udGVudFVyaSxcbiAgICAgICAgICAgICAgICBpZDogYXR0YWNobWVudC5pZCxcbiAgICAgICAgICAgICAgICBtZXRhOiBhdHRhY2htZW50Lm1ldGEsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiBjaGFuZ2VkLFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFByZXNlbnRhdGlvbihwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IHN0cmluZyB8IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpO1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQnVmZmVyKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC53aXRoUmF3Qm9keShjb250ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhKc29uQm9keShjb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCByZXF1ZXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwYXRjaFByZXNlbnRhdGlvbihcbiAgICAgICAgcHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLFxuICAgICAgICBwcmVzZW50YXRpb25Db250ZW50OiBQcmVzZW50YXRpb25Db250ZW50XG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wYXRjaCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKHByZXNlbnRhdGlvblR5cGUpKS53aXRoSnNvbkJvZHkocHJlc2VudGF0aW9uQ29udGVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgdjEvZmlsZXMvZ2V0LXByb3BlcnRpZXM/ZHJpdmVVcmk9JHtkcml2ZVVyaX1gKS5hY2NlcHRDb2RlKDQwMCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxGaWxlUHJvcGVydGllcz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvcHJlcGFyZS1hbmQtZ2V0LXByb3BlcnRpZXM/ZHJpdmVVcmk9JHtkcml2ZVVyaX0mZ2Z2PSR7Z2Z2fWApXG4gICAgICAgICAgICAuYWNjZXB0Q29kZSg0MDApO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248RmlsZVByb3BlcnRpZXM+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEZ1ZkJ5RHJpdmVVcmkoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuZ2V0RHJhZnRVcmwoXCJzZXQtZnVmXCIpKS53aXRoUXVlcnlQYXJhbXMoeyBkcml2ZVVyaTogZHJpdmVVcmkgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwidHJhbnNmZXIvY29tYmluZS13aXRoLWZ1ZlwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBmdWZEcml2ZVVyaTogZHJpdmVVcmksIGNvbWJpbmVNZXRob2Q6IGNvbWJpbmVNZXRob2QgfSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxDb21iaW5lRnVmUmVzdWx0PigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcIm5vcm1hbGl6ZVwiKSkud2l0aEpzb25Cb2R5KHJ1bGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvblR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHJhZnRVcmwoZHJhZnRSZWxhdGVkVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJhZnRVcmwoYHByZXNlbnRhdGlvbnMvJHtwcmVzZW50YXRpb25UeXBlLnRvU3RyaW5nKCl9YCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCandyApiClient = useCandyApiClient;
7
+ exports.CandyApiClientProvider = void 0;
8
+
9
+ var React = _interopRequireWildcard(require("react"));
10
+
11
+ var _TypingUtils = require("../TypingUtils");
12
+
13
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
14
+
15
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+
17
+ const CandyApiClientContext = /*#__PURE__*/React.createContext(undefined);
18
+ const CandyApiClientProvider = CandyApiClientContext.Provider;
19
+ exports.CandyApiClientProvider = CandyApiClientProvider;
20
+
21
+ function useCandyApiClient() {
22
+ var _React$useContext;
23
+
24
+ return (_React$useContext = React.useContext(CandyApiClientContext)) !== null && _React$useContext !== void 0 ? _React$useContext : (0, _TypingUtils.reject)("ICandyApiClient must be provided with CandyApiClientProvider");
25
+ }
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudENvbnRleHQudHMiXSwibmFtZXMiOlsiQ2FuZHlBcGlDbGllbnRDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwidW5kZWZpbmVkIiwiQ2FuZHlBcGlDbGllbnRQcm92aWRlciIsIlByb3ZpZGVyIiwidXNlQ2FuZHlBcGlDbGllbnQiLCJ1c2VDb250ZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUVBOzs7Ozs7QUFJQSxNQUFNQSxxQkFBcUIsZ0JBQUdDLEtBQUssQ0FBQ0MsYUFBTixDQUFpREMsU0FBakQsQ0FBOUI7QUFFTyxNQUFNQyxzQkFBc0IsR0FBR0oscUJBQXFCLENBQUNLLFFBQXJEOzs7QUFFQSxTQUFTQyxpQkFBVCxHQUE4QztBQUFBOztBQUNqRCw4QkFDSUwsS0FBSyxDQUFDTSxVQUFOLENBQWlCUCxxQkFBakIsQ0FESixpRUFFSSx5QkFBTyw4REFBUCxDQUZKO0FBSUgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uL1R5cGluZ1V0aWxzXCI7XG5cbmltcG9ydCB7IElDYW5keUFwaUNsaWVudCB9IGZyb20gXCIuL0lDYW5keUFwaUNsaWVudFwiO1xuXG5jb25zdCBDYW5keUFwaUNsaWVudENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PElDYW5keUFwaUNsaWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IENhbmR5QXBpQ2xpZW50UHJvdmlkZXIgPSBDYW5keUFwaUNsaWVudENvbnRleHQuUHJvdmlkZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYW5keUFwaUNsaWVudCgpOiBJQ2FuZHlBcGlDbGllbnQge1xuICAgIHJldHVybiAoXG4gICAgICAgIFJlYWN0LnVzZUNvbnRleHQoQ2FuZHlBcGlDbGllbnRDb250ZXh0KSA/P1xuICAgICAgICByZWplY3QoXCJJQ2FuZHlBcGlDbGllbnQgbXVzdCBiZSBwcm92aWRlZCB3aXRoIENhbmR5QXBpQ2xpZW50UHJvdmlkZXJcIilcbiAgICApO1xufVxuIl19
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withCache = withCache;
7
+ exports.DigestApiClientWithCache = void 0;
8
+
9
+ var _TypingUtils = require("../../../TypingUtils");
10
+
11
+ var _IterableUtils = require("../../../IterableUtils");
12
+
13
+ function withCache(client) {
14
+ return new DigestApiClientWithCache(client);
15
+ }
16
+
17
+ class DigestApiClientWithCache {
18
+ constructor(innerClient) {
19
+ this.innerClient = void 0;
20
+ this.responseCache = new Map();
21
+ this.innerClient = innerClient;
22
+ }
23
+
24
+ async getDigest(request) {
25
+ var _digestResponses$;
26
+
27
+ const digestResponses = await this.getDigests([request]);
28
+ return (_digestResponses$ = digestResponses === null || digestResponses === void 0 ? void 0 : digestResponses[0]) !== null && _digestResponses$ !== void 0 ? _digestResponses$ : (0, _TypingUtils.reject)();
29
+ }
30
+
31
+ async getDigests(requests) {
32
+ const notInCacheRequests = requests.filter(x => !this.responseCache.has(this.getRequestKey(x)));
33
+
34
+ if (notInCacheRequests.length > 0) {
35
+ const notInCacheResponses = await this.innerClient.getDigests(notInCacheRequests);
36
+
37
+ for (const [index, notInCacheResponse] of _IterableUtils.IterUtils.iterateEntries(notInCacheResponses)) {
38
+ var _notInCacheRequests$i;
39
+
40
+ const notInCacheRequest = (_notInCacheRequests$i = notInCacheRequests[index]) !== null && _notInCacheRequests$i !== void 0 ? _notInCacheRequests$i : (0, _TypingUtils.reject)();
41
+ this.responseCache.set(this.getRequestKey(notInCacheRequest), notInCacheResponse);
42
+ }
43
+ }
44
+
45
+ return requests.map(request => {
46
+ var _this$responseCache$g;
47
+
48
+ const requestKey = this.getRequestKey(request);
49
+ return (_this$responseCache$g = this.responseCache.get(requestKey)) !== null && _this$responseCache$g !== void 0 ? _this$responseCache$g : (0, _TypingUtils.reject)();
50
+ });
51
+ }
52
+
53
+ getRequestKey(request) {
54
+ return JSON.stringify(request);
55
+ }
56
+
57
+ }
58
+
59
+ exports.DigestApiClientWithCache = DigestApiClientWithCache;
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9EaWdlc3RBcGlDbGllbnQvRGVjb3JhdG9ycy9EaWdlc3RBcGlDbGllbnRXaXRoQ2FjaGUudHMiXSwibmFtZXMiOlsid2l0aENhY2hlIiwiY2xpZW50IiwiRGlnZXN0QXBpQ2xpZW50V2l0aENhY2hlIiwiY29uc3RydWN0b3IiLCJpbm5lckNsaWVudCIsInJlc3BvbnNlQ2FjaGUiLCJNYXAiLCJnZXREaWdlc3QiLCJyZXF1ZXN0IiwiZGlnZXN0UmVzcG9uc2VzIiwiZ2V0RGlnZXN0cyIsInJlcXVlc3RzIiwibm90SW5DYWNoZVJlcXVlc3RzIiwiZmlsdGVyIiwieCIsImhhcyIsImdldFJlcXVlc3RLZXkiLCJsZW5ndGgiLCJub3RJbkNhY2hlUmVzcG9uc2VzIiwiaW5kZXgiLCJub3RJbkNhY2hlUmVzcG9uc2UiLCJJdGVyVXRpbHMiLCJpdGVyYXRlRW50cmllcyIsIm5vdEluQ2FjaGVSZXF1ZXN0Iiwic2V0IiwibWFwIiwicmVxdWVzdEtleSIsImdldCIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBRU8sU0FBU0EsU0FBVCxDQUFtQkMsTUFBbkIsRUFBK0Q7QUFDbEUsU0FBTyxJQUFJQyx3QkFBSixDQUE2QkQsTUFBN0IsQ0FBUDtBQUNIOztBQUVNLE1BQU1DLHdCQUFOLENBQTJEO0FBSXZEQyxFQUFBQSxXQUFXLENBQUNDLFdBQUQsRUFBZ0M7QUFBQSxTQUhqQ0EsV0FHaUM7QUFBQSxTQUZqQ0MsYUFFaUMsR0FGWSxJQUFJQyxHQUFKLEVBRVo7QUFDOUMsU0FBS0YsV0FBTCxHQUFtQkEsV0FBbkI7QUFDSDs7QUFFcUIsUUFBVEcsU0FBUyxDQUFDQyxPQUFELEVBQWtEO0FBQUE7O0FBQ3BFLFVBQU1DLGVBQWUsR0FBRyxNQUFNLEtBQUtDLFVBQUwsQ0FBZ0IsQ0FBQ0YsT0FBRCxDQUFoQixDQUE5QjtBQUNBLGdDQUFPQyxlQUFQLGFBQU9BLGVBQVAsdUJBQU9BLGVBQWUsQ0FBRyxDQUFILENBQXRCLGlFQUErQiwwQkFBL0I7QUFDSDs7QUFFc0IsUUFBVkMsVUFBVSxDQUFDQyxRQUFELEVBQThFO0FBQ2pHLFVBQU1DLGtCQUFrQixHQUFHRCxRQUFRLENBQUNFLE1BQVQsQ0FBZ0JDLENBQUMsSUFBSSxDQUFDLEtBQUtULGFBQUwsQ0FBbUJVLEdBQW5CLENBQXVCLEtBQUtDLGFBQUwsQ0FBbUJGLENBQW5CLENBQXZCLENBQXRCLENBQTNCOztBQUNBLFFBQUlGLGtCQUFrQixDQUFDSyxNQUFuQixHQUE0QixDQUFoQyxFQUFtQztBQUMvQixZQUFNQyxtQkFBbUIsR0FBRyxNQUFNLEtBQUtkLFdBQUwsQ0FBaUJNLFVBQWpCLENBQTRCRSxrQkFBNUIsQ0FBbEM7O0FBQ0EsV0FBSyxNQUFNLENBQUNPLEtBQUQsRUFBUUMsa0JBQVIsQ0FBWCxJQUEwQ0MseUJBQVVDLGNBQVYsQ0FBeUJKLG1CQUF6QixDQUExQyxFQUF5RjtBQUFBOztBQUNyRixjQUFNSyxpQkFBaUIsNEJBQUdYLGtCQUFrQixDQUFDTyxLQUFELENBQXJCLHlFQUFnQywwQkFBdkQ7QUFDQSxhQUFLZCxhQUFMLENBQW1CbUIsR0FBbkIsQ0FBdUIsS0FBS1IsYUFBTCxDQUFtQk8saUJBQW5CLENBQXZCLEVBQThESCxrQkFBOUQ7QUFDSDtBQUNKOztBQUNELFdBQU9ULFFBQVEsQ0FBQ2MsR0FBVCxDQUFhakIsT0FBTyxJQUFJO0FBQUE7O0FBQzNCLFlBQU1rQixVQUFVLEdBQUcsS0FBS1YsYUFBTCxDQUFtQlIsT0FBbkIsQ0FBbkI7QUFDQSxzQ0FBTyxLQUFLSCxhQUFMLENBQW1Cc0IsR0FBbkIsQ0FBdUJELFVBQXZCLENBQVAseUVBQTZDLDBCQUE3QztBQUNILEtBSE0sQ0FBUDtBQUlIOztBQUVPVixFQUFBQSxhQUFhLENBQUNSLE9BQUQsRUFBeUI7QUFDMUMsV0FBT29CLElBQUksQ0FBQ0MsU0FBTCxDQUFlckIsT0FBZixDQUFQO0FBQ0g7O0FBOUI2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpZ2VzdFJlcXVlc3QgfSBmcm9tIFwiLi4vVHlwZXMvRGlnZXN0UmVxdWVzdFwiO1xuaW1wb3J0IHsgRGlnZXN0UmVzcG9uc2UgfSBmcm9tIFwiLi4vVHlwZXMvRGlnZXN0UmVzcG9uc2VcIjtcbmltcG9ydCB7IElEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi4vSURpZ2VzdEFwaUNsaWVudFwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBJdGVyVXRpbHMgfSBmcm9tIFwiLi4vLi4vLi4vSXRlcmFibGVVdGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aENhY2hlKGNsaWVudDogSURpZ2VzdEFwaUNsaWVudCk6IElEaWdlc3RBcGlDbGllbnQge1xuICAgIHJldHVybiBuZXcgRGlnZXN0QXBpQ2xpZW50V2l0aENhY2hlKGNsaWVudCk7XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdlc3RBcGlDbGllbnRXaXRoQ2FjaGUgaW1wbGVtZW50cyBJRGlnZXN0QXBpQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlubmVyQ2xpZW50OiBJRGlnZXN0QXBpQ2xpZW50O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2VDYWNoZTogTWFwPHN0cmluZywgRGlnZXN0UmVzcG9uc2U+ID0gbmV3IE1hcDxzdHJpbmcsIERpZ2VzdFJlc3BvbnNlPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGlubmVyQ2xpZW50OiBJRGlnZXN0QXBpQ2xpZW50KSB7XG4gICAgICAgIHRoaXMuaW5uZXJDbGllbnQgPSBpbm5lckNsaWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGlnZXN0KHJlcXVlc3Q6IERpZ2VzdFJlcXVlc3QpOiBQcm9taXNlPERpZ2VzdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IGRpZ2VzdFJlc3BvbnNlcyA9IGF3YWl0IHRoaXMuZ2V0RGlnZXN0cyhbcmVxdWVzdF0pO1xuICAgICAgICByZXR1cm4gZGlnZXN0UmVzcG9uc2VzPy5bMF0gPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldERpZ2VzdHMocmVxdWVzdHM6IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHk8RGlnZXN0UmVxdWVzdD4+KTogUHJvbWlzZTxEaWdlc3RSZXNwb25zZVtdPiB7XG4gICAgICAgIGNvbnN0IG5vdEluQ2FjaGVSZXF1ZXN0cyA9IHJlcXVlc3RzLmZpbHRlcih4ID0+ICF0aGlzLnJlc3BvbnNlQ2FjaGUuaGFzKHRoaXMuZ2V0UmVxdWVzdEtleSh4KSkpO1xuICAgICAgICBpZiAobm90SW5DYWNoZVJlcXVlc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5vdEluQ2FjaGVSZXNwb25zZXMgPSBhd2FpdCB0aGlzLmlubmVyQ2xpZW50LmdldERpZ2VzdHMobm90SW5DYWNoZVJlcXVlc3RzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2luZGV4LCBub3RJbkNhY2hlUmVzcG9uc2VdIG9mIEl0ZXJVdGlscy5pdGVyYXRlRW50cmllcyhub3RJbkNhY2hlUmVzcG9uc2VzKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdEluQ2FjaGVSZXF1ZXN0ID0gbm90SW5DYWNoZVJlcXVlc3RzW2luZGV4XSA/PyByZWplY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlQ2FjaGUuc2V0KHRoaXMuZ2V0UmVxdWVzdEtleShub3RJbkNhY2hlUmVxdWVzdCksIG5vdEluQ2FjaGVSZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcXVlc3RzLm1hcChyZXF1ZXN0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RLZXkgPSB0aGlzLmdldFJlcXVlc3RLZXkocmVxdWVzdCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZUNhY2hlLmdldChyZXF1ZXN0S2V5KSA/PyByZWplY3QoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSZXF1ZXN0S2V5KHJlcXVlc3Q6IERpZ2VzdFJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJlcXVlc3QpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withDebouncedBatching = withDebouncedBatching;
7
+ exports.DigestApiClientWithDebouncedBatching = void 0;
8
+
9
+ var _AsyncUtils = require("../../../../Engine/src/Helpers/AsyncUtils");
10
+
11
+ var _IterableUtils = require("../../../IterableUtils");
12
+
13
+ var _TypingUtils = require("../../../TypingUtils");
14
+
15
+ function withDebouncedBatching(client, debounceInterval) {
16
+ return new DigestApiClientWithDebouncedBatching(client, debounceInterval);
17
+ }
18
+
19
+ class DigestApiClientWithDebouncedBatching {
20
+ constructor(innerClient, debounceInterval) {
21
+ this.getDigestDebounced = void 0;
22
+ this.getDigestDebounced = (0, _AsyncUtils.debouncedMerge)(async requests => {
23
+ try {
24
+ const digestRequests = requests.map(x => x.arg);
25
+ const digestResponses = await innerClient.getDigests(digestRequests);
26
+
27
+ for (const [i, request] of _IterableUtils.IterUtils.iterateEntries(requests)) {
28
+ var _digestResponses$i;
29
+
30
+ request.resolve((_digestResponses$i = digestResponses[i]) !== null && _digestResponses$i !== void 0 ? _digestResponses$i : (0, _TypingUtils.reject)(`Request for gId:'${request.arg.gId} does not received'`));
31
+ }
32
+ } catch (error) {
33
+ for (const request of requests) {
34
+ request.reject(error);
35
+ }
36
+ }
37
+ }, debounceInterval, x => JSON.stringify(x));
38
+ }
39
+
40
+ getDigest(request) {
41
+ return this.getDigestDebounced(request);
42
+ }
43
+
44
+ getDigests(requests) {
45
+ return Promise.all(requests.map(x => this.getDigest(x)));
46
+ }
47
+
48
+ }
49
+
50
+ exports.DigestApiClientWithDebouncedBatching = DigestApiClientWithDebouncedBatching;
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9EaWdlc3RBcGlDbGllbnQvRGVjb3JhdG9ycy9EaWdlc3RBcGlDbGllbnRXaXRoRGVib3VuY2VkQmF0Y2hpbmcudHMiXSwibmFtZXMiOlsid2l0aERlYm91bmNlZEJhdGNoaW5nIiwiY2xpZW50IiwiZGVib3VuY2VJbnRlcnZhbCIsIkRpZ2VzdEFwaUNsaWVudFdpdGhEZWJvdW5jZWRCYXRjaGluZyIsImNvbnN0cnVjdG9yIiwiaW5uZXJDbGllbnQiLCJnZXREaWdlc3REZWJvdW5jZWQiLCJyZXF1ZXN0cyIsImRpZ2VzdFJlcXVlc3RzIiwibWFwIiwieCIsImFyZyIsImRpZ2VzdFJlc3BvbnNlcyIsImdldERpZ2VzdHMiLCJpIiwicmVxdWVzdCIsIkl0ZXJVdGlscyIsIml0ZXJhdGVFbnRyaWVzIiwicmVzb2x2ZSIsImdJZCIsImVycm9yIiwicmVqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsImdldERpZ2VzdCIsIlByb21pc2UiLCJhbGwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBR08sU0FBU0EscUJBQVQsQ0FBK0JDLE1BQS9CLEVBQXlEQyxnQkFBekQsRUFBcUc7QUFDeEcsU0FBTyxJQUFJQyxvQ0FBSixDQUF5Q0YsTUFBekMsRUFBaURDLGdCQUFqRCxDQUFQO0FBQ0g7O0FBRU0sTUFBTUMsb0NBQU4sQ0FBdUU7QUFHbkVDLEVBQUFBLFdBQVcsQ0FBQ0MsV0FBRCxFQUFnQ0gsZ0JBQWhDLEVBQTBEO0FBQUEsU0FGM0RJLGtCQUUyRDtBQUN4RSxTQUFLQSxrQkFBTCxHQUEwQixnQ0FDdEIsTUFBT0MsUUFBUCxJQUFtRTtBQUMvRCxVQUFJO0FBQ0EsY0FBTUMsY0FBYyxHQUFHRCxRQUFRLENBQUNFLEdBQVQsQ0FBYUMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLEdBQXBCLENBQXZCO0FBQ0EsY0FBTUMsZUFBZSxHQUFHLE1BQU1QLFdBQVcsQ0FBQ1EsVUFBWixDQUF1QkwsY0FBdkIsQ0FBOUI7O0FBQ0EsYUFBSyxNQUFNLENBQUNNLENBQUQsRUFBSUMsT0FBSixDQUFYLElBQTJCQyx5QkFBVUMsY0FBVixDQUF5QlYsUUFBekIsQ0FBM0IsRUFBK0Q7QUFBQTs7QUFDM0RRLFVBQUFBLE9BQU8sQ0FBQ0csT0FBUix1QkFDSU4sZUFBZSxDQUFDRSxDQUFELENBRG5CLG1FQUMwQix5QkFBUSxvQkFBbUJDLE9BQU8sQ0FBQ0osR0FBUixDQUFZUSxHQUFJLHFCQUEzQyxDQUQxQjtBQUdIO0FBQ0osT0FSRCxDQVFFLE9BQU9DLEtBQVAsRUFBYztBQUNaLGFBQUssTUFBTUwsT0FBWCxJQUFzQlIsUUFBdEIsRUFBZ0M7QUFDNUJRLFVBQUFBLE9BQU8sQ0FBQ00sTUFBUixDQUFlRCxLQUFmO0FBQ0g7QUFDSjtBQUNKLEtBZnFCLEVBZ0J0QmxCLGdCQWhCc0IsRUFpQnRCUSxDQUFDLElBQUlZLElBQUksQ0FBQ0MsU0FBTCxDQUFlYixDQUFmLENBakJpQixDQUExQjtBQW1CSDs7QUFFTWMsRUFBQUEsU0FBUyxDQUFDVCxPQUFELEVBQWtEO0FBQzlELFdBQU8sS0FBS1Qsa0JBQUwsQ0FBd0JTLE9BQXhCLENBQVA7QUFDSDs7QUFFTUYsRUFBQUEsVUFBVSxDQUFDTixRQUFELEVBQThFO0FBQzNGLFdBQU9rQixPQUFPLENBQUNDLEdBQVIsQ0FBWW5CLFFBQVEsQ0FBQ0UsR0FBVCxDQUFhQyxDQUFDLElBQUksS0FBS2MsU0FBTCxDQUFlZCxDQUFmLENBQWxCLENBQVosQ0FBUDtBQUNIOztBQS9CeUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWdlc3RSZXF1ZXN0IH0gZnJvbSBcIi4uL1R5cGVzL0RpZ2VzdFJlcXVlc3RcIjtcbmltcG9ydCB7IERpZ2VzdFJlc3BvbnNlIH0gZnJvbSBcIi4uL1R5cGVzL0RpZ2VzdFJlc3BvbnNlXCI7XG5pbXBvcnQgeyBkZWJvdW5jZWRNZXJnZSwgTWVyZ2VkUmVxdWVzdHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vRW5naW5lL3NyYy9IZWxwZXJzL0FzeW5jVXRpbHNcIjtcbmltcG9ydCB7IEl0ZXJVdGlscyB9IGZyb20gXCIuLi8uLi8uLi9JdGVyYWJsZVV0aWxzXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IElEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi4vSURpZ2VzdEFwaUNsaWVudFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aERlYm91bmNlZEJhdGNoaW5nKGNsaWVudDogSURpZ2VzdEFwaUNsaWVudCwgZGVib3VuY2VJbnRlcnZhbDogbnVtYmVyKTogSURpZ2VzdEFwaUNsaWVudCB7XG4gICAgcmV0dXJuIG5ldyBEaWdlc3RBcGlDbGllbnRXaXRoRGVib3VuY2VkQmF0Y2hpbmcoY2xpZW50LCBkZWJvdW5jZUludGVydmFsKTtcbn1cblxuZXhwb3J0IGNsYXNzIERpZ2VzdEFwaUNsaWVudFdpdGhEZWJvdW5jZWRCYXRjaGluZyBpbXBsZW1lbnRzIElEaWdlc3RBcGlDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2V0RGlnZXN0RGVib3VuY2VkOiAocmVxdWVzdDogRGlnZXN0UmVxdWVzdCkgPT4gUHJvbWlzZTxEaWdlc3RSZXNwb25zZT47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaW5uZXJDbGllbnQ6IElEaWdlc3RBcGlDbGllbnQsIGRlYm91bmNlSW50ZXJ2YWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLmdldERpZ2VzdERlYm91bmNlZCA9IGRlYm91bmNlZE1lcmdlKFxuICAgICAgICAgICAgYXN5bmMgKHJlcXVlc3RzOiBNZXJnZWRSZXF1ZXN0czxEaWdlc3RSZXF1ZXN0LCBEaWdlc3RSZXNwb25zZT4pID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWdlc3RSZXF1ZXN0cyA9IHJlcXVlc3RzLm1hcCh4ID0+IHguYXJnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlnZXN0UmVzcG9uc2VzID0gYXdhaXQgaW5uZXJDbGllbnQuZ2V0RGlnZXN0cyhkaWdlc3RSZXF1ZXN0cyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2ksIHJlcXVlc3RdIG9mIEl0ZXJVdGlscy5pdGVyYXRlRW50cmllcyhyZXF1ZXN0cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucmVzb2x2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3RSZXNwb25zZXNbaV0gPz8gcmVqZWN0KGBSZXF1ZXN0IGZvciBnSWQ6JyR7cmVxdWVzdC5hcmcuZ0lkfSBkb2VzIG5vdCByZWNlaXZlZCdgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiByZXF1ZXN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlYm91bmNlSW50ZXJ2YWwsXG4gICAgICAgICAgICB4ID0+IEpTT04uc3RyaW5naWZ5KHgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpZ2VzdChyZXF1ZXN0OiBEaWdlc3RSZXF1ZXN0KTogUHJvbWlzZTxEaWdlc3RSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREaWdlc3REZWJvdW5jZWQocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpZ2VzdHMocmVxdWVzdHM6IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHk8RGlnZXN0UmVxdWVzdD4+KTogUHJvbWlzZTxEaWdlc3RSZXNwb25zZVtdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChyZXF1ZXN0cy5tYXAoeCA9PiB0aGlzLmdldERpZ2VzdCh4KSkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DigestApiClient = void 0;
7
+
8
+ var _TypingUtils = require("../../TypingUtils");
9
+
10
+ class DigestApiClient {
11
+ constructor(httpClient, draftFullId) {
12
+ this.httpClient = void 0;
13
+ this.draftFullId = void 0;
14
+ this.httpClient = httpClient;
15
+ this.draftFullId = draftFullId;
16
+ }
17
+
18
+ async getDigest(request) {
19
+ var _result$;
20
+
21
+ const result = await this.getDigests([request]);
22
+ return (_result$ = result[0]) !== null && _result$ !== void 0 ? _result$ : (0, _TypingUtils.reject)(`Invalid response`);
23
+ }
24
+
25
+ async getDigests(requests) {
26
+ const requestKeys = requests.map(createDigestRequestString);
27
+ const response = await this.httpClient.post(this.getDraftUrl("get-inner")).withJsonBody(requestKeys).json();
28
+ return requestKeys.map(x => {
29
+ var _response$x;
30
+
31
+ return (_response$x = response[x]) === null || _response$x === void 0 ? void 0 : _response$x.value;
32
+ }).filter(_TypingUtils.isNotNullOrUndefined);
33
+ }
34
+
35
+ getDraftUrl(draftRelatedUrl) {
36
+ return `v1/ns/${this.draftFullId.ns}/drafts/${this.draftFullId.draftId}/${draftRelatedUrl}`;
37
+ }
38
+
39
+ }
40
+
41
+ exports.DigestApiClient = DigestApiClient;
42
+
43
+ function createDigestRequestString(x) {
44
+ return !isDigestQueryFilterEmpty(x.filter) ? `@digest/${x.gId}/${JSON.stringify(x.filter)}` : `@digest/${x.gId}`;
45
+ }
46
+
47
+ function isDigestQueryFilterEmpty(filter) {
48
+ return (filter === null || filter === void 0 ? void 0 : filter.filter) == undefined && (filter === null || filter === void 0 ? void 0 : filter.skip) == undefined && (filter === null || filter === void 0 ? void 0 : filter.take) == undefined;
49
+ }
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9EaWdlc3RBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50LnRzIl0sIm5hbWVzIjpbIkRpZ2VzdEFwaUNsaWVudCIsImNvbnN0cnVjdG9yIiwiaHR0cENsaWVudCIsImRyYWZ0RnVsbElkIiwiZ2V0RGlnZXN0IiwicmVxdWVzdCIsInJlc3VsdCIsImdldERpZ2VzdHMiLCJyZXF1ZXN0cyIsInJlcXVlc3RLZXlzIiwibWFwIiwiY3JlYXRlRGlnZXN0UmVxdWVzdFN0cmluZyIsInJlc3BvbnNlIiwicG9zdCIsImdldERyYWZ0VXJsIiwid2l0aEpzb25Cb2R5IiwianNvbiIsIngiLCJ2YWx1ZSIsImZpbHRlciIsImlzTm90TnVsbE9yVW5kZWZpbmVkIiwiZHJhZnRSZWxhdGVkVXJsIiwibnMiLCJkcmFmdElkIiwiaXNEaWdlc3RRdWVyeUZpbHRlckVtcHR5IiwiZ0lkIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInNraXAiLCJ0YWtlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBUU8sTUFBTUEsZUFBTixDQUFrRDtBQUk5Q0MsRUFBQUEsV0FBVyxDQUFDQyxVQUFELEVBQTBCQyxXQUExQixFQUE4RDtBQUFBLFNBSC9ERCxVQUcrRDtBQUFBLFNBRi9EQyxXQUUrRDtBQUM1RSxTQUFLRCxVQUFMLEdBQWtCQSxVQUFsQjtBQUNBLFNBQUtDLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0g7O0FBRXFCLFFBQVRDLFNBQVMsQ0FBQ0MsT0FBRCxFQUE0RDtBQUFBOztBQUM5RSxVQUFNQyxNQUFNLEdBQUcsTUFBTSxLQUFLQyxVQUFMLENBQWdCLENBQUNGLE9BQUQsQ0FBaEIsQ0FBckI7QUFDQSx1QkFBT0MsTUFBTSxDQUFDLENBQUQsQ0FBYiwrQ0FBb0IseUJBQVEsa0JBQVIsQ0FBcEI7QUFDSDs7QUFFc0IsUUFBVkMsVUFBVSxDQUFDQyxRQUFELEVBQThFO0FBQ2pHLFVBQU1DLFdBQVcsR0FBR0QsUUFBUSxDQUFDRSxHQUFULENBQWFDLHlCQUFiLENBQXBCO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLE1BQU0sS0FBS1YsVUFBTCxDQUNsQlcsSUFEa0IsQ0FDYixLQUFLQyxXQUFMLENBQWlCLFdBQWpCLENBRGEsRUFFbEJDLFlBRmtCLENBRUxOLFdBRkssRUFHbEJPLElBSGtCLEVBQXZCO0FBSUEsV0FBT1AsV0FBVyxDQUFDQyxHQUFaLENBQWdCTyxDQUFDO0FBQUE7O0FBQUEsNEJBQUlMLFFBQVEsQ0FBQ0ssQ0FBRCxDQUFaLGdEQUFJLFlBQWFDLEtBQWpCO0FBQUEsS0FBakIsRUFBeUNDLE1BQXpDLENBQWdEQyxpQ0FBaEQsQ0FBUDtBQUNIOztBQUVPTixFQUFBQSxXQUFXLENBQUNPLGVBQUQsRUFBa0M7QUFDakQsV0FBUSxTQUFRLEtBQUtsQixXQUFMLENBQWlCbUIsRUFBRyxXQUFVLEtBQUtuQixXQUFMLENBQWlCb0IsT0FBUSxJQUFHRixlQUFnQixFQUExRjtBQUNIOztBQXpCb0Q7Ozs7QUE0QnpELFNBQVNWLHlCQUFULENBQW1DTSxDQUFuQyxFQUF1RTtBQUNuRSxTQUFPLENBQUNPLHdCQUF3QixDQUFDUCxDQUFDLENBQUNFLE1BQUgsQ0FBekIsR0FBdUMsV0FBVUYsQ0FBQyxDQUFDUSxHQUFJLElBQUdDLElBQUksQ0FBQ0MsU0FBTCxDQUFlVixDQUFDLENBQUNFLE1BQWpCLENBQXlCLEVBQW5GLEdBQXdGLFdBQVVGLENBQUMsQ0FBQ1EsR0FBSSxFQUEvRztBQUNIOztBQUVELFNBQVNELHdCQUFULENBQWtDTCxNQUFsQyxFQUFrRjtBQUM5RSxTQUFPLENBQUFBLE1BQU0sU0FBTixJQUFBQSxNQUFNLFdBQU4sWUFBQUEsTUFBTSxDQUFFQSxNQUFSLEtBQWtCUyxTQUFsQixJQUErQixDQUFBVCxNQUFNLFNBQU4sSUFBQUEsTUFBTSxXQUFOLFlBQUFBLE1BQU0sQ0FBRVUsSUFBUixLQUFnQkQsU0FBL0MsSUFBNEQsQ0FBQVQsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixZQUFBQSxNQUFNLENBQUVXLElBQVIsS0FBZ0JGLFNBQW5GO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSHR0cENsaWVudCB9IGZyb20gXCIuLi8uLi9IdHRwQ2xpZW50L0lIdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBpc05vdE51bGxPclVuZGVmaW5lZCwgcmVqZWN0IH0gZnJvbSBcIi4uLy4uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuLi9UeXBlcy9EcmFmdEZ1bGxJZFwiO1xuXG5pbXBvcnQgeyBEaWdlc3RSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvRGlnZXN0UmVxdWVzdFwiO1xuaW1wb3J0IHsgRGlnZXN0UmVzcG9uc2UsIERpZ2VzdHNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0RpZ2VzdFJlc3BvbnNlXCI7XG5pbXBvcnQgeyBJRGlnZXN0QXBpQ2xpZW50IH0gZnJvbSBcIi4vSURpZ2VzdEFwaUNsaWVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuXG5leHBvcnQgY2xhc3MgRGlnZXN0QXBpQ2xpZW50IGltcGxlbWVudHMgSURpZ2VzdEFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBJSHR0cENsaWVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyYWZ0RnVsbElkOiBSZWFkb25seTxEcmFmdEZ1bGxJZD47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUh0dHBDbGllbnQsIGRyYWZ0RnVsbElkOiBSZWFkb25seTxEcmFmdEZ1bGxJZD4pIHtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcbiAgICAgICAgdGhpcy5kcmFmdEZ1bGxJZCA9IGRyYWZ0RnVsbElkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXREaWdlc3QocmVxdWVzdDogUmVhZG9ubHk8RGlnZXN0UmVxdWVzdD4pOiBQcm9taXNlPERpZ2VzdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0RGlnZXN0cyhbcmVxdWVzdF0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0WzBdID8/IHJlamVjdChgSW52YWxpZCByZXNwb25zZWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXREaWdlc3RzKHJlcXVlc3RzOiBSZWFkb25seUFycmF5PFJlYWRvbmx5PERpZ2VzdFJlcXVlc3Q+Pik6IFByb21pc2U8RGlnZXN0UmVzcG9uc2VbXT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0S2V5cyA9IHJlcXVlc3RzLm1hcChjcmVhdGVEaWdlc3RSZXF1ZXN0U3RyaW5nKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVlc3RLZXlzKVxuICAgICAgICAgICAgLmpzb248RGlnZXN0c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVxdWVzdEtleXMubWFwKHggPT4gcmVzcG9uc2VbeF0/LnZhbHVlKS5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHJhZnRVcmwoZHJhZnRSZWxhdGVkVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRGlnZXN0UmVxdWVzdFN0cmluZyh4OiBSZWFkb25seTxEaWdlc3RSZXF1ZXN0Pik6IHN0cmluZyB7XG4gICAgcmV0dXJuICFpc0RpZ2VzdFF1ZXJ5RmlsdGVyRW1wdHkoeC5maWx0ZXIpID8gYEBkaWdlc3QvJHt4LmdJZH0vJHtKU09OLnN0cmluZ2lmeSh4LmZpbHRlcil9YCA6IGBAZGlnZXN0LyR7eC5nSWR9YDtcbn1cblxuZnVuY3Rpb24gaXNEaWdlc3RRdWVyeUZpbHRlckVtcHR5KGZpbHRlcjogdW5kZWZpbmVkIHwgRGlnZXN0UXVlcnlGaWx0ZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmlsdGVyPy5maWx0ZXIgPT0gdW5kZWZpbmVkICYmIGZpbHRlcj8uc2tpcCA9PSB1bmRlZmluZWQgJiYgZmlsdGVyPy50YWtlID09IHVuZGVmaW5lZDtcbn1cbiJdfQ==