@kontur.candy/tools 2.114.0 → 2.121.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/distr/Common/CandyApiClient/CandyApiClient.js +8 -3
  3. package/distr/Common/CandyApiClient/CandyApiClientContext.js +3 -3
  4. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -1
  5. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -1
  6. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +3 -3
  7. package/distr/Common/Comparers.js +2 -2
  8. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +2 -2
  9. package/distr/Common/EndPoints.js +1 -1
  10. package/distr/Common/Errors.js +1 -1
  11. package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -1
  12. package/distr/Common/HttpClient/HttpClient.js +6 -2
  13. package/distr/Common/IterableUtils.js +7 -7
  14. package/distr/Common/ModelPath/ModelPath.js +5 -5
  15. package/distr/Common/NidusClient/INidusClient.js +1 -1
  16. package/distr/Common/NidusClient/NidusClientContext.js +4 -4
  17. package/distr/Common/NidusClient/NidusClientImpl.js +2 -2
  18. package/distr/Common/PathConstants.js +1 -1
  19. package/distr/Common/TypingUtils.js +12 -12
  20. package/distr/Common/UseAsyncEffect.js +2 -2
  21. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +4 -4
  22. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +2 -2
  23. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +2 -2
  24. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +7 -9
  25. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +3 -3
  26. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +2 -2
  27. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +2 -2
  28. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +34 -0
  29. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +2 -2
  30. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -1
  31. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +2 -2
  32. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +2 -2
  33. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +2 -2
  34. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +1 -1
  35. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +9 -9
  36. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +2 -2
  37. package/distr/Tools/src/BuildTasks/Version.js +4 -4
  38. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +1 -1
  39. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +7 -4
  40. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +19 -10
  41. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +21 -4
  42. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +2 -2
  43. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +2 -2
  44. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +2 -2
  45. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +2 -12
  46. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +6 -6
  47. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +22 -6
  48. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +2 -2
  49. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/{IFLangNormalizationSourcesProvider.js → IGeneratedServerSideSourcesProvider.js} +0 -0
  50. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +5 -4
  51. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +1 -1
  52. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +5 -3
  53. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +2 -2
  54. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}.calc.js +1 -1
  55. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +2 -2
  56. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +2 -2
  57. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +3 -3
  58. package/distr/Tools/src/Commons/EventObject.js +2 -2
  59. package/distr/Tools/src/Commons/FsUtils.js +5 -4
  60. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +2 -2
  61. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +4 -4
  62. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +3 -3
  63. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -1
  64. package/distr/Tools/src/Commons/Logging/StaticLogger.js +2 -2
  65. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +4 -4
  66. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +3 -3
  67. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -3
  68. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -2
  69. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +31684 -33917
  70. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.map +1 -1
  71. package/distr/Tools/src/LocalServerFrontEndDist/index.js +21348 -18265
  72. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  73. package/distr/Tools/src/SelfUpdate.js +3 -3
  74. package/package.json +65 -66
@@ -15,9 +15,9 @@ var _ILogger = require("../../Commons/Logging/ILogger");
15
15
 
16
16
  var _StaticLogger = require("../../Commons/Logging/StaticLogger");
17
17
 
18
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
19
 
20
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
21
 
22
22
  class DefaultFileWriter {
23
23
  async writeBatch(fileBatch) {
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.writeAttachmentPathFiles = writeAttachmentPathFiles;
7
+
8
+ var _path = _interopRequireDefault(require("path"));
9
+
10
+ var _fsExtra = require("fs-extra");
11
+
12
+ var _StaticLogger = require("../../Commons/Logging/StaticLogger");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ async function writeAttachmentPathFiles(gfv, farmDirectory, resourcesDirectory, parentLogger = (0, _StaticLogger.getLogger)(), buildCache, buildCacheOptions) {
17
+ const logger = parentLogger.withPrefix(`ATTACHPATH:${gfv}`);
18
+
19
+ const sourceFile = _path.default.join(farmDirectory, "forms", gfv, "form", "AttachmentPaths.json");
20
+
21
+ const targetFile = _path.default.join(resourcesDirectory, "attachmentpaths", `${gfv}.json`);
22
+
23
+ if (await (0, _fsExtra.pathExists)(sourceFile)) {
24
+ logger.log(`copy\n from: ${sourceFile}\n to: ${targetFile}`);
25
+ await (0, _fsExtra.copy)(sourceFile, targetFile);
26
+
27
+ if (buildCache != undefined && buildCacheOptions != undefined) {
28
+ await buildCache.setContent(buildCacheOptions.generatorVersion, buildCacheOptions.gfv, buildCacheOptions.depsHash, resourcesDirectory, _path.default.join("attachmentpaths", `${gfv}.json`), await (0, _fsExtra.readFile)(sourceFile, "utf-8"));
29
+ }
30
+ } else {
31
+ logger.log(`No attachment paths\n at: ${sourceFile}`);
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzLnRzIl0sIm5hbWVzIjpbIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsImdmdiIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJwYXJlbnRMb2dnZXIiLCJidWlsZENhY2hlIiwiYnVpbGRDYWNoZU9wdGlvbnMiLCJsb2dnZXIiLCJ3aXRoUHJlZml4Iiwic291cmNlRmlsZSIsInBhdGgiLCJqb2luIiwidGFyZ2V0RmlsZSIsImxvZyIsInVuZGVmaW5lZCIsInNldENvbnRlbnQiLCJnZW5lcmF0b3JWZXJzaW9uIiwiZGVwc0hhc2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFHQTs7OztBQUdPLGVBQWVBLHdCQUFmLENBQ0hDLEdBREcsRUFFSEMsYUFGRyxFQUdIQyxrQkFIRyxFQUlIQyxZQUFxQixHQUFHLDhCQUpyQixFQUtIQyxVQUxHLEVBTUhDLGlCQU5HLEVBT1U7QUFDYixRQUFNQyxNQUFNLEdBQUdILFlBQVksQ0FBQ0ksVUFBYixDQUF5QixjQUFhUCxHQUFJLEVBQTFDLENBQWY7O0FBQ0EsUUFBTVEsVUFBVSxHQUFHQyxjQUFLQyxJQUFMLENBQVVULGFBQVYsRUFBeUIsT0FBekIsRUFBa0NELEdBQWxDLEVBQXVDLE1BQXZDLEVBQStDLHNCQUEvQyxDQUFuQjs7QUFDQSxRQUFNVyxVQUFVLEdBQUdGLGNBQUtDLElBQUwsQ0FBVVIsa0JBQVYsRUFBOEIsaUJBQTlCLEVBQWtELEdBQUVGLEdBQUksT0FBeEQsQ0FBbkI7O0FBQ0EsTUFBSSxNQUFNLHlCQUFXUSxVQUFYLENBQVYsRUFBa0M7QUFDOUJGLElBQUFBLE1BQU0sQ0FBQ00sR0FBUCxDQUFZLGlCQUFnQkosVUFBVyxhQUFZRyxVQUFXLEVBQTlEO0FBQ0EsVUFBTSxtQkFBS0gsVUFBTCxFQUFpQkcsVUFBakIsQ0FBTjs7QUFFQSxRQUFJUCxVQUFVLElBQUlTLFNBQWQsSUFBMkJSLGlCQUFpQixJQUFJUSxTQUFwRCxFQUErRDtBQUMzRCxZQUFNVCxVQUFVLENBQUNVLFVBQVgsQ0FDRlQsaUJBQWlCLENBQUNVLGdCQURoQixFQUVGVixpQkFBaUIsQ0FBQ0wsR0FGaEIsRUFHRkssaUJBQWlCLENBQUNXLFFBSGhCLEVBSUZkLGtCQUpFLEVBS0ZPLGNBQUtDLElBQUwsQ0FBVSxpQkFBVixFQUE4QixHQUFFVixHQUFJLE9BQXBDLENBTEUsRUFNRixNQUFNLHVCQUFTUSxVQUFULEVBQXFCLE9BQXJCLENBTkosQ0FBTjtBQVFIO0FBQ0osR0FkRCxNQWNPO0FBQ0hGLElBQUFBLE1BQU0sQ0FBQ00sR0FBUCxDQUFZLDhCQUE2QkosVUFBVyxFQUFwRDtBQUNIO0FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBjb3B5LCBwYXRoRXhpc3RzLCByZWFkRmlsZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSwgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzKFxuICAgIGdmdjogc3RyaW5nLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBwYXJlbnRMb2dnZXI6IElMb2dnZXIgPSBnZXRMb2dnZXIoKSxcbiAgICBidWlsZENhY2hlPzogQnVpbGRDYWNoZSxcbiAgICBidWlsZENhY2hlT3B0aW9ucz86IEZvcm1CdWlsZENhY2hlT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9nZ2VyID0gcGFyZW50TG9nZ2VyLndpdGhQcmVmaXgoYEFUVEFDSFBBVEg6JHtnZnZ9YCk7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJmb3JtXCIsIFwiQXR0YWNobWVudFBhdGhzLmpzb25cIik7XG4gICAgY29uc3QgdGFyZ2V0RmlsZSA9IHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiYXR0YWNobWVudHBhdGhzXCIsIGAke2dmdn0uanNvbmApO1xuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHNvdXJjZUZpbGUpKSB7XG4gICAgICAgIGxvZ2dlci5sb2coYGNvcHlcXG4gIGZyb206ICR7c291cmNlRmlsZX1cXG4gIHRvOiAgICR7dGFyZ2V0RmlsZX1gKTtcbiAgICAgICAgYXdhaXQgY29weShzb3VyY2VGaWxlLCB0YXJnZXRGaWxlKTtcblxuICAgICAgICBpZiAoYnVpbGRDYWNoZSAhPSB1bmRlZmluZWQgJiYgYnVpbGRDYWNoZU9wdGlvbnMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBidWlsZENhY2hlLnNldENvbnRlbnQoXG4gICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnMuZ2VuZXJhdG9yVmVyc2lvbixcbiAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9ucy5nZnYsXG4gICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnMuZGVwc0hhc2gsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihcImF0dGFjaG1lbnRwYXRoc1wiLCBgJHtnZnZ9Lmpzb25gKSxcbiAgICAgICAgICAgICAgICBhd2FpdCByZWFkRmlsZShzb3VyY2VGaWxlLCBcInV0Zi04XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmxvZyhgTm8gYXR0YWNobWVudCBwYXRoc1xcbiAgYXQ6ICR7c291cmNlRmlsZX1gKTtcbiAgICB9XG59XG4iXX0=
@@ -11,9 +11,9 @@ var _fsExtra = require("fs-extra");
11
11
 
12
12
  var _StaticLogger = require("../../Commons/Logging/StaticLogger");
13
13
 
14
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
15
 
16
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
17
 
18
18
  async function writeFLangNormalizationFiles(gfv, farmDirectory, resourcesDirectory, parentLogger = (0, _StaticLogger.getLogger)(), buildCache, buildCacheOptions) {
19
19
  const logger = parentLogger.withPrefix(`FLASHNORM:${gfv}`);
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getGeneratorSourceKey = getGeneratorSourceKey;
7
6
  exports.generatorFactory = generatorFactory;
7
+ exports.getGeneratorSourceKey = getGeneratorSourceKey;
8
8
 
9
9
  var _TypingUtils = require("../../../../Common/TypingUtils");
10
10
 
@@ -23,9 +23,9 @@ var _CreateAsyncGenerator = require("./GeneratorWorker/CreateAsyncGenerator");
23
23
 
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
 
26
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
27
 
28
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
29
 
30
30
  class AcquirePublishedGeneratorTask extends _ChainableValueProducer.ObservableValueProducerBase {
31
31
  constructor(version, candyModulesDirectory, useVersionFromCache, logger = (0, _StaticLogger.getLogger)()) {
@@ -99,7 +99,7 @@ class BuildGeneratorFromSourcesTask extends _ChainableValueProducer.ObservableVa
99
99
  async acquireGeneratorFromSources() {
100
100
  const action = (0, _ILogger.buildActionBegin)(this.logger, "Build generator");
101
101
  const buildDirectory = await this.getBuildDirectory();
102
- await (0, _ExecUtils.execCommandAsync)(this.logger, `npm run generator:build`, {
102
+ await (0, _ExecUtils.execCommandAsync)(this.logger, `yarn generator:build`, {
103
103
  cwd: buildDirectory
104
104
  });
105
105
  const result = (0, _CreateAsyncGenerator.createAsyncGenerator)(_path.default.join(this.pathToEngineSources, "Generator"), this.useWatch, this.useWatch);
@@ -159,4 +159,4 @@ class BuildGeneratorFromSourcesTask extends _ChainableValueProducer.ObservableVa
159
159
  }
160
160
 
161
161
  exports.BuildGeneratorFromSourcesTask = BuildGeneratorFromSourcesTask;
162
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9CdWlsZEdlbmVyYXRvckZyb21Tb3VyY2VzVGFzay50cyJdLCJuYW1lcyI6WyJnZW5lcmF0b3JCdWlsZExpbWl0IiwiQnVpbGRHZW5lcmF0b3JGcm9tU291cmNlc1Rhc2siLCJPYnNlcnZhYmxlVmFsdWVQcm9kdWNlckJhc2UiLCJjb25zdHJ1Y3RvciIsInBhdGhUb0VuZ2luZVNvdXJjZXMiLCJsb2dnZXIiLCJ1c2VXYXRjaCIsImN1cnJlbnRHZW5lcmF0b3IiLCJidWlsZFByb2Nlc3MiLCJidWlsZFJlc3VsdFdhdGNoZXIiLCJoYW5kbGVVcGRhdGUiLCJsb2ciLCJlbWl0VXBkYXRlIiwicGF0aCIsImpvaW4iLCJ3aXRoUHJlZml4IiwiZ2V0Q3VycmVudFZhbHVlIiwidW5kZWZpbmVkIiwicnVuV2F0Y2hQcm9jZXNzU3RhcnRlZCIsImNyZWF0ZUJ1aWxkUmVzdWx0V2F0Y2hlciIsImFjcXVpcmVHZW5lcmF0b3JGcm9tU291cmNlcyIsIkVycm9yIiwiYmVnaW5MaXN0ZW5pbmciLCJzdG9wTGlzdGVuaW5nIiwia2lsbCIsImVycm9yIiwiY2xvc2UiLCJhY3Rpb24iLCJidWlsZERpcmVjdG9yeSIsImdldEJ1aWxkRGlyZWN0b3J5IiwiY3dkIiwicmVzdWx0IiwiY29tcGxldGUiLCJQcm9jZXNzVXRpbHMiLCJjcmVhdGVTaGVsbFByb2Nlc3MiLCJvblN0ZE91dCIsInN1YnNjcmliZSIsImRhdGEiLCJ2ZXJib3NlIiwidG9TdHJpbmciLCJvblN0ZEVyciIsInN0YXJ0Iiwid2FpdEZpcnN0Q29tcGlsYXRpb25Db21wbGV0ZWQiLCJ3YWl0T3V0cHV0SW5jbHVkZXNTdHJpbmciLCJwYXRoVG9HZW5lcmF0b3JPdXRwdXREaXIiLCJtYXNrVG9PYnNlcnZlR2VuZXJhdG9yQ2hhbmdlcyIsIndhdGNoZXIiLCJpZ25vcmVJbml0aWFsIiwiaWdub3JlUGVybWlzc2lvbkVycm9ycyIsInVzZVBvbGxpbmci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QSxPQUFPLENBQUNPLEVBQVIsQ0FBVyxPQUFYLEVBQW9CSCx5QkFBcEI7QUFDQSxXQUFPSixPQUFQO0FBQ0g7O0FBbEl5RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZTV2F0Y2hlciB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgd2F0Y2ggfSBmcm9tIFwiY2hva2lkYXJcIjtcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcblxuaW1wb3J0IHsgZXhlY0NvbW1hbmRBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0V4ZWNVdGlsc1wiO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb25CZWdpbiwgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBpc05ld0VuZ2luZVN0cnVjdHVyZSwgaXNPbGRHZW5lcmF0b3JTb3VyY2VzU3RydWN0dXJlIH0gZnJvbSBcIi4uL0VuZ2luZVN0cnVjdHVyZVV0aWxzXCI7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yIH0gZnJvbSBcIi4uL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBQcm9jZXNzVXRpbHMgfSBmcm9tIFwiLi4vUHJvY2Vzc1V0aWxzL1Byb2Nlc3NVdGlsc1wiO1xuaW1wb3J0IHsgU2hlbGxQcm9jZXNzSGFuZGxlIH0gZnJvbSBcIi4uL1Byb2Nlc3NVdGlscy9TaGVsbFByb2Nlc3NIYW5kbGVcIjtcblxuaW1wb3J0IHsgY3JlYXRlQXN5bmNHZW5lcmF0b3IgfSBmcm9tIFwiLi9HZW5lcmF0b3JXb3JrZXIvQ3JlYXRlQXN5bmNHZW5lcmF0b3JcIjtcblxuY29uc3QgZ2VuZXJhdG9yQnVpbGRMaW1pdCA9IHBMaW1pdCgxKTtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkR2VuZXJhdG9yRnJvbVNvdXJjZXNUYXNrIGV4dGVuZHMgT2JzZXJ2YWJsZVZhbHVlUHJvZHVjZXJCYXNlPEZvcm1HZW5lcmF0b3I+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhdGhUb0VuZ2luZVNvdXJjZXM6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogSUxvZ2dlcjtcbiAgICBwcml2YXRlIHVzZVdhdGNoID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjdXJyZW50R2VuZXJhdG9yPzogRm9ybUdlbmVyYXRvcjtcbiAgICBwcml2YXRlIGJ1aWxkUHJvY2Vzcz86IFNoZWxsUHJvY2Vzc0hhbmRsZTtcbiAgICBwcml2YXRlIGJ1aWxkUmVzdWx0V2F0Y2hlcj86IEZTV2F0Y2hlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXRoVG9FbmdpbmVTb3VyY2VzOiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlciA9IGdldExvZ2dlcigpKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyLndpdGhQcmVmaXgoXCJHRU5FUkFUT1JcIik7XG4gICAgICAgIHRoaXMucGF0aFRvRW5naW5lU291cmNlcyA9IHBhdGhUb0VuZ2luZVNvdXJjZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEN1cnJlbnRWYWx1ZSgpOiBQcm9taXNlPEZvcm1HZW5lcmF0b3I+IHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvckJ1aWxkTGltaXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEdlbmVyYXRvciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50R2VuZXJhdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudXNlV2F0Y2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5idWlsZFByb2Nlc3MgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRQcm9jZXNzID0gYXdhaXQgdGhpcy5ydW5XYXRjaFByb2Nlc3NTdGFydGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRSZXN1bHRXYXRjaGVyID0gYXdhaXQgdGhpcy5jcmVhdGVCdWlsZFJlc3VsdFdhdGNoZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzLCBcIkdlbmVyYXRvclwiLCBcImRpc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50R2VuZXJhdG9yID0gY3JlYXRlQXN5bmNHZW5lcmF0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzLCBcIkdlbmVyYXRvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlV2F0Y2gsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZVdhdGNoXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRHZW5lcmF0b3IgPSBhd2FpdCB0aGlzLmFjcXVpcmVHZW5lcmF0b3JGcm9tU291cmNlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEdlbmVyYXRvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEdlbmVyYXRvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGJlZ2luTGlzdGVuaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnVzZVdhdGNoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgc3RvcExpc3RlbmluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuYnVpbGRQcm9jZXNzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBidWlsZFByb2Nlc3MgPSB0aGlzLmJ1aWxkUHJvY2VzcztcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkUHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBhd2FpdCBidWlsZFByb2Nlc3Mua2lsbCgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHN0b3AgcHJvY2VzczogJHtlcnJvcn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5idWlsZFJlc3VsdFdhdGNoZXIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkUmVzdWx0V2F0Y2hlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXNlV2F0Y2ggPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZVVwZGF0ZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiR2VuZXJhdG9yIHNvdXJjZXMgdXBkYXRlZFwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0VXBkYXRlKFxuICAgICAgICAgICAgY3JlYXRlQXN5bmNHZW5lcmF0b3IocGF0aC5qb2luKHRoaXMucGF0aFRvRW5naW5lU291cmNlcywgXCJHZW5lcmF0b3JcIiksIHRoaXMudXNlV2F0Y2gsIHRoaXMudXNlV2F0Y2gpXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgYXN5bmMgYWNxdWlyZUdlbmVyYXRvckZyb21Tb3VyY2VzKCk6IFByb21pc2U8Rm9ybUdlbmVyYXRvcj4ge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBidWlsZEFjdGlvbkJlZ2luKHRoaXMubG9nZ2VyLCBcIkJ1aWxkIGdlbmVyYXRvclwiKTtcbiAgICAgICAgY29uc3QgYnVpbGREaXJlY3RvcnkgPSBhd2FpdCB0aGlzLmdldEJ1aWxkRGlyZWN0b3J5KCk7XG4gICAgICAgIGF3YWl0IGV4ZWNDb21tYW5kQXN5bmModGhpcy5sb2dnZXIsIGBucG0gcnVuIGdlbmVyYXRvcjpidWlsZGAsIHtcbiAgICAgICAgICAgIGN3ZDogYnVpbGREaXJlY3RvcnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjcmVhdGVBc3luY0dlbmVyYXRvcihcbiAgICAgICAgICAgIHBhdGguam9pbih0aGlzLnBhdGhUb0VuZ2luZVNvdXJjZXMsIFwiR2VuZXJhdG9yXCIpLFxuICAgICAgICAgICAgdGhpcy51c2VXYXRjaCxcbiAgICAgICAgICAgIHRoaXMudXNlV2F0Y2hcbiAgICAgICAgKTtcbiAgICAgICAgYWN0aW9uLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRCdWlsZERpcmVjdG9yeSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IGlzTmV3RW5naW5lU3RydWN0dXJlKHRoaXMucGF0aFRvRW5naW5lU291cmNlcykpXG4gICAgICAgICAgICA/IHBhdGguam9pbih0aGlzLnBhdGhUb0VuZ2luZVNvdXJjZXMsIFwiR2VuZXJhdG9yXCIpXG4gICAgICAgICAgICA6IHRoaXMucGF0aFRvRW5naW5lU291cmNlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJ1bldhdGNoUHJvY2Vzc1N0YXJ0ZWQoKTogUHJvbWlzZTxTaGVsbFByb2Nlc3NIYW5kbGU+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiU3RhcnQgd2F0Y2hcIik7XG4gICAgICAgIGNvbnN0IGJ1aWxkRGlyZWN0b3J5ID0gYXdhaXQgdGhpcy5nZXRCdWlsZERpcmVjdG9yeSgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBQcm9jZXNzVXRpbHMuY3JlYXRlU2hlbGxQcm9jZXNzKFxuICAgICAgICAgICAgXCJucG1cIixcbiAgICAgICAgICAgIFtcInJ1blwiLCBcImdlbmVyYXRvcjpidWlsZFwiLCBcIi0tXCIsIFwiLS13YXRjaFwiXSxcbiAgICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5XG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdC5vblN0ZE91dC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci52ZXJib3NlKGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQub25TdGRFcnIuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIudmVyYm9zZShkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnN0YXJ0KCk7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZpcnN0Q29tcGlsYXRpb25Db21wbGV0ZWQocmVzdWx0KTtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiU3VjY2Vzc2Z1bGx5IGNvbXBsaWVkXCIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgd2FpdEZpcnN0Q29tcGlsYXRpb25Db21wbGV0ZWQocmVzdWx0OiBTaGVsbFByb2Nlc3NIYW5kbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgcmVzdWx0LndhaXRPdXRwdXRJbmNsdWRlc1N0cmluZyhcIlN1Y2Nlc3NmdWxseSBjb21waWxlZFwiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZUJ1aWxkUmVzdWx0V2F0Y2hlcihwYXRoVG9HZW5lcmF0b3JPdXRwdXREaXI6IHN0cmluZyk6IFByb21pc2U8RlNXYXRjaGVyPiB7XG4gICAgICAgIGxldCBtYXNrVG9PYnNlcnZlR2VuZXJhdG9yQ2hhbmdlczogc3RyaW5nW107XG4gICAgICAgIGlmIChhd2FpdCBpc09sZEdlbmVyYXRvclNvdXJjZXNTdHJ1Y3R1cmUodGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzKSkge1xuICAgICAgICAgICAgbWFza1RvT2JzZXJ2ZUdlbmVyYXRvckNoYW5nZXMgPSBbXCIqKi8qLmpzXCJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFza1RvT2JzZXJ2ZUdlbmVyYXRvckNoYW5nZXMgPSBbXCJHZW5lcmF0b3Ivc3JjLyoqLyouanNcIiwgXCJpbmRleC5qc1wiXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3YXRjaGVyID0gd2F0Y2gobWFza1RvT2JzZXJ2ZUdlbmVyYXRvckNoYW5nZXMsIHtcbiAgICAgICAgICAgIGlnbm9yZUluaXRpYWw6IHRydWUsXG4gICAgICAgICAgICBjd2Q6IHBhdGhUb0dlbmVyYXRvck91dHB1dERpcixcbiAgICAgICAgICAgIGlnbm9yZVBlcm1pc3Npb25FcnJvcnM6IGZhbHNlLFxuICAgICAgICAgICAgdXNlUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGhhbmRsZUFueUZzRXZlbnREZWJvdW5jZWQgPSBfLmRlYm91bmNlKCgpID0+IHRoaXMuaGFuZGxlVXBkYXRlKCksIDUwMCk7XG4gICAgICAgIHdhdGNoZXIub24oXCJhbGxcIiwgaGFuZGxlQW55RnNFdmVudERlYm91bmNlZCk7XG4gICAgICAgIHdhdGNoZXIub24oXCJlcnJvclwiLCBoYW5kbGVBbnlGc0V2ZW50RGVib3VuY2VkKTtcbiAgICAgICAgcmV0dXJuIHdhdGNoZXI7XG4gICAgfVxufVxuIl19
162
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9CdWlsZEdlbmVyYXRvckZyb21Tb3VyY2VzVGFzay50cyJdLCJuYW1lcyI6WyJnZW5lcmF0b3JCdWlsZExpbWl0IiwiQnVpbGRHZW5lcmF0b3JGcm9tU291cmNlc1Rhc2siLCJPYnNlcnZhYmxlVmFsdWVQcm9kdWNlckJhc2UiLCJjb25zdHJ1Y3RvciIsInBhdGhUb0VuZ2luZVNvdXJjZXMiLCJsb2dnZXIiLCJ1c2VXYXRjaCIsImN1cnJlbnRHZW5lcmF0b3IiLCJidWlsZFByb2Nlc3MiLCJidWlsZFJlc3VsdFdhdGNoZXIiLCJoYW5kbGVVcGRhdGUiLCJsb2ciLCJlbWl0VXBkYXRlIiwicGF0aCIsImpvaW4iLCJ3aXRoUHJlZml4IiwiZ2V0Q3VycmVudFZhbHVlIiwidW5kZWZpbmVkIiwicnVuV2F0Y2hQcm9jZXNzU3RhcnRlZCIsImNyZWF0ZUJ1aWxkUmVzdWx0V2F0Y2hlciIsImFjcXVpcmVHZW5lcmF0b3JGcm9tU291cmNlcyIsIkVycm9yIiwiYmVnaW5MaXN0ZW5pbmciLCJzdG9wTGlzdGVuaW5nIiwia2lsbCIsImVycm9yIiwiY2xvc2UiLCJhY3Rpb24iLCJidWlsZERpcmVjdG9yeSIsImdldEJ1aWxkRGlyZWN0b3J5IiwiY3dkIiwicmVzdWx0IiwiY29tcGxldGUiLCJQcm9jZXNzVXRpbHMiLCJjcmVhdGVTaGVsbFByb2Nlc3MiLCJvblN0ZE91dCIsInN1YnNjcmliZSIsImRhdGEiLCJ2ZXJib3NlIiwidG9TdHJpbmciLCJvblN0ZEVyciIsInN0YXJ0Iiwid2FpdEZpcnN0Q29tcGlsYXRpb25Db21wbGV0ZWQiLCJ3YWl0T3V0cHV0SW5jbHVkZXNTdHJpbmciLCJwYXRoVG9HZW5lcmF0b3JPdXRwdXREaXIiLCJtYXNrVG9PYnNlcnZlR2VuZXJhdG9yQ2hhbmdlcyIsIndhdGNoZXIiLCJpZ25vcmVJbml0aWFsIiwiaWdub3JlUGVybWlzc2lvbkVycm9ycyIsInVzZVBvbGxpbmci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QSxPQUFPLENBQUNPLEVBQVIsQ0FBVyxPQUFYLEVBQW9CSCx5QkFBcEI7QUFDQSxXQUFPSixPQUFQO0FBQ0g7O0FBbEl5RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZTV2F0Y2hlciB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgd2F0Y2ggfSBmcm9tIFwiY2hva2lkYXJcIjtcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcblxuaW1wb3J0IHsgZXhlY0NvbW1hbmRBc3luYyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0V4ZWNVdGlsc1wiO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb25CZWdpbiwgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBpc05ld0VuZ2luZVN0cnVjdHVyZSwgaXNPbGRHZW5lcmF0b3JTb3VyY2VzU3RydWN0dXJlIH0gZnJvbSBcIi4uL0VuZ2luZVN0cnVjdHVyZVV0aWxzXCI7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yIH0gZnJvbSBcIi4uL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBQcm9jZXNzVXRpbHMgfSBmcm9tIFwiLi4vUHJvY2Vzc1V0aWxzL1Byb2Nlc3NVdGlsc1wiO1xuaW1wb3J0IHsgU2hlbGxQcm9jZXNzSGFuZGxlIH0gZnJvbSBcIi4uL1Byb2Nlc3NVdGlscy9TaGVsbFByb2Nlc3NIYW5kbGVcIjtcblxuaW1wb3J0IHsgY3JlYXRlQXN5bmNHZW5lcmF0b3IgfSBmcm9tIFwiLi9HZW5lcmF0b3JXb3JrZXIvQ3JlYXRlQXN5bmNHZW5lcmF0b3JcIjtcblxuY29uc3QgZ2VuZXJhdG9yQnVpbGRMaW1pdCA9IHBMaW1pdCgxKTtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkR2VuZXJhdG9yRnJvbVNvdXJjZXNUYXNrIGV4dGVuZHMgT2JzZXJ2YWJsZVZhbHVlUHJvZHVjZXJCYXNlPEZvcm1HZW5lcmF0b3I+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhdGhUb0VuZ2luZVNvdXJjZXM6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogSUxvZ2dlcjtcbiAgICBwcml2YXRlIHVzZVdhdGNoID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjdXJyZW50R2VuZXJhdG9yPzogRm9ybUdlbmVyYXRvcjtcbiAgICBwcml2YXRlIGJ1aWxkUHJvY2Vzcz86IFNoZWxsUHJvY2Vzc0hhbmRsZTtcbiAgICBwcml2YXRlIGJ1aWxkUmVzdWx0V2F0Y2hlcj86IEZTV2F0Y2hlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXRoVG9FbmdpbmVTb3VyY2VzOiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlciA9IGdldExvZ2dlcigpKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyLndpdGhQcmVmaXgoXCJHRU5FUkFUT1JcIik7XG4gICAgICAgIHRoaXMucGF0aFRvRW5naW5lU291cmNlcyA9IHBhdGhUb0VuZ2luZVNvdXJjZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEN1cnJlbnRWYWx1ZSgpOiBQcm9taXNlPEZvcm1HZW5lcmF0b3I+IHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvckJ1aWxkTGltaXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEdlbmVyYXRvciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50R2VuZXJhdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudXNlV2F0Y2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5idWlsZFByb2Nlc3MgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRQcm9jZXNzID0gYXdhaXQgdGhpcy5ydW5XYXRjaFByb2Nlc3NTdGFydGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRSZXN1bHRXYXRjaGVyID0gYXdhaXQgdGhpcy5jcmVhdGVCdWlsZFJlc3VsdFdhdGNoZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzLCBcIkdlbmVyYXRvclwiLCBcImRpc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50R2VuZXJhdG9yID0gY3JlYXRlQXN5bmNHZW5lcmF0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzLCBcIkdlbmVyYXRvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlV2F0Y2gsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZVdhdGNoXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRHZW5lcmF0b3IgPSBhd2FpdCB0aGlzLmFjcXVpcmVHZW5lcmF0b3JGcm9tU291cmNlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEdlbmVyYXRvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEdlbmVyYXRvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGJlZ2luTGlzdGVuaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnVzZVdhdGNoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgc3RvcExpc3RlbmluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuYnVpbGRQcm9jZXNzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBidWlsZFByb2Nlc3MgPSB0aGlzLmJ1aWxkUHJvY2VzcztcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkUHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBhd2FpdCBidWlsZFByb2Nlc3Mua2lsbCgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHN0b3AgcHJvY2VzczogJHtlcnJvcn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5idWlsZFJlc3VsdFdhdGNoZXIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkUmVzdWx0V2F0Y2hlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXNlV2F0Y2ggPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZVVwZGF0ZSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiR2VuZXJhdG9yIHNvdXJjZXMgdXBkYXRlZFwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0VXBkYXRlKFxuICAgICAgICAgICAgY3JlYXRlQXN5bmNHZW5lcmF0b3IocGF0aC5qb2luKHRoaXMucGF0aFRvRW5naW5lU291cmNlcywgXCJHZW5lcmF0b3JcIiksIHRoaXMudXNlV2F0Y2gsIHRoaXMudXNlV2F0Y2gpXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgYXN5bmMgYWNxdWlyZUdlbmVyYXRvckZyb21Tb3VyY2VzKCk6IFByb21pc2U8Rm9ybUdlbmVyYXRvcj4ge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBidWlsZEFjdGlvbkJlZ2luKHRoaXMubG9nZ2VyLCBcIkJ1aWxkIGdlbmVyYXRvclwiKTtcbiAgICAgICAgY29uc3QgYnVpbGREaXJlY3RvcnkgPSBhd2FpdCB0aGlzLmdldEJ1aWxkRGlyZWN0b3J5KCk7XG4gICAgICAgIGF3YWl0IGV4ZWNDb21tYW5kQXN5bmModGhpcy5sb2dnZXIsIGB5YXJuIGdlbmVyYXRvcjpidWlsZGAsIHtcbiAgICAgICAgICAgIGN3ZDogYnVpbGREaXJlY3RvcnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjcmVhdGVBc3luY0dlbmVyYXRvcihcbiAgICAgICAgICAgIHBhdGguam9pbih0aGlzLnBhdGhUb0VuZ2luZVNvdXJjZXMsIFwiR2VuZXJhdG9yXCIpLFxuICAgICAgICAgICAgdGhpcy51c2VXYXRjaCxcbiAgICAgICAgICAgIHRoaXMudXNlV2F0Y2hcbiAgICAgICAgKTtcbiAgICAgICAgYWN0aW9uLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRCdWlsZERpcmVjdG9yeSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IGlzTmV3RW5naW5lU3RydWN0dXJlKHRoaXMucGF0aFRvRW5naW5lU291cmNlcykpXG4gICAgICAgICAgICA/IHBhdGguam9pbih0aGlzLnBhdGhUb0VuZ2luZVNvdXJjZXMsIFwiR2VuZXJhdG9yXCIpXG4gICAgICAgICAgICA6IHRoaXMucGF0aFRvRW5naW5lU291cmNlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJ1bldhdGNoUHJvY2Vzc1N0YXJ0ZWQoKTogUHJvbWlzZTxTaGVsbFByb2Nlc3NIYW5kbGU+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiU3RhcnQgd2F0Y2hcIik7XG4gICAgICAgIGNvbnN0IGJ1aWxkRGlyZWN0b3J5ID0gYXdhaXQgdGhpcy5nZXRCdWlsZERpcmVjdG9yeSgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBQcm9jZXNzVXRpbHMuY3JlYXRlU2hlbGxQcm9jZXNzKFxuICAgICAgICAgICAgXCJucG1cIixcbiAgICAgICAgICAgIFtcInJ1blwiLCBcImdlbmVyYXRvcjpidWlsZFwiLCBcIi0tXCIsIFwiLS13YXRjaFwiXSxcbiAgICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5XG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdC5vblN0ZE91dC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci52ZXJib3NlKGRhdGEudG9TdHJpbmcoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQub25TdGRFcnIuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIudmVyYm9zZShkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnN0YXJ0KCk7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZpcnN0Q29tcGlsYXRpb25Db21wbGV0ZWQocmVzdWx0KTtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKFwiU3VjY2Vzc2Z1bGx5IGNvbXBsaWVkXCIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgd2FpdEZpcnN0Q29tcGlsYXRpb25Db21wbGV0ZWQocmVzdWx0OiBTaGVsbFByb2Nlc3NIYW5kbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgcmVzdWx0LndhaXRPdXRwdXRJbmNsdWRlc1N0cmluZyhcIlN1Y2Nlc3NmdWxseSBjb21waWxlZFwiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZUJ1aWxkUmVzdWx0V2F0Y2hlcihwYXRoVG9HZW5lcmF0b3JPdXRwdXREaXI6IHN0cmluZyk6IFByb21pc2U8RlNXYXRjaGVyPiB7XG4gICAgICAgIGxldCBtYXNrVG9PYnNlcnZlR2VuZXJhdG9yQ2hhbmdlczogc3RyaW5nW107XG4gICAgICAgIGlmIChhd2FpdCBpc09sZEdlbmVyYXRvclNvdXJjZXNTdHJ1Y3R1cmUodGhpcy5wYXRoVG9FbmdpbmVTb3VyY2VzKSkge1xuICAgICAgICAgICAgbWFza1RvT2JzZXJ2ZUdlbmVyYXRvckNoYW5nZXMgPSBbXCIqKi8qLmpzXCJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFza1RvT2JzZXJ2ZUdlbmVyYXRvckNoYW5nZXMgPSBbXCJHZW5lcmF0b3Ivc3JjLyoqLyouanNcIiwgXCJpbmRleC5qc1wiXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3YXRjaGVyID0gd2F0Y2gobWFza1RvT2JzZXJ2ZUdlbmVyYXRvckNoYW5nZXMsIHtcbiAgICAgICAgICAgIGlnbm9yZUluaXRpYWw6IHRydWUsXG4gICAgICAgICAgICBjd2Q6IHBhdGhUb0dlbmVyYXRvck91dHB1dERpcixcbiAgICAgICAgICAgIGlnbm9yZVBlcm1pc3Npb25FcnJvcnM6IGZhbHNlLFxuICAgICAgICAgICAgdXNlUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGhhbmRsZUFueUZzRXZlbnREZWJvdW5jZWQgPSBfLmRlYm91bmNlKCgpID0+IHRoaXMuaGFuZGxlVXBkYXRlKCksIDUwMCk7XG4gICAgICAgIHdhdGNoZXIub24oXCJhbGxcIiwgaGFuZGxlQW55RnNFdmVudERlYm91bmNlZCk7XG4gICAgICAgIHdhdGNoZXIub24oXCJlcnJvclwiLCBoYW5kbGVBbnlGc0V2ZW50RGVib3VuY2VkKTtcbiAgICAgICAgcmV0dXJuIHdhdGNoZXI7XG4gICAgfVxufVxuIl19
@@ -17,9 +17,9 @@ var _ReadFormSource = require("../../ReadFormSource");
17
17
 
18
18
  var _RequireUncached = require("./RequireUncached");
19
19
 
20
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
21
 
22
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
23
 
24
24
  /* eslint-disable @typescript-eslint/no-unsafe-return */
25
25
  class GeneratorSourcesImporter {
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.requireUncachedDefault = requireUncachedDefault;
7
6
  exports.requireUncachedAllNamed = requireUncachedAllNamed;
7
+ exports.requireUncachedDefault = requireUncachedDefault;
8
8
 
9
9
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -3,17 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isEngineVersionExists = isEngineVersionExists;
7
- exports.getLastStableEngineVersion = getLastStableEngineVersion;
8
- exports.getLastStableGeneratorVersion = getLastStableGeneratorVersion;
9
6
  exports.getLastEnginePrereleaseVersion = getLastEnginePrereleaseVersion;
10
7
  exports.getLastGeneratorPrereleaseVersion = getLastGeneratorPrereleaseVersion;
8
+ exports.getLastStableEngineVersion = getLastStableEngineVersion;
9
+ exports.getLastStableGeneratorVersion = getLastStableGeneratorVersion;
10
+ exports.getPrereleaseVersionFormJson = getPrereleaseVersionFormJson;
11
+ exports.getSuitableVersion = getSuitableVersion;
12
+ exports.isEngineVersionExists = isEngineVersionExists;
13
+ exports.resolveEngineVersion = resolveEngineVersion;
11
14
  exports.resolveGeneratorVersion = resolveGeneratorVersion;
12
- exports.resolveLocalGeneratorSource = resolveLocalGeneratorSource;
13
15
  exports.resolveLocalEngineSource = resolveLocalEngineSource;
14
- exports.resolveEngineVersion = resolveEngineVersion;
15
- exports.getSuitableVersion = getSuitableVersion;
16
- exports.getPrereleaseVersionFormJson = getPrereleaseVersionFormJson;
16
+ exports.resolveLocalGeneratorSource = resolveLocalGeneratorSource;
17
17
 
18
18
  var semver = _interopRequireWildcard(require("semver"));
19
19
 
@@ -23,9 +23,9 @@ var _StaticLogger = require("../Commons/Logging/StaticLogger");
23
23
 
24
24
  var _Version = require("./Version");
25
25
 
26
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
27
 
28
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
29
 
30
30
  const candyGeneratorPackageName = "@kontur.candy/generator";
31
31
  const candyEnginePackageName = "@kontur.candy/engine";
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.resolveFormInfo = resolveFormInfo;
6
+ exports.FormBuildMode = void 0;
7
7
  exports.isNewFormJsonFormat = isNewFormJsonFormat;
8
8
  exports.readFormConfig = readFormConfig;
9
- exports.FormBuildMode = void 0;
9
+ exports.resolveFormInfo = resolveFormInfo;
10
10
 
11
11
  var _path = _interopRequireDefault(require("path"));
12
12
 
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isValidVersion = isValidVersion;
6
+ exports.candyVersionSpecToString = candyVersionSpecToString;
7
7
  exports.isValidSemVerVersionRange = isValidSemVerVersionRange;
8
+ exports.isValidVersion = isValidVersion;
8
9
  exports.parseCandyVersionSpec = parseCandyVersionSpec;
9
- exports.candyVersionSpecToString = candyVersionSpecToString;
10
10
 
11
11
  var semver = _interopRequireWildcard(require("semver"));
12
12
 
13
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
13
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
14
 
15
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
16
 
17
17
  function isValidVersion(input, strict = false) {
18
18
  if (strict) {
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.parseBuildCacheMode = parseBuildCacheMode;
7
6
  exports.BuildCacheMode = void 0;
7
+ exports.parseBuildCacheMode = parseBuildCacheMode;
8
8
  let BuildCacheMode;
9
9
  exports.BuildCacheMode = BuildCacheMode;
10
10
 
@@ -49,6 +49,8 @@ var _CacheAssetsPlugin = require("../../FormWebpackConfiguration/CacheAssetsPlug
49
49
 
50
50
  var _TypingUtils = require("../../../../Common/TypingUtils");
51
51
 
52
+ var _WriteAttachmentPathFiles = require("../../BuildTasks/Form/WriteAttachmentPathFiles");
53
+
52
54
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
53
55
 
54
56
  function getGeneratorVersion(generatorSource) {
@@ -109,7 +111,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
109
111
  }
110
112
  }, async (fi, y) => ({ ...fi,
111
113
  generator: y
112
- }), async (fi) => fi.generatorSource != undefined ? (0, _AcquireFormGenerator.getGeneratorSourceKey)(fi.generatorSource) : "NullFormGenerator").attach(async fi => {
114
+ }), async fi => fi.generatorSource != undefined ? (0, _AcquireFormGenerator.getGeneratorSourceKey)(fi.generatorSource) : "NullFormGenerator").attach(async fi => {
113
115
  if (fi.engineSource === undefined) {
114
116
  return new _SingleValueProducer.SingleValueProducer("NullEngine");
115
117
  }
@@ -120,7 +122,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
120
122
  copiedEngines.add((0, _EngineSource.getEngineSourceKey)(fi.engineSource));
121
123
  }
122
124
  });
123
- }, async fi => fi, async fi => fi.engineSource != undefined ? (0, _EngineSource.getEngineSourceKey)(fi.engineSource) : "NullEngine").attach(async (fi) => _Observe.Observe.files(fi.formSourcesPath, "../../controls/**/*", "schemas/**/*", "sugar/**/*", "controls/**/*", "autocalc/**/*", "helpers/**/*", "validations/**/*", "localization/**/*")).transform(async fi => {
125
+ }, async fi => fi, async fi => fi.engineSource != undefined ? (0, _EngineSource.getEngineSourceKey)(fi.engineSource) : "NullEngine").attach(async fi => _Observe.Observe.files(fi.formSourcesPath, "../../controls/**/*", "schemas/**/*", "sugar/**/*", "controls/**/*", "autocalc/**/*", "helpers/**/*", "validations/**/*", "localization/**/*")).transform(async fi => {
124
126
  let dependenciesHash;
125
127
 
126
128
  if (fi.mode !== _ResolveFormInfo.FormBuildMode.NormalBuild) {
@@ -191,13 +193,14 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
191
193
  farmDirectory: farmDirectory
192
194
  } : undefined;
193
195
  await (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, farmDirectory, resourcesDirectory, undefined, buildCache, buildCacheOptions);
196
+ await (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, farmDirectory, resourcesDirectory, undefined, buildCache, buildCacheOptions);
194
197
  }).attach(async fi => {
195
198
  if (fi.mode === _ResolveFormInfo.FormBuildMode.CopyLegacyPrebuiltResources) {
196
199
  return _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "legacy-prebuilt"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("LEGACY-PREBUILT"), x, _path.default.join(resourcesDirectory)));
197
200
  } else {
198
201
  return new _SingleValueProducer.SingleValueProducer("");
199
202
  }
200
- }).attach(async (fi) => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async (fi) => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async (fi) => _Observe.Observe.file(_path.default.join(fi.formSourcesPath, "presentations.json")).do(x => _FSTask.FSTask.copyFile((0, _StaticLogger.getLogger)().withPrefix("PRESENTATIONS"), x, _path.default.join(resourcesDirectory, "presentations", `${gfv}.presentations.json`)))).attach(async (fi) => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async (fi) => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async (fi) => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async (fi) => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap")))).do(async fi => {
203
+ }).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.file(_path.default.join(fi.formSourcesPath, "presentations.json")).do(x => _FSTask.FSTask.copyFile((0, _StaticLogger.getLogger)().withPrefix("PRESENTATIONS"), x, _path.default.join(resourcesDirectory, "presentations", `${gfv}.presentations.json`)))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap")))).do(async fi => {
201
204
  if (buildOptions.watch) {
202
205
  _nodeNotifier.default.notify({
203
206
  title: `${fi.formName}: сборка завершена`,
@@ -255,4 +258,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
255
258
  await (0, _fsExtra.emptyDir)(resourcesDirectory);
256
259
  logger.log("Resource directory clean");
257
260
  }
258
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsImNvcHlGaWxlIiwid2F0Y2giLCJub3RpZmllciIsIm5vdGlmeSIsInRpdGxlIiwibWVzc2FnZSIsImNsZWFuIiwiY2xlYW5UYXJnZXREaXJlY3RvcnkiLCJzdG9wT2JzZXJ2ZTEiLCJvYnNlcnZlIiwic3RvcE9ic2VydmUyIiwic3RvcE9ic2VydmUzIiwic3RvcE9ic2VydmU0Iiwid2FpdEZvckV4aXQiLCJzdGFydERhdGUiLCJEYXRlIiwibm93IiwiY3VycmVudFZhbHVlIiwiY29uc29sZSIsImNoYWxrIiwiZ3JlZW5CcmlnaHQiLCJ0b3RhbFRpbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUlBLFNBQVNBLG1CQUFULENBQTZCQyxlQUE3QixFQUF1RTtBQUNuRSxNQUFJQSxlQUFlLENBQUNDLElBQWhCLEtBQXlCLG9CQUE3QixFQUFtRDtBQUMvQyxXQUFP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QUNILFVBQU1NLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyxHQUFMLEVBQWxCOztBQUNBLFFBQUk7QUFDQSxVQUFJM0YsT0FBTyxDQUFDaUYsS0FBWixFQUFtQjtBQUNmLGNBQU1DLG9CQUFvQixDQUFDaEYsa0JBQUQsRUFBcUJILE9BQU8sQ0FBQ2lCLE1BQTdCLENBQTFCO0FBQ0g7O0FBQ0QsWUFBTVQsY0FBYyxDQUFDcUYsWUFBckI7QUFDQSxZQUFNdEUsaUNBQWlDLENBQUNzRSxZQUF4QztBQUNBLFlBQU1wRSxvQkFBb0IsQ0FBQ29FLFlBQTNCO0FBQ0EsWUFBTTdELGVBQWUsQ0FBQzZELFlBQXRCLENBUEEsQ0FRQTs7QUFDQUMsTUFBQUEsT0FBTyxDQUFDNUIsR0FBUixDQUFZNkIsZUFBTUMsV0FBTixDQUFrQixlQUFsQixDQUFaO0FBQ0gsS0FWRCxTQVVVO0FBQ04sWUFBTUMsU0FBUyxHQUFHTixJQUFJLENBQUNDLEdBQUwsS0FBYUYsU0FBL0IsQ0FETSxDQUVOOztBQUNBSSxNQUFBQSxPQUFPLENBQUM1QixHQUFSLENBQWEsZUFBYyw0QkFBVStCLFNBQVYsQ0FBcUIsRUFBaEQ7QUFDSDtBQUNKO0FBQ0o7O0FBRUQsZUFBZWQsb0JBQWYsQ0FBb0NoRixrQkFBcEMsRUFBZ0VjLE1BQWhFLEVBQWdHO0FBQzVGQSxFQUFBQSxNQUFNLENBQUNpRCxHQUFQLENBQVcsa0NBQWtDL0Qsa0JBQTdDO0FBQ0EsUUFBTSx1QkFBU0Esa0JBQVQsQ0FBTjtBQUNBYyxFQUFBQSxNQUFNLENBQUNpRCxHQUFQLENBQVcsMEJBQVg7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGVtcHR5RGlyLCBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbm90aWZpZXIgZnJvbSBcIm5vZGUtbm90aWZpZXJcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgZ2V0RW5naW5lU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0VuZ2luZVNvdXJjZVwiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgTnVsbEZvcm1HZW5lcmF0b3IgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL051bGxGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7XG4gICAgZ2VuZXJhdG9yRmFjdG9yeSxcbiAgICBHZW5lcmF0b3JTb3VyY2UsXG4gICAgZ2V0R2VuZXJhdG9yU291cmNlS2V5LFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uLCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkTW9kZSwgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgU2luZ2xlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9TaW5nbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmRpcmVjdG9yeShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBnZnYgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSAhPT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBmaS5nZW5lcmF0b3Iuc3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZvcm1NZXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImxlZ2FjeS1wcmVidWlsdFwiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTEVHQUNZLVBSRUJVSUxUXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwcmVzZW50YXRpb25zLmpzb25cIikpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5RmlsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUFJFU0VOVEFUSU9OU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHJlc2VudGF0aW9uc1wiLCBgJHtnZnZ9LnByZXNlbnRhdGlvbnMuanNvbmApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyLm5vdGlmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2ZpLmZvcm1OYW1lfTog0YHQsdC+0YDQutCwINC30LDQstC10YDRiNC10L3QsGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEVuZ2luZTogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlID09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIltOb0VuZ2luZV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlMyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzTnVTcGVjQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXX0=
261
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsImNvcHlGaWxlIiwid2F0Y2giLCJub3RpZmllciIsIm5vdGlmeSIsInRpdGxlIiwibWVzc2FnZSIsImNsZWFuIiwiY2xlYW5UYXJnZXREaXJlY3RvcnkiLCJzdG9wT2JzZXJ2ZTEiLCJvYnNlcnZlIiwic3RvcE9ic2VydmUyIiwic3RvcE9ic2VydmUzIiwic3RvcE9ic2VydmU0Iiwid2FpdEZvckV4aXQiLCJzdGFydERhdGUiLCJEYXRlIiwibm93IiwiY3VycmVudFZhbHVlIiwiY29uc29sZSIsImNoYWxrIiwiZ3JlZW5CcmlnaHQiLCJ0b3RhbFRpbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUlBLFNBQVNBLG1CQUFULENBQTZCQyxlQUE3QixFQUF1RTtBQUNuRSxNQUFJQSxlQUFlLENBQUNDLElBQWhCLEtBQXlCLG9CQUE3QixFQUFtRDtBQUMv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dEMsU0FBcEIsRUFBK0I7QUFDM0IsWUFBTXNDLFlBQVksRUFBbEI7QUFDSDs7QUFDRCxVQUFNRixZQUFZLEVBQWxCO0FBQ0EsVUFBTUYsWUFBWSxFQUFsQjtBQUNILEdBakJELE1BaUJPO0FBQ0gsVUFBTU0sU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsRUFBbEI7O0FBQ0EsUUFBSTtBQUNBLFVBQUkzRixPQUFPLENBQUNpRixLQUFaLEVBQW1CO0FBQ2YsY0FBTUMsb0JBQW9CLENBQUNoRixrQkFBRCxFQUFxQkgsT0FBTyxDQUFDaUIsTUFBN0IsQ0FBMUI7QUFDSDs7QUFDRCxZQUFNVCxjQUFjLENBQUNxRixZQUFyQjtBQUNBLFlBQU10RSxpQ0FBaUMsQ0FBQ3NFLFlBQXhDO0FBQ0EsWUFBTXBFLG9CQUFvQixDQUFDb0UsWUFBM0I7QUFDQSxZQUFNN0QsZUFBZSxDQUFDNkQsWUFBdEIsQ0FQQSxDQVFBOztBQUNBQyxNQUFBQSxPQUFPLENBQUM1QixHQUFSLENBQVk2QixlQUFNQyxXQUFOLENBQWtCLGVBQWxCLENBQVo7QUFDSCxLQVZELFNBVVU7QUFDTixZQUFNQyxTQUFTLEdBQUdOLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixTQUEvQixDQURNLENBRU47O0FBQ0FJLE1BQUFBLE9BQU8sQ0FBQzVCLEdBQVIsQ0FBYSxlQUFjLDRCQUFVK0IsU0FBVixDQUFxQixFQUFoRDtBQUNIO0FBQ0o7QUFDSjs7QUFFRCxlQUFlZCxvQkFBZixDQUFvQ2hGLGtCQUFwQyxFQUFnRWMsTUFBaEUsRUFBZ0c7QUFDNUZBLEVBQUFBLE1BQU0sQ0FBQ2lELEdBQVAsQ0FBVyxrQ0FBa0MvRCxrQkFBN0M7QUFDQSxRQUFNLHVCQUFTQSxrQkFBVCxDQUFOO0FBQ0FjLEVBQUFBLE1BQU0sQ0FBQ2lELEdBQVAsQ0FBVywwQkFBWDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgZW1wdHlEaXIsIHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBub3RpZmllciBmcm9tIFwibm9kZS1ub3RpZmllclwiO1xuXG5pbXBvcnQgeyBlbmdpbmVGYWN0b3J5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0FjcXVpcmVGb3JtRW5naW5lXCI7XG5pbXBvcnQgeyBnZXRFbmdpbmVTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvRW5naW5lU291cmNlXCI7XG5pbXBvcnQgeyBjb21waWxlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm1cIjtcbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBOdWxsRm9ybUdlbmVyYXRvciB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vTnVsbEZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHtcbiAgICBnZW5lcmF0b3JGYWN0b3J5LFxuICAgIEdlbmVyYXRvclNvdXJjZSxcbiAgICBnZXRHZW5lcmF0b3JTb3VyY2VLZXksXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZ2luZVZlcnNpb24sIHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRNb2RlLCByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBTaW5nbGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL1NpbmdsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IHByaW50VGltZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1RpbWluZ1V0aWxzXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmRpcmVjdG9yeShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBnZnYgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSAhPT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBmaS5nZW5lcmF0b3Iuc3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZvcm1NZXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJsZWdhY3ktcHJlYnVpbHRcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkxFR0FDWS1QUkVCVUlMVFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weUZpbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBSRVNFTlRBVElPTlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInByZXNlbnRhdGlvbnNcIiwgYCR7Z2Z2fS5wcmVzZW50YXRpb25zLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllci5ub3RpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBgJHtmaS5mb3JtTmFtZX06INGB0LHQvtGA0LrQsCDQt9Cw0LLQtdGA0YjQtdC90LBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBFbmdpbmU6ICR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSA9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJbTm9FbmdpbmVdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnR5cGUgPT09IFwiTG9jYWxFbmdpbmVTb3VyY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJsb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS52ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeSwgY29udGV4dC5sb2dnZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMSA9IGF3YWl0IHBpY2tMaXN0c0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRGb3Jtc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU0ID0gYXdhaXQgcmVzb3VyY2VzTnVTcGVjQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBhd2FpdCBjb250ZXh0LndhaXRGb3JFeGl0KCk7XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RvcE9ic2VydmU0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUyKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeSwgY29udGV4dC5sb2dnZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgcGlja0xpc3RzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHJlc291cmNlc051U3BlY0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW5CcmlnaHQoXCJCdWlsZCBzdWNjZXNzXCIpKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFRvdGFsIHRpbWU6ICR7cHJpbnRUaW1lKHRvdGFsVGltZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLCBsb2dnZXI6IElMb2dnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIubG9nKFwiQ2xlYW5pbmcgcmVzb3VyY2UgZGlyZWN0b3J5LiBcIiArIHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgYXdhaXQgZW1wdHlEaXIocmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBsb2dnZXIubG9nKFwiUmVzb3VyY2UgZGlyZWN0b3J5IGNsZWFuXCIpO1xufVxuIl19