@angular/compiler-cli 11.2.2 → 11.2.6

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 (81) hide show
  1. package/linker/src/file_linker/partial_linkers/partial_linker_selector.d.ts +1 -1
  2. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +4 -4
  3. package/ngcc/src/analysis/decoration_analyzer.d.ts +2 -1
  4. package/ngcc/src/analysis/decoration_analyzer.js +6 -4
  5. package/ngcc/src/analysis/ngcc_trait_compiler.d.ts +3 -2
  6. package/ngcc/src/analysis/ngcc_trait_compiler.js +3 -2
  7. package/ngcc/src/analysis/util.js +1 -3
  8. package/ngcc/src/command_line_options.js +10 -2
  9. package/ngcc/src/entry_point_finder/utils.js +85 -24
  10. package/ngcc/src/execution/analyze_entry_points.d.ts +1 -1
  11. package/ngcc/src/execution/analyze_entry_points.js +18 -9
  12. package/ngcc/src/execution/create_compile_function.js +5 -5
  13. package/ngcc/src/execution/tasks/api.d.ts +23 -2
  14. package/ngcc/src/execution/tasks/api.js +22 -2
  15. package/ngcc/src/execution/tasks/completion.js +13 -9
  16. package/ngcc/src/execution/tasks/utils.js +6 -3
  17. package/ngcc/src/main.js +3 -3
  18. package/ngcc/src/ngcc_options.d.ts +12 -1
  19. package/ngcc/src/ngcc_options.js +8 -2
  20. package/ngcc/src/packages/build_marker.d.ts +1 -1
  21. package/ngcc/src/packages/build_marker.js +1 -1
  22. package/ngcc/src/packages/entry_point_bundle.d.ts +4 -2
  23. package/ngcc/src/packages/entry_point_bundle.js +9 -6
  24. package/ngcc/src/packages/transformer.js +10 -5
  25. package/package.json +2 -2
  26. package/src/ngtsc/annotations/src/component.d.ts +18 -4
  27. package/src/ngtsc/annotations/src/component.js +137 -23
  28. package/src/ngtsc/annotations/src/directive.d.ts +22 -3
  29. package/src/ngtsc/annotations/src/directive.js +122 -5
  30. package/src/ngtsc/annotations/src/injectable.d.ts +2 -1
  31. package/src/ngtsc/annotations/src/injectable.js +4 -1
  32. package/src/ngtsc/annotations/src/ng_module.d.ts +16 -5
  33. package/src/ngtsc/annotations/src/ng_module.js +121 -39
  34. package/src/ngtsc/annotations/src/pipe.d.ts +12 -1
  35. package/src/ngtsc/annotations/src/pipe.js +29 -3
  36. package/src/ngtsc/annotations/src/util.js +7 -7
  37. package/src/ngtsc/core/src/compiler.d.ts +0 -5
  38. package/src/ngtsc/core/src/compiler.js +11 -116
  39. package/src/ngtsc/core/src/config.d.ts +9 -0
  40. package/src/ngtsc/core/src/config.js +28 -0
  41. package/src/ngtsc/core/src/host.d.ts +1 -0
  42. package/src/ngtsc/core/src/host.js +16 -1
  43. package/src/ngtsc/cycles/src/imports.d.ts +2 -3
  44. package/src/ngtsc/cycles/src/imports.js +28 -14
  45. package/src/ngtsc/imports/index.d.ts +1 -1
  46. package/src/ngtsc/imports/index.js +1 -1
  47. package/src/ngtsc/imports/src/alias.d.ts +2 -2
  48. package/src/ngtsc/imports/src/alias.js +3 -3
  49. package/src/ngtsc/imports/src/emitter.d.ts +51 -10
  50. package/src/ngtsc/imports/src/emitter.js +26 -19
  51. package/src/ngtsc/incremental/api.d.ts +0 -14
  52. package/src/ngtsc/incremental/api.js +1 -1
  53. package/src/ngtsc/incremental/semantic_graph/index.d.ts +12 -0
  54. package/src/ngtsc/incremental/semantic_graph/index.js +34 -0
  55. package/src/ngtsc/incremental/semantic_graph/src/api.d.ts +98 -0
  56. package/src/ngtsc/incremental/semantic_graph/src/api.js +51 -0
  57. package/src/ngtsc/incremental/semantic_graph/src/graph.d.ts +105 -0
  58. package/src/ngtsc/incremental/semantic_graph/src/graph.js +302 -0
  59. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.d.ts +30 -0
  60. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.js +55 -0
  61. package/src/ngtsc/incremental/semantic_graph/src/util.d.ts +29 -0
  62. package/src/ngtsc/incremental/semantic_graph/src/util.js +111 -0
  63. package/src/ngtsc/incremental/src/dependency_tracking.d.ts +0 -3
  64. package/src/ngtsc/incremental/src/dependency_tracking.js +9 -50
  65. package/src/ngtsc/incremental/src/state.d.ts +2 -1
  66. package/src/ngtsc/incremental/src/state.js +61 -16
  67. package/src/ngtsc/modulewithproviders/src/scanner.js +2 -2
  68. package/src/ngtsc/scope/src/dependency.js +1 -2
  69. package/src/ngtsc/scope/src/local.d.ts +0 -13
  70. package/src/ngtsc/scope/src/local.js +2 -16
  71. package/src/ngtsc/transform/src/api.d.ts +16 -2
  72. package/src/ngtsc/transform/src/api.js +1 -1
  73. package/src/ngtsc/transform/src/compilation.d.ts +7 -4
  74. package/src/ngtsc/transform/src/compilation.js +25 -8
  75. package/src/ngtsc/transform/src/trait.d.ts +14 -11
  76. package/src/ngtsc/transform/src/trait.js +7 -3
  77. package/src/ngtsc/typecheck/src/environment.js +3 -3
  78. package/src/perform_compile.d.ts +1 -2
  79. package/src/perform_compile.js +58 -47
  80. package/src/transformers/node_emitter.js +1 -2
  81. package/src/version.js +1 -1
@@ -4,7 +4,7 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define("@angular/compiler-cli/ngcc/src/execution/tasks/completion", ["require", "exports", "tslib", "@angular/compiler-cli/ngcc/src/packages/build_marker", "@angular/compiler-cli/ngcc/src/packages/entry_point"], factory);
7
+ define("@angular/compiler-cli/ngcc/src/execution/tasks/completion", ["require", "exports", "tslib", "@angular/compiler-cli/ngcc/src/packages/build_marker", "@angular/compiler-cli/ngcc/src/packages/entry_point", "@angular/compiler-cli/ngcc/src/execution/tasks/api"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -13,6 +13,7 @@
13
13
  var tslib_1 = require("tslib");
14
14
  var build_marker_1 = require("@angular/compiler-cli/ngcc/src/packages/build_marker");
15
15
  var entry_point_1 = require("@angular/compiler-cli/ngcc/src/packages/entry_point");
16
+ var api_1 = require("@angular/compiler-cli/ngcc/src/execution/tasks/api");
16
17
  /**
17
18
  * Compose a group of TaskCompletedHandlers into a single TaskCompletedCallback.
18
19
  *
@@ -41,7 +42,7 @@
41
42
  var entryPoint = task.entryPoint, formatPropertiesToMarkAsProcessed = task.formatPropertiesToMarkAsProcessed, processDts = task.processDts;
42
43
  var packageJsonPath = fs.resolve(entryPoint.path, 'package.json');
43
44
  var propsToMarkAsProcessed = tslib_1.__spread(formatPropertiesToMarkAsProcessed);
44
- if (processDts) {
45
+ if (processDts !== api_1.DtsProcessing.No) {
45
46
  propsToMarkAsProcessed.push('typings');
46
47
  }
47
48
  build_marker_1.markAsProcessed(pkgJsonUpdater, entryPoint.packageJson, packageJsonPath, propsToMarkAsProcessed);
@@ -53,9 +54,7 @@
53
54
  */
54
55
  function createThrowErrorHandler(fs) {
55
56
  return function (task, message) {
56
- var format = entry_point_1.getEntryPointFormat(fs, task.entryPoint, task.formatProperty);
57
- throw new Error("Failed to compile entry-point " + task.entryPoint.name + " (" + task.formatProperty + " as " + format + ")" +
58
- (message !== null ? " due to " + message : ''));
57
+ throw new Error(createErrorMessage(fs, task, message));
59
58
  };
60
59
  }
61
60
  exports.createThrowErrorHandler = createThrowErrorHandler;
@@ -65,11 +64,16 @@
65
64
  function createLogErrorHandler(logger, fs, taskQueue) {
66
65
  return function (task, message) {
67
66
  taskQueue.markAsFailed(task);
68
- var format = entry_point_1.getEntryPointFormat(fs, task.entryPoint, task.formatProperty);
69
- logger.error("Failed to compile entry-point " + task.entryPoint.name + " (" + task.formatProperty + " as " + format + ")" +
70
- (message !== null ? " due to " + message : ''));
67
+ logger.error(createErrorMessage(fs, task, message));
71
68
  };
72
69
  }
73
70
  exports.createLogErrorHandler = createLogErrorHandler;
71
+ function createErrorMessage(fs, task, message) {
72
+ var _a;
73
+ var jsFormat = "`" + task.formatProperty + "` as " + ((_a = entry_point_1.getEntryPointFormat(fs, task.entryPoint, task.formatProperty)) !== null && _a !== void 0 ? _a : 'unknown format');
74
+ var format = task.typingsOnly ? "typings only using " + jsFormat : jsFormat;
75
+ message = message !== null ? " due to " + message : '';
76
+ return "Failed to compile entry-point " + task.entryPoint.name + " (" + format + ")" + message;
77
+ }
74
78
  });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9leGVjdXRpb24vdGFza3MvY29tcGxldGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBU0EscUZBQTREO0lBQzVELG1GQUE0RjtJQWE1Rjs7Ozs7OztPQU9HO0lBQ0gsU0FBZ0IsNkJBQTZCLENBQ3pDLFNBQThEO1FBQ2hFLE9BQU8sVUFBQyxJQUFVLEVBQUUsT0FBOEIsRUFBRSxPQUFvQjtZQUN0RSxJQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUEwQixPQUFPLGlDQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUcsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0lBVkQsc0VBVUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBZ0IsNEJBQTRCLENBQ3hDLEVBQW9CLEVBQUUsY0FBa0M7UUFDMUQsT0FBTyxVQUFDLElBQVU7WUFDVCxJQUFBLFVBQVUsR0FBbUQsSUFBSSxXQUF2RCxFQUFFLGlDQUFpQyxHQUFnQixJQUFJLGtDQUFwQixFQUFFLFVBQVUsR0FBSSxJQUFJLFdBQVIsQ0FBUztZQUN6RSxJQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDcEUsSUFBTSxzQkFBc0Isb0JBQ3BCLGlDQUFpQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxVQUFVLEVBQUU7Z0JBQ2Qsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3hDO1lBQ0QsOEJBQWUsQ0FDWCxjQUFjLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUM7SUFDSixDQUFDO0lBYkQsb0VBYUM7SUFFRDs7T0FFRztJQUNILFNBQWdCLHVCQUF1QixDQUFDLEVBQXNCO1FBQzVELE9BQU8sVUFBQyxJQUFVLEVBQUUsT0FBb0I7WUFDdEMsSUFBTSxNQUFNLEdBQUcsaUNBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sSUFBSSxLQUFLLENBQ1gsbUNBQWlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFLLElBQUksQ0FBQyxjQUFjLFlBQ3pFLE1BQU0sTUFBRztnQkFDYixDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQVcsT0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQztJQUNKLENBQUM7SUFSRCwwREFRQztJQUVEOztPQUVHO0lBQ0gsU0FBZ0IscUJBQXFCLENBQ2pDLE1BQWMsRUFBRSxFQUFzQixFQUFFLFNBQW9CO1FBQzlELE9BQU8sVUFBQyxJQUFVLEVBQUUsT0FBb0I7WUFDdEMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFNLE1BQU0sR0FBRyxpQ0FBbUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDN0UsTUFBTSxDQUFDLEtBQUssQ0FDUixtQ0FBaUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQUssSUFBSSxDQUFDLGNBQWMsWUFDekUsTUFBTSxNQUFHO2dCQUNiLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBVyxPQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQVZELHNEQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1BhdGhNYW5pcHVsYXRpb24sIFJlYWRvbmx5RmlsZVN5c3RlbX0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbmd0c2MvbG9nZ2luZyc7XG5pbXBvcnQge21hcmtBc1Byb2Nlc3NlZH0gZnJvbSAnLi4vLi4vcGFja2FnZXMvYnVpbGRfbWFya2VyJztcbmltcG9ydCB7Z2V0RW50cnlQb2ludEZvcm1hdCwgUGFja2FnZUpzb25Gb3JtYXRQcm9wZXJ0aWVzfSBmcm9tICcuLi8uLi9wYWNrYWdlcy9lbnRyeV9wb2ludCc7XG5pbXBvcnQge1BhY2thZ2VKc29uVXBkYXRlcn0gZnJvbSAnLi4vLi4vd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlcic7XG5cbmltcG9ydCB7VGFzaywgVGFza0NvbXBsZXRlZENhbGxiYWNrLCBUYXNrUHJvY2Vzc2luZ091dGNvbWUsIFRhc2tRdWV1ZX0gZnJvbSAnLi9hcGknO1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBjYW4gaGFuZGxlIGEgc3BlY2lmaWMgb3V0Y29tZSBvZiBhIHRhc2sgY29tcGxldGlvbi5cbiAqXG4gKiBUaGVzZSBmdW5jdGlvbnMgY2FuIGJlIGNvbXBvc2VkIHVzaW5nIHRoZSBgY29tcG9zZVRhc2tDb21wbGV0ZWRDYWxsYmFja3MoKWBcbiAqIHRvIGNyZWF0ZSBhIGBUYXNrQ29tcGxldGVkQ2FsbGJhY2tgIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBhbiBgRXhlY3V0b3JgLlxuICovXG5leHBvcnQgdHlwZSBUYXNrQ29tcGxldGVkSGFuZGxlciA9ICh0YXNrOiBUYXNrLCBtZXNzYWdlOiBzdHJpbmd8bnVsbCkgPT4gdm9pZDtcblxuLyoqXG4gKiBDb21wb3NlIGEgZ3JvdXAgb2YgVGFza0NvbXBsZXRlZEhhbmRsZXJzIGludG8gYSBzaW5nbGUgVGFza0NvbXBsZXRlZENhbGxiYWNrLlxuICpcbiAqIFRoZSBjb21wb3NlIGNhbGxiYWNrIHdpbGwgcmVjZWl2ZSBhbiBvdXRjb21lIGFuZCB3aWxsIGRlbGVnYXRlIHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIGJhc2VkXG4gKiBvbiB0aGlzIG91dGNvbWUuXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrcyBhIG1hcCBvZiBvdXRjb21lcyB0byBoYW5kbGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VUYXNrQ29tcGxldGVkQ2FsbGJhY2tzKFxuICAgIGNhbGxiYWNrczogUmVjb3JkPFRhc2tQcm9jZXNzaW5nT3V0Y29tZSwgVGFza0NvbXBsZXRlZEhhbmRsZXI+KTogVGFza0NvbXBsZXRlZENhbGxiYWNrIHtcbiAgcmV0dXJuICh0YXNrOiBUYXNrLCBvdXRjb21lOiBUYXNrUHJvY2Vzc2luZ091dGNvbWUsIG1lc3NhZ2U6IHN0cmluZ3xudWxsKTogdm9pZCA9PiB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSBjYWxsYmFja3Nbb3V0Y29tZV07XG4gICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0YXNrIG91dGNvbWU6IFwiJHtvdXRjb21lfVwiIC0gc3VwcG9ydGVkIG91dGNvbWVzOiAke1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKGNhbGxiYWNrcykpfWApO1xuICAgIH1cbiAgICBjYWxsYmFjayh0YXNrLCBtZXNzYWdlKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBoYW5kbGVyIHRoYXQgd2lsbCBtYXJrIHRoZSBlbnRyeS1wb2ludHMgaW4gYSBwYWNrYWdlIGFzIGJlaW5nIHByb2Nlc3NlZC5cbiAqXG4gKiBAcGFyYW0gcGtnSnNvblVwZGF0ZXIgVGhlIHNlcnZpY2UgdXNlZCB0byB1cGRhdGUgdGhlIHBhY2thZ2UuanNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWFya0FzUHJvY2Vzc2VkSGFuZGxlcihcbiAgICBmczogUGF0aE1hbmlwdWxhdGlvbiwgcGtnSnNvblVwZGF0ZXI6IFBhY2thZ2VKc29uVXBkYXRlcik6IFRhc2tDb21wbGV0ZWRIYW5kbGVyIHtcbiAgcmV0dXJuICh0YXNrOiBUYXNrKTogdm9pZCA9PiB7XG4gICAgY29uc3Qge2VudHJ5UG9pbnQsIGZvcm1hdFByb3BlcnRpZXNUb01hcmtBc1Byb2Nlc3NlZCwgcHJvY2Vzc0R0c30gPSB0YXNrO1xuICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IGZzLnJlc29sdmUoZW50cnlQb2ludC5wYXRoLCAncGFja2FnZS5qc29uJyk7XG4gICAgY29uc3QgcHJvcHNUb01hcmtBc1Byb2Nlc3NlZDogUGFja2FnZUpzb25Gb3JtYXRQcm9wZXJ0aWVzW10gPVxuICAgICAgICBbLi4uZm9ybWF0UHJvcGVydGllc1RvTWFya0FzUHJvY2Vzc2VkXTtcbiAgICBpZiAocHJvY2Vzc0R0cykge1xuICAgICAgcHJvcHNUb01hcmtBc1Byb2Nlc3NlZC5wdXNoKCd0eXBpbmdzJyk7XG4gICAgfVxuICAgIG1hcmtBc1Byb2Nlc3NlZChcbiAgICAgICAgcGtnSnNvblVwZGF0ZXIsIGVudHJ5UG9pbnQucGFja2FnZUpzb24sIHBhY2thZ2VKc29uUGF0aCwgcHJvcHNUb01hcmtBc1Byb2Nlc3NlZCk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgaGFuZGxlciB0aGF0IHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUaHJvd0Vycm9ySGFuZGxlcihmczogUmVhZG9ubHlGaWxlU3lzdGVtKTogVGFza0NvbXBsZXRlZEhhbmRsZXIge1xuICByZXR1cm4gKHRhc2s6IFRhc2ssIG1lc3NhZ2U6IHN0cmluZ3xudWxsKTogdm9pZCA9PiB7XG4gICAgY29uc3QgZm9ybWF0ID0gZ2V0RW50cnlQb2ludEZvcm1hdChmcywgdGFzay5lbnRyeVBvaW50LCB0YXNrLmZvcm1hdFByb3BlcnR5KTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gY29tcGlsZSBlbnRyeS1wb2ludCAke3Rhc2suZW50cnlQb2ludC5uYW1lfSAoJHt0YXNrLmZvcm1hdFByb3BlcnR5fSBhcyAke1xuICAgICAgICAgICAgZm9ybWF0fSlgICtcbiAgICAgICAgKG1lc3NhZ2UgIT09IG51bGwgPyBgIGR1ZSB0byAke21lc3NhZ2V9YCA6ICcnKSk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgaGFuZGxlciB0aGF0IGxvZ3MgYW4gZXJyb3IgYW5kIG1hcmtzIHRoZSB0YXNrIGFzIGZhaWxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ0Vycm9ySGFuZGxlcihcbiAgICBsb2dnZXI6IExvZ2dlciwgZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSwgdGFza1F1ZXVlOiBUYXNrUXVldWUpOiBUYXNrQ29tcGxldGVkSGFuZGxlciB7XG4gIHJldHVybiAodGFzazogVGFzaywgbWVzc2FnZTogc3RyaW5nfG51bGwpOiB2b2lkID0+IHtcbiAgICB0YXNrUXVldWUubWFya0FzRmFpbGVkKHRhc2spO1xuICAgIGNvbnN0IGZvcm1hdCA9IGdldEVudHJ5UG9pbnRGb3JtYXQoZnMsIHRhc2suZW50cnlQb2ludCwgdGFzay5mb3JtYXRQcm9wZXJ0eSk7XG4gICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGNvbXBpbGUgZW50cnktcG9pbnQgJHt0YXNrLmVudHJ5UG9pbnQubmFtZX0gKCR7dGFzay5mb3JtYXRQcm9wZXJ0eX0gYXMgJHtcbiAgICAgICAgICAgIGZvcm1hdH0pYCArXG4gICAgICAgIChtZXNzYWdlICE9PSBudWxsID8gYCBkdWUgdG8gJHttZXNzYWdlfWAgOiAnJykpO1xuICB9O1xufVxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9leGVjdXRpb24vdGFza3MvY29tcGxldGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBU0EscUZBQTREO0lBQzVELG1GQUE0RjtJQUc1RiwwRUFBbUc7SUFVbkc7Ozs7Ozs7T0FPRztJQUNILFNBQWdCLDZCQUE2QixDQUN6QyxTQUE4RDtRQUNoRSxPQUFPLFVBQUMsSUFBVSxFQUFFLE9BQThCLEVBQUUsT0FBb0I7WUFDdEUsSUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBMEIsT0FBTyxpQ0FDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFHLENBQUMsQ0FBQzthQUMvQztZQUNELFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQVZELHNFQVVDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQWdCLDRCQUE0QixDQUN4QyxFQUFvQixFQUFFLGNBQWtDO1FBQzFELE9BQU8sVUFBQyxJQUFVO1lBQ1QsSUFBQSxVQUFVLEdBQW1ELElBQUksV0FBdkQsRUFBRSxpQ0FBaUMsR0FBZ0IsSUFBSSxrQ0FBcEIsRUFBRSxVQUFVLEdBQUksSUFBSSxXQUFSLENBQVM7WUFDekUsSUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3BFLElBQU0sc0JBQXNCLG9CQUNwQixpQ0FBaUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksVUFBVSxLQUFLLG1CQUFhLENBQUMsRUFBRSxFQUFFO2dCQUNuQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEM7WUFDRCw4QkFBZSxDQUNYLGNBQWMsRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQztJQUNKLENBQUM7SUFiRCxvRUFhQztJQUVEOztPQUVHO0lBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsRUFBc0I7UUFDNUQsT0FBTyxVQUFDLElBQVUsRUFBRSxPQUFvQjtZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUM7SUFDSixDQUFDO0lBSkQsMERBSUM7SUFFRDs7T0FFRztJQUNILFNBQWdCLHFCQUFxQixDQUNqQyxNQUFjLEVBQUUsRUFBc0IsRUFBRSxTQUFvQjtRQUM5RCxPQUFPLFVBQUMsSUFBVSxFQUFFLE9BQW9CO1lBQ3RDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQU5ELHNEQU1DO0lBRUQsU0FBUyxrQkFBa0IsQ0FBQyxFQUFzQixFQUFFLElBQVUsRUFBRSxPQUFvQjs7UUFDbEYsSUFBTSxRQUFRLEdBQUcsTUFBSyxJQUFJLENBQUMsY0FBYyxvQkFDckMsaUNBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQ0FBSSxnQkFBZ0IsQ0FBRSxDQUFDO1FBQ3hGLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHdCQUFzQixRQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM5RSxPQUFPLEdBQUcsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBVyxPQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxPQUFPLG1DQUFpQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBSyxNQUFNLE1BQUcsR0FBRyxPQUFPLENBQUM7SUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtQYXRoTWFuaXB1bGF0aW9uLCBSZWFkb25seUZpbGVTeXN0ZW19IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL25ndHNjL2xvZ2dpbmcnO1xuaW1wb3J0IHttYXJrQXNQcm9jZXNzZWR9IGZyb20gJy4uLy4uL3BhY2thZ2VzL2J1aWxkX21hcmtlcic7XG5pbXBvcnQge2dldEVudHJ5UG9pbnRGb3JtYXQsIFBhY2thZ2VKc29uRm9ybWF0UHJvcGVydGllc30gZnJvbSAnLi4vLi4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuaW1wb3J0IHtQYWNrYWdlSnNvblVwZGF0ZXJ9IGZyb20gJy4uLy4uL3dyaXRpbmcvcGFja2FnZV9qc29uX3VwZGF0ZXInO1xuXG5pbXBvcnQge0R0c1Byb2Nlc3NpbmcsIFRhc2ssIFRhc2tDb21wbGV0ZWRDYWxsYmFjaywgVGFza1Byb2Nlc3NpbmdPdXRjb21lLCBUYXNrUXVldWV9IGZyb20gJy4vYXBpJztcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgY2FuIGhhbmRsZSBhIHNwZWNpZmljIG91dGNvbWUgb2YgYSB0YXNrIGNvbXBsZXRpb24uXG4gKlxuICogVGhlc2UgZnVuY3Rpb25zIGNhbiBiZSBjb21wb3NlZCB1c2luZyB0aGUgYGNvbXBvc2VUYXNrQ29tcGxldGVkQ2FsbGJhY2tzKClgXG4gKiB0byBjcmVhdGUgYSBgVGFza0NvbXBsZXRlZENhbGxiYWNrYCBmdW5jdGlvbiB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYW4gYEV4ZWN1dG9yYC5cbiAqL1xuZXhwb3J0IHR5cGUgVGFza0NvbXBsZXRlZEhhbmRsZXIgPSAodGFzazogVGFzaywgbWVzc2FnZTogc3RyaW5nfG51bGwpID0+IHZvaWQ7XG5cbi8qKlxuICogQ29tcG9zZSBhIGdyb3VwIG9mIFRhc2tDb21wbGV0ZWRIYW5kbGVycyBpbnRvIGEgc2luZ2xlIFRhc2tDb21wbGV0ZWRDYWxsYmFjay5cbiAqXG4gKiBUaGUgY29tcG9zZSBjYWxsYmFjayB3aWxsIHJlY2VpdmUgYW4gb3V0Y29tZSBhbmQgd2lsbCBkZWxlZ2F0ZSB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBiYXNlZFxuICogb24gdGhpcyBvdXRjb21lLlxuICpcbiAqIEBwYXJhbSBjYWxsYmFja3MgYSBtYXAgb2Ygb3V0Y29tZXMgdG8gaGFuZGxlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlVGFza0NvbXBsZXRlZENhbGxiYWNrcyhcbiAgICBjYWxsYmFja3M6IFJlY29yZDxUYXNrUHJvY2Vzc2luZ091dGNvbWUsIFRhc2tDb21wbGV0ZWRIYW5kbGVyPik6IFRhc2tDb21wbGV0ZWRDYWxsYmFjayB7XG4gIHJldHVybiAodGFzazogVGFzaywgb3V0Y29tZTogVGFza1Byb2Nlc3NpbmdPdXRjb21lLCBtZXNzYWdlOiBzdHJpbmd8bnVsbCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gY2FsbGJhY2tzW291dGNvbWVdO1xuICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdGFzayBvdXRjb21lOiBcIiR7b3V0Y29tZX1cIiAtIHN1cHBvcnRlZCBvdXRjb21lczogJHtcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhjYWxsYmFja3MpKX1gKTtcbiAgICB9XG4gICAgY2FsbGJhY2sodGFzaywgbWVzc2FnZSk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgaGFuZGxlciB0aGF0IHdpbGwgbWFyayB0aGUgZW50cnktcG9pbnRzIGluIGEgcGFja2FnZSBhcyBiZWluZyBwcm9jZXNzZWQuXG4gKlxuICogQHBhcmFtIHBrZ0pzb25VcGRhdGVyIFRoZSBzZXJ2aWNlIHVzZWQgdG8gdXBkYXRlIHRoZSBwYWNrYWdlLmpzb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hcmtBc1Byb2Nlc3NlZEhhbmRsZXIoXG4gICAgZnM6IFBhdGhNYW5pcHVsYXRpb24sIHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIpOiBUYXNrQ29tcGxldGVkSGFuZGxlciB7XG4gIHJldHVybiAodGFzazogVGFzayk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHtlbnRyeVBvaW50LCBmb3JtYXRQcm9wZXJ0aWVzVG9NYXJrQXNQcm9jZXNzZWQsIHByb2Nlc3NEdHN9ID0gdGFzaztcbiAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBmcy5yZXNvbHZlKGVudHJ5UG9pbnQucGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGNvbnN0IHByb3BzVG9NYXJrQXNQcm9jZXNzZWQ6IFBhY2thZ2VKc29uRm9ybWF0UHJvcGVydGllc1tdID1cbiAgICAgICAgWy4uLmZvcm1hdFByb3BlcnRpZXNUb01hcmtBc1Byb2Nlc3NlZF07XG4gICAgaWYgKHByb2Nlc3NEdHMgIT09IER0c1Byb2Nlc3NpbmcuTm8pIHtcbiAgICAgIHByb3BzVG9NYXJrQXNQcm9jZXNzZWQucHVzaCgndHlwaW5ncycpO1xuICAgIH1cbiAgICBtYXJrQXNQcm9jZXNzZWQoXG4gICAgICAgIHBrZ0pzb25VcGRhdGVyLCBlbnRyeVBvaW50LnBhY2thZ2VKc29uLCBwYWNrYWdlSnNvblBhdGgsIHByb3BzVG9NYXJrQXNQcm9jZXNzZWQpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGhhbmRsZXIgdGhhdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGhyb3dFcnJvckhhbmRsZXIoZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSk6IFRhc2tDb21wbGV0ZWRIYW5kbGVyIHtcbiAgcmV0dXJuICh0YXNrOiBUYXNrLCBtZXNzYWdlOiBzdHJpbmd8bnVsbCk6IHZvaWQgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihjcmVhdGVFcnJvck1lc3NhZ2UoZnMsIHRhc2ssIG1lc3NhZ2UpKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBoYW5kbGVyIHRoYXQgbG9ncyBhbiBlcnJvciBhbmQgbWFya3MgdGhlIHRhc2sgYXMgZmFpbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9nRXJyb3JIYW5kbGVyKFxuICAgIGxvZ2dlcjogTG9nZ2VyLCBmczogUmVhZG9ubHlGaWxlU3lzdGVtLCB0YXNrUXVldWU6IFRhc2tRdWV1ZSk6IFRhc2tDb21wbGV0ZWRIYW5kbGVyIHtcbiAgcmV0dXJuICh0YXNrOiBUYXNrLCBtZXNzYWdlOiBzdHJpbmd8bnVsbCk6IHZvaWQgPT4ge1xuICAgIHRhc2tRdWV1ZS5tYXJrQXNGYWlsZWQodGFzayk7XG4gICAgbG9nZ2VyLmVycm9yKGNyZWF0ZUVycm9yTWVzc2FnZShmcywgdGFzaywgbWVzc2FnZSkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFcnJvck1lc3NhZ2UoZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSwgdGFzazogVGFzaywgbWVzc2FnZTogc3RyaW5nfG51bGwpOiBzdHJpbmcge1xuICBjb25zdCBqc0Zvcm1hdCA9IGBcXGAke3Rhc2suZm9ybWF0UHJvcGVydHl9XFxgIGFzICR7XG4gICAgICBnZXRFbnRyeVBvaW50Rm9ybWF0KGZzLCB0YXNrLmVudHJ5UG9pbnQsIHRhc2suZm9ybWF0UHJvcGVydHkpID8/ICd1bmtub3duIGZvcm1hdCd9YDtcbiAgY29uc3QgZm9ybWF0ID0gdGFzay50eXBpbmdzT25seSA/IGB0eXBpbmdzIG9ubHkgdXNpbmcgJHtqc0Zvcm1hdH1gIDoganNGb3JtYXQ7XG4gIG1lc3NhZ2UgPSBtZXNzYWdlICE9PSBudWxsID8gYCBkdWUgdG8gJHttZXNzYWdlfWAgOiAnJztcbiAgcmV0dXJuIGBGYWlsZWQgdG8gY29tcGlsZSBlbnRyeS1wb2ludCAke3Rhc2suZW50cnlQb2ludC5uYW1lfSAoJHtmb3JtYXR9KWAgKyBtZXNzYWdlO1xufVxuIl19
@@ -13,7 +13,10 @@
13
13
  var tslib_1 = require("tslib");
14
14
  var api_1 = require("@angular/compiler-cli/ngcc/src/execution/tasks/api");
15
15
  /** Stringify a task for debugging purposes. */
16
- var stringifyTask = function (task) { return "{entryPoint: " + task.entryPoint.name + ", formatProperty: " + task.formatProperty + ", processDts: " + task.processDts + "}"; };
16
+ var stringifyTask = function (task) {
17
+ return "{entryPoint: " + task.entryPoint.name + ", formatProperty: " + task.formatProperty + ", " +
18
+ ("processDts: " + api_1.DtsProcessing[task.processDts] + "}");
19
+ };
17
20
  exports.stringifyTask = stringifyTask;
18
21
  /**
19
22
  * Compute a mapping of tasks to the tasks that are dependent on them (if any).
@@ -63,7 +66,7 @@
63
66
  finally { if (e_1) throw e_1.error; }
64
67
  }
65
68
  }
66
- if (task.processDts) {
69
+ if (task.processDts !== api_1.DtsProcessing.No) {
67
70
  // SANITY CHECK:
68
71
  // There should only be one task per entry-point that generates typings (and thus can be a
69
72
  // dependency of other tasks), so the following should theoretically never happen, but check
@@ -161,4 +164,4 @@
161
164
  }
162
165
  exports.sortTasksByPriority = sortTasksByPriority;
163
166
  });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvZXhlY3V0aW9uL3Rhc2tzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7SUFTQSwwRUFBb0U7SUFFcEUsK0NBQStDO0lBQ3hDLElBQU0sYUFBYSxHQUFHLFVBQUMsSUFBVSxJQUFhLE9BQUEsa0JBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSwwQkFBcUIsSUFBSSxDQUFDLGNBQWMsc0JBQWlCLElBQUksQ0FBQyxVQUFVLE1BQUcsRUFEOUMsQ0FDOEMsQ0FBQztJQUR2RixRQUFBLGFBQWEsaUJBQzBFO0lBRXBHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFNBQWdCLHVCQUF1QixDQUNuQyxLQUE0QixFQUFFLEtBQTJCO1FBQzNELElBQU0sWUFBWSxHQUFHLElBQUksc0JBQWdCLEVBQUUsQ0FBQztRQUM1QyxJQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO1FBRXRELEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJOztZQUNoQixJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUU1QyxnRkFBZ0Y7WUFDaEYsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRCxJQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQTlCLENBQThCLENBQUM7aUJBQzdDLEdBQUcsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsRUFBL0IsQ0FBK0IsQ0FBQyxDQUFDO1lBRTFFLGlGQUFpRjtZ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QUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFoRSxDQUFnRSxDQUFDO1FBRXpGLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJLEVBQUUsQ0FBQyxJQUFLLE9BQUEsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFuRCxDQUFtRCxDQUFDLENBQUM7UUFFaEYsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQUMsS0FBSyxFQUFFLEtBQUs7WUFDL0IsSUFBQSxLQUFBLGVBQWEsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsSUFBQSxFQUF2QyxFQUFFLFFBQUEsRUFBRSxJQUFJLFFBQStCLENBQUM7WUFDekMsSUFBQSxLQUFBLGVBQWEsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsSUFBQSxFQUF2QyxFQUFFLFFBQUEsRUFBRSxJQUFJLFFBQStCLENBQUM7WUFFL0MsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFkRCxrREFjQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtEZXBHcmFwaH0gZnJvbSAnZGVwZW5kZW5jeS1ncmFwaCc7XG5pbXBvcnQge0VudHJ5UG9pbnR9IGZyb20gJy4uLy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50JztcbmltcG9ydCB7UGFydGlhbGx5T3JkZXJlZFRhc2tzLCBUYXNrLCBUYXNrRGVwZW5kZW5jaWVzfSBmcm9tICcuL2FwaSc7XG5cbi8qKiBTdHJpbmdpZnkgYSB0YXNrIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuICovXG5leHBvcnQgY29uc3Qgc3RyaW5naWZ5VGFzayA9ICh0YXNrOiBUYXNrKTogc3RyaW5nID0+IGB7ZW50cnlQb2ludDogJHtcbiAgICB0YXNrLmVudHJ5UG9pbnQubmFtZX0sIGZvcm1hdFByb3BlcnR5OiAke3Rhc2suZm9ybWF0UHJvcGVydHl9LCBwcm9jZXNzRHRzOiAke3Rhc2sucHJvY2Vzc0R0c319YDtcblxuLyoqXG4gKiBDb21wdXRlIGEgbWFwcGluZyBvZiB0YXNrcyB0byB0aGUgdGFza3MgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHRoZW0gKGlmIGFueSkuXG4gKlxuICogVGFzayBBIGNhbiBkZXBlbmQgdXBvbiB0YXNrIEIsIGlmIGVpdGhlcjpcbiAqXG4gKiAqIEEgYW5kIEIgaGF2ZSB0aGUgc2FtZSBlbnRyeS1wb2ludCBfYW5kXyBCIGlzIGdlbmVyYXRpbmcgdGhlIHR5cGluZ3MgZm9yIHRoYXQgZW50cnktcG9pbnRcbiAqICAgKGkuZS4gaGFzIGBwcm9jZXNzRHRzOiB0cnVlYCkuXG4gKiAqIEEncyBlbnRyeS1wb2ludCBkZXBlbmRzIG9uIEIncyBlbnRyeS1wb2ludCBfYW5kXyBCIGlzIGFsc28gZ2VuZXJhdGluZyB0eXBpbmdzLlxuICpcbiAqIE5PVEU6IElmIGEgdGFzayBpcyBub3QgZ2VuZXJhdGluZyB0eXBpbmdzLCB0aGVuIGl0IGNhbm5vdCBhZmZlY3QgYW55dGhpbmcgd2hpY2ggZGVwZW5kcyBvbiBpdHNcbiAqICAgICAgIGVudHJ5LXBvaW50LCByZWdhcmRsZXNzIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBUbyBwdXQgdGhpcyBhbm90aGVyIHdheSwgb25seSB0aGUgdGFza1xuICogICAgICAgd2hpY2ggcHJvZHVjZXMgdGhlIHR5cGluZ3MgZm9yIGEgZGVwZW5kZW5jeSBuZWVkcyB0byBoYXZlIGJlZW4gY29tcGxldGVkLlxuICpcbiAqIEFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB3ZSB0YWtlIGludG8gYWNjb3VudCB0aGUgZmFjdCB0aGF0IGB0YXNrc2AgYXJlIHNvcnRlZCBpbiBzdWNoIGFcbiAqIHdheSB0aGF0IGEgdGFzayBjYW4gb25seSBkZXBlbmQgb24gZWFybGllciB0YXNrcyAoaS5lLiBkZXBlbmRlbmNpZXMgYWx3YXlzIGNvbWUgYmVmb3JlXG4gKiBkZXBlbmRlbnRzIGluIHRoZSBsaXN0IG9mIHRhc2tzKS5cbiAqXG4gKiBAcGFyYW0gdGFza3MgQSAocGFydGlhbGx5IG9yZGVyZWQpIGxpc3Qgb2YgdGFza3MuXG4gKiBAcGFyYW0gZ3JhcGggVGhlIGRlcGVuZGVuY3kgZ3JhcGggYmV0d2VlbiBlbnRyeS1wb2ludHMuXG4gKiBAcmV0dXJuIEEgbWFwIGZyb20gZWFjaCB0YXNrIHRvIHRob3NlIHRhc2tzIGRpcmVjdGx5IGRlcGVuZGVudCB1cG9uIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVRhc2tEZXBlbmRlbmNpZXMoXG4gICAgdGFza3M6IFBhcnRpYWxseU9yZGVyZWRUYXNrcywgZ3JhcGg6IERlcEdyYXBoPEVudHJ5UG9pbnQ+KTogVGFza0RlcGVuZGVuY2llcyB7XG4gIGNvbnN0IGRlcGVuZGVuY2llcyA9IG5ldyBUYXNrRGVwZW5kZW5jaWVzKCk7XG4gIGNvbnN0IGNhbmRpZGF0ZURlcGVuZGVuY2llcyA9IG5ldyBNYXA8c3RyaW5nLCBUYXNrPigpO1xuXG4gIHRhc2tzLmZvckVhY2godGFzayA9PiB7XG4gICAgY29uc3QgZW50cnlQb2ludFBhdGggPSB0YXNrLmVudHJ5UG9pbnQucGF0aDtcblxuICAgIC8vIEZpbmQgdGhlIGVhcmxpZXIgdGFza3MgKGBjYW5kaWRhdGVEZXBlbmRlbmNpZXNgKSB0aGF0IHRoaXMgdGFzayBkZXBlbmRzIHVwb24uXG4gICAgY29uc3QgZGVwcyA9IGdyYXBoLmRlcGVuZGVuY2llc09mKGVudHJ5UG9pbnRQYXRoKTtcbiAgICBjb25zdCB0YXNrRGVwZW5kZW5jaWVzID0gZGVwcy5maWx0ZXIoZGVwID0+IGNhbmRpZGF0ZURlcGVuZGVuY2llcy5oYXMoZGVwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZGVwID0+IGNhbmRpZGF0ZURlcGVuZGVuY2llcy5nZXQoZGVwKSEpO1xuXG4gICAgLy8gSWYgdGhpcyB0YXNrIGhhcyBkZXBlbmRlbmNpZXMsIGFkZCBpdCB0byB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZXBlbmRlbnRzIG1hcHMuXG4gICAgaWYgKHRhc2tEZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5IG9mIHRhc2tEZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgY29uc3QgdGFza0RlcGVuZGVudHMgPSBnZXREZXBlbmRlbnRzU2V0KGRlcGVuZGVuY2llcywgZGVwZW5kZW5jeSk7XG4gICAgICAgIHRhc2tEZXBlbmRlbnRzLmFkZCh0YXNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGFzay5wcm9jZXNzRHRzKSB7XG4gICAgICAvLyBTQU5JVFkgQ0hFQ0s6XG4gICAgICAvLyBUaGVyZSBzaG91bGQgb25seSBiZSBvbmUgdGFzayBwZXIgZW50cnktcG9pbnQgdGhhdCBnZW5lcmF0ZXMgdHlwaW5ncyAoYW5kIHRodXMgY2FuIGJlIGFcbiAgICAgIC8vIGRlcGVuZGVuY3kgb2Ygb3RoZXIgdGFza3MpLCBzbyB0aGUgZm9sbG93aW5nIHNob3VsZCB0aGVvcmV0aWNhbGx5IG5ldmVyIGhhcHBlbiwgYnV0IGNoZWNrXG4gICAgICAvLyBqdXN0IGluIGNhc2UuXG4gICAgICBpZiAoY2FuZGlkYXRlRGVwZW5kZW5jaWVzLmhhcyhlbnRyeVBvaW50UGF0aCkpIHtcbiAgICAgICAgY29uc3Qgb3RoZXJUYXNrID0gY2FuZGlkYXRlRGVwZW5kZW5jaWVzLmdldChlbnRyeVBvaW50UGF0aCkhO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnSW52YXJpYW50IHZpb2xhdGVkOiBNdWx0aXBsZSB0YXNrcyBhcmUgYXNzaWduZWQgZ2VuZXJhdGluZyB0eXBpbmdzIGZvciAnICtcbiAgICAgICAgICAgIGAnJHtlbnRyeVBvaW50UGF0aH0nOlxcbiAgLSAke3N0cmluZ2lmeVRhc2sob3RoZXJUYXNrKX1cXG4gIC0gJHtzdHJpbmdpZnlUYXNrKHRhc2spfWApO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyB0YXNrIGNhbiBwb3RlbnRpYWxseSBiZSBhIGRlcGVuZGVuY3kgKGkuZS4gaXQgZ2VuZXJhdGVzIHR5cGluZ3MpLCBzbyBhZGQgaXQgdG8gdGhlXG4gICAgICAvLyBsaXN0IG9mIGNhbmRpZGF0ZSBkZXBlbmRlbmNpZXMgZm9yIHN1YnNlcXVlbnQgdGFza3MuXG4gICAgICBjYW5kaWRhdGVEZXBlbmRlbmNpZXMuc2V0KGVudHJ5UG9pbnRQYXRoLCB0YXNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyB0YXNrIGlzIG5vdCBnZW5lcmF0aW5nIHR5cGluZ3Mgc28gd2UgbmVlZCB0byBhZGQgaXQgdG8gdGhlIGRlcGVuZGVudHMgb2YgdGhlIHRhc2sgdGhhdFxuICAgICAgLy8gZG9lcyBnZW5lcmF0ZSB0eXBpbmdzLCBpZiB0aGF0IGV4aXN0c1xuICAgICAgaWYgKGNhbmRpZGF0ZURlcGVuZGVuY2llcy5oYXMoZW50cnlQb2ludFBhdGgpKSB7XG4gICAgICAgIGNvbnN0IHR5cGluZ3NUYXNrID0gY2FuZGlkYXRlRGVwZW5kZW5jaWVzLmdldChlbnRyeVBvaW50UGF0aCkhO1xuICAgICAgICBjb25zdCB0eXBpbmdzVGFza0RlcGVuZGVudHMgPSBnZXREZXBlbmRlbnRzU2V0KGRlcGVuZGVuY2llcywgdHlwaW5nc1Rhc2spO1xuICAgICAgICB0eXBpbmdzVGFza0RlcGVuZGVudHMuYWRkKHRhc2spO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRlcGVuZGVuY2llcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlcGVuZGVudHNTZXQobWFwOiBUYXNrRGVwZW5kZW5jaWVzLCB0YXNrOiBUYXNrKTogU2V0PFRhc2s+IHtcbiAgaWYgKCFtYXAuaGFzKHRhc2spKSB7XG4gICAgbWFwLnNldCh0YXNrLCBuZXcgU2V0KCkpO1xuICB9XG4gIHJldHVybiBtYXAuZ2V0KHRhc2spITtcbn1cblxuLyoqXG4gKiBJbnZlcnQgdGhlIGdpdmVuIG1hcHBpbmcgb2YgVGFzayBkZXBlbmRlbmNpZXMuXG4gKlxuICogQHBhcmFtIGRlcGVuZGVuY2llcyBUaGUgbWFwcGluZyBvZiB0YXNrcyB0byB0aGUgdGFza3MgdGhhdCBkZXBlbmQgdXBvbiB0aGVtLlxuICogQHJldHVybnMgQSBtYXBwaW5nIG9mIHRhc2tzIHRvIHRoZSB0YXNrcyB0aGF0IHRoZXkgZGVwZW5kIHVwb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCbG9ja2VkVGFza3MoZGVwZW5kZW5jaWVzOiBUYXNrRGVwZW5kZW5jaWVzKTogTWFwPFRhc2ssIFNldDxUYXNrPj4ge1xuICBjb25zdCBibG9ja2VkVGFza3MgPSBuZXcgTWFwPFRhc2ssIFNldDxUYXNrPj4oKTtcbiAgZm9yIChjb25zdCBbZGVwZW5kZW5jeSwgZGVwZW5kZW50c10gb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgZm9yIChjb25zdCBkZXBlbmRlbnQgb2YgZGVwZW5kZW50cykge1xuICAgICAgY29uc3QgZGVwZW5kZW50U2V0ID0gZ2V0RGVwZW5kZW50c1NldChibG9ja2VkVGFza3MsIGRlcGVuZGVudCk7XG4gICAgICBkZXBlbmRlbnRTZXQuYWRkKGRlcGVuZGVuY3kpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYmxvY2tlZFRhc2tzO1xufVxuXG4vKipcbiAqIFNvcnQgYSBsaXN0IG9mIHRhc2tzIGJ5IHByaW9yaXR5LlxuICpcbiAqIFByaW9yaXR5IGlzIGRldGVybWluZWQgYnkgdGhlIG51bWJlciBvZiBvdGhlciB0YXNrcyB0aGF0IGEgdGFzayBpcyAodHJhbnNpdGl2ZWx5KSBibG9ja2luZzpcbiAqIFRoZSBtb3JlIHRhc2tzIGEgdGFzayBpcyBibG9ja2luZyB0aGUgaGlnaGVyIGl0cyBwcmlvcml0eSBpcywgYmVjYXVzZSBwcm9jZXNzaW5nIGl0IHdpbGxcbiAqIHBvdGVudGlhbGx5IHVuYmxvY2sgbW9yZSB0YXNrcy5cbiAqXG4gKiBUbyBrZWVwIHRoZSBiZWhhdmlvciBwcmVkaWN0YWJsZSwgaWYgdHdvIHRhc2tzIGJsb2NrIHRoZSBzYW1lIG51bWJlciBvZiBvdGhlciB0YXNrcywgdGhlaXJcbiAqIHJlbGF0aXZlIG9yZGVyIGluIHRoZSBvcmlnaW5hbCBgdGFza3NgIGxpc3RzIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAcGFyYW0gdGFza3MgQSAocGFydGlhbGx5IG9yZGVyZWQpIGxpc3Qgb2YgdGFza3MuXG4gKiBAcGFyYW0gZGVwZW5kZW5jaWVzIFRoZSBtYXBwaW5nIG9mIHRhc2tzIHRvIHRoZSB0YXNrcyB0aGF0IGRlcGVuZCB1cG9uIHRoZW0uXG4gKiBAcmV0dXJuIFRoZSBsaXN0IG9mIHRhc2tzIHNvcnRlZCBieSBwcmlvcml0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRUYXNrc0J5UHJpb3JpdHkoXG4gICAgdGFza3M6IFBhcnRpYWxseU9yZGVyZWRUYXNrcywgZGVwZW5kZW5jaWVzOiBUYXNrRGVwZW5kZW5jaWVzKTogUGFydGlhbGx5T3JkZXJlZFRhc2tzIHtcbiAgY29uc3QgcHJpb3JpdHlQZXJUYXNrID0gbmV3IE1hcDxUYXNrLCBbbnVtYmVyLCBudW1iZXJdPigpO1xuICBjb25zdCBjb21wdXRlUHJpb3JpdHkgPSAodGFzazogVGFzaywgaWR4OiBudW1iZXIpOlxuICAgICAgW251bWJlciwgbnVtYmVyXSA9PiBbZGVwZW5kZW5jaWVzLmhhcyh0YXNrKSA/IGRlcGVuZGVuY2llcy5nZXQodGFzaykhLnNpemUgOiAwLCBpZHhdO1xuXG4gIHRhc2tzLmZvckVhY2goKHRhc2ssIGkpID0+IHByaW9yaXR5UGVyVGFzay5zZXQodGFzaywgY29tcHV0ZVByaW9yaXR5KHRhc2ssIGkpKSk7XG5cbiAgcmV0dXJuIHRhc2tzLnNsaWNlKCkuc29ydCgodGFzazEsIHRhc2syKSA9PiB7XG4gICAgY29uc3QgW3AxLCBpZHgxXSA9IHByaW9yaXR5UGVyVGFzay5nZXQodGFzazEpITtcbiAgICBjb25zdCBbcDIsIGlkeDJdID0gcHJpb3JpdHlQZXJUYXNrLmdldCh0YXNrMikhO1xuXG4gICAgcmV0dXJuIChwMiAtIHAxKSB8fCAoaWR4MSAtIGlkeDIpO1xuICB9KTtcbn1cbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvZXhlY3V0aW9uL3Rhc2tzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7SUFTQSwwRUFBbUY7SUFFbkYsK0NBQStDO0lBQ3hDLElBQU0sYUFBYSxHQUFHLFVBQUMsSUFBVTtRQUNwQyxPQUFBLGtCQUFnQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksMEJBQXFCLElBQUksQ0FBQyxjQUFjLE9BQUk7YUFDaEYsaUJBQWUsbUJBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQUcsQ0FBQTtJQURoRCxDQUNnRCxDQUFDO0lBRnhDLFFBQUEsYUFBYSxpQkFFMkI7SUFFckQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JHO0lBQ0gsU0FBZ0IsdUJBQXVCLENBQ25DLEtBQTRCLEVBQUUsS0FBMkI7UUFDM0QsSUFBTSxZQUFZLEdBQUcsSUFBSSxzQkFBZ0IsRUFBRSxDQUFDO1FBQzVDLElBQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7UUFFdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7O1lBQ2hCLElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBRTVDLGdGQUFnRjtZQUNoRixJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xELElBQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBOUIsQ0FBOEIsQ0FBQztpQkFDN0MsR0FBRyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxFQUEv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LElBQU0sZUFBZSxHQUFHLFVBQUMsSUFBVSxFQUFFLEdBQVcsSUFDeEIsT0FBQSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQWhFLENBQWdFLENBQUM7UUFFekYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFDLElBQUksRUFBRSxDQUFDLElBQUssT0FBQSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQW5ELENBQW1ELENBQUMsQ0FBQztRQUVoRixPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBQyxLQUFLLEVBQUUsS0FBSztZQUMvQixJQUFBLEtBQUEsZUFBYSxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxJQUFBLEVBQXZDLEVBQUUsUUFBQSxFQUFFLElBQUksUUFBK0IsQ0FBQztZQUN6QyxJQUFBLEtBQUEsZUFBYSxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxJQUFBLEVBQXZDLEVBQUUsUUFBQSxFQUFFLElBQUksUUFBK0IsQ0FBQztZQUUvQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQWRELGtEQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0RlcEdyYXBofSBmcm9tICdkZXBlbmRlbmN5LWdyYXBoJztcbmltcG9ydCB7RW50cnlQb2ludH0gZnJvbSAnLi4vLi4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuaW1wb3J0IHtEdHNQcm9jZXNzaW5nLCBQYXJ0aWFsbHlPcmRlcmVkVGFza3MsIFRhc2ssIFRhc2tEZXBlbmRlbmNpZXN9IGZyb20gJy4vYXBpJztcblxuLyoqIFN0cmluZ2lmeSBhIHRhc2sgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gKi9cbmV4cG9ydCBjb25zdCBzdHJpbmdpZnlUYXNrID0gKHRhc2s6IFRhc2spOiBzdHJpbmcgPT5cbiAgICBge2VudHJ5UG9pbnQ6ICR7dGFzay5lbnRyeVBvaW50Lm5hbWV9LCBmb3JtYXRQcm9wZXJ0eTogJHt0YXNrLmZvcm1hdFByb3BlcnR5fSwgYCArXG4gICAgYHByb2Nlc3NEdHM6ICR7RHRzUHJvY2Vzc2luZ1t0YXNrLnByb2Nlc3NEdHNdfX1gO1xuXG4vKipcbiAqIENvbXB1dGUgYSBtYXBwaW5nIG9mIHRhc2tzIHRvIHRoZSB0YXNrcyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gdGhlbSAoaWYgYW55KS5cbiAqXG4gKiBUYXNrIEEgY2FuIGRlcGVuZCB1cG9uIHRhc2sgQiwgaWYgZWl0aGVyOlxuICpcbiAqICogQSBhbmQgQiBoYXZlIHRoZSBzYW1lIGVudHJ5LXBvaW50IF9hbmRfIEIgaXMgZ2VuZXJhdGluZyB0aGUgdHlwaW5ncyBmb3IgdGhhdCBlbnRyeS1wb2ludFxuICogICAoaS5lLiBoYXMgYHByb2Nlc3NEdHM6IHRydWVgKS5cbiAqICogQSdzIGVudHJ5LXBvaW50IGRlcGVuZHMgb24gQidzIGVudHJ5LXBvaW50IF9hbmRfIEIgaXMgYWxzbyBnZW5lcmF0aW5nIHR5cGluZ3MuXG4gKlxuICogTk9URTogSWYgYSB0YXNrIGlzIG5vdCBnZW5lcmF0aW5nIHR5cGluZ3MsIHRoZW4gaXQgY2Fubm90IGFmZmVjdCBhbnl0aGluZyB3aGljaCBkZXBlbmRzIG9uIGl0c1xuICogICAgICAgZW50cnktcG9pbnQsIHJlZ2FyZGxlc3Mgb2YgdGhlIGRlcGVuZGVuY3kgZ3JhcGguIFRvIHB1dCB0aGlzIGFub3RoZXIgd2F5LCBvbmx5IHRoZSB0YXNrXG4gKiAgICAgICB3aGljaCBwcm9kdWNlcyB0aGUgdHlwaW5ncyBmb3IgYSBkZXBlbmRlbmN5IG5lZWRzIHRvIGhhdmUgYmVlbiBjb21wbGV0ZWQuXG4gKlxuICogQXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHdlIHRha2UgaW50byBhY2NvdW50IHRoZSBmYWN0IHRoYXQgYHRhc2tzYCBhcmUgc29ydGVkIGluIHN1Y2ggYVxuICogd2F5IHRoYXQgYSB0YXNrIGNhbiBvbmx5IGRlcGVuZCBvbiBlYXJsaWVyIHRhc2tzIChpLmUuIGRlcGVuZGVuY2llcyBhbHdheXMgY29tZSBiZWZvcmVcbiAqIGRlcGVuZGVudHMgaW4gdGhlIGxpc3Qgb2YgdGFza3MpLlxuICpcbiAqIEBwYXJhbSB0YXNrcyBBIChwYXJ0aWFsbHkgb3JkZXJlZCkgbGlzdCBvZiB0YXNrcy5cbiAqIEBwYXJhbSBncmFwaCBUaGUgZGVwZW5kZW5jeSBncmFwaCBiZXR3ZWVuIGVudHJ5LXBvaW50cy5cbiAqIEByZXR1cm4gQSBtYXAgZnJvbSBlYWNoIHRhc2sgdG8gdGhvc2UgdGFza3MgZGlyZWN0bHkgZGVwZW5kZW50IHVwb24gaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlVGFza0RlcGVuZGVuY2llcyhcbiAgICB0YXNrczogUGFydGlhbGx5T3JkZXJlZFRhc2tzLCBncmFwaDogRGVwR3JhcGg8RW50cnlQb2ludD4pOiBUYXNrRGVwZW5kZW5jaWVzIHtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gbmV3IFRhc2tEZXBlbmRlbmNpZXMoKTtcbiAgY29uc3QgY2FuZGlkYXRlRGVwZW5kZW5jaWVzID0gbmV3IE1hcDxzdHJpbmcsIFRhc2s+KCk7XG5cbiAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICBjb25zdCBlbnRyeVBvaW50UGF0aCA9IHRhc2suZW50cnlQb2ludC5wYXRoO1xuXG4gICAgLy8gRmluZCB0aGUgZWFybGllciB0YXNrcyAoYGNhbmRpZGF0ZURlcGVuZGVuY2llc2ApIHRoYXQgdGhpcyB0YXNrIGRlcGVuZHMgdXBvbi5cbiAgICBjb25zdCBkZXBzID0gZ3JhcGguZGVwZW5kZW5jaWVzT2YoZW50cnlQb2ludFBhdGgpO1xuICAgIGNvbnN0IHRhc2tEZXBlbmRlbmNpZXMgPSBkZXBzLmZpbHRlcihkZXAgPT4gY2FuZGlkYXRlRGVwZW5kZW5jaWVzLmhhcyhkZXApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChkZXAgPT4gY2FuZGlkYXRlRGVwZW5kZW5jaWVzLmdldChkZXApISk7XG5cbiAgICAvLyBJZiB0aGlzIHRhc2sgaGFzIGRlcGVuZGVuY2llcywgYWRkIGl0IHRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlcGVuZGVudHMgbWFwcy5cbiAgICBpZiAodGFza0RlcGVuZGVuY2llcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgdGFza0RlcGVuZGVuY2llcykge1xuICAgICAgICBjb25zdCB0YXNrRGVwZW5kZW50cyA9IGdldERlcGVuZGVudHNTZXQoZGVwZW5kZW5jaWVzLCBkZXBlbmRlbmN5KTtcbiAgICAgICAgdGFza0RlcGVuZGVudHMuYWRkKHRhc2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0YXNrLnByb2Nlc3NEdHMgIT09IER0c1Byb2Nlc3NpbmcuTm8pIHtcbiAgICAgIC8vIFNBTklUWSBDSEVDSzpcbiAgICAgIC8vIFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSB0YXNrIHBlciBlbnRyeS1wb2ludCB0aGF0IGdlbmVyYXRlcyB0eXBpbmdzIChhbmQgdGh1cyBjYW4gYmUgYVxuICAgICAgLy8gZGVwZW5kZW5jeSBvZiBvdGhlciB0YXNrcyksIHNvIHRoZSBmb2xsb3dpbmcgc2hvdWxkIHRoZW9yZXRpY2FsbHkgbmV2ZXIgaGFwcGVuLCBidXQgY2hlY2tcbiAgICAgIC8vIGp1c3QgaW4gY2FzZS5cbiAgICAgIGlmIChjYW5kaWRhdGVEZXBlbmRlbmNpZXMuaGFzKGVudHJ5UG9pbnRQYXRoKSkge1xuICAgICAgICBjb25zdCBvdGhlclRhc2sgPSBjYW5kaWRhdGVEZXBlbmRlbmNpZXMuZ2V0KGVudHJ5UG9pbnRQYXRoKSE7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdJbnZhcmlhbnQgdmlvbGF0ZWQ6IE11bHRpcGxlIHRhc2tzIGFyZSBhc3NpZ25lZCBnZW5lcmF0aW5nIHR5cGluZ3MgZm9yICcgK1xuICAgICAgICAgICAgYCcke2VudHJ5UG9pbnRQYXRofSc6XFxuICAtICR7c3RyaW5naWZ5VGFzayhvdGhlclRhc2spfVxcbiAgLSAke3N0cmluZ2lmeVRhc2sodGFzayl9YCk7XG4gICAgICB9XG4gICAgICAvLyBUaGlzIHRhc2sgY2FuIHBvdGVudGlhbGx5IGJlIGEgZGVwZW5kZW5jeSAoaS5lLiBpdCBnZW5lcmF0ZXMgdHlwaW5ncyksIHNvIGFkZCBpdCB0byB0aGVcbiAgICAgIC8vIGxpc3Qgb2YgY2FuZGlkYXRlIGRlcGVuZGVuY2llcyBmb3Igc3Vic2VxdWVudCB0YXNrcy5cbiAgICAgIGNhbmRpZGF0ZURlcGVuZGVuY2llcy5zZXQoZW50cnlQb2ludFBhdGgsIHRhc2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHRhc2sgaXMgbm90IGdlbmVyYXRpbmcgdHlwaW5ncyBzbyB3ZSBuZWVkIHRvIGFkZCBpdCB0byB0aGUgZGVwZW5kZW50cyBvZiB0aGUgdGFzayB0aGF0XG4gICAgICAvLyBkb2VzIGdlbmVyYXRlIHR5cGluZ3MsIGlmIHRoYXQgZXhpc3RzXG4gICAgICBpZiAoY2FuZGlkYXRlRGVwZW5kZW5jaWVzLmhhcyhlbnRyeVBvaW50UGF0aCkpIHtcbiAgICAgICAgY29uc3QgdHlwaW5nc1Rhc2sgPSBjYW5kaWRhdGVEZXBlbmRlbmNpZXMuZ2V0KGVudHJ5UG9pbnRQYXRoKSE7XG4gICAgICAgIGNvbnN0IHR5cGluZ3NUYXNrRGVwZW5kZW50cyA9IGdldERlcGVuZGVudHNTZXQoZGVwZW5kZW5jaWVzLCB0eXBpbmdzVGFzayk7XG4gICAgICAgIHR5cGluZ3NUYXNrRGVwZW5kZW50cy5hZGQodGFzayk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVwZW5kZW50c1NldChtYXA6IFRhc2tEZXBlbmRlbmNpZXMsIHRhc2s6IFRhc2spOiBTZXQ8VGFzaz4ge1xuICBpZiAoIW1hcC5oYXModGFzaykpIHtcbiAgICBtYXAuc2V0KHRhc2ssIG5ldyBTZXQoKSk7XG4gIH1cbiAgcmV0dXJuIG1hcC5nZXQodGFzaykhO1xufVxuXG4vKipcbiAqIEludmVydCB0aGUgZ2l2ZW4gbWFwcGluZyBvZiBUYXNrIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBAcGFyYW0gZGVwZW5kZW5jaWVzIFRoZSBtYXBwaW5nIG9mIHRhc2tzIHRvIHRoZSB0YXNrcyB0aGF0IGRlcGVuZCB1cG9uIHRoZW0uXG4gKiBAcmV0dXJucyBBIG1hcHBpbmcgb2YgdGFza3MgdG8gdGhlIHRhc2tzIHRoYXQgdGhleSBkZXBlbmQgdXBvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJsb2NrZWRUYXNrcyhkZXBlbmRlbmNpZXM6IFRhc2tEZXBlbmRlbmNpZXMpOiBNYXA8VGFzaywgU2V0PFRhc2s+PiB7XG4gIGNvbnN0IGJsb2NrZWRUYXNrcyA9IG5ldyBNYXA8VGFzaywgU2V0PFRhc2s+PigpO1xuICBmb3IgKGNvbnN0IFtkZXBlbmRlbmN5LCBkZXBlbmRlbnRzXSBvZiBkZXBlbmRlbmNpZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVudCBvZiBkZXBlbmRlbnRzKSB7XG4gICAgICBjb25zdCBkZXBlbmRlbnRTZXQgPSBnZXREZXBlbmRlbnRzU2V0KGJsb2NrZWRUYXNrcywgZGVwZW5kZW50KTtcbiAgICAgIGRlcGVuZGVudFNldC5hZGQoZGVwZW5kZW5jeSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBibG9ja2VkVGFza3M7XG59XG5cbi8qKlxuICogU29ydCBhIGxpc3Qgb2YgdGFza3MgYnkgcHJpb3JpdHkuXG4gKlxuICogUHJpb3JpdHkgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbnVtYmVyIG9mIG90aGVyIHRhc2tzIHRoYXQgYSB0YXNrIGlzICh0cmFuc2l0aXZlbHkpIGJsb2NraW5nOlxuICogVGhlIG1vcmUgdGFza3MgYSB0YXNrIGlzIGJsb2NraW5nIHRoZSBoaWdoZXIgaXRzIHByaW9yaXR5IGlzLCBiZWNhdXNlIHByb2Nlc3NpbmcgaXQgd2lsbFxuICogcG90ZW50aWFsbHkgdW5ibG9jayBtb3JlIHRhc2tzLlxuICpcbiAqIFRvIGtlZXAgdGhlIGJlaGF2aW9yIHByZWRpY3RhYmxlLCBpZiB0d28gdGFza3MgYmxvY2sgdGhlIHNhbWUgbnVtYmVyIG9mIG90aGVyIHRhc2tzLCB0aGVpclxuICogcmVsYXRpdmUgb3JkZXIgaW4gdGhlIG9yaWdpbmFsIGB0YXNrc2AgbGlzdHMgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBwYXJhbSB0YXNrcyBBIChwYXJ0aWFsbHkgb3JkZXJlZCkgbGlzdCBvZiB0YXNrcy5cbiAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgVGhlIG1hcHBpbmcgb2YgdGFza3MgdG8gdGhlIHRhc2tzIHRoYXQgZGVwZW5kIHVwb24gdGhlbS5cbiAqIEByZXR1cm4gVGhlIGxpc3Qgb2YgdGFza3Mgc29ydGVkIGJ5IHByaW9yaXR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFRhc2tzQnlQcmlvcml0eShcbiAgICB0YXNrczogUGFydGlhbGx5T3JkZXJlZFRhc2tzLCBkZXBlbmRlbmNpZXM6IFRhc2tEZXBlbmRlbmNpZXMpOiBQYXJ0aWFsbHlPcmRlcmVkVGFza3Mge1xuICBjb25zdCBwcmlvcml0eVBlclRhc2sgPSBuZXcgTWFwPFRhc2ssIFtudW1iZXIsIG51bWJlcl0+KCk7XG4gIGNvbnN0IGNvbXB1dGVQcmlvcml0eSA9ICh0YXNrOiBUYXNrLCBpZHg6IG51bWJlcik6XG4gICAgICBbbnVtYmVyLCBudW1iZXJdID0+IFtkZXBlbmRlbmNpZXMuaGFzKHRhc2spID8gZGVwZW5kZW5jaWVzLmdldCh0YXNrKSEuc2l6ZSA6IDAsIGlkeF07XG5cbiAgdGFza3MuZm9yRWFjaCgodGFzaywgaSkgPT4gcHJpb3JpdHlQZXJUYXNrLnNldCh0YXNrLCBjb21wdXRlUHJpb3JpdHkodGFzaywgaSkpKTtcblxuICByZXR1cm4gdGFza3Muc2xpY2UoKS5zb3J0KCh0YXNrMSwgdGFzazIpID0+IHtcbiAgICBjb25zdCBbcDEsIGlkeDFdID0gcHJpb3JpdHlQZXJUYXNrLmdldCh0YXNrMSkhO1xuICAgIGNvbnN0IFtwMiwgaWR4Ml0gPSBwcmlvcml0eVBlclRhc2suZ2V0KHRhc2syKSE7XG5cbiAgICByZXR1cm4gKHAyIC0gcDEpIHx8IChpZHgxIC0gaWR4Mik7XG4gIH0pO1xufVxuIl19
package/ngcc/src/main.js CHANGED
@@ -42,7 +42,7 @@
42
42
  var entry_point_manifest_1 = require("@angular/compiler-cli/ngcc/src/packages/entry_point_manifest");
43
43
  var package_json_updater_1 = require("@angular/compiler-cli/ngcc/src/writing/package_json_updater");
44
44
  function mainNgcc(options) {
45
- var _a = ngcc_options_1.getSharedSetup(options), basePath = _a.basePath, targetEntryPointPath = _a.targetEntryPointPath, propertiesToConsider = _a.propertiesToConsider, compileAllFormats = _a.compileAllFormats, logger = _a.logger, pathMappings = _a.pathMappings, async = _a.async, errorOnFailedEntryPoint = _a.errorOnFailedEntryPoint, enableI18nLegacyMessageIdFormat = _a.enableI18nLegacyMessageIdFormat, invalidateEntryPointManifest = _a.invalidateEntryPointManifest, fileSystem = _a.fileSystem, absBasePath = _a.absBasePath, projectPath = _a.projectPath, tsConfig = _a.tsConfig, getFileWriter = _a.getFileWriter;
45
+ var _a = ngcc_options_1.getSharedSetup(options), basePath = _a.basePath, targetEntryPointPath = _a.targetEntryPointPath, propertiesToConsider = _a.propertiesToConsider, typingsOnly = _a.typingsOnly, compileAllFormats = _a.compileAllFormats, logger = _a.logger, pathMappings = _a.pathMappings, async = _a.async, errorOnFailedEntryPoint = _a.errorOnFailedEntryPoint, enableI18nLegacyMessageIdFormat = _a.enableI18nLegacyMessageIdFormat, invalidateEntryPointManifest = _a.invalidateEntryPointManifest, fileSystem = _a.fileSystem, absBasePath = _a.absBasePath, projectPath = _a.projectPath, tsConfig = _a.tsConfig, getFileWriter = _a.getFileWriter;
46
46
  var config = new configuration_1.NgccConfiguration(fileSystem, projectPath);
47
47
  var dependencyResolver = getDependencyResolver(fileSystem, logger, config, pathMappings);
48
48
  var entryPointManifest = invalidateEntryPointManifest ?
@@ -62,7 +62,7 @@
62
62
  // Determine the number of workers to use and whether ngcc should run in parallel.
63
63
  var workerCount = async ? ngcc_options_1.getMaxNumberOfWorkers() : 1;
64
64
  var inParallel = workerCount > 1;
65
- var analyzeEntryPoints = analyze_entry_points_1.getAnalyzeEntryPointsFn(logger, finder, fileSystem, supportedPropertiesToConsider, compileAllFormats, propertiesToConsider, inParallel);
65
+ var analyzeEntryPoints = analyze_entry_points_1.getAnalyzeEntryPointsFn(logger, finder, fileSystem, supportedPropertiesToConsider, typingsOnly, compileAllFormats, propertiesToConsider, inParallel);
66
66
  // Create an updater that will actually write to disk.
67
67
  var pkgJsonUpdater = new package_json_updater_1.DirectPackageJsonUpdater(fileSystem);
68
68
  var fileWriter = getFileWriter(pkgJsonUpdater);
@@ -160,4 +160,4 @@
160
160
  }
161
161
  }
162
162
  });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7SUFRSCxpSEFBK0U7SUFDL0UsdUdBQXNFO0lBQ3RFLHVHQUFxRTtJQUNyRSx1R0FBcUU7SUFDckUsK0ZBQThEO0lBQzlELHVHQUFxRTtJQUNyRSw2SUFBeUc7SUFDekcsaUhBQStFO0lBRS9FLHVJQUFtRztJQUNuRyw2SEFBMEY7SUFDMUYsc0dBQXlFO0lBRXpFLHNGQUE2RDtJQUM3RCw0R0FBdUU7SUFDdkUsNEdBQTBHO0lBRTFHLHdGQUF5SjtJQUN6SixvRkFBbUQ7SUFDbkQsMEhBQWdGO0lBQ2hGLGtGQUFpRDtJQUNqRCw0RUFBd0c7SUFDeEcsdUZBQTJEO0lBQzNELG1GQUEyRjtJQUMzRixxR0FBbUc7SUFHbkcsb0dBQTRGO0lBWTVGLFNBQWdCLFFBQVEsQ0FBQyxPQUF5QztRQUMxRCxJQUFBLEtBZ0JGLDZCQUFjLENBQUMsT0FBTyxDQUFDLEVBZnpCLFFBQVEsY0FBQSxFQUNSLG9CQUFvQiwwQkFBQSxFQUNwQixvQkFBb0IsMEJBQUEsRUFDcEIsaUJBQWlCLHVCQUFBLEVBQ2pCLE1BQU0sWUFBQSxFQUNOLFlBQVksa0JBQUEsRUFDWixLQUFLLFdBQUEsRUFDTCx1QkFBdUIsNkJBQUEsRUFDdkIsK0JBQStCLHFDQUFBLEVBQy9CLDRCQUE0QixrQ0FBQSxFQUM1QixVQUFVLGdCQUFBLEVBQ1YsV0FBVyxpQkFBQSxFQUNYLFdBQVcsaUJBQUEsRUFDWCxRQUFRLGNBQUEsRUFDUixhQUFhLG1CQUNZLENBQUM7UUFFNUIsSUFBTSxNQUFNLEdBQUcsSUFBSSxpQ0FBaUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDOUQsSUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLEVB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WUFDdEIsUUFBUSxFQUFFLHNCQUFzQjtTQUNqQyxFQUNELGlCQUFpQixDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFNBQVMsbUJBQW1CLENBQ3hCLEVBQXNCLEVBQUUsTUFBYyxFQUFFLFFBQTRCLEVBQUUsTUFBeUIsRUFDL0Ysa0JBQXNDLEVBQUUsUUFBd0IsRUFDaEUsNEJBQWlELEVBQUUsWUFBb0MsRUFDdkYsUUFBa0MsRUFBRSxXQUEyQjtRQUNqRSxJQUFJLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUN6QyxPQUFPLElBQUksc0RBQXdCLENBQy9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLDRCQUE0QixDQUFDLENBQUM7U0FDekY7YUFBTTtZQUNMLElBQU0sbUJBQW1CLEdBQUcsSUFBSSwyQ0FBbUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRixJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3JCLE9BQU8sSUFBSSwrREFBNEIsQ0FDbkMsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQ3pGLFdBQVcsQ0FBQyxDQUFDO2FBQ2xCO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxxRUFBK0IsQ0FDdEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDeEY7U0FDRjtJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJub2RlXCIgLz5cblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgRmlsZVN5c3RlbSwgUmVhZG9ubHlGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7UGFyc2VkQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vLi4vc3JjL3BlcmZvcm1fY29tcGlsZSc7XG5cbmltcG9ydCB7Q29tbW9uSnNEZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvY29tbW9uanNfZGVwZW5kZW5jeV9ob3N0JztcbmltcG9ydCB7RGVwZW5kZW5jeVJlc29sdmVyfSBmcm9tICcuL2RlcGVuZGVuY2llcy9kZXBlbmRlbmN5X3Jlc29sdmVyJztcbmltcG9ydCB7RHRzRGVwZW5kZW5jeUhvc3R9IGZyb20gJy4vZGVwZW5kZW5jaWVzL2R0c19kZXBlbmRlbmN5X2hvc3QnO1xuaW1wb3J0IHtFc21EZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvZXNtX2RlcGVuZGVuY3lfaG9zdCc7XG5pbXBvcnQge01vZHVsZVJlc29sdmVyfSBmcm9tICcuL2RlcGVuZGVuY2llcy9tb2R1bGVfcmVzb2x2ZXInO1xuaW1wb3J0IHtVbWREZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvdW1kX2RlcGVuZGVuY3lfaG9zdCc7XG5pbXBvcnQge0RpcmVjdG9yeVdhbGtlckVudHJ5UG9pbnRGaW5kZXJ9IGZyb20gJy4vZW50cnlfcG9pbnRfZmluZGVyL2RpcmVjdG9yeV93YWxrZXJfZW50cnlfcG9pbnRfZmluZGVyJztcbmltcG9ydCB7RW50cnlQb2ludENvbGxlY3Rvcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvZW50cnlfcG9pbnRfY29sbGVjdG9yJztcbmltcG9ydCB7RW50cnlQb2ludEZpbmRlcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvaW50ZXJmYWNlJztcbmltcG9ydCB7UHJvZ3JhbUJhc2VkRW50cnlQb2ludEZpbmRlcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvcHJvZ3JhbV9iYXNlZF9lbnRyeV9wb2ludF9maW5kZXInO1xuaW1wb3J0IHtUYXJnZXRlZEVudHJ5UG9pbnRGaW5kZXJ9IGZyb20gJy4vZW50cnlfcG9pbnRfZmluZGVyL3RhcmdldGVkX2VudHJ5X3BvaW50X2ZpbmRlcic7XG5pbXBvcnQge2dldEFuYWx5emVFbnRyeVBvaW50c0ZufSBmcm9tICcuL2V4ZWN1dGlvbi9hbmFseXplX2VudHJ5X3BvaW50cyc7XG5pbXBvcnQge0V4ZWN1dG9yfSBmcm9tICcuL2V4ZWN1dGlvbi9hcGknO1xuaW1wb3J0IHtDbHVzdGVyRXhlY3V0b3J9IGZyb20gJy4vZXhlY3V0aW9uL2NsdXN0ZXIvZXhlY3V0b3InO1xuaW1wb3J0IHtnZXRDcmVhdGVDb21waWxlRm59IGZyb20gJy4vZXhlY3V0aW9uL2NyZWF0ZV9jb21waWxlX2Z1bmN0aW9uJztcbmltcG9ydCB7U2luZ2xlUHJvY2Vzc0V4ZWN1dG9yQXN5bmMsIFNpbmdsZVByb2Nlc3NFeGVjdXRvclN5bmN9IGZyb20gJy4vZXhlY3V0aW9uL3NpbmdsZV9wcm9jZXNzX2V4ZWN1dG9yJztcbmltcG9ydCB7Q3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrLCBUYXNrUHJvY2Vzc2luZ091dGNvbWV9IGZyb20gJy4vZXhlY3V0aW9uL3Rhc2tzL2FwaSc7XG5pbXBvcnQge2NvbXBvc2VUYXNrQ29tcGxldGVkQ2FsbGJhY2tzLCBjcmVhdGVMb2dFcnJvckhhbmRsZXIsIGNyZWF0ZU1hcmtBc1Byb2Nlc3NlZEhhbmRsZXIsIGNyZWF0ZVRocm93RXJyb3JIYW5kbGVyfSBmcm9tICcuL2V4ZWN1dGlvbi90YXNrcy9jb21wbGV0aW9uJztcbmltcG9ydCB7QXN5bmNMb2NrZXJ9IGZyb20gJy4vbG9ja2luZy9hc3luY19sb2NrZXInO1xuaW1wb3J0IHtMb2NrRmlsZVdpdGhDaGlsZFByb2Nlc3N9IGZyb20gJy4vbG9ja2luZy9sb2NrX2ZpbGVfd2l0aF9jaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7U3luY0xvY2tlcn0gZnJvbSAnLi9sb2NraW5nL3N5bmNfbG9ja2VyJztcbmltcG9ydCB7QXN5bmNOZ2NjT3B0aW9ucywgZ2V0TWF4TnVtYmVyT2ZXb3JrZXJzLCBnZXRTaGFyZWRTZXR1cCwgU3luY05nY2NPcHRpb25zfSBmcm9tICcuL25nY2Nfb3B0aW9ucyc7XG5pbXBvcnQge05nY2NDb25maWd1cmF0aW9ufSBmcm9tICcuL3BhY2thZ2VzL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtFbnRyeVBvaW50SnNvblByb3BlcnR5LCBTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVN9IGZyb20gJy4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuaW1wb3J0IHtFbnRyeVBvaW50TWFuaWZlc3QsIEludmFsaWRhdGluZ0VudHJ5UG9pbnRNYW5pZmVzdH0gZnJvbSAnLi9wYWNrYWdlcy9lbnRyeV9wb2ludF9tYW5pZmVzdCc7XG5pbXBvcnQge1BhdGhNYXBwaW5nc30gZnJvbSAnLi9wYXRoX21hcHBpbmdzJztcbmltcG9ydCB7RmlsZVdyaXRlcn0gZnJvbSAnLi93cml0aW5nL2ZpbGVfd3JpdGVyJztcbmltcG9ydCB7RGlyZWN0UGFja2FnZUpzb25VcGRhdGVyLCBQYWNrYWdlSnNvblVwZGF0ZXJ9IGZyb20gJy4vd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlcic7XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeS1wb2ludCBpbnRvIG5nY2MgKGFOR3VsYXIgQ29tcGF0aWJpbGl0eSBDb21waWxlcikuXG4gKlxuICogWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gcHJvY2VzcyBvbmUgb3IgbW9yZSBucG0gcGFja2FnZXMsIHRvIGVuc3VyZVxuICogdGhhdCB0aGV5IGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIGl2eSBjb21waWxlciAobmd0c2MpLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRlbGxpbmcgbmdjYyB3aGF0IHRvIGNvbXBpbGUgYW5kIGhvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haW5OZ2NjPFQgZXh0ZW5kcyBBc3luY05nY2NPcHRpb25zfFN5bmNOZ2NjT3B0aW9ucz4ob3B0aW9uczogVCk6XG4gICAgVCBleHRlbmRzIEFzeW5jTmdjY09wdGlvbnMgPyBQcm9taXNlPHZvaWQ+OiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIG1haW5OZ2NjKG9wdGlvbnM6IEFzeW5jTmdjY09wdGlvbnN8U3luY05nY2NPcHRpb25zKTogdm9pZHxQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGJhc2VQYXRoLFxuICAgIHRhcmdldEVudHJ5UG9pbnRQYXRoLFxuICAgIHByb3BlcnRpZXNUb0NvbnNpZGVyLFxuICAgIGNvbXBpbGVBbGxGb3JtYXRzLFxuICAgIGxvZ2dlcixcbiAgICBwYXRoTWFwcGluZ3MsXG4gICAgYXN5bmMsXG4gICAgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQsXG4gICAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdCxcbiAgICBpbnZhbGlkYXRlRW50cnlQb2ludE1hbmlmZXN0LFxuICAgIGZpbGVTeXN0ZW0sXG4gICAgYWJzQmFzZVBhdGgsXG4gICAgcHJvamVjdFBhdGgsXG4gICAgdHNDb25maWcsXG4gICAgZ2V0RmlsZVdyaXRlcixcbiAgfSA9IGdldFNoYXJlZFNldHVwKG9wdGlvbnMpO1xuXG4gIGNvbnN0IGNvbmZpZyA9IG5ldyBOZ2NjQ29uZmlndXJhdGlvbihmaWxlU3lzdGVtLCBwcm9qZWN0UGF0aCk7XG4gIGNvbnN0IGRlcGVuZGVuY3lSZXNvbHZlciA9IGdldERlcGVuZGVuY3lSZXNvbHZlcihmaWxlU3lzdGVtLCBsb2dnZXIsIGNvbmZpZywgcGF0aE1hcHBpbmdzKTtcbiAgY29uc3QgZW50cnlQb2ludE1hbmlmZXN0ID0gaW52YWxpZGF0ZUVudHJ5UG9pbnRNYW5pZmVzdCA/XG4gICAgICBuZXcgSW52YWxpZGF0aW5nRW50cnlQb2ludE1hbmlmZXN0KGZpbGVTeXN0ZW0sIGNvbmZpZywgbG9nZ2VyKSA6XG4gICAgICBuZXcgRW50cnlQb2ludE1hbmlmZXN0KGZpbGVTeXN0ZW0sIGNvbmZpZywgbG9nZ2VyKTtcblxuICAvLyBCYWlsIG91dCBlYXJseSBpZiB0aGUgd29yayBpcyBhbHJlYWR5IGRvbmUuXG4gIGNvbnN0IHN1cHBvcnRlZFByb3BlcnRpZXNUb0NvbnNpZGVyID0gZW5zdXJlU3VwcG9ydGVkUHJvcGVydGllcyhwcm9wZXJ0aWVzVG9Db25zaWRlcik7XG4gIGNvbnN0IGFic29sdXRlVGFyZ2V0RW50cnlQb2ludFBhdGggPSB0YXJnZXRFbnRyeVBvaW50UGF0aCAhPT0gdW5kZWZpbmVkID9cbiAgICAgIGZpbGVTeXN0ZW0ucmVzb2x2ZShiYXNlUGF0aCwgdGFyZ2V0RW50cnlQb2ludFBhdGgpIDpcbiAgICAgIG51bGw7XG4gIGNvbnN0IGZpbmRlciA9IGdldEVudHJ5UG9pbnRGaW5kZXIoXG4gICAgICBmaWxlU3lzdGVtLCBsb2dnZXIsIGRlcGVuZGVuY3lSZXNvbHZlciwgY29uZmlnLCBlbnRyeVBvaW50TWFuaWZlc3QsIGFic0Jhc2VQYXRoLFxuICAgICAgYWJzb2x1dGVUYXJnZXRFbnRyeVBvaW50UGF0aCwgcGF0aE1hcHBpbmdzLFxuICAgICAgb3B0aW9ucy5maW5kRW50cnlQb2ludHNGcm9tVHNDb25maWdQcm9ncmFtID8gdHNDb25maWcgOiBudWxsLCBwcm9qZWN0UGF0aCk7XG4gIGlmIChmaW5kZXIgaW5zdGFuY2VvZiBUYXJnZXRlZEVudHJ5UG9pbnRGaW5kZXIgJiZcbiAgICAgICFmaW5kZXIudGFyZ2V0TmVlZHNQcm9jZXNzaW5nT3JDbGVhbmluZyhzdXBwb3J0ZWRQcm9wZXJ0aWVzVG9Db25zaWRlciwgY29tcGlsZUFsbEZvcm1hdHMpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdUaGUgdGFyZ2V0IGVudHJ5LXBvaW50IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2Ygd29ya2VycyB0byB1c2UgYW5kIHdoZXRoZXIgbmdjYyBzaG91bGQgcnVuIGluIHBhcmFsbGVsLlxuICBjb25zdCB3b3JrZXJDb3VudCA9IGFzeW5jID8gZ2V0TWF4TnVtYmVyT2ZXb3JrZXJzKCkgOiAxO1xuICBjb25zdCBpblBhcmFsbGVsID0gd29ya2VyQ291bnQgPiAxO1xuXG4gIGNvbnN0IGFuYWx5emVFbnRyeVBvaW50cyA9IGdldEFuYWx5emVFbnRyeVBvaW50c0ZuKFxuICAgICAgbG9nZ2VyLCBmaW5kZXIsIGZpbGVTeXN0ZW0sIHN1cHBvcnRlZFByb3BlcnRpZXNUb0NvbnNpZGVyLCBjb21waWxlQWxsRm9ybWF0cyxcbiAgICAgIHByb3BlcnRpZXNUb0NvbnNpZGVyLCBpblBhcmFsbGVsKTtcblxuICAvLyBDcmVhdGUgYW4gdXBkYXRlciB0aGF0IHdpbGwgYWN0dWFsbHkgd3JpdGUgdG8gZGlzay5cbiAgY29uc3QgcGtnSnNvblVwZGF0ZXIgPSBuZXcgRGlyZWN0UGFja2FnZUpzb25VcGRhdGVyKGZpbGVTeXN0ZW0pO1xuICBjb25zdCBmaWxlV3JpdGVyID0gZ2V0RmlsZVdyaXRlcihwa2dKc29uVXBkYXRlcik7XG5cbiAgLy8gVGhlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyB0aGUgYGNvbXBpbGUoKWAgZnVuY3Rpb24uXG4gIGNvbnN0IGNyZWF0ZUNvbXBpbGVGbiA9IGdldENyZWF0ZUNvbXBpbGVGbihcbiAgICAgIGZpbGVTeXN0ZW0sIGxvZ2dlciwgZmlsZVdyaXRlciwgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdCwgdHNDb25maWcsIHBhdGhNYXBwaW5ncyk7XG5cbiAgLy8gVGhlIGV4ZWN1dG9yIGZvciBhY3R1YWxseSBwbGFubmluZyBhbmQgZ2V0dGluZyB0aGUgd29yayBkb25lLlxuICBjb25zdCBjcmVhdGVUYXNrQ29tcGxldGVkQ2FsbGJhY2sgPVxuICAgICAgZ2V0Q3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrKHBrZ0pzb25VcGRhdGVyLCBlcnJvck9uRmFpbGVkRW50cnlQb2ludCwgbG9nZ2VyLCBmaWxlU3lzdGVtKTtcbiAgY29uc3QgZXhlY3V0b3IgPSBnZXRFeGVjdXRvcihcbiAgICAgIGFzeW5jLCB3b3JrZXJDb3VudCwgbG9nZ2VyLCBmaWxlV3JpdGVyLCBwa2dKc29uVXBkYXRlciwgZmlsZVN5c3RlbSwgY29uZmlnLFxuICAgICAgY3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrKTtcblxuICByZXR1cm4gZXhlY3V0b3IuZXhlY3V0ZShhbmFseXplRW50cnlQb2ludHMsIGNyZWF0ZUNvbXBpbGVGbik7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZVN1cHBvcnRlZFByb3BlcnRpZXMocHJvcGVydGllczogc3RyaW5nW10pOiBFbnRyeVBvaW50SnNvblByb3BlcnR5W10ge1xuICAvLyBTaG9ydC1jaXJjdWl0IHRoZSBjYXNlIHdoZXJlIGBwcm9wZXJ0aWVzYCBoYXMgZmFsbGVuIGJhY2sgdG8gdGhlIGRlZmF1bHQgdmFsdWU6XG4gIC8vIGBTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVNgXG4gIGlmIChwcm9wZXJ0aWVzID09PSBTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVMpIHJldHVybiBTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVM7XG5cbiAgY29uc3Qgc3VwcG9ydGVkUHJvcGVydGllczogRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdID0gW107XG5cbiAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BlcnRpZXMgYXMgRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdKSB7XG4gICAgaWYgKFNVUFBPUlRFRF9GT1JNQVRfUFJPUEVSVElFUy5pbmRleE9mKHByb3ApICE9PSAtMSkge1xuICAgICAgc3VwcG9ydGVkUHJvcGVydGllcy5wdXNoKHByb3ApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0ZWRQcm9wZXJ0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE5vIHN1cHBvcnRlZCBmb3JtYXQgcHJvcGVydHkgdG8gY29uc2lkZXIgYW1vbmcgWyR7cHJvcGVydGllcy5qb2luKCcsICcpfV0uIGAgK1xuICAgICAgICBgU3VwcG9ydGVkIHByb3BlcnRpZXM6ICR7U1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTLmpvaW4oJywgJyl9YCk7XG4gIH1cblxuICByZXR1cm4gc3VwcG9ydGVkUHJvcGVydGllcztcbn1cblxuZnVuY3Rpb24gZ2V0Q3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrKFxuICAgIHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIsIGVycm9yT25GYWlsZWRFbnRyeVBvaW50OiBib29sZWFuLCBsb2dnZXI6IExvZ2dlcixcbiAgICBmaWxlU3lzdGVtOiBSZWFkb25seUZpbGVTeXN0ZW0pOiBDcmVhdGVUYXNrQ29tcGxldGVkQ2FsbGJhY2sge1xuICByZXR1cm4gdGFza1F1ZXVlID0+IGNvbXBvc2VUYXNrQ29tcGxldGVkQ2FsbGJhY2tzKHtcbiAgICAgICAgICAgW1Rhc2tQcm9jZXNzaW5nT3V0Y29tZS5Qcm9jZXNzZWRdOlxuICAgICAgICAgICAgICAgY3JlYXRlTWFya0FzUHJvY2Vzc2VkSGFuZGxlcihmaWxlU3lzdGVtLCBwa2dKc29uVXBkYXRlciksXG4gICAgICAgICAgIFtUYXNrUHJvY2Vzc2luZ091dGNvbWUuRmFpbGVkXTpcbiAgICAgICAgICAgICAgIGVycm9yT25GYWlsZWRFbnRyeVBvaW50ID8gY3JlYXRlVGhyb3dFcnJvckhhbmRsZXIoZmlsZVN5c3RlbSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVMb2dFcnJvckhhbmRsZXIobG9nZ2VyLCBmaWxlU3lzdGVtLCB0YXNrUXVldWUpLFxuICAgICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEV4ZWN1dG9yKFxuICAgIGFzeW5jOiBib29sZWFuLCB3b3JrZXJDb3VudDogbnVtYmVyLCBsb2dnZXI6IExvZ2dlciwgZmlsZVdyaXRlcjogRmlsZVdyaXRlcixcbiAgICBwa2dKc29uVXBkYXRlcjogUGFja2FnZUpzb25VcGRhdGVyLCBmaWxlU3lzdGVtOiBGaWxlU3lzdGVtLCBjb25maWc6IE5nY2NDb25maWd1cmF0aW9uLFxuICAgIGNyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjazogQ3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrKTogRXhlY3V0b3Ige1xuICBjb25zdCBsb2NrRmlsZSA9IG5ldyBMb2NrRmlsZVdpdGhDaGlsZFByb2Nlc3MoZmlsZVN5c3RlbSwgbG9nZ2VyKTtcbiAgaWYgKGFzeW5jKSB7XG4gICAgLy8gRXhlY3V0ZSBhc3luY2hyb25vdXNseSAoZWl0aGVyIHNlcmlhbGx5IG9yIGluIHBhcmFsbGVsKVxuICAgIGNvbnN0IHtyZXRyeUF0dGVtcHRzLCByZXRyeURlbGF5fSA9IGNvbmZpZy5nZXRMb2NraW5nQ29uZmlnKCk7XG4gICAgY29uc3QgbG9ja2VyID0gbmV3IEFzeW5jTG9ja2VyKGxvY2tGaWxlLCBsb2dnZXIsIHJldHJ5RGVsYXksIHJldHJ5QXR0ZW1wdHMpO1xuICAgIGlmICh3b3JrZXJDb3VudCA+IDEpIHtcbiAgICAgIC8vIEV4ZWN1dGUgaW4gcGFyYWxsZWwuXG4gICAgICByZXR1cm4gbmV3IENsdXN0ZXJFeGVjdXRvcihcbiAgICAgICAgICB3b3JrZXJDb3VudCwgZmlsZVN5c3RlbSwgbG9nZ2VyLCBmaWxlV3JpdGVyLCBwa2dKc29uVXBkYXRlciwgbG9ja2VyLFxuICAgICAgICAgIGNyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEV4ZWN1dGUgc2VyaWFsbHksIG9uIGEgc2luZ2xlIHRocmVhZCAoYXN5bmMpLlxuICAgICAgcmV0dXJuIG5ldyBTaW5nbGVQcm9jZXNzRXhlY3V0b3JBc3luYyhsb2dnZXIsIGxvY2tlciwgY3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRXhlY3V0ZSBzZXJpYWxseSwgb24gYSBzaW5nbGUgdGhyZWFkIChzeW5jKS5cbiAgICByZXR1cm4gbmV3IFNpbmdsZVByb2Nlc3NFeGVjdXRvclN5bmMoXG4gICAgICAgIGxvZ2dlciwgbmV3IFN5bmNMb2NrZXIobG9ja0ZpbGUpLCBjcmVhdGVUYXNrQ29tcGxldGVkQ2FsbGJhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlcGVuZGVuY3lSZXNvbHZlcihcbiAgICBmaWxlU3lzdGVtOiBSZWFkb25seUZpbGVTeXN0ZW0sIGxvZ2dlcjogTG9nZ2VyLCBjb25maWc6IE5nY2NDb25maWd1cmF0aW9uLFxuICAgIHBhdGhNYXBwaW5nczogUGF0aE1hcHBpbmdzfHVuZGVmaW5lZCk6IERlcGVuZGVuY3lSZXNvbHZlciB7XG4gIGNvbnN0IG1vZHVsZVJlc29sdmVyID0gbmV3IE1vZHVsZVJlc29sdmVyKGZpbGVTeXN0ZW0sIHBhdGhNYXBwaW5ncyk7XG4gIGNvbnN0IGVzbURlcGVuZGVuY3lIb3N0ID0gbmV3IEVzbURlcGVuZGVuY3lIb3N0KGZpbGVTeXN0ZW0sIG1vZHVsZVJlc29sdmVyKTtcbiAgY29uc3QgdW1kRGVwZW5kZW5jeUhvc3QgPSBuZXcgVW1kRGVwZW5kZW5jeUhvc3QoZmlsZVN5c3RlbSwgbW9kdWxlUmVzb2x2ZXIpO1xuICBjb25zdCBjb21tb25Kc0RlcGVuZGVuY3lIb3N0ID0gbmV3IENvbW1vbkpzRGVwZW5kZW5jeUhvc3QoZmlsZVN5c3RlbSwgbW9kdWxlUmVzb2x2ZXIpO1xuICBjb25zdCBkdHNEZXBlbmRlbmN5SG9zdCA9IG5ldyBEdHNEZXBlbmRlbmN5SG9zdChmaWxlU3lzdGVtLCBwYXRoTWFwcGluZ3MpO1xuICByZXR1cm4gbmV3IERlcGVuZGVuY3lSZXNvbHZlcihcbiAgICAgIGZpbGVTeXN0ZW0sIGxvZ2dlciwgY29uZmlnLCB7XG4gICAgICAgIGVzbTU6IGVzbURlcGVuZGVuY3lIb3N0LFxuICAgICAgICBlc20yMDE1OiBlc21EZXBlbmRlbmN5SG9zdCxcbiAgICAgICAgdW1kOiB1bWREZXBlbmRlbmN5SG9zdCxcbiAgICAgICAgY29tbW9uanM6IGNvbW1vbkpzRGVwZW5kZW5jeUhvc3RcbiAgICAgIH0sXG4gICAgICBkdHNEZXBlbmRlbmN5SG9zdCk7XG59XG5cbmZ1bmN0aW9uIGdldEVudHJ5UG9pbnRGaW5kZXIoXG4gICAgZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSwgbG9nZ2VyOiBMb2dnZXIsIHJlc29sdmVyOiBEZXBlbmRlbmN5UmVzb2x2ZXIsIGNvbmZpZzogTmdjY0NvbmZpZ3VyYXRpb24sXG4gICAgZW50cnlQb2ludE1hbmlmZXN0OiBFbnRyeVBvaW50TWFuaWZlc3QsIGJhc2VQYXRoOiBBYnNvbHV0ZUZzUGF0aCxcbiAgICBhYnNvbHV0ZVRhcmdldEVudHJ5UG9pbnRQYXRoOiBBYnNvbHV0ZUZzUGF0aHxudWxsLCBwYXRoTWFwcGluZ3M6IFBhdGhNYXBwaW5nc3x1bmRlZmluZWQsXG4gICAgdHNDb25maWc6IFBhcnNlZENvbmZpZ3VyYXRpb258bnVsbCwgcHJvamVjdFBhdGg6IEFic29sdXRlRnNQYXRoKTogRW50cnlQb2ludEZpbmRlciB7XG4gIGlmIChhYnNvbHV0ZVRhcmdldEVudHJ5UG9pbnRQYXRoICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIG5ldyBUYXJnZXRlZEVudHJ5UG9pbnRGaW5kZXIoXG4gICAgICAgIGZzLCBjb25maWcsIGxvZ2dlciwgcmVzb2x2ZXIsIGJhc2VQYXRoLCBwYXRoTWFwcGluZ3MsIGFic29sdXRlVGFyZ2V0RW50cnlQb2ludFBhdGgpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGVudHJ5UG9pbnRDb2xsZWN0b3IgPSBuZXcgRW50cnlQb2ludENvbGxlY3RvcihmcywgY29uZmlnLCBsb2dnZXIsIHJlc29sdmVyKTtcbiAgICBpZiAodHNDb25maWcgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvZ3JhbUJhc2VkRW50cnlQb2ludEZpbmRlcihcbiAgICAgICAgICBmcywgY29uZmlnLCBsb2dnZXIsIHJlc29sdmVyLCBlbnRyeVBvaW50Q29sbGVjdG9yLCBlbnRyeVBvaW50TWFuaWZlc3QsIGJhc2VQYXRoLCB0c0NvbmZpZyxcbiAgICAgICAgICBwcm9qZWN0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGlyZWN0b3J5V2Fsa2VyRW50cnlQb2ludEZpbmRlcihcbiAgICAgICAgICBsb2dnZXIsIHJlc29sdmVyLCBlbnRyeVBvaW50Q29sbGVjdG9yLCBlbnRyeVBvaW50TWFuaWZlc3QsIGJhc2VQYXRoLCBwYXRoTWFwcGluZ3MpO1xuICAgIH1cbiAgfVxufVxuIl19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7SUFRSCxpSEFBK0U7SUFDL0UsdUdBQXNFO0lBQ3RFLHVHQUFxRTtJQUNyRSx1R0FBcUU7SUFDckUsK0ZBQThEO0lBQzlELHVHQUFxRTtJQUNyRSw2SUFBeUc7SUFDekcsaUhBQStFO0lBRS9FLHVJQUFtRztJQUNuRyw2SEFBMEY7SUFDMUYsc0dBQXlFO0lBRXpFLHNGQUE2RDtJQUM3RCw0R0FBdUU7SUFDdkUsNEdBQTBHO0lBRTFHLHdGQUF5SjtJQUN6SixvRkFBbUQ7SUFDbkQsMEhBQWdGO0lBQ2hGLGtGQUFpRDtJQUNqRCw0RUFBd0c7SUFDeEcsdUZBQTJEO0lBQzNELG1GQUEyRjtJQUMzRixxR0FBbUc7SUFHbkcsb0dBQTRGO0lBWTVGLFNBQWdCLFFBQVEsQ0FBQyxPQUF5QztRQUMxRCxJQUFBLEtBaUJGLDZCQUFjLENBQUMsT0FBTyxDQUFDLEVBaEJ6QixRQUFRLGNBQUEsRUFDUixvQkFBb0IsMEJBQUEsRUFDcEIsb0JBQW9CLDBCQUFBLEVBQ3BCLFdBQVcsaUJBQUEsRUFDWCxpQkFBaUIsdUJBQUEsRUFDakIsTUFBTSxZQUFBLEVBQ04sWUFBWSxrQkFBQSxFQUNaLEtBQUssV0FBQSxFQUNMLHVCQUF1Qiw2QkFBQSxFQUN2QiwrQkFBK0IscUNBQUEsRUFDL0IsNEJBQTRCLGtDQUFBLEVBQzVCLFVBQVUsZ0JBQUEsRUFDVixXQUFXLGlCQUFBLEVBQ1gsV0FBVyxpQkFBQSxFQUNYLFFBQVEsY0FBQSxFQUNSLGFBQWEsbUJBQ1ksQ0FBQztRQUU1QixJQUFNLE1BQU0sR0FBRyxJQUFJLGlDQUFpQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM5RCxJQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzNGLElBQU0sa0JBQWtCLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztZQUNyRCxJQUFJLHFEQUE4QixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRSxJQUFJLHlDQUFrQixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdkQsOENBQThDO1FBQzlDLElBQU0sNkJBQTZCLEdBQUcseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN0RixJQUFNLDRCQUE0QixHQUFHLG9CQUFvQixLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQ3JFLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUM7UUFDVCxJQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FDOUIsVUFBVSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUMvRSw0QkFBNEIsRUFBRSxZQUFZLEVBQzFDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0UsSUFBSSxNQUFNLFlBQVksc0RBQXdCO1lBQzFDLENBQUMsTUFBTSxDQUFDLCtCQUErQixDQUFDLDZCQUE2QixFQUFFLGlCQUFpQixDQUFDLEVBQUU7WUFDN0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ2xFLE9BQU87U0FDUjtRQUVELGtGQUFrRjtRQUNsRixJQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLG9DQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFNLFVBQVUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRW5DLElBQU0sa0JBQWtCLEdBQUcsOENBQXVCLENBQzlDLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLDZCQUE2QixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFDekYsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdEMsc0RBQXNEO1FBQ3RELElBQU0sY0FBYyxHQUFHLElBQUksK0NBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEUsSUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWpELHNEQUFzRDtRQUN0RCxJQUFNLGVBQWUsR0FBRyw0Q0FBa0IsQ0FDdEMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsK0JBQStCLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTdGLGdFQUFnRTtRQUNoRSxJQUFNLDJCQUEyQixHQUM3Qiw4QkFBOEIsQ0FBQyxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hHLElBQU0sUUFBUSxHQUFHLFdBQVcsQ0FDeEIsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUMxRSwyQkFBMkIsQ0FBQyxDQUFDO1FBRWpDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBakVELDRCQWlFQztJQUVELFNBQVMseUJBQXlCLENBQUMsVUFBb0I7O1FBQ3JELGtGQUFrRjtRQUNsRixnQ0FBZ0M7UUFDaEMsSUFBSSxVQUFVLEtBQUsseUNBQTJCO1lBQUUsT0FBTyx5Q0FBMkIsQ0FBQztRQUVuRixJQUFNLG1CQUFtQixHQUE2QixFQUFFLENBQUM7O1lBRXpELEtBQW1CLElBQUEsS0FBQSxpQkFBQSxVQUFzQyxDQUFBLGdCQUFBLDRCQUFFO2dCQUF0RCxJQUFNLElBQUksV0FBQTtnQkFDYixJQUFJLHlDQUEyQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDcEQsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoQzthQUNGOzs7Ozs7Ozs7UUFFRCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FDWCxxREFBbUQsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBSztpQkFDN0UsMkJBQXlCLHlDQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUcsQ0FBQSxDQUFDLENBQUM7U0FDeEU7UUFFRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTLDhCQUE4QixDQUNuQyxjQUFrQyxFQUFFLHVCQUFnQyxFQUFFLE1BQWMsRUFDcEYsVUFBOEI7UUFDaEMsT0FBTyxVQUFBLFNBQVM7O1lBQUksT0FBQSwwQ0FBNkI7Z0JBQ3hDLHdCQUNJLHlDQUE0QixDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUM7Z0JBQzVELHFCQUNJLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxvQ0FBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxrQ0FBcUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQztvQkFDbEY7UUFOVyxDQU1YLENBQUM7SUFDWixDQUFDO0lBRUQsU0FBUyxXQUFXLENBQ2hCLEtBQWMsRUFBRSxXQUFtQixFQUFFLE1BQWMsRUFBRSxVQUFzQixFQUMzRSxjQUFrQyxFQUFFLFVBQXNCLEVBQUUsTUFBeUIsRUFDckYsMkJBQXdEO1FBQzFELElBQU0sUUFBUSxHQUFHLElBQUksdURBQXdCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLElBQUksS0FBSyxFQUFFO1lBQ1QsMERBQTBEO1lBQ3BELElBQUEsS0FBOEIsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQXRELGFBQWEsbUJBQUEsRUFBRSxVQUFVLGdCQUE2QixDQUFDO1lBQzlELElBQU0sTUFBTSxHQUFHLElBQUksMEJBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM1RSxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUU7Z0JBQ25CLHVCQUF1QjtnQkFDdkIsT0FBTyxJQUFJLDBCQUFlLENBQ3RCLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUNuRSwyQkFBMkIsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLGdEQUFnRDtnQkFDaEQsT0FBTyxJQUFJLG9EQUEwQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsMkJBQTJCLENBQUMsQ0FBQzthQUNwRjtTQUNGO2FBQU07WUFDTCwrQ0FBK0M7WUFDL0MsT0FBTyxJQUFJLG1EQUF5QixDQUNoQyxNQUFNLEVBQUUsSUFBSSx3QkFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7U0FDcEU7SUFDSCxDQUFDO0lBRUQsU0FBUyxxQkFBcUIsQ0FDMUIsVUFBOEIsRUFBRSxNQUFjLEVBQUUsTUFBeUIsRUFDekUsWUFBb0M7UUFDdEMsSUFBTSxjQUFjLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNwRSxJQUFNLGlCQUFpQixHQUFHLElBQUksdUNBQWlCLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzVFLElBQU0saUJBQWlCLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDNUUsSUFBTSxzQkFBc0IsR0FBRyxJQUFJLGlEQUFzQixDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN0RixJQUFNLGlCQUFpQixHQUFHLElBQUksdUNBQWlCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSx3Q0FBa0IsQ0FDekIsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDMUIsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLEdBQUcsRUFBRSxpQkFBaUI7WUFDdEIsUUFBUSxFQUFFLHNCQUFzQjtTQUNqQyxFQUNELGlCQUFpQixDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFNBQVMsbUJBQW1CLENBQ3hCLEVBQXNCLEVBQUUsTUFBYyxFQUFFLFFBQTRCLEVBQUUsTUFBeUIsRUFDL0Ysa0JBQXNDLEVBQUUsUUFBd0IsRUFDaEUsNEJBQWlELEVBQUUsWUFBb0MsRUFDdkYsUUFBa0MsRUFBRSxXQUEyQjtRQUNqRSxJQUFJLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUN6QyxPQUFPLElBQUksc0RBQXdCLENBQy9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLDRCQUE0QixDQUFDLENBQUM7U0FDekY7YUFBTTtZQUNMLElBQU0sbUJBQW1CLEdBQUcsSUFBSSwyQ0FBbUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRixJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3JCLE9BQU8sSUFBSSwrREFBNEIsQ0FDbkMsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQ3pGLFdBQVcsQ0FBQyxDQUFDO2FBQ2xCO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxxRUFBK0IsQ0FDdEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDeEY7U0FDRjtJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJub2RlXCIgLz5cblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgRmlsZVN5c3RlbSwgUmVhZG9ubHlGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7UGFyc2VkQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vLi4vc3JjL3BlcmZvcm1fY29tcGlsZSc7XG5cbmltcG9ydCB7Q29tbW9uSnNEZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvY29tbW9uanNfZGVwZW5kZW5jeV9ob3N0JztcbmltcG9ydCB7RGVwZW5kZW5jeVJlc29sdmVyfSBmcm9tICcuL2RlcGVuZGVuY2llcy9kZXBlbmRlbmN5X3Jlc29sdmVyJztcbmltcG9ydCB7RHRzRGVwZW5kZW5jeUhvc3R9IGZyb20gJy4vZGVwZW5kZW5jaWVzL2R0c19kZXBlbmRlbmN5X2hvc3QnO1xuaW1wb3J0IHtFc21EZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvZXNtX2RlcGVuZGVuY3lfaG9zdCc7XG5pbXBvcnQge01vZHVsZVJlc29sdmVyfSBmcm9tICcuL2RlcGVuZGVuY2llcy9tb2R1bGVfcmVzb2x2ZXInO1xuaW1wb3J0IHtVbWREZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvdW1kX2RlcGVuZGVuY3lfaG9zdCc7XG5pbXBvcnQge0RpcmVjdG9yeVdhbGtlckVudHJ5UG9pbnRGaW5kZXJ9IGZyb20gJy4vZW50cnlfcG9pbnRfZmluZGVyL2RpcmVjdG9yeV93YWxrZXJfZW50cnlfcG9pbnRfZmluZGVyJztcbmltcG9ydCB7RW50cnlQb2ludENvbGxlY3Rvcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvZW50cnlfcG9pbnRfY29sbGVjdG9yJztcbmltcG9ydCB7RW50cnlQb2ludEZpbmRlcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvaW50ZXJmYWNlJztcbmltcG9ydCB7UHJvZ3JhbUJhc2VkRW50cnlQb2ludEZpbmRlcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvcHJvZ3JhbV9iYXNlZF9lbnRyeV9wb2ludF9maW5kZXInO1xuaW1wb3J0IHtUYXJnZXRlZEVudHJ5UG9pbnRGaW5kZXJ9IGZyb20gJy4vZW50cnlfcG9pbnRfZmluZGVyL3RhcmdldGVkX2VudHJ5X3BvaW50X2ZpbmRlcic7XG5pbXBvcnQge2dldEFuYWx5emVFbnRyeVBvaW50c0ZufSBmcm9tICcuL2V4ZWN1dGlvbi9hbmFseXplX2VudHJ5X3BvaW50cyc7XG5pbXBvcnQge0V4ZWN1dG9yfSBmcm9tICcuL2V4ZWN1dGlvbi9hcGknO1xuaW1wb3J0IHtDbHVzdGVyRXhlY3V0b3J9IGZyb20gJy4vZXhlY3V0aW9uL2NsdXN0ZXIvZXhlY3V0b3InO1xuaW1wb3J0IHtnZXRDcmVhdGVDb21waWxlRm59IGZyb20gJy4vZXhlY3V0aW9uL2NyZWF0ZV9jb21waWxlX2Z1bmN0aW9uJztcbmltcG9ydCB7U2luZ2xlUHJvY2Vzc0V4ZWN1dG9yQXN5bmMsIFNpbmdsZVByb2Nlc3NFeGVjdXRvclN5bmN9IGZyb20gJy4vZXhlY3V0aW9uL3NpbmdsZV9wcm9jZXNzX2V4ZWN1dG9yJztcbmltcG9ydCB7Q3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrLCBUYXNrUHJvY2Vzc2luZ091dGNvbWV9IGZyb20gJy4vZXhlY3V0aW9uL3Rhc2tzL2FwaSc7XG5pbXBvcnQge2NvbXBvc2VUYXNrQ29tcGxldGVkQ2FsbGJhY2tzLCBjcmVhdGVMb2dFcnJvckhhbmRsZXIsIGNyZWF0ZU1hcmtBc1Byb2Nlc3NlZEhhbmRsZXIsIGNyZWF0ZVRocm93RXJyb3JIYW5kbGVyfSBmcm9tICcuL2V4ZWN1dGlvbi90YXNrcy9jb21wbGV0aW9uJztcbmltcG9ydCB7QXN5bmNMb2NrZXJ9IGZyb20gJy4vbG9ja2luZy9hc3luY19sb2NrZXInO1xuaW1wb3J0IHtMb2NrRmlsZVdpdGhDaGlsZFByb2Nlc3N9IGZyb20gJy4vbG9ja2luZy9sb2NrX2ZpbGVfd2l0aF9jaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7U3luY0xvY2tlcn0gZnJvbSAnLi9sb2NraW5nL3N5bmNfbG9ja2VyJztcbmltcG9ydCB7QXN5bmNOZ2NjT3B0aW9ucywgZ2V0TWF4TnVtYmVyT2ZXb3JrZXJzLCBnZXRTaGFyZWRTZXR1cCwgU3luY05nY2NPcHRpb25zfSBmcm9tICcuL25nY2Nfb3B0aW9ucyc7XG5pbXBvcnQge05nY2NDb25maWd1cmF0aW9ufSBmcm9tICcuL3BhY2thZ2VzL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtFbnRyeVBvaW50SnNvblByb3BlcnR5LCBTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVN9IGZyb20gJy4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuaW1wb3J0IHtFbnRyeVBvaW50TWFuaWZlc3QsIEludmFsaWRhdGluZ0VudHJ5UG9pbnRNYW5pZmVzdH0gZnJvbSAnLi9wYWNrYWdlcy9lbnRyeV9wb2ludF9tYW5pZmVzdCc7XG5pbXBvcnQge1BhdGhNYXBwaW5nc30gZnJvbSAnLi9wYXRoX21hcHBpbmdzJztcbmltcG9ydCB7RmlsZVdyaXRlcn0gZnJvbSAnLi93cml0aW5nL2ZpbGVfd3JpdGVyJztcbmltcG9ydCB7RGlyZWN0UGFja2FnZUpzb25VcGRhdGVyLCBQYWNrYWdlSnNvblVwZGF0ZXJ9IGZyb20gJy4vd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlcic7XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeS1wb2ludCBpbnRvIG5nY2MgKGFOR3VsYXIgQ29tcGF0aWJpbGl0eSBDb21waWxlcikuXG4gKlxuICogWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gcHJvY2VzcyBvbmUgb3IgbW9yZSBucG0gcGFja2FnZXMsIHRvIGVuc3VyZVxuICogdGhhdCB0aGV5IGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIGl2eSBjb21waWxlciAobmd0c2MpLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRlbGxpbmcgbmdjYyB3aGF0IHRvIGNvbXBpbGUgYW5kIGhvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haW5OZ2NjPFQgZXh0ZW5kcyBBc3luY05nY2NPcHRpb25zfFN5bmNOZ2NjT3B0aW9ucz4ob3B0aW9uczogVCk6XG4gICAgVCBleHRlbmRzIEFzeW5jTmdjY09wdGlvbnMgPyBQcm9taXNlPHZvaWQ+OiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIG1haW5OZ2NjKG9wdGlvbnM6IEFzeW5jTmdjY09wdGlvbnN8U3luY05nY2NPcHRpb25zKTogdm9pZHxQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGJhc2VQYXRoLFxuICAgIHRhcmdldEVudHJ5UG9pbnRQYXRoLFxuICAgIHByb3BlcnRpZXNUb0NvbnNpZGVyLFxuICAgIHR5cGluZ3NPbmx5LFxuICAgIGNvbXBpbGVBbGxGb3JtYXRzLFxuICAgIGxvZ2dlcixcbiAgICBwYXRoTWFwcGluZ3MsXG4gICAgYXN5bmMsXG4gICAgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQsXG4gICAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdCxcbiAgICBpbnZhbGlkYXRlRW50cnlQb2ludE1hbmlmZXN0LFxuICAgIGZpbGVTeXN0ZW0sXG4gICAgYWJzQmFzZVBhdGgsXG4gICAgcHJvamVjdFBhdGgsXG4gICAgdHNDb25maWcsXG4gICAgZ2V0RmlsZVdyaXRlcixcbiAgfSA9IGdldFNoYXJlZFNldHVwKG9wdGlvbnMpO1xuXG4gIGNvbnN0IGNvbmZpZyA9IG5ldyBOZ2NjQ29uZmlndXJhdGlvbihmaWxlU3lzdGVtLCBwcm9qZWN0UGF0aCk7XG4gIGNvbnN0IGRlcGVuZGVuY3lSZXNvbHZlciA9IGdldERlcGVuZGVuY3lSZXNvbHZlcihmaWxlU3lzdGVtLCBsb2dnZXIsIGNvbmZpZywgcGF0aE1hcHBpbmdzKTtcbiAgY29uc3QgZW50cnlQb2ludE1hbmlmZXN0ID0gaW52YWxpZGF0ZUVudHJ5UG9pbnRNYW5pZmVzdCA/XG4gICAgICBuZXcgSW52YWxpZGF0aW5nRW50cnlQb2ludE1hbmlmZXN0KGZpbGVTeXN0ZW0sIGNvbmZpZywgbG9nZ2VyKSA6XG4gICAgICBuZXcgRW50cnlQb2ludE1hbmlmZXN0KGZpbGVTeXN0ZW0sIGNvbmZpZywgbG9nZ2VyKTtcblxuICAvLyBCYWlsIG91dCBlYXJseSBpZiB0aGUgd29yayBpcyBhbHJlYWR5IGRvbmUuXG4gIGNvbnN0IHN1cHBvcnRlZFByb3BlcnRpZXNUb0NvbnNpZGVyID0gZW5zdXJlU3VwcG9ydGVkUHJvcGVydGllcyhwcm9wZXJ0aWVzVG9Db25zaWRlcik7XG4gIGNvbnN0IGFic29sdXRlVGFyZ2V0RW50cnlQb2ludFBhdGggPSB0YXJnZXRFbnRyeVBvaW50UGF0aCAhPT0gdW5kZWZpbmVkID9cbiAgICAgIGZpbGVTeXN0ZW0ucmVzb2x2ZShiYXNlUGF0aCwgdGFyZ2V0RW50cnlQb2ludFBhdGgpIDpcbiAgICAgIG51bGw7XG4gIGNvbnN0IGZpbmRlciA9IGdldEVudHJ5UG9pbnRGaW5kZXIoXG4gICAgICBmaWxlU3lzdGVtLCBsb2dnZXIsIGRlcGVuZGVuY3lSZXNvbHZlciwgY29uZmlnLCBlbnRyeVBvaW50TWFuaWZlc3QsIGFic0Jhc2VQYXRoLFxuICAgICAgYWJzb2x1dGVUYXJnZXRFbnRyeVBvaW50UGF0aCwgcGF0aE1hcHBpbmdzLFxuICAgICAgb3B0aW9ucy5maW5kRW50cnlQb2ludHNGcm9tVHNDb25maWdQcm9ncmFtID8gdHNDb25maWcgOiBudWxsLCBwcm9qZWN0UGF0aCk7XG4gIGlmIChmaW5kZXIgaW5zdGFuY2VvZiBUYXJnZXRlZEVudHJ5UG9pbnRGaW5kZXIgJiZcbiAgICAgICFmaW5kZXIudGFyZ2V0TmVlZHNQcm9jZXNzaW5nT3JDbGVhbmluZyhzdXBwb3J0ZWRQcm9wZXJ0aWVzVG9Db25zaWRlciwgY29tcGlsZUFsbEZvcm1hdHMpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdUaGUgdGFyZ2V0IGVudHJ5LXBvaW50IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2Ygd29ya2VycyB0byB1c2UgYW5kIHdoZXRoZXIgbmdjYyBzaG91bGQgcnVuIGluIHBhcmFsbGVsLlxuICBjb25zdCB3b3JrZXJDb3VudCA9IGFzeW5jID8gZ2V0TWF4TnVtYmVyT2ZXb3JrZXJzKCkgOiAxO1xuICBjb25zdCBpblBhcmFsbGVsID0gd29ya2VyQ291bnQgPiAxO1xuXG4gIGNvbnN0IGFuYWx5emVFbnRyeVBvaW50cyA9IGdldEFuYWx5emVFbnRyeVBvaW50c0ZuKFxuICAgICAgbG9nZ2VyLCBmaW5kZXIsIGZpbGVTeXN0ZW0sIHN1cHBvcnRlZFByb3BlcnRpZXNUb0NvbnNpZGVyLCB0eXBpbmdzT25seSwgY29tcGlsZUFsbEZvcm1hdHMsXG4gICAgICBwcm9wZXJ0aWVzVG9Db25zaWRlciwgaW5QYXJhbGxlbCk7XG5cbiAgLy8gQ3JlYXRlIGFuIHVwZGF0ZXIgdGhhdCB3aWxsIGFjdHVhbGx5IHdyaXRlIHRvIGRpc2suXG4gIGNvbnN0IHBrZ0pzb25VcGRhdGVyID0gbmV3IERpcmVjdFBhY2thZ2VKc29uVXBkYXRlcihmaWxlU3lzdGVtKTtcbiAgY29uc3QgZmlsZVdyaXRlciA9IGdldEZpbGVXcml0ZXIocGtnSnNvblVwZGF0ZXIpO1xuXG4gIC8vIFRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgdGhlIGBjb21waWxlKClgIGZ1bmN0aW9uLlxuICBjb25zdCBjcmVhdGVDb21waWxlRm4gPSBnZXRDcmVhdGVDb21waWxlRm4oXG4gICAgICBmaWxlU3lzdGVtLCBsb2dnZXIsIGZpbGVXcml0ZXIsIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQsIHRzQ29uZmlnLCBwYXRoTWFwcGluZ3MpO1xuXG4gIC8vIFRoZSBleGVjdXRvciBmb3IgYWN0dWFsbHkgcGxhbm5pbmcgYW5kIGdldHRpbmcgdGhlIHdvcmsgZG9uZS5cbiAgY29uc3QgY3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrID1cbiAgICAgIGdldENyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayhwa2dKc29uVXBkYXRlciwgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQsIGxvZ2dlciwgZmlsZVN5c3RlbSk7XG4gIGNvbnN0IGV4ZWN1dG9yID0gZ2V0RXhlY3V0b3IoXG4gICAgICBhc3luYywgd29ya2VyQ291bnQsIGxvZ2dlciwgZmlsZVdyaXRlciwgcGtnSnNvblVwZGF0ZXIsIGZpbGVTeXN0ZW0sIGNvbmZpZyxcbiAgICAgIGNyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayk7XG5cbiAgcmV0dXJuIGV4ZWN1dG9yLmV4ZWN1dGUoYW5hbHl6ZUVudHJ5UG9pbnRzLCBjcmVhdGVDb21waWxlRm4pO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVTdXBwb3J0ZWRQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IHN0cmluZ1tdKTogRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdIHtcbiAgLy8gU2hvcnQtY2lyY3VpdCB0aGUgY2FzZSB3aGVyZSBgcHJvcGVydGllc2AgaGFzIGZhbGxlbiBiYWNrIHRvIHRoZSBkZWZhdWx0IHZhbHVlOlxuICAvLyBgU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTYFxuICBpZiAocHJvcGVydGllcyA9PT0gU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTKSByZXR1cm4gU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTO1xuXG4gIGNvbnN0IHN1cHBvcnRlZFByb3BlcnRpZXM6IEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzIGFzIEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSkge1xuICAgIGlmIChTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVMuaW5kZXhPZihwcm9wKSAhPT0gLTEpIHtcbiAgICAgIHN1cHBvcnRlZFByb3BlcnRpZXMucHVzaChwcm9wKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydGVkUHJvcGVydGllcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBObyBzdXBwb3J0ZWQgZm9ybWF0IHByb3BlcnR5IHRvIGNvbnNpZGVyIGFtb25nIFske3Byb3BlcnRpZXMuam9pbignLCAnKX1dLiBgICtcbiAgICAgICAgYFN1cHBvcnRlZCBwcm9wZXJ0aWVzOiAke1NVUFBPUlRFRF9GT1JNQVRfUFJPUEVSVElFUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgcmV0dXJuIHN1cHBvcnRlZFByb3BlcnRpZXM7XG59XG5cbmZ1bmN0aW9uIGdldENyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayhcbiAgICBwa2dKc29uVXBkYXRlcjogUGFja2FnZUpzb25VcGRhdGVyLCBlcnJvck9uRmFpbGVkRW50cnlQb2ludDogYm9vbGVhbiwgbG9nZ2VyOiBMb2dnZXIsXG4gICAgZmlsZVN5c3RlbTogUmVhZG9ubHlGaWxlU3lzdGVtKTogQ3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrIHtcbiAgcmV0dXJuIHRhc2tRdWV1ZSA9PiBjb21wb3NlVGFza0NvbXBsZXRlZENhbGxiYWNrcyh7XG4gICAgICAgICAgIFtUYXNrUHJvY2Vzc2luZ091dGNvbWUuUHJvY2Vzc2VkXTpcbiAgICAgICAgICAgICAgIGNyZWF0ZU1hcmtBc1Byb2Nlc3NlZEhhbmRsZXIoZmlsZVN5c3RlbSwgcGtnSnNvblVwZGF0ZXIpLFxuICAgICAgICAgICBbVGFza1Byb2Nlc3NpbmdPdXRjb21lLkZhaWxlZF06XG4gICAgICAgICAgICAgICBlcnJvck9uRmFpbGVkRW50cnlQb2ludCA/IGNyZWF0ZVRocm93RXJyb3JIYW5kbGVyKGZpbGVTeXN0ZW0pIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTG9nRXJyb3JIYW5kbGVyKGxvZ2dlciwgZmlsZVN5c3RlbSwgdGFza1F1ZXVlKSxcbiAgICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRFeGVjdXRvcihcbiAgICBhc3luYzogYm9vbGVhbiwgd29ya2VyQ291bnQ6IG51bWJlciwgbG9nZ2VyOiBMb2dnZXIsIGZpbGVXcml0ZXI6IEZpbGVXcml0ZXIsXG4gICAgcGtnSnNvblVwZGF0ZXI6IFBhY2thZ2VKc29uVXBkYXRlciwgZmlsZVN5c3RlbTogRmlsZVN5c3RlbSwgY29uZmlnOiBOZ2NjQ29uZmlndXJhdGlvbixcbiAgICBjcmVhdGVUYXNrQ29tcGxldGVkQ2FsbGJhY2s6IENyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayk6IEV4ZWN1dG9yIHtcbiAgY29uc3QgbG9ja0ZpbGUgPSBuZXcgTG9ja0ZpbGVXaXRoQ2hpbGRQcm9jZXNzKGZpbGVTeXN0ZW0sIGxvZ2dlcik7XG4gIGlmIChhc3luYykge1xuICAgIC8vIEV4ZWN1dGUgYXN5bmNocm9ub3VzbHkgKGVpdGhlciBzZXJpYWxseSBvciBpbiBwYXJhbGxlbClcbiAgICBjb25zdCB7cmV0cnlBdHRlbXB0cywgcmV0cnlEZWxheX0gPSBjb25maWcuZ2V0TG9ja2luZ0NvbmZpZygpO1xuICAgIGNvbnN0IGxvY2tlciA9IG5ldyBBc3luY0xvY2tlcihsb2NrRmlsZSwgbG9nZ2VyLCByZXRyeURlbGF5LCByZXRyeUF0dGVtcHRzKTtcbiAgICBpZiAod29ya2VyQ291bnQgPiAxKSB7XG4gICAgICAvLyBFeGVjdXRlIGluIHBhcmFsbGVsLlxuICAgICAgcmV0dXJuIG5ldyBDbHVzdGVyRXhlY3V0b3IoXG4gICAgICAgICAgd29ya2VyQ291bnQsIGZpbGVTeXN0ZW0sIGxvZ2dlciwgZmlsZVdyaXRlciwgcGtnSnNvblVwZGF0ZXIsIGxvY2tlcixcbiAgICAgICAgICBjcmVhdGVUYXNrQ29tcGxldGVkQ2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFeGVjdXRlIHNlcmlhbGx5LCBvbiBhIHNpbmdsZSB0aHJlYWQgKGFzeW5jKS5cbiAgICAgIHJldHVybiBuZXcgU2luZ2xlUHJvY2Vzc0V4ZWN1dG9yQXN5bmMobG9nZ2VyLCBsb2NrZXIsIGNyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEV4ZWN1dGUgc2VyaWFsbHksIG9uIGEgc2luZ2xlIHRocmVhZCAoc3luYykuXG4gICAgcmV0dXJuIG5ldyBTaW5nbGVQcm9jZXNzRXhlY3V0b3JTeW5jKFxuICAgICAgICBsb2dnZXIsIG5ldyBTeW5jTG9ja2VyKGxvY2tGaWxlKSwgY3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZXBlbmRlbmN5UmVzb2x2ZXIoXG4gICAgZmlsZVN5c3RlbTogUmVhZG9ubHlGaWxlU3lzdGVtLCBsb2dnZXI6IExvZ2dlciwgY29uZmlnOiBOZ2NjQ29uZmlndXJhdGlvbixcbiAgICBwYXRoTWFwcGluZ3M6IFBhdGhNYXBwaW5nc3x1bmRlZmluZWQpOiBEZXBlbmRlbmN5UmVzb2x2ZXIge1xuICBjb25zdCBtb2R1bGVSZXNvbHZlciA9IG5ldyBNb2R1bGVSZXNvbHZlcihmaWxlU3lzdGVtLCBwYXRoTWFwcGluZ3MpO1xuICBjb25zdCBlc21EZXBlbmRlbmN5SG9zdCA9IG5ldyBFc21EZXBlbmRlbmN5SG9zdChmaWxlU3lzdGVtLCBtb2R1bGVSZXNvbHZlcik7XG4gIGNvbnN0IHVtZERlcGVuZGVuY3lIb3N0ID0gbmV3IFVtZERlcGVuZGVuY3lIb3N0KGZpbGVTeXN0ZW0sIG1vZHVsZVJlc29sdmVyKTtcbiAgY29uc3QgY29tbW9uSnNEZXBlbmRlbmN5SG9zdCA9IG5ldyBDb21tb25Kc0RlcGVuZGVuY3lIb3N0KGZpbGVTeXN0ZW0sIG1vZHVsZVJlc29sdmVyKTtcbiAgY29uc3QgZHRzRGVwZW5kZW5jeUhvc3QgPSBuZXcgRHRzRGVwZW5kZW5jeUhvc3QoZmlsZVN5c3RlbSwgcGF0aE1hcHBpbmdzKTtcbiAgcmV0dXJuIG5ldyBEZXBlbmRlbmN5UmVzb2x2ZXIoXG4gICAgICBmaWxlU3lzdGVtLCBsb2dnZXIsIGNvbmZpZywge1xuICAgICAgICBlc201OiBlc21EZXBlbmRlbmN5SG9zdCxcbiAgICAgICAgZXNtMjAxNTogZXNtRGVwZW5kZW5jeUhvc3QsXG4gICAgICAgIHVtZDogdW1kRGVwZW5kZW5jeUhvc3QsXG4gICAgICAgIGNvbW1vbmpzOiBjb21tb25Kc0RlcGVuZGVuY3lIb3N0XG4gICAgICB9LFxuICAgICAgZHRzRGVwZW5kZW5jeUhvc3QpO1xufVxuXG5mdW5jdGlvbiBnZXRFbnRyeVBvaW50RmluZGVyKFxuICAgIGZzOiBSZWFkb25seUZpbGVTeXN0ZW0sIGxvZ2dlcjogTG9nZ2VyLCByZXNvbHZlcjogRGVwZW5kZW5jeVJlc29sdmVyLCBjb25maWc6IE5nY2NDb25maWd1cmF0aW9uLFxuICAgIGVudHJ5UG9pbnRNYW5pZmVzdDogRW50cnlQb2ludE1hbmlmZXN0LCBiYXNlUGF0aDogQWJzb2x1dGVGc1BhdGgsXG4gICAgYWJzb2x1dGVUYXJnZXRFbnRyeVBvaW50UGF0aDogQWJzb2x1dGVGc1BhdGh8bnVsbCwgcGF0aE1hcHBpbmdzOiBQYXRoTWFwcGluZ3N8dW5kZWZpbmVkLFxuICAgIHRzQ29uZmlnOiBQYXJzZWRDb25maWd1cmF0aW9ufG51bGwsIHByb2plY3RQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEVudHJ5UG9pbnRGaW5kZXIge1xuICBpZiAoYWJzb2x1dGVUYXJnZXRFbnRyeVBvaW50UGF0aCAhPT0gbnVsbCkge1xuICAgIHJldHVybiBuZXcgVGFyZ2V0ZWRFbnRyeVBvaW50RmluZGVyKFxuICAgICAgICBmcywgY29uZmlnLCBsb2dnZXIsIHJlc29sdmVyLCBiYXNlUGF0aCwgcGF0aE1hcHBpbmdzLCBhYnNvbHV0ZVRhcmdldEVudHJ5UG9pbnRQYXRoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBlbnRyeVBvaW50Q29sbGVjdG9yID0gbmV3IEVudHJ5UG9pbnRDb2xsZWN0b3IoZnMsIGNvbmZpZywgbG9nZ2VyLCByZXNvbHZlcik7XG4gICAgaWYgKHRzQ29uZmlnICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbmV3IFByb2dyYW1CYXNlZEVudHJ5UG9pbnRGaW5kZXIoXG4gICAgICAgICAgZnMsIGNvbmZpZywgbG9nZ2VyLCByZXNvbHZlciwgZW50cnlQb2ludENvbGxlY3RvciwgZW50cnlQb2ludE1hbmlmZXN0LCBiYXNlUGF0aCwgdHNDb25maWcsXG4gICAgICAgICAgcHJvamVjdFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERpcmVjdG9yeVdhbGtlckVudHJ5UG9pbnRGaW5kZXIoXG4gICAgICAgICAgbG9nZ2VyLCByZXNvbHZlciwgZW50cnlQb2ludENvbGxlY3RvciwgZW50cnlQb2ludE1hbmlmZXN0LCBiYXNlUGF0aCwgcGF0aE1hcHBpbmdzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -26,9 +26,20 @@ export interface SyncNgccOptions {
26
26
  * Defaults to all the properties in the package.json.
27
27
  */
28
28
  propertiesToConsider?: string[];
29
+ /**
30
+ * Whether to only process the typings files for this entry-point.
31
+ *
32
+ * This is useful when running ngcc only to provide typings files to downstream tooling such as
33
+ * the Angular Language Service or ng-packagr. Defaults to `false`.
34
+ *
35
+ * If this is set to `true` then `compileAllFormats` is forced to `false`.
36
+ */
37
+ typingsOnly?: boolean;
29
38
  /**
30
39
  * Whether to process all formats specified by (`propertiesToConsider`) or to stop processing
31
- * this entry-point at the first matching format. Defaults to `true`.
40
+ * this entry-point at the first matching format.
41
+ *
42
+ * Defaults to `true`, but is forced to `false` if `typingsOnly` is `true`.
32
43
  */
33
44
  compileAllFormats?: boolean;
34
45
  /**
@@ -35,16 +35,22 @@
35
35
  var absBasePath = file_system_1.absoluteFrom(options.basePath);
36
36
  var projectPath = fileSystem.dirname(absBasePath);
37
37
  var tsConfig = options.tsConfigPath !== null ? getTsConfig(options.tsConfigPath || projectPath) : null;
38
- var basePath = options.basePath, targetEntryPointPath = options.targetEntryPointPath, _a = options.propertiesToConsider, propertiesToConsider = _a === void 0 ? entry_point_1.SUPPORTED_FORMAT_PROPERTIES : _a, _b = options.compileAllFormats, compileAllFormats = _b === void 0 ? true : _b, _c = options.createNewEntryPointFormats, createNewEntryPointFormats = _c === void 0 ? false : _c, _d = options.logger, logger = _d === void 0 ? new logging_1.ConsoleLogger(logging_1.LogLevel.info) : _d, _e = options.pathMappings, pathMappings = _e === void 0 ? path_mappings_1.getPathMappingsFromTsConfig(fileSystem, tsConfig, projectPath) : _e, _f = options.async, async = _f === void 0 ? false : _f, _g = options.errorOnFailedEntryPoint, errorOnFailedEntryPoint = _g === void 0 ? false : _g, _h = options.enableI18nLegacyMessageIdFormat, enableI18nLegacyMessageIdFormat = _h === void 0 ? true : _h, _j = options.invalidateEntryPointManifest, invalidateEntryPointManifest = _j === void 0 ? false : _j, tsConfigPath = options.tsConfigPath;
38
+ var basePath = options.basePath, targetEntryPointPath = options.targetEntryPointPath, _a = options.propertiesToConsider, propertiesToConsider = _a === void 0 ? entry_point_1.SUPPORTED_FORMAT_PROPERTIES : _a, _b = options.typingsOnly, typingsOnly = _b === void 0 ? false : _b, _c = options.compileAllFormats, compileAllFormats = _c === void 0 ? true : _c, _d = options.createNewEntryPointFormats, createNewEntryPointFormats = _d === void 0 ? false : _d, _e = options.logger, logger = _e === void 0 ? new logging_1.ConsoleLogger(logging_1.LogLevel.info) : _e, _f = options.pathMappings, pathMappings = _f === void 0 ? path_mappings_1.getPathMappingsFromTsConfig(fileSystem, tsConfig, projectPath) : _f, _g = options.async, async = _g === void 0 ? false : _g, _h = options.errorOnFailedEntryPoint, errorOnFailedEntryPoint = _h === void 0 ? false : _h, _j = options.enableI18nLegacyMessageIdFormat, enableI18nLegacyMessageIdFormat = _j === void 0 ? true : _j, _k = options.invalidateEntryPointManifest, invalidateEntryPointManifest = _k === void 0 ? false : _k, tsConfigPath = options.tsConfigPath;
39
39
  if (!!targetEntryPointPath) {
40
40
  // targetEntryPointPath forces us to error if an entry-point fails.
41
41
  errorOnFailedEntryPoint = true;
42
42
  }
43
+ if (typingsOnly) {
44
+ // If we only want to process the typings then we do not want to waste time trying to process
45
+ // multiple JS formats.
46
+ compileAllFormats = false;
47
+ }
43
48
  checkForSolutionStyleTsConfig(fileSystem, logger, projectPath, options.tsConfigPath, tsConfig);
44
49
  return {
45
50
  basePath: basePath,
46
51
  targetEntryPointPath: targetEntryPointPath,
47
52
  propertiesToConsider: propertiesToConsider,
53
+ typingsOnly: typingsOnly,
48
54
  compileAllFormats: compileAllFormats,
49
55
  createNewEntryPointFormats: createNewEntryPointFormats,
50
56
  logger: logger,
@@ -126,4 +132,4 @@
126
132
  }
127
133
  exports.getMaxNumberOfWorkers = getMaxNumberOfWorkers;
128
134
  });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdjY19vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL25nY2Nfb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCx1QkFBeUI7SUFFekIsMkVBQXNIO0lBQ3RILG1FQUF3RTtJQUN4RSw2RUFBaUY7SUFFakYsbUZBQW1FO0lBQ25FLDhFQUEwRTtJQUUxRSxvR0FBaUU7SUFDakUsa0hBQThFO0lBNEk5RTs7OztPQUlHO0lBQ0gsU0FBZ0IsY0FBYyxDQUFDLE9BQW9CO1FBRWpELElBQU0sVUFBVSxHQUFHLDJCQUFhLEVBQUUsQ0FBQztRQUNuQyxJQUFNLFdBQVcsR0FBRywwQkFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQU0sUUFBUSxHQUNWLE9BQU8sQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRzFGLElBQUEsUUFBUSxHQVlOLE9BQU8sU0FaRCxFQUNSLG9CQUFvQixHQVdsQixPQUFPLHFCQVhXLEVBQ3BCLEtBVUUsT0FBTyxxQkFWeUMsRUFBbEQsb0JBQW9CLG1CQUFHLHlDQUEyQixLQUFBLEVBQ2xELEtBU0UsT0FBTyxrQkFUZSxFQUF4QixpQkFBaUIsbUJBQUcsSUFBSSxLQUFBLEVBQ3hCLEtBUUUsT0FBTywyQkFSeUIsRUFBbEMsMEJBQTBCLG1CQUFHLEtBQUssS0FBQSxFQUNsQyxLQU9FLE9BQU8sT0FQZ0MsRUFBekMsTUFBTSxtQkFBRyxJQUFJLHVCQUFhLENBQUMsa0JBQVEsQ0FBQyxJQUFJLENBQUMs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QUFJLENBQUMsRUFBRSxDQUFDO2dCQUNiLGtKQUFrSjtnQkFDbEosb0dBQW9HO2lCQUNwRyw2QkFBMEIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFHLENBQUEsQ0FBQyxDQUFDO1NBQ3RGO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQWdCLHFCQUFxQjtRQUNuQyxJQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1FBQ2hELElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUM1QixzRUFBc0U7WUFDdEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxJQUFNLGlCQUFpQixHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1NBQzNEO2FBQU0sSUFBSSxpQkFBaUIsR0FBRyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBZEQsc0RBY0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcblxuaW1wb3J0IHthYnNvbHV0ZUZyb20sIEFic29sdXRlRnNQYXRoLCBGaWxlU3lzdGVtLCBnZXRGaWxlU3lzdGVtLCBQYXRoTWFuaXB1bGF0aW9ufSBmcm9tICcuLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtDb25zb2xlTG9nZ2VyLCBMb2dnZXIsIExvZ0xldmVsfSBmcm9tICcuLi8uLi9zcmMvbmd0c2MvbG9nZ2luZyc7XG5pbXBvcnQge1BhcnNlZENvbmZpZ3VyYXRpb24sIHJlYWRDb25maWd1cmF0aW9ufSBmcm9tICcuLi8uLi9zcmMvcGVyZm9ybV9jb21waWxlJztcblxuaW1wb3J0IHtTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVN9IGZyb20gJy4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuaW1wb3J0IHtnZXRQYXRoTWFwcGluZ3NGcm9tVHNDb25maWcsIFBhdGhNYXBwaW5nc30gZnJvbSAnLi9wYXRoX21hcHBpbmdzJztcbmltcG9ydCB7RmlsZVdyaXRlcn0gZnJvbSAnLi93cml0aW5nL2ZpbGVfd3JpdGVyJztcbmltcG9ydCB7SW5QbGFjZUZpbGVXcml0ZXJ9IGZyb20gJy4vd3JpdGluZy9pbl9wbGFjZV9maWxlX3dyaXRlcic7XG5pbXBvcnQge05ld0VudHJ5UG9pbnRGaWxlV3JpdGVyfSBmcm9tICcuL3dyaXRpbmcvbmV3X2VudHJ5X3BvaW50X2ZpbGVfd3JpdGVyJztcbmltcG9ydCB7UGFja2FnZUpzb25VcGRhdGVyfSBmcm9tICcuL3dyaXRpbmcvcGFja2FnZV9qc29uX3VwZGF0ZXInO1xuXG4vKipcbiAqIFRoZSBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgbmdjYyBjb21waWxlciBmb3Igc3luY2hyb25vdXMgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bmNOZ2NjT3B0aW9ucyB7XG4gIC8qKiBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgYG5vZGVfbW9kdWxlc2AgZm9sZGVyIHRoYXQgY29udGFpbnMgdGhlIHBhY2thZ2VzIHRvIHByb2Nlc3MuICovXG4gIGJhc2VQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBwcmltYXJ5IHBhY2thZ2UgdG8gYmUgcHJvY2Vzc2VkLiBJZiBub3QgYWJzb2x1dGUgdGhlbiBpdCBtdXN0IGJlIHJlbGF0aXZlIHRvXG4gICAqIGBiYXNlUGF0aGAuXG4gICAqXG4gICAqIEFsbCBpdHMgZGVwZW5kZW5jaWVzIHdpbGwgbmVlZCB0byBiZSBwcm9jZXNzZWQgdG9vLlxuICAgKlxuICAgKiBJZiB0aGlzIHByb3BlcnR5IGlzIHByb3ZpZGVkIHRoZW4gYGVycm9yT25GYWlsZWRFbnRyeVBvaW50YCBpcyBmb3JjZWQgdG8gdHJ1ZS5cbiAgICovXG4gIHRhcmdldEVudHJ5UG9pbnRQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGljaCBlbnRyeS1wb2ludCBwcm9wZXJ0aWVzIGluIHRoZSBwYWNrYWdlLmpzb24gdG8gY29uc2lkZXIgd2hlbiBwcm9jZXNzaW5nIGFuIGVudHJ5LXBvaW50LlxuICAgKiBFYWNoIHByb3BlcnR5IHNob3VsZCBob2xkIGEgcGF0aCB0byB0aGUgcGFydGljdWxhciBidW5kbGUgZm9ybWF0IGZvciB0aGUgZW50cnktcG9pbnQuXG4gICAqIERlZmF1bHRzIHRvIGFsbCB0aGUgcHJvcGVydGllcyBpbiB0aGUgcGFja2FnZS5qc29uLlxuICAgKi9cbiAgcHJvcGVydGllc1RvQ29uc2lkZXI/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwcm9jZXNzIGFsbCBmb3JtYXRzIHNwZWNpZmllZCBieSAoYHByb3BlcnRpZXNUb0NvbnNpZGVyYCkgIG9yIHRvIHN0b3AgcHJvY2Vzc2luZ1xuICAgKiB0aGlzIGVudHJ5LXBvaW50IGF0IHRoZSBmaXJzdCBtYXRjaGluZyBmb3JtYXQuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIGNvbXBpbGVBbGxGb3JtYXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBjcmVhdGUgbmV3IGVudHJ5LXBvaW50cyBidW5kbGVzIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIHRoZSBvcmlnaW5hbCBmaWxlcy5cbiAgICovXG4gIGNyZWF0ZU5ld0VudHJ5UG9pbnRGb3JtYXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGxvZ2dlciB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggbG9nIG1lc3NhZ2VzLlxuICAgKi9cbiAgbG9nZ2VyPzogTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBQYXRocyBtYXBwaW5nIGNvbmZpZ3VyYXRpb24gKGBwYXRoc2AgYW5kIGBiYXNlVXJsYCksIGFzIGZvdW5kIGluIGB0cy5Db21waWxlck9wdGlvbnNgLlxuICAgKiBUaGVzZSBhcmUgdXNlZCB0byByZXNvbHZlIHBhdGhzIHRvIGxvY2FsbHkgYnVpbHQgQW5ndWxhciBsaWJyYXJpZXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBgcGF0aE1hcHBpbmdzYCBzcGVjaWZpZWQgaGVyZSB0YWtlIHByZWNlZGVuY2Ugb3ZlciBhbnkgYHBhdGhNYXBwaW5nc2AgbG9hZGVkIGZyb20gYVxuICAgKiBUUyBjb25maWcgZmlsZS5cbiAgICovXG4gIHBhdGhNYXBwaW5ncz86IFBhdGhNYXBwaW5ncztcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGZpbGUtc3lzdGVtIHNlcnZpY2UgdGhhdCB3aWxsIGJlIHVzZWQgYnkgbmdjYyBmb3IgYWxsIGZpbGUgaW50ZXJhY3Rpb25zLlxuICAgKi9cbiAgZmlsZVN5c3RlbT86IEZpbGVTeXN0ZW07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbXBpbGF0aW9uIHNob3VsZCBydW4gYW5kIHJldHVybiBhc3luY2hyb25vdXNseS4gQWxsb3dpbmcgYXN5bmNocm9ub3VzIGV4ZWN1dGlvblxuICAgKiBtYXkgc3BlZWQgdXAgdGhlIGNvbXBpbGF0aW9uIGJ5IHV0aWxpemluZyBtdWx0aXBsZSBDUFUgY29yZXMgKGlmIGF2YWlsYWJsZSkuXG4gICAqXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAgKGkuZS4gcnVuIHN5bmNocm9ub3VzbHkpXG4gICAqL1xuICBhc3luYz86IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byB0ZXJtaW5hdGUgaW1tZWRpYXRlbHkgd2l0aCBhbiBlcnJvciBjb2RlIGlmIGFuIGVudHJ5LXBvaW50IGZhaWxzIHRvIGJlXG4gICAqIHByb2Nlc3NlZC5cbiAgICpcbiAgICogSWYgYHRhcmdldEVudHJ5UG9pbnRQYXRoYCBpcyBwcm92aWRlZCB0aGVuIHRoaXMgcHJvcGVydHkgaXMgYWx3YXlzIHRydWUgYW5kIGNhbm5vdCBiZVxuICAgKiBjaGFuZ2VkLiBPdGhlcndpc2UgdGhlIGRlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBuZ2NjIHdpbGwgY29udGludWUgdG8gcHJvY2VzcyBlbnRyeS1wb2ludHMgYWZ0ZXIgYSBmYWlsdXJlLiBJbiB3aGljaCBjYXNlIGl0XG4gICAqIHdpbGwgbG9nIGFuIGVycm9yIGFuZCByZXN1bWUgcHJvY2Vzc2luZyBvdGhlciBlbnRyeS1wb2ludHMuXG4gICAqL1xuICBlcnJvck9uRmFpbGVkRW50cnlQb2ludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlbmRlciBgJGxvY2FsaXplYCBtZXNzYWdlcyB3aXRoIGxlZ2FjeSBmb3JtYXQgaWRzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgdHJ1ZWAuIE9ubHkgc2V0IHRoaXMgdG8gYGZhbHNlYCBpZiB5b3UgZG8gbm90IHdhbnQgbGVnYWN5IG1lc3NhZ2UgaWRzIHRvXG4gICAqIGJlIHJlbmRlcmVkLiBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBub3QgdXNpbmcgbGVnYWN5IG1lc3NhZ2UgaWRzIGluIHlvdXIgdHJhbnNsYXRpb24gZmlsZXNcbiAgICogQU5EIGFyZSBub3QgZG9pbmcgY29tcGlsZS10aW1lIGlubGluaW5nIG9mIHRyYW5zbGF0aW9ucywgaW4gd2hpY2ggY2FzZSB0aGUgZXh0cmEgbWVzc2FnZSBpZHNcbiAgICogd291bGQgYWRkIHVud2FudGVkIHNpemUgdG8gdGhlIGZpbmFsIHNvdXJjZSBidW5kbGUuXG4gICAqXG4gICAqIEl0IGlzIHNhZmUgdG8gbGVhdmUgdGhpcyBzZXQgdG8gdHJ1ZSBpZiB5b3UgYXJlIGRvaW5nIGNvbXBpbGUtdGltZSBpbmxpbmluZyBiZWNhdXNlIHRoZSBleHRyYVxuICAgKiBsZWdhY3kgbWVzc2FnZSBpZHMgd2lsbCBhbGwgYmUgc3RyaXBwZWQgZHVyaW5nIHRyYW5zbGF0aW9uLlxuICAgKi9cbiAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW52YWxpZGF0ZSBhbnkgZW50cnktcG9pbnQgbWFuaWZlc3QgZmlsZSB0aGF0IGlzIG9uIGRpc2suIEluc3RlYWQsIHdhbGsgdGhlXG4gICAqIGRpcmVjdG9yeSB0cmVlIGxvb2tpbmcgZm9yIGVudHJ5LXBvaW50cywgYW5kIHRoZW4gd3JpdGUgYSBuZXcgZW50cnktcG9pbnQgbWFuaWZlc3QsIGlmXG4gICAqIHBvc3NpYmxlLlxuICAgKlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgIChpLmUuIHRoZSBtYW5pZmVzdCB3aWxsIGJlIHVzZWQgaWYgYXZhaWxhYmxlKVxuICAgKi9cbiAgaW52YWxpZGF0ZUVudHJ5UG9pbnRNYW5pZmVzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGFic29sdXRlIHBhdGggdG8gYSBUUyBjb25maWcgZmlsZSAoZS5nLiBgdHNjb25maWcuanNvbmApIG9yIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgb25lLCB0aGF0XG4gICAqIHdpbGwgYmUgdXNlZCB0byBjb25maWd1cmUgbW9kdWxlIHJlc29sdXRpb24gd2l0aCB0aGluZ3MgbGlrZSBwYXRoIG1hcHBpbmdzLCBpZiBub3Qgc3BlY2lmaWVkXG4gICAqIGV4cGxpY2l0bHkgdmlhIHRoZSBgcGF0aE1hcHBpbmdzYCBwcm9wZXJ0eSB0byBgbWFpbk5nY2NgLlxuICAgKlxuICAgKiBJZiBgdW5kZWZpbmVkYCwgbmdjYyB3aWxsIGF0dGVtcHQgdG8gbG9hZCBhIGB0c2NvbmZpZy5qc29uYCBmaWxlIGZyb20gdGhlIGRpcmVjdG9yeSBhYm92ZSB0aGVcbiAgICogYGJhc2VQYXRoYC5cbiAgICpcbiAgICogSWYgYG51bGxgLCBuZ2NjIHdpbGwgbm90IGF0dGVtcHQgdG8gbG9hZCBhbnkgVFMgY29uZmlnIGZpbGUgYXQgYWxsLlxuICAgKi9cbiAgdHNDb25maWdQYXRoPzogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgcHJvZ3JhbSBkZWZpbmVkIGluIHRoZSBsb2FkZWQgdHNjb25maWcuanNvbiAoaWYgYXZhaWxhYmxlIC0gc2VlXG4gICAqIGB0c0NvbmZpZ1BhdGhgIG9wdGlvbikgdG8gaWRlbnRpZnkgdGhlIGVudHJ5LXBvaW50cyB0aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQuXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIGB0cnVlYCB0aGVuIG9ubHkgdGhlIGVudHJ5LXBvaW50cyByZWFjaGFibGUgZnJvbSB0aGUgZ2l2ZW5cbiAgICogcHJvZ3JhbSAoYW5kIHRoZWlyIGRlcGVuZGVuY2llcykgd2lsbCBiZSBwcm9jZXNzZWQuXG4gICAqL1xuICBmaW5kRW50cnlQb2ludHNGcm9tVHNDb25maWdQcm9ncmFtPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIG5nY2MgY29tcGlsZXIgZm9yIGFzeW5jaHJvbm91cyBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEFzeW5jTmdjY09wdGlvbnMgPSBPbWl0PFN5bmNOZ2NjT3B0aW9ucywgJ2FzeW5jJz4me2FzeW5jOiB0cnVlfTtcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIG5nY2MgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCB0eXBlIE5nY2NPcHRpb25zID0gQXN5bmNOZ2NjT3B0aW9uc3xTeW5jTmdjY09wdGlvbnM7XG5cbmV4cG9ydCB0eXBlIE9wdGlvbmFsTmdjY09wdGlvbktleXMgPVxuICAgICd0YXJnZXRFbnRyeVBvaW50UGF0aCd8J3RzQ29uZmlnUGF0aCd8J3BhdGhNYXBwaW5ncyd8J2ZpbmRFbnRyeVBvaW50c0Zyb21Uc0NvbmZpZ1Byb2dyYW0nO1xuZXhwb3J0IHR5cGUgUmVxdWlyZWROZ2NjT3B0aW9ucyA9IFJlcXVpcmVkPE9taXQ8TmdjY09wdGlvbnMsIE9wdGlvbmFsTmdjY09wdGlvbktleXM+PjtcbmV4cG9ydCB0eXBlIE9wdGlvbmFsTmdjY09wdGlvbnMgPSBQaWNrPE5nY2NPcHRpb25zLCBPcHRpb25hbE5nY2NPcHRpb25LZXlzPjtcbmV4cG9ydCB0eXBlIFNoYXJlZFNldHVwID0ge1xuICBmaWxlU3lzdGVtOiBGaWxlU3lzdGVtOyBhYnNCYXNlUGF0aDogQWJzb2x1dGVGc1BhdGg7IHByb2plY3RQYXRoOiBBYnNvbHV0ZUZzUGF0aDtcbiAgdHNDb25maWc6IFBhcnNlZENvbmZpZ3VyYXRpb24gfCBudWxsO1xuICBnZXRGaWxlV3JpdGVyKHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIpOiBGaWxlV3JpdGVyO1xufTtcblxuLyoqXG4gKiBJbnN0YW50aWF0ZSBjb21tb24gdXRpbGl0aWVzIHRoYXQgYXJlIGFsd2F5cyB1c2VkIGFuZCBmaXggdXAgb3B0aW9ucyB3aXRoIGRlZmF1bHRzLCBhcyBuZWNlc3NhcnkuXG4gKlxuICogTk9URTogQXZvaWQgZWFnZXJseSBpbnN0YW50aWF0aW5nIGFueXRoaW5nIHRoYXQgbWlnaHQgbm90IGJlIHVzZWQgd2hlbiBydW5uaW5nIHN5bmMvYXN5bmMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFyZWRTZXR1cChvcHRpb25zOiBOZ2NjT3B0aW9ucyk6IFNoYXJlZFNldHVwJlJlcXVpcmVkTmdjY09wdGlvbnMmXG4gICAgT3B0aW9uYWxOZ2NjT3B0aW9ucyB7XG4gIGNvbnN0IGZpbGVTeXN0ZW0gPSBnZXRGaWxlU3lzdGVtKCk7XG4gIGNvbnN0IGFic0Jhc2VQYXRoID0gYWJzb2x1dGVGcm9tKG9wdGlvbnMuYmFzZVBhdGgpO1xuICBjb25zdCBwcm9qZWN0UGF0aCA9IGZpbGVTeXN0ZW0uZGlybmFtZShhYnNCYXNlUGF0aCk7XG4gIGNvbnN0IHRzQ29uZmlnID1cbiAgICAgIG9wdGlvbnMudHNDb25maWdQYXRoICE9PSBudWxsID8gZ2V0VHNDb25maWcob3B0aW9ucy50c0NvbmZpZ1BhdGggfHwgcHJvamVjdFBhdGgpIDogbnVsbDtcblxuICBsZXQge1xuICAgIGJhc2VQYXRoLFxuICAgIHRhcmdldEVudHJ5UG9pbnRQYXRoLFxuICAgIHByb3BlcnRpZXNUb0NvbnNpZGVyID0gU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTLFxuICAgIGNvbXBpbGVBbGxGb3JtYXRzID0gdHJ1ZSxcbiAgICBjcmVhdGVOZXdFbnRyeVBvaW50Rm9ybWF0cyA9IGZhbHNlLFxuICAgIGxvZ2dlciA9IG5ldyBDb25zb2xlTG9nZ2VyKExvZ0xldmVsLmluZm8pLFxuICAgIHBhdGhNYXBwaW5ncyA9IGdldFBhdGhNYXBwaW5nc0Zyb21Uc0NvbmZpZyhmaWxlU3lzdGVtLCB0c0NvbmZpZywgcHJvamVjdFBhdGgpLFxuICAgIGFzeW5jID0gZmFsc2UsXG4gICAgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQgPSBmYWxzZSxcbiAgICBlbmFibGVJMThuTGVnYWN5TWVzc2FnZUlkRm9ybWF0ID0gdHJ1ZSxcbiAgICBpbnZhbGlkYXRlRW50cnlQb2ludE1hbmlmZXN0ID0gZmFsc2UsXG4gICAgdHNDb25maWdQYXRoLFxuICB9ID0gb3B0aW9ucztcblxuICBpZiAoISF0YXJnZXRFbnRyeVBvaW50UGF0aCkge1xuICAgIC8vIHRhcmdldEVudHJ5UG9pbnRQYXRoIGZvcmNlcyB1cyB0byBlcnJvciBpZiBhbiBlbnRyeS1wb2ludCBmYWlscy5cbiAgICBlcnJvck9uRmFpbGVkRW50cnlQb2ludCA9IHRydWU7XG4gIH1cblxuICBjaGVja0ZvclNvbHV0aW9uU3R5bGVUc0NvbmZpZyhmaWxlU3lzdGVtLCBsb2dnZXIsIHByb2plY3RQYXRoLCBvcHRpb25zLnRzQ29uZmlnUGF0aCwgdHNDb25maWcpO1xuXG4gIHJldHVybiB7XG4gICAgYmFzZVBhdGgsXG4gICAgdGFyZ2V0RW50cnlQb2ludFBhdGgsXG4gICAgcHJvcGVydGllc1RvQ29uc2lkZXIsXG4gICAgY29tcGlsZUFsbEZvcm1hdHMsXG4gICAgY3JlYXRlTmV3RW50cnlQb2ludEZvcm1hdHMsXG4gICAgbG9nZ2VyLFxuICAgIHBhdGhNYXBwaW5ncyxcbiAgICBhc3luYyxcbiAgICBlcnJvck9uRmFpbGVkRW50cnlQb2ludCxcbiAgICBlbmFibGVJMThuTGVnYWN5TWVzc2FnZUlkRm9ybWF0LFxuICAgIGludmFsaWRhdGVFbnRyeVBvaW50TWFuaWZlc3QsXG4gICAgdHNDb25maWdQYXRoLFxuICAgIGZpbGVTeXN0ZW0sXG4gICAgYWJzQmFzZVBhdGgsXG4gICAgcHJvamVjdFBhdGgsXG4gICAgdHNDb25maWcsXG4gICAgZ2V0RmlsZVdyaXRlcjogKHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIpID0+IGNyZWF0ZU5ld0VudHJ5UG9pbnRGb3JtYXRzID9cbiAgICAgICAgbmV3IE5ld0VudHJ5UG9pbnRGaWxlV3JpdGVyKGZpbGVTeXN0ZW0sIGxvZ2dlciwgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQsIHBrZ0pzb25VcGRhdGVyKSA6XG4gICAgICAgIG5ldyBJblBsYWNlRmlsZVdyaXRlcihmaWxlU3lzdGVtLCBsb2dnZXIsIGVycm9yT25GYWlsZWRFbnRyeVBvaW50KSxcbiAgfTtcbn1cblxubGV0IHRzQ29uZmlnQ2FjaGU6IFBhcnNlZENvbmZpZ3VyYXRpb258bnVsbCA9IG51bGw7XG5sZXQgdHNDb25maWdQYXRoQ2FjaGU6IHN0cmluZ3xudWxsID0gbnVsbDtcblxuLyoqXG4gKiBHZXQgdGhlIHBhcnNlZCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGdpdmVuIGB0c0NvbmZpZ1BhdGhgLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjYWNoZSB0aGUgcHJldmlvdXMgcGFyc2VkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGF2b2lkIHVubmVjZXNzYXJ5IHByb2Nlc3NpbmdcbiAqIG9mIHRoZSB0c2NvbmZpZy5qc29uIGluIHRoZSBjYXNlIHRoYXQgaXQgaXMgcmVxdWVzdGVkIHJlcGVhdGVkbHkuXG4gKlxuICogVGhpcyBtYWtlcyB0aGUgYXNzdW1wdGlvbiwgd2hpY2ggaXMgdHJ1ZSBhcyBvZiB3cml0aW5nLCB0aGF0IHRoZSBjb250ZW50cyBvZiB0c2NvbmZpZy5qc29uIGFuZFxuICogaXRzIGRlcGVuZGVuY2llcyB3aWxsIG5vdCBjaGFuZ2UgZHVyaW5nIHRoZSBsaWZlIG9mIHRoZSBwcm9jZXNzIHJ1bm5pbmcgbmdjYy5cbiAqL1xuZnVuY3Rpb24gZ2V0VHNDb25maWcodHNDb25maWdQYXRoOiBzdHJpbmcpOiBQYXJzZWRDb25maWd1cmF0aW9ufG51bGwge1xuICBpZiAodHNDb25maWdQYXRoICE9PSB0c0NvbmZpZ1BhdGhDYWNoZSkge1xuICAgIHRzQ29uZmlnUGF0aENhY2hlID0gdHNDb25maWdQYXRoO1xuICAgIHRzQ29uZmlnQ2FjaGUgPSByZWFkQ29uZmlndXJhdGlvbih0c0NvbmZpZ1BhdGgpO1xuICB9XG4gIHJldHVybiB0c0NvbmZpZ0NhY2hlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJUc0NvbmZpZ0NhY2hlKCkge1xuICB0c0NvbmZpZ1BhdGhDYWNoZSA9IG51bGw7XG4gIHRzQ29uZmlnQ2FjaGUgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBjaGVja0ZvclNvbHV0aW9uU3R5bGVUc0NvbmZpZyhcbiAgICBmaWxlU3lzdGVtOiBQYXRoTWFuaXB1bGF0aW9uLCBsb2dnZXI6IExvZ2dlciwgcHJvamVjdFBhdGg6IEFic29sdXRlRnNQYXRoLFxuICAgIHRzQ29uZmlnUGF0aDogc3RyaW5nfG51bGx8dW5kZWZpbmVkLCB0c0NvbmZpZzogUGFyc2VkQ29uZmlndXJhdGlvbnxudWxsKTogdm9pZCB7XG4gIGlmICh0c0NvbmZpZ1BhdGggIT09IG51bGwgJiYgIXRzQ29uZmlnUGF0aCAmJiB0c0NvbmZpZyAhPT0gbnVsbCAmJlxuICAgICAgdHNDb25maWcucm9vdE5hbWVzLmxlbmd0aCA9PT0gMCAmJiB0c0NvbmZpZy5wcm9qZWN0UmVmZXJlbmNlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0c0NvbmZpZy5wcm9qZWN0UmVmZXJlbmNlcy5sZW5ndGggPiAwKSB7XG4gICAgbG9nZ2VyLndhcm4oXG4gICAgICAgIGBUaGUgaW5mZXJyZWQgdHNjb25maWcgZmlsZSBcIiR7dHNDb25maWcucHJvamVjdH1cIiBhcHBlYXJzIHRvIGJlIFwic29sdXRpb24tc3R5bGVcIiBgICtcbiAgICAgICAgYHNpbmNlIGl0IGNvbnRhaW5zIG5vIHJvb3QgZmlsZXMgYnV0IGRvZXMgY29udGFpbiBwcm9qZWN0IHJlZmVyZW5jZXMuXFxuYCArXG4gICAgICAgIGBUaGlzIGlzIHByb2JhYmx5IG5vdCB3YW50ZWQsIHNpbmNlIG5nY2MgaXMgdW5hYmxlIHRvIGluZmVyIHNldHRpbmdzIGxpa2UgXCJwYXRoc1wiIG1hcHBpbmdzIGZyb20gc3VjaCBhIGZpbGUuXFxuYCArXG4gICAgICAgIGBQZXJoYXBzIHlvdSBzaG91bGQgaGF2ZSBleHBsaWNpdGx5IHNwZWNpZmllZCBvbmUgb2YgdGhlIHJlZmVyZW5jZWQgcHJvamVjdHMgdXNpbmcgdGhlIC0tdHNjb25maWcgb3B0aW9uLiBGb3IgZXhhbXBsZTpcXG5cXG5gICtcbiAgICAgICAgdHNDb25maWcucHJvamVjdFJlZmVyZW5jZXMubWFwKHJlZiA9PiBgICBuZ2NjIC4uLiAtLXRzY29uZmlnIFwiJHtyZWYub3JpZ2luYWxQYXRofVwiXFxuYClcbiAgICAgICAgICAgIC5qb2luKCcnKSArXG4gICAgICAgIGBcXG5GaW5kIG91dCBtb3JlIGFib3V0IHNvbHV0aW9uLXN0eWxlIHRzY29uZmlnIGF0IGh0dHBzOi8vZGV2YmxvZ3MubWljcm9zb2Z0LmNvbS90eXBlc2NyaXB0L2Fubm91bmNpbmctdHlwZXNjcmlwdC0zLTkvI3NvbHV0aW9uLXN0eWxlLXRzY29uZmlnLlxcbmAgK1xuICAgICAgICBgSWYgeW91IGRpZCBpbnRlbmQgdG8gdXNlIHRoaXMgZmlsZSwgdGhlbiB5b3UgY2FuIGhpZGUgdGhpcyB3YXJuaW5nIGJ5IHByb3ZpZGluZyBpdCBleHBsaWNpdGx5OlxcblxcbmAgK1xuICAgICAgICBgICBuZ2NjIC4uLiAtLXRzY29uZmlnIFwiJHtmaWxlU3lzdGVtLnJlbGF0aXZlKHByb2plY3RQYXRoLCB0c0NvbmZpZy5wcm9qZWN0KX1cImApO1xuICB9XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygd29ya2VycyB0byB1c2UgZm9yIHBhcmFsbGVsIGV4ZWN1dGlvbi4gVGhpcyBjYW4gYmUgc2V0IHVzaW5nIHRoZVxuICogTkdDQ19NQVhfV09SS0VSUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgaXMgY29tcHV0ZWQgYmFzZWQgb24gdGhlIG51bWJlciBvZiBhdmFpbGFibGUgQ1BVcy4gT25lXG4gKiBDUFUgY29yZSBpcyBhbHdheXMgcmVzZXJ2ZWQgZm9yIHRoZSBtYXN0ZXIgcHJvY2Vzcywgc28gd2UgdGFrZSB0aGUgbnVtYmVyIG9mIENQVXMgbWludXMgb25lLCB3aXRoXG4gKiBhIG1heGltdW0gb2YgNCB3b3JrZXJzLiBXZSBkb24ndCBzY2FsZSB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgYmV5b25kIDQgYnkgZGVmYXVsdCwgYXMgaXQgdGFrZXNcbiAqIGNvbnNpZGVyYWJseSBtb3JlIG1lbW9yeSBhbmQgQ1BVIGN5Y2xlcyB3aGlsZSBub3Qgb2ZmZXJpbmcgYSBzdWJzdGFudGlhbCBpbXByb3ZlbWVudCBpbiB0aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF4TnVtYmVyT2ZXb3JrZXJzKCk6IG51bWJlciB7XG4gIGNvbnN0IG1heFdvcmtlcnMgPSBwcm9jZXNzLmVudi5OR0NDX01BWF9XT1JLRVJTO1xuICBpZiAobWF4V29ya2VycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gVXNlIHVwIHRvIDQgQ1BVIGNvcmVzIGZvciB3b3JrZXJzLCBhbHdheXMgcmVzZXJ2aW5nIG9uZSBmb3IgbWFzdGVyLlxuICAgIHJldHVybiBNYXRoLm1heCgxLCBNYXRoLm1pbig0LCBvcy5jcHVzKCkubGVuZ3RoIC0gMSkpO1xuICB9XG5cbiAgY29uc3QgbnVtZXJpY01heFdvcmtlcnMgPSArbWF4V29ya2Vycy50cmltKCk7XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihudW1lcmljTWF4V29ya2VycykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05HQ0NfTUFYX1dPUktFUlMgc2hvdWxkIGJlIGFuIGludGVnZXIuJyk7XG4gIH0gZWxzZSBpZiAobnVtZXJpY01heFdvcmtlcnMgPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOR0NDX01BWF9XT1JLRVJTIHNob3VsZCBiZSBhdCBsZWFzdCAxLicpO1xuICB9XG4gIHJldHVybiBudW1lcmljTWF4V29ya2Vycztcbn1cbiJdfQ==
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdjY19vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL25nY2Nfb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCx1QkFBeUI7SUFFekIsMkVBQXNIO0lBQ3RILG1FQUF3RTtJQUN4RSw2RUFBaUY7SUFFakYsbUZBQW1FO0lBQ25FLDhFQUEwRTtJQUUxRSxvR0FBaUU7SUFDakUsa0hBQThFO0lBd0o5RTs7OztPQUlHO0lBQ0gsU0FBZ0IsY0FBYyxDQUFDLE9BQW9CO1FBRWpELElBQU0sVUFBVSxHQUFHLDJCQUFhLEVBQUUsQ0FBQztRQUNuQyxJQUFNLFdBQVcsR0FBRywwQkFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQU0sUUFBUSxHQUNWLE9BQU8sQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRzFGLElBQUEsUUFBUSxHQWFOLE9BQU8sU0FiRCxFQUNSLG9CQUFvQixHQVlsQixPQUFPLHFCQVpXLEVBQ3BCLEtBV0UsT0FBTyxxQkFYeUMsRUFBbEQsb0JBQW9CLG1CQUFHLHlDQUEyQixLQUFBLEVBQ2xELEtBVUUsT0FBTyxZQVZVLEVBQW5CLFdBQVcsbUJBQUcsS0FBSyxLQUFBLEVBQ25CLEtBU0UsT0FBTyxrQkFUZSxFQUF4QixpQkFBaUIsbUJBQUcsSUFBSSxLQUFBLEVBQ3hCLEtBUUUsT0FBTywyQkFSeUIsRUFBbEMsMEJBQTBCLG1CQUFHLEtBQUssS0FBQSxFQUNsQyxLQU9FLE9BQU8sT0FQZ0MsRUFBekMs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d0U7Z0JBQ3hFLGlIQUErRztnQkFDL0csMkhBQTJIO2dCQUMzSCxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsNkJBQTBCLEdBQUcsQ0FBQyxZQUFZLFNBQUssRUFBL0MsQ0FBK0MsQ0FBQztxQkFDakYsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDYixrSkFBa0o7Z0JBQ2xKLG9HQUFvRztpQkFDcEcsNkJBQTBCLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBRyxDQUFBLENBQUMsQ0FBQztTQUN0RjtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFnQixxQkFBcUI7UUFDbkMsSUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoRCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsc0VBQXNFO1lBQ3RFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUMzRDthQUFNLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQWRELHNEQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5cbmltcG9ydCB7YWJzb2x1dGVGcm9tLCBBYnNvbHV0ZUZzUGF0aCwgRmlsZVN5c3RlbSwgZ2V0RmlsZVN5c3RlbSwgUGF0aE1hbmlwdWxhdGlvbn0gZnJvbSAnLi4vLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7Q29uc29sZUxvZ2dlciwgTG9nZ2VyLCBMb2dMZXZlbH0gZnJvbSAnLi4vLi4vc3JjL25ndHNjL2xvZ2dpbmcnO1xuaW1wb3J0IHtQYXJzZWRDb25maWd1cmF0aW9uLCByZWFkQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vLi4vc3JjL3BlcmZvcm1fY29tcGlsZSc7XG5cbmltcG9ydCB7U1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTfSBmcm9tICcuL3BhY2thZ2VzL2VudHJ5X3BvaW50JztcbmltcG9ydCB7Z2V0UGF0aE1hcHBpbmdzRnJvbVRzQ29uZmlnLCBQYXRoTWFwcGluZ3N9IGZyb20gJy4vcGF0aF9tYXBwaW5ncyc7XG5pbXBvcnQge0ZpbGVXcml0ZXJ9IGZyb20gJy4vd3JpdGluZy9maWxlX3dyaXRlcic7XG5pbXBvcnQge0luUGxhY2VGaWxlV3JpdGVyfSBmcm9tICcuL3dyaXRpbmcvaW5fcGxhY2VfZmlsZV93cml0ZXInO1xuaW1wb3J0IHtOZXdFbnRyeVBvaW50RmlsZVdyaXRlcn0gZnJvbSAnLi93cml0aW5nL25ld19lbnRyeV9wb2ludF9maWxlX3dyaXRlcic7XG5pbXBvcnQge1BhY2thZ2VKc29uVXBkYXRlcn0gZnJvbSAnLi93cml0aW5nL3BhY2thZ2VfanNvbl91cGRhdGVyJztcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIG5nY2MgY29tcGlsZXIgZm9yIHN5bmNocm9ub3VzIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW5jTmdjY09wdGlvbnMge1xuICAvKiogVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGBub2RlX21vZHVsZXNgIGZvbGRlciB0aGF0IGNvbnRhaW5zIHRoZSBwYWNrYWdlcyB0byBwcm9jZXNzLiAqL1xuICBiYXNlUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgcHJpbWFyeSBwYWNrYWdlIHRvIGJlIHByb2Nlc3NlZC4gSWYgbm90IGFic29sdXRlIHRoZW4gaXQgbXVzdCBiZSByZWxhdGl2ZSB0b1xuICAgKiBgYmFzZVBhdGhgLlxuICAgKlxuICAgKiBBbGwgaXRzIGRlcGVuZGVuY2llcyB3aWxsIG5lZWQgdG8gYmUgcHJvY2Vzc2VkIHRvby5cbiAgICpcbiAgICogSWYgdGhpcyBwcm9wZXJ0eSBpcyBwcm92aWRlZCB0aGVuIGBlcnJvck9uRmFpbGVkRW50cnlQb2ludGAgaXMgZm9yY2VkIHRvIHRydWUuXG4gICAqL1xuICB0YXJnZXRFbnRyeVBvaW50UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hpY2ggZW50cnktcG9pbnQgcHJvcGVydGllcyBpbiB0aGUgcGFja2FnZS5qc29uIHRvIGNvbnNpZGVyIHdoZW4gcHJvY2Vzc2luZyBhbiBlbnRyeS1wb2ludC5cbiAgICogRWFjaCBwcm9wZXJ0eSBzaG91bGQgaG9sZCBhIHBhdGggdG8gdGhlIHBhcnRpY3VsYXIgYnVuZGxlIGZvcm1hdCBmb3IgdGhlIGVudHJ5LXBvaW50LlxuICAgKiBEZWZhdWx0cyB0byBhbGwgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHBhY2thZ2UuanNvbi5cbiAgICovXG4gIHByb3BlcnRpZXNUb0NvbnNpZGVyPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gb25seSBwcm9jZXNzIHRoZSB0eXBpbmdzIGZpbGVzIGZvciB0aGlzIGVudHJ5LXBvaW50LlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJ1bm5pbmcgbmdjYyBvbmx5IHRvIHByb3ZpZGUgdHlwaW5ncyBmaWxlcyB0byBkb3duc3RyZWFtIHRvb2xpbmcgc3VjaCBhc1xuICAgKiB0aGUgQW5ndWxhciBMYW5ndWFnZSBTZXJ2aWNlIG9yIG5nLXBhY2thZ3IuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIGB0cnVlYCB0aGVuIGBjb21waWxlQWxsRm9ybWF0c2AgaXMgZm9yY2VkIHRvIGBmYWxzZWAuXG4gICAqL1xuICB0eXBpbmdzT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJvY2VzcyBhbGwgZm9ybWF0cyBzcGVjaWZpZWQgYnkgKGBwcm9wZXJ0aWVzVG9Db25zaWRlcmApICBvciB0byBzdG9wIHByb2Nlc3NpbmdcbiAgICogdGhpcyBlbnRyeS1wb2ludCBhdCB0aGUgZmlyc3QgbWF0Y2hpbmcgZm9ybWF0LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAsIGJ1dCBpcyBmb3JjZWQgdG8gYGZhbHNlYCBpZiBgdHlwaW5nc09ubHlgIGlzIGB0cnVlYC5cbiAgICovXG4gIGNvbXBpbGVBbGxGb3JtYXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBjcmVhdGUgbmV3IGVudHJ5LXBvaW50cyBidW5kbGVzIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIHRoZSBvcmlnaW5hbCBmaWxlcy5cbiAgICovXG4gIGNyZWF0ZU5ld0VudHJ5UG9pbnRGb3JtYXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGxvZ2dlciB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggbG9nIG1lc3NhZ2VzLlxuICAgKi9cbiAgbG9nZ2VyPzogTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBQYXRocyBtYXBwaW5nIGNvbmZpZ3VyYXRpb24gKGBwYXRoc2AgYW5kIGBiYXNlVXJsYCksIGFzIGZvdW5kIGluIGB0cy5Db21waWxlck9wdGlvbnNgLlxuICAgKiBUaGVzZSBhcmUgdXNlZCB0byByZXNvbHZlIHBhdGhzIHRvIGxvY2FsbHkgYnVpbHQgQW5ndWxhciBsaWJyYXJpZXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBgcGF0aE1hcHBpbmdzYCBzcGVjaWZpZWQgaGVyZSB0YWtlIHByZWNlZGVuY2Ugb3ZlciBhbnkgYHBhdGhNYXBwaW5nc2AgbG9hZGVkIGZyb20gYVxuICAgKiBUUyBjb25maWcgZmlsZS5cbiAgICovXG4gIHBhdGhNYXBwaW5ncz86IFBhdGhNYXBwaW5ncztcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGZpbGUtc3lzdGVtIHNlcnZpY2UgdGhhdCB3aWxsIGJlIHVzZWQgYnkgbmdjYyBmb3IgYWxsIGZpbGUgaW50ZXJhY3Rpb25zLlxuICAgKi9cbiAgZmlsZVN5c3RlbT86IEZpbGVTeXN0ZW07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbXBpbGF0aW9uIHNob3VsZCBydW4gYW5kIHJldHVybiBhc3luY2hyb25vdXNseS4gQWxsb3dpbmcgYXN5bmNocm9ub3VzIGV4ZWN1dGlvblxuICAgKiBtYXkgc3BlZWQgdXAgdGhlIGNvbXBpbGF0aW9uIGJ5IHV0aWxpemluZyBtdWx0aXBsZSBDUFUgY29yZXMgKGlmIGF2YWlsYWJsZSkuXG4gICAqXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAgKGkuZS4gcnVuIHN5bmNocm9ub3VzbHkpXG4gICAqL1xuICBhc3luYz86IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byB0ZXJtaW5hdGUgaW1tZWRpYXRlbHkgd2l0aCBhbiBlcnJvciBjb2RlIGlmIGFuIGVudHJ5LXBvaW50IGZhaWxzIHRvIGJlXG4gICAqIHByb2Nlc3NlZC5cbiAgICpcbiAgICogSWYgYHRhcmdldEVudHJ5UG9pbnRQYXRoYCBpcyBwcm92aWRlZCB0aGVuIHRoaXMgcHJvcGVydHkgaXMgYWx3YXlzIHRydWUgYW5kIGNhbm5vdCBiZVxuICAgKiBjaGFuZ2VkLiBPdGhlcndpc2UgdGhlIGRlZmF1bHQgaXMgZmFsc2UuXG4gICAqXG4gICAqIFdoZW4gc2V0IHRvIGZhbHNlLCBuZ2NjIHdpbGwgY29udGludWUgdG8gcHJvY2VzcyBlbnRyeS1wb2ludHMgYWZ0ZXIgYSBmYWlsdXJlLiBJbiB3aGljaCBjYXNlIGl0XG4gICAqIHdpbGwgbG9nIGFuIGVycm9yIGFuZCByZXN1bWUgcHJvY2Vzc2luZyBvdGhlciBlbnRyeS1wb2ludHMuXG4gICAqL1xuICBlcnJvck9uRmFpbGVkRW50cnlQb2ludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlbmRlciBgJGxvY2FsaXplYCBtZXNzYWdlcyB3aXRoIGxlZ2FjeSBmb3JtYXQgaWRzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgdHJ1ZWAuIE9ubHkgc2V0IHRoaXMgdG8gYGZhbHNlYCBpZiB5b3UgZG8gbm90IHdhbnQgbGVnYWN5IG1lc3NhZ2UgaWRzIHRvXG4gICAqIGJlIHJlbmRlcmVkLiBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBub3QgdXNpbmcgbGVnYWN5IG1lc3NhZ2UgaWRzIGluIHlvdXIgdHJhbnNsYXRpb24gZmlsZXNcbiAgICogQU5EIGFyZSBub3QgZG9pbmcgY29tcGlsZS10aW1lIGlubGluaW5nIG9mIHRyYW5zbGF0aW9ucywgaW4gd2hpY2ggY2FzZSB0aGUgZXh0cmEgbWVzc2FnZSBpZHNcbiAgICogd291bGQgYWRkIHVud2FudGVkIHNpemUgdG8gdGhlIGZpbmFsIHNvdXJjZSBidW5kbGUuXG4gICAqXG4gICAqIEl0IGlzIHNhZmUgdG8gbGVhdmUgdGhpcyBzZXQgdG8gdHJ1ZSBpZiB5b3UgYXJlIGRvaW5nIGNvbXBpbGUtdGltZSBpbmxpbmluZyBiZWNhdXNlIHRoZSBleHRyYVxuICAgKiBsZWdhY3kgbWVzc2FnZSBpZHMgd2lsbCBhbGwgYmUgc3RyaXBwZWQgZHVyaW5nIHRyYW5zbGF0aW9uLlxuICAgKi9cbiAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW52YWxpZGF0ZSBhbnkgZW50cnktcG9pbnQgbWFuaWZlc3QgZmlsZSB0aGF0IGlzIG9uIGRpc2suIEluc3RlYWQsIHdhbGsgdGhlXG4gICAqIGRpcmVjdG9yeSB0cmVlIGxvb2tpbmcgZm9yIGVudHJ5LXBvaW50cywgYW5kIHRoZW4gd3JpdGUgYSBuZXcgZW50cnktcG9pbnQgbWFuaWZlc3QsIGlmXG4gICAqIHBvc3NpYmxlLlxuICAgKlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgIChpLmUuIHRoZSBtYW5pZmVzdCB3aWxsIGJlIHVzZWQgaWYgYXZhaWxhYmxlKVxuICAgKi9cbiAgaW52YWxpZGF0ZUVudHJ5UG9pbnRNYW5pZmVzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGFic29sdXRlIHBhdGggdG8gYSBUUyBjb25maWcgZmlsZSAoZS5nLiBgdHNjb25maWcuanNvbmApIG9yIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgb25lLCB0aGF0XG4gICAqIHdpbGwgYmUgdXNlZCB0byBjb25maWd1cmUgbW9kdWxlIHJlc29sdXRpb24gd2l0aCB0aGluZ3MgbGlrZSBwYXRoIG1hcHBpbmdzLCBpZiBub3Qgc3BlY2lmaWVkXG4gICAqIGV4cGxpY2l0bHkgdmlhIHRoZSBgcGF0aE1hcHBpbmdzYCBwcm9wZXJ0eSB0byBgbWFpbk5nY2NgLlxuICAgKlxuICAgKiBJZiBgdW5kZWZpbmVkYCwgbmdjYyB3aWxsIGF0dGVtcHQgdG8gbG9hZCBhIGB0c2NvbmZpZy5qc29uYCBmaWxlIGZyb20gdGhlIGRpcmVjdG9yeSBhYm92ZSB0aGVcbiAgICogYGJhc2VQYXRoYC5cbiAgICpcbiAgICogSWYgYG51bGxgLCBuZ2NjIHdpbGwgbm90IGF0dGVtcHQgdG8gbG9hZCBhbnkgVFMgY29uZmlnIGZpbGUgYXQgYWxsLlxuICAgKi9cbiAgdHNDb25maWdQYXRoPzogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgcHJvZ3JhbSBkZWZpbmVkIGluIHRoZSBsb2FkZWQgdHNjb25maWcuanNvbiAoaWYgYXZhaWxhYmxlIC0gc2VlXG4gICAqIGB0c0NvbmZpZ1BhdGhgIG9wdGlvbikgdG8gaWRlbnRpZnkgdGhlIGVudHJ5LXBvaW50cyB0aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQuXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIGB0cnVlYCB0aGVuIG9ubHkgdGhlIGVudHJ5LXBvaW50cyByZWFjaGFibGUgZnJvbSB0aGUgZ2l2ZW5cbiAgICogcHJvZ3JhbSAoYW5kIHRoZWlyIGRlcGVuZGVuY2llcykgd2lsbCBiZSBwcm9jZXNzZWQuXG4gICAqL1xuICBmaW5kRW50cnlQb2ludHNGcm9tVHNDb25maWdQcm9ncmFtPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIG5nY2MgY29tcGlsZXIgZm9yIGFzeW5jaHJvbm91cyBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEFzeW5jTmdjY09wdGlvbnMgPSBPbWl0PFN5bmNOZ2NjT3B0aW9ucywgJ2FzeW5jJz4me2FzeW5jOiB0cnVlfTtcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIG5nY2MgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCB0eXBlIE5nY2NPcHRpb25zID0gQXN5bmNOZ2NjT3B0aW9uc3xTeW5jTmdjY09wdGlvbnM7XG5cbmV4cG9ydCB0eXBlIE9wdGlvbmFsTmdjY09wdGlvbktleXMgPVxuICAgICd0YXJnZXRFbnRyeVBvaW50UGF0aCd8J3RzQ29uZmlnUGF0aCd8J3BhdGhNYXBwaW5ncyd8J2ZpbmRFbnRyeVBvaW50c0Zyb21Uc0NvbmZpZ1Byb2dyYW0nO1xuZXhwb3J0IHR5cGUgUmVxdWlyZWROZ2NjT3B0aW9ucyA9IFJlcXVpcmVkPE9taXQ8TmdjY09wdGlvbnMsIE9wdGlvbmFsTmdjY09wdGlvbktleXM+PjtcbmV4cG9ydCB0eXBlIE9wdGlvbmFsTmdjY09wdGlvbnMgPSBQaWNrPE5nY2NPcHRpb25zLCBPcHRpb25hbE5nY2NPcHRpb25LZXlzPjtcbmV4cG9ydCB0eXBlIFNoYXJlZFNldHVwID0ge1xuICBmaWxlU3lzdGVtOiBGaWxlU3lzdGVtOyBhYnNCYXNlUGF0aDogQWJzb2x1dGVGc1BhdGg7IHByb2plY3RQYXRoOiBBYnNvbHV0ZUZzUGF0aDtcbiAgdHNDb25maWc6IFBhcnNlZENvbmZpZ3VyYXRpb24gfCBudWxsO1xuICBnZXRGaWxlV3JpdGVyKHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIpOiBGaWxlV3JpdGVyO1xufTtcblxuLyoqXG4gKiBJbnN0YW50aWF0ZSBjb21tb24gdXRpbGl0aWVzIHRoYXQgYXJlIGFsd2F5cyB1c2VkIGFuZCBmaXggdXAgb3B0aW9ucyB3aXRoIGRlZmF1bHRzLCBhcyBuZWNlc3NhcnkuXG4gKlxuICogTk9URTogQXZvaWQgZWFnZXJseSBpbnN0YW50aWF0aW5nIGFueXRoaW5nIHRoYXQgbWlnaHQgbm90IGJlIHVzZWQgd2hlbiBydW5uaW5nIHN5bmMvYXN5bmMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFyZWRTZXR1cChvcHRpb25zOiBOZ2NjT3B0aW9ucyk6IFNoYXJlZFNldHVwJlJlcXVpcmVkTmdjY09wdGlvbnMmXG4gICAgT3B0aW9uYWxOZ2NjT3B0aW9ucyB7XG4gIGNvbnN0IGZpbGVTeXN0ZW0gPSBnZXRGaWxlU3lzdGVtKCk7XG4gIGNvbnN0IGFic0Jhc2VQYXRoID0gYWJzb2x1dGVGcm9tKG9wdGlvbnMuYmFzZVBhdGgpO1xuICBjb25zdCBwcm9qZWN0UGF0aCA9IGZpbGVTeXN0ZW0uZGlybmFtZShhYnNCYXNlUGF0aCk7XG4gIGNvbnN0IHRzQ29uZmlnID1cbiAgICAgIG9wdGlvbnMudHNDb25maWdQYXRoICE9PSBudWxsID8gZ2V0VHNDb25maWcob3B0aW9ucy50c0NvbmZpZ1BhdGggfHwgcHJvamVjdFBhdGgpIDogbnVsbDtcblxuICBsZXQge1xuICAgIGJhc2VQYXRoLFxuICAgIHRhcmdldEVudHJ5UG9pbnRQYXRoLFxuICAgIHByb3BlcnRpZXNUb0NvbnNpZGVyID0gU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTLFxuICAgIHR5cGluZ3NPbmx5ID0gZmFsc2UsXG4gICAgY29tcGlsZUFsbEZvcm1hdHMgPSB0cnVlLFxuICAgIGNyZWF0ZU5ld0VudHJ5UG9pbnRGb3JtYXRzID0gZmFsc2UsXG4gICAgbG9nZ2VyID0gbmV3IENvbnNvbGVMb2dnZXIoTG9nTGV2ZWwuaW5mbyksXG4gICAgcGF0aE1hcHBpbmdzID0gZ2V0UGF0aE1hcHBpbmdzRnJvbVRzQ29uZmlnKGZpbGVTeXN0ZW0sIHRzQ29uZmlnLCBwcm9qZWN0UGF0aCksXG4gICAgYXN5bmMgPSBmYWxzZSxcbiAgICBlcnJvck9uRmFpbGVkRW50cnlQb2ludCA9IGZhbHNlLFxuICAgIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQgPSB0cnVlLFxuICAgIGludmFsaWRhdGVFbnRyeVBvaW50TWFuaWZlc3QgPSBmYWxzZSxcbiAgICB0c0NvbmZpZ1BhdGgsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGlmICghIXRhcmdldEVudHJ5UG9pbnRQYXRoKSB7XG4gICAgLy8gdGFyZ2V0RW50cnlQb2ludFBhdGggZm9yY2VzIHVzIHRvIGVycm9yIGlmIGFuIGVudHJ5LXBvaW50IGZhaWxzLlxuICAgIGVycm9yT25GYWlsZWRFbnRyeVBvaW50ID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBpbmdzT25seSkge1xuICAgIC8vIElmIHdlIG9ubHkgd2FudCB0byBwcm9jZXNzIHRoZSB0eXBpbmdzIHRoZW4gd2UgZG8gbm90IHdhbnQgdG8gd2FzdGUgdGltZSB0cnlpbmcgdG8gcHJvY2Vzc1xuICAgIC8vIG11bHRpcGxlIEpTIGZvcm1hdHMuXG4gICAgY29tcGlsZUFsbEZvcm1hdHMgPSBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrRm9yU29sdXRpb25TdHlsZVRzQ29uZmlnKGZpbGVTeXN0ZW0sIGxvZ2dlciwgcHJvamVjdFBhdGgsIG9wdGlvbnMudHNDb25maWdQYXRoLCB0c0NvbmZpZyk7XG5cbiAgcmV0dXJuIHtcbiAgICBiYXNlUGF0aCxcbiAgICB0YXJnZXRFbnRyeVBvaW50UGF0aCxcbiAgICBwcm9wZXJ0aWVzVG9Db25zaWRlcixcbiAgICB0eXBpbmdzT25seSxcbiAgICBjb21waWxlQWxsRm9ybWF0cyxcbiAgICBjcmVhdGVOZXdFbnRyeVBvaW50Rm9ybWF0cyxcbiAgICBsb2dnZXIsXG4gICAgcGF0aE1hcHBpbmdzLFxuICAgIGFzeW5jLFxuICAgIGVycm9yT25GYWlsZWRFbnRyeVBvaW50LFxuICAgIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQsXG4gICAgaW52YWxpZGF0ZUVudHJ5UG9pbnRNYW5pZmVzdCxcbiAgICB0c0NvbmZpZ1BhdGgsXG4gICAgZmlsZVN5c3RlbSxcbiAgICBhYnNCYXNlUGF0aCxcbiAgICBwcm9qZWN0UGF0aCxcbiAgICB0c0NvbmZpZyxcbiAgICBnZXRGaWxlV3JpdGVyOiAocGtnSnNvblVwZGF0ZXI6IFBhY2thZ2VKc29uVXBkYXRlcikgPT4gY3JlYXRlTmV3RW50cnlQb2ludEZvcm1hdHMgP1xuICAgICAgICBuZXcgTmV3RW50cnlQb2ludEZpbGVXcml0ZXIoZmlsZVN5c3RlbSwgbG9nZ2VyLCBlcnJvck9uRmFpbGVkRW50cnlQb2ludCwgcGtnSnNvblVwZGF0ZXIpIDpcbiAgICAgICAgbmV3IEluUGxhY2VGaWxlV3JpdGVyKGZpbGVTeXN0ZW0sIGxvZ2dlciwgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQpLFxuICB9O1xufVxuXG5sZXQgdHNDb25maWdDYWNoZTogUGFyc2VkQ29uZmlndXJhdGlvbnxudWxsID0gbnVsbDtcbmxldCB0c0NvbmZpZ1BhdGhDYWNoZTogc3RyaW5nfG51bGwgPSBudWxsO1xuXG4vKipcbiAqIEdldCB0aGUgcGFyc2VkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYHRzQ29uZmlnUGF0aGAuXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGNhY2hlIHRoZSBwcmV2aW91cyBwYXJzZWQgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcHJvY2Vzc2luZ1xuICogb2YgdGhlIHRzY29uZmlnLmpzb24gaW4gdGhlIGNhc2UgdGhhdCBpdCBpcyByZXF1ZXN0ZWQgcmVwZWF0ZWRseS5cbiAqXG4gKiBUaGlzIG1ha2VzIHRoZSBhc3N1bXB0aW9uLCB3aGljaCBpcyB0cnVlIGFzIG9mIHdyaXRpbmcsIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRzY29uZmlnLmpzb24gYW5kXG4gKiBpdHMgZGVwZW5kZW5jaWVzIHdpbGwgbm90IGNoYW5nZSBkdXJpbmcgdGhlIGxpZmUgb2YgdGhlIHByb2Nlc3MgcnVubmluZyBuZ2NjLlxuICovXG5mdW5jdGlvbiBnZXRUc0NvbmZpZyh0c0NvbmZpZ1BhdGg6IHN0cmluZyk6IFBhcnNlZENvbmZpZ3VyYXRpb258bnVsbCB7XG4gIGlmICh0c0NvbmZpZ1BhdGggIT09IHRzQ29uZmlnUGF0aENhY2hlKSB7XG4gICAgdHNDb25maWdQYXRoQ2FjaGUgPSB0c0NvbmZpZ1BhdGg7XG4gICAgdHNDb25maWdDYWNoZSA9IHJlYWRDb25maWd1cmF0aW9uKHRzQ29uZmlnUGF0aCk7XG4gIH1cbiAgcmV0dXJuIHRzQ29uZmlnQ2FjaGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclRzQ29uZmlnQ2FjaGUoKSB7XG4gIHRzQ29uZmlnUGF0aENhY2hlID0gbnVsbDtcbiAgdHNDb25maWdDYWNoZSA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yU29sdXRpb25TdHlsZVRzQ29uZmlnKFxuICAgIGZpbGVTeXN0ZW06IFBhdGhNYW5pcHVsYXRpb24sIGxvZ2dlcjogTG9nZ2VyLCBwcm9qZWN0UGF0aDogQWJzb2x1dGVGc1BhdGgsXG4gICAgdHNDb25maWdQYXRoOiBzdHJpbmd8bnVsbHx1bmRlZmluZWQsIHRzQ29uZmlnOiBQYXJzZWRDb25maWd1cmF0aW9ufG51bGwpOiB2b2lkIHtcbiAgaWYgKHRzQ29uZmlnUGF0aCAhPT0gbnVsbCAmJiAhdHNDb25maWdQYXRoICYmIHRzQ29uZmlnICE9PSBudWxsICYmXG4gICAgICB0c0NvbmZpZy5yb290TmFtZXMubGVuZ3RoID09PSAwICYmIHRzQ29uZmlnLnByb2plY3RSZWZlcmVuY2VzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRzQ29uZmlnLnByb2plY3RSZWZlcmVuY2VzLmxlbmd0aCA+IDApIHtcbiAgICBsb2dnZXIud2FybihcbiAgICAgICAgYFRoZSBpbmZlcnJlZCB0c2NvbmZpZyBmaWxlIFwiJHt0c0NvbmZpZy5wcm9qZWN0fVwiIGFwcGVhcnMgdG8gYmUgXCJzb2x1dGlvbi1zdHlsZVwiIGAgK1xuICAgICAgICBgc2luY2UgaXQgY29udGFpbnMgbm8gcm9vdCBmaWxlcyBidXQgZG9lcyBjb250YWluIHByb2plY3QgcmVmZXJlbmNlcy5cXG5gICtcbiAgICAgICAgYFRoaXMgaXMgcHJvYmFibHkgbm90IHdhbnRlZCwgc2luY2UgbmdjYyBpcyB1bmFibGUgdG8gaW5mZXIgc2V0dGluZ3MgbGlrZSBcInBhdGhzXCIgbWFwcGluZ3MgZnJvbSBzdWNoIGEgZmlsZS5cXG5gICtcbiAgICAgICAgYFBlcmhhcHMgeW91IHNob3VsZCBoYXZlIGV4cGxpY2l0bHkgc3BlY2lmaWVkIG9uZSBvZiB0aGUgcmVmZXJlbmNlZCBwcm9qZWN0cyB1c2luZyB0aGUgLS10c2NvbmZpZyBvcHRpb24uIEZvciBleGFtcGxlOlxcblxcbmAgK1xuICAgICAgICB0c0NvbmZpZy5wcm9qZWN0UmVmZXJlbmNlcy5tYXAocmVmID0+IGAgIG5nY2MgLi4uIC0tdHNjb25maWcgXCIke3JlZi5vcmlnaW5hbFBhdGh9XCJcXG5gKVxuICAgICAgICAgICAgLmpvaW4oJycpICtcbiAgICAgICAgYFxcbkZpbmQgb3V0IG1vcmUgYWJvdXQgc29sdXRpb24tc3R5bGUgdHNjb25maWcgYXQgaHR0cHM6Ly9kZXZibG9ncy5taWNyb3NvZnQuY29tL3R5cGVzY3JpcHQvYW5ub3VuY2luZy10eXBlc2NyaXB0LTMtOS8jc29sdXRpb24tc3R5bGUtdHNjb25maWcuXFxuYCArXG4gICAgICAgIGBJZiB5b3UgZGlkIGludGVuZCB0byB1c2UgdGhpcyBmaWxlLCB0aGVuIHlvdSBjYW4gaGlkZSB0aGlzIHdhcm5pbmcgYnkgcHJvdmlkaW5nIGl0IGV4cGxpY2l0bHk6XFxuXFxuYCArXG4gICAgICAgIGAgIG5nY2MgLi4uIC0tdHNjb25maWcgXCIke2ZpbGVTeXN0ZW0ucmVsYXRpdmUocHJvamVjdFBhdGgsIHRzQ29uZmlnLnByb2plY3QpfVwiYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB3b3JrZXJzIHRvIHVzZSBmb3IgcGFyYWxsZWwgZXhlY3V0aW9uLiBUaGlzIGNhbiBiZSBzZXQgdXNpbmcgdGhlXG4gKiBOR0NDX01BWF9XT1JLRVJTIGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBpcyBjb21wdXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBDUFVzLiBPbmVcbiAqIENQVSBjb3JlIGlzIGFsd2F5cyByZXNlcnZlZCBmb3IgdGhlIG1hc3RlciBwcm9jZXNzLCBzbyB3ZSB0YWtlIHRoZSBudW1iZXIgb2YgQ1BVcyBtaW51cyBvbmUsIHdpdGhcbiAqIGEgbWF4aW11bSBvZiA0IHdvcmtlcnMuIFdlIGRvbid0IHNjYWxlIHRoZSBudW1iZXIgb2Ygd29ya2VycyBiZXlvbmQgNCBieSBkZWZhdWx0LCBhcyBpdCB0YWtlc1xuICogY29uc2lkZXJhYmx5IG1vcmUgbWVtb3J5IGFuZCBDUFUgY3ljbGVzIHdoaWxlIG5vdCBvZmZlcmluZyBhIHN1YnN0YW50aWFsIGltcHJvdmVtZW50IGluIHRpbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXhOdW1iZXJPZldvcmtlcnMoKTogbnVtYmVyIHtcbiAgY29uc3QgbWF4V29ya2VycyA9IHByb2Nlc3MuZW52Lk5HQ0NfTUFYX1dPUktFUlM7XG4gIGlmIChtYXhXb3JrZXJzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBVc2UgdXAgdG8gNCBDUFUgY29yZXMgZm9yIHdvcmtlcnMsIGFsd2F5cyByZXNlcnZpbmcgb25lIGZvciBtYXN0ZXIuXG4gICAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGgubWluKDQsIG9zLmNwdXMoKS5sZW5ndGggLSAxKSk7XG4gIH1cblxuICBjb25zdCBudW1lcmljTWF4V29ya2VycyA9ICttYXhXb3JrZXJzLnRyaW0oKTtcbiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG51bWVyaWNNYXhXb3JrZXJzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTkdDQ19NQVhfV09SS0VSUyBzaG91bGQgYmUgYW4gaW50ZWdlci4nKTtcbiAgfSBlbHNlIGlmIChudW1lcmljTWF4V29ya2VycyA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05HQ0NfTUFYX1dPUktFUlMgc2hvdWxkIGJlIGF0IGxlYXN0IDEuJyk7XG4gIH1cbiAgcmV0dXJuIG51bWVyaWNNYXhXb3JrZXJzO1xufVxuIl19
@@ -9,7 +9,7 @@
9
9
  import { AbsoluteFsPath } from '../../../src/ngtsc/file_system';
10
10
  import { PackageJsonUpdater } from '../writing/package_json_updater';
11
11
  import { EntryPointPackageJson, PackageJsonFormatProperties } from './entry_point';
12
- export declare const NGCC_VERSION = "11.2.2";
12
+ export declare const NGCC_VERSION = "11.2.6";
13
13
  /**
14
14
  * Returns true if there is a format in this entry-point that was compiled with an outdated version
15
15
  * of ngcc.
@@ -12,7 +12,7 @@
12
12
  exports.markAsProcessed = exports.hasBeenProcessed = exports.cleanPackageJson = exports.needsCleaning = exports.NGCC_VERSION = void 0;
13
13
  var tslib_1 = require("tslib");
14
14
  var new_entry_point_file_writer_1 = require("@angular/compiler-cli/ngcc/src/writing/new_entry_point_file_writer");
15
- exports.NGCC_VERSION = '11.2.2';
15
+ exports.NGCC_VERSION = '11.2.6';
16
16
  /**
17
17
  * Returns true if there is a format in this entry-point that was compiled with an outdated version
18
18
  * of ngcc.
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import * as ts from 'typescript';
10
10
  import { AbsoluteFsPath, FileSystem } from '../../../src/ngtsc/file_system';
11
+ import { DtsProcessing } from '../execution/tasks/api';
11
12
  import { PathMappings } from '../path_mappings';
12
13
  import { BundleProgram } from './bundle_program';
13
14
  import { EntryPoint, EntryPointFormat } from './entry_point';
@@ -24,6 +25,7 @@ export interface EntryPointBundle {
24
25
  rootDirs: AbsoluteFsPath[];
25
26
  src: BundleProgram;
26
27
  dts: BundleProgram | null;
28
+ dtsProcessing: DtsProcessing;
27
29
  enableI18nLegacyMessageIdFormat: boolean;
28
30
  }
29
31
  /**
@@ -35,11 +37,11 @@ export interface EntryPointBundle {
35
37
  * @param formatPath The path to the source files for this bundle.
36
38
  * @param isCore This entry point is the Angular core package.
37
39
  * @param format The underlying format of the bundle.
38
- * @param transformDts Whether to transform the typings along with this bundle.
40
+ * @param dtsProcessing Whether to transform the typings along with this bundle.
39
41
  * @param pathMappings An optional set of mappings to use when compiling files.
40
42
  * @param mirrorDtsFromSrc If true then the `dts` program will contain additional files that
41
43
  * were guessed by mapping the `src` files to `dts` files.
42
44
  * @param enableI18nLegacyMessageIdFormat Whether to render legacy message ids for i18n messages in
43
45
  * component templates.
44
46
  */
45
- export declare function makeEntryPointBundle(fs: FileSystem, entryPoint: EntryPoint, sharedFileCache: SharedFileCache, moduleResolutionCache: ts.ModuleResolutionCache, formatPath: string, isCore: boolean, format: EntryPointFormat, transformDts: boolean, pathMappings?: PathMappings, mirrorDtsFromSrc?: boolean, enableI18nLegacyMessageIdFormat?: boolean): EntryPointBundle;
47
+ export declare function makeEntryPointBundle(fs: FileSystem, entryPoint: EntryPoint, sharedFileCache: SharedFileCache, moduleResolutionCache: ts.ModuleResolutionCache, formatPath: string, isCore: boolean, format: EntryPointFormat, dtsProcessing: DtsProcessing, pathMappings?: PathMappings, mirrorDtsFromSrc?: boolean, enableI18nLegacyMessageIdFormat?: boolean): EntryPointBundle;
@@ -4,13 +4,14 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define("@angular/compiler-cli/ngcc/src/packages/entry_point_bundle", ["require", "exports", "tslib", "@angular/compiler-cli/ngcc/src/packages/bundle_program", "@angular/compiler-cli/ngcc/src/packages/ngcc_compiler_host", "@angular/compiler-cli/ngcc/src/packages/source_file_cache"], factory);
7
+ define("@angular/compiler-cli/ngcc/src/packages/entry_point_bundle", ["require", "exports", "tslib", "@angular/compiler-cli/ngcc/src/execution/tasks/api", "@angular/compiler-cli/ngcc/src/packages/bundle_program", "@angular/compiler-cli/ngcc/src/packages/ngcc_compiler_host", "@angular/compiler-cli/ngcc/src/packages/source_file_cache"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.makeEntryPointBundle = void 0;
13
13
  var tslib_1 = require("tslib");
14
+ var api_1 = require("@angular/compiler-cli/ngcc/src/execution/tasks/api");
14
15
  var bundle_program_1 = require("@angular/compiler-cli/ngcc/src/packages/bundle_program");
15
16
  var ngcc_compiler_host_1 = require("@angular/compiler-cli/ngcc/src/packages/ngcc_compiler_host");
16
17
  var source_file_cache_1 = require("@angular/compiler-cli/ngcc/src/packages/source_file_cache");
@@ -23,14 +24,14 @@
23
24
  * @param formatPath The path to the source files for this bundle.
24
25
  * @param isCore This entry point is the Angular core package.
25
26
  * @param format The underlying format of the bundle.
26
- * @param transformDts Whether to transform the typings along with this bundle.
27
+ * @param dtsProcessing Whether to transform the typings along with this bundle.
27
28
  * @param pathMappings An optional set of mappings to use when compiling files.
28
29
  * @param mirrorDtsFromSrc If true then the `dts` program will contain additional files that
29
30
  * were guessed by mapping the `src` files to `dts` files.
30
31
  * @param enableI18nLegacyMessageIdFormat Whether to render legacy message ids for i18n messages in
31
32
  * component templates.
32
33
  */
33
- function makeEntryPointBundle(fs, entryPoint, sharedFileCache, moduleResolutionCache, formatPath, isCore, format, transformDts, pathMappings, mirrorDtsFromSrc, enableI18nLegacyMessageIdFormat) {
34
+ function makeEntryPointBundle(fs, entryPoint, sharedFileCache, moduleResolutionCache, formatPath, isCore, format, dtsProcessing, pathMappings, mirrorDtsFromSrc, enableI18nLegacyMessageIdFormat) {
34
35
  if (mirrorDtsFromSrc === void 0) { mirrorDtsFromSrc = false; }
35
36
  if (enableI18nLegacyMessageIdFormat === void 0) { enableI18nLegacyMessageIdFormat = true; }
36
37
  // Create the TS program and necessary helpers.
@@ -43,10 +44,11 @@
43
44
  var absFormatPath = fs.resolve(entryPoint.path, formatPath);
44
45
  var typingsPath = fs.resolve(entryPoint.path, entryPoint.typings);
45
46
  var src = bundle_program_1.makeBundleProgram(fs, isCore, entryPoint.packagePath, absFormatPath, 'r3_symbols.js', options, srcHost);
46
- var additionalDtsFiles = transformDts && mirrorDtsFromSrc ?
47
+ var additionalDtsFiles = dtsProcessing !== api_1.DtsProcessing.No && mirrorDtsFromSrc ?
47
48
  computePotentialDtsFilesFromJsFiles(fs, src.program, absFormatPath, typingsPath) :
48
49
  [];
49
- var dts = transformDts ? bundle_program_1.makeBundleProgram(fs, isCore, entryPoint.packagePath, typingsPath, 'r3_symbols.d.ts', tslib_1.__assign(tslib_1.__assign({}, options), { allowJs: false }), dtsHost, additionalDtsFiles) :
50
+ var dts = dtsProcessing !== api_1.DtsProcessing.No ?
51
+ bundle_program_1.makeBundleProgram(fs, isCore, entryPoint.packagePath, typingsPath, 'r3_symbols.d.ts', tslib_1.__assign(tslib_1.__assign({}, options), { allowJs: false }), dtsHost, additionalDtsFiles) :
50
52
  null;
51
53
  var isFlatCore = isCore && src.r3SymbolsFile === null;
52
54
  return {
@@ -57,6 +59,7 @@
57
59
  isFlatCore: isFlatCore,
58
60
  src: src,
59
61
  dts: dts,
62
+ dtsProcessing: dtsProcessing,
60
63
  enableI18nLegacyMessageIdFormat: enableI18nLegacyMessageIdFormat
61
64
  };
62
65
  }
@@ -90,4 +93,4 @@
90
93
  return additionalFiles;
91
94
  }
92
95
  });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlfcG9pbnRfYnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL3BhY2thZ2VzL2VudHJ5X3BvaW50X2J1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBVUEseUZBQWtFO0lBRWxFLGlHQUFrRjtJQUNsRiwrRkFBeUU7SUFpQnpFOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNILFNBQWdCLG9CQUFvQixDQUNoQyxFQUFjLEVBQUUsVUFBc0IsRUFBRSxlQUFnQyxFQUN4RSxxQkFBK0MsRUFBRSxVQUFrQixFQUFFLE1BQWUsRUFDcEYsTUFBd0IsRUFBRSxZQUFxQixFQUFFLFlBQTJCLEVBQzVFLGdCQUFpQyxFQUNqQywrQkFBK0M7UUFEL0MsaUNBQUEsRUFBQSx3QkFBaUM7UUFDakMsZ0RBQUEsRUFBQSxzQ0FBK0M7UUFDakQsK0NBQStDO1FBQy9DLElBQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFDdkMsSUFBTSxPQUFPLHNCQUNXLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLE9BQU8sU0FBQSxJQUFLLFlBQVksQ0FBQyxDQUFDO1FBQ2pHLElBQU0sZUFBZSxHQUFHLElBQUksdUNBQW1CLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3JFLElBQU0sT0FBTyxHQUFHLElBQUksd0NBQW1CLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUM3RixJQUFNLE9BQU8sR0FBRyxJQUFJLDRDQUF1QixDQUN2QyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFakYsNENBQTRDO1FBQzVDLElBQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5RCxJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLElBQU0sR0FBRyxHQUFHLGtDQUFpQixDQUN6QixFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUYsSUFBTSxrQkFBa0IsR0FBRyxZQUFZLElBQUksZ0JBQWdCLENBQUMsQ0FBQztZQUN6RCxtQ0FBbUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNsRixFQUFFLENBQUM7UUFDUCxJQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLGtDQUFpQixDQUNiLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLHdDQUM5RCxPQUFPLEtBQUUsT0FBTyxFQUFFLEtBQUssS0FBRyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQztRQUNoQyxJQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksR0FBRyxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUM7UUFFeEQsT0FBTztZQUNMLFVBQVUsWUFBQTtZQUNWLE1BQU0sUUFBQTtZQUNOLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztZQUNuQixNQUFNLFFBQUE7WUFDTixVQUFVLFlBQUE7WUFDVixHQUFHLEtBQUE7WUFDSCxHQUFHLEtBQUE7WUFDSCwrQkFBK0IsaUNBQUE7U0FDaEMsQ0FBQztJQUNKLENBQUM7SUF2Q0Qsb0RBdUNDO0lBRUQsU0FBUyxtQ0FBbUMsQ0FDeEMsRUFBc0IsRUFBRSxVQUFzQixFQUFFLFVBQTBCLEVBQzFFLFdBQTJCOztRQUM3QixJQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsSUFBTSxlQUFlLEdBQXFCLEVBQUUsQ0FBQzs7WUFDN0MsS0FBaUIsSUFBQSxLQUFBLGlCQUFBLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQSxnQkFBQSw0QkFBRTtnQkFBekMsSUFBTSxFQUFFLFdBQUE7Z0JBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNoQyxTQUFTO2lCQUNWO2dCQUVELHFGQUFxRjtnQkFDckYsMkVBQTJFO2dCQUMzRSxJQUFNLGVBQWUsR0FDakIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUYsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUM5QixlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2lCQUN2QzthQUNGOzs7Ozs7Ozs7UUFDRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIEZpbGVTeXN0ZW0sIFJlYWRvbmx5RmlsZVN5c3RlbX0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7UGF0aE1hcHBpbmdzfSBmcm9tICcuLi9wYXRoX21hcHBpbmdzJztcbmltcG9ydCB7QnVuZGxlUHJvZ3JhbSwgbWFrZUJ1bmRsZVByb2dyYW19IGZyb20gJy4vYnVuZGxlX3Byb2dyYW0nO1xuaW1wb3J0IHtFbnRyeVBvaW50LCBFbnRyeVBvaW50Rm9ybWF0fSBmcm9tICcuL2VudHJ5X3BvaW50JztcbmltcG9ydCB7TmdjY0R0c0NvbXBpbGVySG9zdCwgTmdjY1NvdXJjZXNDb21waWxlckhvc3R9IGZyb20gJy4vbmdjY19jb21waWxlcl9ob3N0JztcbmltcG9ydCB7RW50cnlQb2ludEZpbGVDYWNoZSwgU2hhcmVkRmlsZUNhY2hlfSBmcm9tICcuL3NvdXJjZV9maWxlX2NhY2hlJztcblxuLyoqXG4gKiBBIGJ1bmRsZSBvZiBmaWxlcyBhbmQgcGF0aHMgKGFuZCBUUyBwcm9ncmFtcykgdGhhdCBjb3JyZXNwb25kIHRvIGEgcGFydGljdWxhclxuICogZm9ybWF0IG9mIGEgcGFja2FnZSBlbnRyeS1wb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRyeVBvaW50QnVuZGxlIHtcbiAgZW50cnlQb2ludDogRW50cnlQb2ludDtcbiAgZm9ybWF0OiBFbnRyeVBvaW50Rm9ybWF0O1xuICBpc0NvcmU6IGJvb2xlYW47XG4gIGlzRmxhdENvcmU6IGJvb2xlYW47XG4gIHJvb3REaXJzOiBBYnNvbHV0ZUZzUGF0aFtdO1xuICBzcmM6IEJ1bmRsZVByb2dyYW07XG4gIGR0czogQnVuZGxlUHJvZ3JhbXxudWxsO1xuICBlbmFibGVJMThuTGVnYWN5TWVzc2FnZUlkRm9ybWF0OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEdldCBhbiBvYmplY3QgdGhhdCBkZXNjcmliZXMgYSBmb3JtYXR0ZWQgYnVuZGxlIGZvciBhbiBlbnRyeS1wb2ludC5cbiAqIEBwYXJhbSBmcyBUaGUgY3VycmVudCBmaWxlLXN5c3RlbSBiZWluZyB1c2VkLlxuICogQHBhcmFtIGVudHJ5UG9pbnQgVGhlIGVudHJ5LXBvaW50IHRoYXQgY29udGFpbnMgdGhlIGJ1bmRsZS5cbiAqIEBwYXJhbSBzaGFyZWRGaWxlQ2FjaGUgVGhlIGNhY2hlIHRvIHVzZSBmb3Igc291cmNlIGZpbGVzIHRoYXQgYXJlIHNoYXJlZCBhY3Jvc3MgYWxsIGVudHJ5LXBvaW50cy5cbiAqIEBwYXJhbSBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUgVGhlIG1vZHVsZSByZXNvbHV0aW9uIGNhY2hlIHRvIHVzZS5cbiAqIEBwYXJhbSBmb3JtYXRQYXRoIFRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZXMgZm9yIHRoaXMgYnVuZGxlLlxuICogQHBhcmFtIGlzQ29yZSBUaGlzIGVudHJ5IHBvaW50IGlzIHRoZSBBbmd1bGFyIGNvcmUgcGFja2FnZS5cbiAqIEBwYXJhbSBmb3JtYXQgVGhlIHVuZGVybHlpbmcgZm9ybWF0IG9mIHRoZSBidW5kbGUuXG4gKiBAcGFyYW0gdHJhbnNmb3JtRHRzIFdoZXRoZXIgdG8gdHJhbnNmb3JtIHRoZSB0eXBpbmdzIGFsb25nIHdpdGggdGhpcyBidW5kbGUuXG4gKiBAcGFyYW0gcGF0aE1hcHBpbmdzIEFuIG9wdGlvbmFsIHNldCBvZiBtYXBwaW5ncyB0byB1c2Ugd2hlbiBjb21waWxpbmcgZmlsZXMuXG4gKiBAcGFyYW0gbWlycm9yRHRzRnJvbVNyYyBJZiB0cnVlIHRoZW4gdGhlIGBkdHNgIHByb2dyYW0gd2lsbCBjb250YWluIGFkZGl0aW9uYWwgZmlsZXMgdGhhdFxuICogd2VyZSBndWVzc2VkIGJ5IG1hcHBpbmcgdGhlIGBzcmNgIGZpbGVzIHRvIGBkdHNgIGZpbGVzLlxuICogQHBhcmFtIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQgV2hldGhlciB0byByZW5kZXIgbGVnYWN5IG1lc3NhZ2UgaWRzIGZvciBpMThuIG1lc3NhZ2VzIGluXG4gKiBjb21wb25lbnQgdGVtcGxhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUVudHJ5UG9pbnRCdW5kbGUoXG4gICAgZnM6IEZpbGVTeXN0ZW0sIGVudHJ5UG9pbnQ6IEVudHJ5UG9pbnQsIHNoYXJlZEZpbGVDYWNoZTogU2hhcmVkRmlsZUNhY2hlLFxuICAgIG1vZHVsZVJlc29sdXRpb25DYWNoZTogdHMuTW9kdWxlUmVzb2x1dGlvbkNhY2hlLCBmb3JtYXRQYXRoOiBzdHJpbmcsIGlzQ29yZTogYm9vbGVhbixcbiAgICBmb3JtYXQ6IEVudHJ5UG9pbnRGb3JtYXQsIHRyYW5zZm9ybUR0czogYm9vbGVhbiwgcGF0aE1hcHBpbmdzPzogUGF0aE1hcHBpbmdzLFxuICAgIG1pcnJvckR0c0Zyb21TcmM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBlbmFibGVJMThuTGVnYWN5TWVzc2FnZUlkRm9ybWF0OiBib29sZWFuID0gdHJ1ZSk6IEVudHJ5UG9pbnRCdW5kbGUge1xuICAvLyBDcmVhdGUgdGhlIFRTIHByb2dyYW0gYW5kIG5lY2Vzc2FyeSBoZWxwZXJzLlxuICBjb25zdCByb290RGlyID0gZW50cnlQb2ludC5wYWNrYWdlUGF0aDtcbiAgY29uc3Qgb3B0aW9uczogdHNcbiAgICAgIC5Db21waWxlck9wdGlvbnMgPSB7YWxsb3dKczogdHJ1ZSwgbWF4Tm9kZU1vZHVsZUpzRGVwdGg6IEluZmluaXR5LCByb290RGlyLCAuLi5wYXRoTWFwcGluZ3N9O1xuICBjb25zdCBlbnRyeVBvaW50Q2FjaGUgPSBuZXcgRW50cnlQb2ludEZpbGVDYWNoZShmcywgc2hhcmVkRmlsZUNhY2hlKTtcbiAgY29uc3QgZHRzSG9zdCA9IG5ldyBOZ2NjRHRzQ29tcGlsZXJIb3N0KGZzLCBvcHRpb25zLCBlbnRyeVBvaW50Q2FjaGUsIG1vZHVsZVJlc29sdXRpb25DYWNoZSk7XG4gIGNvbnN0IHNyY0hvc3QgPSBuZXcgTmdjY1NvdXJjZXNDb21waWxlckhvc3QoXG4gICAgICBmcywgb3B0aW9ucywgZW50cnlQb2ludENhY2hlLCBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUsIGVudHJ5UG9pbnQucGFja2FnZVBhdGgpO1xuXG4gIC8vIENyZWF0ZSB0aGUgYnVuZGxlIHByb2dyYW1zLCBhcyBuZWNlc3NhcnkuXG4gIGNvbnN0IGFic0Zvcm1hdFBhdGggPSBmcy5yZXNvbHZlKGVudHJ5UG9pbnQucGF0aCwgZm9ybWF0UGF0aCk7XG4gIGNvbnN0IHR5cGluZ3NQYXRoID0gZnMucmVzb2x2ZShlbnRyeVBvaW50LnBhdGgsIGVudHJ5UG9pbnQudHlwaW5ncyk7XG4gIGNvbnN0IHNyYyA9IG1ha2VCdW5kbGVQcm9ncmFtKFxuICAgICAgZnMsIGlzQ29yZSwgZW50cnlQb2ludC5wYWNrYWdlUGF0aCwgYWJzRm9ybWF0UGF0aCwgJ3IzX3N5bWJvbHMuanMnLCBvcHRpb25zLCBzcmNIb3N0KTtcbiAgY29uc3QgYWRkaXRpb25hbER0c0ZpbGVzID0gdHJhbnNmb3JtRHRzICYmIG1pcnJvckR0c0Zyb21TcmMgP1xuICAgICAgY29tcHV0ZVBvdGVudGlhbER0c0ZpbGVzRnJvbUpzRmlsZXMoZnMsIHNyYy5wcm9ncmFtLCBhYnNGb3JtYXRQYXRoLCB0eXBpbmdzUGF0aCkgOlxuICAgICAgW107XG4gIGNvbnN0IGR0cyA9IHRyYW5zZm9ybUR0cyA/IG1ha2VCdW5kbGVQcm9ncmFtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnMsIGlzQ29yZSwgZW50cnlQb2ludC5wYWNrYWdlUGF0aCwgdHlwaW5nc1BhdGgsICdyM19zeW1ib2xzLmQudHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLm9wdGlvbnMsIGFsbG93SnM6IGZhbHNlfSwgZHRzSG9zdCwgYWRkaXRpb25hbER0c0ZpbGVzKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4gIGNvbnN0IGlzRmxhdENvcmUgPSBpc0NvcmUgJiYgc3JjLnIzU3ltYm9sc0ZpbGUgPT09IG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBlbnRyeVBvaW50LFxuICAgIGZvcm1hdCxcbiAgICByb290RGlyczogW3Jvb3REaXJdLFxuICAgIGlzQ29yZSxcbiAgICBpc0ZsYXRDb3JlLFxuICAgIHNyYyxcbiAgICBkdHMsXG4gICAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21wdXRlUG90ZW50aWFsRHRzRmlsZXNGcm9tSnNGaWxlcyhcbiAgICBmczogUmVhZG9ubHlGaWxlU3lzdGVtLCBzcmNQcm9ncmFtOiB0cy5Qcm9ncmFtLCBmb3JtYXRQYXRoOiBBYnNvbHV0ZUZzUGF0aCxcbiAgICB0eXBpbmdzUGF0aDogQWJzb2x1dGVGc1BhdGgpIHtcbiAgY29uc3QgZm9ybWF0Um9vdCA9IGZzLmRpcm5hbWUoZm9ybWF0UGF0aCk7XG4gIGNvbnN0IHR5cGluZ3NSb290ID0gZnMuZGlybmFtZSh0eXBpbmdzUGF0aCk7XG4gIGNvbnN0IGFkZGl0aW9uYWxGaWxlczogQWJzb2x1dGVGc1BhdGhbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHNmIG9mIHNyY1Byb2dyYW0uZ2V0U291cmNlRmlsZXMoKSkge1xuICAgIGlmICghc2YuZmlsZU5hbWUuZW5kc1dpdGgoJy5qcycpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBHaXZlbiBhIHNvdXJjZSBmaWxlIGF0IGUuZy4gYGVzbTIwMTUvc3JjL3NvbWUvbmVzdGVkL2luZGV4LmpzYCwgdHJ5IHRvIHJlc29sdmUgdGhlXG4gICAgLy8gZGVjbGFyYXRpb24gZmlsZSB1bmRlciB0aGUgdHlwaW5ncyByb290IGluIGBzcmMvc29tZS9uZXN0ZWQvaW5kZXguZC50c2AuXG4gICAgY29uc3QgbWlycm9yZWREdHNQYXRoID1cbiAgICAgICAgZnMucmVzb2x2ZSh0eXBpbmdzUm9vdCwgZnMucmVsYXRpdmUoZm9ybWF0Um9vdCwgc2YuZmlsZU5hbWUucmVwbGFjZSgvXFwuanMkLywgJy5kLnRzJykpKTtcbiAgICBpZiAoZnMuZXhpc3RzKG1pcnJvcmVkRHRzUGF0aCkpIHtcbiAgICAgIGFkZGl0aW9uYWxGaWxlcy5wdXNoKG1pcnJvcmVkRHRzUGF0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhZGRpdGlvbmFsRmlsZXM7XG59XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlfcG9pbnRfYnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL3BhY2thZ2VzL2VudHJ5X3BvaW50X2J1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBU0EsMEVBQXFEO0lBRXJELHlGQUFrRTtJQUVsRSxpR0FBa0Y7SUFDbEYsK0ZBQXlFO0lBa0J6RTs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxTQUFnQixvQkFBb0IsQ0FDaEMsRUFBYyxFQUFFLFVBQXNCLEVBQUUsZUFBZ0MsRUFDeEUscUJBQStDLEVBQUUsVUFBa0IsRUFBRSxNQUFlLEVBQ3BGLE1BQXdCLEVBQUUsYUFBNEIsRUFBRSxZQUEyQixFQUNuRixnQkFBaUMsRUFDakMsK0JBQStDO1FBRC9DLGlDQUFBLEVBQUEsd0JBQWlDO1FBQ2pDLGdEQUFBLEVBQUEsc0NBQStDO1FBQ2pELCtDQUErQztRQUMvQyxJQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQU0sT0FBTyxzQkFDVyxPQUFPLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxPQUFPLFNBQUEsSUFBSyxZQUFZLENBQUMsQ0FBQztRQUNqRyxJQUFNLGVBQWUsR0FBRyxJQUFJLHVDQUFtQixDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRSxJQUFNLE9BQU8sR0FBRyxJQUFJLHdDQUFtQixDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDN0YsSUFBTSxPQUFPLEdBQUcsSUFBSSw0Q0FBdUIsQ0FDdkMsRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWpGLDRDQUE0QztRQUM1QyxJQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUQsSUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRSxJQUFNLEdBQUcsR0FBRyxrQ0FBaUIsQ0FDekIsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFGLElBQU0sa0JBQWtCLEdBQUcsYUFBYSxLQUFLLG1CQUFhLENBQUMsRUFBRSxJQUFJLGdCQUFnQixDQUFDLENBQUM7WUFDL0UsbUNBQW1DLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbEYsRUFBRSxDQUFDO1FBQ1AsSUFBTSxHQUFHLEdBQUcsYUFBYSxLQUFLLG1CQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsa0NBQWlCLENBQ2IsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsd0NBQzlELE9BQU8sS0FBRSxPQUFPLEVBQUUsS0FBSyxLQUFHLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDO1FBQ1QsSUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDO1FBRXhELE9BQU87WUFDTCxVQUFVLFlBQUE7WUFDVixNQUFNLFFBQUE7WUFDTixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDbkIsTUFBTSxRQUFBO1lBQ04sVUFBVSxZQUFBO1lBQ1YsR0FBRyxLQUFBO1lBQ0gsR0FBRyxLQUFBO1lBQ0gsYUFBYSxlQUFBO1lBQ2IsK0JBQStCLGlDQUFBO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBekNELG9EQXlDQztJQUVELFNBQVMsbUNBQW1DLENBQ3hDLEVBQXNCLEVBQUUsVUFBc0IsRUFBRSxVQUEwQixFQUMxRSxXQUEyQjs7UUFDN0IsSUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLElBQU0sZUFBZSxHQUFxQixFQUFFLENBQUM7O1lBQzdDLEtBQWlCLElBQUEsS0FBQSxpQkFBQSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUEsZ0JBQUEsNEJBQUU7Z0JBQXpDLElBQU0sRUFBRSxXQUFBO2dCQUNYLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDaEMsU0FBUztpQkFDVjtnQkFFRCxxRkFBcUY7Z0JBQ3JGLDJFQUEyRTtnQkFDM0UsSUFBTSxlQUFlLEdBQ2pCLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDOUIsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDdkM7YUFDRjs7Ozs7Ozs7O1FBQ0QsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCBGaWxlU3lzdGVtLCBSZWFkb25seUZpbGVTeXN0ZW19IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0R0c1Byb2Nlc3Npbmd9IGZyb20gJy4uL2V4ZWN1dGlvbi90YXNrcy9hcGknO1xuaW1wb3J0IHtQYXRoTWFwcGluZ3N9IGZyb20gJy4uL3BhdGhfbWFwcGluZ3MnO1xuaW1wb3J0IHtCdW5kbGVQcm9ncmFtLCBtYWtlQnVuZGxlUHJvZ3JhbX0gZnJvbSAnLi9idW5kbGVfcHJvZ3JhbSc7XG5pbXBvcnQge0VudHJ5UG9pbnQsIEVudHJ5UG9pbnRGb3JtYXR9IGZyb20gJy4vZW50cnlfcG9pbnQnO1xuaW1wb3J0IHtOZ2NjRHRzQ29tcGlsZXJIb3N0LCBOZ2NjU291cmNlc0NvbXBpbGVySG9zdH0gZnJvbSAnLi9uZ2NjX2NvbXBpbGVyX2hvc3QnO1xuaW1wb3J0IHtFbnRyeVBvaW50RmlsZUNhY2hlLCBTaGFyZWRGaWxlQ2FjaGV9IGZyb20gJy4vc291cmNlX2ZpbGVfY2FjaGUnO1xuXG4vKipcbiAqIEEgYnVuZGxlIG9mIGZpbGVzIGFuZCBwYXRocyAoYW5kIFRTIHByb2dyYW1zKSB0aGF0IGNvcnJlc3BvbmQgdG8gYSBwYXJ0aWN1bGFyXG4gKiBmb3JtYXQgb2YgYSBwYWNrYWdlIGVudHJ5LXBvaW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudHJ5UG9pbnRCdW5kbGUge1xuICBlbnRyeVBvaW50OiBFbnRyeVBvaW50O1xuICBmb3JtYXQ6IEVudHJ5UG9pbnRGb3JtYXQ7XG4gIGlzQ29yZTogYm9vbGVhbjtcbiAgaXNGbGF0Q29yZTogYm9vbGVhbjtcbiAgcm9vdERpcnM6IEFic29sdXRlRnNQYXRoW107XG4gIHNyYzogQnVuZGxlUHJvZ3JhbTtcbiAgZHRzOiBCdW5kbGVQcm9ncmFtfG51bGw7XG4gIGR0c1Byb2Nlc3Npbmc6IER0c1Byb2Nlc3Npbmc7XG4gIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogR2V0IGFuIG9iamVjdCB0aGF0IGRlc2NyaWJlcyBhIGZvcm1hdHRlZCBidW5kbGUgZm9yIGFuIGVudHJ5LXBvaW50LlxuICogQHBhcmFtIGZzIFRoZSBjdXJyZW50IGZpbGUtc3lzdGVtIGJlaW5nIHVzZWQuXG4gKiBAcGFyYW0gZW50cnlQb2ludCBUaGUgZW50cnktcG9pbnQgdGhhdCBjb250YWlucyB0aGUgYnVuZGxlLlxuICogQHBhcmFtIHNoYXJlZEZpbGVDYWNoZSBUaGUgY2FjaGUgdG8gdXNlIGZvciBzb3VyY2UgZmlsZXMgdGhhdCBhcmUgc2hhcmVkIGFjcm9zcyBhbGwgZW50cnktcG9pbnRzLlxuICogQHBhcmFtIG1vZHVsZVJlc29sdXRpb25DYWNoZSBUaGUgbW9kdWxlIHJlc29sdXRpb24gY2FjaGUgdG8gdXNlLlxuICogQHBhcmFtIGZvcm1hdFBhdGggVGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlcyBmb3IgdGhpcyBidW5kbGUuXG4gKiBAcGFyYW0gaXNDb3JlIFRoaXMgZW50cnkgcG9pbnQgaXMgdGhlIEFuZ3VsYXIgY29yZSBwYWNrYWdlLlxuICogQHBhcmFtIGZvcm1hdCBUaGUgdW5kZXJseWluZyBmb3JtYXQgb2YgdGhlIGJ1bmRsZS5cbiAqIEBwYXJhbSBkdHNQcm9jZXNzaW5nIFdoZXRoZXIgdG8gdHJhbnNmb3JtIHRoZSB0eXBpbmdzIGFsb25nIHdpdGggdGhpcyBidW5kbGUuXG4gKiBAcGFyYW0gcGF0aE1hcHBpbmdzIEFuIG9wdGlvbmFsIHNldCBvZiBtYXBwaW5ncyB0byB1c2Ugd2hlbiBjb21waWxpbmcgZmlsZXMuXG4gKiBAcGFyYW0gbWlycm9yRHRzRnJvbVNyYyBJZiB0cnVlIHRoZW4gdGhlIGBkdHNgIHByb2dyYW0gd2lsbCBjb250YWluIGFkZGl0aW9uYWwgZmlsZXMgdGhhdFxuICogd2VyZSBndWVzc2VkIGJ5IG1hcHBpbmcgdGhlIGBzcmNgIGZpbGVzIHRvIGBkdHNgIGZpbGVzLlxuICogQHBhcmFtIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQgV2hldGhlciB0byByZW5kZXIgbGVnYWN5IG1lc3NhZ2UgaWRzIGZvciBpMThuIG1lc3NhZ2VzIGluXG4gKiBjb21wb25lbnQgdGVtcGxhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUVudHJ5UG9pbnRCdW5kbGUoXG4gICAgZnM6IEZpbGVTeXN0ZW0sIGVudHJ5UG9pbnQ6IEVudHJ5UG9pbnQsIHNoYXJlZEZpbGVDYWNoZTogU2hhcmVkRmlsZUNhY2hlLFxuICAgIG1vZHVsZVJlc29sdXRpb25DYWNoZTogdHMuTW9kdWxlUmVzb2x1dGlvbkNhY2hlLCBmb3JtYXRQYXRoOiBzdHJpbmcsIGlzQ29yZTogYm9vbGVhbixcbiAgICBmb3JtYXQ6IEVudHJ5UG9pbnRGb3JtYXQsIGR0c1Byb2Nlc3Npbmc6IER0c1Byb2Nlc3NpbmcsIHBhdGhNYXBwaW5ncz86IFBhdGhNYXBwaW5ncyxcbiAgICBtaXJyb3JEdHNGcm9tU3JjOiBib29sZWFuID0gZmFsc2UsXG4gICAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdDogYm9vbGVhbiA9IHRydWUpOiBFbnRyeVBvaW50QnVuZGxlIHtcbiAgLy8gQ3JlYXRlIHRoZSBUUyBwcm9ncmFtIGFuZCBuZWNlc3NhcnkgaGVscGVycy5cbiAgY29uc3Qgcm9vdERpciA9IGVudHJ5UG9pbnQucGFja2FnZVBhdGg7XG4gIGNvbnN0IG9wdGlvbnM6IHRzXG4gICAgICAuQ29tcGlsZXJPcHRpb25zID0ge2FsbG93SnM6IHRydWUsIG1heE5vZGVNb2R1bGVKc0RlcHRoOiBJbmZpbml0eSwgcm9vdERpciwgLi4ucGF0aE1hcHBpbmdzfTtcbiAgY29uc3QgZW50cnlQb2ludENhY2hlID0gbmV3IEVudHJ5UG9pbnRGaWxlQ2FjaGUoZnMsIHNoYXJlZEZpbGVDYWNoZSk7XG4gIGNvbnN0IGR0c0hvc3QgPSBuZXcgTmdjY0R0c0NvbXBpbGVySG9zdChmcywgb3B0aW9ucywgZW50cnlQb2ludENhY2hlLCBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUpO1xuICBjb25zdCBzcmNIb3N0ID0gbmV3IE5nY2NTb3VyY2VzQ29tcGlsZXJIb3N0KFxuICAgICAgZnMsIG9wdGlvbnMsIGVudHJ5UG9pbnRDYWNoZSwgbW9kdWxlUmVzb2x1dGlvbkNhY2hlLCBlbnRyeVBvaW50LnBhY2thZ2VQYXRoKTtcblxuICAvLyBDcmVhdGUgdGhlIGJ1bmRsZSBwcm9ncmFtcywgYXMgbmVjZXNzYXJ5LlxuICBjb25zdCBhYnNGb3JtYXRQYXRoID0gZnMucmVzb2x2ZShlbnRyeVBvaW50LnBhdGgsIGZvcm1hdFBhdGgpO1xuICBjb25zdCB0eXBpbmdzUGF0aCA9IGZzLnJlc29sdmUoZW50cnlQb2ludC5wYXRoLCBlbnRyeVBvaW50LnR5cGluZ3MpO1xuICBjb25zdCBzcmMgPSBtYWtlQnVuZGxlUHJvZ3JhbShcbiAgICAgIGZzLCBpc0NvcmUsIGVudHJ5UG9pbnQucGFja2FnZVBhdGgsIGFic0Zvcm1hdFBhdGgsICdyM19zeW1ib2xzLmpzJywgb3B0aW9ucywgc3JjSG9zdCk7XG4gIGNvbnN0IGFkZGl0aW9uYWxEdHNGaWxlcyA9IGR0c1Byb2Nlc3NpbmcgIT09IER0c1Byb2Nlc3NpbmcuTm8gJiYgbWlycm9yRHRzRnJvbVNyYyA/XG4gICAgICBjb21wdXRlUG90ZW50aWFsRHRzRmlsZXNGcm9tSnNGaWxlcyhmcywgc3JjLnByb2dyYW0sIGFic0Zvcm1hdFBhdGgsIHR5cGluZ3NQYXRoKSA6XG4gICAgICBbXTtcbiAgY29uc3QgZHRzID0gZHRzUHJvY2Vzc2luZyAhPT0gRHRzUHJvY2Vzc2luZy5ObyA/XG4gICAgICBtYWtlQnVuZGxlUHJvZ3JhbShcbiAgICAgICAgICBmcywgaXNDb3JlLCBlbnRyeVBvaW50LnBhY2thZ2VQYXRoLCB0eXBpbmdzUGF0aCwgJ3IzX3N5bWJvbHMuZC50cycsXG4gICAgICAgICAgey4uLm9wdGlvbnMsIGFsbG93SnM6IGZhbHNlfSwgZHRzSG9zdCwgYWRkaXRpb25hbER0c0ZpbGVzKSA6XG4gICAgICBudWxsO1xuICBjb25zdCBpc0ZsYXRDb3JlID0gaXNDb3JlICYmIHNyYy5yM1N5bWJvbHNGaWxlID09PSBudWxsO1xuXG4gIHJldHVybiB7XG4gICAgZW50cnlQb2ludCxcbiAgICBmb3JtYXQsXG4gICAgcm9vdERpcnM6IFtyb290RGlyXSxcbiAgICBpc0NvcmUsXG4gICAgaXNGbGF0Q29yZSxcbiAgICBzcmMsXG4gICAgZHRzLFxuICAgIGR0c1Byb2Nlc3NpbmcsXG4gICAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21wdXRlUG90ZW50aWFsRHRzRmlsZXNGcm9tSnNGaWxlcyhcbiAgICBmczogUmVhZG9ubHlGaWxlU3lzdGVtLCBzcmNQcm9ncmFtOiB0cy5Qcm9ncmFtLCBmb3JtYXRQYXRoOiBBYnNvbHV0ZUZzUGF0aCxcbiAgICB0eXBpbmdzUGF0aDogQWJzb2x1dGVGc1BhdGgpIHtcbiAgY29uc3QgZm9ybWF0Um9vdCA9IGZzLmRpcm5hbWUoZm9ybWF0UGF0aCk7XG4gIGNvbnN0IHR5cGluZ3NSb290ID0gZnMuZGlybmFtZSh0eXBpbmdzUGF0aCk7XG4gIGNvbnN0IGFkZGl0aW9uYWxGaWxlczogQWJzb2x1dGVGc1BhdGhbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHNmIG9mIHNyY1Byb2dyYW0uZ2V0U291cmNlRmlsZXMoKSkge1xuICAgIGlmICghc2YuZmlsZU5hbWUuZW5kc1dpdGgoJy5qcycpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBHaXZlbiBhIHNvdXJjZSBmaWxlIGF0IGUuZy4gYGVzbTIwMTUvc3JjL3NvbWUvbmVzdGVkL2luZGV4LmpzYCwgdHJ5IHRvIHJlc29sdmUgdGhlXG4gICAgLy8gZGVjbGFyYXRpb24gZmlsZSB1bmRlciB0aGUgdHlwaW5ncyByb290IGluIGBzcmMvc29tZS9uZXN0ZWQvaW5kZXguZC50c2AuXG4gICAgY29uc3QgbWlycm9yZWREdHNQYXRoID1cbiAgICAgICAgZnMucmVzb2x2ZSh0eXBpbmdzUm9vdCwgZnMucmVsYXRpdmUoZm9ybWF0Um9vdCwgc2YuZmlsZU5hbWUucmVwbGFjZSgvXFwuanMkLywgJy5kLnRzJykpKTtcbiAgICBpZiAoZnMuZXhpc3RzKG1pcnJvcmVkRHRzUGF0aCkpIHtcbiAgICAgIGFkZGl0aW9uYWxGaWxlcy5wdXNoKG1pcnJvcmVkRHRzUGF0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhZGRpdGlvbmFsRmlsZXM7XG59XG4iXX0=