@kontur.candy/tools 2.134.0 → 2.136.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.
- package/CHANGELOG.md +11 -0
- package/README.md +8 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +9 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +5 -1
- package/distr/Common/KCLangRuntimeUtils.js +5 -1
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +3 -3
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +2 -2
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +15 -8
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +25 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +99 -54
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +9 -9
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +18 -13
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +13 -8
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +48 -9
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +8 -2
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +46 -11
- package/distr/Tools/src/CandyCLI.js +81 -29
- package/distr/Tools/src/Commons/Logging/Logger.js +2 -2
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +11 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +24 -14
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
<a name="2.136.0"></a>
|
|
2
|
+
# [2.136.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.135.0...release/tools/v2.136.0) (2022-11-23)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **Tools:** Candy запускает все формы с одного скрипта ([21c25e0](https://git.skbkontur.ru/ke/candy-utils/commit/21c25e0)), see [#7162](https://yt.skbkontur.ru/issue/fs-7162)
|
|
8
|
+
|
|
9
|
+
<a name="2.135.0"></a>
|
|
10
|
+
# [2.135.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.134.0...release/tools/v2.135.0) (2022-10-31)
|
|
11
|
+
|
|
1
12
|
<a name="2.134.0"></a>
|
|
2
13
|
# [2.134.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.133.0...release/tools/v2.134.0) (2022-10-26)
|
|
3
14
|
|
package/README.md
CHANGED
|
@@ -293,6 +293,10 @@ Magic
|
|
|
293
293
|
|
|
294
294
|
Одна или несколько GFV или GFV-масок для пересобрки.
|
|
295
295
|
|
|
296
|
+
* `--all-farm-dir (-a)`
|
|
297
|
+
|
|
298
|
+
Позволяет передать массив путей до всех фармов candy, чтобы открывать из всех них формы. Путь передавать относительно keforms.engine
|
|
299
|
+
|
|
296
300
|
* `--no-client-override`
|
|
297
301
|
|
|
298
302
|
Отключает перехват client.js. В этом случае не будет работать отображение логов сборки и ожидания сборки формы.
|
|
@@ -329,6 +333,10 @@ Magic
|
|
|
329
333
|
|
|
330
334
|
Опция устарела. Оставлена для обратной совместимости.
|
|
331
335
|
|
|
336
|
+
* `--all-farm-dir (-a)`
|
|
337
|
+
|
|
338
|
+
Позволяет передать массив путей до всех фармов candy, чтобы открывать из всех них формы. Путь передавать относительно keforms.engine
|
|
339
|
+
|
|
332
340
|
* `--nightly`
|
|
333
341
|
|
|
334
342
|
Включает сборку форм на движке nightly.
|
|
@@ -465,7 +465,15 @@ class CandyApiDraftClient {
|
|
|
465
465
|
await this.httpClient.patch(this.getDraftUrl("staff")).withJsonBody(request);
|
|
466
466
|
}
|
|
467
467
|
|
|
468
|
+
async deleteInstances(multiplicityPath, instances) {
|
|
469
|
+
const parameters = {
|
|
470
|
+
multiplicityPath: multiplicityPath,
|
|
471
|
+
instanceNumbers: instances
|
|
472
|
+
};
|
|
473
|
+
await this.httpClient.post(this.getDraftUrl("inner/delete-instances")).withJsonBody(parameters);
|
|
474
|
+
}
|
|
475
|
+
|
|
468
476
|
}
|
|
469
477
|
|
|
470
478
|
exports.CandyApiDraftClient = CandyApiDraftClient;
|
|
471
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJuYW1lcyI6WyJzdHJhbmdlT3B0aW9ucyIsInNyYyIsImRhdGFWZXJzaW9uIiwiU2VydmVyRXJyb3JzIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiZm9yRHJhZnQiLCJkcmFmdEZ1bGxJZCIsIkNhbmR5QXBpRHJhZnRDbGllbnQiLCJjcmVhdGVEaWdlc3RBcGlDbGllbnQiLCJEaWdlc3RBcGlDbGllbnQiLCJnZXRJbmZvQnlJbm5zIiwiaW5ucyIsInBhdGhzIiwibWFwIiwiaW5uIiwicmVzcG9uc2UiLCJwb3N0IiwiZ2V0RHJhZnRVcmwiLCJ3aXRoSnNvbkJvZHkiLCJqc29uIiwicmVzdWx0IiwiaW5uU2VydmVyVmFsdWUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImVycm9yIiwiZXJyb3JDb2RlIiwiRm9jdXNTZXJ2ZXJFcnJvckNvZGUiLCJOb0lubkVycm9yIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiYm9keSIsImdldCIsIk9iamVjdCIsImtleXMiLCJmb3JtcyIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwibnMiLCJmdWZEcml2ZVVyaSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhBYm9ydFNpZ25hbCIsImNyZWF0ZUVtcHR5RHJhZnQiLCJnZnYiLCJjcmVhdGVEcmFmdCIsImZ1ZkNvbnRlbnQiLCJ3aXRoQ29udGVudFR5cGUiLCJ3aXRoQm9keUZyb21CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiRXJyb3IiLCJjaGVja0FsaXZlIiwiZHJhZnRSZWxhdGVkVXJsIiwiZHJhZnRJZCIsImdldEZlYXR1cmVGbGFncyIsImdldEhyZWZUb0lubmVyRWRpdG9yIiwidXJsIiwiZ2V0SHJlZkRvd25sb2FkRnVmIiwiZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nIiwiZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZiIsImdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uIiwiRHJhZnRQcmVzZW50YXRpb25UeXBlIiwiaW5uZXJGdWYiLCJnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8iLCJjbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8iLCJmb3Jtc0NsaWVudEluZm8iLCJnZXRIcmVmRG93bmxvYWRJbm5lciIsImlubmVyIiwiZ2V0RXJyb3JMb2ciLCJnZXREcmFmdFByZXNlbnRhdGlvblVybCIsImVycm9yTG9nIiwiZ2V0RXJyb3JMb2dXaXRoQ2hlY2tTY2VuYXJpb3MiLCJjaGVja1NjZW5hcmlvcyIsImdldFRhc2tCeUlkIiwidGFza0lkIiwidGFza3MiLCJnZXRBbGxUYXNrcyIsInZhbHVlcyIsIngiLCJlbnF1ZXVlVGFzayIsInRhc2tJbmZvIiwiYWRkZWQiLCJjaGFuZ2VkIiwiaWQiLCJyZW1vdmVkIiwiY2FuY2VsVGFzayIsImdldEV4cGVydEVycm9yTG9nIiwiZXJyb3Jsb2dFeHBlcnQiLCJnZXRIcmVmVG9FcnJvckxvZ1BkZiIsImVycm9yTG9nTmFtZSIsInByb3BzTmFtZSIsInByb3BzRHJpdmVOYW1lIiwiY2xlYXJEcmFmdCIsImNvbnZlcnREcmFmdEZyb21QcmV2R2Z2IiwicHJldkdmdkRyYWZ0SWQiLCJzZW5kQ2hhbmdlU2V0IiwiZGF0YSIsInNlbmRDaGFuZ2VTZXRTeW5jIiwicG9zdFN5bmMiLCJnZXRSZXF1aXNpdGVzIiwicmVxdWlzaXRlTGlzdCIsImdldElubmVyIiwiZ2V0UGFydGlhbElubmVyIiwicnVsZXMiLCJtYXhJbnN0YW5jZUNvdW50IiwidG9TdHJpbmciLCJnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlIiwiZm9ybWF0IiwiZ2V0RXhwbGFuYXRvcnlOb3RlIiwiZXhwbGFuYXRvcnlOb3RlIiwiZ2V0QXR0YWNobWVudEJ5SWQiLCJhdHRhY2htZW50SWQiLCJnZXRBbGxBdHRhY2htZW50cyIsInJlbW92ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudElkcyIsImNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImF0dGFjaG1lbnQiLCJjb250ZW50VXJpIiwibWV0YSIsInNldFByZXNlbnRhdGlvbiIsInByZXNlbnRhdGlvblR5cGUiLCJjb250ZW50IiwicmVxdWVzdCIsInB1dCIsIndpdGhSYXdCb2R5IiwicGF0Y2hQcmVzZW50YXRpb24iLCJwcmVzZW50YXRpb25Db250ZW50IiwicGF0Y2giLCJnZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpIiwiYWNjZXB0Q29kZSIsInN0YXR1cyIsInByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyIsImVycm9yRGF0YSIsIkZ1ZlNpemVUb29MYXJnZUVycm9yIiwibWVzc2FnZSIsIkh0dHBFcnJvciIsInVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmlzIiwic2VydmVyRXJyb3IiLCJpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXMiLCJzb3VyY2VzVG90YWxDb3VudCIsImUiLCJVbmtub3duRXJyb3IiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwibXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaSIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJzZXRBbGxDaGVja2JveGVzRm9yMTEzMTAzIiwiZW5hYmxlZCIsInVyaSIsInNldEVuYWJsZWQiLCJzZWFyY2hJbnN0YW5jZXNCeVRleHQiLCJ0ZXh0IiwicGF0aHNQcmVmaXgiLCJwYXRoc1RvU2VhcmNoIiwibWF4SW5zdGFuY2VDb3VudFBhcmFtcyIsInBhcmFtcyIsInNlYXJjaFN0cmluZyIsImN1c3RvbU5vcm1hbGl6ZSIsIm5vcm1hbGl6ZXJJZCIsInBhdGhQcmVmaXhlcyIsImltcG9ydEVtcGxveWVlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFB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QUdENUksWUFIQyxDQUdZZ0osWUFIWixDQUFOO0FBSUg7O0FBRTJCLFFBQWZDLGVBQWUsQ0FBQ3pDLE9BQUQsRUFBaUQ7QUFDekUsVUFBTSxLQUFLdkgsVUFBTCxDQUFnQjRILEtBQWhCLENBQXNCLEtBQUs5RyxXQUFMLENBQWlCLE9BQWpCLENBQXRCLEVBQWlEQyxZQUFqRCxDQUE4RHdHLE9BQTlELENBQU47QUFDSDs7QUFoWDREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvciB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0h0dHBDbGllbnRcIjtcbmltcG9ydCB7IEh0dHBTdGF0dXNDb2RlLCBJSHR0cENsaWVudCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0lIdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZGUsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9BdXRoZW50aWNhdGlvbk1vZGVcIjtcblxuaW1wb3J0IHsgQ2hlY2tTY2VuYXJpb1R5cGUsIElDYW5keUFwaUNsaWVudCwgSUNhbmR5QXBpRHJhZnRDbGllbnQgfSBmcm9tIFwiLi9JQ2FuZHlBcGlDbGllbnRcIjtcbmltcG9ydCB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4vVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB7IFNlcnZlcklubmVyUmVzcG9uc2UsIFNlcnZlckpzb25SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlcklubmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IEZpbGVQcm9wZXJ0aWVzLCBVcGxvYWRGaWxlUHJvcGVydGllc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0ZpbGVQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgeyBDcmVhdGVEcmFmdFJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQ3JlYXRlRHJhZnQvQ3JlYXRlRHJhZnRSZXNwb25zZVwiO1xuaW1wb3J0IHsgQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9FeHBsYW5hdG9yeU5vdGUvQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2VcIjtcbmltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcbmltcG9ydCB7IFNlcnZlckNoYW5nZVNldCB9IGZyb20gXCIuL1R5cGVzL0NoYW5nZVNldC9TZXJ2ZXJDaGFuZ2VTZXRcIjtcbmltcG9ydCB7IFNlcnZlclRhc2ssIFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvIH0gZnJvbSBcIi4vVHlwZXMvVGFza3MvVGFza3NcIjtcbmltcG9ydCB7IEZvY3VzU2VydmVyRXJyb3JDb2RlLCBHZXRCeUlublJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNUeXBlc1wiO1xuaW1wb3J0IHsgQXR0YWNoSW5mbyB9IGZyb20gXCIuL1R5cGVzL0F0dGFjaG1lbnRzL0F0dGFjbWVudHNcIjtcbmltcG9ydCB7IERyYWZ0UHJlc2VudGF0aW9uVHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvRHJhZnRQcmVzZW50YXRpb25UeXBlXCI7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250ZW50IH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9QcmVzZW50YXRpb25Db250ZW50XCI7XG5pbXBvcnQgeyBDb252ZXJ0RHJhZnRSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbnZlcnREcmFmdFJlcXVlc3RcIjtcbmltcG9ydCB7IEdldEF0dGFjaG1lbnRzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9HZXRBdHRhY2htZW50c1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBGb2N1c1NlcnZlclJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNTZXJ2ZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgR2V0VGFza3NTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL0dldFRhc2tzU2VydmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IERpYWdSZXNvdXJjZXNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0RpYWdSZXNvdXJjZXNSZXNwb25zZVwiO1xuaW1wb3J0IHsgU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBpc0J1ZmZlciB9IGZyb20gXCIuL0lzQnVmZmVyXCI7XG5pbXBvcnQgeyBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi9EaWdlc3RBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBJRGlnZXN0QXBpQ2xpZW50IH0gZnJvbSBcIi4vRGlnZXN0QXBpQ2xpZW50L0lEaWdlc3RBcGlDbGllbnRcIjtcbmltcG9ydCB7IEZ1ZlNpemVUb29MYXJnZUVycm9yIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0Z1ZlNpemVUb29MYXJnZUVycm9yXCI7XG5pbXBvcnQgeyBJbXBvcnRFbXBsb3llZXNSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvU3RhZmYvSW1wb3J0RW1wbG95ZWVzUmVxdWVzdFwiO1xuXG5jb25zdCBzdHJhbmdlT3B0aW9ucyA9IHsgc3JjOiBcImNoYW5nZVNldFwiLCBkYXRhVmVyc2lvbjogXCIwXCIgfTtcblxuZXhwb3J0IGVudW0gU2VydmVyRXJyb3JzIHtcbiAgICBGdWZTaXplVG9vTGFyZ2UgPSBcIkZ1ZlNpemVUb29MYXJnZVwiLFxuICAgIEJhZFJlcXVlc3QgPSBcIkJhZFJlcXVlc3RcIixcbiAgICBVbmtub3duRXJyb3IgPSBcIlVua25vd25FcnJvclwiLFxufVxuXG5leHBvcnQgY2xhc3MgQ2FuZHlBcGlDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSUh0dHBDbGllbnQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZldGNoSW1wbDogRmV0Y2gsXG4gICAgICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICAgICAgcmVzb3VyY2Vab25lOiB1bmRlZmluZWQgfCBzdHJpbmcsXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uOiB1bmRlZmluZWQgfCBBdXRoZW50aWNhdGlvbk1vZGVcbiAgICApIHtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoZmV0Y2hJbXBsLCBiYXNlVXJsLCBjcmVhdGVBdXRoZW50aWNhdGlvblByb3ZpZGVyKGF1dGhlbnRpY2F0aW9uKSwge1xuICAgICAgICAgICAgcmVzb3VyY2Vab25lOiByZXNvdXJjZVpvbmUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JEcmFmdChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuZHlBcGlEcmFmdENsaWVudCh0aGlzLmh0dHBDbGllbnQsIGRyYWZ0RnVsbElkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRGlnZXN0QXBpQ2xpZW50KGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCk6IElEaWdlc3RBcGlDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IERpZ2VzdEFwaUNsaWVudCh0aGlzLmh0dHBDbGllbnQsIGRyYWZ0RnVsbElkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mb0J5SW5ucyhkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGlubnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxHZXRCeUlublJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHBhdGhzID0gaW5ucy5tYXAoaW5uID0+IGBAZm9jdXMvJHtpbm59YCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKGRyYWZ0RnVsbElkLCBcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aHMpXG4gICAgICAgICAgICAuanNvbjxGb2N1c1NlcnZlclJlc3BvbnNlPigpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IEdldEJ5SW5uUmVzcG9uc2UgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBpbm4gb2YgaW5ucykge1xuICAgICAgICAgICAgY29uc3QgaW5uU2VydmVyVmFsdWUgPSByZXNwb25zZVtgQGZvY3VzLyR7aW5ufWBdPy52YWx1ZTtcbiAgICAgICAgICAgIGlmIChpbm5TZXJ2ZXJWYWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaW5uXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFwiU2VydmVyIGRvZXMgbm90IHJldHVybiBpbm4gaW5mb1wiLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGU6IEZvY3VzU2VydmVyRXJyb3JDb2RlLk5vSW5uRXJyb3IsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2lubl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpbm5TZXJ2ZXJWYWx1ZS52YWx1ZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZTogaW5uU2VydmVyVmFsdWUuZXJyb3JDb2RlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGlublNlcnZlclZhbHVlLmVycm9yID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEdmdnMoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoYHYxL2RpYWcvcmVzb3VyY2VzYCkuanNvbjxEaWFnUmVzb3VyY2VzUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhib2R5LmZvcm1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRHJhZnRGcm9tRHJpdmUoXG4gICAgICAgIG5zOiBzdHJpbmcsXG4gICAgICAgIGZ1ZkRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdC1mcm9tLWRyaXZlYClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoe1xuICAgICAgICAgICAgICAgIG5zOiBucyxcbiAgICAgICAgICAgICAgICBmdWZEcml2ZVVyaTogZnVmRHJpdmVVcmksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZUVtcHR5RHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZ2Z2OiBnZnYgfSlcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkLCBmdWZDb250ZW50OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCB8IHN0cmluZywgZnVmQ29udGVudD86IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICBpZiAoZ2Z2ID09IHVuZGVmaW5lZCAmJiBmdWZDb250ZW50ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnRgKVxuICAgICAgICAgICAgICAgIC53aXRoQ29udGVudFR5cGUoXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIilcbiAgICAgICAgICAgICAgICAud2l0aEJvZHlGcm9tQnVmZmVyKGZ1ZkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2Z2ICE9IHVuZGVmaW5lZCAmJiBmdWZDb250ZW50ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnRgKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgICAgIC53aXRoQ29udGVudFR5cGUoXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIilcbiAgICAgICAgICAgICAgICAud2l0aEJvZHlGcm9tQnVmZmVyKEJ1ZmZlci5mcm9tKFtdKSlcbiAgICAgICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZnYgPT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGRyYWZ0OiBubyBnZnYgYW5kIG5vIGZ1ZiBzcGVjaWZpZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZ2Z2OiBnZnYgfSlcbiAgICAgICAgICAgIC53aXRoQ29udGVudFR5cGUoXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIilcbiAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoZnVmQ29udGVudClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNoZWNrQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoYF9zdGF0dXMvcGluZ2ApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHJhZnRVcmwoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkLCBkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHtkcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7ZHJhZnRGdWxsSWQuZHJhZnRJZH0vJHtkcmFmdFJlbGF0ZWRVcmx9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmVhdHVyZUZsYWdzKCk6IFByb21pc2U8RmVhdHVyZUZsYWdzUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoXCJ2MS9mZWF0dXJlcy9mbGFnc1wiKS5qc29uPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhbmR5QXBpRHJhZnRDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBJSHR0cENsaWVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihodHRwQ2xpZW50OiBJSHR0cENsaWVudCwgZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKSB7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IGh0dHBDbGllbnQ7XG4gICAgICAgIHRoaXMuZHJhZnRGdWxsSWQgPSBkcmFmdEZ1bGxJZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvSW5uZXJFZGl0b3IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwoYGlubmVyLWVkaXRvci9ucy8ke3RoaXMuZHJhZnRGdWxsSWQubnN9L2RyYWZ0cy8ke3RoaXMuZHJhZnRGdWxsSWQuZHJhZnRJZH1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtZnVmXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKHRoaXMuZ2V0RHJhZnRVcmwoXCJjb252ZXJzaW9uXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbihEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXJGdWYpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmNsaWVudEluZm8pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIcmVmRG93bmxvYWREcmFmdFByZXNlbnRhdGlvbihEcmFmdFByZXNlbnRhdGlvblR5cGUuZm9ybXNDbGllbnRJbmZvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkSW5uZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5lcnJvckxvZykpLmpzb248U2VydmVyRXJyb3JMb2c+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nV2l0aENoZWNrU2NlbmFyaW9zKGNoZWNrU2NlbmFyaW9zOiBDaGVja1NjZW5hcmlvVHlwZVtdKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZXJyb3Jsb2dcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgY2hlY2tTY2VuYXJpb3M6IGNoZWNrU2NlbmFyaW9zIH0pXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJFcnJvckxvZz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VGFza0J5SWQodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPFNlcnZlclRhc2sgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIHRhc2tzW2BAdGFzay8ke3Rhc2tJZH1gXT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFRhc2tzKCk6IFByb21pc2U8U2VydmVyVGFza1tdPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRhc2tzKS5tYXAoeCA9PiB4LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5xdWV1ZVRhc2sodGFza0lkOiBzdHJpbmcsIHRhc2tJbmZvOiBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge1xuICAgICAgICAgICAgICAgICAgICBbYEB0YXNrLyR7dGFza0lkfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50YXNrSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0YXNrSWQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZW1vdmVkOiBbXSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjYW5jZWxUYXNrKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7fSxcbiAgICAgICAgICAgICAgICByZW1vdmVkOiBbYEB0YXNrLyR7dGFza0lkfWBdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGVydEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5lcnJvcmxvZ0V4cGVydCkpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJFcnJvckxvZz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRXJyb3JMb2dQZGYoZXJyb3JMb2dOYW1lOiBzdHJpbmcsIHByb3BzTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFVybChcInByZXNlbnRhdGlvbnMvZXJyb3JMb2cvcHJpbnRcIiksIHtcbiAgICAgICAgICAgIGVycm9yTG9nTmFtZTogZXJyb3JMb2dOYW1lLFxuICAgICAgICAgICAgcHJvcHNEcml2ZU5hbWU6IHByb3BzTmFtZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsZWFyRHJhZnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJjbGVhclwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvbnZlcnREcmFmdEZyb21QcmV2R2Z2KHsgcHJldkdmdkRyYWZ0SWQsIGdmdiB9OiBDb252ZXJ0RHJhZnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJjb252ZXJ0XCIpKS53aXRoUXVlcnlQYXJhbXMoe1xuICAgICAgICAgICAgaWQ6IHByZXZHZnZEcmFmdElkLFxuICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kQ2hhbmdlU2V0KGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQ2hhbmdlU2V0U3luYyhkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBIdHRwU3RhdHVzQ29kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdFN5bmMoXG4gICAgICAgICAgICB0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lciksXG4gICAgICAgICAgICBzdHJhbmdlT3B0aW9ucyxcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVpc2l0ZUxpc3QpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiB1bmRlZmluZWQgfCByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogW1wiKlwiXSB8IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtcGFydGlhbC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMobWF4SW5zdGFuY2VDb3VudCAhPSB1bmRlZmluZWQgJiYgeyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJJbm5lclJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlKHJ1bGVzOiBbXCIqXCJdIHwgc3RyaW5nW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlckpzb25SZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LXBhcnRpYWwtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKG1heEluc3RhbmNlQ291bnQgIT0gdW5kZWZpbmVkICYmIHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudC50b1N0cmluZygpIH0pXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZm9ybWF0OiBcIkpzb25UcmVlXCIgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJKc29uUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXhwbGFuYXRvcnlOb3RlKSlcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVzdWx0W2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnRJZH1gXT8udmFsdWUgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAYXR0YWNobWVudC8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogYXR0YWNobWVudElkcy5tYXAoaWQgPT4gYEBhdHRhY2htZW50LyR7aWR9YCksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkW2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YF0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudFVyaTogYXR0YWNobWVudC5jb250ZW50VXJpLFxuICAgICAgICAgICAgICAgIGlkOiBhdHRhY2htZW50LmlkLFxuICAgICAgICAgICAgICAgIG1ldGE6IGF0dGFjaG1lbnQubWV0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQsXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvblR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogc3RyaW5nIHwgdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aFJhd0JvZHkoY29udGVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNCdWZmZXIoY29udGVudCkpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aEpzb25Cb2R5KGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBhdGNoUHJlc2VudGF0aW9uKFxuICAgICAgICBwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsXG4gICAgICAgIHByZXNlbnRhdGlvbkNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnRcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpLndpdGhKc29uQm9keShwcmVzZW50YXRpb25Db250ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQoYHYxL2ZpbGVzL2dldC1wcm9wZXJ0aWVzYClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxGaWxlUHJvcGVydGllcz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvcHJlcGFyZS1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEZpbGVQcm9wZXJ0aWVzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyhcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL2ZpbGVzL3VwbG9hZC1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUsIGludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lczogXCJcIiwgc291cmNlc1RvdGFsQ291bnQ6IDAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+KCk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3JzLlVua25vd25FcnJvcixcbiAgICAgICAgICAgICAgICBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsXG4gICAgICAgICAgICAgICAgc291cmNlc1RvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEZ1ZkJ5RHJpdmVVcmkoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuZ2V0RHJhZnRVcmwoXCJzZXQtZnVmXCIpKS53aXRoUXVlcnlQYXJhbXMoeyBkcml2ZVVyaTogZHJpdmVVcmkgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwidHJhbnNmZXIvY29tYmluZS13aXRoLWZ1ZlwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBmdWZEcml2ZVVyaTogZHJpdmVVcmksIGNvbWJpbmVNZXRob2Q6IGNvbWJpbmVNZXRob2QgfSlcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248Q29tYmluZUZ1ZlJlc3VsdD4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcInRyYW5zZmVyL2NvbWJpbmUtd2l0aC1mdWZzXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGNvbWJpbmVNZXRob2Q6IGNvbWJpbmVNZXRob2QgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG5vcm1hbGl6ZUJ5UnVsZXMocnVsZXM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwibm9ybWFsaXplXCIpKS53aXRoSnNvbkJvZHkocnVsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcmFmdFVybChgcHJlc2VudGF0aW9ucy8ke3ByZXNlbnRhdGlvblR5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyhlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9jaGVjay1hbGxcIik7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wYXRjaCh1cmkpLndpdGhRdWVyeVBhcmFtcyh7IHNldEVuYWJsZWQ6IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaEluc3RhbmNlc0J5VGV4dChcbiAgICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgICBwYXRoc1ByZWZpeDogc3RyaW5nLFxuICAgICAgICBwYXRoc1RvU2VhcmNoOiBzdHJpbmdbXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgbWF4SW5zdGFuY2VDb3VudFBhcmFtcyA9IG1heEluc3RhbmNlQ291bnQgIT0gdW5kZWZpbmVkID8geyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50IH0gOiB7fTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyBzZWFyY2hTdHJpbmc6IHRleHQsIHBhdGhzUHJlZml4OiBwYXRoc1ByZWZpeCwgLi4ubWF4SW5zdGFuY2VDb3VudFBhcmFtcyB9O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvc2VhcmNoLWJ5LXN0cmluZ1wiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMocGFyYW1zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRoc1RvU2VhcmNoKVxuICAgICAgICAgICAgLmpzb248c3RyaW5nW10+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IG5vcm1hbGl6ZXJJZDogbm9ybWFsaXplcklkIH07XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL2N1c3RvbS1ub3JtYWxpemVcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aFByZWZpeGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW1wb3J0RW1wbG95ZWVzKHJlcXVlc3Q6IEltcG9ydEVtcGxveWVlc1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRVcmwoXCJzdGFmZlwiKSkud2l0aEpzb25Cb2R5KHJlcXVlc3QpO1xuICAgIH1cbn1cbiJdfQ==
|
|
479
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJuYW1lcyI6WyJzdHJhbmdlT3B0aW9ucyIsInNyYyIsImRhdGFWZXJzaW9uIiwiU2VydmVyRXJyb3JzIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiZm9yRHJhZnQiLCJkcmFmdEZ1bGxJZCIsIkNhbmR5QXBpRHJhZnRDbGllbnQiLCJjcmVhdGVEaWdlc3RBcGlDbGllbnQiLCJEaWdlc3RBcGlDbGllbnQiLCJnZXRJbmZvQnlJbm5zIiwiaW5ucyIsInBhdGhzIiwibWFwIiwiaW5uIiwicmVzcG9uc2UiLCJwb3N0IiwiZ2V0RHJhZnRVcmwiLCJ3aXRoSnNvbkJvZHkiLCJqc29uIiwicmVzdWx0IiwiaW5uU2VydmVyVmFsdWUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImVycm9yIiwiZXJyb3JDb2RlIiwiRm9jdXNTZXJ2ZXJFcnJvckNvZGUiLCJOb0lubkVycm9yIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiYm9keSIsImdldCIsIk9iamVjdCIsImtleXMiLCJmb3JtcyIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwibnMiLCJmdWZEcml2ZVVyaSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhBYm9ydFNpZ25hbCIsImNyZWF0ZUVtcHR5RHJhZnQiLCJnZnYiLCJjcmVhdGVEcmFmdCIsImZ1ZkNvbnRlbnQiLCJ3aXRoQ29udGVudFR5cGUiLCJ3aXRoQm9keUZyb21CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiRXJyb3IiLCJjaGVja0FsaXZlIiwiZHJhZnRSZWxhdGVkVXJsIiwiZHJhZnRJZCIsImdldEZlYXR1cmVGbGFncyIsImdldEhyZWZUb0lubmVyRWRpdG9yIiwidXJsIiwiZ2V0SHJlZkRvd25sb2FkRnVmIiwiZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nIiwiZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZiIsImdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uIiwiRHJhZnRQcmVzZW50YXRpb25UeXBlIiwiaW5uZXJGdWYiLCJnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8iLCJjbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8iLCJmb3Jtc0NsaWVudEluZm8iLCJnZXRIcmVmRG93bmxvYWRJbm5lciIsImlubmVyIiwiZ2V0RXJyb3JMb2ciLCJnZXREcmFmdFByZXNlbnRhdGlvblVybCIsImVycm9yTG9nIiwiZ2V0RXJyb3JMb2dXaXRoQ2hlY2tTY2VuYXJpb3MiLCJjaGVja1NjZW5hcmlvcyIsImdldFRhc2tCeUlkIiwidGFza0lkIiwidGFza3MiLCJnZXRBbGxUYXNrcyIsInZhbHVlcyIsIngiLCJlbnF1ZXVlVGFzayIsInRhc2tJbmZvIiwiYWRkZWQiLCJjaGFuZ2VkIiwiaWQiLCJyZW1vdmVkIiwiY2FuY2VsVGFzayIsImdldEV4cGVydEVycm9yTG9nIiwiZXJyb3Jsb2dFeHBlcnQiLCJnZXRIcmVmVG9FcnJvckxvZ1BkZiIsImVycm9yTG9nTmFtZSIsInByb3BzTmFtZSIsInByb3BzRHJpdmVOYW1lIiwiY2xlYXJEcmFmdCIsImNvbnZlcnREcmFmdEZyb21QcmV2R2Z2IiwicHJldkdmdkRyYWZ0SWQiLCJzZW5kQ2hhbmdlU2V0IiwiZGF0YSIsInNlbmRDaGFuZ2VTZXRTeW5jIiwicG9zdFN5bmMiLCJnZXRSZXF1aXNpdGVzIiwicmVxdWlzaXRlTGlzdCIsImdldElubmVyIiwiZ2V0UGFydGlhbElubmVyIiwicnVsZXMiLCJtYXhJbnN0YW5jZUNvdW50IiwidG9TdHJpbmciLCJnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlIiwiZm9ybWF0IiwiZ2V0RXhwbGFuYXRvcnlOb3RlIiwiZXhwbGFuYXRvcnlOb3RlIiwiZ2V0QXR0YWNobWVudEJ5SWQiLCJhdHRhY2htZW50SWQiLCJnZXRBbGxBdHRhY2htZW50cyIsInJlbW92ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudElkcyIsImNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImF0dGFjaG1lbnQiLCJjb250ZW50VXJpIiwibWV0YSIsInNldFByZXNlbnRhdGlvbiIsInByZXNlbnRhdGlvblR5cGUiLCJjb250ZW50IiwicmVxdWVzdCIsInB1dCIsIndpdGhSYXdCb2R5IiwicGF0Y2hQcmVzZW50YXRpb24iLCJwcmVzZW50YXRpb25Db250ZW50IiwicGF0Y2giLCJnZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpIiwiYWNjZXB0Q29kZSIsInN0YXR1cyIsInByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyIsImVycm9yRGF0YSIsIkZ1ZlNpemVUb29MYXJnZUVycm9yIiwibWVzc2FnZSIsIkh0dHBFcnJvciIsInVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmlzIiwic2VydmVyRXJyb3IiLCJpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXMiLCJzb3VyY2VzVG90YWxDb3VudCIsImUiLCJVbmtub3duRXJyb3IiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwibXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaSIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJzZXRBbGxDaGVja2JveGVzRm9yMTEzMTAzIiwiZW5hYmxlZCIsInVyaSIsInNldEVuYWJsZWQiLCJzZWFyY2hJbnN0YW5jZXNCeVRleHQiLCJ0ZXh0IiwicGF0aHNQcmVmaXgiLCJwYXRoc1RvU2VhcmNoIiwibWF4SW5zdGFuY2VDb3VudFBhcmFtcyIsInBhcmFtcyIsInNlYXJjaFN0cmluZyIsImN1c3RvbU5vcm1hbGl6ZSIsIm5vcm1hbGl6ZXJJZCIsInBhdGhQcmVmaXhlcyIsImltcG9ydEVtcGxveWVlcyIsImRlbGV0ZUluc3RhbmNlcyIsIm11bHRp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QUs5SixVQUFMLENBQ0RhLElBREMsQ0FDSSxLQUFLQyxXQUFMLENBQWlCLHdCQUFqQixDQURKLEVBRURxQixlQUZDLENBRWV3SCxNQUZmLEVBR0Q1SSxZQUhDLENBR1lnSixZQUhaLENBQU47QUFJSDs7QUFFMkIsUUFBZkMsZUFBZSxDQUFDekMsT0FBRCxFQUFpRDtBQUN6RSxVQUFNLEtBQUt2SCxVQUFMLENBQWdCNEgsS0FBaEIsQ0FBc0IsS0FBSzlHLFdBQUwsQ0FBaUIsT0FBakIsQ0FBdEIsRUFBaURDLFlBQWpELENBQThEd0csT0FBOUQsQ0FBTjtBQUNIOztBQUUyQixRQUFmMEMsZUFBZSxDQUFDQyxnQkFBRCxFQUEyQkMsU0FBM0IsRUFBK0Q7QUFDdkYsVUFBTUMsVUFBVSxHQUFHO0FBQUVGLE1BQUFBLGdCQUFnQixFQUFFQSxnQkFBcEI7QUFBc0NHLE1BQUFBLGVBQWUsRUFBRUY7QUFBdkQsS0FBbkI7QUFDQSxVQUFNLEtBQUtuSyxVQUFMLENBQWdCYSxJQUFoQixDQUFxQixLQUFLQyxXQUFMLENBQWlCLHdCQUFqQixDQUFyQixFQUFpRUMsWUFBakUsQ0FBOEVxSixVQUE5RSxDQUFOO0FBQ0g7O0FBclg0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgRmV0Y2ggfSBmcm9tIFwiLi4vSHR0cENsaWVudC9GZXRjaEltcGxlbWVudGF0aW9uL0ZldGNoXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3IgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9IdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBIdHRwU3RhdHVzQ29kZSwgSUh0dHBDbGllbnQgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBjcmVhdGVBdXRoZW50aWNhdGlvblByb3ZpZGVyIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvQXV0aGVudGljYXRpb25Nb2RlXCI7XG5cbmltcG9ydCB7IENoZWNrU2NlbmFyaW9UeXBlLCBJQ2FuZHlBcGlDbGllbnQsIElDYW5keUFwaURyYWZ0Q2xpZW50IH0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvckxvZyB9IGZyb20gXCIuL1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgeyBTZXJ2ZXJJbm5lclJlc3BvbnNlLCBTZXJ2ZXJKc29uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJJbm5lclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBGaWxlUHJvcGVydGllcywgVXBsb2FkRmlsZVByb3BlcnRpZXNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GaWxlUHJvcGVydGllc1wiO1xuaW1wb3J0IHsgQ3JlYXRlRHJhZnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0NyZWF0ZURyYWZ0L0NyZWF0ZURyYWZ0UmVzcG9uc2VcIjtcbmltcG9ydCB7IENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRXhwbGFuYXRvcnlOb3RlL0NyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlXCI7XG5pbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5pbXBvcnQgeyBTZXJ2ZXJDaGFuZ2VTZXQgfSBmcm9tIFwiLi9UeXBlcy9DaGFuZ2VTZXQvU2VydmVyQ2hhbmdlU2V0XCI7XG5pbXBvcnQgeyBTZXJ2ZXJUYXNrLCBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL1Rhc2tzXCI7XG5pbXBvcnQgeyBGb2N1c1NlcnZlckVycm9yQ29kZSwgR2V0QnlJbm5SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzVHlwZXNcIjtcbmltcG9ydCB7IEF0dGFjaEluZm8gfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9BdHRhY21lbnRzXCI7XG5pbXBvcnQgeyBEcmFmdFByZXNlbnRhdGlvblR5cGUgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL0RyYWZ0UHJlc2VudGF0aW9uVHlwZVwiO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uQ29udGVudCB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvUHJlc2VudGF0aW9uQ29udGVudFwiO1xuaW1wb3J0IHsgQ29udmVydERyYWZ0UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db252ZXJ0RHJhZnRSZXF1ZXN0XCI7XG5pbXBvcnQgeyBHZXRBdHRhY2htZW50c1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQXR0YWNobWVudHMvR2V0QXR0YWNobWVudHNSZXNwb25zZVwiO1xuaW1wb3J0IHsgRm9jdXNTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzU2VydmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IEdldFRhc2tzU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9HZXRUYXNrc1NlcnZlclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBEaWFnUmVzb3VyY2VzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9EaWFnUmVzb3VyY2VzUmVzcG9uc2VcIjtcbmltcG9ydCB7IFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlclJlcXVpc2l0ZXNSZXNwb25zZVwiO1xuaW1wb3J0IHsgaXNCdWZmZXIgfSBmcm9tIFwiLi9Jc0J1ZmZlclwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCwgRnVmQ29tYmluZU1ldGhvZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db21iaW5lRnVmUmVzdWx0XCI7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ3NSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZlYXR1cmVGbGFncy9GZWF0dXJlRmxhZ3NSZXNwb25zZVwiO1xuaW1wb3J0IHsgRGlnZXN0QXBpQ2xpZW50IH0gZnJvbSBcIi4vRGlnZXN0QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudFwiO1xuaW1wb3J0IHsgSURpZ2VzdEFwaUNsaWVudCB9IGZyb20gXCIuL0RpZ2VzdEFwaUNsaWVudC9JRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBGdWZTaXplVG9vTGFyZ2VFcnJvciB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GdWZTaXplVG9vTGFyZ2VFcnJvclwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcblxuY29uc3Qgc3RyYW5nZU9wdGlvbnMgPSB7IHNyYzogXCJjaGFuZ2VTZXRcIiwgZGF0YVZlcnNpb246IFwiMFwiIH07XG5cbmV4cG9ydCBlbnVtIFNlcnZlckVycm9ycyB7XG4gICAgRnVmU2l6ZVRvb0xhcmdlID0gXCJGdWZTaXplVG9vTGFyZ2VcIixcbiAgICBCYWRSZXF1ZXN0ID0gXCJCYWRSZXF1ZXN0XCIsXG4gICAgVW5rbm93bkVycm9yID0gXCJVbmtub3duRXJyb3JcIixcbn1cblxuZXhwb3J0IGNsYXNzIENhbmR5QXBpQ2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmZXRjaEltcGw6IEZldGNoLFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlWm9uZTogdW5kZWZpbmVkIHwgc3RyaW5nLFxuICAgICAgICBhdXRoZW50aWNhdGlvbjogdW5kZWZpbmVkIHwgQXV0aGVudGljYXRpb25Nb2RlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGZldGNoSW1wbCwgYmFzZVVybCwgY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlcihhdXRoZW50aWNhdGlvbiksIHtcbiAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IENhbmR5QXBpRHJhZnRDbGllbnQodGhpcy5odHRwQ2xpZW50LCBkcmFmdEZ1bGxJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURpZ2VzdEFwaUNsaWVudChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJRGlnZXN0QXBpQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIG5ldyBEaWdlc3RBcGlDbGllbnQodGhpcy5odHRwQ2xpZW50LCBkcmFmdEZ1bGxJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEluZm9CeUlubnMoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkLCBpbm5zOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8R2V0QnlJbm5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCBwYXRocyA9IGlubnMubWFwKGlubiA9PiBgQGZvY3VzLyR7aW5ufWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChkcmFmdEZ1bGxJZCwgXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhzKVxuICAgICAgICAgICAgLmpzb248Rm9jdXNTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBHZXRCeUlublJlc3BvbnNlID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaW5uIG9mIGlubnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlublNlcnZlclZhbHVlID0gcmVzcG9uc2VbYEBmb2N1cy8ke2lubn1gXT8udmFsdWU7XG4gICAgICAgICAgICBpZiAoaW5uU2VydmVyVmFsdWUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2lubl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBcIlNlcnZlciBkb2VzIG5vdCByZXR1cm4gaW5uIGluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlOiBGb2N1c1NlcnZlckVycm9yQ29kZS5Ob0lubkVycm9yLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbm5dID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5uU2VydmVyVmFsdWUudmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGU6IGlublNlcnZlclZhbHVlLmVycm9yQ29kZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBpbm5TZXJ2ZXJWYWx1ZS5lcnJvciA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGB2MS9kaWFnL3Jlc291cmNlc2ApLmpzb248RGlhZ1Jlc291cmNlc1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoYm9keS5mb3Jtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZURyYWZ0RnJvbURyaXZlKFxuICAgICAgICBuczogc3RyaW5nLFxuICAgICAgICBmdWZEcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnQtZnJvbS1kcml2ZWApXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICBuczogbnMsXG4gICAgICAgICAgICAgICAgZnVmRHJpdmVVcmk6IGZ1ZkRyaXZlVXJpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVFbXB0eURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nLCBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnRgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCwgZnVmQ29udGVudDogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQgfCBzdHJpbmcsIGZ1ZkNvbnRlbnQ/OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgaWYgKGdmdiA9PSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgICAgICAud2l0aENvbnRlbnRUeXBlKFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpXG4gICAgICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihmdWZDb250ZW50KVxuICAgICAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdmdiAhPSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZ2Z2OiBnZnYgfSlcbiAgICAgICAgICAgICAgICAud2l0aENvbnRlbnRUeXBlKFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpXG4gICAgICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShbXSkpXG4gICAgICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2Z2ID09IHVuZGVmaW5lZCAmJiBmdWZDb250ZW50ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNyZWF0ZSBkcmFmdDogbm8gZ2Z2IGFuZCBubyBmdWYgc3BlY2lmaWVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KGB2MS9ucy8ke25zfS9jcmVhdGUtZHJhZnRgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAud2l0aENvbnRlbnRUeXBlKFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpXG4gICAgICAgICAgICAud2l0aEJvZHlGcm9tQnVmZmVyKGZ1ZkNvbnRlbnQpXG4gICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjaGVja0FsaXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGBfc3RhdHVzL3BpbmdgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERyYWZ0VXJsKGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCwgZHJhZnRSZWxhdGVkVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHYxL25zLyR7ZHJhZnRGdWxsSWQubnN9L2RyYWZ0cy8ke2RyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZlYXR1cmVGbGFncygpOiBQcm9taXNlPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KFwidjEvZmVhdHVyZXMvZmxhZ3NcIikuanNvbjxGZWF0dXJlRmxhZ3NSZXNwb25zZT4oKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaURyYWZ0Q2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSUh0dHBDbGllbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUh0dHBDbGllbnQsIGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xuICAgICAgICB0aGlzLmRyYWZ0RnVsbElkID0gZHJhZnRGdWxsSWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0lubmVyRWRpdG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKGBpbm5lci1lZGl0b3IvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZEZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1ZlwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiY29udmVyc2lvblwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyRnVmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5jbGllbnRJbmZvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmZvcm1zQ2xpZW50SW5mbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXJyb3JMb2cpKS5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyhjaGVja1NjZW5hcmlvczogQ2hlY2tTY2VuYXJpb1R5cGVbXSk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImVycm9ybG9nXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7IGNoZWNrU2NlbmFyaW9zOiBjaGVja1NjZW5hcmlvcyB9KVxuICAgICAgICAgICAgLmpzb248U2VydmVyRXJyb3JMb2c+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFRhc2tCeUlkKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTxTZXJ2ZXJUYXNrIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiB0YXNrc1tgQHRhc2svJHt0YXNrSWR9YF0/LnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxUYXNrcygpOiBQcm9taXNlPFNlcnZlclRhc2tbXT4ge1xuICAgICAgICBjb25zdCB0YXNrcyA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAdGFzay8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRUYXNrc1NlcnZlclJlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0YXNrcykubWFwKHggPT4geC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGVucXVldWVUYXNrKHRhc2tJZDogc3RyaW5nLCB0YXNrSW5mbzogVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgW2BAdGFzay8ke3Rhc2tJZH1gXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGFza0luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdGFza0lkLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FuY2VsVGFzayh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW2BAdGFzay8ke3Rhc2tJZH1gXSxcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFeHBlcnRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXJyb3Jsb2dFeHBlcnQpKVxuICAgICAgICAgICAgLmpzb248U2VydmVyRXJyb3JMb2c+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Vycm9yTG9nUGRmKGVycm9yTG9nTmFtZTogc3RyaW5nLCBwcm9wc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKHRoaXMuZ2V0RHJhZnRVcmwoXCJwcmVzZW50YXRpb25zL2Vycm9yTG9nL3ByaW50XCIpLCB7XG4gICAgICAgICAgICBlcnJvckxvZ05hbWU6IGVycm9yTG9nTmFtZSxcbiAgICAgICAgICAgIHByb3BzRHJpdmVOYW1lOiBwcm9wc05hbWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbGVhckRyYWZ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiY2xlYXJcIikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjb252ZXJ0RHJhZnRGcm9tUHJldkdmdih7IHByZXZHZnZEcmFmdElkLCBnZnYgfTogQ29udmVydERyYWZ0UmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiY29udmVydFwiKSkud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgIGlkOiBwcmV2R2Z2RHJhZnRJZCxcbiAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VuZENoYW5nZVNldChkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZENoYW5nZVNldFN5bmMoZGF0YTogU2VydmVyQ2hhbmdlU2V0KTogSHR0cFN0YXR1c0NvZGUge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3RTeW5jKFxuICAgICAgICAgICAgdGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpLFxuICAgICAgICAgICAgc3RyYW5nZU9wdGlvbnMsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFJlcXVpc2l0ZXMocmVxdWlzaXRlTGlzdDogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShyZXF1aXNpdGVMaXN0KVxuICAgICAgICAgICAgLmpzb248U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRJbm5lcihwYXRoczogdW5kZWZpbmVkIHwgcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aHMpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJJbm5lclJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsSW5uZXIocnVsZXM6IFtcIipcIl0gfCBzdHJpbmdbXSwgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlcik6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LXBhcnRpYWwtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKG1heEluc3RhbmNlQ291bnQgIT0gdW5kZWZpbmVkICYmIHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudC50b1N0cmluZygpIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJ1bGVzKVxuICAgICAgICAgICAgLmpzb248U2VydmVySW5uZXJSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZShydWxlczogW1wiKlwiXSB8IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJKc29uUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZvcm1hdDogXCJKc29uVHJlZVwiIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJ1bGVzKVxuICAgICAgICAgICAgLmpzb248U2VydmVySnNvblJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFeHBsYW5hdG9yeU5vdGUoKTogUHJvbWlzZTxDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmV4cGxhbmF0b3J5Tm90ZSkpXG4gICAgICAgICAgICAuanNvbjxDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudEJ5SWQoYXR0YWNobWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEF0dGFjaEluZm8+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEBhdHRhY2htZW50LyR7YXR0YWNobWVudElkfWBdKVxuICAgICAgICAgICAgLmpzb248R2V0QXR0YWNobWVudHNSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0/LnZhbHVlID8/IHJlamVjdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50cygpOiBQcm9taXNlPEF0dGFjaEluZm9bXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0QXR0YWNobWVudHNSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzdWx0KS5tYXAoeCA9PiB4LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlQXR0YWNobWVudHMoYXR0YWNobWVudElkczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IHt9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IGF0dGFjaG1lbnRJZHMubWFwKGlkID0+IGBAYXR0YWNobWVudC8ke2lkfWApLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMoYXR0YWNobWVudHM6IHJlYWRvbmx5IEF0dGFjaEluZm9bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0ge307XG4gICAgICAgIGZvciAoY29uc3QgYXR0YWNobWVudCBvZiBhdHRhY2htZW50cykge1xuICAgICAgICAgICAgY2hhbmdlZFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50LmlkfWBdID0ge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRVcmk6IGF0dGFjaG1lbnQuY29udGVudFVyaSxcbiAgICAgICAgICAgICAgICBpZDogYXR0YWNobWVudC5pZCxcbiAgICAgICAgICAgICAgICBtZXRhOiBhdHRhY2htZW50Lm1ldGEsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiBjaGFuZ2VkLFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFByZXNlbnRhdGlvbihwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IHN0cmluZyB8IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpO1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQnVmZmVyKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC53aXRoUmF3Qm9keShjb250ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhKc29uQm9keShjb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCByZXF1ZXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwYXRjaFByZXNlbnRhdGlvbihcbiAgICAgICAgcHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLFxuICAgICAgICBwcmVzZW50YXRpb25Db250ZW50OiBQcmVzZW50YXRpb25Db250ZW50XG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wYXRjaCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKHByZXNlbnRhdGlvblR5cGUpKS53aXRoSnNvbkJvZHkocHJlc2VudGF0aW9uQ29udGVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KGB2MS9maWxlcy9nZXQtcHJvcGVydGllc2ApXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZHJpdmVVcmk6IGRyaXZlVXJpIH0pXG4gICAgICAgICAgICAuYWNjZXB0Q29kZSg0MDApO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248RmlsZVByb3BlcnRpZXM+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyhkcml2ZVVyaTogc3RyaW5nLCBnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQoYHYxL2ZpbGVzL3ByZXBhcmUtYW5kLWdldC1wcm9wZXJ0aWVzYClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiwgZHJpdmVVcmk6IGRyaXZlVXJpIH0pXG4gICAgICAgICAgICAuYWNjZXB0Q29kZSg0MTMpO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDEzKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvckRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uPHsgZXJyb3JDb2RlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9PigpO1xuICAgICAgICAgICAgaWYgKGVycm9yRGF0YS5lcnJvckNvZGUgPT09IFwiRnVmU2l6ZVRvb0xhcmdlXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRnVmU2l6ZVRvb0xhcmdlRXJyb3IoZXJyb3JEYXRhLm1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvcihlcnJvckRhdGEubWVzc2FnZSwgcmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxGaWxlUHJvcGVydGllcz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdXBsb2FkQW5kR2V0RmlsZVByb3BlcnRpZXMoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxVcGxvYWRGaWxlUHJvcGVydGllc1Jlc3BvbnNlPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KGB2MS9maWxlcy91cGxvYWQtYW5kLWdldC1wcm9wZXJ0aWVzYClcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZ2Z2OiBnZnYgfSlcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRyaXZlVXJpcylcbiAgICAgICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMClcbiAgICAgICAgICAgICAgICAuYWNjZXB0Q29kZSg0MTMpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IFNlcnZlckVycm9yczsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc2VydmVyRXJyb3I6IGRhdGEuZXJyb3JDb2RlLCBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsIHNvdXJjZXNUb3RhbENvdW50OiAwIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjxVcGxvYWRGaWxlUHJvcGVydGllc1Jlc3BvbnNlPigpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2VydmVyRXJyb3I6IFNlcnZlckVycm9ycy5Vbmtub3duRXJyb3IsXG4gICAgICAgICAgICAgICAgaW52YWxpZFNvdXJjZURyaXZlQ29udGVudE5hbWVzOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXNUb3RhbENvdW50OiAwLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRGdWZCeURyaXZlVXJpKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnB1dCh0aGlzLmdldERyYWZ0VXJsKFwic2V0LWZ1ZlwiKSkud2l0aFF1ZXJ5UGFyYW1zKHsgZHJpdmVVcmk6IGRyaXZlVXJpIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZCxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcInRyYW5zZmVyL2NvbWJpbmUtd2l0aC1mdWZcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZnVmRHJpdmVVcmk6IGRyaXZlVXJpLCBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kIH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2RcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmc1wiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRyaXZlVXJpcyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxDb21iaW5lRnVmUmVzdWx0PigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcIm5vcm1hbGl6ZVwiKSkud2l0aEpzb25Cb2R5KHJ1bGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvblR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHJhZnRVcmwoZHJhZnRSZWxhdGVkVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJhZnRVcmwoYHByZXNlbnRhdGlvbnMvJHtwcmVzZW50YXRpb25UeXBlLnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEFsbENoZWNrYm94ZXNGb3IxMTMxMDMoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB1cmkgPSB0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvY2hlY2stYWxsXCIpO1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucGF0Y2godXJpKS53aXRoUXVlcnlQYXJhbXMoeyBzZXRFbmFibGVkOiBlbmFibGVkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hJbnN0YW5jZXNCeVRleHQoXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgcGF0aHNQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcGF0aHNUb1NlYXJjaDogc3RyaW5nW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IG1heEluc3RhbmNlQ291bnRQYXJhbXMgPSBtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCA/IHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudCB9IDoge307XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgc2VhcmNoU3RyaW5nOiB0ZXh0LCBwYXRoc1ByZWZpeDogcGF0aHNQcmVmaXgsIC4uLm1heEluc3RhbmNlQ291bnRQYXJhbXMgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL3NlYXJjaC1ieS1zdHJpbmdcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aHNUb1NlYXJjaClcbiAgICAgICAgICAgIC5qc29uPHN0cmluZ1tdPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjdXN0b21Ob3JtYWxpemUobm9ybWFsaXplcklkOiBzdHJpbmcsIHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyBub3JtYWxpemVySWQ6IG5vcm1hbGl6ZXJJZCB9O1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9jdXN0b20tbm9ybWFsaXplXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhwYXJhbXMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhQcmVmaXhlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGltcG9ydEVtcGxveWVlcyhyZXF1ZXN0OiBJbXBvcnRFbXBsb3llZXNSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wYXRjaCh0aGlzLmdldERyYWZ0VXJsKFwic3RhZmZcIikpLndpdGhKc29uQm9keShyZXF1ZXN0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZGVsZXRlSW5zdGFuY2VzKG11bHRpcGxpY2l0eVBhdGg6IHN0cmluZywgaW5zdGFuY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0geyBtdWx0aXBsaWNpdHlQYXRoOiBtdWx0aXBsaWNpdHlQYXRoLCBpbnN0YW5jZU51bWJlcnM6IGluc3RhbmNlcyB9O1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvZGVsZXRlLWluc3RhbmNlc1wiKSkud2l0aEpzb25Cb2R5KHBhcmFtZXRlcnMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -68,6 +68,10 @@ class FakeCandyApiClient {
|
|
|
68
68
|
exports.FakeCandyApiClient = FakeCandyApiClient;
|
|
69
69
|
|
|
70
70
|
class FakeCandyApiDraftClient {
|
|
71
|
+
deleteInstances(multiplicityPath, instances) {
|
|
72
|
+
return Promise.resolve();
|
|
73
|
+
}
|
|
74
|
+
|
|
71
75
|
importEmployees(request) {
|
|
72
76
|
return Promise.resolve();
|
|
73
77
|
}
|
|
@@ -239,4 +243,4 @@ class FakeCandyApiDraftClient {
|
|
|
239
243
|
}
|
|
240
244
|
|
|
241
245
|
exports.FakeCandyApiDraftClient = FakeCandyApiDraftClient;
|
|
242
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9GYWtlQ2FuZHlBcGlDbGllbnQudHMiXSwibmFtZXMiOlsiRmFrZUNhbmR5QXBpQ2xpZW50IiwiZGlnZXN0Q2xpZW50IiwiRmFrZURpZ2VzdEFwaUNsaWVudCIsImNyZWF0ZURpZ2VzdEFwaUNsaWVudCIsImRyYWZ0RnVsbElkIiwiY3JlYXRlUGlja2xpc3QiLCJnSWQiLCJkYXRhIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0FsaXZlIiwidW5kZWZpbmVkIiwiY3JlYXRlRHJhZnQiLCJucyIsImdmdiIsImJvZHkiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZm9yRHJhZnQiLCJGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwiZnVmRHJpdmVVcmkiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJnZXRGZWF0dXJlRmxhZ3NXaXRob3V0UHJvbWlzZSIsImZlYXR1cmVGbGFncyIsImdldEZlYXR1cmVGbGFncyIsInJlc3BvbnNlIiwiY2FuZHlUZXN0RmVhdHVyZSIsImltcG9ydEVtcGxveWVlcyIsInJlcXVlc3QiLCJjYW5jZWxUYXNrIiwidGFza0lkIiwiY2xlYXJEcmFmdCIsImNvbnZlcnREcmFmdEZyb21QcmV2R2Z2IiwiY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiZW5xdWV1ZVRhc2siLCJ0YXNrSW5mbyIsImdldEFsbEF0dGFjaG1lbnRzIiwiZ2V0QWxsVGFza3MiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsImdldEVycm9yTG9nIiwiZ2V0RXJyb3JMb2dXaXRoQ2hlY2tTY2VuYXJpb3MiLCJjaGVja1NjZW5hcmlvcyIsImdldEV4cGVydEVycm9yTG9nIiwiZ2V0RXhwbGFuYXRvcnlOb3RlIiwiZ2V0RmlsZVByb3BlcnRpZXMiLCJkcml2ZVVyaSIsInByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyIsInVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmlzIiwic2VydmVyRXJyb3IiLCJTZXJ2ZXJFcnJvcnMiLCJVbmtub3duRXJyb3IiLCJzb3VyY2VzVG90YWxDb3VudCIsImludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lcyIsImdldEhyZWZEb3dubG9hZEZ1ZiIsImdldEhyZWZEb3dubG9hZElubmVyIiwiZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nIiwiZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmIiwiZ2V0SHJlZlRvRXJyb3JMb2dQZGYiLCJlcnJvckxvZ05hbWUiLCJwcm9wc05hbWUiLCJnZXRIcmVmVG9Jbm5lckVkaXRvciIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJwYXRocyIsImdldFBhcnRpYWxJbm5lciIsInJ1bGVzIiwibWF4SW5zdGFuY2VDb3VudCIsImdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJnZXRUYXNrQnlJZCIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJwYXRjaFByZXNlbnRhdGlvbiIsInR5cGUiLCJjb250ZW50IiwicmVtb3ZlQXR0YWNobWVudHMiLCJhdHRhY2htZW50SWRzIiwic2VuZENoYW5nZVNldCIsInNlbmRDaGFuZ2VTZXRTeW5jIiwic2V0RnVmQnlEcml2ZVVyaSIsImNvbWJpbmVGdWZCeURyaXZlVXJpIiwiY29tYmluZU1ldGhvZCIsIm11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJzZXRQcmVzZW50YXRpb24iLCJzZXRBbGxDaGVja2JveGVzRm9yMTEzMTAzIiwiZW5hYmxlZCIsInNlYXJjaEluc3RhbmNlc0J5VGV4dCIsInRleHQiLCJwYXRoUHJlZml4IiwicGF0aHNUb1NlYXJjaCIsImN1c3RvbU5v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IjpbImltcG9ydCB0eXBlIHsgUGlja2xpc3REYXRhSXRlbSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvc3JjL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uL0Vycm9yc1wiO1xuaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IENoZWNrU2NlbmFyaW9UeXBlLCBJQ2FuZHlBcGlDbGllbnQsIElDYW5keUFwaURyYWZ0Q2xpZW50IH0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4vVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVySW5uZXJSZXNwb25zZSwgU2VydmVySnNvblJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVySW5uZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgRmlsZVByb3BlcnRpZXMsIFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvRmlsZVByb3BlcnRpZXNcIjtcbmltcG9ydCB7IENyZWF0ZURyYWZ0UmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9DcmVhdGVEcmFmdC9DcmVhdGVEcmFmdFJlc3BvbnNlXCI7XG5pbXBvcnQgeyBDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0V4cGxhbmF0b3J5Tm90ZS9DcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZVwiO1xuaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEZ1bGxJZFwiO1xuaW1wb3J0IHsgU2VydmVyQ2hhbmdlU2V0IH0gZnJvbSBcIi4vVHlwZXMvQ2hhbmdlU2V0L1NlcnZlckNoYW5nZVNldFwiO1xuaW1wb3J0IHsgU2VydmVyVGFzaywgVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8gfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9UYXNrc1wiO1xuaW1wb3J0IHsgR2V0QnlJbm5SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzVHlwZXNcIjtcbmltcG9ydCB7IEF0dGFjaEluZm8gfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9BdHRhY21lbnRzXCI7XG5pbXBvcnQgeyBEcmFmdFByZXNlbnRhdGlvblR5cGUgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL0RyYWZ0UHJlc2VudGF0aW9uVHlwZVwiO1xuaW1wb3J0IHsgQ29udmVydERyYWZ0UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db252ZXJ0RHJhZnRSZXF1ZXN0XCI7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250ZW50IH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9QcmVzZW50YXRpb25Db250ZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IENvbWJpbmVGdWZSZXN1bHQsIEZ1ZkNvbWJpbmVNZXRob2QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29tYmluZUZ1ZlJlc3VsdFwiO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9GZWF0dXJlRmxhZ3MvRmVhdHVyZUZsYWdzUmVzcG9uc2VcIjtcbmltcG9ydCB7IElEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi9EaWdlc3RBcGlDbGllbnQvSURpZ2VzdEFwaUNsaWVudFwiO1xuaW1wb3J0IHsgRmFrZURpZ2VzdEFwaUNsaWVudCB9IGZyb20gXCIuL0RpZ2VzdEFwaUNsaWVudC9GYWtlcy9GYWtlRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvcnMgfSBmcm9tIFwiLi9DYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcblxuZXhwb3J0IGNsYXNzIEZha2VDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWdlc3RDbGllbnQgPSBuZXcgRmFrZURpZ2VzdEFwaUNsaWVudCgpO1xuXG4gICAgcHVibGljIGNyZWF0ZURpZ2VzdEFwaUNsaWVudChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJRGlnZXN0QXBpQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlnZXN0Q2xpZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVQaWNrbGlzdChnSWQ6IHN0cmluZywgZGF0YTogUGlja2xpc3REYXRhSXRlbVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlnZXN0Q2xpZW50LmNyZWF0ZVBpY2tsaXN0KGdJZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbEdmdnMoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCwgYm9keTogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcgfCB1bmRlZmluZWQsIGJvZHk/OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IEZha2VDYW5keUFwaURyYWZ0Q2xpZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0RnJvbURyaXZlKFxuICAgICAgICBuczogc3RyaW5nLFxuICAgICAgICBmdWZEcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUVtcHR5RHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5mb0J5SW5ucyhkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGlubnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxHZXRCeUlublJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFnc1dpdGhvdXRQcm9taXNlKGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzUmVzcG9uc2UpOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSB7XG4gICAgICAgIHJldHVybiBmZWF0dXJlRmxhZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFncygpOiBQcm9taXNlPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSA9IHsgY2FuZHlUZXN0RmVhdHVyZTogXCJ0cnVlXCIgfTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmFrZUNhbmR5QXBpRHJhZnRDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgcHVibGljIGltcG9ydEVtcGxveWVlcyhyZXF1ZXN0OiBJbXBvcnRFbXBsb3llZXNSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuY2VsVGFzayh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyRHJhZnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERyYWZ0RnJvbVByZXZHZnYocmVxdWVzdDogQ29udmVydERyYWZ0UmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMoYXR0YWNobWVudHM6IHJlYWRvbmx5IEF0dGFjaEluZm9bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVucXVldWVUYXNrKHRhc2tJZDogc3RyaW5nLCB0YXNrSW5mbzogVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbGxBdHRhY2htZW50cygpOiBQcm9taXNlPEF0dGFjaEluZm9bXT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsVGFza3MoKTogUHJvbWlzZTxTZXJ2ZXJUYXNrW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF0dGFjaG1lbnRCeUlkKGF0dGFjaG1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBdHRhY2hJbmZvPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RXJyb3JMb2dXaXRoQ2hlY2tTY2VuYXJpb3MoY2hlY2tTY2VuYXJpb3M6IENoZWNrU2NlbmFyaW9UeXBlW10pOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGVydEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwbGFuYXRvcnlOb3RlKCk6IFByb21pc2U8Q3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBsb2FkQW5kR2V0RmlsZVByb3BlcnRpZXMoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxVcGxvYWRGaWxlUHJvcGVydGllc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgc2VydmVyRXJyb3I6IFNlcnZlckVycm9ycy5Vbmtub3duRXJyb3IsXG4gICAgICAgICAgICBzb3VyY2VzVG90YWxDb3VudDogMCxcbiAgICAgICAgICAgIGludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lczogXCJcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZEZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkSW5uZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRXJyb3JMb2dQZGYoZXJyb3JMb2dOYW1lOiBzdHJpbmcsIHByb3BzTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0lubmVyRWRpdG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRSZXF1aXNpdGVzKHJlcXVpc2l0ZUxpc3Q6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRJbm5lcihwYXRoczogcmVhZG9ubHkgc3RyaW5nW10gfCB1bmRlZmluZWQpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsSW5uZXIocnVsZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUocnVsZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyKTogUHJvbWlzZTxTZXJ2ZXJKc29uUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGFza0J5SWQodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPFNlcnZlclRhc2sgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXRjaFByZXNlbnRhdGlvbih0eXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VTZXQoZGF0YTogU2VydmVyQ2hhbmdlU2V0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZENoYW5nZVNldFN5bmMoZGF0YTogU2VydmVyQ2hhbmdlU2V0KTogSHR0cFN0YXR1c0NvZGUge1xuICAgICAgICByZXR1cm4gMjAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGdWZCeURyaXZlVXJpKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2RcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQcmVzZW50YXRpb24odHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLCBjb250ZW50OiBzdHJpbmcgfCB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyhlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VhcmNoSW5zdGFuY2VzQnlUZXh0KFxuICAgICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICAgIHBhdGhQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcGF0aHNUb1NlYXJjaDogc3RyaW5nW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjdXN0b21Ob3JtYWxpemUobm9ybWFsaXplcklkOiBzdHJpbmcsIHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
246
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9GYWtlQ2FuZHlBcGlDbGllbnQudHMiXSwibmFtZXMiOlsiRmFrZUNhbmR5QXBpQ2xpZW50IiwiZGlnZXN0Q2xpZW50IiwiRmFrZURpZ2VzdEFwaUNsaWVudCIsImNyZWF0ZURpZ2VzdEFwaUNsaWVudCIsImRyYWZ0RnVsbElkIiwiY3JlYXRlUGlja2xpc3QiLCJnSWQiLCJkYXRhIiwiZ2V0QWxsR2Z2cyIsImFib3J0U2lnbmFsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0FsaXZlIiwidW5kZWZpbmVkIiwiY3JlYXRlRHJhZnQiLCJucyIsImdmdiIsImJvZHkiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZm9yRHJhZnQiLCJGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwiZnVmRHJpdmVVcmkiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJnZXRGZWF0dXJlRmxhZ3NXaXRob3V0UHJvbWlzZSIsImZlYXR1cmVGbGFncyIsImdldEZlYXR1cmVGbGFncyIsInJlc3BvbnNlIiwiY2FuZHlUZXN0RmVhdHVyZSIsImRlbGV0ZUluc3RhbmNlcyIsIm11bHRpcGxpY2l0eVBhdGgiLCJpbnN0YW5jZXMiLCJpbXBvcnRFbXBsb3llZXMiLCJyZXF1ZXN0IiwiY2FuY2VsVGFzayIsInRhc2tJZCIsImNsZWFyRHJhZnQiLCJjb252ZXJ0RHJhZnRGcm9tUHJldkdmdiIsImNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJnZXRBbGxBdHRhY2htZW50cyIsImdldEFsbFRhc2tzIiwiZ2V0QXR0YWNobWVudEJ5SWQiLCJhdHRhY2htZW50SWQiLCJnZXRFcnJvckxvZyIsImdldEVycm9yTG9nV2l0aENoZWNrU2NlbmFyaW9zIiwiY2hlY2tTY2VuYXJpb3MiLCJnZXRFeHBlcnRFcnJvckxvZyIsImdldEV4cGxhbmF0b3J5Tm90ZSIsImdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmkiLCJwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMiLCJ1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpcyIsInNlcnZlckVycm9yIiwiU2VydmVyRXJyb3JzIiwiVW5rbm93bkVycm9yIiwic291cmNlc1RvdGFsQ291bnQiLCJpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXMiLCJnZXRIcmVmRG93bmxvYWRGdWYiLCJnZXRIcmVmRG93bmxvYWRJbm5lciIsImdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZyIsImdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbyIsImdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZiIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwiZ2V0SHJlZlRvSW5uZXJFZGl0b3IiLCJnZXRSZXF1aXNpdGVzIiwicmVxdWlzaXRlTGlzdCIsImdldElubmVyIiwicGF0aHMiLCJnZXRQYXJ0aWFsSW5uZXIiLCJydWxlcyIsIm1heEluc3RhbmNlQ291bnQiLCJnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlIiwiZ2V0VGFza0J5SWQiLCJub3JtYWxpemVCeVJ1bGVzIiwicGF0Y2hQcmVzZW50YXRpb24iLCJ0eXBlIiwiY29udGVudCIsInJlbW92ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudElkcyIsInNlbmRDaGFuZ2VTZXQiLCJzZW5kQ2hhbmdlU2V0U3luYyIsInNldEZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lRnVmQnlEcml2ZVVyaSIsImNvbWJpbmVNZXRob2QiLCJtdWx0aXBsZUNvbWJpbmVGdWZCeURyaXZlVXJpIiwic2V0UHJlc2VudGF0aW9uIiwic2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyIsImVuYWJsZWQiLCJzZWFyY2hJbnN0YW5jZXNCeVRleHQiLCJ0ZXh0IiwicGF0aFByZWZpeCIsInBhdGhzVG9TZWFyY2giLCJjdXN0b21Ob3JtYWxpemUiLCJub3JtYWxpemVySWQiLCJwYXRoUHJlZml4ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFxQkE7O0FBQ0E7O0FBR08sTUFBTUEsa0JBQU4sQ0FBb0Q7QUFBQTtBQUFBLFNBQ3RDQyxZQURzQyxHQUN2QixJQUFJQyx3Q0FBSixFQUR1QjtBQUFBOztBQUdoREMsRUFBQUEscUJBQXFCLENBQUNDLFdBQUQsRUFBNkM7QUFDckUsV0FBTyxLQUFLSCxZQUFaO0FBQ0g7O0FBRU1JLEVBQUFBLGNBQWMsQ0FBQ0MsR0FBRCxFQUFjQyxJQUFkLEVBQThDO0FBQy9ELFNBQUtOLFlBQUwsQ0FBa0JJLGNBQWxCLENBQWlDQyxHQUFqQyxFQUFzQ0MsSUFBdEM7QUFDSDs7QUFFTUMsRUFBQUEsVUFBVSxDQUFDQyxXQUFELEVBQStDO0FBQzVELFdBQU9DLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixFQUFoQixDQUFQO0FBQ0g7O0FBRU1DLEVBQUFBLFVBQVUsR0FBa0I7QUFDL0IsV0FBT0YsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBSU1DLEVBQUFBLFdBQVcsQ0FBQ0MsRUFBRCxFQUFhQyxHQUFiLEVBQXNDQyxJQUF0QyxFQUFtRjtBQUNqRyxVQUFNLElBQUlDLDJCQUFKLEVBQU47QUFDSDs7QUFFTUMsRUFBQUEsUUFBUSxDQUFDZixXQUFELEVBQWlEO0FBQzVELFdBQU8sSUFBSWdCLHVCQUFKLEVBQVA7QUFDSDs7QUFFTUMsRUFBQUEsb0JBQW9CLENBQ3ZCTixFQUR1QixFQUV2Qk8sV0FGdUIsRUFHdkJiLFdBSHVCLEVBSUs7QUFDNUIsVUFBTSxJQUFJUywyQkFBSixFQUFOO0FBQ0g7O0FBRU1LLEVBQUFBLGdCQUFnQixDQUFDUixFQUFELEVBQWFDLEdBQWIsRUFBMEJQLFdBQTFCLEVBQW1GO0FBQ3RHLFVBQU0sSUFBSVMsMkJBQUosRUFBTjtBQUNIOztBQUVNTSxFQUFBQSxh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aEIsQ0FBUDtBQUNIOztBQUVNMEYsRUFBQUEsZUFBZSxDQUFDQyxZQUFELEVBQXVCQyxZQUF2QixFQUE4RDtBQUNoRixXQUFPN0YsT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxTQUFoQixDQUFQO0FBQ0g7O0FBMUxnRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGlja2xpc3REYXRhSXRlbSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvc3JjL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uL0Vycm9yc1wiO1xuaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IENoZWNrU2NlbmFyaW9UeXBlLCBJQ2FuZHlBcGlDbGllbnQsIElDYW5keUFwaURyYWZ0Q2xpZW50IH0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4vVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVySW5uZXJSZXNwb25zZSwgU2VydmVySnNvblJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVySW5uZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgRmlsZVByb3BlcnRpZXMsIFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvRmlsZVByb3BlcnRpZXNcIjtcbmltcG9ydCB7IENyZWF0ZURyYWZ0UmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9DcmVhdGVEcmFmdC9DcmVhdGVEcmFmdFJlc3BvbnNlXCI7XG5pbXBvcnQgeyBDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0V4cGxhbmF0b3J5Tm90ZS9DcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZVwiO1xuaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEZ1bGxJZFwiO1xuaW1wb3J0IHsgU2VydmVyQ2hhbmdlU2V0IH0gZnJvbSBcIi4vVHlwZXMvQ2hhbmdlU2V0L1NlcnZlckNoYW5nZVNldFwiO1xuaW1wb3J0IHsgU2VydmVyVGFzaywgVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8gfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9UYXNrc1wiO1xuaW1wb3J0IHsgR2V0QnlJbm5SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzVHlwZXNcIjtcbmltcG9ydCB7IEF0dGFjaEluZm8gfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9BdHRhY21lbnRzXCI7XG5pbXBvcnQgeyBEcmFmdFByZXNlbnRhdGlvblR5cGUgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL0RyYWZ0UHJlc2VudGF0aW9uVHlwZVwiO1xuaW1wb3J0IHsgQ29udmVydERyYWZ0UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db252ZXJ0RHJhZnRSZXF1ZXN0XCI7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250ZW50IH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9QcmVzZW50YXRpb25Db250ZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IENvbWJpbmVGdWZSZXN1bHQsIEZ1ZkNvbWJpbmVNZXRob2QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29tYmluZUZ1ZlJlc3VsdFwiO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9GZWF0dXJlRmxhZ3MvRmVhdHVyZUZsYWdzUmVzcG9uc2VcIjtcbmltcG9ydCB7IElEaWdlc3RBcGlDbGllbnQgfSBmcm9tIFwiLi9EaWdlc3RBcGlDbGllbnQvSURpZ2VzdEFwaUNsaWVudFwiO1xuaW1wb3J0IHsgRmFrZURpZ2VzdEFwaUNsaWVudCB9IGZyb20gXCIuL0RpZ2VzdEFwaUNsaWVudC9GYWtlcy9GYWtlRGlnZXN0QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvcnMgfSBmcm9tIFwiLi9DYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcblxuZXhwb3J0IGNsYXNzIEZha2VDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWdlc3RDbGllbnQgPSBuZXcgRmFrZURpZ2VzdEFwaUNsaWVudCgpO1xuXG4gICAgcHVibGljIGNyZWF0ZURpZ2VzdEFwaUNsaWVudChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQpOiBJRGlnZXN0QXBpQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlnZXN0Q2xpZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVQaWNrbGlzdChnSWQ6IHN0cmluZywgZGF0YTogUGlja2xpc3REYXRhSXRlbVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlnZXN0Q2xpZW50LmNyZWF0ZVBpY2tsaXN0KGdJZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbEdmdnMoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCwgYm9keTogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcgfCB1bmRlZmluZWQsIGJvZHk/OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IEZha2VDYW5keUFwaURyYWZ0Q2xpZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0RnJvbURyaXZlKFxuICAgICAgICBuczogc3RyaW5nLFxuICAgICAgICBmdWZEcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUVtcHR5RHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5mb0J5SW5ucyhkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGlubnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxHZXRCeUlublJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFnc1dpdGhvdXRQcm9taXNlKGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzUmVzcG9uc2UpOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSB7XG4gICAgICAgIHJldHVybiBmZWF0dXJlRmxhZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFncygpOiBQcm9taXNlPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSA9IHsgY2FuZHlUZXN0RmVhdHVyZTogXCJ0cnVlXCIgfTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmFrZUNhbmR5QXBpRHJhZnRDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgcHVibGljIGRlbGV0ZUluc3RhbmNlcyhtdWx0aXBsaWNpdHlQYXRoOiBzdHJpbmcsIGluc3RhbmNlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBvcnRFbXBsb3llZXMocmVxdWVzdDogSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRyYWZ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnREcmFmdEZyb21QcmV2R2Z2KHJlcXVlc3Q6IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzKGF0dGFjaG1lbnRzOiByZWFkb25seSBBdHRhY2hJbmZvW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsQXR0YWNobWVudHMoKTogUHJvbWlzZTxBdHRhY2hJbmZvW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbFRhc2tzKCk6IFByb21pc2U8U2VydmVyVGFza1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nV2l0aENoZWNrU2NlbmFyaW9zKGNoZWNrU2NlbmFyaW9zOiBDaGVja1NjZW5hcmlvVHlwZVtdKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFeHBlcnRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzKFxuICAgICAgICBkcml2ZVVyaXM6IHN0cmluZ1tdLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8VXBsb2FkRmlsZVByb3BlcnRpZXNSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yLFxuICAgICAgICAgICAgc291cmNlc1RvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgICBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2coKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Vycm9yTG9nUGRmKGVycm9yTG9nTmFtZTogc3RyaW5nLCBwcm9wc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Jbm5lckVkaXRvcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5uZXIocGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFydGlhbElubmVyKHJ1bGVzOiByZWFkb25seSBzdHJpbmdbXSwgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlcik6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsSW5uZXJBc0pzb25UcmVlKHJ1bGVzOiByZWFkb25seSBzdHJpbmdbXSwgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlcik6IFByb21pc2U8U2VydmVySnNvblJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRhc2tCeUlkKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTxTZXJ2ZXJUYXNrIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm9ybWFsaXplQnlSdWxlcyhydWxlczogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGF0Y2hQcmVzZW50YXRpb24odHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLCBjb250ZW50OiBQcmVzZW50YXRpb25Db250ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQXR0YWNobWVudHMoYXR0YWNobWVudElkczogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kQ2hhbmdlU2V0KGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbmRDaGFuZ2VTZXRTeW5jKGRhdGE6IFNlcnZlckNoYW5nZVNldCk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgcmV0dXJuIDIwMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RnVmQnlEcml2ZVVyaShkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2RcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtdWx0aXBsZUNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaXM6IHN0cmluZ1tdLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UHJlc2VudGF0aW9uKHR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogc3RyaW5nIHwgdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEFsbENoZWNrYm94ZXNGb3IxMTMxMDMoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaEluc3RhbmNlc0J5VGV4dChcbiAgICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgICBwYXRoUHJlZml4OiBzdHJpbmcsXG4gICAgICAgIHBhdGhzVG9TZWFyY2g6IHN0cmluZ1tdLFxuICAgICAgICBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyXG4gICAgKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3VzdG9tTm9ybWFsaXplKG5vcm1hbGl6ZXJJZDogc3RyaW5nLCBwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -238,8 +238,12 @@ class KCLangRuntimeUtils {
|
|
|
238
238
|
return str.substring(start, end);
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
+
dateNow() {
|
|
242
|
+
return new Date().toLocaleString("en-GB").replace(",", "");
|
|
243
|
+
}
|
|
244
|
+
|
|
241
245
|
}
|
|
242
246
|
|
|
243
247
|
exports.KCLangRuntimeUtils = KCLangRuntimeUtils;
|
|
244
248
|
KCLangRuntimeUtils.kcLangUtilsName = "kcLangUtils";
|
|
245
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9LQ0xhbmdSdW50aW1lVXRpbHMudHMiXSwibmFtZXMiOlsiaXNCaWdTb3VyY2UiLCJ2YWx1ZSIsIkJpZyIsImlzQmlnT3JOdW1iZXIiLCJLQ0xhbmdSdW50aW1lVXRpbHMiLCJhbmQiLCJsZWZ0IiwicmlnaHQiLCJ1bmRlZmluZWQiLCJkaXZpc2lvbiIsImRpdiIsImVxIiwiY21wIiwiZ2UiLCJndGUiLCJndCIsImxlIiwibHRlIiwibHQiLCJtaW51cyIsImFyZ3VtZW50IiwibXVsIiwibXVsdGlwbHkiLCJub3QiLCJub3RlcSIsIm9yIiwicm91bmQiLCJmcmFjdGlvbkRpZ2l0cyIsInN1bSIsImFkZCIsImFicyIsInhhYnMiLCJsZW5ndGgiLCJleGlzdHMiLCJ2YWx1ZVNlbGVjdG9yIiwicGF0aCIsImNvbnZlcnRUb0RlY2ltYWwiLCJjb252ZXJ0VG9TdHJpbmciLCJ0b1N0cmluZyIsInJlZ2V4TWF0Y2giLCJwYXR0ZXJuIiwiUmVnRXhwIiwidGVzdCIsIm9uZW9mIiwidmFsdWVzIiwiaW5kZXhPZiIsInZhbHVlQXNCaWciLCJzb21lIiwiaXRlbSIsInN1YnN0cmluZyIsInN0ciIsInN0YXJ0IiwiZW5kIiwia2NMYW5nVXRpbHNOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQSxNQUFNQSxXQUFXLEdBQUlDLEtBQUQsSUFBK0I7QUFDL0MsTUFBSSxPQUFPQSxLQUFQLEtBQWlCLFFBQWpCLElBQTZCLE9BQU9BLEtBQVAsS0FBaUIsUUFBOUMsSUFBMERBLEtBQUssWUFBWUMsWUFBL0UsRUFBb0Y7QUFDaEYsV0FBTyxJQUFQO0FBQ0g7O0FBQ0QsU0FBTyxLQUFQO0FBQ0gsQ0FMRDs7QUFPQSxNQUFNQyxhQUFhLEdBQUlGLEtBQUQsSUFDbEIsT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsS0FBSyxZQUFZQyxZQURsRDs7QUFHTyxNQUFNRSxrQkFBTixDQUF5QjtBQUdyQkMsRUFBQUEsR0FBRyxD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QUFhLENBQUM2QyxJQUFELENBQWIsSUFBdUJGLFVBQVUsQ0FBQ25DLEVBQVgsQ0FBY3FDLElBQWQsQ0FBM0MsQ0FBUDtBQUNIOztBQUVELFdBQU8sS0FBUDtBQUNIOztBQUVNQyxFQUFBQSxTQUFTLENBQ1pDLEdBRFksRUFFWkMsS0FGWSxFQUdabkIsTUFIWSxFQUlNO0FBQ2xCLFFBQUlrQixHQUFHLElBQUkxQyxTQUFQLElBQW9CMkMsS0FBSyxJQUFJM0MsU0FBN0IsSUFBMEN3QixNQUFNLElBQUl4QixTQUF4RCxFQUFtRTtBQUMvRCxhQUFPQSxTQUFQO0FBQ0g7O0FBQ0QsUUFBSXdCLE1BQU0sSUFBSSxDQUFkLEVBQWlCO0FBQ2IsYUFBTyxFQUFQO0FBQ0g7O0FBQ0QsVUFBTW9CLEdBQUcsR0FBR0QsS0FBSyxHQUFHbkIsTUFBcEI7QUFFQSxXQUFPa0IsR0FBRyxDQUFDRCxTQUFKLENBQWNFLEtBQWQsRUFBcUJDLEdBQXJCLENBQVA7QUFDSDs7QUF6TTJCOzs7QUFBbkJoRCxrQixDQUNLaUQsZSxHQUFrQixhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZywgeyBCaWdTb3VyY2UgfSBmcm9tIFwiYmlnLmpzXCI7XG5cbmltcG9ydCB7IHdyYXBEZWNpbWFsT3BlcmFuZCB9IGZyb20gXCIuLi9FbmdpbmUvc3JjL0hlbHBlcnMvQXV0b2NhbGNDb21tb25GdW5jdGlvbnNcIjtcblxuY29uc3QgaXNCaWdTb3VyY2UgPSAodmFsdWU6IEJpZ1NvdXJjZSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHZhbHVlIGluc3RhbmNlb2YgQmlnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBpc0JpZ09yTnVtYmVyID0gKHZhbHVlOiBCaWcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsIHwgdW5rbm93bikgPT5cbiAgICB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBCaWc7XG5cbmV4cG9ydCBjbGFzcyBLQ0xhbmdSdW50aW1lVXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMga2NMYW5nVXRpbHNOYW1lID0gXCJrY0xhbmdVdGlsc1wiO1xuXG4gICAgcHVibGljIGFuZChsZWZ0OiBib29sZWFuIHwgdW5kZWZpbmVkLCByaWdodDogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAobGVmdCA9PSB1bmRlZmluZWQgfHwgcmlnaHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsZWZ0ICYmIHJpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXZpc2lvbihsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmRpdihyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXEobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2YgbGVmdCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgcmlnaHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0ID09PSByaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmNtcChyaWdodCkgPT09IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5ndGUocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ3QobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuZ3QocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGUobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkubHRlKHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGx0KGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmx0KHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIG1pbnVzKGFyZ3VtZW50OiBCaWdTb3VyY2UpOiB1bmtub3duIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGFyZ3VtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChhcmd1bWVudCkubXVsKC0xKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBtdWx0aXBseShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiB1bmtub3duIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5tdWwocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdChsZWZ0PzogYm9vbGVhbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbGVmdCAhPSB1bmRlZmluZWQgPyAhbGVmdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90ZXEobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5lcShsZWZ0LCByaWdodCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yKGxlZnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsIHJpZ2h0OiBib29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0eXBlb2YgbGVmdCA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgcmlnaHQgPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0IHx8IHJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHJvdW5kKHZhbHVlOiBCaWdTb3VyY2UsIGZyYWN0aW9uRGlnaXRzPzogbnVtYmVyKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZCh2YWx1ZSkucm91bmQoZnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN1bShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWlzQmlnT3JOdW1iZXIobGVmdCkgJiYgIWlzQmlnT3JOdW1iZXIocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5hZGQocmlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChyaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnMoYXJndW1lbnQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQoYXJndW1lbnQpLmFicygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHhhYnMoYXJndW1lbnQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sdCgwKSA/IG5ldyBCaWcoMCkgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBsZW5ndGgoYXJndW1lbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGV4aXN0cyh2YWx1ZVNlbGVjdG9yOiAocGF0aDogc3RyaW5nKSA9PiB1bmtub3duLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHZhbHVlU2VsZWN0b3IgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVTZWxlY3RvcihwYXRoKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb252ZXJ0VG9EZWNpbWFsKGFyZ3VtZW50OiBCaWdTb3VyY2UgfCBzdHJpbmcgfCB1bmRlZmluZWQpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydFRvU3RyaW5nKGFyZ3VtZW50OiBCaWdTb3VyY2UgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJndW1lbnQgaW5zdGFuY2VvZiBCaWcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnZXhNYXRjaChwYXR0ZXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHBhdHRlcm4gPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuKS50ZXN0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbmVvZih2YWx1ZXM6IEFycmF5PHN0cmluZyB8IG51bWJlciB8IEJpZz4sIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBCaWcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHZhbHVlcyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5pbmRleE9mKHZhbHVlKSAhPT0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNCaWdPck51bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQXNCaWcgPSBuZXcgQmlnKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuc29tZShpdGVtID0+IGlzQmlnT3JOdW1iZXIoaXRlbSkgJiYgdmFsdWVBc0JpZy5lcShpdGVtKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN1YnN0cmluZyhcbiAgICAgICAgc3RyOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIHN0YXJ0OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgICAgIGxlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gICAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHN0ciA9PSB1bmRlZmluZWQgfHwgc3RhcnQgPT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIGxlbmd0aDtcblxuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcbiAgICB9XG59XG4iXX0=
|
|
249
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9LQ0xhbmdSdW50aW1lVXRpbHMudHMiXSwibmFtZXMiOlsiaXNCaWdTb3VyY2UiLCJ2YWx1ZSIsIkJpZyIsImlzQmlnT3JOdW1iZXIiLCJLQ0xhbmdSdW50aW1lVXRpbHMiLCJhbmQiLCJsZWZ0IiwicmlnaHQiLCJ1bmRlZmluZWQiLCJkaXZpc2lvbiIsImRpdiIsImVxIiwiY21wIiwiZ2UiLCJndGUiLCJndCIsImxlIiwibHRlIiwibHQiLCJtaW51cyIsImFyZ3VtZW50IiwibXVsIiwibXVsdGlwbHkiLCJub3QiLCJub3RlcSIsIm9yIiwicm91bmQiLCJmcmFjdGlvbkRpZ2l0cyIsInN1bSIsImFkZCIsImFicyIsInhhYnMiLCJsZW5ndGgiLCJleGlzdHMiLCJ2YWx1ZVNlbGVjdG9yIiwicGF0aCIsImNvbnZlcnRUb0RlY2ltYWwiLCJjb252ZXJ0VG9TdHJpbmciLCJ0b1N0cmluZyIsInJlZ2V4TWF0Y2giLCJwYXR0ZXJuIiwiUmVnRXhwIiwidGVzdCIsIm9uZW9mIiwidmFsdWVzIiwiaW5kZXhPZiIsInZhbHVlQXNCaWciLCJzb21lIiwiaXRlbSIsInN1YnN0cmluZyIsInN0ciIsInN0YXJ0IiwiZW5kIiwiZGF0ZU5vdyIsIkRhdGUiLCJ0b0xvY2FsZVN0cmluZyIsInJlcGxhY2UiLCJrY0xhbmdVdGlsc05hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUVBLE1BQU1BLFdBQVcsR0FBSUMsS0FBRCxJQUErQjtBQUMvQyxNQUFJLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkIsT0FBT0EsS0FBUCxLQUFpQixRQUE5QyxJQUEwREEsS0FBSyxZQUFZQyxZQUEvRSxFQUFvRjtBQUNoRixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPLEtBQVA7QUFDSCxDQUxEOztBQU9BLE1BQU1DLGFBQWEsR0FBSUYsS0FBRCxJQUNsQixPQUFPQSxLQUFQLEtBQWlCLFFBQWpCLElBQTZCQSxLQUFLLFlBQVlDLFlBRGxE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QSxhQUFPMkMsTUFBTSxDQUFDRyxJQUFQLENBQVlDLElBQUksSUFBSTdDLGFBQWEsQ0FBQzZDLElBQUQsQ0FBYixJQUF1QkYsVUFBVSxDQUFDbkMsRUFBWCxDQUFjcUMsSUFBZCxDQUEzQyxDQUFQO0FBQ0g7O0FBRUQsV0FBTyxLQUFQO0FBQ0g7O0FBRU1DLEVBQUFBLFNBQVMsQ0FDWkMsR0FEWSxFQUVaQyxLQUZZLEVBR1puQixNQUhZLEVBSU07QUFDbEIsUUFBSWtCLEdBQUcsSUFBSTFDLFNBQVAsSUFBb0IyQyxLQUFLLElBQUkzQyxTQUE3QixJQUEwQ3dCLE1BQU0sSUFBSXhCLFNBQXhELEVBQW1FO0FBQy9ELGFBQU9BLFNBQVA7QUFDSDs7QUFDRCxRQUFJd0IsTUFBTSxJQUFJLENBQWQsRUFBaUI7QUFDYixhQUFPLEVBQVA7QUFDSDs7QUFDRCxVQUFNb0IsR0FBRyxHQUFHRCxLQUFLLEdBQUduQixNQUFwQjtBQUVBLFdBQU9rQixHQUFHLENBQUNELFNBQUosQ0FBY0UsS0FBZCxFQUFxQkMsR0FBckIsQ0FBUDtBQUNIOztBQUNNQyxFQUFBQSxPQUFPLEdBQXVCO0FBQ2pDLFdBQU8sSUFBSUMsSUFBSixHQUFXQyxjQUFYLENBQTBCLE9BQTFCLEVBQW1DQyxPQUFuQyxDQUEyQyxHQUEzQyxFQUFnRCxFQUFoRCxDQUFQO0FBQ0g7O0FBNU0yQjs7O0FBQW5CcEQsa0IsQ0FDS3FELGUsR0FBa0IsYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWcsIHsgQmlnU291cmNlIH0gZnJvbSBcImJpZy5qc1wiO1xuXG5pbXBvcnQgeyB3cmFwRGVjaW1hbE9wZXJhbmQgfSBmcm9tIFwiLi4vRW5naW5lL3NyYy9IZWxwZXJzL0F1dG9jYWxjQ29tbW9uRnVuY3Rpb25zXCI7XG5cbmNvbnN0IGlzQmlnU291cmNlID0gKHZhbHVlOiBCaWdTb3VyY2UpOiBib29sZWFuID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJpZykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNCaWdPck51bWJlciA9ICh2YWx1ZTogQmlnIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCB8IHVua25vd24pID0+XG4gICAgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHZhbHVlIGluc3RhbmNlb2YgQmlnO1xuXG5leHBvcnQgY2xhc3MgS0NMYW5nUnVudGltZVV0aWxzIHtcbiAgICBwdWJsaWMgc3RhdGljIGtjTGFuZ1V0aWxzTmFtZSA9IFwia2NMYW5nVXRpbHNcIjtcblxuICAgIHB1YmxpYyBhbmQobGVmdDogYm9vbGVhbiB8IHVuZGVmaW5lZCwgcmlnaHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGxlZnQgPT0gdW5kZWZpbmVkIHx8IHJpZ2h0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVmdCAmJiByaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGl2aXNpb24obGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5kaXYocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGVxKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHJpZ2h0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5jbXAocmlnaHQpID09PSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2UobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuZ3RlKHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGd0KGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmd0KHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGxlKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmx0ZShyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBsdChsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5sdChyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtaW51cyhhcmd1bWVudDogQmlnU291cmNlKTogdW5rbm93biB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQoYXJndW1lbnQpLm11bCgtMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbXVsdGlwbHkobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogdW5rbm93biB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkubXVsKHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3QobGVmdD86IGJvb2xlYW4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGxlZnQgIT0gdW5kZWZpbmVkID8gIWxlZnQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGVxKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZXEobGVmdCwgcmlnaHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcihsZWZ0OiBib29sZWFuIHwgdW5kZWZpbmVkLCByaWdodDogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT0gXCJib29sZWFuXCIgfHwgdHlwZW9mIHJpZ2h0ID09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdCB8fCByaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyByb3VuZCh2YWx1ZTogQmlnU291cmNlLCBmcmFjdGlvbkRpZ2l0cz86IG51bWJlcik6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQodmFsdWUpLnJvdW5kKGZyYWN0aW9uRGlnaXRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdW0obGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFpc0JpZ09yTnVtYmVyKGxlZnQpICYmICFpc0JpZ09yTnVtYmVyKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuYWRkKHJpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQocmlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzKGFyZ3VtZW50OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KS5hYnMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyB4YWJzKGFyZ3VtZW50OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHdyYXBEZWNpbWFsT3BlcmFuZChhcmd1bWVudCk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubHQoMCkgPyBuZXcgQmlnKDApIDogdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGVuZ3RoKGFyZ3VtZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50Lmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGlzdHModmFsdWVTZWxlY3RvcjogKHBhdGg6IHN0cmluZykgPT4gdW5rbm93biwgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZVNlbGVjdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlU2VsZWN0b3IocGF0aCk7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPSB1bmRlZmluZWQgJiYgdmFsdWUgIT0gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydFRvRGVjaW1hbChhcmd1bWVudDogQmlnU291cmNlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogQmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChhcmd1bWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnRUb1N0cmluZyhhcmd1bWVudDogQmlnU291cmNlIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgYXJndW1lbnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyZ3VtZW50IGluc3RhbmNlb2YgQmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnQudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2V4TWF0Y2gocGF0dGVybjogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwYXR0ZXJuID09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybikudGVzdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25lb2YodmFsdWVzOiBBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBCaWc+LCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgQmlnKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnT3JOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUFzQmlnID0gbmV3IEJpZyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzLnNvbWUoaXRlbSA9PiBpc0JpZ09yTnVtYmVyKGl0ZW0pICYmIHZhbHVlQXNCaWcuZXEoaXRlbSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdWJzdHJpbmcoXG4gICAgICAgIHN0cjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBzdGFydDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgICAgICBsZW5ndGg6IG51bWJlciB8IHVuZGVmaW5lZFxuICAgICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChzdHIgPT0gdW5kZWZpbmVkIHx8IHN0YXJ0ID09IHVuZGVmaW5lZCB8fCBsZW5ndGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBsZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHB1YmxpYyBkYXRlTm93KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKFwiZW4tR0JcIikucmVwbGFjZShcIixcIiwgXCJcIik7XG4gICAgfVxufVxuIl19
|
|
@@ -33,10 +33,10 @@ class DefaultFileWriter {
|
|
|
33
33
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
async function generateForm(formSourcesPath, farmDirectory,
|
|
36
|
+
async function generateForm(formSourcesPath, farmDirectory, hlDirPath, generator, parentLogger = (0, _StaticLogger.getLogger)(), generationOptions, fileWriter = new DefaultFileWriter()) {
|
|
37
37
|
const logger = parentLogger.withPrefix(`GENERATE:${path.basename(formSourcesPath)}`);
|
|
38
38
|
const action = (0, _ILogger.buildActionBegin)(logger, "Generation");
|
|
39
|
-
const generatedContent = await generator.readSourcesAndProcessSugar(formSourcesPath, farmDirectory,
|
|
39
|
+
const generatedContent = await generator.readSourcesAndProcessSugar(formSourcesPath, farmDirectory, hlDirPath, generationOptions);
|
|
40
40
|
logger.log("Writing files");
|
|
41
41
|
await writeGeneratedFiles(generatedContent, path.join(formSourcesPath, "form"), fileWriter);
|
|
42
42
|
action.complete();
|
|
@@ -55,4 +55,4 @@ async function writeGeneratedFiles(candyFormContent, outputDirectory, fileWriter
|
|
|
55
55
|
|
|
56
56
|
await fileWriter.writeBatch(fileBatch);
|
|
57
57
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtLnRzIl0sIm5hbWVzIjpbIkRlZmF1bHRGaWxlV3JpdGVyIiwid3JpdGVCYXRjaCIsImZpbGVCYXRjaCIsImZpbGVQYXRoIiwiT2JqZWN0Iiwia2V5cyIsImNvbnRlbnQiLCJ1bmRlZmluZWQiLCJwYXRoIiwicGFyc2UiLCJkaXIiLCJnZW5lcmF0ZUZvcm0iLCJmb3JtU291cmNlc1BhdGgiLCJmYXJtRGlyZWN0b3J5IiwiaGxEaXJQYXRoIiwiZ2VuZXJhdG9yIiwicGFyZW50TG9nZ2VyIiwiZ2VuZXJhdGlvbk9wdGlvbnMiLCJmaWxlV3JpdGVyIiwibG9nZ2VyIiwid2l0aFByZWZpeCIsImJhc2VuYW1lIiwiYWN0aW9uIiwiZ2VuZXJhdGVkQ29udGVudCIsInJlYWRTb3VyY2VzQW5kUHJvY2Vzc1N1Z2FyIiwibG9nIiwid3JpdGVHZW5lcmF0ZWRGaWxlcyIsImpvaW4iLCJjb21wbGV0ZSIsImNhbmR5Rm9ybUNvbnRlbnQiLCJvdXRwdXREaXJlY3RvcnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7O0FBaURBLE1BQU1BLGlCQUFOLENBQStDO0FBQ3BCLFFBQVZDLFVBQVUsQ0FBQ0MsU0FBRCxFQUFtRTtBQUN0RixTQUFLLE1BQU1DLFFBQVgsSUFBdUJDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSCxTQUFaLENBQXZCLEVBQStDO0FBQzNDLFlBQU1JLE9BQU8sR0FBR0osU0FBUyxDQUFDQyxRQUFELENBQXpCOztBQUNBLFVBQUlHLE9BQU8sSUFBSUMsU0FBWCxJQUF3QkQsT0FBTyxLQUFLLEVBQXhDLEVBQTRDO0FBQ3hDLGNBQU0sd0JBQVVFLElBQUksQ0FBQ0MsS0FBTCxDQUFXTixRQUFYLEVBQXFCTyxHQUEvQixDQUFOO0FBQ0EsY0FBTSw2QkFBZVAsUUFBZixFQUF5QkcsT0FBekIsQ0FBTjtBQUNIO0FBQ0o7QUFDSjs7QUFUMEM7O0FBWXhDLGVBQWVLLFlBQWYsQ0FDSEMsZUFERyxFQUVIQyxhQUZHLEVBR0hDLFNBSEcsRUFJSEMsU0FKRyxFQUtIQyxZQUFxQixHQUFHLDhCQUxyQixFQU1IQyxpQkFORyxFQU9IQyxVQUF1QixHQUFHLElBQUlsQixpQkFBSixFQVB2QixFQVFVO0FBQ2IsUUFBTW1CLE1BQU0sR0FBR0gsWUFBWSxDQUFDSSxVQUFiLENBQXlCLFlBQVdaLElBQUksQ0FBQ2EsUUFBTCxDQUFjVCxlQUFkLENBQStCLEVBQW5FLENBQWY7QUFDQSxRQUFNVSxNQUFNLEdBQUcsK0JBQWlCSCxNQUFqQixFQUF5QixZQUF6QixDQUFmO0FBQ0EsUUFBTUksZ0JBQWdCLEdBQUcsTUFBTVIsU0FBUyxDQUFDUywwQkFBVixDQUMzQlosZUFEMkIsRUFFM0JDLGFBRjJCLEVBRzNCQyxTQUgyQixFQUkzQkcsaUJBSjJCLENBQS9CO0FBTUFFLEVBQUFBLE1BQU0sQ0FBQ00sR0FBUCxDQUFXLGVBQVg7QUFDQSxRQUFNQyxtQkFBbUIsQ0FBQ0gsZ0JBQUQsRUFBbUJmLElBQUksQ0FBQ21CLElBQUwsQ0FBVWYsZUFBVixFQUEyQixNQUEzQixDQUFuQixFQUF1RE0sVUFBdkQsQ0FBekI7QUFDQUksRUFBQUEsTUFBTSxDQUFDTSxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsbUJBQWYsQ0FDSUcsZ0JBREosRUFFSUMsZUFGSixFQUdJWixVQUhKLEVBSWlCO0FBQ2IsUUFBTWhCLFNBQVMsR0FBRyxFQUFsQjs7QUFDQSxPQUFLLE1BQU1DLFFBQVgsSUFBdUJDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZd0IsZ0JBQVosQ0FBdkIsRUFBc0Q7QUFDbEQsVUFBTXZCLE9BQU8sR0FBR3VCLGdCQUFnQixDQUFDMUIsUUFBRCxDQUFoQzs7QUFDQSxRQUFJRyxPQUFPLElBQUlDLFNBQVgsSUFBd0JELE9BQU8sS0FBSyxFQUF4QyxFQUE0QztBQUN4Q0osTUFBQUEsU0FBUyxDQUFDTSxJQUFJLENBQUNtQixJQUFMLENBQVVHLGVBQVYsRUFBMkIzQixRQUEzQixDQUFELENBQVQsR0FBa0RHLE9BQWxEO0FBQ0g7QUFDSjs7QUFDRCxRQUFNWSxVQUFVLENBQUNqQixVQUFYLENBQXNCQyxTQUF0QixDQUFOO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyB3cml0ZUZpbGVBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGJ1aWxkQWN0aW9uQmVnaW4sIElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBGb3JtUmVzb3VyY2VzLCBGb3JtU291cmNlLCBTdWdhckNvbnRlbnQgfSBmcm9tIFwiLi4vUmVhZEZvcm1Tb3VyY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZWRGb3JtIHtcbiAgICBbcmVsYXRpdmVGaWxlTmFtZTogc3RyaW5nXTogQnVmZmVyIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsaXphdGlvbkRpY3Rpb25hcnlDb250ZW50IHtcbiAgICBbcmVsYXRpdmVGaWxlTmFtZTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsaXphdGlvbkVudHJ5UG9pbnQge1xuICAgIGdldExvY2FsaXplZFN1Z2FyKHN1Z2FyRmlsZXM6IFN1Z2FyQ29udGVudCwgcmVzb3VyY2VzOiBGb3JtUmVzb3VyY2VzKTogUHJvbWlzZTxTdWdhckNvbnRlbnQ+O1xuICAgIGdldERpY3Rpb25hcnkoc3VnYXJGaWxlczogU3VnYXJDb250ZW50LCByZXNvdXJjZXM6IEZvcm1SZXNvdXJjZXMpOiBQcm9taXNlPExvY2FsaXphdGlvbkRpY3Rpb25hcnlDb250ZW50Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtR2VuZXJhdG9yIHtcbiAgICByZWFkU291cmNlcyhmb3JtU291cmNlc1BhdGg6IHN0cmluZywgZmFybURpcmVjdG9yeTogc3RyaW5nLCBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEZvcm1Tb3VyY2U+O1xuICAgIGdldEFsbERlcGVuZGVuY2llcyhmb3JtU291cmNlc1BhdGg6IHN0cmluZywgZmFybURpcmVjdG9yeTogc3RyaW5nLCBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPjtcbiAgICBnZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICBmb3JtU291cmNlc1BhdGg6IHN0cmluZyxcbiAgICAgICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHN0cmluZz47XG4gICAgc3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj47XG4gICAgcHJvY2Vzc1N1Z2FyKFxuICAgICAgICBzdWdhckZpbGVzOiBTdWdhckNvbnRlbnQsXG4gICAgICAgIHJlc291cmNlczogRm9ybVJlc291cmNlcyxcbiAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnM/OiBHZW5lcmF0aW9uT3B0aW9uc1xuICAgICk6IFByb21pc2U8R2VuZXJhdGVkRm9ybT47XG4gICAgcmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXIoXG4gICAgICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nLFxuICAgICAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZyxcbiAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnM/OiBHZW5lcmF0aW9uT3B0aW9uc1xuICAgICk6IFByb21pc2U8R2VuZXJhdGVkRm9ybT47XG4gICAgZ2V0TG9jYWxpemVkU3VnYXIoc3VnYXJGaWxlczogU3VnYXJDb250ZW50LCByZXNvdXJjZXM6IEZvcm1SZXNvdXJjZXMpOiBQcm9taXNlPFN1Z2FyQ29udGVudD47XG4gICAgZ2V0RGljdGlvbmFyeShzdWdhckZpbGVzOiBTdWdhckNvbnRlbnQsIHJlc291cmNlczogRm9ybVJlc291cmNlcyk6IFByb21pc2U8TG9jYWxpemF0aW9uRGljdGlvbmFyeUNvbnRlbnQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRpb25PcHRpb25zIHtcbiAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbjtcbiAgICByZXNvdXJjZXNIYXNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZpbGVXcml0ZXIge1xuICAgIHdyaXRlQmF0Y2goZmlsZUJhdGNoOiB7IFthYnNvbHV0ZUZpbGVOYW1lOiBzdHJpbmddOiBzdHJpbmcgfSk6IFByb21pc2U8dm9pZD47XG59XG5cbmNsYXNzIERlZmF1bHRGaWxlV3JpdGVyIGltcGxlbWVudHMgSUZpbGVXcml0ZXIge1xuICAgIHB1YmxpYyBhc3luYyB3cml0ZUJhdGNoKGZpbGVCYXRjaDogeyBbYWJzb2x1dGVGaWxlTmFtZTogc3RyaW5nXTogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBPYmplY3Qua2V5cyhmaWxlQmF0Y2gpKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZmlsZUJhdGNoW2ZpbGVQYXRoXTtcbiAgICAgICAgICAgIGlmIChjb250ZW50ICE9IHVuZGVmaW5lZCAmJiBjb250ZW50ICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGgucGFyc2UoZmlsZVBhdGgpLmRpcik7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlQXN5bmMoZmlsZVBhdGgsIGNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVGb3JtKFxuICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobERpclBhdGg6IHN0cmluZyxcbiAgICBnZW5lcmF0b3I6IEZvcm1HZW5lcmF0b3IsXG4gICAgcGFyZW50TG9nZ2VyOiBJTG9nZ2VyID0gZ2V0TG9nZ2VyKCksXG4gICAgZ2VuZXJhdGlvbk9wdGlvbnM/OiBHZW5lcmF0aW9uT3B0aW9ucyxcbiAgICBmaWxlV3JpdGVyOiBJRmlsZVdyaXRlciA9IG5ldyBEZWZhdWx0RmlsZVdyaXRlcigpXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBwYXJlbnRMb2dnZXIud2l0aFByZWZpeChgR0VORVJBVEU6JHtwYXRoLmJhc2VuYW1lKGZvcm1Tb3VyY2VzUGF0aCl9YCk7XG4gICAgY29uc3QgYWN0aW9uID0gYnVpbGRBY3Rpb25CZWdpbihsb2dnZXIsIFwiR2VuZXJhdGlvblwiKTtcbiAgICBjb25zdCBnZW5lcmF0ZWRDb250ZW50ID0gYXdhaXQgZ2VuZXJhdG9yLnJlYWRTb3VyY2VzQW5kUHJvY2Vzc1N1Z2FyKFxuICAgICAgICBmb3JtU291cmNlc1BhdGgsXG4gICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgIGhsRGlyUGF0aCxcbiAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnNcbiAgICApO1xuICAgIGxvZ2dlci5sb2coXCJXcml0aW5nIGZpbGVzXCIpO1xuICAgIGF3YWl0IHdyaXRlR2VuZXJhdGVkRmlsZXMoZ2VuZXJhdGVkQ29udGVudCwgcGF0aC5qb2luKGZvcm1Tb3VyY2VzUGF0aCwgXCJmb3JtXCIpLCBmaWxlV3JpdGVyKTtcbiAgICBhY3Rpb24uY29tcGxldGUoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVHZW5lcmF0ZWRGaWxlcyhcbiAgICBjYW5keUZvcm1Db250ZW50OiBHZW5lcmF0ZWRGb3JtLFxuICAgIG91dHB1dERpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZpbGVXcml0ZXI6IElGaWxlV3JpdGVyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWxlQmF0Y2ggPSB7fTtcbiAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIE9iamVjdC5rZXlzKGNhbmR5Rm9ybUNvbnRlbnQpKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBjYW5keUZvcm1Db250ZW50W2ZpbGVQYXRoXTtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT0gdW5kZWZpbmVkICYmIGNvbnRlbnQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIGZpbGVCYXRjaFtwYXRoLmpvaW4ob3V0cHV0RGlyZWN0b3J5LCBmaWxlUGF0aCldID0gY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCBmaWxlV3JpdGVyLndyaXRlQmF0Y2goZmlsZUJhdGNoKTtcbn1cbiJdfQ==
|