@angular/compiler-cli 9.1.0 → 9.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ngcc/index.d.ts +3 -4
- package/ngcc/index.js +2 -3
- package/ngcc/main-ngcc.js +10 -114
- package/ngcc/src/analysis/decoration_analyzer.js +14 -6
- package/ngcc/src/analysis/module_with_providers_analyzer.js +5 -5
- package/ngcc/src/analysis/ngcc_references_registry.js +4 -2
- package/ngcc/src/analysis/ngcc_trait_compiler.js +7 -3
- package/ngcc/src/analysis/private_declarations_analyzer.js +1 -1
- package/ngcc/src/analysis/util.js +3 -2
- package/ngcc/src/command_line_options.d.ts +4 -0
- package/ngcc/src/command_line_options.js +134 -0
- package/ngcc/src/dependencies/commonjs_dependency_host.js +4 -2
- package/ngcc/src/dependencies/dependency_host.d.ts +5 -0
- package/ngcc/src/dependencies/dependency_host.js +1 -1
- package/ngcc/src/dependencies/dependency_resolver.d.ts +3 -3
- package/ngcc/src/dependencies/dependency_resolver.js +17 -14
- package/ngcc/src/dependencies/dts_dependency_host.d.ts +1 -1
- package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
- package/ngcc/src/dependencies/module_resolver.d.ts +1 -1
- package/ngcc/src/dependencies/module_resolver.js +1 -1
- package/ngcc/src/dependencies/umd_dependency_host.js +4 -2
- package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.d.ts +21 -15
- package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js +118 -101
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.d.ts +1 -1
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +41 -19
- package/ngcc/src/entry_point_finder/utils.d.ts +11 -2
- package/ngcc/src/entry_point_finder/utils.js +39 -6
- package/ngcc/src/execution/analyze_entry_points.d.ts +10 -0
- package/ngcc/src/execution/analyze_entry_points.js +187 -0
- package/ngcc/src/execution/cluster/api.js +1 -1
- package/ngcc/src/execution/cluster/executor.d.ts +5 -3
- package/ngcc/src/execution/cluster/executor.js +10 -28
- package/ngcc/src/execution/cluster/master.d.ts +4 -2
- package/ngcc/src/execution/cluster/master.js +11 -9
- package/ngcc/src/execution/cluster/package_json_updater.d.ts +7 -4
- package/ngcc/src/execution/cluster/package_json_updater.js +15 -16
- package/ngcc/src/execution/cluster/utils.js +1 -1
- package/ngcc/src/execution/cluster/worker.d.ts +1 -10
- package/ngcc/src/execution/cluster/worker.js +68 -40
- package/ngcc/src/execution/create_compile_function.d.ts +11 -0
- package/ngcc/src/execution/create_compile_function.js +74 -0
- package/ngcc/src/execution/single_process_executor.js +1 -1
- package/ngcc/src/execution/tasks/api.js +1 -1
- package/ngcc/src/execution/tasks/completion.js +1 -1
- package/ngcc/src/execution/tasks/queues/base_task_queue.js +1 -1
- package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
- package/ngcc/src/execution/tasks/utils.js +2 -4
- package/ngcc/src/host/commonjs_host.js +6 -3
- package/ngcc/src/host/commonjs_umd_utils.js +1 -1
- package/ngcc/src/host/delegating_host.d.ts +3 -0
- package/ngcc/src/host/delegating_host.js +11 -3
- package/ngcc/src/host/esm2015_host.d.ts +66 -2
- package/ngcc/src/host/esm2015_host.js +226 -22
- package/ngcc/src/host/esm5_host.d.ts +8 -4
- package/ngcc/src/host/esm5_host.js +29 -21
- package/ngcc/src/host/ngcc_host.d.ts +9 -1
- package/ngcc/src/host/ngcc_host.js +1 -1
- package/ngcc/src/host/umd_host.d.ts +2 -1
- package/ngcc/src/host/umd_host.js +16 -6
- package/{src/transformers/nocollapse_hack.d.ts → ngcc/src/host/utils.d.ts} +3 -2
- package/ngcc/src/host/utils.js +25 -0
- package/ngcc/src/locking/async_locker.js +3 -2
- package/ngcc/src/locking/lock_file_with_child_process/index.js +10 -9
- package/ngcc/src/locking/lock_file_with_child_process/unlocker.js +4 -2
- package/ngcc/src/locking/sync_locker.js +1 -1
- package/ngcc/src/logging/console_logger.d.ts +1 -1
- package/ngcc/src/logging/console_logger.js +1 -1
- package/ngcc/src/main.d.ts +1 -109
- package/ngcc/src/main.js +19 -257
- package/ngcc/src/migrations/missing_injectable_migration.js +1 -1
- package/ngcc/src/migrations/utils.js +3 -2
- package/ngcc/src/ngcc_options.d.ts +142 -0
- package/ngcc/src/ngcc_options.js +74 -0
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/build_marker.js +1 -1
- package/ngcc/src/packages/bundle_program.d.ts +7 -7
- package/ngcc/src/packages/bundle_program.js +1 -1
- package/ngcc/src/packages/configuration.js +7 -7
- package/ngcc/src/packages/entry_point.d.ts +7 -5
- package/ngcc/src/packages/entry_point.js +31 -14
- package/ngcc/src/packages/entry_point_bundle.d.ts +1 -1
- package/ngcc/src/packages/entry_point_bundle.js +7 -2
- package/ngcc/src/packages/entry_point_manifest.d.ts +9 -8
- package/ngcc/src/packages/entry_point_manifest.js +44 -9
- package/ngcc/src/packages/patch_ts_expando_initializer.js +37 -21
- package/ngcc/src/packages/transformer.js +8 -3
- package/ngcc/src/rendering/commonjs_rendering_formatter.d.ts +1 -1
- package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
- package/ngcc/src/rendering/dts_renderer.d.ts +4 -4
- package/ngcc/src/rendering/dts_renderer.js +3 -3
- package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
- package/ngcc/src/rendering/esm_rendering_formatter.d.ts +3 -3
- package/ngcc/src/rendering/esm_rendering_formatter.js +3 -3
- package/ngcc/src/rendering/renderer.d.ts +2 -2
- package/ngcc/src/rendering/renderer.js +4 -2
- package/ngcc/src/rendering/rendering_formatter.d.ts +1 -1
- package/ngcc/src/rendering/rendering_formatter.js +1 -1
- package/ngcc/src/rendering/source_maps.d.ts +1 -1
- package/ngcc/src/rendering/source_maps.js +2 -2
- package/ngcc/src/rendering/umd_rendering_formatter.d.ts +2 -2
- package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
- package/ngcc/src/rendering/utils.js +1 -1
- package/ngcc/src/sourcemaps/segment_marker.d.ts +5 -5
- package/ngcc/src/sourcemaps/segment_marker.js +1 -1
- package/ngcc/src/sourcemaps/source_file.js +3 -2
- package/ngcc/src/sourcemaps/source_file_loader.d.ts +33 -10
- package/ngcc/src/sourcemaps/source_file_loader.js +60 -31
- package/ngcc/src/utils.d.ts +2 -7
- package/ngcc/src/utils.js +7 -4
- package/ngcc/src/writing/cleaning/cleaning_strategies.d.ts +2 -2
- package/ngcc/src/writing/cleaning/cleaning_strategies.js +4 -2
- package/ngcc/src/writing/in_place_file_writer.js +1 -1
- package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
- package/ngcc/src/writing/package_json_updater.js +1 -1
- package/package.json +2 -2
- package/src/diagnostics/translate_diagnostics.js +3 -2
- package/src/language_services.d.ts +1 -1
- package/src/language_services.js +1 -1
- package/src/main.js +9 -4
- package/src/metadata/bundle_index_host.js +1 -1
- package/src/metadata/bundler.js +6 -3
- package/src/metadata/collector.js +13 -9
- package/src/metadata/evaluator.js +4 -3
- package/src/metadata/schema.js +1 -1
- package/src/metadata/symbols.js +7 -3
- package/src/ngtsc/annotations/src/component.d.ts +1 -1
- package/src/ngtsc/annotations/src/component.js +7 -4
- package/src/ngtsc/annotations/src/diagnostics.js +4 -2
- package/src/ngtsc/annotations/src/directive.js +54 -38
- package/src/ngtsc/annotations/src/factory.js +1 -1
- package/src/ngtsc/annotations/src/injectable.js +6 -3
- package/src/ngtsc/annotations/src/metadata.js +1 -1
- package/src/ngtsc/annotations/src/ng_module.js +8 -5
- package/src/ngtsc/annotations/src/pipe.js +3 -2
- package/src/ngtsc/annotations/src/util.d.ts +3 -1
- package/src/ngtsc/annotations/src/util.js +39 -9
- package/src/ngtsc/core/api/src/interfaces.js +1 -1
- package/src/ngtsc/core/api/src/options.d.ts +2 -1
- package/src/ngtsc/core/api/src/options.js +1 -1
- package/src/ngtsc/core/src/compiler.js +19 -6
- package/src/ngtsc/core/src/host.js +1 -1
- package/src/ngtsc/cycles/src/imports.js +4 -2
- package/src/ngtsc/diagnostics/src/error.js +3 -2
- package/src/ngtsc/entry_point/src/generator.js +4 -2
- package/src/ngtsc/entry_point/src/private_export_checker.js +1 -1
- package/src/ngtsc/entry_point/src/reference_graph.js +1 -1
- package/src/ngtsc/file_system/index.d.ts +1 -2
- package/src/ngtsc/file_system/index.js +3 -4
- package/src/ngtsc/file_system/src/compiler_host.js +10 -4
- package/src/ngtsc/file_system/src/helpers.d.ts +6 -2
- package/src/ngtsc/file_system/src/helpers.js +10 -3
- package/src/ngtsc/file_system/src/invalid_file_system.js +73 -25
- package/src/ngtsc/file_system/src/logical.js +1 -1
- package/src/ngtsc/file_system/src/node_js_file_system.js +52 -18
- package/src/ngtsc/file_system/src/types.js +1 -1
- package/src/ngtsc/file_system/src/util.js +1 -1
- package/src/ngtsc/imports/index.d.ts +1 -1
- package/src/ngtsc/imports/index.js +1 -1
- package/src/ngtsc/imports/src/alias.js +4 -2
- package/src/ngtsc/imports/src/core.js +13 -5
- package/src/ngtsc/imports/src/default.d.ts +6 -6
- package/src/ngtsc/imports/src/default.js +10 -8
- package/src/ngtsc/imports/src/emitter.js +1 -1
- package/src/ngtsc/imports/src/references.js +10 -4
- package/src/ngtsc/incremental/api.js +1 -1
- package/src/ngtsc/incremental/src/dependency_tracking.js +4 -2
- package/src/ngtsc/incremental/src/state.js +7 -3
- package/src/ngtsc/indexer/src/api.js +1 -1
- package/src/ngtsc/indexer/src/context.js +4 -2
- package/src/ngtsc/indexer/src/template.js +17 -7
- package/src/ngtsc/metadata/src/dts.js +1 -1
- package/src/ngtsc/metadata/src/inheritance.js +1 -1
- package/src/ngtsc/metadata/src/registry.js +13 -5
- package/src/ngtsc/metadata/src/util.js +1 -1
- package/src/ngtsc/modulewithproviders/src/scanner.js +1 -1
- package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
- package/src/ngtsc/partial_evaluator/src/interface.js +3 -2
- package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +1 -0
- package/src/ngtsc/partial_evaluator/src/interpreter.js +43 -20
- package/src/ngtsc/partial_evaluator/src/result.d.ts +2 -2
- package/src/ngtsc/partial_evaluator/src/result.js +4 -2
- package/src/ngtsc/perf/src/noop.js +4 -2
- package/src/ngtsc/perf/src/tracking.js +7 -3
- package/src/ngtsc/program.js +10 -15
- package/src/ngtsc/reflection/src/host.d.ts +45 -1
- package/src/ngtsc/reflection/src/host.js +1 -1
- package/src/ngtsc/reflection/src/type_to_value.js +88 -72
- package/src/ngtsc/reflection/src/typescript.js +31 -11
- package/src/ngtsc/resource/src/loader.js +1 -1
- package/src/ngtsc/routing/src/analyzer.js +6 -2
- package/src/ngtsc/routing/src/lazy.js +4 -2
- package/src/ngtsc/routing/src/route.js +7 -3
- package/src/ngtsc/scope/src/dependency.js +1 -1
- package/src/ngtsc/scope/src/local.js +9 -6
- package/src/ngtsc/shims/src/factory_generator.js +11 -7
- package/src/ngtsc/shims/src/factory_tracker.js +1 -1
- package/src/ngtsc/shims/src/summary_generator.js +7 -3
- package/src/ngtsc/shims/src/typecheck_shim.js +4 -2
- package/src/ngtsc/switch/src/switch.js +1 -1
- package/src/ngtsc/transform/src/alias.js +1 -1
- package/src/ngtsc/transform/src/compilation.js +10 -4
- package/src/ngtsc/transform/src/declaration.js +1 -1
- package/src/ngtsc/transform/src/trait.js +1 -1
- package/src/ngtsc/transform/src/transform.js +12 -3
- package/src/ngtsc/translator/src/translator.d.ts +1 -1
- package/src/ngtsc/translator/src/translator.js +17 -8
- package/src/ngtsc/tsc_plugin.js +10 -4
- package/src/ngtsc/typecheck/src/api.js +1 -1
- package/src/ngtsc/typecheck/src/context.js +7 -3
- package/src/ngtsc/typecheck/src/diagnostics.js +3 -2
- package/src/ngtsc/typecheck/src/dom.js +7 -5
- package/src/ngtsc/typecheck/src/environment.js +3 -2
- package/src/ngtsc/typecheck/src/expression.js +61 -21
- package/src/ngtsc/typecheck/src/host.js +13 -5
- package/src/ngtsc/typecheck/src/oob.js +6 -3
- package/src/ngtsc/typecheck/src/source.js +1 -1
- package/src/ngtsc/typecheck/src/type_check_block.d.ts +1 -1
- package/src/ngtsc/typecheck/src/type_check_block.js +10 -4
- package/src/ngtsc/typecheck/src/type_check_file.js +4 -2
- package/src/ngtsc/typecheck/src/type_constructor.js +3 -2
- package/src/ngtsc/typecheck/src/type_emitter.js +4 -2
- package/src/ngtsc/typecheck/src/type_parameter_emitter.js +1 -1
- package/src/ngtsc/util/src/ts_source_map_bug_29300.js +31 -11
- package/src/ngtsc/util/src/typescript.js +1 -1
- package/src/ngtsc/util/src/visitor.js +6 -3
- package/src/perform_compile.js +2 -6
- package/src/perform_watch.js +1 -1
- package/src/transformers/api.js +1 -1
- package/src/transformers/compiler_host.js +3 -2
- package/src/transformers/inline_resources.js +1 -1
- package/src/transformers/lower_expressions.js +12 -7
- package/src/transformers/node_emitter.d.ts +5 -1
- package/src/transformers/node_emitter.js +39 -17
- package/src/transformers/node_emitter_transform.d.ts +1 -1
- package/src/transformers/node_emitter_transform.js +3 -3
- package/src/transformers/program.js +20 -20
- package/src/transformers/r3_metadata_transform.js +1 -1
- package/src/transformers/r3_strip_decorators.js +1 -1
- package/src/transformers/r3_transform.d.ts +1 -1
- package/src/transformers/r3_transform.js +3 -3
- package/src/transformers/util.js +6 -3
- package/src/typescript_support.js +1 -1
- package/src/version.js +1 -1
- package/src/ngtsc/file_system/src/cached_file_system.d.ts +0 -49
- package/src/ngtsc/file_system/src/cached_file_system.js +0 -180
- package/src/transformers/nocollapse_hack.js +0 -61
|
@@ -29,21 +29,43 @@
|
|
|
29
29
|
function NodeJSFileSystem() {
|
|
30
30
|
this._caseSensitive = undefined;
|
|
31
31
|
}
|
|
32
|
-
NodeJSFileSystem.prototype.exists = function (path) {
|
|
33
|
-
|
|
32
|
+
NodeJSFileSystem.prototype.exists = function (path) {
|
|
33
|
+
return fs.existsSync(path);
|
|
34
|
+
};
|
|
35
|
+
NodeJSFileSystem.prototype.readFile = function (path) {
|
|
36
|
+
return fs.readFileSync(path, 'utf8');
|
|
37
|
+
};
|
|
34
38
|
NodeJSFileSystem.prototype.writeFile = function (path, data, exclusive) {
|
|
35
39
|
if (exclusive === void 0) { exclusive = false; }
|
|
36
40
|
fs.writeFileSync(path, data, exclusive ? { flag: 'wx' } : undefined);
|
|
37
41
|
};
|
|
38
|
-
NodeJSFileSystem.prototype.removeFile = function (path) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
NodeJSFileSystem.prototype.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
NodeJSFileSystem.prototype.
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
NodeJSFileSystem.prototype.removeFile = function (path) {
|
|
43
|
+
fs.unlinkSync(path);
|
|
44
|
+
};
|
|
45
|
+
NodeJSFileSystem.prototype.symlink = function (target, path) {
|
|
46
|
+
fs.symlinkSync(target, path);
|
|
47
|
+
};
|
|
48
|
+
NodeJSFileSystem.prototype.readdir = function (path) {
|
|
49
|
+
return fs.readdirSync(path);
|
|
50
|
+
};
|
|
51
|
+
NodeJSFileSystem.prototype.lstat = function (path) {
|
|
52
|
+
return fs.lstatSync(path);
|
|
53
|
+
};
|
|
54
|
+
NodeJSFileSystem.prototype.stat = function (path) {
|
|
55
|
+
return fs.statSync(path);
|
|
56
|
+
};
|
|
57
|
+
NodeJSFileSystem.prototype.pwd = function () {
|
|
58
|
+
return this.normalize(process.cwd());
|
|
59
|
+
};
|
|
60
|
+
NodeJSFileSystem.prototype.chdir = function (dir) {
|
|
61
|
+
process.chdir(dir);
|
|
62
|
+
};
|
|
63
|
+
NodeJSFileSystem.prototype.copyFile = function (from, to) {
|
|
64
|
+
fs.copyFileSync(from, to);
|
|
65
|
+
};
|
|
66
|
+
NodeJSFileSystem.prototype.moveFile = function (from, to) {
|
|
67
|
+
fs.renameSync(from, to);
|
|
68
|
+
};
|
|
47
69
|
NodeJSFileSystem.prototype.ensureDir = function (path) {
|
|
48
70
|
var parents = [];
|
|
49
71
|
while (!this.isRoot(path) && !this.exists(path)) {
|
|
@@ -54,7 +76,9 @@
|
|
|
54
76
|
this.safeMkdir(parents.pop());
|
|
55
77
|
}
|
|
56
78
|
};
|
|
57
|
-
NodeJSFileSystem.prototype.removeDeep = function (path) {
|
|
79
|
+
NodeJSFileSystem.prototype.removeDeep = function (path) {
|
|
80
|
+
fsExtra.removeSync(path);
|
|
81
|
+
};
|
|
58
82
|
NodeJSFileSystem.prototype.isCaseSensitive = function () {
|
|
59
83
|
if (this._caseSensitive === undefined) {
|
|
60
84
|
this._caseSensitive = this.exists(togglePathCase(__filename));
|
|
@@ -68,7 +92,9 @@
|
|
|
68
92
|
}
|
|
69
93
|
return this.normalize(p.resolve.apply(p, tslib_1.__spread(paths)));
|
|
70
94
|
};
|
|
71
|
-
NodeJSFileSystem.prototype.dirname = function (file) {
|
|
95
|
+
NodeJSFileSystem.prototype.dirname = function (file) {
|
|
96
|
+
return this.normalize(p.dirname(file));
|
|
97
|
+
};
|
|
72
98
|
NodeJSFileSystem.prototype.join = function (basePath) {
|
|
73
99
|
var paths = [];
|
|
74
100
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
@@ -76,16 +102,24 @@
|
|
|
76
102
|
}
|
|
77
103
|
return this.normalize(p.join.apply(p, tslib_1.__spread([basePath], paths)));
|
|
78
104
|
};
|
|
79
|
-
NodeJSFileSystem.prototype.isRoot = function (path) {
|
|
80
|
-
|
|
105
|
+
NodeJSFileSystem.prototype.isRoot = function (path) {
|
|
106
|
+
return this.dirname(path) === this.normalize(path);
|
|
107
|
+
};
|
|
108
|
+
NodeJSFileSystem.prototype.isRooted = function (path) {
|
|
109
|
+
return p.isAbsolute(path);
|
|
110
|
+
};
|
|
81
111
|
NodeJSFileSystem.prototype.relative = function (from, to) {
|
|
82
112
|
return helpers_1.relativeFrom(this.normalize(p.relative(from, to)));
|
|
83
113
|
};
|
|
84
114
|
NodeJSFileSystem.prototype.basename = function (filePath, extension) {
|
|
85
115
|
return p.basename(filePath, extension);
|
|
86
116
|
};
|
|
87
|
-
NodeJSFileSystem.prototype.extname = function (path) {
|
|
88
|
-
|
|
117
|
+
NodeJSFileSystem.prototype.extname = function (path) {
|
|
118
|
+
return p.extname(path);
|
|
119
|
+
};
|
|
120
|
+
NodeJSFileSystem.prototype.realpath = function (path) {
|
|
121
|
+
return this.resolve(fs.realpathSync(path));
|
|
122
|
+
};
|
|
89
123
|
NodeJSFileSystem.prototype.getDefaultLibLocation = function () {
|
|
90
124
|
return this.resolve(require.resolve('typescript'), '..');
|
|
91
125
|
};
|
|
@@ -115,4 +149,4 @@
|
|
|
115
149
|
return helpers_1.absoluteFrom(str.replace(/\w/g, function (ch) { return ch.toUpperCase() === ch ? ch.toLowerCase() : ch.toUpperCase(); }));
|
|
116
150
|
}
|
|
117
151
|
});
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9qc19maWxlX3N5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0vc3JjL25vZGVfanNfZmlsZV9zeXN0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsOEJBQThCO0lBQzlCLHVCQUF5QjtJQUN6QixrQ0FBb0M7SUFDcEMsd0JBQTBCO0lBQzFCLG1GQUFxRDtJQUdyRDs7T0FFRztJQUNIO1FBQUE7WUFDVSxtQkFBYyxHQUFzQixTQUFTLENBQUM7UUFxRXhELENBQUM7UUFwRUMsaUNBQU0sR0FBTixVQUFPLElBQW9CLElBQWEsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRSxtQ0FBUSxHQUFSLFVBQVMsSUFBb0IsSUFBWSxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixvQ0FBUyxHQUFULFVBQVUsSUFBb0IsRUFBRSxJQUFZLEVBQUUsU0FBMEI7WUFBMUIsMEJBQUEsRUFBQSxpQkFBMEI7WUFDdEUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxxQ0FBVSxHQUFWLFVBQVcsSUFBb0IsSUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxrQ0FBTyxHQUFQLFVBQVEsTUFBc0IsRUFBRSxJQUFvQixJQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMs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QUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ3hELE1BQU0sR0FBRyxDQUFDO2lCQUNYO2FBQ0Y7UUFDSCxDQUFDO1FBQ0gsdUJBQUM7SUFBRCxDQUFDLEFBdEVELElBc0VDO0lBdEVZLDRDQUFnQjtJQXdFN0I7O09BRUc7SUFDSCxTQUFTLGNBQWMsQ0FBQyxHQUFXO1FBQ2pDLE9BQU8sc0JBQVksQ0FDZixHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFBLEVBQUUsSUFBSSxPQUFBLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUE3RCxDQUE2RCxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJub2RlXCIgLz5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIGZzRXh0cmEgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgcCBmcm9tICdwYXRoJztcbmltcG9ydCB7YWJzb2x1dGVGcm9tLCByZWxhdGl2ZUZyb219IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCBGaWxlU3RhdHMsIEZpbGVTeXN0ZW0sIFBhdGhTZWdtZW50LCBQYXRoU3RyaW5nfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBOb2RlLmpzIGZpbGUtc3lzdGVtIChpLmUgdGhlIGBmc2AgcGFja2FnZSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBOb2RlSlNGaWxlU3lzdGVtIGltcGxlbWVudHMgRmlsZVN5c3RlbSB7XG4gIHByaXZhdGUgX2Nhc2VTZW5zaXRpdmU6IGJvb2xlYW58dW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBleGlzdHMocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBib29sZWFuIHsgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aCk7IH1cbiAgcmVhZEZpbGUocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBzdHJpbmcgeyByZXR1cm4gZnMucmVhZEZpbGVTeW5jKHBhdGgsICd1dGY4Jyk7IH1cbiAgd3JpdGVGaWxlKHBhdGg6IEFic29sdXRlRnNQYXRoLCBkYXRhOiBzdHJpbmcsIGV4Y2x1c2l2ZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLCBkYXRhLCBleGNsdXNpdmUgPyB7ZmxhZzogJ3d4J30gOiB1bmRlZmluZWQpO1xuICB9XG4gIHJlbW92ZUZpbGUocGF0aDogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHsgZnMudW5saW5rU3luYyhwYXRoKTsgfVxuICBzeW1saW5rKHRhcmdldDogQWJzb2x1dGVGc1BhdGgsIHBhdGg6IEFic29sdXRlRnNQYXRoKTogdm9pZCB7IGZzLnN5bWxpbmtTeW5jKHRhcmdldCwgcGF0aCk7IH1cbiAgcmVhZGRpcihwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IFBhdGhTZWdtZW50W10geyByZXR1cm4gZnMucmVhZGRpclN5bmMocGF0aCkgYXMgUGF0aFNlZ21lbnRbXTsgfVxuICBsc3RhdChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEZpbGVTdGF0cyB7IHJldHVybiBmcy5sc3RhdFN5bmMocGF0aCk7IH1cbiAgc3RhdChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEZpbGVTdGF0cyB7IHJldHVybiBmcy5zdGF0U3luYyhwYXRoKTsgfVxuICBwd2QoKTogQWJzb2x1dGVGc1BhdGggeyByZXR1cm4gdGhpcy5ub3JtYWxpemUocHJvY2Vzcy5jd2QoKSkgYXMgQWJzb2x1dGVGc1BhdGg7IH1cbiAgY2hkaXIoZGlyOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQgeyBwcm9jZXNzLmNoZGlyKGRpcik7IH1cbiAgY29weUZpbGUoZnJvbTogQWJzb2x1dGVGc1BhdGgsIHRvOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQgeyBmcy5jb3B5RmlsZVN5bmMoZnJvbSwgdG8pOyB9XG4gIG1vdmVGaWxlKGZyb206IEFic29sdXRlRnNQYXRoLCB0bzogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHsgZnMucmVuYW1lU3luYyhmcm9tLCB0byk7IH1cbiAgZW5zdXJlRGlyKHBhdGg6IEFic29sdXRlRnNQYXRoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50czogQWJzb2x1dGVGc1BhdGhbXSA9IFtdO1xuICAgIHdoaWxlICghdGhpcy5pc1Jvb3QocGF0aCkgJiYgIXRoaXMuZXhpc3RzKHBhdGgpKSB7XG4gICAgICBwYXJlbnRzLnB1c2gocGF0aCk7XG4gICAgICBwYXRoID0gdGhpcy5kaXJuYW1lKHBhdGgpO1xuICAgIH1cbiAgICB3aGlsZSAocGFyZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2FmZU1rZGlyKHBhcmVudHMucG9wKCkgISk7XG4gICAgfVxuICB9XG4gIHJlbW92ZURlZXAocGF0aDogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHsgZnNFeHRyYS5yZW1vdmVTeW5jKHBhdGgpOyB9XG4gIGlzQ2FzZVNlbnNpdGl2ZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fY2FzZVNlbnNpdGl2ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9jYXNlU2Vuc2l0aXZlID0gdGhpcy5leGlzdHModG9nZ2xlUGF0aENhc2UoX19maWxlbmFtZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY2FzZVNlbnNpdGl2ZTtcbiAgfVxuICByZXNvbHZlKC4uLnBhdGhzOiBzdHJpbmdbXSk6IEFic29sdXRlRnNQYXRoIHtcbiAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUocC5yZXNvbHZlKC4uLnBhdGhzKSkgYXMgQWJzb2x1dGVGc1BhdGg7XG4gIH1cblxuICBkaXJuYW1lPFQgZXh0ZW5kcyBzdHJpbmc+KGZpbGU6IFQpOiBUIHsgcmV0dXJuIHRoaXMubm9ybWFsaXplKHAuZGlybmFtZShmaWxlKSkgYXMgVDsgfVxuICBqb2luPFQgZXh0ZW5kcyBzdHJpbmc+KGJhc2VQYXRoOiBULCAuLi5wYXRoczogc3RyaW5nW10pOiBUIHtcbiAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUocC5qb2luKGJhc2VQYXRoLCAuLi5wYXRocykpIGFzIFQ7XG4gIH1cbiAgaXNSb290KHBhdGg6IEFic29sdXRlRnNQYXRoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRpcm5hbWUocGF0aCkgPT09IHRoaXMubm9ybWFsaXplKHBhdGgpOyB9XG4gIGlzUm9vdGVkKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gcC5pc0Fic29sdXRlKHBhdGgpOyB9XG4gIHJlbGF0aXZlPFQgZXh0ZW5kcyBQYXRoU3RyaW5nPihmcm9tOiBULCB0bzogVCk6IFBhdGhTZWdtZW50IHtcbiAgICByZXR1cm4gcmVsYXRpdmVGcm9tKHRoaXMubm9ybWFsaXplKHAucmVsYXRpdmUoZnJvbSwgdG8pKSk7XG4gIH1cbiAgYmFzZW5hbWUoZmlsZVBhdGg6IHN0cmluZywgZXh0ZW5zaW9uPzogc3RyaW5nKTogUGF0aFNlZ21lbnQge1xuICAgIHJldHVybiBwLmJhc2VuYW1lKGZpbGVQYXRoLCBleHRlbnNpb24pIGFzIFBhdGhTZWdtZW50O1xuICB9XG4gIGV4dG5hbWUocGF0aDogQWJzb2x1dGVGc1BhdGh8UGF0aFNlZ21lbnQpOiBzdHJpbmcgeyByZXR1cm4gcC5leHRuYW1lKHBhdGgpOyB9XG4gIHJlYWxwYXRoKHBhdGg6IEFic29sdXRlRnNQYXRoKTogQWJzb2x1dGVGc1BhdGggeyByZXR1cm4gdGhpcy5yZXNvbHZlKGZzLnJlYWxwYXRoU3luYyhwYXRoKSk7IH1cbiAgZ2V0RGVmYXVsdExpYkxvY2F0aW9uKCk6IEFic29sdXRlRnNQYXRoIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHJlcXVpcmUucmVzb2x2ZSgndHlwZXNjcmlwdCcpLCAnLi4nKTtcbiAgfVxuICBub3JtYWxpemU8VCBleHRlbmRzIHN0cmluZz4ocGF0aDogVCk6IFQge1xuICAgIC8vIENvbnZlcnQgYmFja3NsYXNoZXMgdG8gZm9yd2FyZCBzbGFzaGVzXG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpIGFzIFQ7XG4gIH1cblxuICBwcml2YXRlIHNhZmVNa2RpcihwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBmcy5ta2RpclN5bmMocGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBJZ25vcmUgdGhlIGVycm9yLCBpZiB0aGUgcGF0aCBhbHJlYWR5IGV4aXN0cyBhbmQgcG9pbnRzIHRvIGEgZGlyZWN0b3J5LlxuICAgICAgLy8gUmUtdGhyb3cgb3RoZXJ3aXNlLlxuICAgICAgaWYgKCF0aGlzLmV4aXN0cyhwYXRoKSB8fCAhdGhpcy5zdGF0KHBhdGgpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRvZ2dsZSB0aGUgY2FzZSBvZiBlYWNoIGNoYXJhY3RlciBpbiBhIGZpbGUgcGF0aC5cbiAqL1xuZnVuY3Rpb24gdG9nZ2xlUGF0aENhc2Uoc3RyOiBzdHJpbmcpOiBBYnNvbHV0ZUZzUGF0aCB7XG4gIHJldHVybiBhYnNvbHV0ZUZyb20oXG4gICAgICBzdHIucmVwbGFjZSgvXFx3L2csIGNoID0+IGNoLnRvVXBwZXJDYXNlKCkgPT09IGNoID8gY2gudG9Mb3dlckNhc2UoKSA6IGNoLnRvVXBwZXJDYXNlKCkpKTtcbn1cbiJdfQ==
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9qc19maWxlX3N5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0vc3JjL25vZGVfanNfZmlsZV9zeXN0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsOEJBQThCO0lBQzlCLHVCQUF5QjtJQUN6QixrQ0FBb0M7SUFDcEMsd0JBQTBCO0lBQzFCLG1GQUFxRDtJQUdyRDs7T0FFRztJQUNIO1FBQUE7WUFDVSxtQkFBYyxHQUFzQixTQUFTLENBQUM7UUF1R3hELENBQUM7UUF0R0MsaUNBQU0sR0FBTixVQUFPLElBQW9CO1lBQ3pCLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsbUNBQVEsR0FBUixVQUFTLElBQW9CO1lBQzNCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELG9DQUFTLEdBQVQsVUFBVSxJQUFvQixFQUFFLElBQVksRUFBRSxTQUEwQjtZQUExQiwwQkFBQSxFQUFBLGlCQUEwQjtZQUN0RSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELHFDQUFVLEdBQVYsVUFBVyxJQUFvQjtZQUM3QixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxrQ0FBTyxHQUFQLFVBQVEsTUFBc0IsRUFBRSxJQUFvQjtZQUNsRCxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztR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QUFzQjtnQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUN4RCxNQUFNLEdBQUcsQ0FBQztpQkFDWDthQUNGO1FBQ0gsQ0FBQztRQUNILHVCQUFDO0lBQUQsQ0FBQyxBQXhHRCxJQXdHQztJQXhHWSw0Q0FBZ0I7SUEwRzdCOztPQUVHO0lBQ0gsU0FBUyxjQUFjLENBQUMsR0FBVztRQUNqQyxPQUFPLHNCQUFZLENBQ2YsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBN0QsQ0FBNkQsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibm9kZVwiIC8+XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBmc0V4dHJhIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHAgZnJvbSAncGF0aCc7XG5pbXBvcnQge2Fic29sdXRlRnJvbSwgcmVsYXRpdmVGcm9tfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgRmlsZVN0YXRzLCBGaWxlU3lzdGVtLCBQYXRoU2VnbWVudCwgUGF0aFN0cmluZ30gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCB0aGUgTm9kZS5qcyBmaWxlLXN5c3RlbSAoaS5lIHRoZSBgZnNgIHBhY2thZ2UpLlxuICovXG5leHBvcnQgY2xhc3MgTm9kZUpTRmlsZVN5c3RlbSBpbXBsZW1lbnRzIEZpbGVTeXN0ZW0ge1xuICBwcml2YXRlIF9jYXNlU2Vuc2l0aXZlOiBib29sZWFufHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZXhpc3RzKHBhdGg6IEFic29sdXRlRnNQYXRoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aCk7XG4gIH1cbiAgcmVhZEZpbGUocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBzdHJpbmcge1xuICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocGF0aCwgJ3V0ZjgnKTtcbiAgfVxuICB3cml0ZUZpbGUocGF0aDogQWJzb2x1dGVGc1BhdGgsIGRhdGE6IHN0cmluZywgZXhjbHVzaXZlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGgsIGRhdGEsIGV4Y2x1c2l2ZSA/IHtmbGFnOiAnd3gnfSA6IHVuZGVmaW5lZCk7XG4gIH1cbiAgcmVtb3ZlRmlsZShwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIGZzLnVubGlua1N5bmMocGF0aCk7XG4gIH1cbiAgc3ltbGluayh0YXJnZXQ6IEFic29sdXRlRnNQYXRoLCBwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIGZzLnN5bWxpbmtTeW5jKHRhcmdldCwgcGF0aCk7XG4gIH1cbiAgcmVhZGRpcihwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IFBhdGhTZWdtZW50W10ge1xuICAgIHJldHVybiBmcy5yZWFkZGlyU3luYyhwYXRoKSBhcyBQYXRoU2VnbWVudFtdO1xuICB9XG4gIGxzdGF0KHBhdGg6IEFic29sdXRlRnNQYXRoKTogRmlsZVN0YXRzIHtcbiAgICByZXR1cm4gZnMubHN0YXRTeW5jKHBhdGgpO1xuICB9XG4gIHN0YXQocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBGaWxlU3RhdHMge1xuICAgIHJldHVybiBmcy5zdGF0U3luYyhwYXRoKTtcbiAgfVxuICBwd2QoKTogQWJzb2x1dGVGc1BhdGgge1xuICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZShwcm9jZXNzLmN3ZCgpKSBhcyBBYnNvbHV0ZUZzUGF0aDtcbiAgfVxuICBjaGRpcihkaXI6IEFic29sdXRlRnNQYXRoKTogdm9pZCB7XG4gICAgcHJvY2Vzcy5jaGRpcihkaXIpO1xuICB9XG4gIGNvcHlGaWxlKGZyb206IEFic29sdXRlRnNQYXRoLCB0bzogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICBmcy5jb3B5RmlsZVN5bmMoZnJvbSwgdG8pO1xuICB9XG4gIG1vdmVGaWxlKGZyb206IEFic29sdXRlRnNQYXRoLCB0bzogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICBmcy5yZW5hbWVTeW5jKGZyb20sIHRvKTtcbiAgfVxuICBlbnN1cmVEaXIocGF0aDogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJlbnRzOiBBYnNvbHV0ZUZzUGF0aFtdID0gW107XG4gICAgd2hpbGUgKCF0aGlzLmlzUm9vdChwYXRoKSAmJiAhdGhpcy5leGlzdHMocGF0aCkpIHtcbiAgICAgIHBhcmVudHMucHVzaChwYXRoKTtcbiAgICAgIHBhdGggPSB0aGlzLmRpcm5hbWUocGF0aCk7XG4gICAgfVxuICAgIHdoaWxlIChwYXJlbnRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zYWZlTWtkaXIocGFyZW50cy5wb3AoKSEpO1xuICAgIH1cbiAgfVxuICByZW1vdmVEZWVwKHBhdGg6IEFic29sdXRlRnNQYXRoKTogdm9pZCB7XG4gICAgZnNFeHRyYS5yZW1vdmVTeW5jKHBhdGgpO1xuICB9XG4gIGlzQ2FzZVNlbnNpdGl2ZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fY2FzZVNlbnNpdGl2ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9jYXNlU2Vuc2l0aXZlID0gdGhpcy5leGlzdHModG9nZ2xlUGF0aENhc2UoX19maWxlbmFtZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY2FzZVNlbnNpdGl2ZTtcbiAgfVxuICByZXNvbHZlKC4uLnBhdGhzOiBzdHJpbmdbXSk6IEFic29sdXRlRnNQYXRoIHtcbiAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUocC5yZXNvbHZlKC4uLnBhdGhzKSkgYXMgQWJzb2x1dGVGc1BhdGg7XG4gIH1cblxuICBkaXJuYW1lPFQgZXh0ZW5kcyBzdHJpbmc+KGZpbGU6IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUocC5kaXJuYW1lKGZpbGUpKSBhcyBUO1xuICB9XG4gIGpvaW48VCBleHRlbmRzIHN0cmluZz4oYmFzZVBhdGg6IFQsIC4uLnBhdGhzOiBzdHJpbmdbXSk6IFQge1xuICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZShwLmpvaW4oYmFzZVBhdGgsIC4uLnBhdGhzKSkgYXMgVDtcbiAgfVxuICBpc1Jvb3QocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXJuYW1lKHBhdGgpID09PSB0aGlzLm5vcm1hbGl6ZShwYXRoKTtcbiAgfVxuICBpc1Jvb3RlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcC5pc0Fic29sdXRlKHBhdGgpO1xuICB9XG4gIHJlbGF0aXZlPFQgZXh0ZW5kcyBQYXRoU3RyaW5nPihmcm9tOiBULCB0bzogVCk6IFBhdGhTZWdtZW50IHtcbiAgICByZXR1cm4gcmVsYXRpdmVGcm9tKHRoaXMubm9ybWFsaXplKHAucmVsYXRpdmUoZnJvbSwgdG8pKSk7XG4gIH1cbiAgYmFzZW5hbWUoZmlsZVBhdGg6IHN0cmluZywgZXh0ZW5zaW9uPzogc3RyaW5nKTogUGF0aFNlZ21lbnQge1xuICAgIHJldHVybiBwLmJhc2VuYW1lKGZpbGVQYXRoLCBleHRlbnNpb24pIGFzIFBhdGhTZWdtZW50O1xuICB9XG4gIGV4dG5hbWUocGF0aDogQWJzb2x1dGVGc1BhdGh8UGF0aFNlZ21lbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBwLmV4dG5hbWUocGF0aCk7XG4gIH1cbiAgcmVhbHBhdGgocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBBYnNvbHV0ZUZzUGF0aCB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShmcy5yZWFscGF0aFN5bmMocGF0aCkpO1xuICB9XG4gIGdldERlZmF1bHRMaWJMb2NhdGlvbigpOiBBYnNvbHV0ZUZzUGF0aCB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShyZXF1aXJlLnJlc29sdmUoJ3R5cGVzY3JpcHQnKSwgJy4uJyk7XG4gIH1cbiAgbm9ybWFsaXplPFQgZXh0ZW5kcyBzdHJpbmc+KHBhdGg6IFQpOiBUIHtcbiAgICAvLyBDb252ZXJ0IGJhY2tzbGFzaGVzIHRvIGZvcndhcmQgc2xhc2hlc1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKSBhcyBUO1xuICB9XG5cbiAgcHJpdmF0ZSBzYWZlTWtkaXIocGF0aDogQWJzb2x1dGVGc1BhdGgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgZnMubWtkaXJTeW5jKHBhdGgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gSWdub3JlIHRoZSBlcnJvciwgaWYgdGhlIHBhdGggYWxyZWFkeSBleGlzdHMgYW5kIHBvaW50cyB0byBhIGRpcmVjdG9yeS5cbiAgICAgIC8vIFJlLXRocm93IG90aGVyd2lzZS5cbiAgICAgIGlmICghdGhpcy5leGlzdHMocGF0aCkgfHwgIXRoaXMuc3RhdChwYXRoKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUb2dnbGUgdGhlIGNhc2Ugb2YgZWFjaCBjaGFyYWN0ZXIgaW4gYSBmaWxlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIHRvZ2dsZVBhdGhDYXNlKHN0cjogc3RyaW5nKTogQWJzb2x1dGVGc1BhdGgge1xuICByZXR1cm4gYWJzb2x1dGVGcm9tKFxuICAgICAgc3RyLnJlcGxhY2UoL1xcdy9nLCBjaCA9PiBjaC50b1VwcGVyQ2FzZSgpID09PSBjaCA/IGNoLnRvTG93ZXJDYXNlKCkgOiBjaC50b1VwcGVyQ2FzZSgpKSk7XG59XG4iXX0=
|
|
@@ -17,4 +17,4 @@
|
|
|
17
17
|
"use strict";
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
});
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2ZpbGVfc3lzdGVtL3NyYy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQSBgc3RyaW5nYCByZXByZXNlbnRpbmcgYSBzcGVjaWZpYyB0eXBlIG9mIHBhdGgsIHdpdGggYSBwYXJ0aWN1bGFyIGJyYW5kIGBCYC5cbiAqXG4gKiBBIGBzdHJpbmdgIGlzIG5vdCBhc3NpZ25hYmxlIHRvIGEgYEJyYW5kZWRQYXRoYCwgYnV0IGEgYEJyYW5kZWRQYXRoYCBpcyBhc3NpZ25hYmxlIHRvIGEgYHN0cmluZ2AuXG4gKiBUd28gYEJyYW5kZWRQYXRoYHMgd2l0aCBkaWZmZXJlbnQgYnJhbmRzIGFyZSBub3QgbXV0dWFsbHkgYXNzaWduYWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgQnJhbmRlZFBhdGg8QiBleHRlbmRzIHN0cmluZz4gPSBzdHJpbmcme1xuICBfYnJhbmQ6IEI7XG59O1xuXG4vKipcbiAqIEEgZnVsbHkgcXVhbGlmaWVkIHBhdGggaW4gdGhlIGZpbGUgc3lzdGVtLCBpbiBQT1NJWCBmb3JtLlxuICovXG5leHBvcnQgdHlwZSBBYnNvbHV0ZUZzUGF0aCA9IEJyYW5kZWRQYXRoPCdBYnNvbHV0ZUZzUGF0aCc+O1xuXG4vKipcbiAqIEEgcGF0aCB0aGF0J3MgcmVsYXRpdmUgdG8gYW5vdGhlciAodW5zcGVjaWZpZWQpIHJvb3QuXG4gKlxuICogVGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRvIHJlZmVyIHRvIGEgcGh5c2ljYWwgZmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0aFNlZ21lbnQgPSBCcmFuZGVkUGF0aDwnUGF0aFNlZ21lbnQnPjtcblxuLyoqXG4gKiBBIGJhc2ljIGludGVyZmFjZSB0byBhYnN0cmFjdCB0aGUgdW5kZXJseWluZyBmaWxlLXN5c3RlbS5cbiAqXG4gKiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBwcm92aWRlIG1vY2sgZmlsZS1zeXN0ZW1zIGluIHVuaXQgdGVzdHMsXG4gKiBidXQgYWxzbyB0byBjcmVhdGUgY2xldmVyIGZpbGUtc3lzdGVtcyB0aGF0IGhhdmUgZmVhdHVyZXMgc3VjaCBhcyBjYWNoaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTeXN0ZW0ge1xuICBleGlzdHMocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBib29sZWFuO1xuICByZWFkRmlsZShwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHN0cmluZztcbiAgd3JpdGVGaWxlKHBhdGg6IEFic29sdXRlRnNQYXRoLCBkYXRhOiBzdHJpbmcsIGV4Y2x1c2l2ZT86IGJvb2xlYW4pOiB2b2lkO1xuICByZW1vdmVGaWxlKHBhdGg6IEFic29sdXRlRnNQYXRoKTogdm9pZDtcbiAgc3ltbGluayh0YXJnZXQ6IEFic29sdXRlRnNQYXRoLCBwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQ7XG4gIHJlYWRkaXIocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBQYXRoU2VnbWVudFtdO1xuICBsc3RhdChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEZpbGVTdGF0cztcbiAgc3RhdChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEZpbGVTdGF0cztcbiAgcHdkKCk6IEFic29sdXRlRnNQYXRoO1xuICBjaGRpcihwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQ7XG4gIGV4dG5hbWUocGF0aDogQWJzb2x1dGVGc1BhdGh8UGF0aFNlZ21lbnQpOiBzdHJpbmc7XG4gIGNvcHlGaWxlKGZyb206IEFic29sdXRlRnNQYXRoLCB0bzogQWJzb2x1dGVGc1BhdGgpOiB2b2lkO1xuICBtb3ZlRmlsZShmcm9tOiBBYnNvbHV0ZUZzUGF0aCwgdG86IEFic29sdXRlRnNQYXRoKTogdm9pZDtcbiAgZW5zdXJlRGlyKHBhdGg6IEFic29sdXRlRnNQYXRoKTogdm9pZDtcbiAgcmVtb3ZlRGVlcChwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQ7XG4gIGlzQ2FzZVNlbnNpdGl2ZSgpOiBib29sZWFuO1xuICBpc1Jvb3QocGF0aDogQWJzb2x1dGVGc1BhdGgpOiBib29sZWFuO1xuICBpc1Jvb3RlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuO1xuICByZXNvbHZlKC4uLnBhdGhzOiBzdHJpbmdbXSk6IEFic29sdXRlRnNQYXRoO1xuICBkaXJuYW1lPFQgZXh0ZW5kcyBQYXRoU3RyaW5nPihmaWxlOiBUKTogVDtcbiAgam9pbjxUIGV4dGVuZHMgUGF0aFN0cmluZz4oYmFzZVBhdGg6IFQsIC4uLnBhdGhzOiBzdHJpbmdbXSk6IFQ7XG4gIHJlbGF0aXZlPFQgZXh0ZW5kcyBQYXRoU3RyaW5nPihmcm9tOiBULCB0bzogVCk6IFBhdGhTZWdtZW50O1xuICBiYXNlbmFtZShmaWxlUGF0aDogc3RyaW5nLCBleHRlbnNpb24/OiBzdHJpbmcpOiBQYXRoU2VnbWVudDtcbiAgcmVhbHBhdGgoZmlsZVBhdGg6IEFic29sdXRlRnNQYXRoKTogQWJzb2x1dGVGc1BhdGg7XG4gIGdldERlZmF1bHRMaWJMb2NhdGlvbigpOiBBYnNvbHV0ZUZzUGF0aDtcbiAgbm9ybWFsaXplPFQgZXh0ZW5kcyBQYXRoU3RyaW5nPihwYXRoOiBUKTogVDtcbn1cblxuZXhwb3J0IHR5cGUgUGF0aFN0cmluZyA9IHN0cmluZ3xBYnNvbHV0ZUZzUGF0aHxQYXRoU2VnbWVudDtcblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhbiBvYmplY3QgaW4gdGhlIEZpbGVTeXN0ZW0uXG4gKiBUaGlzIGlzIGFuYWxvZ291cyB0byB0aGUgYGZzLlN0YXRzYCBjbGFzcyBpbiBOb2RlLmpzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTdGF0cyB7XG4gIGlzRmlsZSgpOiBib29sZWFuO1xuICBpc0RpcmVjdG9yeSgpOiBib29sZWFuO1xuICBpc1N5bWJvbGljTGluaygpOiBib29sZWFuO1xufVxuIl19
|
|
@@ -34,4 +34,4 @@
|
|
|
34
34
|
}
|
|
35
35
|
exports.getSourceFileOrError = getSourceFileOrError;
|
|
36
36
|
});
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFVQSxJQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0lBRWxEOztPQUVHO0lBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsSUFBWTtRQUM5QyxpREFBaUQ7UUFDakQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBSEQsa0RBR0M7SUFFRDs7T0FFRztJQUNILFNBQWdCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRkQsd0NBRUM7SUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxPQUFtQixFQUFFLFFBQXdCO1FBQ2hGLElBQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQTZCLFFBQVEsaUNBQ2pELE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLENBQUMsUUFBUSxFQUFYLENBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUcsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBUEQsb0RBT0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7QWJzb2x1dGVGc1BhdGh9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBUU19EVFNfSlNfRVhURU5TSU9OID0gLyg/OlxcLmQpP1xcLnRzJHxcXC5qcyQvO1xuXG4vKipcbiAqIENvbnZlcnQgV2luZG93cy1zdHlsZSBzZXBhcmF0b3JzIHRvIFBPU0lYIHNlcGFyYXRvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTZXBhcmF0b3JzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFRPRE86IG5vcm1hbGl6ZSBwYXRoIG9ubHkgZm9yIE9TIHRoYXQgbmVlZCBpdC5cbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhIC50cywgLmQudHMsIG9yIC5qcyBleHRlbnNpb24gZnJvbSBhIGZpbGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwRXh0ZW5zaW9uKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoLnJlcGxhY2UoVFNfRFRTX0pTX0VYVEVOU0lPTiwgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U291cmNlRmlsZU9yRXJyb3IocHJvZ3JhbTogdHMuUHJvZ3JhbSwgZmlsZU5hbWU6IEFic29sdXRlRnNQYXRoKTogdHMuU291cmNlRmlsZSB7XG4gIGNvbnN0IHNmID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKGZpbGVOYW1lKTtcbiAgaWYgKHNmID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2dyYW0gZG9lcyBub3QgY29udGFpbiBcIiR7ZmlsZU5hbWV9XCIgLSBhdmFpbGFibGUgZmlsZXMgYXJlICR7XG4gICAgICAgIHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5tYXAoc2YgPT4gc2YuZmlsZU5hbWUpLmpvaW4oJywgJyl9YCk7XG4gIH1cbiAgcmV0dXJuIHNmO1xufVxuIl19
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/imports" />
|
|
9
|
-
export {
|
|
9
|
+
export { AliasingHost, AliasStrategy, PrivateExportAliasingHost, UnifiedModulesAliasingHost } from './src/alias';
|
|
10
10
|
export { ImportRewriter, NoopImportRewriter, R3SymbolsImportRewriter, validateAndRewriteCoreSymbol } from './src/core';
|
|
11
11
|
export { DefaultImportRecorder, DefaultImportTracker, NOOP_DEFAULT_IMPORT_RECORDER } from './src/default';
|
|
12
12
|
export { AbsoluteModuleStrategy, ImportFlags, LocalIdentifierStrategy, LogicalProjectStrategy, ReferenceEmitStrategy, ReferenceEmitter, RelativePathStrategy, UnifiedModulesStrategy } from './src/emitter';
|
|
@@ -40,4 +40,4 @@
|
|
|
40
40
|
var resolver_1 = require("@angular/compiler-cli/src/ngtsc/imports/src/resolver");
|
|
41
41
|
exports.ModuleResolver = resolver_1.ModuleResolver;
|
|
42
42
|
});
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2ltcG9ydHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSCwyRUFBK0c7SUFBekYsZ0NBQUEsYUFBYSxDQUFBO0lBQUUsNENBQUEseUJBQXlCLENBQUE7SUFBRSw2Q0FBQSwwQkFBMEIsQ0FBQTtJQUMxRix5RUFBcUg7SUFBN0Ysb0NBQUEsa0JBQWtCLENBQUE7SUFBRSx5Q0FBQSx1QkFBdUIsQ0FBQTtJQUFFLDhDQUFBLDRCQUE0QixDQUFBO0lBQ2pHLCtFQUF3RztJQUF6RSx5Q0FBQSxvQkFBb0IsQ0FBQTtJQUFFLGlEQUFBLDRCQUE0QixDQUFBO0lBQ2pGLCtFQUEwTTtJQUFsTSwyQ0FBQSxzQkFBc0IsQ0FBQTtJQUFFLGdDQUFBLFdBQVcsQ0FBQTtJQUFFLDRDQUFBLHVCQUF1QixDQUFBO0lBQUUsMkNBQUEsc0JBQXNCLENBQUE7SUFBeUIscUNBQUEsZ0JBQWdCLENBQUE7SUFBRSx5Q0FBQSxvQkFBb0IsQ0FBQTtJQUFFLDJDQUFBLHNCQUFzQixDQUFBO0lBRW5MLHFGQUF5RDtJQUFuQyxpQ0FBQSxTQUFTLENBQUE7SUFDL0IsaUZBQThDO0lBQXRDLG9DQUFBLGNBQWMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IHtBbGlhc2luZ0hvc3QsIEFsaWFzU3RyYXRlZ3ksIFByaXZhdGVFeHBvcnRBbGlhc2luZ0hvc3QsIFVuaWZpZWRNb2R1bGVzQWxpYXNpbmdIb3N0fSBmcm9tICcuL3NyYy9hbGlhcyc7XG5leHBvcnQge0ltcG9ydFJld3JpdGVyLCBOb29wSW1wb3J0UmV3cml0ZXIsIFIzU3ltYm9sc0ltcG9ydFJld3JpdGVyLCB2YWxpZGF0ZUFuZFJld3JpdGVDb3JlU3ltYm9sfSBmcm9tICcuL3NyYy9jb3JlJztcbmV4cG9ydCB7RGVmYXVsdEltcG9ydFJlY29yZGVyLCBEZWZhdWx0SW1wb3J0VHJhY2tlciwgTk9PUF9ERUZBVUxUX0lNUE9SVF9SRUNPUkRFUn0gZnJvbSAnLi9zcmMvZGVmYXVsdCc7XG5leHBvcnQge0Fic29sdXRlTW9kdWxlU3RyYXRlZ3ksIEltcG9ydEZsYWdzLCBMb2NhbElkZW50aWZpZXJTdHJhdGVneSwgTG9naWNhbFByb2plY3RTdHJhdGVneSwgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5LCBSZWZlcmVuY2VFbWl0dGVyLCBSZWxhdGl2ZVBhdGhTdHJhdGVneSwgVW5pZmllZE1vZHVsZXNTdHJhdGVneX0gZnJvbSAnLi9zcmMvZW1pdHRlcic7XG5leHBvcnQge1JlZXhwb3J0fSBmcm9tICcuL3NyYy9yZWV4cG9ydCc7XG5leHBvcnQge093bmluZ01vZHVsZSwgUmVmZXJlbmNlfSBmcm9tICcuL3NyYy9yZWZlcmVuY2VzJztcbmV4cG9ydCB7TW9kdWxlUmVzb2x2ZXJ9IGZyb20gJy4vc3JjL3Jlc29sdmVyJztcbiJdfQ==
|
|
@@ -131,7 +131,9 @@
|
|
|
131
131
|
*
|
|
132
132
|
* Thus, `getAliasIn` always returns `null`.
|
|
133
133
|
*/
|
|
134
|
-
PrivateExportAliasingHost.prototype.getAliasIn = function () {
|
|
134
|
+
PrivateExportAliasingHost.prototype.getAliasIn = function () {
|
|
135
|
+
return null;
|
|
136
|
+
};
|
|
135
137
|
return PrivateExportAliasingHost;
|
|
136
138
|
}());
|
|
137
139
|
exports.PrivateExportAliasingHost = PrivateExportAliasingHost;
|
|
@@ -152,4 +154,4 @@
|
|
|
152
154
|
}());
|
|
153
155
|
exports.AliasStrategy = AliasStrategy;
|
|
154
156
|
});
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2ltcG9ydHMvc3JjL2FsaWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsOENBQTJEO0lBTTNELCtFQUE2RDtJQUs3RCx1REFBdUQ7SUFDdkQsSUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUM7SUFtRTFDOzs7Ozs7T0FNRztJQUNIO1FBQ0Usb0NBQW9CLGtCQUFzQztZQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1lBRTFEOzs7ZUFHRztZQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQU4wQixDQUFDO1FBUTlELHVEQUFrQixHQUFsQixVQUNJLEdBQWdDLEVBQUUsT0FBc0IsRUFBRSxZQUFvQixFQUM5RSxVQUFtQjtZQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLHVGQUF1RjtnQkFDdkYsVUFBVTtnQkFDVix1RkFBdUY7Z0JBQ3ZGLCtCQUErQjtnQkFDL0IsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRDs7O1dBR0c7UUFDSCwrQ0FBVSxHQUFWLFVBQVcsSUFBc0IsRUFBRSxHQUFrQixFQUFFLFVBQW1CO1lBQ3hFLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2YsOEVBQThFO2dCQUM5RSx3QkFBd0I7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCwyREFBMkQ7WUFDM0QsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVGLE9BQU8sSUFBSSx1QkFBWSxDQUFDLEVBQUMsVUFBVSxZQUFBLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQ7OztXQUdHO1FBQ0ssOENBQVMsR0FBakIsVUFBa0IsSUFBc0IsRUFBRSxPQUFzQjtZQUM5RCw0REFBNEQ7WUFDNUQsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUMzRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVyRCxJQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlFLE9BQU8sTUFBTSxHQUFHLFFBQVEsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkQsQ0FBQztRQUNILGlDQUFDO0lBQUQsQ0FBQyxBQWpERCxJQWlEQztJQWpEWSxnRUFBMEI7SUFtRHZDOzs7Ozs7OztPQVFHO0lBQ0g7UUFDRSxtQ0FBb0IsSUFBb0I7WUFBcEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7WUFFeEM7Ozs7O2VBS0c7WUFDTSxzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFSUyxDQUFDO1FBVTVDLHNEQUFrQixHQUFsQixVQUNJLEdBQWdDLEVBQUUsT0FBc0IsRUFBRSxZQUFvQjtZQUNoRixJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDNUIsMEZBQTBGO2dCQUMxRix1Q0FBdUM7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCw4RkFBOEY7WUFDOUYsaUJBQWlCO1lBQ2pCLDhGQUE4RjtZQUM5RixzQ0FBc0M7WUFDdEMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLDZGQUE2RjtnQkFDN0Ysc0NBQXNDO2dCQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF1QyxPQUFPLENBQUMsUUFBVSxDQUFDLENBQUM7YUFDNUU7WUFDRCxJQUFJLEtBQUssR0FBWSxLQUFLLENBQUM7WUFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUs7Z0JBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFO29CQUMzQixLQUFLLEdBQUcsSUFBSSxDQUFDO2lCQUNkO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEtBQUssRUFBRTtnQkFDVCx5RUFBeUU7Z0JBQ3pFLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxPQUFPLHlCQUFhLFlBQVksY0FBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFNLENBQUM7UUFDM0QsQ0FBQztRQUVEOzs7Ozs7Ozs7V0FTRztRQUNILDhDQUFVLEdBQVYsY0FBcUIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLGdDQUFDO0lBQUQsQ0FBQyxBQXBERCxJQW9EQztJQXBEWSw4REFBeUI7SUFzRHRDOzs7T0FHRztJQUNIO1FBQUE7UUFRQSxDQUFDO1FBUEMsNEJBQUksR0FBSixVQUFLLEdBQXVCLEVBQUUsT0FBc0IsRUFBRSxVQUF1QjtZQUMzRSxJQUFJLFVBQVUsR0FBRyxxQkFBVyxDQUFDLFVBQVUsRUFBRTtnQkFDdkMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNuQixDQUFDO1FBQ0gsb0JBQUM7SUFBRCxDQUFDLEFBUkQsSUFRQztJQVJZLHNDQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0V4cHJlc3Npb24sIEV4dGVybmFsRXhwcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7VW5pZmllZE1vZHVsZXNIb3N0fSBmcm9tICcuLi8uLi9jb3JlL2FwaSc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIFJlZmxlY3Rpb25Ib3N0LCBpc05hbWVkQ2xhc3NEZWNsYXJhdGlvbn0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7SW1wb3J0RmxhZ3MsIFJlZmVyZW5jZUVtaXRTdHJhdGVneX0gZnJvbSAnLi9lbWl0dGVyJztcbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuXG5cblxuLy8gRXNjYXBlIGFueXRoaW5nIHRoYXQgaXNuJ3QgYWxwaGFudW1lcmljLCAnLycgb3IgJ18nLlxuY29uc3QgQ0hBUlNfVE9fRVNDQVBFID0gL1teYS16QS1aMC05L19dL2c7XG5cbi8qKlxuICogQSBob3N0IGZvciB0aGUgYWxpYXNpbmcgc3lzdGVtLCB3aGljaCBhbGxvd3MgZm9yIGFsdGVybmF0aXZlIGV4cG9ydHMvaW1wb3J0cyBvZiBkaXJlY3RpdmVzL3BpcGVzLlxuICpcbiAqIEdpdmVuIGFuIGltcG9ydCBvZiBhbiBOZ01vZHVsZSAoZS5nLiBgQ29tbW9uTW9kdWxlYCksIHRoZSBjb21waWxlciBtdXN0IGdlbmVyYXRlIGltcG9ydHMgdG8gdGhlXG4gKiBkaXJlY3RpdmVzIGFuZCBwaXBlcyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSAoZS5nLiBgTmdJZmApIHdoZW4gdGhleSdyZSB1c2VkIGluIGEgcGFydGljdWxhclxuICogdGVtcGxhdGUuIEluIGl0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGlmIHRoZSBjb21waWxlciBpcyBub3QgZGlyZWN0bHkgYWJsZSB0byBpbXBvcnQgdGhlXG4gKiBjb21wb25lbnQgZnJvbSBhbm90aGVyIGZpbGUgd2l0aGluIHRoZSBzYW1lIHByb2plY3QsIGl0IHdpbGwgYXR0ZW1wdCB0byBpbXBvcnQgdGhlIGNvbXBvbmVudFxuICogZnJvbSB0aGUgc2FtZSAoYWJzb2x1dGUpIHBhdGggYnkgd2hpY2ggdGhlIG1vZHVsZSB3YXMgaW1wb3J0ZWQuIFNvIGluIHRoZSBhYm92ZSBleGFtcGxlIGlmXG4gKiBgQ29tbW9uTW9kdWxlYCB3YXMgaW1wb3J0ZWQgZnJvbSAnQGFuZ3VsYXIvY29tbW9uJywgdGhlIGNvbXBpbGVyIHdpbGwgYXR0ZW1wdCB0byBpbXBvcnQgYE5nSWZgXG4gKiBmcm9tICdAYW5ndWxhci9jb21tb24nIGFzIHdlbGwuXG4gKlxuICogVGhlIGFsaWFzaW5nIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCB0aGUgYWJvdmUgbG9naWMgaW4gdHdvIGRpc3RpbmN0IHdheXMuXG4gKlxuICogMSkgSXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIFwiYWxpYXNcIiByZS1leHBvcnRzIGZyb20gZGlmZmVyZW50IGZpbGVzLCB3aGljaCBjYW4gYmUgdXNlZCB3aGVuIHRoZVxuICogICAgdXNlciBoYXNuJ3QgZXhwb3J0ZWQgdGhlIGRpcmVjdGl2ZShzKSBmcm9tIHRoZSBFUyBtb2R1bGUgY29udGFpbmluZyB0aGUgTmdNb2R1bGUuIFRoZXNlIHJlLVxuICogICAgZXhwb3J0cyBjYW4gYWxzbyBiZSBoZWxwZnVsIHdoZW4gdXNpbmcgYSBgVW5pZmllZE1vZHVsZXNIb3N0YCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBpbXBvcnRcbiAqICAgIGxvZ2ljIGRlc2NyaWJlZCBhYm92ZS5cbiAqXG4gKiAyKSBJdCBjYW4gYmUgdXNlZCB0byBnZXQgYW4gYWx0ZXJuYXRpdmUgaW1wb3J0IGV4cHJlc3Npb24gZm9yIGEgZGlyZWN0aXZlIG9yIHBpcGUsIGluc3RlYWQgb2ZcbiAqICAgIHRoZSBpbXBvcnQgdGhhdCB0aGUgbm9ybWFsIGxvZ2ljIHdvdWxkIGFwcGx5LiBUaGUgYWxpYXMgdXNlZCBkZXBlbmRzIG9uIHRoZSBwcm92ZW5hbmNlIG9mIHRoZVxuICogICAgYFJlZmVyZW5jZWAgd2hpY2ggd2FzIG9idGFpbmVkIGZvciB0aGUgZGlyZWN0aXZlL3BpcGUsIHdoaWNoIGlzIHVzdWFsbHkgYSBwcm9wZXJ0eSBvZiBob3cgaXRcbiAqICAgIGNhbWUgdG8gYmUgaW4gYSB0ZW1wbGF0ZSdzIHNjb3BlIChlLmcuIGJ5IHdoaWNoIE5nTW9kdWxlKS5cbiAqXG4gKiBTZWUgdGhlIFJFQURNRS5tZCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgYWxpYXNpbmcgd29ya3Mgd2l0aGluIHRoZSBjb21waWxlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc2luZ0hvc3Qge1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBhbnkgYWxpYXMgcmUtZXhwb3J0cyBhcmUgcmVuZGVyZWQgaW50byAuZC50cyBmaWxlcy5cbiAgICpcbiAgICogVGhpcyBpcyBub3QgYWx3YXlzIG5lY2Vzc2FyeSBmb3IgYWxpYXNpbmcgdG8gZnVuY3Rpb24gY29ycmVjdGx5LCBzbyB0aGlzIGZsYWcgYWxsb3dzIGFuXG4gICAqIGBBbGlhc2luZ0hvc3RgIHRvIGF2b2lkIGNsdXR0ZXJpbmcgdGhlIC5kLnRzIGZpbGVzIGlmIGV4cG9ydHMgYXJlIG5vdCBzdHJpY3RseSBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBhbGlhc0V4cG9ydHNJbkR0czogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGEgbmFtZSBieSB3aGljaCBgZGVjbGAgc2hvdWxkIGJlIHJlLWV4cG9ydGVkIGZyb20gYGNvbnRleHRgLCBkZXBlbmRpbmcgb24gdGhlXG4gICAqIHBhcnRpY3VsYXIgc2V0IG9mIGFsaWFzaW5nIHJ1bGVzIGluIHBsYWNlLlxuICAgKlxuICAgKiBgbWF5YmVBbGlhc1N5bWJvbEFzYCBjYW4gcmV0dXJuIGBudWxsYCwgaW4gd2hpY2ggY2FzZSBubyBhbGlhcyBleHBvcnQgc2hvdWxkIGJlIGdlbmVyYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHJlZiBhIGBSZWZlcmVuY2VgIHRvIHRoZSBkaXJlY3RpdmUvcGlwZSB0byBjb25zaWRlciBmb3IgYWxpYXNpbmcuXG4gICAqIEBwYXJhbSBjb250ZXh0IHRoZSBgdHMuU291cmNlRmlsZWAgaW4gd2hpY2ggdGhlIGFsaWFzIHJlLWV4cG9ydCBtaWdodCBuZWVkIHRvIGJlIGdlbmVyYXRlZC5cbiAgICogQHBhcmFtIG5nTW9kdWxlTmFtZSB0aGUgZGVjbGFyZWQgbmFtZSBvZiB0aGUgYE5nTW9kdWxlYCB3aXRoaW4gYGNvbnRleHRgIGZvciB3aGljaCB0aGUgYWxpYXNcbiAgICogd291bGQgYmUgZ2VuZXJhdGVkLlxuICAgKiBAcGFyYW0gaXNSZUV4cG9ydCB3aGV0aGVyIHRoZSBkaXJlY3RpdmUvcGlwZSB1bmRlciBjb25zaWRlcmF0aW9uIGlzIHJlLWV4cG9ydGVkIGZyb20gYW5vdGhlclxuICAgKiBOZ01vZHVsZSAoYXMgb3Bwb3NlZCB0byBiZWluZyBkZWNsYXJlZCBieSBpdCBkaXJlY3RseSkuXG4gICAqL1xuICBtYXliZUFsaWFzU3ltYm9sQXMoXG4gICAgICByZWY6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPiwgY29udGV4dDogdHMuU291cmNlRmlsZSwgbmdNb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgICBpc1JlRXhwb3J0OiBib29sZWFuKTogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBhbiBgRXhwcmVzc2lvbmAgYnkgd2hpY2ggYGRlY2xgIHNob3VsZCBiZSBpbXBvcnRlZCBmcm9tIGB2aWFgIHVzaW5nIGFuIGFsaWFzIGV4cG9ydFxuICAgKiAod2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBwcmV2aW91c2x5IGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgYHZpYWApLlxuICAgKlxuICAgKiBgZ2V0QWxpYXNJbmAgY2FuIHJldHVybiBgbnVsbGAsIGluIHdoaWNoIGNhc2Ugbm8gYWxpYXMgaXMgbmVlZGVkIHRvIGltcG9ydCBgZGVjbGAgZnJvbSBgdmlhYFxuICAgKiAoYW5kIHRoZSBub3JtYWwgaW1wb3J0IHJ1bGVzIHNob3VsZCBiZSB1c2VkKS5cbiAgICpcbiAgICogQHBhcmFtIGRlY2wgdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSBkaXJlY3RpdmUvcGlwZSB3aGljaCBpcyBiZWluZyBpbXBvcnRlZCwgYW5kIHdoaWNoIG1pZ2h0IGJlXG4gICAqIGFsaWFzZWQuXG4gICAqIEBwYXJhbSB2aWEgdGhlIGB0cy5Tb3VyY2VGaWxlYCB3aGljaCBtaWdodCBjb250YWluIGFuIGFsaWFzIHRvIHRoZVxuICAgKi9cbiAgZ2V0QWxpYXNJbihkZWNsOiBDbGFzc0RlY2xhcmF0aW9uLCB2aWE6IHRzLlNvdXJjZUZpbGUsIGlzUmVFeHBvcnQ6IGJvb2xlYW4pOiBFeHByZXNzaW9ufG51bGw7XG59XG5cbi8qKlxuICogQW4gYEFsaWFzaW5nSG9zdGAgd2hpY2ggZ2VuZXJhdGVzIGFuZCBjb25zdW1lcyBhbGlhcyByZS1leHBvcnRzIHdoZW4gbW9kdWxlIG5hbWVzIGZvciBlYWNoIGZpbGVcbiAqIGFyZSBkZXRlcm1pbmVkIGJ5IGEgYFVuaWZpZWRNb2R1bGVzSG9zdGAuXG4gKlxuICogV2hlbiB1c2luZyBhIGBVbmlmaWVkTW9kdWxlc0hvc3RgLCBhbGlhc2luZyBwcmV2ZW50cyBpc3N1ZXMgd2l0aCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcy4gU2VlIHRoZVxuICogUkVBRE1FLm1kIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBVbmlmaWVkTW9kdWxlc0FsaWFzaW5nSG9zdCBpbXBsZW1lbnRzIEFsaWFzaW5nSG9zdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdW5pZmllZE1vZHVsZXNIb3N0OiBVbmlmaWVkTW9kdWxlc0hvc3QpIHt9XG5cbiAgLyoqXG4gICAqIFdpdGggYSBgVW5pZmllZE1vZHVsZXNIb3N0YCwgYWxpYXNlcyBhcmUgY2hvc2VuIGF1dG9tYXRpY2FsbHkgd2l0aG91dCB0aGUgbmVlZCB0byBsb29rIHRocm91Z2hcbiAgICogdGhlIGV4cG9ydHMgcHJlc2VudCBpbiBhIC5kLnRzIGZpbGUsIHNvIHdlIGNhbiBhdm9pZCBjbHV0dGVyaW5nIHRoZSAuZC50cyBmaWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzRXhwb3J0c0luRHRzID0gZmFsc2U7XG5cbiAgbWF5YmVBbGlhc1N5bWJvbEFzKFxuICAgICAgcmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4sIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIG5nTW9kdWxlTmFtZTogc3RyaW5nLFxuICAgICAgaXNSZUV4cG9ydDogYm9vbGVhbik6IHN0cmluZ3xudWxsIHtcbiAgICBpZiAoIWlzUmVFeHBvcnQpIHtcbiAgICAgIC8vIEFsaWFzaW5nIGlzIHVzZWQgd2l0aCBhIFVuaWZpZWRNb2R1bGVzSG9zdCB0byBwcmV2ZW50IHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzLiBUaHVzLFxuICAgICAgLy8gYWxpYXNlc1xuICAgICAgLy8gb25seSBuZWVkIHRvIGJlIGNyZWF0ZWQgZm9yIGRpcmVjdGl2ZXMvcGlwZXMgd2hpY2ggYXJlIG5vdCBkaXJlY3QgZGVjbGFyYXRpb25zIG9mIGFuXG4gICAgICAvLyBOZ01vZHVsZSB3aGljaCBleHBvcnRzIHRoZW0uXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWxpYXNOYW1lKHJlZi5ub2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gYEV4cHJlc3Npb25gIHRvIGltcG9ydCBgZGVjbGAgZnJvbSBgdmlhYCwgYXNzdW1pbmcgYW4gZXhwb3J0IHdhcyBhZGRlZCB3aGVuIGB2aWFgXG4gICAqIHdhcyBjb21waWxlZCBwZXIgYG1heWJlQWxpYXNTeW1ib2xBc2AgYWJvdmUuXG4gICAqL1xuICBnZXRBbGlhc0luKGRlY2w6IENsYXNzRGVjbGFyYXRpb24sIHZpYTogdHMuU291cmNlRmlsZSwgaXNSZUV4cG9ydDogYm9vbGVhbik6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgaWYgKCFpc1JlRXhwb3J0KSB7XG4gICAgICAvLyBEaXJlY3RseSBleHBvcnRlZCBkaXJlY3RpdmVzL3BpcGVzIGRvbid0IHJlcXVpcmUgYW4gYWxpYXMsIHBlciB0aGUgbG9naWMgaW5cbiAgICAgIC8vIGBtYXliZUFsaWFzU3ltYm9sQXNgLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIHZpYU1vZHVsZSBpcyB0aGUgbW9kdWxlIGl0J2xsIGFjdHVhbGx5IGJlIGltcG9ydGVkIGZyb20uXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHRoaXMudW5pZmllZE1vZHVsZXNIb3N0LmZpbGVOYW1lVG9Nb2R1bGVOYW1lKHZpYS5maWxlTmFtZSwgdmlhLmZpbGVOYW1lKTtcbiAgICByZXR1cm4gbmV3IEV4dGVybmFsRXhwcih7bW9kdWxlTmFtZSwgbmFtZTogdGhpcy5hbGlhc05hbWUoZGVjbCwgdmlhKX0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhbiBhbGlhcyBuYW1lIGJhc2VkIG9uIHRoZSBmdWxsIG1vZHVsZSBuYW1lIG9mIHRoZSBmaWxlIHdoaWNoIGRlY2xhcmVzIHRoZSBhbGlhc2VkXG4gICAqIGRpcmVjdGl2ZS9waXBlLlxuICAgKi9cbiAgcHJpdmF0ZSBhbGlhc05hbWUoZGVjbDogQ2xhc3NEZWNsYXJhdGlvbiwgY29udGV4dDogdHMuU291cmNlRmlsZSk6IHN0cmluZyB7XG4gICAgLy8gVGhlIGRlY2xhcmVkIG1vZHVsZSBpcyB1c2VkIHRvIGdldCB0aGUgbmFtZSBvZiB0aGUgYWxpYXMuXG4gICAgY29uc3QgZGVjbE1vZHVsZSA9IHRoaXMudW5pZmllZE1vZHVsZXNIb3N0LmZpbGVOYW1lVG9Nb2R1bGVOYW1lKFxuICAgICAgICBkZWNsLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSwgY29udGV4dC5maWxlTmFtZSk7XG5cbiAgICBjb25zdCByZXBsYWNlZCA9IGRlY2xNb2R1bGUucmVwbGFjZShDSEFSU19UT19FU0NBUEUsICdfJykucmVwbGFjZSgvXFwvL2csICckJyk7XG4gICAgcmV0dXJuICfJtW5nJCcgKyByZXBsYWNlZCArICckJCcgKyBkZWNsLm5hbWUudGV4dDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGBBbGlhc2luZ0hvc3RgIHdoaWNoIGV4cG9ydHMgZGlyZWN0aXZlcyBmcm9tIGFueSBmaWxlIGNvbnRhaW5pbmcgYW4gTmdNb2R1bGUgaW4gd2hpY2ggdGhleSdyZVxuICogZGVjbGFyZWQvZXhwb3J0ZWQsIHVuZGVyIGEgcHJpdmF0ZSBzeW1ib2wgbmFtZS5cbiAqXG4gKiBUaGVzZSBleHBvcnRzIHN1cHBvcnQgY2FzZXMgd2hlcmUgYW4gTmdNb2R1bGUgaXMgaW1wb3J0ZWQgZGVlcGx5IGZyb20gYW4gYWJzb2x1dGUgbW9kdWxlIHBhdGhcbiAqICh0aGF0IGlzLCBpdCdzIG5vdCBwYXJ0IG9mIGFuIEFuZ3VsYXIgUGFja2FnZSBGb3JtYXQgZW50cnlwb2ludCksIGFuZCB0aGUgY29tcGlsZXIgbmVlZHMgdG9cbiAqIGltcG9ydCBhbnkgbWF0Y2hlZCBkaXJlY3RpdmVzL3BpcGVzIGZyb20gdGhlIHNhbWUgcGF0aCAodG8gdGhlIE5nTW9kdWxlIGZpbGUpLiBTZWUgUkVBRE1FLm1kIGZvclxuICogbW9yZSBkZXRhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgUHJpdmF0ZUV4cG9ydEFsaWFzaW5nSG9zdCBpbXBsZW1lbnRzIEFsaWFzaW5nSG9zdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdDogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgLyoqXG4gICAqIFVuZGVyIHByaXZhdGUgZXhwb3J0IGFsaWFzaW5nLCB0aGUgYEFic29sdXRlTW9kdWxlU3RyYXRlZ3lgIHVzZWQgZm9yIGVtaXR0aW5nIHJlZmVyZW5jZXMgd2lsbFxuICAgKiB3aWxsIHNlbGVjdCBhbGlhc2VkIGV4cG9ydHMgdGhhdCBpdCBmaW5kcyBpbiB0aGUgLmQudHMgZmlsZSBmb3IgYW4gTmdNb2R1bGUncyBmaWxlLiBUaHVzLFxuICAgKiBlbWl0dGluZyB0aGVzZSBleHBvcnRzIGluIC5kLnRzIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHRoZSBgUHJpdmF0ZUV4cG9ydEFsaWFzaW5nSG9zdGAgdG9cbiAgICogZnVuY3Rpb24gY29ycmVjdGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNFeHBvcnRzSW5EdHMgPSB0cnVlO1xuXG4gIG1heWJlQWxpYXNTeW1ib2xBcyhcbiAgICAgIHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBuZ01vZHVsZU5hbWU6IHN0cmluZyk6IHN0cmluZ3xudWxsIHtcbiAgICBpZiAocmVmLmhhc093bmluZ01vZHVsZUd1ZXNzKSB7XG4gICAgICAvLyBTa2lwIG5vZGVzIHRoYXQgYWxyZWFkeSBoYXZlIGFuIGFzc29jaWF0ZWQgYWJzb2x1dGUgbW9kdWxlIHNwZWNpZmllciwgc2luY2UgdGhleSBjYW4gYmVcbiAgICAgIC8vIHNhZmVseSBpbXBvcnRlZCBmcm9tIHRoYXQgc3BlY2lmaWVyLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIExvb2sgZm9yIGEgdXNlci1wcm92aWRlZCBleHBvcnQgb2YgYGRlY2xgIGluIGBjb250ZXh0YC4gSWYgb25lIGV4aXN0cywgdGhlbiBhbiBhbGlhcyBleHBvcnRcbiAgICAvLyBpcyBub3QgbmVlZGVkLlxuICAgIC8vIFRPRE8oYWx4aHViKTogbWF5YmUgYWRkIGEgaG9zdCBtZXRob2QgdG8gY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4gZXhwb3J0IHdpdGhvdXQgZ29pbmdcbiAgICAvLyB0aHJvdWdoIHRoZSBlbnRpcmUgbGlzdCBvZiBleHBvcnRzLlxuICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLmhvc3QuZ2V0RXhwb3J0c09mTW9kdWxlKGNvbnRleHQpO1xuICAgIGlmIChleHBvcnRzID09PSBudWxsKSB7XG4gICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZywgYW5kIG5vIGV4cG9ydHMgd2VyZSBhdmFpbGFibGUgYXQgYWxsLiBCYWlsIHJhdGhlciB0aGFuIHJpc2sgY3JlYXRpbmdcbiAgICAgIC8vIHJlLWV4cG9ydHMgd2hlbiB0aGV5J3JlIG5vdCBuZWVkZWQuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGV4cG9ydHMgb2Y6ICR7Y29udGV4dC5maWxlTmFtZX1gKTtcbiAgICB9XG4gICAgbGV0IGZvdW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgZXhwb3J0cy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgIGlmICh2YWx1ZS5ub2RlID09PSByZWYubm9kZSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICAvLyBUaGUgbW9kdWxlIGV4cG9ydHMgdGhlIGRlY2xhcmVkIGNsYXNzIGRpcmVjdGx5LCBubyBhbGlhcyBpcyBuZWNlc3NhcnkuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGDJtW5nRXhwb3J0ybUke25nTW9kdWxlTmFtZX3JtSR7cmVmLm5vZGUubmFtZS50ZXh0fWA7XG4gIH1cblxuICAvKipcbiAgICogQSBgUHJpdmF0ZUV4cG9ydEFsaWFzaW5nSG9zdGAgb25seSBnZW5lcmF0ZXMgcmUtZXhwb3J0cyBhbmQgZG9lcyBub3QgZGlyZWN0IHRoZSBjb21waWxlciB0b1xuICAgKiBkaXJlY3RseSBjb25zdW1lIHRoZSBhbGlhc2VzIGl0IGNyZWF0ZXMuXG4gICAqXG4gICAqIEluc3RlYWQsIHRoZXkncmUgY29uc3VtZWQgaW5kaXJlY3RseTogYEFic29sdXRlTW9kdWxlU3RyYXRlZ3lgIGBSZWZlcmVuY2VFbWl0dGVyU3RyYXRlZ3lgIHdpbGxcbiAgICogc2VsZWN0IHRoZXNlIGFsaWFzIGV4cG9ydHMgYXV0b21hdGljYWxseSB3aGVuIGxvb2tpbmcgZm9yIGFuIGV4cG9ydCBvZiB0aGUgZGlyZWN0aXZlL3BpcGUgZnJvbVxuICAgKiB0aGUgc2FtZSBwYXRoIGFzIHRoZSBOZ01vZHVsZSB3YXMgaW1wb3J0ZWQuXG4gICAqXG4gICAqIFRodXMsIGBnZXRBbGlhc0luYCBhbHdheXMgcmV0dXJucyBgbnVsbGAuXG4gICAqL1xuICBnZXRBbGlhc0luKCk6IG51bGwgeyByZXR1cm4gbnVsbDsgfVxufVxuXG4vKipcbiAqIEEgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgd2hpY2ggd2lsbCBjb25zdW1lIHRoZSBhbGlhcyBhdHRhY2hlZCB0byBhIHBhcnRpY3VsYXIgYFJlZmVyZW5jZWAgdG8gYVxuICogZGlyZWN0aXZlIG9yIHBpcGUsIGlmIGl0IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFsaWFzU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBlbWl0KHJlZjogUmVmZXJlbmNlPHRzLk5vZGU+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBpbXBvcnRNb2RlOiBJbXBvcnRGbGFncyk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgaWYgKGltcG9ydE1vZGUgJiBJbXBvcnRGbGFncy5Ob0FsaWFzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmLmFsaWFzO1xuICB9XG59XG4iXX0=
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2ltcG9ydHMvc3JjL2FsaWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsOENBQTJEO0lBTTNELCtFQUE2RDtJQUs3RCx1REFBdUQ7SUFDdkQsSUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUM7SUFtRTFDOzs7Ozs7T0FNRztJQUNIO1FBQ0Usb0NBQW9CLGtCQUFzQztZQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1lBRTFEOzs7ZUFHRztZQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQU4wQixDQUFDO1FBUTlELHVEQUFrQixHQUFsQixVQUNJLEdBQWdDLEVBQUUsT0FBc0IsRUFBRSxZQUFvQixFQUM5RSxVQUFtQjtZQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLHVGQUF1RjtnQkFDdkYsVUFBVTtnQkFDVix1RkFBdUY7Z0JBQ3ZGLCtCQUErQjtnQkFDL0IsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRDs7O1dBR0c7UUFDSCwrQ0FBVSxHQUFWLFVBQVcsSUFBc0IsRUFBRSxHQUFrQixFQUFFLFVBQW1CO1lBQ3hFLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2YsOEVBQThFO2dCQUM5RSx3QkFBd0I7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCwyREFBMkQ7WUFDM0QsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVGLE9BQU8sSUFBSSx1QkFBWSxDQUFDLEVBQUMsVUFBVSxZQUFBLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQ7OztXQUdHO1FBQ0ssOENBQVMsR0FBakIsVUFBa0IsSUFBc0IsRUFBRSxPQUFzQjtZQUM5RCw0REFBNEQ7WUFDNUQsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUMzRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVyRCxJQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlFLE9BQU8sTUFBTSxHQUFHLFFBQVEsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkQsQ0FBQztRQUNILGlDQUFDO0lBQUQsQ0FBQyxBQWpERCxJQWlEQztJQWpEWSxnRUFBMEI7SUFtRHZDOzs7Ozs7OztPQVFHO0lBQ0g7UUFDRSxtQ0FBb0IsSUFBb0I7WUFBcEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7WUFFeEM7Ozs7O2VBS0c7WUFDTSxzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFSUyxDQUFDO1FBVTVDLHNEQUFrQixHQUFsQixVQUNJLEdBQWdDLEVBQUUsT0FBc0IsRUFBRSxZQUFvQjtZQUNoRixJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDNUIsMEZBQTBGO2dCQUMxRix1Q0FBdUM7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCw4RkFBOEY7WUFDOUYsaUJBQWlCO1lBQ2pCLDhGQUE4RjtZQUM5RixzQ0FBc0M7WUFDdEMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLDZGQUE2RjtnQkFDN0Ysc0NBQXNDO2dCQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF1QyxPQUFPLENBQUMsUUFBVSxDQUFDLENBQUM7YUFDNUU7WUFDRCxJQUFJLEtBQUssR0FBWSxLQUFLLENBQUM7WUFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUs7Z0JBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFO29CQUMzQixLQUFLLEdBQUcsSUFBSSxDQUFDO2lCQUNkO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEtBQUssRUFBRTtnQkFDVCx5RUFBeUU7Z0JBQ3pFLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxPQUFPLHlCQUFhLFlBQVksY0FBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFNLENBQUM7UUFDM0QsQ0FBQztRQUVEOzs7Ozs7Ozs7V0FTRztRQUNILDhDQUFVLEdBQVY7WUFDRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDSCxnQ0FBQztJQUFELENBQUMsQUF0REQsSUFzREM7SUF0RFksOERBQXlCO0lBd0R0Qzs7O09BR0c7SUFDSDtRQUFBO1FBUUEsQ0FBQztRQVBDLDRCQUFJLEdBQUosVUFBSyxHQUF1QixFQUFFLE9BQXNCLEVBQUUsVUFBdUI7WUFDM0UsSUFBSSxVQUFVLEdBQUcscUJBQVcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDbkIsQ0FBQztRQUNILG9CQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFSWSxzQ0FBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtFeHByZXNzaW9uLCBFeHRlcm5hbEV4cHJ9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1VuaWZpZWRNb2R1bGVzSG9zdH0gZnJvbSAnLi4vLi4vY29yZS9hcGknO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9uLCBpc05hbWVkQ2xhc3NEZWNsYXJhdGlvbiwgUmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuXG5pbXBvcnQge0ltcG9ydEZsYWdzLCBSZWZlcmVuY2VFbWl0U3RyYXRlZ3l9IGZyb20gJy4vZW1pdHRlcic7XG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi9yZWZlcmVuY2VzJztcblxuXG5cbi8vIEVzY2FwZSBhbnl0aGluZyB0aGF0IGlzbid0IGFscGhhbnVtZXJpYywgJy8nIG9yICdfJy5cbmNvbnN0IENIQVJTX1RPX0VTQ0FQRSA9IC9bXmEtekEtWjAtOS9fXS9nO1xuXG4vKipcbiAqIEEgaG9zdCBmb3IgdGhlIGFsaWFzaW5nIHN5c3RlbSwgd2hpY2ggYWxsb3dzIGZvciBhbHRlcm5hdGl2ZSBleHBvcnRzL2ltcG9ydHMgb2YgZGlyZWN0aXZlcy9waXBlcy5cbiAqXG4gKiBHaXZlbiBhbiBpbXBvcnQgb2YgYW4gTmdNb2R1bGUgKGUuZy4gYENvbW1vbk1vZHVsZWApLCB0aGUgY29tcGlsZXIgbXVzdCBnZW5lcmF0ZSBpbXBvcnRzIHRvIHRoZVxuICogZGlyZWN0aXZlcyBhbmQgcGlwZXMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKGUuZy4gYE5nSWZgKSB3aGVuIHRoZXkncmUgdXNlZCBpbiBhIHBhcnRpY3VsYXJcbiAqIHRlbXBsYXRlLiBJbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBpZiB0aGUgY29tcGlsZXIgaXMgbm90IGRpcmVjdGx5IGFibGUgdG8gaW1wb3J0IHRoZVxuICogY29tcG9uZW50IGZyb20gYW5vdGhlciBmaWxlIHdpdGhpbiB0aGUgc2FtZSBwcm9qZWN0LCBpdCB3aWxsIGF0dGVtcHQgdG8gaW1wb3J0IHRoZSBjb21wb25lbnRcbiAqIGZyb20gdGhlIHNhbWUgKGFic29sdXRlKSBwYXRoIGJ5IHdoaWNoIHRoZSBtb2R1bGUgd2FzIGltcG9ydGVkLiBTbyBpbiB0aGUgYWJvdmUgZXhhbXBsZSBpZlxuICogYENvbW1vbk1vZHVsZWAgd2FzIGltcG9ydGVkIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbicsIHRoZSBjb21waWxlciB3aWxsIGF0dGVtcHQgdG8gaW1wb3J0IGBOZ0lmYFxuICogZnJvbSAnQGFuZ3VsYXIvY29tbW9uJyBhcyB3ZWxsLlxuICpcbiAqIFRoZSBhbGlhc2luZyBzeXN0ZW0gaW50ZXJhY3RzIHdpdGggdGhlIGFib3ZlIGxvZ2ljIGluIHR3byBkaXN0aW5jdCB3YXlzLlxuICpcbiAqIDEpIEl0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBcImFsaWFzXCIgcmUtZXhwb3J0cyBmcm9tIGRpZmZlcmVudCBmaWxlcywgd2hpY2ggY2FuIGJlIHVzZWQgd2hlbiB0aGVcbiAqICAgIHVzZXIgaGFzbid0IGV4cG9ydGVkIHRoZSBkaXJlY3RpdmUocykgZnJvbSB0aGUgRVMgbW9kdWxlIGNvbnRhaW5pbmcgdGhlIE5nTW9kdWxlLiBUaGVzZSByZS1cbiAqICAgIGV4cG9ydHMgY2FuIGFsc28gYmUgaGVscGZ1bCB3aGVuIHVzaW5nIGEgYFVuaWZpZWRNb2R1bGVzSG9zdGAsIHdoaWNoIG92ZXJyaWRlcyB0aGUgaW1wb3J0XG4gKiAgICBsb2dpYyBkZXNjcmliZWQgYWJvdmUuXG4gKlxuICogMikgSXQgY2FuIGJlIHVzZWQgdG8gZ2V0IGFuIGFsdGVybmF0aXZlIGltcG9ydCBleHByZXNzaW9uIGZvciBhIGRpcmVjdGl2ZSBvciBwaXBlLCBpbnN0ZWFkIG9mXG4gKiAgICB0aGUgaW1wb3J0IHRoYXQgdGhlIG5vcm1hbCBsb2dpYyB3b3VsZCBhcHBseS4gVGhlIGFsaWFzIHVzZWQgZGVwZW5kcyBvbiB0aGUgcHJvdmVuYW5jZSBvZiB0aGVcbiAqICAgIGBSZWZlcmVuY2VgIHdoaWNoIHdhcyBvYnRhaW5lZCBmb3IgdGhlIGRpcmVjdGl2ZS9waXBlLCB3aGljaCBpcyB1c3VhbGx5IGEgcHJvcGVydHkgb2YgaG93IGl0XG4gKiAgICBjYW1lIHRvIGJlIGluIGEgdGVtcGxhdGUncyBzY29wZSAoZS5nLiBieSB3aGljaCBOZ01vZHVsZSkuXG4gKlxuICogU2VlIHRoZSBSRUFETUUubWQgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IGFsaWFzaW5nIHdvcmtzIHdpdGhpbiB0aGUgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNpbmdIb3N0IHtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgYW55IGFsaWFzIHJlLWV4cG9ydHMgYXJlIHJlbmRlcmVkIGludG8gLmQudHMgZmlsZXMuXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGFsd2F5cyBuZWNlc3NhcnkgZm9yIGFsaWFzaW5nIHRvIGZ1bmN0aW9uIGNvcnJlY3RseSwgc28gdGhpcyBmbGFnIGFsbG93cyBhblxuICAgKiBgQWxpYXNpbmdIb3N0YCB0byBhdm9pZCBjbHV0dGVyaW5nIHRoZSAuZC50cyBmaWxlcyBpZiBleHBvcnRzIGFyZSBub3Qgc3RyaWN0bHkgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNFeHBvcnRzSW5EdHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBhIG5hbWUgYnkgd2hpY2ggYGRlY2xgIHNob3VsZCBiZSByZS1leHBvcnRlZCBmcm9tIGBjb250ZXh0YCwgZGVwZW5kaW5nIG9uIHRoZVxuICAgKiBwYXJ0aWN1bGFyIHNldCBvZiBhbGlhc2luZyBydWxlcyBpbiBwbGFjZS5cbiAgICpcbiAgICogYG1heWJlQWxpYXNTeW1ib2xBc2AgY2FuIHJldHVybiBgbnVsbGAsIGluIHdoaWNoIGNhc2Ugbm8gYWxpYXMgZXhwb3J0IHNob3VsZCBiZSBnZW5lcmF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSByZWYgYSBgUmVmZXJlbmNlYCB0byB0aGUgZGlyZWN0aXZlL3BpcGUgdG8gY29uc2lkZXIgZm9yIGFsaWFzaW5nLlxuICAgKiBAcGFyYW0gY29udGV4dCB0aGUgYHRzLlNvdXJjZUZpbGVgIGluIHdoaWNoIHRoZSBhbGlhcyByZS1leHBvcnQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmF0ZWQuXG4gICAqIEBwYXJhbSBuZ01vZHVsZU5hbWUgdGhlIGRlY2xhcmVkIG5hbWUgb2YgdGhlIGBOZ01vZHVsZWAgd2l0aGluIGBjb250ZXh0YCBmb3Igd2hpY2ggdGhlIGFsaWFzXG4gICAqIHdvdWxkIGJlIGdlbmVyYXRlZC5cbiAgICogQHBhcmFtIGlzUmVFeHBvcnQgd2hldGhlciB0aGUgZGlyZWN0aXZlL3BpcGUgdW5kZXIgY29uc2lkZXJhdGlvbiBpcyByZS1leHBvcnRlZCBmcm9tIGFub3RoZXJcbiAgICogTmdNb2R1bGUgKGFzIG9wcG9zZWQgdG8gYmVpbmcgZGVjbGFyZWQgYnkgaXQgZGlyZWN0bHkpLlxuICAgKi9cbiAgbWF5YmVBbGlhc1N5bWJvbEFzKFxuICAgICAgcmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4sIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIG5nTW9kdWxlTmFtZTogc3RyaW5nLFxuICAgICAgaXNSZUV4cG9ydDogYm9vbGVhbik6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgYW4gYEV4cHJlc3Npb25gIGJ5IHdoaWNoIGBkZWNsYCBzaG91bGQgYmUgaW1wb3J0ZWQgZnJvbSBgdmlhYCB1c2luZyBhbiBhbGlhcyBleHBvcnRcbiAgICogKHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gcHJldmlvdXNseSBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIGB2aWFgKS5cbiAgICpcbiAgICogYGdldEFsaWFzSW5gIGNhbiByZXR1cm4gYG51bGxgLCBpbiB3aGljaCBjYXNlIG5vIGFsaWFzIGlzIG5lZWRlZCB0byBpbXBvcnQgYGRlY2xgIGZyb20gYHZpYWBcbiAgICogKGFuZCB0aGUgbm9ybWFsIGltcG9ydCBydWxlcyBzaG91bGQgYmUgdXNlZCkuXG4gICAqXG4gICAqIEBwYXJhbSBkZWNsIHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgZGlyZWN0aXZlL3BpcGUgd2hpY2ggaXMgYmVpbmcgaW1wb3J0ZWQsIGFuZCB3aGljaCBtaWdodCBiZVxuICAgKiBhbGlhc2VkLlxuICAgKiBAcGFyYW0gdmlhIHRoZSBgdHMuU291cmNlRmlsZWAgd2hpY2ggbWlnaHQgY29udGFpbiBhbiBhbGlhcyB0byB0aGVcbiAgICovXG4gIGdldEFsaWFzSW4oZGVjbDogQ2xhc3NEZWNsYXJhdGlvbiwgdmlhOiB0cy5Tb3VyY2VGaWxlLCBpc1JlRXhwb3J0OiBib29sZWFuKTogRXhwcmVzc2lvbnxudWxsO1xufVxuXG4vKipcbiAqIEFuIGBBbGlhc2luZ0hvc3RgIHdoaWNoIGdlbmVyYXRlcyBhbmQgY29uc3VtZXMgYWxpYXMgcmUtZXhwb3J0cyB3aGVuIG1vZHVsZSBuYW1lcyBmb3IgZWFjaCBmaWxlXG4gKiBhcmUgZGV0ZXJtaW5lZCBieSBhIGBVbmlmaWVkTW9kdWxlc0hvc3RgLlxuICpcbiAqIFdoZW4gdXNpbmcgYSBgVW5pZmllZE1vZHVsZXNIb3N0YCwgYWxpYXNpbmcgcHJldmVudHMgaXNzdWVzIHdpdGggdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMuIFNlZSB0aGVcbiAqIFJFQURNRS5tZCBmb3IgbW9yZSBkZXRhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgVW5pZmllZE1vZHVsZXNBbGlhc2luZ0hvc3QgaW1wbGVtZW50cyBBbGlhc2luZ0hvc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVuaWZpZWRNb2R1bGVzSG9zdDogVW5pZmllZE1vZHVsZXNIb3N0KSB7fVxuXG4gIC8qKlxuICAgKiBXaXRoIGEgYFVuaWZpZWRNb2R1bGVzSG9zdGAsIGFsaWFzZXMgYXJlIGNob3NlbiBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgdGhlIG5lZWQgdG8gbG9vayB0aHJvdWdoXG4gICAqIHRoZSBleHBvcnRzIHByZXNlbnQgaW4gYSAuZC50cyBmaWxlLCBzbyB3ZSBjYW4gYXZvaWQgY2x1dHRlcmluZyB0aGUgLmQudHMgZmlsZXMuXG4gICAqL1xuICByZWFkb25seSBhbGlhc0V4cG9ydHNJbkR0cyA9IGZhbHNlO1xuXG4gIG1heWJlQWxpYXNTeW1ib2xBcyhcbiAgICAgIHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBuZ01vZHVsZU5hbWU6IHN0cmluZyxcbiAgICAgIGlzUmVFeHBvcnQ6IGJvb2xlYW4pOiBzdHJpbmd8bnVsbCB7XG4gICAgaWYgKCFpc1JlRXhwb3J0KSB7XG4gICAgICAvLyBBbGlhc2luZyBpcyB1c2VkIHdpdGggYSBVbmlmaWVkTW9kdWxlc0hvc3QgdG8gcHJldmVudCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcy4gVGh1cyxcbiAgICAgIC8vIGFsaWFzZXNcbiAgICAgIC8vIG9ubHkgbmVlZCB0byBiZSBjcmVhdGVkIGZvciBkaXJlY3RpdmVzL3BpcGVzIHdoaWNoIGFyZSBub3QgZGlyZWN0IGRlY2xhcmF0aW9ucyBvZiBhblxuICAgICAgLy8gTmdNb2R1bGUgd2hpY2ggZXhwb3J0cyB0aGVtLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFsaWFzTmFtZShyZWYubm9kZSwgY29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGBFeHByZXNzaW9uYCB0byBpbXBvcnQgYGRlY2xgIGZyb20gYHZpYWAsIGFzc3VtaW5nIGFuIGV4cG9ydCB3YXMgYWRkZWQgd2hlbiBgdmlhYFxuICAgKiB3YXMgY29tcGlsZWQgcGVyIGBtYXliZUFsaWFzU3ltYm9sQXNgIGFib3ZlLlxuICAgKi9cbiAgZ2V0QWxpYXNJbihkZWNsOiBDbGFzc0RlY2xhcmF0aW9uLCB2aWE6IHRzLlNvdXJjZUZpbGUsIGlzUmVFeHBvcnQ6IGJvb2xlYW4pOiBFeHByZXNzaW9ufG51bGwge1xuICAgIGlmICghaXNSZUV4cG9ydCkge1xuICAgICAgLy8gRGlyZWN0bHkgZXhwb3J0ZWQgZGlyZWN0aXZlcy9waXBlcyBkb24ndCByZXF1aXJlIGFuIGFsaWFzLCBwZXIgdGhlIGxvZ2ljIGluXG4gICAgICAvLyBgbWF5YmVBbGlhc1N5bWJvbEFzYC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyB2aWFNb2R1bGUgaXMgdGhlIG1vZHVsZSBpdCdsbCBhY3R1YWxseSBiZSBpbXBvcnRlZCBmcm9tLlxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSB0aGlzLnVuaWZpZWRNb2R1bGVzSG9zdC5maWxlTmFtZVRvTW9kdWxlTmFtZSh2aWEuZmlsZU5hbWUsIHZpYS5maWxlTmFtZSk7XG4gICAgcmV0dXJuIG5ldyBFeHRlcm5hbEV4cHIoe21vZHVsZU5hbWUsIG5hbWU6IHRoaXMuYWxpYXNOYW1lKGRlY2wsIHZpYSl9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gYWxpYXMgbmFtZSBiYXNlZCBvbiB0aGUgZnVsbCBtb2R1bGUgbmFtZSBvZiB0aGUgZmlsZSB3aGljaCBkZWNsYXJlcyB0aGUgYWxpYXNlZFxuICAgKiBkaXJlY3RpdmUvcGlwZS5cbiAgICovXG4gIHByaXZhdGUgYWxpYXNOYW1lKGRlY2w6IENsYXNzRGVjbGFyYXRpb24sIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUpOiBzdHJpbmcge1xuICAgIC8vIFRoZSBkZWNsYXJlZCBtb2R1bGUgaXMgdXNlZCB0byBnZXQgdGhlIG5hbWUgb2YgdGhlIGFsaWFzLlxuICAgIGNvbnN0IGRlY2xNb2R1bGUgPSB0aGlzLnVuaWZpZWRNb2R1bGVzSG9zdC5maWxlTmFtZVRvTW9kdWxlTmFtZShcbiAgICAgICAgZGVjbC5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWUsIGNvbnRleHQuZmlsZU5hbWUpO1xuXG4gICAgY29uc3QgcmVwbGFjZWQgPSBkZWNsTW9kdWxlLnJlcGxhY2UoQ0hBUlNfVE9fRVNDQVBFLCAnXycpLnJlcGxhY2UoL1xcLy9nLCAnJCcpO1xuICAgIHJldHVybiAnybVuZyQnICsgcmVwbGFjZWQgKyAnJCQnICsgZGVjbC5uYW1lLnRleHQ7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBgQWxpYXNpbmdIb3N0YCB3aGljaCBleHBvcnRzIGRpcmVjdGl2ZXMgZnJvbSBhbnkgZmlsZSBjb250YWluaW5nIGFuIE5nTW9kdWxlIGluIHdoaWNoIHRoZXkncmVcbiAqIGRlY2xhcmVkL2V4cG9ydGVkLCB1bmRlciBhIHByaXZhdGUgc3ltYm9sIG5hbWUuXG4gKlxuICogVGhlc2UgZXhwb3J0cyBzdXBwb3J0IGNhc2VzIHdoZXJlIGFuIE5nTW9kdWxlIGlzIGltcG9ydGVkIGRlZXBseSBmcm9tIGFuIGFic29sdXRlIG1vZHVsZSBwYXRoXG4gKiAodGhhdCBpcywgaXQncyBub3QgcGFydCBvZiBhbiBBbmd1bGFyIFBhY2thZ2UgRm9ybWF0IGVudHJ5cG9pbnQpLCBhbmQgdGhlIGNvbXBpbGVyIG5lZWRzIHRvXG4gKiBpbXBvcnQgYW55IG1hdGNoZWQgZGlyZWN0aXZlcy9waXBlcyBmcm9tIHRoZSBzYW1lIHBhdGggKHRvIHRoZSBOZ01vZHVsZSBmaWxlKS4gU2VlIFJFQURNRS5tZCBmb3JcbiAqIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGNsYXNzIFByaXZhdGVFeHBvcnRBbGlhc2luZ0hvc3QgaW1wbGVtZW50cyBBbGlhc2luZ0hvc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3Q6IFJlZmxlY3Rpb25Ib3N0KSB7fVxuXG4gIC8qKlxuICAgKiBVbmRlciBwcml2YXRlIGV4cG9ydCBhbGlhc2luZywgdGhlIGBBYnNvbHV0ZU1vZHVsZVN0cmF0ZWd5YCB1c2VkIGZvciBlbWl0dGluZyByZWZlcmVuY2VzIHdpbGxcbiAgICogd2lsbCBzZWxlY3QgYWxpYXNlZCBleHBvcnRzIHRoYXQgaXQgZmluZHMgaW4gdGhlIC5kLnRzIGZpbGUgZm9yIGFuIE5nTW9kdWxlJ3MgZmlsZS4gVGh1cyxcbiAgICogZW1pdHRpbmcgdGhlc2UgZXhwb3J0cyBpbiAuZC50cyBpcyBhIHJlcXVpcmVtZW50IGZvciB0aGUgYFByaXZhdGVFeHBvcnRBbGlhc2luZ0hvc3RgIHRvXG4gICAqIGZ1bmN0aW9uIGNvcnJlY3RseS5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzRXhwb3J0c0luRHRzID0gdHJ1ZTtcblxuICBtYXliZUFsaWFzU3ltYm9sQXMoXG4gICAgICByZWY6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPiwgY29udGV4dDogdHMuU291cmNlRmlsZSwgbmdNb2R1bGVOYW1lOiBzdHJpbmcpOiBzdHJpbmd8bnVsbCB7XG4gICAgaWYgKHJlZi5oYXNPd25pbmdNb2R1bGVHdWVzcykge1xuICAgICAgLy8gU2tpcCBub2RlcyB0aGF0IGFscmVhZHkgaGF2ZSBhbiBhc3NvY2lhdGVkIGFic29sdXRlIG1vZHVsZSBzcGVjaWZpZXIsIHNpbmNlIHRoZXkgY2FuIGJlXG4gICAgICAvLyBzYWZlbHkgaW1wb3J0ZWQgZnJvbSB0aGF0IHNwZWNpZmllci5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBMb29rIGZvciBhIHVzZXItcHJvdmlkZWQgZXhwb3J0IG9mIGBkZWNsYCBpbiBgY29udGV4dGAuIElmIG9uZSBleGlzdHMsIHRoZW4gYW4gYWxpYXMgZXhwb3J0XG4gICAgLy8gaXMgbm90IG5lZWRlZC5cbiAgICAvLyBUT0RPKGFseGh1Yik6IG1heWJlIGFkZCBhIGhvc3QgbWV0aG9kIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIGV4cG9ydCB3aXRob3V0IGdvaW5nXG4gICAgLy8gdGhyb3VnaCB0aGUgZW50aXJlIGxpc3Qgb2YgZXhwb3J0cy5cbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5ob3N0LmdldEV4cG9ydHNPZk1vZHVsZShjb250ZXh0KTtcbiAgICBpZiAoZXhwb3J0cyA9PT0gbnVsbCkge1xuICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcsIGFuZCBubyBleHBvcnRzIHdlcmUgYXZhaWxhYmxlIGF0IGFsbC4gQmFpbCByYXRoZXIgdGhhbiByaXNrIGNyZWF0aW5nXG4gICAgICAvLyByZS1leHBvcnRzIHdoZW4gdGhleSdyZSBub3QgbmVlZGVkLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBleHBvcnRzIG9mOiAke2NvbnRleHQuZmlsZU5hbWV9YCk7XG4gICAgfVxuICAgIGxldCBmb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGV4cG9ydHMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUubm9kZSA9PT0gcmVmLm5vZGUpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgLy8gVGhlIG1vZHVsZSBleHBvcnRzIHRoZSBkZWNsYXJlZCBjbGFzcyBkaXJlY3RseSwgbm8gYWxpYXMgaXMgbmVjZXNzYXJ5LlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBgybVuZ0V4cG9ydMm1JHtuZ01vZHVsZU5hbWV9ybUke3JlZi5ub2RlLm5hbWUudGV4dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgYFByaXZhdGVFeHBvcnRBbGlhc2luZ0hvc3RgIG9ubHkgZ2VuZXJhdGVzIHJlLWV4cG9ydHMgYW5kIGRvZXMgbm90IGRpcmVjdCB0aGUgY29tcGlsZXIgdG9cbiAgICogZGlyZWN0bHkgY29uc3VtZSB0aGUgYWxpYXNlcyBpdCBjcmVhdGVzLlxuICAgKlxuICAgKiBJbnN0ZWFkLCB0aGV5J3JlIGNvbnN1bWVkIGluZGlyZWN0bHk6IGBBYnNvbHV0ZU1vZHVsZVN0cmF0ZWd5YCBgUmVmZXJlbmNlRW1pdHRlclN0cmF0ZWd5YCB3aWxsXG4gICAqIHNlbGVjdCB0aGVzZSBhbGlhcyBleHBvcnRzIGF1dG9tYXRpY2FsbHkgd2hlbiBsb29raW5nIGZvciBhbiBleHBvcnQgb2YgdGhlIGRpcmVjdGl2ZS9waXBlIGZyb21cbiAgICogdGhlIHNhbWUgcGF0aCBhcyB0aGUgTmdNb2R1bGUgd2FzIGltcG9ydGVkLlxuICAgKlxuICAgKiBUaHVzLCBgZ2V0QWxpYXNJbmAgYWx3YXlzIHJldHVybnMgYG51bGxgLlxuICAgKi9cbiAgZ2V0QWxpYXNJbigpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEEgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgd2hpY2ggd2lsbCBjb25zdW1lIHRoZSBhbGlhcyBhdHRhY2hlZCB0byBhIHBhcnRpY3VsYXIgYFJlZmVyZW5jZWAgdG8gYVxuICogZGlyZWN0aXZlIG9yIHBpcGUsIGlmIGl0IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFsaWFzU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBlbWl0KHJlZjogUmVmZXJlbmNlPHRzLk5vZGU+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBpbXBvcnRNb2RlOiBJbXBvcnRGbGFncyk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgaWYgKGltcG9ydE1vZGUgJiBJbXBvcnRGbGFncy5Ob0FsaWFzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmLmFsaWFzO1xuICB9XG59XG4iXX0=
|
|
@@ -23,9 +23,15 @@
|
|
|
23
23
|
var NoopImportRewriter = /** @class */ (function () {
|
|
24
24
|
function NoopImportRewriter() {
|
|
25
25
|
}
|
|
26
|
-
NoopImportRewriter.prototype.shouldImportSymbol = function (symbol, specifier) {
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
NoopImportRewriter.prototype.shouldImportSymbol = function (symbol, specifier) {
|
|
27
|
+
return true;
|
|
28
|
+
};
|
|
29
|
+
NoopImportRewriter.prototype.rewriteSymbol = function (symbol, specifier) {
|
|
30
|
+
return symbol;
|
|
31
|
+
};
|
|
32
|
+
NoopImportRewriter.prototype.rewriteSpecifier = function (specifier, inContextOfFile) {
|
|
33
|
+
return specifier;
|
|
34
|
+
};
|
|
29
35
|
return NoopImportRewriter;
|
|
30
36
|
}());
|
|
31
37
|
exports.NoopImportRewriter = NoopImportRewriter;
|
|
@@ -55,7 +61,9 @@
|
|
|
55
61
|
function R3SymbolsImportRewriter(r3SymbolsPath) {
|
|
56
62
|
this.r3SymbolsPath = r3SymbolsPath;
|
|
57
63
|
}
|
|
58
|
-
R3SymbolsImportRewriter.prototype.shouldImportSymbol = function (symbol, specifier) {
|
|
64
|
+
R3SymbolsImportRewriter.prototype.shouldImportSymbol = function (symbol, specifier) {
|
|
65
|
+
return true;
|
|
66
|
+
};
|
|
59
67
|
R3SymbolsImportRewriter.prototype.rewriteSymbol = function (symbol, specifier) {
|
|
60
68
|
if (specifier !== CORE_MODULE) {
|
|
61
69
|
// This import isn't from core, so ignore it.
|
|
@@ -85,4 +93,4 @@
|
|
|
85
93
|
}
|
|
86
94
|
exports.validateAndRewriteCoreSymbol = validateAndRewriteCoreSymbol;
|
|
87
95
|
});
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILHNFQUF3RDtJQTBCeEQ7O09BRUc7SUFDSDtRQUFBO1FBWUEsQ0FBQztRQVhDLCtDQUFrQixHQUFsQixVQUFtQixNQUFjLEVBQUUsU0FBaUI7WUFDbEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsMENBQWEsR0FBYixVQUFjLE1BQWMsRUFBRSxTQUFpQjtZQUM3QyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsNkNBQWdCLEdBQWhCLFVBQWlCLFNBQWlCLEVBQUUsZUFBdUI7WUFDekQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNILHlCQUFDO0lBQUQsQ0FBQyxBQVpELElBWUM7SUFaWSxnREFBa0I7SUFjL0I7OztPQUdHO0lBQ0gsSUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsQ0FBaUI7UUFDckQsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztRQUM1QyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDO1FBQ3hDLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7UUFDeEMsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztRQUM1QyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7UUFDeEIsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDO1FBQ2hDLENBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUM7UUFDekMsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztRQUN0QyxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUM7UUFDbEMsQ0FBQyx1QkFBdUIsRUFBRSx1QkFBdUIsQ0FBQztRQUNsRCxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDO0tBQ3hDLENBQUMsQ0FBQztJQUVILElBQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQztJQUVwQzs7O09BR0c7SUFDSDtRQUNFLGlDQUFvQixhQUFxQjtZQUFyQixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUFHLENBQUM7UUFFN0Msb0RBQWtCLEdBQWxCLFVBQW1CLE1BQWMsRUFBRSxTQUFpQjtZQUNsRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCwrQ0FBYSxHQUFiLFVBQWMsTUFBYyxFQUFFLFNBQWlCO1lBQzdDLElBQUksU0FBUyxLQUFLLFdBQVcsRUFBRTtnQkFDN0IsNkNBQTZDO2dCQUM3QyxPQUFPLE1BQU0sQ0FBQzthQUNmO1lBRUQsT0FBTyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsa0RBQWdCLEdBQWhCLFVBQWlCLFNBQWlCLEVBQUUsZUFBdUI7WUFDekQsSUFBSSxTQUFTLEtBQUssV0FBVyxFQUFFO2dCQUM3Qix3Q0FBd0M7Z0JBQ3hDLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsSUFBTSx1QkFBdUIsR0FBRywwQkFBbUIsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pGLElBQUksdUJBQXVCLEtBQUssSUFBSSxFQUFFO2dCQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFtQyxXQUFXLFVBQUssZUFBZSxZQUM5RSxJQUFJLENBQUMsYUFBZSxDQUFDLENBQUM7YUFDM0I7WUFFRCxPQUFPLHVCQUF1QixDQUFDO1FBQ2pDLENBQUM7UUFDSCw4QkFBQztJQUFELENBQUMsQUE5QkQsSUE4QkM7SUE5QlksMERBQXVCO0lBZ0NwQyxTQUFnQiw0QkFBNEIsQ0FBQyxJQUFZO1FBQ3ZELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBK0IsSUFBSSx5QkFBb0IsV0FBYSxDQUFDLENBQUM7U0FDdkY7UUFDRCxPQUFPLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQztJQUMzQyxDQUFDO0lBTEQsb0VBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7cmVsYXRpdmVQYXRoQmV0d2Vlbn0gZnJvbSAnLi4vLi4vdXRpbC9zcmMvcGF0aCc7XG5cbi8qKlxuICogUmV3cml0ZXMgaW1wb3J0cyBvZiBzeW1ib2xzIGJlaW5nIHdyaXR0ZW4gaW50byBnZW5lcmF0ZWQgY29kZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRSZXdyaXRlciB7XG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGdpdmVuIHN5bWJvbCBiZSBpbXBvcnRlZCBhdCBhbGw/XG4gICAqXG4gICAqIElmIGB0cnVlYCwgdGhlIHN5bWJvbCBzaG91bGQgYmUgaW1wb3J0ZWQgZnJvbSB0aGUgZ2l2ZW4gc3BlY2lmaWVyLiBJZiBgZmFsc2VgLCB0aGUgc3ltYm9sXG4gICAqIHNob3VsZCBiZSByZWZlcmVuY2VkIGRpcmVjdGx5LCB3aXRob3V0IGFuIGltcG9ydC5cbiAgICovXG4gIHNob3VsZEltcG9ydFN5bWJvbChzeW1ib2w6IHN0cmluZywgc3BlY2lmaWVyOiBzdHJpbmcpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IHJld3JpdGUgYSByZWZlcmVuY2UgdG8gYW4gaW1wb3J0ZWQgc3ltYm9sLCBjaGFuZ2luZyBlaXRoZXIgdGhlIGJpbmRpbmcgcHJlZml4IG9yIHRoZVxuICAgKiBzeW1ib2wgbmFtZSBpdHNlbGYuXG4gICAqL1xuICByZXdyaXRlU3ltYm9sKHN5bWJvbDogc3RyaW5nLCBzcGVjaWZpZXI6IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWxseSByZXdyaXRlIHRoZSBnaXZlbiBtb2R1bGUgc3BlY2lmaWVyIGluIHRoZSBjb250ZXh0IG9mIGEgZ2l2ZW4gZmlsZS5cbiAgICovXG4gIHJld3JpdGVTcGVjaWZpZXIoc3BlY2lmaWVyOiBzdHJpbmcsIGluQ29udGV4dE9mRmlsZTogc3RyaW5nKTogc3RyaW5nO1xufVxuXG4vKipcbiAqIGBJbXBvcnRSZXdyaXRlcmAgdGhhdCBkb2VzIG5vIHJld3JpdGluZy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5vb3BJbXBvcnRSZXdyaXRlciBpbXBsZW1lbnRzIEltcG9ydFJld3JpdGVyIHtcbiAgc2hvdWxkSW1wb3J0U3ltYm9sKHN5bWJvbDogc3RyaW5nLCBzcGVjaWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV3cml0ZVN5bWJvbChzeW1ib2w6IHN0cmluZywgc3BlY2lmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzeW1ib2w7XG4gIH1cblxuICByZXdyaXRlU3BlY2lmaWVyKHNwZWNpZmllcjogc3RyaW5nLCBpbkNvbnRleHRPZkZpbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNwZWNpZmllcjtcbiAgfVxufVxuXG4vKipcbiAqIEEgbWFwcGluZyBvZiBzdXBwb3J0ZWQgc3ltYm9scyB0aGF0IGNhbiBiZSBpbXBvcnRlZCBmcm9tIHdpdGhpbiBAYW5ndWxhci9jb3JlLCBhbmQgdGhlIG5hbWVzIGJ5XG4gKiB3aGljaCB0aGV5J3JlIGV4cG9ydGVkIGZyb20gcjNfc3ltYm9scy5cbiAqL1xuY29uc3QgQ09SRV9TVVBQT1JURURfU1lNQk9MUyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcbiAgWyfJtcm1ZGVmaW5lSW5qZWN0YWJsZScsICfJtcm1ZGVmaW5lSW5qZWN0YWJsZSddLFxuICBbJ8m1ybVkZWZpbmVJbmplY3RvcicsICfJtcm1ZGVmaW5lSW5qZWN0b3InXSxcbiAgWyfJtcm1ZGVmaW5lTmdNb2R1bGUnLCAnybXJtWRlZmluZU5nTW9kdWxlJ10sXG4gIFsnybXJtXNldE5nTW9kdWxlU2NvcGUnLCAnybXJtXNldE5nTW9kdWxlU2NvcGUnXSxcbiAgWyfJtcm1aW5qZWN0JywgJ8m1ybVpbmplY3QnXSxcbiAgWyfJtcm1RmFjdG9yeURlZicsICfJtcm1RmFjdG9yeURlZiddLFxuICBbJ8m1c2V0Q2xhc3NNZXRhZGF0YScsICdzZXRDbGFzc01ldGFkYXRhJ10sXG4gIFsnybXJtUluamVjdGFibGVEZWYnLCAnybXJtUluamVjdGFibGVEZWYnXSxcbiAgWyfJtcm1SW5qZWN0b3JEZWYnLCAnybXJtUluamVjdG9yRGVmJ10sXG4gIFsnybXJtU5nTW9kdWxlRGVmV2l0aE1ldGEnLCAnybXJtU5nTW9kdWxlRGVmV2l0aE1ldGEnXSxcbiAgWyfJtU5nTW9kdWxlRmFjdG9yeScsICdOZ01vZHVsZUZhY3RvcnknXSxcbl0pO1xuXG5jb25zdCBDT1JFX01PRFVMRSA9ICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBgSW1wb3J0UmV3cml0ZXJgIHRoYXQgcmV3cml0ZXMgaW1wb3J0cyBmcm9tICdAYW5ndWxhci9jb3JlJyB0byBiZSBpbXBvcnRlZCBmcm9tIHRoZSByM19zeW1ib2xzLnRzXG4gKiBmaWxlIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSM1N5bWJvbHNJbXBvcnRSZXdyaXRlciBpbXBsZW1lbnRzIEltcG9ydFJld3JpdGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByM1N5bWJvbHNQYXRoOiBzdHJpbmcpIHt9XG5cbiAgc2hvdWxkSW1wb3J0U3ltYm9sKHN5bWJvbDogc3RyaW5nLCBzcGVjaWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV3cml0ZVN5bWJvbChzeW1ib2w6IHN0cmluZywgc3BlY2lmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzcGVjaWZpZXIgIT09IENPUkVfTU9EVUxFKSB7XG4gICAgICAvLyBUaGlzIGltcG9ydCBpc24ndCBmcm9tIGNvcmUsIHNvIGlnbm9yZSBpdC5cbiAgICAgIHJldHVybiBzeW1ib2w7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlQW5kUmV3cml0ZUNvcmVTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIHJld3JpdGVTcGVjaWZpZXIoc3BlY2lmaWVyOiBzdHJpbmcsIGluQ29udGV4dE9mRmlsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3BlY2lmaWVyICE9PSBDT1JFX01PRFVMRSkge1xuICAgICAgLy8gVGhpcyBtb2R1bGUgaXNuJ3QgY29yZSwgc28gaWdub3JlIGl0LlxuICAgICAgcmV0dXJuIHNwZWNpZmllcjtcbiAgICB9XG5cbiAgICBjb25zdCByZWxhdGl2ZVBhdGhUb1IzU3ltYm9scyA9IHJlbGF0aXZlUGF0aEJldHdlZW4oaW5Db250ZXh0T2ZGaWxlLCB0aGlzLnIzU3ltYm9sc1BhdGgpO1xuICAgIGlmIChyZWxhdGl2ZVBhdGhUb1IzU3ltYm9scyA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmV3cml0ZSBpbXBvcnQgaW5zaWRlICR7Q09SRV9NT0RVTEV9OiAke2luQ29udGV4dE9mRmlsZX0gLT4gJHtcbiAgICAgICAgICB0aGlzLnIzU3ltYm9sc1BhdGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbGF0aXZlUGF0aFRvUjNTeW1ib2xzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFuZFJld3JpdGVDb3JlU3ltYm9sKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghQ09SRV9TVVBQT1JURURfU1lNQk9MUy5oYXMobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEltcG9ydGluZyB1bmV4cGVjdGVkIHN5bWJvbCAke25hbWV9IHdoaWxlIGNvbXBpbGluZyAke0NPUkVfTU9EVUxFfWApO1xuICB9XG4gIHJldHVybiBDT1JFX1NVUFBPUlRFRF9TWU1CT0xTLmdldChuYW1lKSE7XG59XG4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/imports/src/default" />
|
|
9
9
|
import * as ts from 'typescript';
|
|
10
10
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
8
|
(function (factory) {
|
|
9
9
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
10
|
var v = factory(require, exports);
|
|
@@ -105,7 +105,9 @@
|
|
|
105
105
|
DefaultImportTracker.prototype.importPreservingTransformer = function () {
|
|
106
106
|
var _this = this;
|
|
107
107
|
return function (context) {
|
|
108
|
-
return function (sf) {
|
|
108
|
+
return function (sf) {
|
|
109
|
+
return _this.transformSourceFile(sf);
|
|
110
|
+
};
|
|
109
111
|
};
|
|
110
112
|
};
|
|
111
113
|
/**
|
|
@@ -162,4 +164,4 @@
|
|
|
162
164
|
}());
|
|
163
165
|
exports.DefaultImportTracker = DefaultImportTracker;
|
|
164
166
|
});
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvZGVmYXVsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0VBTUU7Ozs7Ozs7Ozs7OztJQUVGLCtCQUFpQztJQUVqQyxrRkFBd0Q7SUE2QnhEOzs7OztPQUtHO0lBQ1UsUUFBQSw0QkFBNEIsR0FBMEI7UUFDakUsd0JBQXdCLEVBQUUsVUFBQyxFQUFpQixJQUFLLE9BQUEsS0FBSSxFQUFFLEVBQU4sQ0FBTTtRQUN2RCxvQkFBb0IsRUFBRSxVQUFDLEVBQWlCLElBQUssT0FBQSxLQUFJLEVBQUUsRUFBTixDQUFNO0tBQ3BELENBQUM7SUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E2Qkc7SUFDSDtRQUFBO1lBQ0U7OztlQUdHO1lBQ0ssMEJBQXFCLEdBQ3pCLElBQUksR0FBRyxFQUEyRCxDQUFDO1lBRXZFOzs7ZUFHRztZQUNLLDRCQUF1QixHQUFHLElBQUksR0FBRyxFQUE0QyxDQUFDO1FBK0Z4RixDQUFDO1FBOUZDLHVEQUF3QixHQUF4QixVQUF5QixFQUFpQixFQUFFLElBQTBCO1lBQ3BFLElBQU0sRUFBRSxHQUFHLDBCQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxFQUF1QyxDQUFDLENBQUM7YUFDcEY7WUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELG1EQUFvQixHQUFwQixV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QUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNILDJCQUFDO0lBQUQsQ0FBQyxBQTNHRCxJQTJHQztJQTNHWSxvREFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQGxpY2Vuc2VcbiogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4qXG4qIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4qIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldFNvdXJjZUZpbGV9IGZyb20gJy4uLy4uL3V0aWwvc3JjL3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhbmQgcmVjb3JkcyB1c2FnZXMgb2YgYHRzLklkZW50aWZlcmBzIHRoYXQgY2FtZSBmcm9tIGRlZmF1bHQgaW1wb3J0IHN0YXRlbWVudHMuXG4gKlxuICogU2VlIGBEZWZhdWx0SW1wb3J0VHJhY2tlcmAgZm9yIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdEltcG9ydFJlY29yZGVyIHtcbiAgLyoqXG4gICAqIFJlY29yZCBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGEgYHRzLklkZW50aWZpZXJgIHdoaWNoIG1pZ2h0IGJlIGVtaXR0ZWQgYW5kIHRoZVxuICAgKiBgdHMuSW1wb3J0RGVjbGFyYXRpb25gIGZyb20gd2hpY2ggaXQgY2FtZS5cbiAgICpcbiAgICogQWxvbmUsIHRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgYXMgdGhlIGB0cy5JZGVudGlmaWVyYCBtaWdodCBub3QgYmUgdXNlZCBpbiB0aGUgb3V0cHV0LlxuICAgKiBUaGUgaWRlbnRpZmllciBtdXN0IGxhdGVyIGJlIG1hcmtlZCBhcyB1c2VkIHdpdGggYHJlY29yZFVzZWRJZGVudGlmaWVyYCBpbiBvcmRlciBmb3IgaXRzXG4gICAqIGltcG9ydCB0byBiZSBwcmVzZXJ2ZWQuXG4gICAqL1xuICByZWNvcmRJbXBvcnRlZElkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIsIGRlY2w6IHRzLkltcG9ydERlY2xhcmF0aW9uKTogdm9pZDtcblxuICAvKipcbiAgICogUmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIGdpdmVuIGB0cy5JZGVudGlmZXJgIHdpbGwgYmUgZW1pdHRlZCwgYW5kIHRodXMgaXRzXG4gICAqIGB0cy5JbXBvcnREZWNsYXJhdGlvbmAsIGlmIGl0IHdhcyBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBkZWZhdWx0IGltcG9ydCwgbXVzdCBiZSBwcmVzZXJ2ZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgc2FmZWx5IGZvciBhbnkgYHRzLklkZW50aWZlcmAsIHJlZ2FyZGxlc3Mgb2YgaXRzIG9yaWdpbi4gSXQgd2lsbCBvbmx5XG4gICAqIGhhdmUgYW4gZWZmZWN0IGlmIHRoZSBpZGVudGlmaWVyIGNhbWUgZnJvbSBhIGB0cy5JbXBvcnREZWNsYXJhdGlvbmAgZGVmYXVsdCBpbXBvcnQgd2hpY2ggd2FzXG4gICAqIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3aXRoIGByZWNvcmRJbXBvcnRlZElkZW50aWZpZXJgLlxuICAgKi9cbiAgcmVjb3JkVXNlZElkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIGltcGxlbWVudGF0aW9uIG9mIGBEZWZhdWx0SW1wb3J0UmVjb3JkZXJgIHdoaWNoIGRvZXMgbm90aGluZy5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGRlZmF1bHQgaW1wb3J0IHRyYWNraW5nIGlzbid0IHJlcXVpcmVkLCBzdWNoIGFzIHdoZW4gZW1pdHRpbmcgLmQudHMgY29kZVxuICogb3IgZm9yIG5nY2MuXG4gKi9cbmV4cG9ydCBjb25zdCBOT09QX0RFRkFVTFRfSU1QT1JUX1JFQ09SREVSOiBEZWZhdWx0SW1wb3J0UmVjb3JkZXIgPSB7XG4gIHJlY29yZEltcG9ydGVkSWRlbnRpZmllcjogKGlkOiB0cy5JZGVudGlmaWVyKSA9PiB2b2lke30sXG4gIHJlY29yZFVzZWRJZGVudGlmaWVyOiAoaWQ6IHRzLklkZW50aWZpZXIpID0+IHZvaWR7fSxcbn07XG5cbi8qKlxuICogVHlwZVNjcmlwdCBoYXMgdHJvdWJsZSB3aXRoIGdlbmVyYXRpbmcgZGVmYXVsdCBpbXBvcnRzIGluc2lkZSBvZiB0cmFuc2Zvcm1lcnMgZm9yIHNvbWUgbW9kdWxlXG4gKiBmb3JtYXRzLiBUaGUgaXNzdWUgaXMgdGhhdCBmb3IgdGhlIHN0YXRlbWVudDpcbiAqXG4gKiBpbXBvcnQgWCBmcm9tICdzb21lL21vZHVsZSc7XG4gKiBjb25zb2xlLmxvZyhYKTtcbiAqXG4gKiBUeXBlU2NyaXB0IHdpbGwgbm90IHVzZSB0aGUgXCJYXCIgbmFtZSBpbiBnZW5lcmF0ZWQgY29kZS4gRm9yIG5vcm1hbCB1c2VyIGNvZGUsIHRoaXMgaXMgZmluZVxuICogYmVjYXVzZSByZWZlcmVuY2VzIHRvIFggd2lsbCBhbHNvIGJlIHJlbmFtZWQuIEhvd2V2ZXIsIGlmIGJvdGggdGhlIGltcG9ydCBhbmQgYW55IHJlZmVyZW5jZXMgYXJlXG4gKiBhZGRlZCBpbiBhIHRyYW5zZm9ybWVyLCBUeXBlU2NyaXB0IGRvZXMgbm90IGFzc29jaWF0ZSB0aGUgdHdvLCBhbmQgd2lsbCBsZWF2ZSB0aGUgXCJYXCIgcmVmZXJlbmNlc1xuICogZGFuZ2xpbmcgd2hpbGUgcmVuYW1pbmcgdGhlIGltcG9ydCB2YXJpYWJsZS4gVGhlIGdlbmVyYXRlZCBjb2RlIGxvb2tzIHNvbWV0aGluZyBsaWtlOlxuICpcbiAqIGNvbnN0IG1vZHVsZV8xID0gcmVxdWlyZSgnc29tZS9tb2R1bGUnKTtcbiAqIGNvbnNvbGUubG9nKFgpOyAvLyBub3cgWCBpcyBhIGRhbmdsaW5nIHJlZmVyZW5jZS5cbiAqXG4gKiBUaGVyZWZvcmUsIHdlIGNhbm5vdCBzeW50aGV0aWNhbGx5IGFkZCBkZWZhdWx0IGltcG9ydHMsIGFuZCBtdXN0IHJldXNlIHRoZSBpbXBvcnRzIHRoYXQgdXNlcnNcbiAqIGluY2x1ZGUuIERvaW5nIHRoaXMgcG9zZXMgYSBjaGFsbGVuZ2UgZm9yIGltcG9ydHMgdGhhdCBhcmUgb25seSBjb25zdW1lZCBpbiB0aGUgdHlwZSBwb3NpdGlvbiBpblxuICogdGhlIHVzZXIncyBjb2RlLiBJZiBBbmd1bGFyIHJldXNlcyB0aGUgaW1wb3J0ZWQgc3ltYm9sIGluIGEgdmFsdWUgcG9zaXRpb24gKGZvciBleGFtcGxlLCB3ZVxuICogc2VlIGEgY29uc3RydWN0b3IgcGFyYW1ldGVyIG9mIHR5cGUgRm9vIGFuZCB0cnkgdG8gd3JpdGUgXCJpbmplY3QoRm9vKVwiKSB3ZSB3aWxsIGFsc28gZW5kIHVwIHdpdGhcbiAqIGEgZGFuZ2xpbmcgcmVmZXJlbmNlLCBhcyBUUyB3aWxsIGVsaWRlIHRoZSBpbXBvcnQgYmVjYXVzZSBpdCB3YXMgb25seSB1c2VkIGluIHRoZSB0eXBlIHBvc2l0aW9uXG4gKiBvcmlnaW5hbGx5LlxuICpcbiAqIFRvIGF2b2lkIHRoaXMsIHRoZSBjb21waWxlciBtdXN0IFwidG91Y2hcIiB0aGUgaW1wb3J0cyB3aXRoIGB0cy5nZXRNdXRhYmxlQ2xvbmVgLCBhbmQgc2hvdWxkXG4gKiBvbmx5IGRvIHRoaXMgZm9yIGltcG9ydHMgd2hpY2ggYXJlIGFjdHVhbGx5IGNvbnN1bWVkLiBUaGUgYERlZmF1bHRJbXBvcnRUcmFja2VyYCBrZWVwcyB0cmFjayBvZlxuICogdGhlc2UgaW1wb3J0cyBhcyB0aGV5J3JlIGVuY291bnRlcmVkIGFuZCBlbWl0dGVkLCBhbmQgaW1wbGVtZW50cyBhIHRyYW5zZm9ybSB3aGljaCBjYW4gY29ycmVjdGx5XG4gKiBmbGFnIHRoZSBpbXBvcnRzIGFzIHJlcXVpcmVkLlxuICpcbiAqIFRoaXMgcHJvYmxlbSBkb2VzIG5vdCBleGlzdCBmb3Igbm9uLWRlZmF1bHQgaW1wb3J0cyBhcyB0aGUgY29tcGlsZXIgY2FuIGVhc2lseSBpbnNlcnRcbiAqIFwiaW1wb3J0ICogYXMgWFwiIHN0eWxlIGltcG9ydHMgZm9yIHRob3NlLCBhbmQgdGhlIFwiWFwiIGlkZW50aWZpZXIgc3Vydml2ZXMgdHJhbnNmb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0SW1wb3J0VHJhY2tlciBpbXBsZW1lbnRzIERlZmF1bHRJbXBvcnRSZWNvcmRlciB7XG4gIC8qKlxuICAgKiBBIGBNYXBgIHdoaWNoIHRyYWNrcyB0aGUgYE1hcGAgb2YgZGVmYXVsdCBpbXBvcnQgYHRzLklkZW50aWZpZXJgcyB0byB0aGVpclxuICAgKiBgdHMuSW1wb3J0RGVjbGFyYXRpb25gcy4gVGhlc2UgZGVjbGFyYXRpb25zIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSB1c2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBzb3VyY2VGaWxlVG9JbXBvcnRNYXAgPVxuICAgICAgbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBNYXA8dHMuSWRlbnRpZmllciwgdHMuSW1wb3J0RGVjbGFyYXRpb24+PigpO1xuXG4gIC8qKlxuICAgKiBBIGBNYXBgIHdoaWNoIHRyYWNrcyB0aGUgYFNldGAgb2YgYHRzLkltcG9ydERlY2xhcmF0aW9uYHMgZm9yIGRlZmF1bHQgaW1wb3J0cyB0aGF0IHdlcmUgdXNlZCBpblxuICAgKiBhIGdpdmVuIGB0cy5Tb3VyY2VGaWxlYCBhbmQgbmVlZCB0byBiZSBwcmVzZXJ2ZWQuXG4gICAqL1xuICBwcml2YXRlIHNvdXJjZUZpbGVUb1VzZWRJbXBvcnRzID0gbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBTZXQ8dHMuSW1wb3J0RGVjbGFyYXRpb24+PigpO1xuICByZWNvcmRJbXBvcnRlZElkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIsIGRlY2w6IHRzLkltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgY29uc3Qgc2YgPSBnZXRTb3VyY2VGaWxlKGlkKTtcbiAgICBpZiAoIXRoaXMuc291cmNlRmlsZVRvSW1wb3J0TWFwLmhhcyhzZikpIHtcbiAgICAgIHRoaXMuc291cmNlRmlsZVRvSW1wb3J0TWFwLnNldChzZiwgbmV3IE1hcDx0cy5JZGVudGlmaWVyLCB0cy5JbXBvcnREZWNsYXJhdGlvbj4oKSk7XG4gICAgfVxuICAgIHRoaXMuc291cmNlRmlsZVRvSW1wb3J0TWFwLmdldChzZikgIS5zZXQoaWQsIGRlY2wpO1xuICB9XG5cbiAgcmVjb3JkVXNlZElkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzZiA9IGdldFNvdXJjZUZpbGUoaWQpO1xuICAgIGlmICghdGhpcy5zb3VyY2VGaWxlVG9JbXBvcnRNYXAuaGFzKHNmKSkge1xuICAgICAgLy8gVGhlIGlkZW50aWZpZXIncyBzb3VyY2UgZmlsZSBoYXMgbm8gcmVnaXN0ZXJlZCBkZWZhdWx0IGltcG9ydHMgYXQgYWxsLlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpZGVudGlmZXJUb0RlY2xhcmF0aW9uID0gdGhpcy5zb3VyY2VGaWxlVG9JbXBvcnRNYXAuZ2V0KHNmKSAhO1xuICAgIGlmICghaWRlbnRpZmVyVG9EZWNsYXJhdGlvbi5oYXMoaWQpKSB7XG4gICAgICAvLyBUaGUgaWRlbnRpZmllciBpc24ndCBmcm9tIGEgcmVnaXN0ZXJlZCBkZWZhdWx0IGltcG9ydC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVjbCA9IGlkZW50aWZlclRvRGVjbGFyYXRpb24uZ2V0KGlkKSAhO1xuXG4gICAgLy8gQWRkIHRoZSBkZWZhdWx0IGltcG9ydCBkZWNsYXJhdGlvbiB0byB0aGUgc2V0IG9mIHVzZWQgaW1wb3J0IGRlY2xhcmF0aW9ucyBmb3IgdGhlIGZpbGUuXG4gICAgaWYgKCF0aGlzLnNvdXJjZUZpbGVUb1VzZWRJbXBvcnRzLmhhcyhzZikpIHtcbiAgICAgIHRoaXMuc291cmNlRmlsZVRvVXNlZEltcG9ydHMuc2V0KHNmLCBuZXcgU2V0PHRzLkltcG9ydERlY2xhcmF0aW9uPigpKTtcbiAgICB9XG4gICAgdGhpcy5zb3VyY2VGaWxlVG9Vc2VkSW1wb3J0cy5nZXQoc2YpICEuYWRkKGRlY2wpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGB0cy5UcmFuc2Zvcm1lckZhY3RvcnlgIHdoaWNoIHdpbGwgcHJlc2VydmUgZGVmYXVsdCBpbXBvcnRzIHRoYXQgd2VyZSBwcmV2aW91c2x5IG1hcmtlZFxuICAgKiBhcyB1c2VkLlxuICAgKlxuICAgKiBUaGlzIHRyYW5zZm9ybWVyIG11c3QgcnVuIGFmdGVyIGFueSBvdGhlciB0cmFuc2Zvcm1lcnMgd2hpY2ggY2FsbCBgcmVjb3JkVXNlZElkZW50aWZpZXJgLlxuICAgKi9cbiAgaW1wb3J0UHJlc2VydmluZ1RyYW5zZm9ybWVyKCk6IHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPiB7XG4gICAgcmV0dXJuIChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiAoc2Y6IHRzLlNvdXJjZUZpbGUpID0+IHsgcmV0dXJuIHRoaXMudHJhbnNmb3JtU291cmNlRmlsZShzZik7IH07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGEgYHRzLlNvdXJjZUZpbGVgIGFuZCByZXBsYWNlIGFueSBgdHMuSW1wb3J0RGVjbGFyYXRpb25gcy5cbiAgICovXG4gIHByaXZhdGUgdHJhbnNmb3JtU291cmNlRmlsZShzZjogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICAgIGNvbnN0IG9yaWdpbmFsU2YgPSB0cy5nZXRPcmlnaW5hbE5vZGUoc2YpIGFzIHRzLlNvdXJjZUZpbGU7XG4gICAgLy8gVGFrZSBhIGZhc3QgcGF0aCBpZiBubyBpbXBvcnQgZGVjbGFyYXRpb25zIG5lZWQgdG8gYmUgcHJlc2VydmVkIGluIHRoZSBmaWxlLlxuICAgIGlmICghdGhpcy5zb3VyY2VGaWxlVG9Vc2VkSW1wb3J0cy5oYXMob3JpZ2luYWxTZikpIHtcbiAgICAgIHJldHVybiBzZjtcbiAgICB9XG5cbiAgICAvLyBUaGVyZSBhcmUgZGVjbGFyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwcmVzZXJ2ZWQuXG4gICAgY29uc3QgaW1wb3J0c1RvUHJlc2VydmUgPSB0aGlzLnNvdXJjZUZpbGVUb1VzZWRJbXBvcnRzLmdldChvcmlnaW5hbFNmKSAhO1xuXG4gICAgLy8gR2VuZXJhdGUgYSBuZXcgc3RhdGVtZW50IGxpc3Qgd2hpY2ggcHJlc2VydmVzIGFueSBpbXBvcnRzIHByZXNlbnQgaW4gYGltcG9ydHNUb1ByZXNlcnZlYC5cbiAgICBjb25zdCBzdGF0ZW1lbnRzID0gc2Yuc3RhdGVtZW50cy5tYXAoc3RtdCA9PiB7XG4gICAgICBpZiAodHMuaXNJbXBvcnREZWNsYXJhdGlvbihzdG10KSAmJiBpbXBvcnRzVG9QcmVzZXJ2ZS5oYXMoc3RtdCkpIHtcbiAgICAgICAgLy8gUHJlc2VydmluZyBhbiBpbXBvcnQgdGhhdCdzIG1hcmtlZCBhcyB1bnJlZmVyZW5jZWQgKHR5cGUtb25seSkgaXMgdHJpY2t5IGluIFR5cGVTY3JpcHQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFZhcmlvdXMgYXBwcm9hY2hlcyBoYXZlIGJlZW4gdHJpZWQsIHdpdGggbWl4ZWQgc3VjY2VzczpcbiAgICAgICAgLy9cbiAgICAgICAgLy8gMS4gVXNpbmcgYHRzLnVwZGF0ZUltcG9ydERlY2xhcmF0aW9uYCBkb2VzIG5vdCBjYXVzZSB0aGUgaW1wb3J0IHRvIGJlIHJldGFpbmVkLlxuICAgICAgICAvL1xuICAgICAgICAvLyAyLiBVc2luZyBgdHMuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb25gIHdpdGggdGhlIHNhbWUgYHRzLkltcG9ydENsYXVzZWAgY2F1c2VzIHRoZSBpbXBvcnRcbiAgICAgICAgLy8gICAgdG8gY29ycmVjdGx5IGJlIHJldGFpbmVkLCBidXQgd2hlbiBlbWl0dGluZyBDb21tb25KUyBtb2R1bGUgZm9ybWF0IGNvZGUsIHJlZmVyZW5jZXNcbiAgICAgICAgLy8gICAgdG8gdGhlIGltcG9ydGVkIHZhbHVlIHdpbGwgbm90IG1hdGNoIHRoZSBpbXBvcnQgdmFyaWFibGUuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIDMuIEVtaXR0aW5nIFwiaW1wb3J0ICogYXNcIiBpbXBvcnRzIGluc3RlYWQgZ2VuZXJhdGVzIHRoZSBjb3JyZWN0IGltcG9ydCB2YXJpYWJsZSwgYnV0XG4gICAgICAgIC8vICAgIHJlZmVyZW5jZXMgYXJlIG1pc3NpbmcgdGhlIFwiLmRlZmF1bHRcIiBhY2Nlc3MuIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciB0c2lja2xlIGNvZGVcbiAgICAgICAgLy8gICAgd2l0aCBnb29nLm1vZHVsZSB0cmFuc2Zvcm1hdGlvbnMgYXMgdHNpY2tsZSBzdHJpcHMgdGhlIFwiLmRlZmF1bHRcIiBhbnl3YXkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIDQuIEl0J3MgcG9zc2libGUgdG8gdHJpY2sgVHlwZVNjcmlwdCBieSBzZXR0aW5nIGB0cy5Ob2RlRmxhZy5TeW50aGVzaXplZGAgb24gdGhlIGltcG9ydFxuICAgICAgICAvLyAgICBkZWNsYXJhdGlvbi4gVGhpcyBjYXVzZXMgdGhlIGltcG9ydCB0byBiZSBjb3JyZWN0bHkgcmV0YWluZWQgYW5kIGdlbmVyYXRlZCwgYnV0IGNhblxuICAgICAgICAvLyAgICB2aW9sYXRlIGludmFyaWFudHMgZWxzZXdoZXJlIGluIHRoZSBjb21waWxlciBhbmQgY2F1c2UgY3Jhc2hlcy5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gNS4gVXNpbmcgYHRzLmdldE11dGFibGVDbG9uZWAgc2VlbXMgdG8gY29ycmVjdGx5IHByZXNlcnZlIHRoZSBpbXBvcnQgYW5kIGNvcnJlY3RseVxuICAgICAgICAvLyAgICBnZW5lcmF0ZSByZWZlcmVuY2VzIHRvIHRoZSBpbXBvcnQgdmFyaWFibGUgYWNyb3NzIGFsbCBtb2R1bGUgdHlwZXMuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZXJlZm9yZSwgb3B0aW9uIDUgaXMgdGhlIG9uZSB1c2VkIGhlcmUuIEl0IHNlZW1zIHRvIGJlIGltcGxlbWVudGVkIGFzIHRoZSBjb3JyZWN0IHdheVxuICAgICAgICAvLyB0byBwZXJmb3JtIG9wdGlvbiA0LCB3aGljaCBwcmVzZXJ2ZXMgYWxsIHRoZSBjb21waWxlcidzIGludmFyaWFudHMuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRPRE8oYWx4aHViKTogZGlzY3VzcyB3aXRoIHRoZSBUeXBlU2NyaXB0IHRlYW0gYW5kIGRldGVybWluZSBpZiB0aGVyZSdzIGEgYmV0dGVyIHdheSB0b1xuICAgICAgICAvLyBkZWFsIHdpdGggdGhpcyBpc3N1ZS5cbiAgICAgICAgc3RtdCA9IHRzLmdldE11dGFibGVDbG9uZShzdG10KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdG10O1xuICAgIH0pO1xuXG4gICAgLy8gU2F2ZSBtZW1vcnkgLSB0aGVyZSdzIG5vIG5lZWQgdG8ga2VlcCB0aGVzZSBhcm91bmQgb25jZSB0aGUgdHJhbnNmb3JtIGhhcyBydW4gZm9yIHRoZSBnaXZlblxuICAgIC8vIGZpbGUuXG4gICAgdGhpcy5zb3VyY2VGaWxlVG9JbXBvcnRNYXAuZGVsZXRlKG9yaWdpbmFsU2YpO1xuICAgIHRoaXMuc291cmNlRmlsZVRvVXNlZEltcG9ydHMuZGVsZXRlKG9yaWdpbmFsU2YpO1xuXG4gICAgcmV0dXJuIHRzLnVwZGF0ZVNvdXJjZUZpbGVOb2RlKHNmLCBzdGF0ZW1lbnRzKTtcbiAgfVxufVxuIl19
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvZGVmYXVsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQyxrRkFBd0Q7SUE2QnhEOzs7OztPQUtHO0lBQ1UsUUFBQSw0QkFBNEIsR0FBMEI7UUFDakUsd0JBQXdCLEVBQUUsVUFBQyxFQUFpQixJQUFLLE9BQUEsS0FBSSxFQUFFLEVBQU4sQ0FBTTtRQUN2RCxvQkFBb0IsRUFBRSxVQUFDLEVBQWlCLElBQUssT0FBQSxLQUFJLEVBQUUsRUFBTixDQUFNO0tBQ3BELENBQUM7SUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E2Qkc7SUFDSDtRQUFBO1lBQ0U7OztlQUdHO1lBQ0ssMEJBQXFCLEdBQ3pCLElBQUksR0FBRyxFQUEyRCxDQUFDO1lBRXZFOzs7ZUFHRztZQUNLLDRCQUF1QixHQUFHLElBQUksR0FBRyxFQUE0QyxDQUFDO1FBaUd4RixDQUFDO1FBaEdDLHVEQUF3QixHQUF4QixVQUF5QixFQUFpQixFQUFFLElBQTBCO1lBQ3BFLElBQU0sRUFBRSxHQUFHLDBCQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxFQUF1QyxDQUFDLENBQUM7YUFDcEY7WUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELG1EQUFvQixHQUFwQixV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RCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNILDJCQUFDO0lBQUQsQ0FBQyxBQTdHRCxJQTZHQztJQTdHWSxvREFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldFNvdXJjZUZpbGV9IGZyb20gJy4uLy4uL3V0aWwvc3JjL3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhbmQgcmVjb3JkcyB1c2FnZXMgb2YgYHRzLklkZW50aWZlcmBzIHRoYXQgY2FtZSBmcm9tIGRlZmF1bHQgaW1wb3J0IHN0YXRlbWVudHMuXG4gKlxuICogU2VlIGBEZWZhdWx0SW1wb3J0VHJhY2tlcmAgZm9yIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdEltcG9ydFJlY29yZGVyIHtcbiAgLyoqXG4gICAqIFJlY29yZCBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGEgYHRzLklkZW50aWZpZXJgIHdoaWNoIG1pZ2h0IGJlIGVtaXR0ZWQgYW5kIHRoZVxuICAgKiBgdHMuSW1wb3J0RGVjbGFyYXRpb25gIGZyb20gd2hpY2ggaXQgY2FtZS5cbiAgICpcbiAgICogQWxvbmUsIHRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgYXMgdGhlIGB0cy5JZGVudGlmaWVyYCBtaWdodCBub3QgYmUgdXNlZCBpbiB0aGUgb3V0cHV0LlxuICAgKiBUaGUgaWRlbnRpZmllciBtdXN0IGxhdGVyIGJlIG1hcmtlZCBhcyB1c2VkIHdpdGggYHJlY29yZFVzZWRJZGVudGlmaWVyYCBpbiBvcmRlciBmb3IgaXRzXG4gICAqIGltcG9ydCB0byBiZSBwcmVzZXJ2ZWQuXG4gICAqL1xuICByZWNvcmRJbXBvcnRlZElkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIsIGRlY2w6IHRzLkltcG9ydERlY2xhcmF0aW9uKTogdm9pZDtcblxuICAvKipcbiAgICogUmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIGdpdmVuIGB0cy5JZGVudGlmZXJgIHdpbGwgYmUgZW1pdHRlZCwgYW5kIHRodXMgaXRzXG4gICAqIGB0cy5JbXBvcnREZWNsYXJhdGlvbmAsIGlmIGl0IHdhcyBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBkZWZhdWx0IGltcG9ydCwgbXVzdCBiZSBwcmVzZXJ2ZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgc2FmZWx5IGZvciBhbnkgYHRzLklkZW50aWZlcmAsIHJlZ2FyZGxlc3Mgb2YgaXRzIG9yaWdpbi4gSXQgd2lsbCBvbmx5XG4gICAqIGhhdmUgYW4gZWZmZWN0IGlmIHRoZSBpZGVudGlmaWVyIGNhbWUgZnJvbSBhIGB0cy5JbXBvcnREZWNsYXJhdGlvbmAgZGVmYXVsdCBpbXBvcnQgd2hpY2ggd2FzXG4gICAqIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3aXRoIGByZWNvcmRJbXBvcnRlZElkZW50aWZpZXJgLlxuICAgKi9cbiAgcmVjb3JkVXNlZElkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIGltcGxlbWVudGF0aW9uIG9mIGBEZWZhdWx0SW1wb3J0UmVjb3JkZXJgIHdoaWNoIGRvZXMgbm90aGluZy5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGRlZmF1bHQgaW1wb3J0IHRyYWNraW5nIGlzbid0IHJlcXVpcmVkLCBzdWNoIGFzIHdoZW4gZW1pdHRpbmcgLmQudHMgY29kZVxuICogb3IgZm9yIG5nY2MuXG4gKi9cbmV4cG9ydCBjb25zdCBOT09QX0RFRkFVTFRfSU1QT1JUX1JFQ09SREVSOiBEZWZhdWx0SW1wb3J0UmVjb3JkZXIgPSB7XG4gIHJlY29yZEltcG9ydGVkSWRlbnRpZmllcjogKGlkOiB0cy5JZGVudGlmaWVyKSA9PiB2b2lke30sXG4gIHJlY29yZFVzZWRJZGVudGlmaWVyOiAoaWQ6IHRzLklkZW50aWZpZXIpID0+IHZvaWR7fSxcbn07XG5cbi8qKlxuICogVHlwZVNjcmlwdCBoYXMgdHJvdWJsZSB3aXRoIGdlbmVyYXRpbmcgZGVmYXVsdCBpbXBvcnRzIGluc2lkZSBvZiB0cmFuc2Zvcm1lcnMgZm9yIHNvbWUgbW9kdWxlXG4gKiBmb3JtYXRzLiBUaGUgaXNzdWUgaXMgdGhhdCBmb3IgdGhlIHN0YXRlbWVudDpcbiAqXG4gKiBpbXBvcnQgWCBmcm9tICdzb21lL21vZHVsZSc7XG4gKiBjb25zb2xlLmxvZyhYKTtcbiAqXG4gKiBUeXBlU2NyaXB0IHdpbGwgbm90IHVzZSB0aGUgXCJYXCIgbmFtZSBpbiBnZW5lcmF0ZWQgY29kZS4gRm9yIG5vcm1hbCB1c2VyIGNvZGUsIHRoaXMgaXMgZmluZVxuICogYmVjYXVzZSByZWZlcmVuY2VzIHRvIFggd2lsbCBhbHNvIGJlIHJlbmFtZWQuIEhvd2V2ZXIsIGlmIGJvdGggdGhlIGltcG9ydCBhbmQgYW55IHJlZmVyZW5jZXMgYXJlXG4gKiBhZGRlZCBpbiBhIHRyYW5zZm9ybWVyLCBUeXBlU2NyaXB0IGRvZXMgbm90IGFzc29jaWF0ZSB0aGUgdHdvLCBhbmQgd2lsbCBsZWF2ZSB0aGUgXCJYXCIgcmVmZXJlbmNlc1xuICogZGFuZ2xpbmcgd2hpbGUgcmVuYW1pbmcgdGhlIGltcG9ydCB2YXJpYWJsZS4gVGhlIGdlbmVyYXRlZCBjb2RlIGxvb2tzIHNvbWV0aGluZyBsaWtlOlxuICpcbiAqIGNvbnN0IG1vZHVsZV8xID0gcmVxdWlyZSgnc29tZS9tb2R1bGUnKTtcbiAqIGNvbnNvbGUubG9nKFgpOyAvLyBub3cgWCBpcyBhIGRhbmdsaW5nIHJlZmVyZW5jZS5cbiAqXG4gKiBUaGVyZWZvcmUsIHdlIGNhbm5vdCBzeW50aGV0aWNhbGx5IGFkZCBkZWZhdWx0IGltcG9ydHMsIGFuZCBtdXN0IHJldXNlIHRoZSBpbXBvcnRzIHRoYXQgdXNlcnNcbiAqIGluY2x1ZGUuIERvaW5nIHRoaXMgcG9zZXMgYSBjaGFsbGVuZ2UgZm9yIGltcG9ydHMgdGhhdCBhcmUgb25seSBjb25zdW1lZCBpbiB0aGUgdHlwZSBwb3NpdGlvbiBpblxuICogdGhlIHVzZXIncyBjb2RlLiBJZiBBbmd1bGFyIHJldXNlcyB0aGUgaW1wb3J0ZWQgc3ltYm9sIGluIGEgdmFsdWUgcG9zaXRpb24gKGZvciBleGFtcGxlLCB3ZVxuICogc2VlIGEgY29uc3RydWN0b3IgcGFyYW1ldGVyIG9mIHR5cGUgRm9vIGFuZCB0cnkgdG8gd3JpdGUgXCJpbmplY3QoRm9vKVwiKSB3ZSB3aWxsIGFsc28gZW5kIHVwIHdpdGhcbiAqIGEgZGFuZ2xpbmcgcmVmZXJlbmNlLCBhcyBUUyB3aWxsIGVsaWRlIHRoZSBpbXBvcnQgYmVjYXVzZSBpdCB3YXMgb25seSB1c2VkIGluIHRoZSB0eXBlIHBvc2l0aW9uXG4gKiBvcmlnaW5hbGx5LlxuICpcbiAqIFRvIGF2b2lkIHRoaXMsIHRoZSBjb21waWxlciBtdXN0IFwidG91Y2hcIiB0aGUgaW1wb3J0cyB3aXRoIGB0cy5nZXRNdXRhYmxlQ2xvbmVgLCBhbmQgc2hvdWxkXG4gKiBvbmx5IGRvIHRoaXMgZm9yIGltcG9ydHMgd2hpY2ggYXJlIGFjdHVhbGx5IGNvbnN1bWVkLiBUaGUgYERlZmF1bHRJbXBvcnRUcmFja2VyYCBrZWVwcyB0cmFjayBvZlxuICogdGhlc2UgaW1wb3J0cyBhcyB0aGV5J3JlIGVuY291bnRlcmVkIGFuZCBlbWl0dGVkLCBhbmQgaW1wbGVtZW50cyBhIHRyYW5zZm9ybSB3aGljaCBjYW4gY29ycmVjdGx5XG4gKiBmbGFnIHRoZSBpbXBvcnRzIGFzIHJlcXVpcmVkLlxuICpcbiAqIFRoaXMgcHJvYmxlbSBkb2VzIG5vdCBleGlzdCBmb3Igbm9uLWRlZmF1bHQgaW1wb3J0cyBhcyB0aGUgY29tcGlsZXIgY2FuIGVhc2lseSBpbnNlcnRcbiAqIFwiaW1wb3J0ICogYXMgWFwiIHN0eWxlIGltcG9ydHMgZm9yIHRob3NlLCBhbmQgdGhlIFwiWFwiIGlkZW50aWZpZXIgc3Vydml2ZXMgdHJhbnNmb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0SW1wb3J0VHJhY2tlciBpbXBsZW1lbnRzIERlZmF1bHRJbXBvcnRSZWNvcmRlciB7XG4gIC8qKlxuICAgKiBBIGBNYXBgIHdoaWNoIHRyYWNrcyB0aGUgYE1hcGAgb2YgZGVmYXVsdCBpbXBvcnQgYHRzLklkZW50aWZpZXJgcyB0byB0aGVpclxuICAgKiBgdHMuSW1wb3J0RGVjbGFyYXRpb25gcy4gVGhlc2UgZGVjbGFyYXRpb25zIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSB1c2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBzb3VyY2VGaWxlVG9JbXBvcnRNYXAgPVxuICAgICAgbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBNYXA8dHMuSWRlbnRpZmllciwgdHMuSW1wb3J0RGVjbGFyYXRpb24+PigpO1xuXG4gIC8qKlxuICAgKiBBIGBNYXBgIHdoaWNoIHRyYWNrcyB0aGUgYFNldGAgb2YgYHRzLkltcG9ydERlY2xhcmF0aW9uYHMgZm9yIGRlZmF1bHQgaW1wb3J0cyB0aGF0IHdlcmUgdXNlZCBpblxuICAgKiBhIGdpdmVuIGB0cy5Tb3VyY2VGaWxlYCBhbmQgbmVlZCB0byBiZSBwcmVzZXJ2ZWQuXG4gICAqL1xuICBwcml2YXRlIHNvdXJjZUZpbGVUb1VzZWRJbXBvcnRzID0gbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBTZXQ8dHMuSW1wb3J0RGVjbGFyYXRpb24+PigpO1xuICByZWNvcmRJbXBvcnRlZElkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIsIGRlY2w6IHRzLkltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgY29uc3Qgc2YgPSBnZXRTb3VyY2VGaWxlKGlkKTtcbiAgICBpZiAoIXRoaXMuc291cmNlRmlsZVRvSW1wb3J0TWFwLmhhcyhzZikpIHtcbiAgICAgIHRoaXMuc291cmNlRmlsZVRvSW1wb3J0TWFwLnNldChzZiwgbmV3IE1hcDx0cy5JZGVudGlmaWVyLCB0cy5JbXBvcnREZWNsYXJhdGlvbj4oKSk7XG4gICAgfVxuICAgIHRoaXMuc291cmNlRmlsZVRvSW1wb3J0TWFwLmdldChzZikhLnNldChpZCwgZGVjbCk7XG4gIH1cblxuICByZWNvcmRVc2VkSWRlbnRpZmllcihpZDogdHMuSWRlbnRpZmllcik6IHZvaWQge1xuICAgIGNvbnN0IHNmID0gZ2V0U291cmNlRmlsZShpZCk7XG4gICAgaWYgKCF0aGlzLnNvdXJjZUZpbGVUb0ltcG9ydE1hcC5oYXMoc2YpKSB7XG4gICAgICAvLyBUaGUgaWRlbnRpZmllcidzIHNvdXJjZSBmaWxlIGhhcyBubyByZWdpc3RlcmVkIGRlZmF1bHQgaW1wb3J0cyBhdCBhbGwuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlkZW50aWZlclRvRGVjbGFyYXRpb24gPSB0aGlzLnNvdXJjZUZpbGVUb0ltcG9ydE1hcC5nZXQoc2YpITtcbiAgICBpZiAoIWlkZW50aWZlclRvRGVjbGFyYXRpb24uaGFzKGlkKSkge1xuICAgICAgLy8gVGhlIGlkZW50aWZpZXIgaXNuJ3QgZnJvbSBhIHJlZ2lzdGVyZWQgZGVmYXVsdCBpbXBvcnQuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRlY2wgPSBpZGVudGlmZXJUb0RlY2xhcmF0aW9uLmdldChpZCkhO1xuXG4gICAgLy8gQWRkIHRoZSBkZWZhdWx0IGltcG9ydCBkZWNsYXJhdGlvbiB0byB0aGUgc2V0IG9mIHVzZWQgaW1wb3J0IGRlY2xhcmF0aW9ucyBmb3IgdGhlIGZpbGUuXG4gICAgaWYgKCF0aGlzLnNvdXJjZUZpbGVUb1VzZWRJbXBvcnRzLmhhcyhzZikpIHtcbiAgICAgIHRoaXMuc291cmNlRmlsZVRvVXNlZEltcG9ydHMuc2V0KHNmLCBuZXcgU2V0PHRzLkltcG9ydERlY2xhcmF0aW9uPigpKTtcbiAgICB9XG4gICAgdGhpcy5zb3VyY2VGaWxlVG9Vc2VkSW1wb3J0cy5nZXQoc2YpIS5hZGQoZGVjbCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgYHRzLlRyYW5zZm9ybWVyRmFjdG9yeWAgd2hpY2ggd2lsbCBwcmVzZXJ2ZSBkZWZhdWx0IGltcG9ydHMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgbWFya2VkXG4gICAqIGFzIHVzZWQuXG4gICAqXG4gICAqIFRoaXMgdHJhbnNmb3JtZXIgbXVzdCBydW4gYWZ0ZXIgYW55IG90aGVyIHRyYW5zZm9ybWVycyB3aGljaCBjYWxsIGByZWNvcmRVc2VkSWRlbnRpZmllcmAuXG4gICAqL1xuICBpbXBvcnRQcmVzZXJ2aW5nVHJhbnNmb3JtZXIoKTogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+IHtcbiAgICByZXR1cm4gKGNvbnRleHQ6IHRzLlRyYW5zZm9ybWF0aW9uQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIChzZjogdHMuU291cmNlRmlsZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Tb3VyY2VGaWxlKHNmKTtcbiAgICAgIH07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGEgYHRzLlNvdXJjZUZpbGVgIGFuZCByZXBsYWNlIGFueSBgdHMuSW1wb3J0RGVjbGFyYXRpb25gcy5cbiAgICovXG4gIHByaXZhdGUgdHJhbnNmb3JtU291cmNlRmlsZShzZjogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICAgIGNvbnN0IG9yaWdpbmFsU2YgPSB0cy5nZXRPcmlnaW5hbE5vZGUoc2YpIGFzIHRzLlNvdXJjZUZpbGU7XG4gICAgLy8gVGFrZSBhIGZhc3QgcGF0aCBpZiBubyBpbXBvcnQgZGVjbGFyYXRpb25zIG5lZWQgdG8gYmUgcHJlc2VydmVkIGluIHRoZSBmaWxlLlxuICAgIGlmICghdGhpcy5zb3VyY2VGaWxlVG9Vc2VkSW1wb3J0cy5oYXMob3JpZ2luYWxTZikpIHtcbiAgICAgIHJldHVybiBzZjtcbiAgICB9XG5cbiAgICAvLyBUaGVyZSBhcmUgZGVjbGFyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwcmVzZXJ2ZWQuXG4gICAgY29uc3QgaW1wb3J0c1RvUHJlc2VydmUgPSB0aGlzLnNvdXJjZUZpbGVUb1VzZWRJbXBvcnRzLmdldChvcmlnaW5hbFNmKSE7XG5cbiAgICAvLyBHZW5lcmF0ZSBhIG5ldyBzdGF0ZW1lbnQgbGlzdCB3aGljaCBwcmVzZXJ2ZXMgYW55IGltcG9ydHMgcHJlc2VudCBpbiBgaW1wb3J0c1RvUHJlc2VydmVgLlxuICAgIGNvbnN0IHN0YXRlbWVudHMgPSBzZi5zdGF0ZW1lbnRzLm1hcChzdG10ID0+IHtcbiAgICAgIGlmICh0cy5pc0ltcG9ydERlY2xhcmF0aW9uKHN0bXQpICYmIGltcG9ydHNUb1ByZXNlcnZlLmhhcyhzdG10KSkge1xuICAgICAgICAvLyBQcmVzZXJ2aW5nIGFuIGltcG9ydCB0aGF0J3MgbWFya2VkIGFzIHVucmVmZXJlbmNlZCAodHlwZS1vbmx5KSBpcyB0cmlja3kgaW4gVHlwZVNjcmlwdC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVmFyaW91cyBhcHByb2FjaGVzIGhhdmUgYmVlbiB0cmllZCwgd2l0aCBtaXhlZCBzdWNjZXNzOlxuICAgICAgICAvL1xuICAgICAgICAvLyAxLiBVc2luZyBgdHMudXBkYXRlSW1wb3J0RGVjbGFyYXRpb25gIGRvZXMgbm90IGNhdXNlIHRoZSBpbXBvcnQgdG8gYmUgcmV0YWluZWQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIDIuIFVzaW5nIGB0cy5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbmAgd2l0aCB0aGUgc2FtZSBgdHMuSW1wb3J0Q2xhdXNlYCBjYXVzZXMgdGhlIGltcG9ydFxuICAgICAgICAvLyAgICB0byBjb3JyZWN0bHkgYmUgcmV0YWluZWQsIGJ1dCB3aGVuIGVtaXR0aW5nIENvbW1vbkpTIG1vZHVsZSBmb3JtYXQgY29kZSwgcmVmZXJlbmNlc1xuICAgICAgICAvLyAgICB0byB0aGUgaW1wb3J0ZWQgdmFsdWUgd2lsbCBub3QgbWF0Y2ggdGhlIGltcG9ydCB2YXJpYWJsZS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gMy4gRW1pdHRpbmcgXCJpbXBvcnQgKiBhc1wiIGltcG9ydHMgaW5zdGVhZCBnZW5lcmF0ZXMgdGhlIGNvcnJlY3QgaW1wb3J0IHZhcmlhYmxlLCBidXRcbiAgICAgICAgLy8gICAgcmVmZXJlbmNlcyBhcmUgbWlzc2luZyB0aGUgXCIuZGVmYXVsdFwiIGFjY2Vzcy4gVGhpcyBoYXBwZW5zIHRvIHdvcmsgZm9yIHRzaWNrbGUgY29kZVxuICAgICAgICAvLyAgICB3aXRoIGdvb2cubW9kdWxlIHRyYW5zZm9ybWF0aW9ucyBhcyB0c2lja2xlIHN0cmlwcyB0aGUgXCIuZGVmYXVsdFwiIGFueXdheS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gNC4gSXQncyBwb3NzaWJsZSB0byB0cmljayBUeXBlU2NyaXB0IGJ5IHNldHRpbmcgYHRzLk5vZGVGbGFnLlN5bnRoZXNpemVkYCBvbiB0aGUgaW1wb3J0XG4gICAgICAgIC8vICAgIGRlY2xhcmF0aW9uLiBUaGlzIGNhdXNlcyB0aGUgaW1wb3J0IHRvIGJlIGNvcnJlY3RseSByZXRhaW5lZCBhbmQgZ2VuZXJhdGVkLCBidXQgY2FuXG4gICAgICAgIC8vICAgIHZpb2xhdGUgaW52YXJpYW50cyBlbHNld2hlcmUgaW4gdGhlIGNvbXBpbGVyIGFuZCBjYXVzZSBjcmFzaGVzLlxuICAgICAgICAvL1xuICAgICAgICAvLyA1LiBVc2luZyBgdHMuZ2V0TXV0YWJsZUNsb25lYCBzZWVtcyB0byBjb3JyZWN0bHkgcHJlc2VydmUgdGhlIGltcG9ydCBhbmQgY29ycmVjdGx5XG4gICAgICAgIC8vICAgIGdlbmVyYXRlIHJlZmVyZW5jZXMgdG8gdGhlIGltcG9ydCB2YXJpYWJsZSBhY3Jvc3MgYWxsIG1vZHVsZSB0eXBlcy5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVGhlcmVmb3JlLCBvcHRpb24gNSBpcyB0aGUgb25lIHVzZWQgaGVyZS4gSXQgc2VlbXMgdG8gYmUgaW1wbGVtZW50ZWQgYXMgdGhlIGNvcnJlY3Qgd2F5XG4gICAgICAgIC8vIHRvIHBlcmZvcm0gb3B0aW9uIDQsIHdoaWNoIHByZXNlcnZlcyBhbGwgdGhlIGNvbXBpbGVyJ3MgaW52YXJpYW50cy5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVE9ETyhhbHhodWIpOiBkaXNjdXNzIHdpdGggdGhlIFR5cGVTY3JpcHQgdGVhbSBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgYSBiZXR0ZXIgd2F5IHRvXG4gICAgICAgIC8vIGRlYWwgd2l0aCB0aGlzIGlzc3VlLlxuICAgICAgICBzdG10ID0gdHMuZ2V0TXV0YWJsZUNsb25lKHN0bXQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0bXQ7XG4gICAgfSk7XG5cbiAgICAvLyBTYXZlIG1lbW9yeSAtIHRoZXJlJ3Mgbm8gbmVlZCB0byBrZWVwIHRoZXNlIGFyb3VuZCBvbmNlIHRoZSB0cmFuc2Zvcm0gaGFzIHJ1biBmb3IgdGhlIGdpdmVuXG4gICAgLy8gZmlsZS5cbiAgICB0aGlzLnNvdXJjZUZpbGVUb0ltcG9ydE1hcC5kZWxldGUob3JpZ2luYWxTZik7XG4gICAgdGhpcy5zb3VyY2VGaWxlVG9Vc2VkSW1wb3J0cy5kZWxldGUob3JpZ2luYWxTZik7XG5cbiAgICByZXR1cm4gdHMudXBkYXRlU291cmNlRmlsZU5vZGUoc2YsIHN0YXRlbWVudHMpO1xuICB9XG59XG4iXX0=
|