@angular-devkit/build-angular 16.0.0-rc.1 → 16.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/builders.json +5 -0
  2. package/package.json +19 -11
  3. package/src/builders/browser-esbuild/angular/compiler-plugin.d.ts +1 -1
  4. package/src/builders/browser-esbuild/angular/compiler-plugin.js +18 -66
  5. package/src/builders/browser-esbuild/angular/diagnostics.d.ts +15 -0
  6. package/src/builders/browser-esbuild/angular/diagnostics.js +75 -0
  7. package/src/builders/browser-esbuild/angular/jit-plugin-callbacks.d.ts +1 -1
  8. package/src/builders/browser-esbuild/angular/jit-plugin-callbacks.js +3 -3
  9. package/src/builders/browser-esbuild/experimental-warnings.d.ts +2 -2
  10. package/src/builders/browser-esbuild/experimental-warnings.js +1 -1
  11. package/src/builders/browser-esbuild/global-scripts.js +3 -1
  12. package/src/builders/browser-esbuild/index.d.ts +17 -0
  13. package/src/builders/browser-esbuild/index.js +24 -9
  14. package/src/builders/browser-esbuild/options.d.ts +19 -1
  15. package/src/builders/browser-esbuild/options.js +60 -7
  16. package/src/builders/browser-esbuild/schema.d.ts +1 -17
  17. package/src/builders/browser-esbuild/schema.js +1 -1
  18. package/src/builders/browser-esbuild/schema.json +4 -0
  19. package/src/builders/browser-esbuild/sourcemap-ignorelist-plugin.d.ts +17 -0
  20. package/src/builders/browser-esbuild/sourcemap-ignorelist-plugin.js +68 -0
  21. package/src/builders/browser-esbuild/{stylesheets.d.ts → stylesheets/bundle-options.d.ts} +1 -1
  22. package/src/builders/browser-esbuild/stylesheets/bundle-options.js +159 -0
  23. package/src/builders/browser-esbuild/stylesheets/css-plugin.js +164 -0
  24. package/src/builders/browser-esbuild/stylesheets/css-resource-plugin.js +77 -0
  25. package/src/builders/browser-esbuild/stylesheets/less-plugin.js +141 -0
  26. package/src/builders/browser-esbuild/{sass-plugin.d.ts → stylesheets/sass-plugin.d.ts} +1 -1
  27. package/src/builders/browser-esbuild/stylesheets/sass-plugin.js +201 -0
  28. package/src/builders/dev-server/vite-server.d.ts +10 -0
  29. package/src/builders/dev-server/vite-server.js +67 -57
  30. package/src/builders/jest/index.d.ts +11 -0
  31. package/src/builders/jest/index.js +163 -0
  32. package/src/builders/jest/init-test-bed.mjs +18 -0
  33. package/src/builders/jest/jest-global.mjs +19 -0
  34. package/src/builders/jest/options.d.ts +21 -0
  35. package/src/builders/jest/options.js +26 -0
  36. package/src/builders/jest/schema.d.ts +25 -0
  37. package/src/builders/jest/schema.js +5 -0
  38. package/src/builders/jest/schema.json +48 -0
  39. package/src/builders/jest/test-files.d.ts +20 -0
  40. package/src/builders/jest/test-files.js +37 -0
  41. package/src/builders/server/index.js +1 -2
  42. package/src/builders/server/schema.d.ts +4 -0
  43. package/src/builders/server/schema.js +1 -1
  44. package/src/builders/server/schema.json +5 -0
  45. package/src/utils/index-file/augment-index-html.js +9 -1
  46. package/src/builders/browser-esbuild/angular/worker-compilation.d.ts +0 -21
  47. package/src/builders/browser-esbuild/angular/worker-compilation.js +0 -45
  48. package/src/builders/browser-esbuild/angular/worker.d.ts +0 -0
  49. package/src/builders/browser-esbuild/angular/worker.js +0 -2
  50. package/src/builders/browser-esbuild/css-plugin.js +0 -164
  51. package/src/builders/browser-esbuild/css-resource-plugin.js +0 -77
  52. package/src/builders/browser-esbuild/less-plugin.js +0 -141
  53. package/src/builders/browser-esbuild/sass-plugin.js +0 -201
  54. package/src/builders/browser-esbuild/stylesheet-plugin.d.ts +0 -0
  55. package/src/builders/browser-esbuild/stylesheet-plugin.js +0 -46
  56. package/src/builders/browser-esbuild/stylesheets.js +0 -159
  57. /package/src/builders/browser-esbuild/{css-plugin.d.ts → stylesheets/css-plugin.d.ts} +0 -0
  58. /package/src/builders/browser-esbuild/{css-resource-plugin.d.ts → stylesheets/css-resource-plugin.d.ts} +0 -0
  59. /package/src/builders/browser-esbuild/{less-plugin.d.ts → stylesheets/less-plugin.d.ts} +0 -0
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ const architect_1 = require("@angular-devkit/architect");
34
+ const child_process_1 = require("child_process");
35
+ const path = __importStar(require("path"));
36
+ const util_1 = require("util");
37
+ const color_1 = require("../../utils/color");
38
+ const browser_esbuild_1 = require("../browser-esbuild");
39
+ const schema_1 = require("../browser-esbuild/schema");
40
+ const options_1 = require("./options");
41
+ const test_files_1 = require("./test-files");
42
+ const execFile = (0, util_1.promisify)(child_process_1.execFile);
43
+ /** Main execution function for the Jest builder. */
44
+ exports.default = (0, architect_1.createBuilder)(async (schema, context) => {
45
+ context.logger.warn('NOTE: The Jest builder is currently EXPERIMENTAL and not ready for production use.');
46
+ const options = (0, options_1.normalizeOptions)(schema);
47
+ const testOut = 'dist/test-out'; // TODO(dgp1130): Hide in temp directory.
48
+ // Verify Jest installation and get the path to it's binary.
49
+ // We need to `node_modules/.bin/jest`, but there is no means to resolve that directly. Fortunately Jest's `package.json` exports the
50
+ // same file at `bin/jest`, so we can just resolve that instead.
51
+ const jest = resolveModule('jest/bin/jest');
52
+ if (!jest) {
53
+ return {
54
+ success: false,
55
+ // TODO(dgp1130): Display a more accurate message for non-NPM users.
56
+ error: 'Jest is not installed, most likely you need to run `npm install jest --save-dev` in your project.',
57
+ };
58
+ }
59
+ // Verify that JSDom is installed in the project.
60
+ const environment = resolveModule('jest-environment-jsdom');
61
+ if (!environment) {
62
+ return {
63
+ success: false,
64
+ // TODO(dgp1130): Display a more accurate message for non-NPM users.
65
+ error: '`jest-environment-jsdom` is not installed. Install it with `npm install jest-environment-jsdom --save-dev`.',
66
+ };
67
+ }
68
+ // Build all the test files.
69
+ const testFiles = await (0, test_files_1.findTestFiles)(options, context.workspaceRoot);
70
+ const jestGlobal = path.join(__dirname, 'jest-global.mjs');
71
+ const initTestBed = path.join(__dirname, 'init-test-bed.mjs');
72
+ const buildResult = await build(context, {
73
+ // Build all the test files and also the `jest-global` and `init-test-bed` scripts.
74
+ entryPoints: new Set([...testFiles, jestGlobal, initTestBed]),
75
+ tsConfig: options.tsConfig,
76
+ polyfills: options.polyfills ?? ['zone.js', 'zone.js/testing'],
77
+ outputPath: testOut,
78
+ aot: false,
79
+ index: null,
80
+ outputHashing: schema_1.OutputHashing.None,
81
+ outExtension: 'mjs',
82
+ commonChunk: false,
83
+ optimization: false,
84
+ buildOptimizer: false,
85
+ sourceMap: {
86
+ scripts: true,
87
+ styles: false,
88
+ vendor: false,
89
+ },
90
+ });
91
+ if (!buildResult.success) {
92
+ return buildResult;
93
+ }
94
+ // Execute Jest on the built output directory.
95
+ const jestProc = execFile('node', [
96
+ '--experimental-vm-modules',
97
+ jest,
98
+ `--rootDir="${testOut}"`,
99
+ '--testEnvironment=jsdom',
100
+ // TODO(dgp1130): Enable cache once we have a mechanism for properly clearing / disabling it.
101
+ '--no-cache',
102
+ // Run basically all files in the output directory, any excluded files were already dropped by the build.
103
+ `--testMatch="<rootDir>/**/*.mjs"`,
104
+ // Load polyfills and initialize the environment before executing each test file.
105
+ // IMPORTANT: Order matters here.
106
+ // First, we execute `jest-global.mjs` to initialize the `jest` global variable.
107
+ // Second, we execute user polyfills, including `zone.js` and `zone.js/testing`. This is dependent on the Jest global so it can patch
108
+ // the environment for fake async to work correctly.
109
+ // Third, we initialize `TestBed`. This is dependent on fake async being set up correctly beforehand.
110
+ `--setupFilesAfterEnv="<rootDir>/jest-global.mjs"`,
111
+ ...(options.polyfills ? [`--setupFilesAfterEnv="<rootDir>/polyfills.mjs"`] : []),
112
+ `--setupFilesAfterEnv="<rootDir>/init-test-bed.mjs"`,
113
+ // Don't run any infrastructure files as tests, they are manually loaded where needed.
114
+ `--testPathIgnorePatterns="<rootDir>/jest-global\\.mjs"`,
115
+ ...(options.polyfills ? [`--testPathIgnorePatterns="<rootDir>/polyfills\\.mjs"`] : []),
116
+ `--testPathIgnorePatterns="<rootDir>/init-test-bed\\.mjs"`,
117
+ // Skip shared chunks, as they are not entry points to tests.
118
+ `--testPathIgnorePatterns="<rootDir>/chunk-.*\\.mjs"`,
119
+ // Optionally enable color.
120
+ ...(color_1.colors.enabled ? ['--colors'] : []),
121
+ ]);
122
+ // Stream test output to the terminal.
123
+ jestProc.child.stdout?.on('data', (chunk) => {
124
+ context.logger.info(chunk);
125
+ });
126
+ jestProc.child.stderr?.on('data', (chunk) => {
127
+ // Write to stderr directly instead of `context.logger.error(chunk)` because the logger will overwrite Jest's coloring information.
128
+ process.stderr.write(chunk);
129
+ });
130
+ try {
131
+ await jestProc;
132
+ }
133
+ catch (error) {
134
+ // No need to propagate error message, already piped to terminal output.
135
+ // TODO(dgp1130): Handle process spawning failures.
136
+ return { success: false };
137
+ }
138
+ return { success: true };
139
+ });
140
+ async function build(context, options) {
141
+ try {
142
+ for await (const _ of (0, browser_esbuild_1.buildEsbuildBrowserInternal)(options, context)) {
143
+ // Nothing to do for each event, just wait for the whole build.
144
+ }
145
+ return { success: true };
146
+ }
147
+ catch (err) {
148
+ return {
149
+ success: false,
150
+ error: err.message,
151
+ };
152
+ }
153
+ }
154
+ /** Safely resolves the given Node module string. */
155
+ function resolveModule(module) {
156
+ try {
157
+ return require.resolve(module);
158
+ }
159
+ catch {
160
+ return undefined;
161
+ }
162
+ }
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9qZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx5REFBeUY7QUFDekYsaURBQXVEO0FBQ3ZELDJDQUE2QjtBQUM3QiwrQkFBaUM7QUFDakMsNkNBQTJDO0FBQzNDLHdEQUFpRTtBQUVqRSxzREFBMEQ7QUFDMUQsdUNBQTZDO0FBRTdDLDZDQUE2QztBQUU3QyxNQUFNLFFBQVEsR0FBRyxJQUFBLGdCQUFTLEVBQUMsd0JBQVUsQ0FBQyxDQUFDO0FBRXZDLG9EQUFvRDtBQUNwRCxrQkFBZSxJQUFBLHlCQUFhLEVBQzFCLEtBQUssRUFBRSxNQUF5QixFQUFFLE9BQXVCLEVBQTBCLEVBQUU7SUFDbkYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2pCLG9GQUFvRixDQUNyRixDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBQSwwQkFBZ0IsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsQ0FBQyx5Q0FBeUM7SUFFMUUsNERBQTREO0lBQzVELHFJQUFxSTtJQUNySSxnRUFBZ0U7SUFDaEUsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzVDLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDVCxPQUFPO1lBQ0wsT0FBTyxFQUFFLEtBQUs7WUFDZCxvRUFBb0U7WUFDcEUsS0FBSyxFQUNILG1HQUFtRztTQUN0RyxDQUFDO0tBQ0g7SUFFRCxpREFBaUQ7SUFDakQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUQsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNoQixP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QUM7SUFFSCxJQUFJO1FBQ0YsTUFBTSxRQUFRLENBQUM7S0FDaEI7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLHdFQUF3RTtRQUN4RSxtREFBbUQ7UUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUMzQjtJQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDM0IsQ0FBQyxDQUNGLENBQUM7QUFFRixLQUFLLFVBQVUsS0FBSyxDQUNsQixPQUF1QixFQUN2QixPQUE4QjtJQUU5QixJQUFJO1FBQ0YsSUFBSSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBQSw2Q0FBMkIsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDbkUsK0RBQStEO1NBQ2hFO1FBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUMxQjtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFHLEdBQWEsQ0FBQyxPQUFPO1NBQzlCLENBQUM7S0FDSDtBQUNILENBQUM7QUFFRCxvREFBb0Q7QUFDcEQsU0FBUyxhQUFhLENBQUMsTUFBYztJQUNuQyxJQUFJO1FBQ0YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2hDO0lBQUMsTUFBTTtRQUNOLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBCdWlsZGVyQ29udGV4dCwgQnVpbGRlck91dHB1dCwgY3JlYXRlQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IHsgZXhlY0ZpbGUgYXMgZXhlY0ZpbGVDYiB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgY29sb3JzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3InO1xuaW1wb3J0IHsgYnVpbGRFc2J1aWxkQnJvd3NlckludGVybmFsIH0gZnJvbSAnLi4vYnJvd3Nlci1lc2J1aWxkJztcbmltcG9ydCB7IEJyb3dzZXJFc2J1aWxkT3B0aW9ucyB9IGZyb20gJy4uL2Jyb3dzZXItZXNidWlsZC9vcHRpb25zJztcbmltcG9ydCB7IE91dHB1dEhhc2hpbmcgfSBmcm9tICcuLi9icm93c2VyLWVzYnVpbGQvc2NoZW1hJztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIEplc3RCdWlsZGVyU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHsgZmluZFRlc3RGaWxlcyB9IGZyb20gJy4vdGVzdC1maWxlcyc7XG5cbmNvbnN0IGV4ZWNGaWxlID0gcHJvbWlzaWZ5KGV4ZWNGaWxlQ2IpO1xuXG4vKiogTWFpbiBleGVjdXRpb24gZnVuY3Rpb24gZm9yIHRoZSBKZXN0IGJ1aWxkZXIuICovXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVCdWlsZGVyKFxuICBhc3luYyAoc2NoZW1hOiBKZXN0QnVpbGRlclNjaGVtYSwgY29udGV4dDogQnVpbGRlckNvbnRleHQpOiBQcm9taXNlPEJ1aWxkZXJPdXRwdXQ+ID0+IHtcbiAgICBjb250ZXh0LmxvZ2dlci53YXJuKFxuICAgICAgJ05PVEU6IFRoZSBKZXN0IGJ1aWxkZXIgaXMgY3VycmVudGx5IEVYUEVSSU1FTlRBTCBhbmQgbm90IHJlYWR5IGZvciBwcm9kdWN0aW9uIHVzZS4nLFxuICAgICk7XG5cbiAgICBjb25zdCBvcHRpb25zID0gbm9ybWFsaXplT3B0aW9ucyhzY2hlbWEpO1xuICAgIGNvbnN0IHRlc3RPdXQgPSAnZGlzdC90ZXN0LW91dCc7IC8vIFRPRE8oZGdwMTEzMCk6IEhpZGUgaW4gdGVtcCBkaXJlY3RvcnkuXG5cbiAgICAvLyBWZXJpZnkgSmVzdCBpbnN0YWxsYXRpb24gYW5kIGdldCB0aGUgcGF0aCB0byBpdCdzIGJpbmFyeS5cbiAgICAvLyBXZSBuZWVkIHRvIGBub2RlX21vZHVsZXMvLmJpbi9qZXN0YCwgYnV0IHRoZXJlIGlzIG5vIG1lYW5zIHRvIHJlc29sdmUgdGhhdCBkaXJlY3RseS4gRm9ydHVuYXRlbHkgSmVzdCdzIGBwYWNrYWdlLmpzb25gIGV4cG9ydHMgdGhlXG4gICAgLy8gc2FtZSBmaWxlIGF0IGBiaW4vamVzdGAsIHNvIHdlIGNhbiBqdXN0IHJlc29sdmUgdGhhdCBpbnN0ZWFkLlxuICAgIGNvbnN0IGplc3QgPSByZXNvbHZlTW9kdWxlKCdqZXN0L2Jpbi9qZXN0Jyk7XG4gICAgaWYgKCFqZXN0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgLy8gVE9ETyhkZ3AxMTMwKTogRGlzcGxheSBhIG1vcmUgYWNjdXJhdGUgbWVzc2FnZSBmb3Igbm9uLU5QTSB1c2Vycy5cbiAgICAgICAgZXJyb3I6XG4gICAgICAgICAgJ0plc3QgaXMgbm90IGluc3RhbGxlZCwgbW9zdCBsaWtlbHkgeW91IG5lZWQgdG8gcnVuIGBucG0gaW5zdGFsbCBqZXN0IC0tc2F2ZS1kZXZgIGluIHlvdXIgcHJvamVjdC4nLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgdGhhdCBKU0RvbSBpcyBpbnN0YWxsZWQgaW4gdGhlIHByb2plY3QuXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSByZXNvbHZlTW9kdWxlKCdqZXN0LWVudmlyb25tZW50LWpzZG9tJyk7XG4gICAgaWYgKCFlbnZpcm9ubWVudCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIC8vIFRPRE8oZGdwMTEzMCk6IERpc3BsYXkgYSBtb3JlIGFjY3VyYXRlIG1lc3NhZ2UgZm9yIG5vbi1OUE0gdXNlcnMuXG4gICAgICAgIGVycm9yOlxuICAgICAgICAgICdgamVzdC1lbnZpcm9ubWVudC1qc2RvbWAgaXMgbm90IGluc3RhbGxlZC4gSW5zdGFsbCBpdCB3aXRoIGBucG0gaW5zdGFsbCBqZXN0LWVudmlyb25tZW50LWpzZG9tIC0tc2F2ZS1kZXZgLicsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIGFsbCB0aGUgdGVzdCBmaWxlcy5cbiAgICBjb25zdCB0ZXN0RmlsZXMgPSBhd2FpdCBmaW5kVGVzdEZpbGVzKG9wdGlvbnMsIGNvbnRleHQud29ya3NwYWNlUm9vdCk7XG4gICAgY29uc3QgamVzdEdsb2JhbCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdqZXN0LWdsb2JhbC5tanMnKTtcbiAgICBjb25zdCBpbml0VGVzdEJlZCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdpbml0LXRlc3QtYmVkLm1qcycpO1xuICAgIGNvbnN0IGJ1aWxkUmVzdWx0ID0gYXdhaXQgYnVpbGQoY29udGV4dCwge1xuICAgICAgLy8gQnVpbGQgYWxsIHRoZSB0ZXN0IGZpbGVzIGFuZCBhbHNvIHRoZSBgamVzdC1nbG9iYWxgIGFuZCBgaW5pdC10ZXN0LWJlZGAgc2NyaXB0cy5cbiAgICAgIGVudHJ5UG9pbnRzOiBuZXcgU2V0KFsuLi50ZXN0RmlsZXMsIGplc3RHbG9iYWwsIGluaXRUZXN0QmVkXSksXG4gICAgICB0c0NvbmZpZzogb3B0aW9ucy50c0NvbmZpZyxcbiAgICAgIHBvbHlmaWxsczogb3B0aW9ucy5wb2x5ZmlsbHMgPz8gWyd6b25lLmpzJywgJ3pvbmUuanMvdGVzdGluZyddLFxuICAgICAgb3V0cHV0UGF0aDogdGVzdE91dCxcbiAgICAgIGFvdDogZmFsc2UsXG4gICAgICBpbmRleDogbnVsbCxcbiAgICAgIG91dHB1dEhhc2hpbmc6IE91dHB1dEhhc2hpbmcuTm9uZSxcbiAgICAgIG91dEV4dGVuc2lvbjogJ21qcycsIC8vIEZvcmNlIG5hdGl2ZSBFU00uXG4gICAgICBjb21tb25DaHVuazogZmFsc2UsXG4gICAgICBvcHRpbWl6YXRpb246IGZhbHNlLFxuICAgICAgYnVpbGRPcHRpbWl6ZXI6IGZhbHNlLFxuICAgICAgc291cmNlTWFwOiB7XG4gICAgICAgIHNjcmlwdHM6IHRydWUsXG4gICAgICAgIHN0eWxlczogZmFsc2UsXG4gICAgICAgIHZlbmRvcjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmICghYnVpbGRSZXN1bHQuc3VjY2Vzcykge1xuICAgICAgcmV0dXJuIGJ1aWxkUmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgSmVzdCBvbiB0aGUgYnVpbHQgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICBjb25zdCBqZXN0UHJvYyA9IGV4ZWNGaWxlKCdub2RlJywgW1xuICAgICAgJy0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXMnLFxuICAgICAgamVzdCxcblxuICAgICAgYC0tcm9vdERpcj1cIiR7dGVzdE91dH1cImAsXG4gICAgICAnLS10ZXN0RW52aXJvbm1lbnQ9anNkb20nLFxuXG4gICAgICAvLyBUT0RPKGRncDExMzApOiBFbmFibGUgY2FjaGUgb25jZSB3ZSBoYXZlIGEgbWVjaGFuaXNtIGZvciBwcm9wZXJseSBjbGVhcmluZyAvIGRpc2FibGluZyBpdC5cbiAgICAgICctLW5vLWNhY2hlJyxcblxuICAgICAgLy8gUnVuIGJhc2ljYWxseSBhbGwgZmlsZXMgaW4gdGhlIG91dHB1dCBkaXJlY3RvcnksIGFueSBleGNsdWRlZCBmaWxlcyB3ZXJlIGFscmVhZHkgZHJvcHBlZCBieSB0aGUgYnVpbGQuXG4gICAgICBgLS10ZXN0TWF0Y2g9XCI8cm9vdERpcj4vKiovKi5tanNcImAsXG5cbiAgICAgIC8vIExvYWQgcG9seWZpbGxzIGFuZCBpbml0aWFsaXplIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0aW5nIGVhY2ggdGVzdCBmaWxlLlxuICAgICAgLy8gSU1QT1JUQU5UOiBPcmRlciBtYXR0ZXJzIGhlcmUuXG4gICAgICAvLyBGaXJzdCwgd2UgZXhlY3V0ZSBgamVzdC1nbG9iYWwubWpzYCB0byBpbml0aWFsaXplIHRoZSBgamVzdGAgZ2xvYmFsIHZhcmlhYmxlLlxuICAgICAgLy8gU2Vjb25kLCB3ZSBleGVjdXRlIHVzZXIgcG9seWZpbGxzLCBpbmNsdWRpbmcgYHpvbmUuanNgIGFuZCBgem9uZS5qcy90ZXN0aW5nYC4gVGhpcyBpcyBkZXBlbmRlbnQgb24gdGhlIEplc3QgZ2xvYmFsIHNvIGl0IGNhbiBwYXRjaFxuICAgICAgLy8gdGhlIGVudmlyb25tZW50IGZvciBmYWtlIGFzeW5jIHRvIHdvcmsgY29ycmVjdGx5LlxuICAgICAgLy8gVGhpcmQsIHdlIGluaXRpYWxpemUgYFRlc3RCZWRgLiBUaGlzIGlzIGRlcGVuZGVudCBvbiBmYWtlIGFzeW5jIGJlaW5nIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlaGFuZC5cbiAgICAgIGAtLXNldHVwRmlsZXNBZnRlckVudj1cIjxyb290RGlyPi9qZXN0LWdsb2JhbC5tanNcImAsXG4gICAgICAuLi4ob3B0aW9ucy5wb2x5ZmlsbHMgPyBbYC0tc2V0dXBGaWxlc0FmdGVyRW52PVwiPHJvb3REaXI+L3BvbHlmaWxscy5tanNcImBdIDogW10pLFxuICAgICAgYC0tc2V0dXBGaWxlc0FmdGVyRW52PVwiPHJvb3REaXI+L2luaXQtdGVzdC1iZWQubWpzXCJgLFxuXG4gICAgICAvLyBEb24ndCBydW4gYW55IGluZnJhc3RydWN0dXJlIGZpbGVzIGFzIHRlc3RzLCB0aGV5IGFyZSBtYW51YWxseSBsb2FkZWQgd2hlcmUgbmVlZGVkLlxuICAgICAgYC0tdGVzdFBhdGhJZ25vcmVQYXR0ZXJucz1cIjxyb290RGlyPi9qZXN0LWdsb2JhbFxcXFwubWpzXCJgLFxuICAgICAgLi4uKG9wdGlvbnMucG9seWZpbGxzID8gW2AtLXRlc3RQYXRoSWdub3JlUGF0dGVybnM9XCI8cm9vdERpcj4vcG9seWZpbGxzXFxcXC5tanNcImBdIDogW10pLFxuICAgICAgYC0tdGVzdFBhdGhJZ25vcmVQYXR0ZXJucz1cIjxyb290RGlyPi9pbml0LXRlc3QtYmVkXFxcXC5tanNcImAsXG5cbiAgICAgIC8vIFNraXAgc2hhcmVkIGNodW5rcywgYXMgdGhleSBhcmUgbm90IGVudHJ5IHBvaW50cyB0byB0ZXN0cy5cbiAgICAgIGAtLXRlc3RQYXRoSWdub3JlUGF0dGVybnM9XCI8cm9vdERpcj4vY2h1bmstLipcXFxcLm1qc1wiYCxcblxuICAgICAgLy8gT3B0aW9uYWxseSBlbmFibGUgY29sb3IuXG4gICAgICAuLi4oY29sb3JzLmVuYWJsZWQgPyBbJy0tY29sb3JzJ10gOiBbXSksXG4gICAgXSk7XG5cbiAgICAvLyBTdHJlYW0gdGVzdCBvdXRwdXQgdG8gdGhlIHRlcm1pbmFsLlxuICAgIGplc3RQcm9jLmNoaWxkLnN0ZG91dD8ub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oY2h1bmspO1xuICAgIH0pO1xuICAgIGplc3RQcm9jLmNoaWxkLnN0ZGVycj8ub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgIC8vIFdyaXRlIHRvIHN0ZGVyciBkaXJlY3RseSBpbnN0ZWFkIG9mIGBjb250ZXh0LmxvZ2dlci5lcnJvcihjaHVuaylgIGJlY2F1c2UgdGhlIGxvZ2dlciB3aWxsIG92ZXJ3cml0ZSBKZXN0J3MgY29sb3JpbmcgaW5mb3JtYXRpb24uXG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaHVuayk7XG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgamVzdFByb2M7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIE5vIG5lZWQgdG8gcHJvcGFnYXRlIGVycm9yIG1lc3NhZ2UsIGFscmVhZHkgcGlwZWQgdG8gdGVybWluYWwgb3V0cHV0LlxuICAgICAgLy8gVE9ETyhkZ3AxMTMwKTogSGFuZGxlIHByb2Nlc3Mgc3Bhd25pbmcgZmFpbHVyZXMuXG4gICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgfSxcbik7XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkKFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgb3B0aW9uczogQnJvd3NlckVzYnVpbGRPcHRpb25zLFxuKTogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PiB7XG4gIHRyeSB7XG4gICAgZm9yIGF3YWl0IChjb25zdCBfIG9mIGJ1aWxkRXNidWlsZEJyb3dzZXJJbnRlcm5hbChvcHRpb25zLCBjb250ZXh0KSkge1xuICAgICAgLy8gTm90aGluZyB0byBkbyBmb3IgZWFjaCBldmVudCwganVzdCB3YWl0IGZvciB0aGUgd2hvbGUgYnVpbGQuXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvcjogKGVyciBhcyBFcnJvcikubWVzc2FnZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBTYWZlbHkgcmVzb2x2ZXMgdGhlIGdpdmVuIE5vZGUgbW9kdWxlIHN0cmluZy4gKi9cbmZ1bmN0aW9uIHJlc29sdmVNb2R1bGUobW9kdWxlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIHJldHVybiByZXF1aXJlLnJlc29sdmUobW9kdWxlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC 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
+
9
+ // TODO(dgp1130): These imports likely don't resolve in stricter package environments like `pnpm`, since they are resolved relative to
10
+ // `@angular-devkit/build-angular` rather than the user's workspace. Should look into virtual modules to support those use cases.
11
+
12
+ import { getTestBed } from '@angular/core/testing';
13
+ import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
14
+
15
+ getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), {
16
+ errorOnUnknownElements: true,
17
+ errorOnUnknownProperties: true,
18
+ });
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC 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
+
9
+ /**
10
+ * @fileoverview Zone.js requires the `jest` global to be initialized in order to know that it must patch the environment to support Jest
11
+ * execution. When running ESM code, Jest does _not_ inject the global `jest` symbol, so Zone.js would not normally know it is running
12
+ * within Jest as users are supposed to import from `@jest/globals` or use `import.meta.jest`. Zone.js is not currently aware of this, so we
13
+ * manually set this global to get Zone.js to run correctly.
14
+ *
15
+ * TODO(dgp1130): Update Zone.js to directly support Jest ESM executions so we can drop this.
16
+ */
17
+
18
+ // eslint-disable-next-line no-undef
19
+ globalThis.jest = import.meta.jest;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC 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
+ import { Schema as JestBuilderSchema } from './schema';
9
+ /**
10
+ * Options supported for the Jest builder. The schema is an approximate
11
+ * representation of the options type, but this is a more precise version.
12
+ */
13
+ export type JestBuilderOptions = JestBuilderSchema & {
14
+ include: string[];
15
+ exclude: string[];
16
+ };
17
+ /**
18
+ * Normalizes input options validated by the schema to a more precise and useful
19
+ * options type in {@link JestBuilderOptions}.
20
+ */
21
+ export declare function normalizeOptions(schema: JestBuilderSchema): JestBuilderOptions;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.normalizeOptions = void 0;
11
+ /**
12
+ * Normalizes input options validated by the schema to a more precise and useful
13
+ * options type in {@link JestBuilderOptions}.
14
+ */
15
+ function normalizeOptions(schema) {
16
+ return {
17
+ // Options with default values can't actually be null, even if the types say so.
18
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
19
+ include: schema.include,
20
+ exclude: schema.exclude,
21
+ /* eslint-enable @typescript-eslint/no-non-null-assertion */
22
+ ...schema,
23
+ };
24
+ }
25
+ exports.normalizeOptions = normalizeOptions;
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2plc3Qvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFhSDs7O0dBR0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxNQUF5QjtJQUN4RCxPQUFPO1FBQ0wsZ0ZBQWdGO1FBQ2hGLDZEQUE2RDtRQUM3RCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQVE7UUFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFRO1FBQ3hCLDREQUE0RDtRQUU1RCxHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQVZELDRDQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IFNjaGVtYSBhcyBKZXN0QnVpbGRlclNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcblxuLyoqXG4gKiBPcHRpb25zIHN1cHBvcnRlZCBmb3IgdGhlIEplc3QgYnVpbGRlci4gVGhlIHNjaGVtYSBpcyBhbiBhcHByb3hpbWF0ZVxuICogcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wdGlvbnMgdHlwZSwgYnV0IHRoaXMgaXMgYSBtb3JlIHByZWNpc2UgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IHR5cGUgSmVzdEJ1aWxkZXJPcHRpb25zID0gSmVzdEJ1aWxkZXJTY2hlbWEgJiB7XG4gIGluY2x1ZGU6IHN0cmluZ1tdO1xuICBleGNsdWRlOiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogTm9ybWFsaXplcyBpbnB1dCBvcHRpb25zIHZhbGlkYXRlZCBieSB0aGUgc2NoZW1hIHRvIGEgbW9yZSBwcmVjaXNlIGFuZCB1c2VmdWxcbiAqIG9wdGlvbnMgdHlwZSBpbiB7QGxpbmsgSmVzdEJ1aWxkZXJPcHRpb25zfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbnMoc2NoZW1hOiBKZXN0QnVpbGRlclNjaGVtYSk6IEplc3RCdWlsZGVyT3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgLy8gT3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzIGNhbid0IGFjdHVhbGx5IGJlIG51bGwsIGV2ZW4gaWYgdGhlIHR5cGVzIHNheSBzby5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG4gICAgaW5jbHVkZTogc2NoZW1hLmluY2x1ZGUhLFxuICAgIGV4Y2x1ZGU6IHNjaGVtYS5leGNsdWRlISxcbiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cblxuICAgIC4uLnNjaGVtYSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Jest target options
3
+ */
4
+ export interface Schema {
5
+ /**
6
+ * Globs of files to exclude, relative to the project root.
7
+ */
8
+ exclude?: string[];
9
+ /**
10
+ * Globs of files to include, relative to project root.
11
+ */
12
+ include?: string[];
13
+ /**
14
+ * Polyfills to be included in the build.
15
+ */
16
+ polyfills?: Polyfills;
17
+ /**
18
+ * The name of the TypeScript configuration file.
19
+ */
20
+ tsConfig: string;
21
+ }
22
+ /**
23
+ * Polyfills to be included in the build.
24
+ */
25
+ export type Polyfills = string[] | string;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
3
+ // CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvYnVpbGRlcnMvamVzdC9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLG1GQUFtRjtBQUNuRixvRkFBb0YiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRC4gVE8gVVBEQVRFIFRISVMgRklMRSBZT1UgTkVFRCBUTyBDSEFOR0UgVEhFXG4vLyBDT1JSRVNQT05ESU5HIEpTT04gU0NIRU1BIEZJTEUsIFRIRU4gUlVOIGRldmtpdC1hZG1pbiBidWlsZCAob3IgYmF6ZWwgYnVpbGQgLi4uKS5cblxuLyoqXG4gKiBKZXN0IHRhcmdldCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hIHtcbiAgICAvKipcbiAgICAgKiBHbG9icyBvZiBmaWxlcyB0byBleGNsdWRlLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LlxuICAgICAqL1xuICAgIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBHbG9icyBvZiBmaWxlcyB0byBpbmNsdWRlLCByZWxhdGl2ZSB0byBwcm9qZWN0IHJvb3QuXG4gICAgICovXG4gICAgaW5jbHVkZT86IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFBvbHlmaWxscyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuXG4gICAgICovXG4gICAgcG9seWZpbGxzPzogUG9seWZpbGxzO1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICAgKi9cbiAgICB0c0NvbmZpZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBvbHlmaWxscyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuXG4gKi9cbmV4cG9ydCB0eXBlIFBvbHlmaWxscyA9IHN0cmluZ1tdIHwgc3RyaW5nO1xuIl19
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "title": "Jest browser schema for Build Facade.",
4
+ "description": "Jest target options",
5
+ "type": "object",
6
+ "properties": {
7
+ "include": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "string"
11
+ },
12
+ "default": ["**/*.spec.ts"],
13
+ "description": "Globs of files to include, relative to project root."
14
+ },
15
+ "exclude": {
16
+ "type": "array",
17
+ "items": {
18
+ "type": "string"
19
+ },
20
+ "default": [],
21
+ "description": "Globs of files to exclude, relative to the project root."
22
+ },
23
+ "tsConfig": {
24
+ "type": "string",
25
+ "description": "The name of the TypeScript configuration file."
26
+ },
27
+ "polyfills": {
28
+ "description": "Polyfills to be included in the build.",
29
+ "oneOf": [
30
+ {
31
+ "type": "array",
32
+ "description": "A list of polyfills to include in the build. Can be a full path for a file, relative to the current workspace or module specifier. Example: 'zone.js'.",
33
+ "items": {
34
+ "type": "string",
35
+ "uniqueItems": true
36
+ },
37
+ "default": []
38
+ },
39
+ {
40
+ "type": "string",
41
+ "description": "The full path for the polyfills file, relative to the current workspace or a module specifier. Example: 'zone.js'."
42
+ }
43
+ ]
44
+ }
45
+ },
46
+ "additionalProperties": false,
47
+ "required": ["tsConfig"]
48
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC 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
+ import { JestBuilderOptions } from './options';
9
+ declare const globAsync: typeof import("glob").__promisify__;
10
+ /**
11
+ * Finds all test files in the project.
12
+ *
13
+ * @param options The builder options describing where to find tests.
14
+ * @param workspaceRoot The path to the root directory of the workspace.
15
+ * @param glob A promisified implementation of the `glob` module. Only intended for
16
+ * testing purposes.
17
+ * @returns A set of all test files in the project.
18
+ */
19
+ export declare function findTestFiles(options: JestBuilderOptions, workspaceRoot: string, glob?: typeof globAsync): Promise<Set<string>>;
20
+ export {};
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.findTestFiles = void 0;
11
+ const glob_1 = require("glob");
12
+ const util_1 = require("util");
13
+ const globAsync = (0, util_1.promisify)(glob_1.glob);
14
+ /**
15
+ * Finds all test files in the project.
16
+ *
17
+ * @param options The builder options describing where to find tests.
18
+ * @param workspaceRoot The path to the root directory of the workspace.
19
+ * @param glob A promisified implementation of the `glob` module. Only intended for
20
+ * testing purposes.
21
+ * @returns A set of all test files in the project.
22
+ */
23
+ async function findTestFiles(options, workspaceRoot, glob = globAsync) {
24
+ const globOptions = {
25
+ cwd: workspaceRoot,
26
+ ignore: ['node_modules/**'].concat(options.exclude),
27
+ strict: true,
28
+ nobrace: true,
29
+ noext: true,
30
+ nodir: true, // Match only files, don't care about directories.
31
+ };
32
+ const included = await Promise.all(options.include.map((pattern) => glob(pattern, globOptions)));
33
+ // Flatten and deduplicate any files found in multiple include patterns.
34
+ return new Set(included.flat());
35
+ }
36
+ exports.findTestFiles = findTestFiles;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2plc3QvdGVzdC1maWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCwrQkFBK0Q7QUFDL0QsK0JBQWlDO0FBR2pDLE1BQU0sU0FBUyxHQUFHLElBQUEsZ0JBQVMsRUFBQyxXQUFNLENBQUMsQ0FBQztBQUVwQzs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQ2pDLE9BQTJCLEVBQzNCLGFBQXFCLEVBQ3JCLE9BQXlCLFNBQVM7SUFFbEMsTUFBTSxXQUFXLEdBQWdCO1FBQy9CLEdBQUcsRUFBRSxhQUFhO1FBQ2xCLE1BQU0sRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDbkQsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFPLEVBQUUsSUFBSTtRQUNiLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLElBQUksRUFBRSxrREFBa0Q7S0FDaEUsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakcsd0VBQXdFO0lBQ3hFLE9BQU8sSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQWxCRCxzQ0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgSU9wdGlvbnMgYXMgR2xvYk9wdGlvbnMsIGdsb2IgYXMgZ2xvYkNiIH0gZnJvbSAnZ2xvYic7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCB7IEplc3RCdWlsZGVyT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5cbmNvbnN0IGdsb2JBc3luYyA9IHByb21pc2lmeShnbG9iQ2IpO1xuXG4vKipcbiAqIEZpbmRzIGFsbCB0ZXN0IGZpbGVzIGluIHRoZSBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBidWlsZGVyIG9wdGlvbnMgZGVzY3JpYmluZyB3aGVyZSB0byBmaW5kIHRlc3RzLlxuICogQHBhcmFtIHdvcmtzcGFjZVJvb3QgVGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSB3b3Jrc3BhY2UuXG4gKiBAcGFyYW0gZ2xvYiBBIHByb21pc2lmaWVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgZ2xvYmAgbW9kdWxlLiBPbmx5IGludGVuZGVkIGZvclxuICogICAgIHRlc3RpbmcgcHVycG9zZXMuXG4gKiBAcmV0dXJucyBBIHNldCBvZiBhbGwgdGVzdCBmaWxlcyBpbiB0aGUgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRUZXN0RmlsZXMoXG4gIG9wdGlvbnM6IEplc3RCdWlsZGVyT3B0aW9ucyxcbiAgd29ya3NwYWNlUm9vdDogc3RyaW5nLFxuICBnbG9iOiB0eXBlb2YgZ2xvYkFzeW5jID0gZ2xvYkFzeW5jLFxuKTogUHJvbWlzZTxTZXQ8c3RyaW5nPj4ge1xuICBjb25zdCBnbG9iT3B0aW9uczogR2xvYk9wdGlvbnMgPSB7XG4gICAgY3dkOiB3b3Jrc3BhY2VSb290LFxuICAgIGlnbm9yZTogWydub2RlX21vZHVsZXMvKionXS5jb25jYXQob3B0aW9ucy5leGNsdWRlKSxcbiAgICBzdHJpY3Q6IHRydWUsIC8vIEZhaWwgb24gYW4gXCJ1bnVzdWFsIGVycm9yXCIgd2hlbiByZWFkaW5nIHRoZSBmaWxlIHN5c3RlbS5cbiAgICBub2JyYWNlOiB0cnVlLCAvLyBEbyBub3QgZXhwYW5kIGBhe2IsY31gIHRvIGBhYixhY2AuXG4gICAgbm9leHQ6IHRydWUsIC8vIERpc2FibGUgXCJleHRnbG9iXCIgcGF0dGVybnMuXG4gICAgbm9kaXI6IHRydWUsIC8vIE1hdGNoIG9ubHkgZmlsZXMsIGRvbid0IGNhcmUgYWJvdXQgZGlyZWN0b3JpZXMuXG4gIH07XG5cbiAgY29uc3QgaW5jbHVkZWQgPSBhd2FpdCBQcm9taXNlLmFsbChvcHRpb25zLmluY2x1ZGUubWFwKChwYXR0ZXJuKSA9PiBnbG9iKHBhdHRlcm4sIGdsb2JPcHRpb25zKSkpO1xuXG4gIC8vIEZsYXR0ZW4gYW5kIGRlZHVwbGljYXRlIGFueSBmaWxlcyBmb3VuZCBpbiBtdWx0aXBsZSBpbmNsdWRlIHBhdHRlcm5zLlxuICByZXR1cm4gbmV3IFNldChpbmNsdWRlZC5mbGF0KCkpO1xufVxuIl19
@@ -141,7 +141,6 @@ async function initialize(options, context, webpackConfigurationTransform) {
141
141
  const adjustedOptions = options.watch ? options : { ...options, assets: [] };
142
142
  const { config, projectRoot, projectSourceRoot, i18n } = await (0, webpack_browser_config_1.generateI18nBrowserWebpackConfigFromContext)({
143
143
  ...adjustedOptions,
144
- buildOptimizer: false,
145
144
  aot: true,
146
145
  platform: 'server',
147
146
  }, context, (wco) => {
@@ -199,4 +198,4 @@ function getPlatformServerExportsConfig(wco) {
199
198
  }
200
199
  : {};
201
200
  }
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9zZXJ2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx5REFBeUY7QUFDekYsaUVBQTJEO0FBQzNELCtDQUE0QztBQUM1QyxnREFBa0M7QUFDbEMsK0JBQW1EO0FBR25ELHVDQUlxQjtBQUNyQiw2Q0FBMkM7QUFDM0MseURBQXFEO0FBQ3JELDZDQUFrRDtBQUNsRCw2REFBbUU7QUFFbkUsMkRBQTZEO0FBQzdELHlEQUErRDtBQUMvRCxpREFBOEM7QUFDOUMsaURBQXFFO0FBQ3JFLCtFQUc0QztBQUM1QyxtREFBeUU7QUFDekUseURBQXdFO0FBQ3hFLHFEQU1tQztBQWlCbkM7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQ3JCLE9BQTZCLEVBQzdCLE9BQXVCLEVBQ3ZCLGFBRUksRUFBRTtJQUVOLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFFbkMseUJBQXlCO0lBQ3pCLElBQUEsd0NBQThCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlELElBQUksV0FBNEMsQ0FBQztJQUVqRCxPQUFPLElBQUEsV0FBSSxFQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM3RSxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRTtRQUM3RCxPQUFPLElBQUEsMEJBQVUsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO1lBQ2pDLGNBQWMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFtQjtZQUNwRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtvQkFDbkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbkQ7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDLElBQUksQ0FDTCxJQUFBLGdCQUFTLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3pCLE1BQU0sRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQ3hFLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQzthQUM1RDtZQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osSUFBSSxJQUFBLHdCQUFnQixFQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFBLDZCQUFxQixFQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzVFO2dCQUNELElBQUksSUFBQSxzQkFBYyxFQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFBLDJCQUFtQixFQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzNFO2dCQUVELE9BQU8sTUFBTSxDQUFDO2FBQ2Y7WUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFPLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDO1lBQzdDLFdBQVcsR0FBRyxJQUFBLGdDQUFpQixFQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUV0RCxjQUFjO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7Z0JBQzVDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDbkMsSUFBSTtvQkFDRixNQUFNLElBQUEsd0JBQVUsRUFDZCxJQUFBLDhCQUFzQixFQUNwQixPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLFdBQVcsRUFDWCxpQkFBaUIsQ0FDbEIsRUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUNoQyxPQUFPLENBQUMsYUFBYSxDQUN0QixDQUFDO29CQUNGLE9BQU8sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztpQkFDN0M7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7b0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFNLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztvQkFDNUQsSUFBQSxxQkFBYSxFQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVuQixPQUFPO3dCQUNMLEdBQUcsTUFBTTt3QkFDVCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUUseUJBQXlCLEdBQUcsR0FBRyxDQUFDLE9BQU87cUJBQy9DLENBQUM7aUJBQ0g7YUFDRjtZQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHNDQUFzQixFQUMxQyxPQUFPLEVBQ1AsWUFBWSxFQUNaLElBQUksRUFDSixjQUFjLEVBQ2QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFDaEMsRUFBRSxFQUNGLFVBQVUsRUFDVixPQUFPLENBQUMsc0JBQXNCLENBQy9CLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDWixPQUFPO3dCQUNMLEdBQUcsTUFBTTt3QkFDVCxPQUFPLEVBQUUsS0FBSztxQkFDZixDQUFDO2lCQUNIO2FBQ0Y7WUFFRCxJQUFBLDBCQUFrQixFQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXpELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUMsRUFDRixJQUFBLGdCQUFTLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ25CLE9BQU8sTUFBNkIsQ0FBQztTQUN0QztRQUVELE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxjQUFjO1lBQ2QsT0FBTyxFQUFFLENBQUMsV0FBVztnQkFDbkIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNsRCxNQUFNO29CQUNOLElBQUk7aUJBQ0wsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDUixJQUFJLEVBQUUsY0FBYzthQUNyQjtTQUNxQixDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDO0FBcEhELDBCQW9IQztBQUVELGtCQUFlLElBQUEseUJBQWEsRUFBNEMsT0FBTyxDQUFDLENBQUM7QUFFakYsS0FBSyxVQUFVLFVBQVUsQ0FDdkIsT0FBNkIsRUFDN0IsT0FBdUIsRUFDdkIsNkJBQTJFO0lBTzNFLDhCQUE4QjtJQUM5QixNQUFNLElBQUEsa0NBQW9CLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFFcEMsTUFBTSwwQ0FBMEMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sWUFBWSxHQUFHLENBQUMsd0RBQWEsY0FBYyxHQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDNUQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQzlDLG9FQUFvRTtJQUNwRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRTdFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxHQUNwRCxNQUFNLElBQUEsb0VBQTJDLEVBQy9DO1FBQ0UsR0FBRyxlQUFlO1FBQ2xCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsUUFBUSxFQUFFLFFBQVE7S0FDZSxFQUNuQyxPQUFPLEVBQ1AsQ0FBQyxHQUFHLEVBQUUsRUFBRTs7UUFDTixpRUFBaUU7UUFDakUsTUFBQSxHQUFHLENBQUMsWUFBWSxFQUFDLGlCQUFpQixRQUFqQixpQkFBaUIsR0FBSyxFQUFFLEVBQUM7UUFDMUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1FBRXJGLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFBLHlCQUFlLEVBQUMsR0FBRyxDQUFDLEVBQUUsSUFBQSx5QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQyxDQUNGLENBQUM7SUFFSixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtRQUM1QixJQUFBLHVCQUFlLEVBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0tBQzVEO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQU0sNkJBQTZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUVwRixPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztBQUM3RSxDQUFDO0FBRUQsS0FBSyxVQUFVLDBDQUEwQyxDQUN2RCxPQUF1QixFQUN2QixZQUFvQjtJQUVwQiwwREFBMEQ7SUFDMUQsZ0dBQWdHO0lBQ2hHLDBGQUEwRjtJQUMxRiw4RkFBOEY7SUFFOUYsT0FBTztJQUNQLGlHQUFpRztJQUNqRyxvRkFBb0Y7SUFDcEYsd0lBQXdJO0lBQ3hJLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsd0RBQWEsY0FBYyxHQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLElBQUksUUFBUSxDQUFDLHNCQUFzQixFQUFFLG1CQUFtQixLQUFLLFNBQVMsRUFBRTtRQUN0RSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDakIscUNBQXFDLFlBQVksS0FBSztZQUNwRCxzR0FBc0c7WUFDdEcsbUdBQW1HO1lBQ25HLG1GQUFtRixDQUN0RixDQUFDO0tBQ0g7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyw4QkFBOEIsQ0FBQyxHQUFnQztJQUN0RSwwQ0FBMEM7SUFDMUMsK0ZBQStGO0lBRS9GLG9FQUFvRTtJQUNwRSx1RkFBdUY7SUFDdkYsbUdBQW1HO0lBRW5HLE9BQU8sSUFBQSxtQ0FBeUIsRUFBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3hDLENBQUMsQ0FBQztZQUNFLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUU7b0JBQ0w7d0JBQ0UsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUM7d0JBQzNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN6RDtpQkFDRjthQUNGO1NBQ0Y7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBCdWlsZGVyQ29udGV4dCwgQnVpbGRlck91dHB1dCwgY3JlYXRlQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IHsgcnVuV2VicGFjayB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC13ZWJwYWNrJztcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXRNYXAsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB3ZWJwYWNrLCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IEV4ZWN1dGlvblRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQge1xuICBOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWEsXG4gIGRlbGV0ZU91dHB1dERpcixcbiAgbm9ybWFsaXplQXNzZXRQYXR0ZXJucyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgY29sb3JzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3InO1xuaW1wb3J0IHsgY29weUFzc2V0cyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvcHktYXNzZXRzJztcbmltcG9ydCB7IGFzc2VydElzRXJyb3IgfSBmcm9tICcuLi8uLi91dGlscy9lcnJvcic7XG5pbXBvcnQgeyBpMThuSW5saW5lRW1pdHRlZEZpbGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi1pbmxpbmluZyc7XG5pbXBvcnQgeyBJMThuT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4tb3B0aW9ucyc7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXRQYXRocyB9IGZyb20gJy4uLy4uL3V0aWxzL291dHB1dC1wYXRocyc7XG5pbXBvcnQgeyBwdXJnZVN0YWxlQnVpbGRDYWNoZSB9IGZyb20gJy4uLy4uL3V0aWxzL3B1cmdlLWNhY2hlJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi8uLi91dGlscy9zcGlubmVyJztcbmltcG9ydCB7IGFzc2VydENvbXBhdGlibGVBbmd1bGFyVmVyc2lvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3ZlcnNpb24nO1xuaW1wb3J0IHtcbiAgQnJvd3NlcldlYnBhY2tDb25maWdPcHRpb25zLFxuICBnZW5lcmF0ZUkxOG5Ccm93c2VyV2VicGFja0NvbmZpZ0Zyb21Db250ZXh0LFxufSBmcm9tICcuLi8uLi91dGlscy93ZWJwYWNrLWJyb3dzZXItY29uZmlnJztcbmltcG9ydCB7IGdldENvbW1vbkNvbmZpZywgZ2V0U3R5bGVzQ29uZmlnIH0gZnJvbSAnLi4vLi4vd2VicGFjay9jb25maWdzJztcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXJJbnN0YWxsZWQgfSBmcm9tICcuLi8uLi93ZWJwYWNrL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgc3RhdHNFcnJvcnNUb1N0cmluZyxcbiAgc3RhdHNIYXNFcnJvcnMsXG4gIHN0YXRzSGFzV2FybmluZ3MsXG4gIHN0YXRzV2FybmluZ3NUb1N0cmluZyxcbiAgd2VicGFja1N0YXRzTG9nZ2VyLFxufSBmcm9tICcuLi8uLi93ZWJwYWNrL3V0aWxzL3N0YXRzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBTZXJ2ZXJCdWlsZGVyT3B0aW9ucyB9IGZyb20gJy4vc2NoZW1hJztcblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsIERpcmVjdCB1c2FnZSBvZiB0aGlzIHR5cGUgaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwuXG4gKi9cbmV4cG9ydCB0eXBlIFNlcnZlckJ1aWxkZXJPdXRwdXQgPSBCdWlsZGVyT3V0cHV0ICYge1xuICBiYXNlT3V0cHV0UGF0aDogc3RyaW5nO1xuICBvdXRwdXRQYXRoOiBzdHJpbmc7XG4gIG91dHB1dHM6IHtcbiAgICBsb2NhbGU/OiBzdHJpbmc7XG4gICAgcGF0aDogc3RyaW5nO1xuICB9W107XG59O1xuXG5leHBvcnQgeyBTZXJ2ZXJCdWlsZGVyT3B0aW9ucyB9O1xuXG4vKipcbiAqIEBleHBlcmltZW50YWwgRGlyZWN0IHVzYWdlIG9mIHRoaXMgZnVuY3Rpb24gaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlKFxuICBvcHRpb25zOiBTZXJ2ZXJCdWlsZGVyT3B0aW9ucyxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHRyYW5zZm9ybXM6IHtcbiAgICB3ZWJwYWNrQ29uZmlndXJhdGlvbj86IEV4ZWN1dGlvblRyYW5zZm9ybWVyPHdlYnBhY2suQ29uZmlndXJhdGlvbj47XG4gIH0gPSB7fSxcbik6IE9ic2VydmFibGU8U2VydmVyQnVpbGRlck91dHB1dD4ge1xuICBjb25zdCByb290ID0gY29udGV4dC53b3Jrc3BhY2VSb290O1xuXG4gIC8vIENoZWNrIEFuZ3VsYXIgdmVyc2lvbi5cbiAgYXNzZXJ0Q29tcGF0aWJsZUFuZ3VsYXJWZXJzaW9uKHJvb3QpO1xuXG4gIGNvbnN0IGJhc2VPdXRwdXRQYXRoID0gcGF0aC5yZXNvbHZlKHJvb3QsIG9wdGlvbnMub3V0cHV0UGF0aCk7XG4gIGxldCBvdXRwdXRQYXRoczogdW5kZWZpbmVkIHwgTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICByZXR1cm4gZnJvbShpbml0aWFsaXplKG9wdGlvbnMsIGNvbnRleHQsIHRyYW5zZm9ybXMud2VicGFja0NvbmZpZ3VyYXRpb24pKS5waXBlKFxuICAgIGNvbmNhdE1hcCgoeyBjb25maWcsIGkxOG4sIHByb2plY3RSb290LCBwcm9qZWN0U291cmNlUm9vdCB9KSA9PiB7XG4gICAgICByZXR1cm4gcnVuV2VicGFjayhjb25maWcsIGNvbnRleHQsIHtcbiAgICAgICAgd2VicGFja0ZhY3Rvcnk6IHJlcXVpcmUoJ3dlYnBhY2snKSBhcyB0eXBlb2Ygd2VicGFjayxcbiAgICAgICAgbG9nZ2luZzogKHN0YXRzLCBjb25maWcpID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKHN0YXRzLnRvU3RyaW5nKGNvbmZpZy5zdGF0cykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcChhc3luYyAob3V0cHV0KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBlbWl0dGVkRmlsZXMgPSBbXSwgb3V0cHV0UGF0aCwgd2VicGFja1N0YXRzLCBzdWNjZXNzIH0gPSBvdXRwdXQ7XG4gICAgICAgICAgaWYgKCF3ZWJwYWNrU3RhdHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2VicGFjayBzdGF0cyBidWlsZCByZXN1bHQgaXMgcmVxdWlyZWQuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICBpZiAoc3RhdHNIYXNXYXJuaW5ncyh3ZWJwYWNrU3RhdHMpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4oc3RhdHNXYXJuaW5nc1RvU3RyaW5nKHdlYnBhY2tTdGF0cywgeyBjb2xvcnM6IHRydWUgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRzSGFzRXJyb3JzKHdlYnBhY2tTdGF0cykpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3Ioc3RhdHNFcnJvcnNUb1N0cmluZyh3ZWJwYWNrU3RhdHMsIHsgY29sb3JzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzcGlubmVyID0gbmV3IFNwaW5uZXIoKTtcbiAgICAgICAgICBzcGlubmVyLmVuYWJsZWQgPSBvcHRpb25zLnByb2dyZXNzICE9PSBmYWxzZTtcbiAgICAgICAgICBvdXRwdXRQYXRocyA9IGVuc3VyZU91dHB1dFBhdGhzKGJhc2VPdXRwdXRQYXRoLCBpMThuKTtcblxuICAgICAgICAgIC8vIENvcHkgYXNzZXRzXG4gICAgICAgICAgaWYgKCFvcHRpb25zLndhdGNoICYmIG9wdGlvbnMuYXNzZXRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNwaW5uZXIuc3RhcnQoJ0NvcHlpbmcgYXNzZXRzLi4uJyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBhd2FpdCBjb3B5QXNzZXRzKFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUFzc2V0UGF0dGVybnMoXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmFzc2V0cyxcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQud29ya3NwYWNlUm9vdCxcbiAgICAgICAgICAgICAgICAgIHByb2plY3RSb290LFxuICAgICAgICAgICAgICAgICAgcHJvamVjdFNvdXJjZVJvb3QsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKG91dHB1dFBhdGhzLnZhbHVlcygpKSxcbiAgICAgICAgICAgICAgICBjb250ZXh0LndvcmtzcGFjZVJvb3QsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQ29weWluZyBhc3NldHMgY29tcGxldGUuJyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgc3Bpbm5lci5mYWlsKGNvbG9ycy5yZWRCcmlnaHQoJ0NvcHlpbmcgb2YgYXNzZXRzIGZhaWxlZC4nKSk7XG4gICAgICAgICAgICAgIGFzc2VydElzRXJyb3IoZXJyKTtcblxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlcnJvcjogJ1VuYWJsZSB0byBjb3B5IGFzc2V0czogJyArIGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpMThuLnNob3VsZElubGluZSkge1xuICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGkxOG5JbmxpbmVFbWl0dGVkRmlsZXMoXG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIGVtaXR0ZWRGaWxlcyxcbiAgICAgICAgICAgICAgaTE4bixcbiAgICAgICAgICAgICAgYmFzZU91dHB1dFBhdGgsXG4gICAgICAgICAgICAgIEFycmF5LmZyb20ob3V0cHV0UGF0aHMudmFsdWVzKCkpLFxuICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgb3V0cHV0UGF0aCxcbiAgICAgICAgICAgICAgb3B0aW9ucy5pMThuTWlzc2luZ1RyYW5zbGF0aW9uLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB3ZWJwYWNrU3RhdHNMb2dnZXIoY29udGV4dC5sb2dnZXIsIHdlYnBhY2tTdGF0cywgY29uZmlnKTtcblxuICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KSxcbiAgICBjb25jYXRNYXAoYXN5bmMgKG91dHB1dCkgPT4ge1xuICAgICAgaWYgKCFvdXRwdXQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4gb3V0cHV0IGFzIFNlcnZlckJ1aWxkZXJPdXRwdXQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgYmFzZU91dHB1dFBhdGgsXG4gICAgICAgIG91dHB1dHM6IChvdXRwdXRQYXRocyAmJlxuICAgICAgICAgIFsuLi5vdXRwdXRQYXRocy5lbnRyaWVzKCldLm1hcCgoW2xvY2FsZSwgcGF0aF0pID0+ICh7XG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgIH0pKSkgfHwge1xuICAgICAgICAgIHBhdGg6IGJhc2VPdXRwdXRQYXRoLFxuICAgICAgICB9LFxuICAgICAgfSBhcyBTZXJ2ZXJCdWlsZGVyT3V0cHV0O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVCdWlsZGVyPFNlcnZlckJ1aWxkZXJPcHRpb25zLCBTZXJ2ZXJCdWlsZGVyT3V0cHV0PihleGVjdXRlKTtcblxuYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZShcbiAgb3B0aW9uczogU2VydmVyQnVpbGRlck9wdGlvbnMsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICB3ZWJwYWNrQ29uZmlndXJhdGlvblRyYW5zZm9ybT86IEV4ZWN1dGlvblRyYW5zZm9ybWVyPHdlYnBhY2suQ29uZmlndXJhdGlvbj4sXG4pOiBQcm9taXNlPHtcbiAgY29uZmlnOiB3ZWJwYWNrLkNvbmZpZ3VyYXRpb247XG4gIGkxOG46IEkxOG5PcHRpb25zO1xuICBwcm9qZWN0Um9vdDogc3RyaW5nO1xuICBwcm9qZWN0U291cmNlUm9vdD86IHN0cmluZztcbn0+IHtcbiAgLy8gUHVyZ2Ugb2xkIGJ1aWxkIGRpc2sgY2FjaGUuXG4gIGF3YWl0IHB1cmdlU3RhbGVCdWlsZENhY2hlKGNvbnRleHQpO1xuXG4gIGF3YWl0IGNoZWNrVHNDb25maWdGb3JQcmVzZXJ2ZVdoaXRlc3BhY2VzU2V0dGluZyhjb250ZXh0LCBvcHRpb25zLnRzQ29uZmlnKTtcblxuICBjb25zdCBicm93c2Vyc2xpc3QgPSAoYXdhaXQgaW1wb3J0KCdicm93c2Vyc2xpc3QnKSkuZGVmYXVsdDtcbiAgY29uc3Qgb3JpZ2luYWxPdXRwdXRQYXRoID0gb3B0aW9ucy5vdXRwdXRQYXRoO1xuICAvLyBBc3NldHMgYXJlIHByb2Nlc3NlZCBkaXJlY3RseSBieSB0aGUgYnVpbGRlciBleGNlcHQgd2hlbiB3YXRjaGluZ1xuICBjb25zdCBhZGp1c3RlZE9wdGlvbnMgPSBvcHRpb25zLndhdGNoID8gb3B0aW9ucyA6IHsgLi4ub3B0aW9ucywgYXNzZXRzOiBbXSB9O1xuXG4gIGNvbnN0IHsgY29uZmlnLCBwcm9qZWN0Um9vdCwgcHJvamVjdFNvdXJjZVJvb3QsIGkxOG4gfSA9XG4gICAgYXdhaXQgZ2VuZXJhdGVJMThuQnJvd3NlcldlYnBhY2tDb25maWdGcm9tQ29udGV4dChcbiAgICAgIHtcbiAgICAgICAgLi4uYWRqdXN0ZWRPcHRpb25zLFxuICAgICAgICBidWlsZE9wdGltaXplcjogZmFsc2UsXG4gICAgICAgIGFvdDogdHJ1ZSxcbiAgICAgICAgcGxhdGZvcm06ICdzZXJ2ZXInLFxuICAgICAgfSBhcyBOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWEsXG4gICAgICBjb250ZXh0LFxuICAgICAgKHdjbykgPT4ge1xuICAgICAgICAvLyBXZSB1c2UgdGhlIHBsYXRmb3JtIHRvIGRldGVybWluZSB0aGUgSmF2YVNjcmlwdCBzeW50YXggb3V0cHV0LlxuICAgICAgICB3Y28uYnVpbGRPcHRpb25zLnN1cHBvcnRlZEJyb3dzZXJzID8/PSBbXTtcbiAgICAgICAgd2NvLmJ1aWxkT3B0aW9ucy5zdXBwb3J0ZWRCcm93c2Vycy5wdXNoKC4uLmJyb3dzZXJzbGlzdCgnbWFpbnRhaW5lZCBub2RlIHZlcnNpb25zJykpO1xuXG4gICAgICAgIHJldHVybiBbZ2V0UGxhdGZvcm1TZXJ2ZXJFeHBvcnRzQ29uZmlnKHdjbyksIGdldENvbW1vbkNvbmZpZyh3Y28pLCBnZXRTdHlsZXNDb25maWcod2NvKV07XG4gICAgICB9LFxuICAgICk7XG5cbiAgaWYgKG9wdGlvbnMuZGVsZXRlT3V0cHV0UGF0aCkge1xuICAgIGRlbGV0ZU91dHB1dERpcihjb250ZXh0LndvcmtzcGFjZVJvb3QsIG9yaWdpbmFsT3V0cHV0UGF0aCk7XG4gIH1cblxuICBjb25zdCB0cmFuc2Zvcm1lZENvbmZpZyA9IChhd2FpdCB3ZWJwYWNrQ29uZmlndXJhdGlvblRyYW5zZm9ybT8uKGNvbmZpZykpID8/IGNvbmZpZztcblxuICByZXR1cm4geyBjb25maWc6IHRyYW5zZm9ybWVkQ29uZmlnLCBpMThuLCBwcm9qZWN0Um9vdCwgcHJvamVjdFNvdXJjZVJvb3QgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2hlY2tUc0NvbmZpZ0ZvclByZXNlcnZlV2hpdGVzcGFjZXNTZXR0aW5nKFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgdHNDb25maWdQYXRoOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gV2UgZG9uJ3QgdXNlIHRoZSBgcmVhZFRzQ29uZmlnYCBtZXRob2Qgb24gcHVycG9zZSBoZXJlLlxuICAvLyBUbyBvbmx5IGNhdGNoIGNhc2VzIHdlcmUgYHByZXNlcnZlV2hpdGVzcGFjZXNgIGlzIHNldCBkaXJlY3RseSBpbiB0aGUgYHRzY29uZmlnLnNlcnZlci5qc29uYCxcbiAgLy8gd2hpY2ggaW4gdGhlIG1ham9yaXR5IG9mIGNhc2VzIHdpbGwgY2F1c2UgYSBtaXN0bWF0Y2ggYmV0d2VlbiBjbGllbnQgYW5kIHNlcnZlciBidWlsZHMuXG4gIC8vIFRlY2huaWNhbGx5IHdlIHNob3VsZCBjaGVjayBpZiBgdHNjb25maWcuc2VydmVyLmpzb25gIGFuZCBgdHNjb25maWcuYXBwLmpzb25gIHZhbHVlcyBtYXRjaC5cblxuICAvLyBCdXQ6XG4gIC8vIDEuIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXQgYHRzY29uZmlnLmFwcC5qc29uYCBpcyB1c2VkIHRvIGJ1aWxkIHRoZSBjbGllbnQgc2lkZSBvZiB0aGlzIGFwcC5cbiAgLy8gMi4gVGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gYWNjZXNzIHRoZSBidWlsZCBidWlsZCBjb25maWcgZnJvbSB0aGUgc2VydmVyIGJ1aWxkZXIuXG4gIC8vIDQuIFRoaXMgd2lsbCBubyBsb25nZXIgYmUgYW4gaXNzdWUgd2l0aCBhIHNpbmdsZSBjb21waWxhdGlvbiBtb2RlbCB3ZXJlIHRoZSBzYW1lIHRzY29uZmlnIGlzIHVzZWQgZm9yIGJvdGggYnJvd3NlciBhbmQgc2VydmVyIGJ1aWxkcy5cbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbihjb250ZXh0LndvcmtzcGFjZVJvb3QsIHRzQ29uZmlnUGF0aCksICd1dGYtOCcpO1xuICBjb25zdCB7IHBhcnNlIH0gPSBhd2FpdCBpbXBvcnQoJ2pzb25jLXBhcnNlcicpO1xuICBjb25zdCB0c0NvbmZpZyA9IHBhcnNlKGNvbnRlbnQsIFtdLCB7IGFsbG93VHJhaWxpbmdDb21tYTogdHJ1ZSB9KTtcbiAgaWYgKHRzQ29uZmlnLmFuZ3VsYXJDb21waWxlck9wdGlvbnM/LnByZXNlcnZlV2hpdGVzcGFjZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnRleHQubG9nZ2VyLndhcm4oXG4gICAgICBgXCJwcmVzZXJ2ZVdoaXRlc3BhY2VzXCIgd2FzIHNldCBpbiBcIiR7dHNDb25maWdQYXRofVwiLiBgICtcbiAgICAgICAgJ01ha2Ugc3VyZSB0aGF0IHRoaXMgc2V0dGluZyBpcyBzZXQgY29uc2lzdGVudGx5IGluIGJvdGggXCJ0c2NvbmZpZy5zZXJ2ZXIuanNvblwiIGZvciB5b3VyIHNlcnZlciBzaWRlICcgK1xuICAgICAgICAnYW5kIFwidHNjb25maWcuYXBwLmpzb25cIiBmb3IgeW91ciBjbGllbnQgc2lkZS4gQSBtaXNtYXRjaGVkIHZhbHVlIHdpbGwgY2F1c2UgaHlkcmF0aW9uIHRvIGJyZWFrLlxcbicgK1xuICAgICAgICAnRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvaHlkcmF0aW9uI3ByZXNlcnZlLXdoaXRlc3BhY2VzJyxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQWRkIGBAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXJgIGV4cG9ydHMuXG4gKiBUaGlzIGlzIG5lZWRlZCBzbyB0aGF0IERJIHRva2VucyBjYW4gYmUgcmVmZXJlbmNlZCBhbmQgc2V0IGF0IHJ1bnRpbWUgb3V0c2lkZSBvZiB0aGUgYnVuZGxlLlxuICovXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybVNlcnZlckV4cG9ydHNDb25maWcod2NvOiBCcm93c2VyV2VicGFja0NvbmZpZ09wdGlvbnMpOiBQYXJ0aWFsPENvbmZpZ3VyYXRpb24+IHtcbiAgLy8gQWRkIGBAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXJgIGV4cG9ydHMuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgREkgdG9rZW5zIGNhbiBiZSByZWZlcmVuY2VkIGFuZCBzZXQgYXQgcnVudGltZSBvdXRzaWRlIG9mIHRoZSBidW5kbGUuXG5cbiAgLy8gT25seSBhZGQgYEBhbmd1bGFyL3BsYXRmb3JtLXNlcnZlcmAgZXhwb3J0cyB3aGVuIGl0IGlzIGluc3RhbGxlZC5cbiAgLy8gSW4gc29tZSBjYXNlcyB0aGlzIGJ1aWxkZXIgaXMgdXNlZCB3aGVuIGBAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXJgIGlzIG5vdCBpbnN0YWxsZWQuXG4gIC8vIEV4YW1wbGU6IHdoZW4gdXNpbmcgYEBuZ3VuaXZlcnNhbC9jb21tb24vY2xvdmVyYCB3aGljaCBkb2VzIG5vdCBuZWVkIGBAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXJgLlxuXG4gIHJldHVybiBpc1BsYXRmb3JtU2VydmVySW5zdGFsbGVkKHdjby5yb290KVxuICAgID8ge1xuICAgICAgICBtb2R1bGU6IHtcbiAgICAgICAgICBydWxlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZSgnLi9wbGF0Zm9ybS1zZXJ2ZXItZXhwb3J0cy1sb2FkZXInKSxcbiAgICAgICAgICAgICAgaW5jbHVkZTogW3BhdGgucmVzb2x2ZSh3Y28ucm9vdCwgd2NvLmJ1aWxkT3B0aW9ucy5tYWluKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgOiB7fTtcbn1cbiJdfQ==
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9zZXJ2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx5REFBeUY7QUFDekYsaUVBQTJEO0FBQzNELCtDQUE0QztBQUM1QyxnREFBa0M7QUFDbEMsK0JBQW1EO0FBR25ELHVDQUlxQjtBQUNyQiw2Q0FBMkM7QUFDM0MseURBQXFEO0FBQ3JELDZDQUFrRDtBQUNsRCw2REFBbUU7QUFFbkUsMkRBQTZEO0FBQzdELHlEQUErRDtBQUMvRCxpREFBOEM7QUFDOUMsaURBQXFFO0FBQ3JFLCtFQUc0QztBQUM1QyxtREFBeUU7QUFDekUseURBQXdFO0FBQ3hFLHFEQU1tQztBQWlCbkM7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQ3JCLE9BQTZCLEVBQzdCLE9BQXVCLEVBQ3ZCLGFBRUksRUFBRTtJQUVOLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFFbkMseUJBQXlCO0lBQ3pCLElBQUEsd0NBQThCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlELElBQUksV0FBNEMsQ0FBQztJQUVqRCxPQUFPLElBQUEsV0FBSSxFQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM3RSxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRTtRQUM3RCxPQUFPLElB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Q0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN6RDtpQkFDRjthQUNGO1NBQ0Y7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBCdWlsZGVyQ29udGV4dCwgQnVpbGRlck91dHB1dCwgY3JlYXRlQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IHsgcnVuV2VicGFjayB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC13ZWJwYWNrJztcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXRNYXAsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB3ZWJwYWNrLCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IEV4ZWN1dGlvblRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQge1xuICBOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWEsXG4gIGRlbGV0ZU91dHB1dERpcixcbiAgbm9ybWFsaXplQXNzZXRQYXR0ZXJucyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgY29sb3JzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3InO1xuaW1wb3J0IHsgY29weUFzc2V0cyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvcHktYXNzZXRzJztcbmltcG9ydCB7IGFzc2VydElzRXJyb3IgfSBmcm9tICcuLi8uLi91dGlscy9lcnJvcic7XG5pbXBvcnQgeyBpMThuSW5saW5lRW1pdHRlZEZpbGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi1pbmxpbmluZyc7XG5pbXBvcnQgeyBJMThuT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4tb3B0aW9ucyc7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXRQYXRocyB9IGZyb20gJy4uLy4uL3V0aWxzL291dHB1dC1wYXRocyc7XG5pbXBvcnQgeyBwdXJnZVN0YWxlQnVpbGRDYWNoZSB9IGZyb20gJy4uLy4uL3V0aWxzL3B1cmdlLWNhY2hlJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi8uLi91dGlscy9zcGlubmVyJztcbmltcG9ydCB7IGFzc2VydENvbXBhdGlibGVBbmd1bGFyVmVyc2lvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3ZlcnNpb24nO1xuaW1wb3J0IHtcbiAgQnJvd3NlcldlYnBhY2tDb25maWdPcHRpb25zLFxuICBnZW5lcmF0ZUkxOG5Ccm93c2VyV2VicGFja0NvbmZpZ0Zyb21Db250ZXh0LFxufSBmcm9tICcuLi8uLi91dGlscy93ZWJwYWNrLWJyb3dzZXItY29uZmlnJztcbmltcG9ydCB7IGdldENvbW1vbkNvbmZpZywgZ2V0U3R5bGVzQ29uZmlnIH0gZnJvbSAnLi4vLi4vd2VicGFjay9jb25maWdzJztcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXJJbnN0YWxsZWQgfSBmcm9tICcuLi8uLi93ZWJwYWNrL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgc3RhdHNFcnJvcnNUb1N0cmluZyxcbiAgc3RhdHNIYXNFcnJvcnMsXG4gIHN0YXRzSGFzV2FybmluZ3MsXG4gIHN0YXRzV2FybmluZ3NUb1N0cmluZyxcbiAgd2VicGFja1N0YXRzTG9nZ2VyLFxufSBmcm9tICcuLi8uLi93ZWJwYWNrL3V0aWxzL3N0YXRzJztcbmltcG9ydCB7IFNjaGVtYSBhcyBTZXJ2ZXJCdWlsZGVyT3B0aW9ucyB9IGZyb20gJy4vc2NoZW1hJztcblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsIERpcmVjdCB1c2FnZSBvZiB0aGlzIHR5cGUgaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwuXG4gKi9cbmV4cG9ydCB0eXBlIFNlcnZlckJ1aWxkZXJPdXRwdXQgPSBCdWlsZGVyT3V0cHV0ICYge1xuICBiYXNlT3V0cHV0UGF0aDogc3RyaW5nO1xuICBvdXRwdXRQYXRoOiBzdHJpbmc7XG4gIG91dHB1dHM6IHtcbiAgICBsb2NhbGU/OiBzdHJpbmc7XG4gICAgcGF0aDogc3RyaW5nO1xuICB9W107XG59O1xuXG5leHBvcnQgeyBTZXJ2ZXJCdWlsZGVyT3B0aW9ucyB9O1xuXG4vKipcbiAqIEBleHBlcmltZW50YWwgRGlyZWN0IHVzYWdlIG9mIHRoaXMgZnVuY3Rpb24gaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlKFxuICBvcHRpb25zOiBTZXJ2ZXJCdWlsZGVyT3B0aW9ucyxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHRyYW5zZm9ybXM6IHtcbiAgICB3ZWJwYWNrQ29uZmlndXJhdGlvbj86IEV4ZWN1dGlvblRyYW5zZm9ybWVyPHdlYnBhY2suQ29uZmlndXJhdGlvbj47XG4gIH0gPSB7fSxcbik6IE9ic2VydmFibGU8U2VydmVyQnVpbGRlck91dHB1dD4ge1xuICBjb25zdCByb290ID0gY29udGV4dC53b3Jrc3BhY2VSb290O1xuXG4gIC8vIENoZWNrIEFuZ3VsYXIgdmVyc2lvbi5cbiAgYXNzZXJ0Q29tcGF0aWJsZUFuZ3VsYXJWZXJzaW9uKHJvb3QpO1xuXG4gIGNvbnN0IGJhc2VPdXRwdXRQYXRoID0gcGF0aC5yZXNvbHZlKHJvb3QsIG9wdGlvbnMub3V0cHV0UGF0aCk7XG4gIGxldCBvdXRwdXRQYXRoczogdW5kZWZpbmVkIHwgTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICByZXR1cm4gZnJvbShpbml0aWFsaXplKG9wdGlvbnMsIGNvbnRleHQsIHRyYW5zZm9ybXMud2VicGFja0NvbmZpZ3VyYXRpb24pKS5waXBlKFxuICAgIGNvbmNhdE1hcCgoeyBjb25maWcsIGkxOG4sIHByb2plY3RSb290LCBwcm9qZWN0U291cmNlUm9vdCB9KSA9PiB7XG4gICAgICByZXR1cm4gcnVuV2VicGFjayhjb25maWcsIGNvbnRleHQsIHtcbiAgICAgICAgd2VicGFja0ZhY3Rvcnk6IHJlcXVpcmUoJ3dlYnBhY2snKSBhcyB0eXBlb2Ygd2VicGFjayxcbiAgICAgICAgbG9nZ2luZzogKHN0YXRzLCBjb25maWcpID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKHN0YXRzLnRvU3RyaW5nKGNvbmZpZy5zdGF0cykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcChhc3luYyAob3V0cHV0KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBlbWl0dGVkRmlsZXMgPSBbXSwgb3V0cHV0UGF0aCwgd2VicGFja1N0YXRzLCBzdWNjZXNzIH0gPSBvdXRwdXQ7XG4gICAgICAgICAgaWYgKCF3ZWJwYWNrU3RhdHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2VicGFjayBzdGF0cyBidWlsZCByZXN1bHQgaXMgcmVxdWlyZWQuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICBpZiAoc3RhdHNIYXNXYXJuaW5ncyh3ZWJwYWNrU3RhdHMpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4oc3RhdHNXYXJuaW5nc1RvU3RyaW5nKHdlYnBhY2tTdGF0cywgeyBjb2xvcnM6IHRydWUgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRzSGFzRXJyb3JzKHdlYnBhY2tTdGF0cykpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3Ioc3RhdHNFcnJvcnNUb1N0cmluZyh3ZWJwYWNrU3RhdHMsIHsgY29sb3JzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzcGlubmVyID0gbmV3IFNwaW5uZXIoKTtcbiAgICAgICAgICBzcGlubmVyLmVuYWJsZWQgPSBvcHRpb25zLnByb2dyZXNzICE9PSBmYWxzZTtcbiAgICAgICAgICBvdXRwdXRQYXRocyA9IGVuc3VyZU91dHB1dFBhdGhzKGJhc2VPdXRwdXRQYXRoLCBpMThuKTtcblxuICAgICAgICAgIC8vIENvcHkgYXNzZXRzXG4gICAgICAgICAgaWYgKCFvcHRpb25zLndhdGNoICYmIG9wdGlvbnMuYXNzZXRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNwaW5uZXIuc3RhcnQoJ0NvcHlpbmcgYXNzZXRzLi4uJyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBhd2FpdCBjb3B5QXNzZXRzKFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUFzc2V0UGF0dGVybnMoXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmFzc2V0cyxcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQud29ya3NwYWNlUm9vdCxcbiAgICAgICAgICAgICAgICAgIHByb2plY3RSb290LFxuICAgICAgICAgICAgICAgICAgcHJvamVjdFNvdXJjZVJvb3QsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKG91dHB1dFBhdGhzLnZhbHVlcygpKSxcbiAgICAgICAgICAgICAgICBjb250ZXh0LndvcmtzcGFjZVJvb3QsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQ29weWluZyBhc3NldHMgY29tcGxldGUuJyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgc3Bpbm5lci5mYWlsKGNvbG9ycy5yZWRCcmlnaHQoJ0NvcHlpbmcgb2YgYXNzZXRzIGZhaWxlZC4nKSk7XG4gICAgICAgICAgICAgIGFzc2VydElzRXJyb3IoZXJyKTtcblxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlcnJvcjogJ1VuYWJsZSB0byBjb3B5IGFzc2V0czogJyArIGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpMThuLnNob3VsZElubGluZSkge1xuICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGkxOG5JbmxpbmVFbWl0dGVkRmlsZXMoXG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIGVtaXR0ZWRGaWxlcyxcbiAgICAgICAgICAgICAgaTE4bixcbiAgICAgICAgICAgICAgYmFzZU91dHB1dFBhdGgsXG4gICAgICAgICAgICAgIEFycmF5LmZyb20ob3V0cHV0UGF0aHMudmFsdWVzKCkpLFxuICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgb3V0cHV0UGF0aCxcbiAgICAgICAgICAgICAgb3B0aW9ucy5pMThuTWlzc2luZ1RyYW5zbGF0aW9uLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB3ZWJwYWNrU3RhdHNMb2dnZXIoY29udGV4dC5sb2dnZXIsIHdlYnBhY2tTdGF0cywgY29uZmlnKTtcblxuICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KSxcbiAgICBjb25jYXRNYXAoYXN5bmMgKG91dHB1dCkgPT4ge1xuICAgICAgaWYgKCFvdXRwdXQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4gb3V0cHV0IGFzIFNlcnZlckJ1aWxkZXJPdXRwdXQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgYmFzZU91dHB1dFBhdGgsXG4gICAgICAgIG91dHB1dHM6IChvdXRwdXRQYXRocyAmJlxuICAgICAgICAgIFsuLi5vdXRwdXRQYXRocy5lbnRyaWVzKCldLm1hcCgoW2xvY2FsZSwgcGF0aF0pID0+ICh7XG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgIH0pKSkgfHwge1xuICAgICAgICAgIHBhdGg6IGJhc2VPdXRwdXRQYXRoLFxuICAgICAgICB9LFxuICAgICAgfSBhcyBTZXJ2ZXJCdWlsZGVyT3V0cHV0O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVCdWlsZGVyPFNlcnZlckJ1aWxkZXJPcHRpb25zLCBTZXJ2ZXJCdWlsZGVyT3V0cHV0PihleGVjdXRlKTtcblxuYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZShcbiAgb3B0aW9uczogU2VydmVyQnVpbGRlck9wdGlvbnMsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICB3ZWJwYWNrQ29uZmlndXJhdGlvblRyYW5zZm9ybT86IEV4ZWN1dGlvblRyYW5zZm9ybWVyPHdlYnBhY2suQ29uZmlndXJhdGlvbj4sXG4pOiBQcm9taXNlPHtcbiAgY29uZmlnOiB3ZWJwYWNrLkNvbmZpZ3VyYXRpb247XG4gIGkxOG46IEkxOG5PcHRpb25zO1xuICBwcm9qZWN0Um9vdDogc3RyaW5nO1xuICBwcm9qZWN0U291cmNlUm9vdD86IHN0cmluZztcbn0+IHtcbiAgLy8gUHVyZ2Ugb2xkIGJ1aWxkIGRpc2sgY2FjaGUuXG4gIGF3YWl0IHB1cmdlU3RhbGVCdWlsZENhY2hlKGNvbnRleHQpO1xuXG4gIGF3YWl0IGNoZWNrVHNDb25maWdGb3JQcmVzZXJ2ZVdoaXRlc3BhY2VzU2V0dGluZyhjb250ZXh0LCBvcHRpb25zLnRzQ29uZmlnKTtcblxuICBjb25zdCBicm93c2Vyc2xpc3QgPSAoYXdhaXQgaW1wb3J0KCdicm93c2Vyc2xpc3QnKSkuZGVmYXVsdDtcbiAgY29uc3Qgb3JpZ2luYWxPdXRwdXRQYXRoID0gb3B0aW9ucy5vdXRwdXRQYXRoO1xuICAvLyBBc3NldHMgYXJlIHByb2Nlc3NlZCBkaXJlY3RseSBieSB0aGUgYnVpbGRlciBleGNlcHQgd2hlbiB3YXRjaGluZ1xuICBjb25zdCBhZGp1c3RlZE9wdGlvbnMgPSBvcHRpb25zLndhdGNoID8gb3B0aW9ucyA6IHsgLi4ub3B0aW9ucywgYXNzZXRzOiBbXSB9O1xuXG4gIGNvbnN0IHsgY29uZmlnLCBwcm9qZWN0Um9vdCwgcHJvamVjdFNvdXJjZVJvb3QsIGkxOG4gfSA9XG4gICAgYXdhaXQgZ2VuZXJhdGVJMThuQnJvd3NlcldlYnBhY2tDb25maWdGcm9tQ29udGV4dChcbiAgICAgIHtcbiAgICAgICAgLi4uYWRqdXN0ZWRPcHRpb25zLFxuICAgICAgICBhb3Q6IHRydWUsXG4gICAgICAgIHBsYXRmb3JtOiAnc2VydmVyJyxcbiAgICAgIH0gYXMgTm9ybWFsaXplZEJyb3dzZXJCdWlsZGVyU2NoZW1hLFxuICAgICAgY29udGV4dCxcbiAgICAgICh3Y28pID0+IHtcbiAgICAgICAgLy8gV2UgdXNlIHRoZSBwbGF0Zm9ybSB0byBkZXRlcm1pbmUgdGhlIEphdmFTY3JpcHQgc3ludGF4IG91dHB1dC5cbiAgICAgICAgd2NvLmJ1aWxkT3B0aW9ucy5zdXBwb3J0ZWRCcm93c2VycyA/Pz0gW107XG4gICAgICAgIHdjby5idWlsZE9wdGlvbnMuc3VwcG9ydGVkQnJvd3NlcnMucHVzaCguLi5icm93c2Vyc2xpc3QoJ21haW50YWluZWQgbm9kZSB2ZXJzaW9ucycpKTtcblxuICAgICAgICByZXR1cm4gW2dldFBsYXRmb3JtU2VydmVyRXhwb3J0c0NvbmZpZyh3Y28pLCBnZXRDb21tb25Db25maWcod2NvKSwgZ2V0U3R5bGVzQ29uZmlnKHdjbyldO1xuICAgICAgfSxcbiAgICApO1xuXG4gIGlmIChvcHRpb25zLmRlbGV0ZU91dHB1dFBhdGgpIHtcbiAgICBkZWxldGVPdXRwdXREaXIoY29udGV4dC53b3Jrc3BhY2VSb290LCBvcmlnaW5hbE91dHB1dFBhdGgpO1xuICB9XG5cbiAgY29uc3QgdHJhbnNmb3JtZWRDb25maWcgPSAoYXdhaXQgd2VicGFja0NvbmZpZ3VyYXRpb25UcmFuc2Zvcm0/Lihjb25maWcpKSA/PyBjb25maWc7XG5cbiAgcmV0dXJuIHsgY29uZmlnOiB0cmFuc2Zvcm1lZENvbmZpZywgaTE4biwgcHJvamVjdFJvb3QsIHByb2plY3RTb3VyY2VSb290IH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrVHNDb25maWdGb3JQcmVzZXJ2ZVdoaXRlc3BhY2VzU2V0dGluZyhcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHRzQ29uZmlnUGF0aDogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIFdlIGRvbid0IHVzZSB0aGUgYHJlYWRUc0NvbmZpZ2AgbWV0aG9kIG9uIHB1cnBvc2UgaGVyZS5cbiAgLy8gVG8gb25seSBjYXRjaCBjYXNlcyB3ZXJlIGBwcmVzZXJ2ZVdoaXRlc3BhY2VzYCBpcyBzZXQgZGlyZWN0bHkgaW4gdGhlIGB0c2NvbmZpZy5zZXJ2ZXIuanNvbmAsXG4gIC8vIHdoaWNoIGluIHRoZSBtYWpvcml0eSBvZiBjYXNlcyB3aWxsIGNhdXNlIGEgbWlzdG1hdGNoIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXIgYnVpbGRzLlxuICAvLyBUZWNobmljYWxseSB3ZSBzaG91bGQgY2hlY2sgaWYgYHRzY29uZmlnLnNlcnZlci5qc29uYCBhbmQgYHRzY29uZmlnLmFwcC5qc29uYCB2YWx1ZXMgbWF0Y2guXG5cbiAgLy8gQnV0OlxuICAvLyAxLiBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0IGB0c2NvbmZpZy5hcHAuanNvbmAgaXMgdXNlZCB0byBidWlsZCB0aGUgY2xpZW50IHNpZGUgb2YgdGhpcyBhcHAuXG4gIC8vIDIuIFRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGFjY2VzcyB0aGUgYnVpbGQgYnVpbGQgY29uZmlnIGZyb20gdGhlIHNlcnZlciBidWlsZGVyLlxuICAvLyA0LiBUaGlzIHdpbGwgbm8gbG9uZ2VyIGJlIGFuIGlzc3VlIHdpdGggYSBzaW5nbGUgY29tcGlsYXRpb24gbW9kZWwgd2VyZSB0aGUgc2FtZSB0c2NvbmZpZyBpcyB1c2VkIGZvciBib3RoIGJyb3dzZXIgYW5kIHNlcnZlciBidWlsZHMuXG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShwYXRoLmpvaW4oY29udGV4dC53b3Jrc3BhY2VSb290LCB0c0NvbmZpZ1BhdGgpLCAndXRmLTgnKTtcbiAgY29uc3QgeyBwYXJzZSB9ID0gYXdhaXQgaW1wb3J0KCdqc29uYy1wYXJzZXInKTtcbiAgY29uc3QgdHNDb25maWcgPSBwYXJzZShjb250ZW50LCBbXSwgeyBhbGxvd1RyYWlsaW5nQ29tbWE6IHRydWUgfSk7XG4gIGlmICh0c0NvbmZpZy5hbmd1bGFyQ29tcGlsZXJPcHRpb25zPy5wcmVzZXJ2ZVdoaXRlc3BhY2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250ZXh0LmxvZ2dlci53YXJuKFxuICAgICAgYFwicHJlc2VydmVXaGl0ZXNwYWNlc1wiIHdhcyBzZXQgaW4gXCIke3RzQ29uZmlnUGF0aH1cIi4gYCArXG4gICAgICAgICdNYWtlIHN1cmUgdGhhdCB0aGlzIHNldHRpbmcgaXMgc2V0IGNvbnNpc3RlbnRseSBpbiBib3RoIFwidHNjb25maWcuc2VydmVyLmpzb25cIiBmb3IgeW91ciBzZXJ2ZXIgc2lkZSAnICtcbiAgICAgICAgJ2FuZCBcInRzY29uZmlnLmFwcC5qc29uXCIgZm9yIHlvdXIgY2xpZW50IHNpZGUuIEEgbWlzbWF0Y2hlZCB2YWx1ZSB3aWxsIGNhdXNlIGh5ZHJhdGlvbiB0byBicmVhay5cXG4nICtcbiAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2h5ZHJhdGlvbiNwcmVzZXJ2ZS13aGl0ZXNwYWNlcycsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEFkZCBgQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyYCBleHBvcnRzLlxuICogVGhpcyBpcyBuZWVkZWQgc28gdGhhdCBESSB0b2tlbnMgY2FuIGJlIHJlZmVyZW5jZWQgYW5kIHNldCBhdCBydW50aW1lIG91dHNpZGUgb2YgdGhlIGJ1bmRsZS5cbiAqL1xuZnVuY3Rpb24gZ2V0UGxhdGZvcm1TZXJ2ZXJFeHBvcnRzQ29uZmlnKHdjbzogQnJvd3NlcldlYnBhY2tDb25maWdPcHRpb25zKTogUGFydGlhbDxDb25maWd1cmF0aW9uPiB7XG4gIC8vIEFkZCBgQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyYCBleHBvcnRzLlxuICAvLyBUaGlzIGlzIG5lZWRlZCBzbyB0aGF0IERJIHRva2VucyBjYW4gYmUgcmVmZXJlbmNlZCBhbmQgc2V0IGF0IHJ1bnRpbWUgb3V0c2lkZSBvZiB0aGUgYnVuZGxlLlxuXG4gIC8vIE9ubHkgYWRkIGBAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXJgIGV4cG9ydHMgd2hlbiBpdCBpcyBpbnN0YWxsZWQuXG4gIC8vIEluIHNvbWUgY2FzZXMgdGhpcyBidWlsZGVyIGlzIHVzZWQgd2hlbiBgQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyYCBpcyBub3QgaW5zdGFsbGVkLlxuICAvLyBFeGFtcGxlOiB3aGVuIHVzaW5nIGBAbmd1bml2ZXJzYWwvY29tbW9uL2Nsb3ZlcmAgd2hpY2ggZG9lcyBub3QgbmVlZCBgQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyYC5cblxuICByZXR1cm4gaXNQbGF0Zm9ybVNlcnZlckluc3RhbGxlZCh3Y28ucm9vdClcbiAgICA/IHtcbiAgICAgICAgbW9kdWxlOiB7XG4gICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoJy4vcGxhdGZvcm0tc2VydmVyLWV4cG9ydHMtbG9hZGVyJyksXG4gICAgICAgICAgICAgIGluY2x1ZGU6IFtwYXRoLnJlc29sdmUod2NvLnJvb3QsIHdjby5idWlsZE9wdGlvbnMubWFpbildLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIDoge307XG59XG4iXX0=
@@ -3,6 +3,10 @@ export interface Schema {
3
3
  * List of static application assets.
4
4
  */
5
5
  assets?: AssetPattern[];
6
+ /**
7
+ * Enables advanced build optimizations.
8
+ */
9
+ buildOptimizer?: boolean;
6
10
  /**
7
11
  * Delete the output path before building.
8
12
  */
@@ -34,4 +34,4 @@ var OutputHashing;
34
34
  OutputHashing["Media"] = "media";
35
35
  OutputHashing["None"] = "none";
36
36
  })(OutputHashing = exports.OutputHashing || (exports.OutputHashing = {}));
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvYnVpbGRlcnMvc2VydmVyL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsbUZBQW1GO0FBQ25GLG9GQUFvRjs7O0FBd0pwRjs7OztHQUlHO0FBQ0gsSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLGtDQUFlLENBQUE7SUFDZixvQ0FBaUIsQ0FBQTtJQUNqQixzQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFJMUI7QUFFRDs7R0FFRztBQUNILElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUMzQixrQ0FBVyxDQUFBO0lBQ1gsb0NBQWEsQ0FBQTtJQUNiLG9DQUFhLENBQUE7SUFDYixvQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQUs5QjtBQXlCRDs7R0FFRztBQUNILElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUNyQiw0QkFBVyxDQUFBO0lBQ1gsb0NBQW1CLENBQUE7SUFDbkIsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUxXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBS3hCIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIFRPIFVQREFURSBUSElTIEZJTEUgWU9VIE5FRUQgVE8gQ0hBTkdFIFRIRVxuLy8gQ09SUkVTUE9ORElORyBKU09OIFNDSEVNQSBGSUxFLCBUSEVOIFJVTiBkZXZraXQtYWRtaW4gYnVpbGQgKG9yIGJhemVsIGJ1aWxkIC4uLikuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hIHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHN0YXRpYyBhcHBsaWNhdGlvbiBhc3NldHMuXG4gICAgICovXG4gICAgYXNzZXRzPzogQXNzZXRQYXR0ZXJuW107XG4gICAgLyoqXG4gICAgICogRGVsZXRlIHRoZSBvdXRwdXQgcGF0aCBiZWZvcmUgYnVpbGRpbmcuXG4gICAgICovXG4gICAgZGVsZXRlT3V0cHV0UGF0aD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVVJMIHdoZXJlIGZpbGVzIHdpbGwgYmUgZGVwbG95ZWQuXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIFwiYmFzZUhyZWZcIiBicm93c2VyIGJ1aWxkZXIgb3B0aW9uLCBcIkFQUF9CQVNFX0hSRUZcIiBESSB0b2tlbiBvciBhXG4gICAgICogY29tYmluYXRpb24gb2YgYm90aCBpbnN0ZWFkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4gICAgICogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2RlcGxveW1lbnQjdGhlLWRlcGxveS11cmwuXG4gICAgICovXG4gICAgZGVwbG95VXJsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEV4Y2x1ZGUgdGhlIGxpc3RlZCBleHRlcm5hbCBkZXBlbmRlbmNpZXMgZnJvbSBiZWluZyBidW5kbGVkIGludG8gdGhlIGJ1bmRsZS4gSW5zdGVhZCwgdGhlXG4gICAgICogY3JlYXRlZCBidW5kbGUgcmVsaWVzIG9uIHRoZXNlIGRlcGVuZGVuY2llcyB0byBiZSBhdmFpbGFibGUgZHVyaW5nIHJ1bnRpbWUuXG4gICAgICovXG4gICAgZXh0ZXJuYWxEZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBFeHRyYWN0IGFsbCBsaWNlbnNlcyBpbiBhIHNlcGFyYXRlIGZpbGUsIGluIHRoZSBjYXNlIG9mIHByb2R1Y3Rpb24gYnVpbGRzIG9ubHkuXG4gICAgICovXG4gICAgZXh0cmFjdExpY2Vuc2VzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBSZXBsYWNlIGNvbXBpbGF0aW9uIHNvdXJjZSBmaWxlcyB3aXRoIG90aGVyIGNvbXBpbGF0aW9uIHNvdXJjZSBmaWxlcyBpbiB0aGUgYnVpbGQuXG4gICAgICovXG4gICAgZmlsZVJlcGxhY2VtZW50cz86IEZpbGVSZXBsYWNlbWVudFtdO1xuICAgIC8qKlxuICAgICAqIEhvdyB0byBoYW5kbGUgZHVwbGljYXRlIHRyYW5zbGF0aW9ucyBmb3IgaTE4bi5cbiAgICAgKi9cbiAgICBpMThuRHVwbGljYXRlVHJhbnNsYXRpb24/OiBJMThOVHJhbnNsYXRpb247XG4gICAgLyoqXG4gICAgICogSG93IHRvIGhhbmRsZSBtaXNzaW5nIHRyYW5zbGF0aW9ucyBmb3IgaTE4bi5cbiAgICAgKi9cbiAgICBpMThuTWlzc2luZ1RyYW5zbGF0aW9uPzogSTE4TlRyYW5zbGF0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoZSBzdHlsZXNoZWV0IGxhbmd1YWdlIHRvIHVzZSBmb3IgdGhlIGFwcGxpY2F0aW9uJ3MgaW5saW5lIGNvbXBvbmVudCBzdHlsZXMuXG4gICAgICovXG4gICAgaW5saW5lU3R5bGVMYW5ndWFnZT86IElubGluZVN0eWxlTGFuZ3VhZ2U7XG4gICAgLyoqXG4gICAgICogVHJhbnNsYXRlIHRoZSBidW5kbGVzIGluIG9uZSBvciBtb3JlIGxvY2FsZXMuXG4gICAgICovXG4gICAgbG9jYWxpemU/OiBMb2NhbGl6ZTtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFpbiBlbnRyeS1wb2ludCBmaWxlLlxuICAgICAqL1xuICAgIG1haW46IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBVc2UgZmlsZSBuYW1lIGZvciBsYXp5IGxvYWRlZCBjaHVua3MuXG4gICAgICovXG4gICAgbmFtZWRDaHVua3M/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgb3B0aW1pemF0aW9uIG9mIHRoZSBidWlsZCBvdXRwdXQuIEluY2x1ZGluZyBtaW5pZmljYXRpb24gb2Ygc2NyaXB0cyBhbmQgc3R5bGVzLFxuICAgICAqIHRyZWUtc2hha2luZyBhbmQgZGVhZC1jb2RlIGVsaW1pbmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4gICAgICogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3dvcmtzcGFjZS1jb25maWcjb3B0aW1pemF0aW9uLWNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgb3B0aW1pemF0aW9uPzogT3B0aW1pemF0aW9uVW5pb247XG4gICAgLyoqXG4gICAgICogRGVmaW5lIHRoZSBvdXRwdXQgZmlsZW5hbWUgY2FjaGUtYnVzdGluZyBoYXNoaW5nIG1vZGUuXG4gICAgICovXG4gICAgb3V0cHV0SGFzaGluZz86IE91dHB1dEhhc2hpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB3aGVyZSBvdXRwdXQgd2lsbCBiZSBwbGFjZWQuXG4gICAgICovXG4gICAgb3V0cHV0UGF0aDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEVuYWJsZSBhbmQgZGVmaW5lIHRoZSBmaWxlIHdhdGNoaW5nIHBvbGwgdGltZSBwZXJpb2QgaW4gbWlsbGlzZWNvbmRzLlxuICAgICAqL1xuICAgIHBvbGw/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogRG8gbm90IHVzZSB0aGUgcmVhbCBwYXRoIHdoZW4gcmVzb2x2aW5nIG1vZHVsZXMuIElmIHVuc2V0IHRoZW4gd2lsbCBkZWZhdWx0IHRvIGB0cnVlYCBpZlxuICAgICAqIE5vZGVKUyBvcHRpb24gLS1wcmVzZXJ2ZS1zeW1saW5rcyBpcyBzZXQuXG4gICAgICovXG4gICAgcHJlc2VydmVTeW1saW5rcz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogTG9nIHByb2dyZXNzIHRvIHRoZSBjb25zb2xlIHdoaWxlIGJ1aWxkaW5nLlxuICAgICAqL1xuICAgIHByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgcGF0aCB3aGVyZSBzdHlsZSByZXNvdXJjZXMgd2lsbCBiZSBwbGFjZWQsIHJlbGF0aXZlIHRvIG91dHB1dFBhdGguXG4gICAgICovXG4gICAgcmVzb3VyY2VzT3V0cHV0UGF0aD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBPdXRwdXQgc291cmNlIG1hcHMgZm9yIHNjcmlwdHMgYW5kIHN0eWxlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZVxuICAgICAqIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS93b3Jrc3BhY2UtY29uZmlnI3NvdXJjZS1tYXAtY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBzb3VyY2VNYXA/OiBTb3VyY2VNYXBVbmlvbjtcbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSAnc3RhdHMuanNvbicgZmlsZSB3aGljaCBjYW4gYmUgYW5hbHl6ZWQgdXNpbmcgdG9vbHMgc3VjaCBhc1xuICAgICAqICd3ZWJwYWNrLWJ1bmRsZS1hbmFseXplcicuXG4gICAgICovXG4gICAgc3RhdHNKc29uPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25zIHRvIHBhc3MgdG8gc3R5bGUgcHJlcHJvY2Vzc29yc1xuICAgICAqL1xuICAgIHN0eWxlUHJlcHJvY2Vzc29yT3B0aW9ucz86IFN0eWxlUHJlcHJvY2Vzc29yT3B0aW9ucztcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAgICovXG4gICAgdHNDb25maWc6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZSBhIHNlcGVyYXRlIGJ1bmRsZSBjb250YWluaW5nIG9ubHkgdmVuZG9yIGxpYnJhcmllcy4gVGhpcyBvcHRpb24gc2hvdWxkIG9ubHkgYmVcbiAgICAgKiB1c2VkIGZvciBkZXZlbG9wbWVudCB0byByZWR1Y2UgdGhlIGluY3JlbWVudGFsIGNvbXBpbGF0aW9uIHRpbWUuXG4gICAgICovXG4gICAgdmVuZG9yQ2h1bms/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEFkZHMgbW9yZSBkZXRhaWxzIHRvIG91dHB1dCBsb2dnaW5nLlxuICAgICAqL1xuICAgIHZlcmJvc2U/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFJ1biBidWlsZCB3aGVuIGZpbGVzIGNoYW5nZS5cbiAgICAgKi9cbiAgICB3YXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEFzc2V0UGF0dGVybiA9IEFzc2V0UGF0dGVybkNsYXNzIHwgc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UGF0dGVybkNsYXNzIHtcbiAgICAvKipcbiAgICAgKiBBbGxvdyBnbG9iIHBhdHRlcm5zIHRvIGZvbGxvdyBzeW1saW5rIGRpcmVjdG9yaWVzLiBUaGlzIGFsbG93cyBzdWJkaXJlY3RvcmllcyBvZiB0aGVcbiAgICAgKiBzeW1saW5rIHRvIGJlIHNlYXJjaGVkLlxuICAgICAqL1xuICAgIGZvbGxvd1N5bWxpbmtzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgcGF0dGVybiB0byBtYXRjaC5cbiAgICAgKi9cbiAgICBnbG9iOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgZ2xvYnMgdG8gaWdub3JlLlxuICAgICAqL1xuICAgIGlnbm9yZT86IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFRoZSBpbnB1dCBkaXJlY3RvcnkgcGF0aCBpbiB3aGljaCB0byBhcHBseSAnZ2xvYicuIERlZmF1bHRzIHRvIHRoZSBwcm9qZWN0IHJvb3QuXG4gICAgICovXG4gICAgaW5wdXQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBYnNvbHV0ZSBwYXRoIHdpdGhpbiB0aGUgb3V0cHV0LlxuICAgICAqL1xuICAgIG91dHB1dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVSZXBsYWNlbWVudCB7XG4gICAgcmVwbGFjZT86ICAgICBzdHJpbmc7XG4gICAgcmVwbGFjZVdpdGg/OiBzdHJpbmc7XG4gICAgc3JjPzogICAgICAgICBzdHJpbmc7XG4gICAgd2l0aD86ICAgICAgICBzdHJpbmc7XG59XG5cbi8qKlxuICogSG93IHRvIGhhbmRsZSBkdXBsaWNhdGUgdHJhbnNsYXRpb25zIGZvciBpMThuLlxuICpcbiAqIEhvdyB0byBoYW5kbGUgbWlzc2luZyB0cmFuc2xhdGlvbnMgZm9yIGkxOG4uXG4gKi9cbmV4cG9ydCBlbnVtIEkxOE5UcmFuc2xhdGlvbiB7XG4gICAgRXJyb3IgPSBcImVycm9yXCIsXG4gICAgSWdub3JlID0gXCJpZ25vcmVcIixcbiAgICBXYXJuaW5nID0gXCJ3YXJuaW5nXCIsXG59XG5cbi8qKlxuICogVGhlIHN0eWxlc2hlZXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciB0aGUgYXBwbGljYXRpb24ncyBpbmxpbmUgY29tcG9uZW50IHN0eWxlcy5cbiAqL1xuZXhwb3J0IGVudW0gSW5saW5lU3R5bGVMYW5ndWFnZSB7XG4gICAgQ3NzID0gXCJjc3NcIixcbiAgICBMZXNzID0gXCJsZXNzXCIsXG4gICAgU2FzcyA9IFwic2Fzc1wiLFxuICAgIFNjc3MgPSBcInNjc3NcIixcbn1cblxuLyoqXG4gKiBUcmFuc2xhdGUgdGhlIGJ1bmRsZXMgaW4gb25lIG9yIG1vcmUgbG9jYWxlcy5cbiAqL1xuZXhwb3J0IHR5cGUgTG9jYWxpemUgPSBzdHJpbmdbXSB8IGJvb2xlYW47XG5cbi8qKlxuICogRW5hYmxlcyBvcHRpbWl6YXRpb24gb2YgdGhlIGJ1aWxkIG91dHB1dC4gSW5jbHVkaW5nIG1pbmlmaWNhdGlvbiBvZiBzY3JpcHRzIGFuZCBzdHlsZXMsXG4gKiB0cmVlLXNoYWtpbmcgYW5kIGRlYWQtY29kZSBlbGltaW5hdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZVxuICogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3dvcmtzcGFjZS1jb25maWcjb3B0aW1pemF0aW9uLWNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIE9wdGltaXphdGlvblVuaW9uID0gYm9vbGVhbiB8IE9wdGltaXphdGlvbkNsYXNzO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXphdGlvbkNsYXNzIHtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzIG9wdGltaXphdGlvbiBvZiB0aGUgc2NyaXB0cyBvdXRwdXQuXG4gICAgICovXG4gICAgc2NyaXB0cz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBvcHRpbWl6YXRpb24gb2YgdGhlIHN0eWxlcyBvdXRwdXQuXG4gICAgICovXG4gICAgc3R5bGVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEZWZpbmUgdGhlIG91dHB1dCBmaWxlbmFtZSBjYWNoZS1idXN0aW5nIGhhc2hpbmcgbW9kZS5cbiAqL1xuZXhwb3J0IGVudW0gT3V0cHV0SGFzaGluZyB7XG4gICAgQWxsID0gXCJhbGxcIixcbiAgICBCdW5kbGVzID0gXCJidW5kbGVzXCIsXG4gICAgTWVkaWEgPSBcIm1lZGlhXCIsXG4gICAgTm9uZSA9IFwibm9uZVwiLFxufVxuXG4vKipcbiAqIE91dHB1dCBzb3VyY2UgbWFwcyBmb3Igc2NyaXB0cyBhbmQgc3R5bGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4gKiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvd29ya3NwYWNlLWNvbmZpZyNzb3VyY2UtbWFwLWNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFNvdXJjZU1hcFVuaW9uID0gYm9vbGVhbiB8IFNvdXJjZU1hcENsYXNzO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZU1hcENsYXNzIHtcbiAgICAvKipcbiAgICAgKiBPdXRwdXQgc291cmNlIG1hcHMgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nIHRvb2xzLlxuICAgICAqL1xuICAgIGhpZGRlbj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogT3V0cHV0IHNvdXJjZSBtYXBzIGZvciBhbGwgc2NyaXB0cy5cbiAgICAgKi9cbiAgICBzY3JpcHRzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPdXRwdXQgc291cmNlIG1hcHMgZm9yIGFsbCBzdHlsZXMuXG4gICAgICovXG4gICAgc3R5bGVzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBSZXNvbHZlIHZlbmRvciBwYWNrYWdlcyBzb3VyY2UgbWFwcy5cbiAgICAgKi9cbiAgICB2ZW5kb3I/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gcGFzcyB0byBzdHlsZSBwcmVwcm9jZXNzb3JzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3R5bGVQcmVwcm9jZXNzb3JPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBQYXRocyB0byBpbmNsdWRlLiBQYXRocyB3aWxsIGJlIHJlc29sdmVkIHRvIHdvcmtzcGFjZSByb290LlxuICAgICAqL1xuICAgIGluY2x1ZGVQYXRocz86IHN0cmluZ1tdO1xufVxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvYnVpbGRlcnMvc2VydmVyL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsbUZBQW1GO0FBQ25GLG9GQUFvRjs7O0FBNEpwRjs7OztHQUlHO0FBQ0gsSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLGtDQUFlLENBQUE7SUFDZixvQ0FBaUIsQ0FBQTtJQUNqQixzQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFJMUI7QUFFRDs7R0FFRztBQUNILElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUMzQixrQ0FBVyxDQUFBO0lBQ1gsb0NBQWEsQ0FBQTtJQUNiLG9DQUFhLENBQUE7SUFDYixvQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQUs5QjtBQXlCRDs7R0FFRztBQUNILElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUNyQiw0QkFBVyxDQUFBO0lBQ1gsb0NBQW1CLENBQUE7SUFDbkIsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUxXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBS3hCIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIFRPIFVQREFURSBUSElTIEZJTEUgWU9VIE5FRUQgVE8gQ0hBTkdFIFRIRVxuLy8gQ09SUkVTUE9ORElORyBKU09OIFNDSEVNQSBGSUxFLCBUSEVOIFJVTiBkZXZraXQtYWRtaW4gYnVpbGQgKG9yIGJhemVsIGJ1aWxkIC4uLikuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hIHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHN0YXRpYyBhcHBsaWNhdGlvbiBhc3NldHMuXG4gICAgICovXG4gICAgYXNzZXRzPzogQXNzZXRQYXR0ZXJuW107XG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBhZHZhbmNlZCBidWlsZCBvcHRpbWl6YXRpb25zLlxuICAgICAqL1xuICAgIGJ1aWxkT3B0aW1pemVyPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgdGhlIG91dHB1dCBwYXRoIGJlZm9yZSBidWlsZGluZy5cbiAgICAgKi9cbiAgICBkZWxldGVPdXRwdXRQYXRoPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBVUkwgd2hlcmUgZmlsZXMgd2lsbCBiZSBkZXBsb3llZC5cbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgXCJiYXNlSHJlZlwiIGJyb3dzZXIgYnVpbGRlciBvcHRpb24sIFwiQVBQX0JBU0VfSFJFRlwiIERJIHRva2VuIG9yIGFcbiAgICAgKiBjb21iaW5hdGlvbiBvZiBib3RoIGluc3RlYWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICAgKiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvZGVwbG95bWVudCN0aGUtZGVwbG95LXVybC5cbiAgICAgKi9cbiAgICBkZXBsb3lVcmw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRXhjbHVkZSB0aGUgbGlzdGVkIGV4dGVybmFsIGRlcGVuZGVuY2llcyBmcm9tIGJlaW5nIGJ1bmRsZWQgaW50byB0aGUgYnVuZGxlLiBJbnN0ZWFkLCB0aGVcbiAgICAgKiBjcmVhdGVkIGJ1bmRsZSByZWxpZXMgb24gdGhlc2UgZGVwZW5kZW5jaWVzIHRvIGJlIGF2YWlsYWJsZSBkdXJpbmcgcnVudGltZS5cbiAgICAgKi9cbiAgICBleHRlcm5hbERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIEV4dHJhY3QgYWxsIGxpY2Vuc2VzIGluIGEgc2VwYXJhdGUgZmlsZSwgaW4gdGhlIGNhc2Ugb2YgcHJvZHVjdGlvbiBidWlsZHMgb25seS5cbiAgICAgKi9cbiAgICBleHRyYWN0TGljZW5zZXM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFJlcGxhY2UgY29tcGlsYXRpb24gc291cmNlIGZpbGVzIHdpdGggb3RoZXIgY29tcGlsYXRpb24gc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC5cbiAgICAgKi9cbiAgICBmaWxlUmVwbGFjZW1lbnRzPzogRmlsZVJlcGxhY2VtZW50W107XG4gICAgLyoqXG4gICAgICogSG93IHRvIGhhbmRsZSBkdXBsaWNhdGUgdHJhbnNsYXRpb25zIGZvciBpMThuLlxuICAgICAqL1xuICAgIGkxOG5EdXBsaWNhdGVUcmFuc2xhdGlvbj86IEkxOE5UcmFuc2xhdGlvbjtcbiAgICAvKipcbiAgICAgKiBIb3cgdG8gaGFuZGxlIG1pc3NpbmcgdHJhbnNsYXRpb25zIGZvciBpMThuLlxuICAgICAqL1xuICAgIGkxOG5NaXNzaW5nVHJhbnNsYXRpb24/OiBJMThOVHJhbnNsYXRpb247XG4gICAgLyoqXG4gICAgICogVGhlIHN0eWxlc2hlZXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciB0aGUgYXBwbGljYXRpb24ncyBpbmxpbmUgY29tcG9uZW50IHN0eWxlcy5cbiAgICAgKi9cbiAgICBpbmxpbmVTdHlsZUxhbmd1YWdlPzogSW5saW5lU3R5bGVMYW5ndWFnZTtcbiAgICAvKipcbiAgICAgKiBUcmFuc2xhdGUgdGhlIGJ1bmRsZXMgaW4gb25lIG9yIG1vcmUgbG9jYWxlcy5cbiAgICAgKi9cbiAgICBsb2NhbGl6ZT86IExvY2FsaXplO1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBtYWluIGVudHJ5LXBvaW50IGZpbGUuXG4gICAgICovXG4gICAgbWFpbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFVzZSBmaWxlIG5hbWUgZm9yIGxhenkgbG9hZGVkIGNodW5rcy5cbiAgICAgKi9cbiAgICBuYW1lZENodW5rcz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBvcHRpbWl6YXRpb24gb2YgdGhlIGJ1aWxkIG91dHB1dC4gSW5jbHVkaW5nIG1pbmlmaWNhdGlvbiBvZiBzY3JpcHRzIGFuZCBzdHlsZXMsXG4gICAgICogdHJlZS1zaGFraW5nIGFuZCBkZWFkLWNvZGUgZWxpbWluYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICAgKiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvd29ya3NwYWNlLWNvbmZpZyNvcHRpbWl6YXRpb24tY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBvcHRpbWl6YXRpb24/OiBPcHRpbWl6YXRpb25VbmlvbjtcbiAgICAvKipcbiAgICAgKiBEZWZpbmUgdGhlIG91dHB1dCBmaWxlbmFtZSBjYWNoZS1idXN0aW5nIGhhc2hpbmcgbW9kZS5cbiAgICAgKi9cbiAgICBvdXRwdXRIYXNoaW5nPzogT3V0cHV0SGFzaGluZztcbiAgICAvKipcbiAgICAgKiBQYXRoIHdoZXJlIG91dHB1dCB3aWxsIGJlIHBsYWNlZC5cbiAgICAgKi9cbiAgICBvdXRwdXRQYXRoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRW5hYmxlIGFuZCBkZWZpbmUgdGhlIGZpbGUgd2F0Y2hpbmcgcG9sbCB0aW1lIHBlcmlvZCBpbiBtaWxsaXNlY29uZHMuXG4gICAgICovXG4gICAgcG9sbD86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBEbyBub3QgdXNlIHRoZSByZWFsIHBhdGggd2hlbiByZXNvbHZpbmcgbW9kdWxlcy4gSWYgdW5zZXQgdGhlbiB3aWxsIGRlZmF1bHQgdG8gYHRydWVgIGlmXG4gICAgICogTm9kZUpTIG9wdGlvbiAtLXByZXNlcnZlLXN5bWxpbmtzIGlzIHNldC5cbiAgICAgKi9cbiAgICBwcmVzZXJ2ZVN5bWxpbmtzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBMb2cgcHJvZ3Jlc3MgdG8gdGhlIGNvbnNvbGUgd2hpbGUgYnVpbGRpbmcuXG4gICAgICovXG4gICAgcHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXRoIHdoZXJlIHN0eWxlIHJlc291cmNlcyB3aWxsIGJlIHBsYWNlZCwgcmVsYXRpdmUgdG8gb3V0cHV0UGF0aC5cbiAgICAgKi9cbiAgICByZXNvdXJjZXNPdXRwdXRQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIE91dHB1dCBzb3VyY2UgbWFwcyBmb3Igc2NyaXB0cyBhbmQgc3R5bGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4gICAgICogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3dvcmtzcGFjZS1jb25maWcjc291cmNlLW1hcC1jb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHNvdXJjZU1hcD86IFNvdXJjZU1hcFVuaW9uO1xuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhICdzdGF0cy5qc29uJyBmaWxlIHdoaWNoIGNhbiBiZSBhbmFseXplZCB1c2luZyB0b29scyBzdWNoIGFzXG4gICAgICogJ3dlYnBhY2stYnVuZGxlLWFuYWx5emVyJy5cbiAgICAgKi9cbiAgICBzdGF0c0pzb24/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbnMgdG8gcGFzcyB0byBzdHlsZSBwcmVwcm9jZXNzb3JzXG4gICAgICovXG4gICAgc3R5bGVQcmVwcm9jZXNzb3JPcHRpb25zPzogU3R5bGVQcmVwcm9jZXNzb3JPcHRpb25zO1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICAgKi9cbiAgICB0c0NvbmZpZzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlIGEgc2VwZXJhdGUgYnVuZGxlIGNvbnRhaW5pbmcgb25seSB2ZW5kb3IgbGlicmFyaWVzLiBUaGlzIG9wdGlvbiBzaG91bGQgb25seSBiZVxuICAgICAqIHVzZWQgZm9yIGRldmVsb3BtZW50IHRvIHJlZHVjZSB0aGUgaW5jcmVtZW50YWwgY29tcGlsYXRpb24gdGltZS5cbiAgICAgKi9cbiAgICB2ZW5kb3JDaHVuaz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQWRkcyBtb3JlIGRldGFpbHMgdG8gb3V0cHV0IGxvZ2dpbmcuXG4gICAgICovXG4gICAgdmVyYm9zZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUnVuIGJ1aWxkIHdoZW4gZmlsZXMgY2hhbmdlLlxuICAgICAqL1xuICAgIHdhdGNoPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQXNzZXRQYXR0ZXJuID0gQXNzZXRQYXR0ZXJuQ2xhc3MgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRQYXR0ZXJuQ2xhc3Mge1xuICAgIC8qKlxuICAgICAqIEFsbG93IGdsb2IgcGF0dGVybnMgdG8gZm9sbG93IHN5bWxpbmsgZGlyZWN0b3JpZXMuIFRoaXMgYWxsb3dzIHN1YmRpcmVjdG9yaWVzIG9mIHRoZVxuICAgICAqIHN5bWxpbmsgdG8gYmUgc2VhcmNoZWQuXG4gICAgICovXG4gICAgZm9sbG93U3ltbGlua3M/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXR0ZXJuIHRvIG1hdGNoLlxuICAgICAqL1xuICAgIGdsb2I6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBnbG9icyB0byBpZ25vcmUuXG4gICAgICovXG4gICAgaWdub3JlPzogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogVGhlIGlucHV0IGRpcmVjdG9yeSBwYXRoIGluIHdoaWNoIHRvIGFwcGx5ICdnbG9iJy4gRGVmYXVsdHMgdG8gdGhlIHByb2plY3Qgcm9vdC5cbiAgICAgKi9cbiAgICBpbnB1dDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFic29sdXRlIHBhdGggd2l0aGluIHRoZSBvdXRwdXQuXG4gICAgICovXG4gICAgb3V0cHV0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVJlcGxhY2VtZW50IHtcbiAgICByZXBsYWNlPzogICAgIHN0cmluZztcbiAgICByZXBsYWNlV2l0aD86IHN0cmluZztcbiAgICBzcmM/OiAgICAgICAgIHN0cmluZztcbiAgICB3aXRoPzogICAgICAgIHN0cmluZztcbn1cblxuLyoqXG4gKiBIb3cgdG8gaGFuZGxlIGR1cGxpY2F0ZSB0cmFuc2xhdGlvbnMgZm9yIGkxOG4uXG4gKlxuICogSG93IHRvIGhhbmRsZSBtaXNzaW5nIHRyYW5zbGF0aW9ucyBmb3IgaTE4bi5cbiAqL1xuZXhwb3J0IGVudW0gSTE4TlRyYW5zbGF0aW9uIHtcbiAgICBFcnJvciA9IFwiZXJyb3JcIixcbiAgICBJZ25vcmUgPSBcImlnbm9yZVwiLFxuICAgIFdhcm5pbmcgPSBcIndhcm5pbmdcIixcbn1cblxuLyoqXG4gKiBUaGUgc3R5bGVzaGVldCBsYW5ndWFnZSB0byB1c2UgZm9yIHRoZSBhcHBsaWNhdGlvbidzIGlubGluZSBjb21wb25lbnQgc3R5bGVzLlxuICovXG5leHBvcnQgZW51bSBJbmxpbmVTdHlsZUxhbmd1YWdlIHtcbiAgICBDc3MgPSBcImNzc1wiLFxuICAgIExlc3MgPSBcImxlc3NcIixcbiAgICBTYXNzID0gXCJzYXNzXCIsXG4gICAgU2NzcyA9IFwic2Nzc1wiLFxufVxuXG4vKipcbiAqIFRyYW5zbGF0ZSB0aGUgYnVuZGxlcyBpbiBvbmUgb3IgbW9yZSBsb2NhbGVzLlxuICovXG5leHBvcnQgdHlwZSBMb2NhbGl6ZSA9IHN0cmluZ1tdIHwgYm9vbGVhbjtcblxuLyoqXG4gKiBFbmFibGVzIG9wdGltaXphdGlvbiBvZiB0aGUgYnVpbGQgb3V0cHV0LiBJbmNsdWRpbmcgbWluaWZpY2F0aW9uIG9mIHNjcmlwdHMgYW5kIHN0eWxlcyxcbiAqIHRyZWUtc2hha2luZyBhbmQgZGVhZC1jb2RlIGVsaW1pbmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlXG4gKiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvd29ya3NwYWNlLWNvbmZpZyNvcHRpbWl6YXRpb24tY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgT3B0aW1pemF0aW9uVW5pb24gPSBib29sZWFuIHwgT3B0aW1pemF0aW9uQ2xhc3M7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pemF0aW9uQ2xhc3Mge1xuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgb3B0aW1pemF0aW9uIG9mIHRoZSBzY3JpcHRzIG91dHB1dC5cbiAgICAgKi9cbiAgICBzY3JpcHRzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzIG9wdGltaXphdGlvbiBvZiB0aGUgc3R5bGVzIG91dHB1dC5cbiAgICAgKi9cbiAgICBzdHlsZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERlZmluZSB0aGUgb3V0cHV0IGZpbGVuYW1lIGNhY2hlLWJ1c3RpbmcgaGFzaGluZyBtb2RlLlxuICovXG5leHBvcnQgZW51bSBPdXRwdXRIYXNoaW5nIHtcbiAgICBBbGwgPSBcImFsbFwiLFxuICAgIEJ1bmRsZXMgPSBcImJ1bmRsZXNcIixcbiAgICBNZWRpYSA9IFwibWVkaWFcIixcbiAgICBOb25lID0gXCJub25lXCIsXG59XG5cbi8qKlxuICogT3V0cHV0IHNvdXJjZSBtYXBzIGZvciBzY3JpcHRzIGFuZCBzdHlsZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAqIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS93b3Jrc3BhY2UtY29uZmlnI3NvdXJjZS1tYXAtY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlTWFwVW5pb24gPSBib29sZWFuIHwgU291cmNlTWFwQ2xhc3M7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlTWFwQ2xhc3Mge1xuICAgIC8qKlxuICAgICAqIE91dHB1dCBzb3VyY2UgbWFwcyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcgdG9vbHMuXG4gICAgICovXG4gICAgaGlkZGVuPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPdXRwdXQgc291cmNlIG1hcHMgZm9yIGFsbCBzY3JpcHRzLlxuICAgICAqL1xuICAgIHNjcmlwdHM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE91dHB1dCBzb3VyY2UgbWFwcyBmb3IgYWxsIHN0eWxlcy5cbiAgICAgKi9cbiAgICBzdHlsZXM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFJlc29sdmUgdmVuZG9yIHBhY2thZ2VzIHNvdXJjZSBtYXBzLlxuICAgICAqL1xuICAgIHZlbmRvcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBwYXNzIHRvIHN0eWxlIHByZXByb2Nlc3NvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHlsZVByZXByb2Nlc3Nvck9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFBhdGhzIHRvIGluY2x1ZGUuIFBhdGhzIHdpbGwgYmUgcmVzb2x2ZWQgdG8gd29ya3NwYWNlIHJvb3QuXG4gICAgICovXG4gICAgaW5jbHVkZVBhdGhzPzogc3RyaW5nW107XG59XG4iXX0=
@@ -189,6 +189,11 @@
189
189
  "description": "Extract all licenses in a separate file, in the case of production builds only.",
190
190
  "default": true
191
191
  },
192
+ "buildOptimizer": {
193
+ "type": "boolean",
194
+ "description": "Enables advanced build optimizations.",
195
+ "default": true
196
+ },
192
197
  "namedChunks": {
193
198
  "type": "boolean",
194
199
  "description": "Use file name for lazy loaded chunks.",