@analogjs/vitest-angular 2.0.0-alpha.22 → 2.0.0-alpha.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -85,6 +85,7 @@ export default defineConfig(({ mode }) => ({
85
85
  Next, define a `src/test-setup.ts` file to setup the `TestBed`:
86
86
 
87
87
  ```ts
88
+ import '@angular/compiler';
88
89
  import '@analogjs/vitest-angular/setup-zone';
89
90
 
90
91
  import {
@@ -102,6 +103,7 @@ getTestBed().initTestEnvironment(
102
103
  If you are using `Zoneless` change detection, use the following setup:
103
104
 
104
105
  ```ts
106
+ import '@angular/compiler';
105
107
  import '@analogjs/vitest-angular/setup-snapshots';
106
108
 
107
109
  import { provideZonelessChangeDetection, NgModule } from '@angular/core';
@@ -142,14 +144,14 @@ Next, update the `test` target in the `angular.json` to use the `@analogjs/vites
142
144
  }
143
145
  ```
144
146
 
145
- Lastly, add the `src/test-setup.ts` to `files` array in the `tsconfig.spec.json` in the root of your project, set the `target` to `es2016`, and update the `types`.
147
+ Lastly, add the `src/test-setup.ts` to `files` array in the `tsconfig.spec.json` in the root of your project, set the `target` to `es2022`, and update the `types`.
146
148
 
147
149
  ```json
148
150
  {
149
151
  "extends": "./tsconfig.json",
150
152
  "compilerOptions": {
151
153
  "outDir": "./out-tsc/spec",
152
- "target": "es2016",
154
+ "target": "es2022",
153
155
  "types": ["vitest/globals", "node"]
154
156
  },
155
157
  "files": ["src/test-setup.ts"],
@@ -275,3 +277,7 @@ export default defineConfig(({ mode }) => ({
275
277
  plugins: [angular(), nxViteTsPaths()],
276
278
  }));
277
279
  ```
280
+
281
+ ## IDE Support
282
+
283
+ Tests can also be run directly from your IDE using the Vitest [IDE integrations](https://vitest.dev/guide/ide) for VS Code or JetBrains IDEs.
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@analogjs/vitest-angular",
3
- "version": "2.0.0-alpha.22",
3
+ "version": "2.0.0-alpha.24",
4
4
  "description": "Vitest Builder for Angular",
5
- "type": "commonjs",
5
+ "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
7
7
  "exports": {
8
8
  ".": "./src/index.js",
@@ -50,5 +50,6 @@
50
50
  ]
51
51
  },
52
52
  "types": "./src/index.d.ts",
53
+ "module": "./src/index.js",
53
54
  "main": "./src/index.js"
54
55
  }
@@ -116,10 +116,10 @@ async function* vitestApplicationBuilder(options, context) {
116
116
  }
117
117
  export async function getExtraArgs(options) {
118
118
  // support passing extra args to Vitest CLI
119
- const schema = await import('./schema.json');
119
+ const schema = await import('./schema.json', { with: { type: 'json' } });
120
120
  const extraArgs = {};
121
121
  for (const key of Object.keys(options)) {
122
- if (!schema.properties[key]) {
122
+ if (!schema.default.properties[key]) {
123
123
  extraArgs[key] = options[key];
124
124
  }
125
125
  }
@@ -158,4 +158,4 @@ function generateEntryPoints({ projectRoot, testFiles, context, angularVersion,
158
158
  }));
159
159
  }
160
160
  export default createBuilder(vitestApplicationBuilder);
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL2J1aWxkL3ZpdGVzdC5pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQU03QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkQsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQixpREFBTyxDQUFBO0lBQ1AsMkNBQUksQ0FBQTtJQUNKLHlEQUFXLENBQUE7SUFDWCxpRUFBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxVQUFVLEtBQVYsVUFBVSxRQUtyQjtBQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsR0FBRyxNQUFNLENBQUM7QUFFaEQsS0FBSyxTQUFTLENBQUMsQ0FBQyx3QkFBd0IsQ0FDdEMsT0FBcUIsRUFDckIsT0FBWTtJQUVaLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBRS9CLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsR0FDaEQsTUFBTSwyQkFBMkIsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFPLFFBQVEsQ0FDckMsOEJBQThCLENBQy9CLEVBQTRDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxP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QUFFLE1BQU0sQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxlQUFlLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB0eXBlIHsgVml0ZXN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICd2aXRlJztcbmltcG9ydCB0eXBlIHsgVXNlckNvbmZpZyBhcyBWaXRlc3RDb25maWcgfSBmcm9tICd2aXRlc3Qvbm9kZSc7XG5cbmltcG9ydCB7IFZpdGVzdFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB7IGNyZWF0ZUFuZ3VsYXJNZW1vcnlQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvYW5ndWxhci1tZW1vcnktcGx1Z2luJztcbmltcG9ydCB7IGVzYnVpbGREb3dubGV2ZWxQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvZXNidWlsZC1kb3dubGV2ZWwtcGx1Z2luJztcbmltcG9ydCB7IGdldEJ1aWxkQXBwbGljYXRpb25GdW5jdGlvbiB9IGZyb20gJy4vZGV2a2l0JztcblxuZXhwb3J0IGVudW0gUmVzdWx0S2luZCB7XG4gIEZhaWx1cmUsXG4gIEZ1bGwsXG4gIEluY3JlbWVudGFsLFxuICBDb21wb25lbnRVcGRhdGUsXG59XG5cbnByb2Nlc3MuZW52WydWSVRFX0NKU19JR05PUkVfV0FSTklORyddID0gJ3RydWUnO1xuXG5hc3luYyBmdW5jdGlvbiogdml0ZXN0QXBwbGljYXRpb25CdWlsZGVyKFxuICBvcHRpb25zOiBWaXRlc3RTY2hlbWEsXG4gIGNvbnRleHQ6IGFueSxcbik6IEFzeW5jSXRlcmFibGU8eyBzdWNjZXNzOiBib29sZWFuIH0+IHtcbiAgcHJvY2Vzcy5lbnZbJ1RFU1QnXSA9ICd0cnVlJztcbiAgcHJvY2Vzcy5lbnZbJ1ZJVEVTVCddID0gJ3RydWUnO1xuXG4gIGNvbnN0IHsgYnVpbGRBcHBsaWNhdGlvbkludGVybmFsLCBhbmd1bGFyVmVyc2lvbiB9ID1cbiAgICBhd2FpdCBnZXRCdWlsZEFwcGxpY2F0aW9uRnVuY3Rpb24oKTtcbiAgY29uc3QgeyBzdGFydFZpdGVzdCB9ID0gYXdhaXQgKEZ1bmN0aW9uKFxuICAgICdyZXR1cm4gaW1wb3J0KFwidml0ZXN0L25vZGVcIiknLFxuICApKCkgYXMgUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCd2aXRlc3Qvbm9kZScpPik7XG5cbiAgY29uc3QgcHJvamVjdENvbmZpZyA9IGF3YWl0IGNvbnRleHQuZ2V0UHJvamVjdE1ldGFkYXRhKGNvbnRleHQudGFyZ2V0KTtcbiAgY29uc3QgZXh0cmFBcmdzID0gYXdhaXQgZ2V0RXh0cmFBcmdzKG9wdGlvbnMpO1xuICBjb25zdCB3b3Jrc3BhY2VSb290ID0gY29udGV4dC53b3Jrc3BhY2VSb290O1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2plY3RDb25maWdbJ3Jvb3QnXTtcbiAgY29uc3Qgc2V0dXBGaWxlID0gcGF0aC5yZWxhdGl2ZShwcm9qZWN0Um9vdCwgb3B0aW9ucy5zZXR1cEZpbGUpO1xuXG4gIGNvbnN0IGNvbmZpZzogVml0ZXN0Q29uZmlnID0ge1xuICAgIHJvb3Q6IGAke3Byb2plY3RSb290IHx8ICcuJ31gLFxuICAgIHdhdGNoOiBvcHRpb25zLndhdGNoID09PSB0cnVlLFxuICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdGaWxlLFxuICAgIHNldHVwRmlsZXM6IFtzZXR1cEZpbGVdLFxuICAgIGdsb2JhbHM6IHRydWUsXG4gICAgcG9vbDogJ3ZtVGhyZWFkcycsXG4gICAgcmVwb3J0ZXJzOiBbJ2RlZmF1bHQnXSxcbiAgICBlbnZpcm9ubWVudDogJ2pzZG9tJyxcbiAgICBleGNsdWRlOiBvcHRpb25zPy5leGNsdWRlIHx8IFtdLFxuICAgIC4uLmV4dHJhQXJncyxcbiAgfTtcblxuICBjb25zdCBpbmNsdWRlczogc3RyaW5nW10gPSBmaW5kSW5jbHVkZXMoe1xuICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgcHJvamVjdFJvb3QsXG4gICAgaW5jbHVkZTogb3B0aW9ucy5pbmNsdWRlLFxuICAgIGV4Y2x1ZGU6IG9wdGlvbnMuZXhjbHVkZSB8fCBbXSxcbiAgfSk7XG5cbiAgY29uc3QgdGVzdEZpbGVzID0gW1xuICAgIHBhdGgucmVsYXRpdmUod29ya3NwYWNlUm9vdCwgb3B0aW9ucy5zZXR1cEZpbGUpLFxuICAgIC4uLmluY2x1ZGVzLm1hcCgoaW5jKSA9PiBwYXRoLnJlbGF0aXZlKHdvcmtzcGFjZVJvb3QsIGluYykpLFxuICBdO1xuXG4gIGNvbnN0IGVudHJ5UG9pbnRzID0gZ2VuZXJhdGVFbnRyeVBvaW50cyh7XG4gICAgcHJvamVjdFJvb3Q6IHByb2plY3RSb290LFxuICAgIHRlc3RGaWxlcyxcbiAgICBjb250ZXh0LFxuICAgIGFuZ3VsYXJWZXJzaW9uLFxuICB9KTtcblxuICBjb25zdCBvdXRwdXRGaWxlcyA9IG5ldyBNYXAoKTtcblxuICBjb25zdCB2aXRlQ29uZmlnOiBhbnkgPSB7XG4gICAgcGx1Z2luczogW1xuICAgICAgKGF3YWl0IGNyZWF0ZUFuZ3VsYXJNZW1vcnlQbHVnaW4oe1xuICAgICAgICBhbmd1bGFyVmVyc2lvbixcbiAgICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgICAgb3V0cHV0RmlsZXMsXG4gICAgICB9KSkgYXMgUGx1Z2luLFxuICAgICAgYXdhaXQgZXNidWlsZERvd25sZXZlbFBsdWdpbigpLFxuICAgIF0sXG4gIH07XG5cbiAgbGV0IHNlcnZlcjogVml0ZXN0IHwgdW5kZWZpbmVkO1xuICBmb3IgYXdhaXQgKGNvbnN0IGJ1aWxkT3V0cHV0IG9mIGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbChcbiAgICB7XG4gICAgICBhb3Q6IGZhbHNlLFxuICAgICAgaW5kZXg6IGZhbHNlLFxuICAgICAgcHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgcHJlcmVuZGVyOiBmYWxzZSxcbiAgICAgIG9wdGltaXphdGlvbjogZmFsc2UsXG4gICAgICBvdXRwdXRQYXRoOiBgLmFuZ3VsYXIvLnZpdGVzdC8ke3Byb2plY3RDb25maWdbJ25hbWUnXX1gLFxuICAgICAgb3V0RXh0ZW5zaW9uOiAnbWpzJyxcbiAgICAgIG91dHB1dEhhc2hpbmc6IDIsIC8vIE5vbmVcbiAgICAgIHRzQ29uZmlnOiBwYXRoLnJlbGF0aXZlKHdvcmtzcGFjZVJvb3QsIG9wdGlvbnMudHNDb25maWcpLFxuICAgICAgd2F0Y2g6IG9wdGlvbnMud2F0Y2ggPT09IHRydWUsXG4gICAgICBlbnRyeVBvaW50cyxcbiAgICAgIGFsbG93ZWRDb21tb25Kc0RlcGVuZGVuY2llczogWydAYW5hbG9nanMvdml0ZXN0LWFuZ3VsYXIvc2V0dXAtem9uZSddLFxuICAgICAgc291cmNlTWFwOiB7XG4gICAgICAgIHNjcmlwdHM6IHRydWUsXG4gICAgICAgIHN0eWxlczogZmFsc2UsXG4gICAgICAgIHZlbmRvcjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29udGV4dCxcbiAgKSkge1xuICAgIGlmIChidWlsZE91dHB1dC5raW5kID09PSBSZXN1bHRLaW5kLkZhaWx1cmUpIHtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlIH07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGJ1aWxkT3V0cHV0LmtpbmQgPT09IFJlc3VsdEtpbmQuSW5jcmVtZW50YWwgfHxcbiAgICAgIGJ1aWxkT3V0cHV0LmtpbmQgPT09IFJlc3VsdEtpbmQuRnVsbFxuICAgICkge1xuICAgICAgaWYgKGJ1aWxkT3V0cHV0LmtpbmQgPT09IFJlc3VsdEtpbmQuRnVsbCkge1xuICAgICAgICBvdXRwdXRGaWxlcy5jbGVhcigpO1xuICAgICAgICBPYmplY3Qua2V5cyhidWlsZE91dHB1dC5maWxlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgb3V0cHV0RmlsZXMuc2V0KGtleSwgYnVpbGRPdXRwdXQuZmlsZXNba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmtleXMoYnVpbGRPdXRwdXQuZmlsZXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIG91dHB1dEZpbGVzLnNldChrZXksIGJ1aWxkT3V0cHV0LmZpbGVzW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgaWYgKCFzZXJ2ZXIpIHtcbiAgICAgICAgc2VydmVyID0gYXdhaXQgc3RhcnRWaXRlc3QoJ3Rlc3QnLCBbXSwgY29uZmlnLCB2aXRlQ29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHNlcnZlci5zdGFydChbXSk7XG4gICAgICB9XG5cbiAgICAgIHlpZWxkIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFZpdGVzdCgndGVzdCcsIFtdLCBjb25maWcsIHZpdGVDb25maWcpO1xuXG4gICAgICBjb25zdCBzdWNjZXNzID0gc2VydmVyPy5zdGF0ZS5nZXRDb3VudE9mRmFpbGVkVGVzdHMoKSA9PT0gMDtcblxuICAgICAgeWllbGQgeyBzdWNjZXNzIH07XG4gICAgfVxuICB9XG5cbiAgeWllbGQgeyBzdWNjZXNzOiB0cnVlIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFeHRyYUFyZ3MoXG4gIG9wdGlvbnM6IFZpdGVzdFNjaGVtYSxcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAvLyBzdXBwb3J0IHBhc3NpbmcgZXh0cmEgYXJncyB0byBWaXRlc3QgQ0xJXG4gIGNvbnN0IHNjaGVtYSA9IGF3YWl0IGltcG9ydCgnLi9zY2hlbWEuanNvbicpO1xuICBjb25zdCBleHRyYUFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3B0aW9ucykpIHtcbiAgICBpZiAoIShzY2hlbWEgYXMgYW55KS5wcm9wZXJ0aWVzW2tleV0pIHtcbiAgICAgIGV4dHJhQXJnc1trZXldID0gKG9wdGlvbnMgYXMgYW55KVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHRyYUFyZ3M7XG59XG5cbmZ1bmN0aW9uIGZpbmRJbmNsdWRlcyhvcHRpb25zOiB7XG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZztcbiAgcHJvamVjdFJvb3Q6IHN0cmluZztcbiAgaW5jbHVkZTogc3RyaW5nW107XG4gIGV4Y2x1ZGU6IHN0cmluZ1tdO1xufSkge1xuICBjb25zdCBmZyA9IHJlcXVpcmUoJ2Zhc3QtZ2xvYicpO1xuICBjb25zdCB7IG5vcm1hbGl6ZVBhdGggfSA9IHJlcXVpcmUoJ3ZpdGUnKTtcblxuICBjb25zdCBwcm9qZWN0Um9vdCA9IG5vcm1hbGl6ZVBhdGgoXG4gICAgcGF0aC5yZXNvbHZlKG9wdGlvbnMud29ya3NwYWNlUm9vdCwgb3B0aW9ucy5wcm9qZWN0Um9vdCksXG4gICk7XG4gIGNvbnN0IGdsb2JzID0gWy4uLm9wdGlvbnMuaW5jbHVkZS5tYXAoKGdsb2IpID0+IGAke3Byb2plY3RSb290fS8ke2dsb2J9YCldO1xuXG4gIHJldHVybiBmZy5zeW5jKGdsb2JzLCB7XG4gICAgZG90OiB0cnVlLFxuICAgIGlnbm9yZTogb3B0aW9ucy5leGNsdWRlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVFbnRyeVBvaW50cyh7XG4gIHByb2plY3RSb290LFxuICB0ZXN0RmlsZXMsXG4gIGNvbnRleHQsXG4gIGFuZ3VsYXJWZXJzaW9uLFxufToge1xuICBwcm9qZWN0Um9vdDogc3RyaW5nO1xuICB0ZXN0RmlsZXM6IHN0cmluZ1tdO1xuICBjb250ZXh0OiBhbnk7XG4gIGFuZ3VsYXJWZXJzaW9uOiBudW1iZXI7XG59KSB7XG4gIGlmIChhbmd1bGFyVmVyc2lvbiA8IDE5KSB7XG4gICAgcmV0dXJuIHRlc3RGaWxlcztcbiAgfVxuXG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG5cbiAgcmV0dXJuIG5ldyBNYXAoXG4gICAgQXJyYXkuZnJvbSh0ZXN0RmlsZXMsICh0ZXN0RmlsZSkgPT4ge1xuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aFxuICAgICAgICAucmVsYXRpdmUoXG4gICAgICAgICAgdGVzdEZpbGUuc3RhcnRzV2l0aChwcm9qZWN0Um9vdClcbiAgICAgICAgICAgID8gcHJvamVjdFJvb3RcbiAgICAgICAgICAgIDogY29udGV4dC53b3Jrc3BhY2VSb290LFxuICAgICAgICAgIHRlc3RGaWxlLFxuICAgICAgICApXG4gICAgICAgIC5yZXBsYWNlKC9eWy4vXSsvLCAnXycpXG4gICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJy0nKTtcblxuICAgICAgbGV0IHVuaXF1ZU5hbWUgPSBgc3BlYy0ke3BhdGguYmFzZW5hbWUoXG4gICAgICAgIHJlbGF0aXZlUGF0aCxcbiAgICAgICAgcGF0aC5leHRuYW1lKHJlbGF0aXZlUGF0aCksXG4gICAgICApfWA7XG4gICAgICBsZXQgc3VmZml4ID0gMjtcbiAgICAgIHdoaWxlIChzZWVuLmhhcyh1bmlxdWVOYW1lKSkge1xuICAgICAgICB1bmlxdWVOYW1lID0gYCR7cmVsYXRpdmVQYXRofS0ke3N1ZmZpeH1gO1xuICAgICAgICArK3N1ZmZpeDtcbiAgICAgIH1cbiAgICAgIHNlZW4uYWRkKHVuaXF1ZU5hbWUpO1xuXG4gICAgICByZXR1cm4gW3VuaXF1ZU5hbWUsIHRlc3RGaWxlXTtcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcih2aXRlc3RBcHBsaWNhdGlvbkJ1aWxkZXIpIGFzIHVua25vd247XG4iXX0=
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL2J1aWxkL3ZpdGVzdC5pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQU03QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkQsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQixpREFBTyxDQUFBO0lBQ1AsMkNBQUksQ0FBQTtJQUNKLHlEQUFXLENBQUE7SUFDWCxpRUFBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxVQUFVLEtBQVYsVUFBVSxRQUtyQjtBQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsR0FBRyxNQUFNLENBQUM7QUFFaEQsS0FBSyxTQUFTLENBQUMsQ0FBQyx3QkFBd0IsQ0FDdEMsT0FBcUIsRUFDckIsT0FBWTtJQUVaLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBRS9CLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsR0FDaEQsTUFBTSwyQkFBMkIsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFPLFFBQVEsQ0FDckMsOEJBQThCLENBQy9CLEVBQTRDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxP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RSxDQUFDO1lBQzVCLFVBQVUsR0FBRyxHQUFHLFlBQVksSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QyxFQUFFLE1BQU0sQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxlQUFlLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB0eXBlIHsgVml0ZXN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICd2aXRlJztcbmltcG9ydCB0eXBlIHsgVXNlckNvbmZpZyBhcyBWaXRlc3RDb25maWcgfSBmcm9tICd2aXRlc3Qvbm9kZSc7XG5cbmltcG9ydCB7IFZpdGVzdFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB7IGNyZWF0ZUFuZ3VsYXJNZW1vcnlQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvYW5ndWxhci1tZW1vcnktcGx1Z2luJztcbmltcG9ydCB7IGVzYnVpbGREb3dubGV2ZWxQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvZXNidWlsZC1kb3dubGV2ZWwtcGx1Z2luJztcbmltcG9ydCB7IGdldEJ1aWxkQXBwbGljYXRpb25GdW5jdGlvbiB9IGZyb20gJy4vZGV2a2l0JztcblxuZXhwb3J0IGVudW0gUmVzdWx0S2luZCB7XG4gIEZhaWx1cmUsXG4gIEZ1bGwsXG4gIEluY3JlbWVudGFsLFxuICBDb21wb25lbnRVcGRhdGUsXG59XG5cbnByb2Nlc3MuZW52WydWSVRFX0NKU19JR05PUkVfV0FSTklORyddID0gJ3RydWUnO1xuXG5hc3luYyBmdW5jdGlvbiogdml0ZXN0QXBwbGljYXRpb25CdWlsZGVyKFxuICBvcHRpb25zOiBWaXRlc3RTY2hlbWEsXG4gIGNvbnRleHQ6IGFueSxcbik6IEFzeW5jSXRlcmFibGU8eyBzdWNjZXNzOiBib29sZWFuIH0+IHtcbiAgcHJvY2Vzcy5lbnZbJ1RFU1QnXSA9ICd0cnVlJztcbiAgcHJvY2Vzcy5lbnZbJ1ZJVEVTVCddID0gJ3RydWUnO1xuXG4gIGNvbnN0IHsgYnVpbGRBcHBsaWNhdGlvbkludGVybmFsLCBhbmd1bGFyVmVyc2lvbiB9ID1cbiAgICBhd2FpdCBnZXRCdWlsZEFwcGxpY2F0aW9uRnVuY3Rpb24oKTtcbiAgY29uc3QgeyBzdGFydFZpdGVzdCB9ID0gYXdhaXQgKEZ1bmN0aW9uKFxuICAgICdyZXR1cm4gaW1wb3J0KFwidml0ZXN0L25vZGVcIiknLFxuICApKCkgYXMgUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCd2aXRlc3Qvbm9kZScpPik7XG5cbiAgY29uc3QgcHJvamVjdENvbmZpZyA9IGF3YWl0IGNvbnRleHQuZ2V0UHJvamVjdE1ldGFkYXRhKGNvbnRleHQudGFyZ2V0KTtcbiAgY29uc3QgZXh0cmFBcmdzID0gYXdhaXQgZ2V0RXh0cmFBcmdzKG9wdGlvbnMpO1xuICBjb25zdCB3b3Jrc3BhY2VSb290ID0gY29udGV4dC53b3Jrc3BhY2VSb290O1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2plY3RDb25maWdbJ3Jvb3QnXTtcbiAgY29uc3Qgc2V0dXBGaWxlID0gcGF0aC5yZWxhdGl2ZShwcm9qZWN0Um9vdCwgb3B0aW9ucy5zZXR1cEZpbGUpO1xuXG4gIGNvbnN0IGNvbmZpZzogVml0ZXN0Q29uZmlnID0ge1xuICAgIHJvb3Q6IGAke3Byb2plY3RSb290IHx8ICcuJ31gLFxuICAgIHdhdGNoOiBvcHRpb25zLndhdGNoID09PSB0cnVlLFxuICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdGaWxlLFxuICAgIHNldHVwRmlsZXM6IFtzZXR1cEZpbGVdLFxuICAgIGdsb2JhbHM6IHRydWUsXG4gICAgcG9vbDogJ3ZtVGhyZWFkcycsXG4gICAgcmVwb3J0ZXJzOiBbJ2RlZmF1bHQnXSxcbiAgICBlbnZpcm9ubWVudDogJ2pzZG9tJyxcbiAgICBleGNsdWRlOiBvcHRpb25zPy5leGNsdWRlIHx8IFtdLFxuICAgIC4uLmV4dHJhQXJncyxcbiAgfTtcblxuICBjb25zdCBpbmNsdWRlczogc3RyaW5nW10gPSBmaW5kSW5jbHVkZXMoe1xuICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgcHJvamVjdFJvb3QsXG4gICAgaW5jbHVkZTogb3B0aW9ucy5pbmNsdWRlLFxuICAgIGV4Y2x1ZGU6IG9wdGlvbnMuZXhjbHVkZSB8fCBbXSxcbiAgfSk7XG5cbiAgY29uc3QgdGVzdEZpbGVzID0gW1xuICAgIHBhdGgucmVsYXRpdmUod29ya3NwYWNlUm9vdCwgb3B0aW9ucy5zZXR1cEZpbGUpLFxuICAgIC4uLmluY2x1ZGVzLm1hcCgoaW5jKSA9PiBwYXRoLnJlbGF0aXZlKHdvcmtzcGFjZVJvb3QsIGluYykpLFxuICBdO1xuXG4gIGNvbnN0IGVudHJ5UG9pbnRzID0gZ2VuZXJhdGVFbnRyeVBvaW50cyh7XG4gICAgcHJvamVjdFJvb3Q6IHByb2plY3RSb290LFxuICAgIHRlc3RGaWxlcyxcbiAgICBjb250ZXh0LFxuICAgIGFuZ3VsYXJWZXJzaW9uLFxuICB9KTtcblxuICBjb25zdCBvdXRwdXRGaWxlcyA9IG5ldyBNYXAoKTtcblxuICBjb25zdCB2aXRlQ29uZmlnOiBhbnkgPSB7XG4gICAgcGx1Z2luczogW1xuICAgICAgKGF3YWl0IGNyZWF0ZUFuZ3VsYXJNZW1vcnlQbHVnaW4oe1xuICAgICAgICBhbmd1bGFyVmVyc2lvbixcbiAgICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgICAgb3V0cHV0RmlsZXMsXG4gICAgICB9KSkgYXMgUGx1Z2luLFxuICAgICAgYXdhaXQgZXNidWlsZERvd25sZXZlbFBsdWdpbigpLFxuICAgIF0sXG4gIH07XG5cbiAgbGV0IHNlcnZlcjogVml0ZXN0IHwgdW5kZWZpbmVkO1xuICBmb3IgYXdhaXQgKGNvbnN0IGJ1aWxkT3V0cHV0IG9mIGJ1aWxkQXBwbGljYXRpb25JbnRlcm5hbChcbiAgICB7XG4gICAgICBhb3Q6IGZhbHNlLFxuICAgICAgaW5kZXg6IGZhbHNlLFxuICAgICAgcHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgcHJlcmVuZGVyOiBmYWxzZSxcbiAgICAgIG9wdGltaXphdGlvbjogZmFsc2UsXG4gICAgICBvdXRwdXRQYXRoOiBgLmFuZ3VsYXIvLnZpdGVzdC8ke3Byb2plY3RDb25maWdbJ25hbWUnXX1gLFxuICAgICAgb3V0RXh0ZW5zaW9uOiAnbWpzJyxcbiAgICAgIG91dHB1dEhhc2hpbmc6IDIsIC8vIE5vbmVcbiAgICAgIHRzQ29uZmlnOiBwYXRoLnJlbGF0aXZlKHdvcmtzcGFjZVJvb3QsIG9wdGlvbnMudHNDb25maWcpLFxuICAgICAgd2F0Y2g6IG9wdGlvbnMud2F0Y2ggPT09IHRydWUsXG4gICAgICBlbnRyeVBvaW50cyxcbiAgICAgIGFsbG93ZWRDb21tb25Kc0RlcGVuZGVuY2llczogWydAYW5hbG9nanMvdml0ZXN0LWFuZ3VsYXIvc2V0dXAtem9uZSddLFxuICAgICAgc291cmNlTWFwOiB7XG4gICAgICAgIHNjcmlwdHM6IHRydWUsXG4gICAgICAgIHN0eWxlczogZmFsc2UsXG4gICAgICAgIHZlbmRvcjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29udGV4dCxcbiAgKSkge1xuICAgIGlmIChidWlsZE91dHB1dC5raW5kID09PSBSZXN1bHRLaW5kLkZhaWx1cmUpIHtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlIH07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGJ1aWxkT3V0cHV0LmtpbmQgPT09IFJlc3VsdEtpbmQuSW5jcmVtZW50YWwgfHxcbiAgICAgIGJ1aWxkT3V0cHV0LmtpbmQgPT09IFJlc3VsdEtpbmQuRnVsbFxuICAgICkge1xuICAgICAgaWYgKGJ1aWxkT3V0cHV0LmtpbmQgPT09IFJlc3VsdEtpbmQuRnVsbCkge1xuICAgICAgICBvdXRwdXRGaWxlcy5jbGVhcigpO1xuICAgICAgICBPYmplY3Qua2V5cyhidWlsZE91dHB1dC5maWxlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgb3V0cHV0RmlsZXMuc2V0KGtleSwgYnVpbGRPdXRwdXQuZmlsZXNba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmtleXMoYnVpbGRPdXRwdXQuZmlsZXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIG91dHB1dEZpbGVzLnNldChrZXksIGJ1aWxkT3V0cHV0LmZpbGVzW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgaWYgKCFzZXJ2ZXIpIHtcbiAgICAgICAgc2VydmVyID0gYXdhaXQgc3RhcnRWaXRlc3QoJ3Rlc3QnLCBbXSwgY29uZmlnLCB2aXRlQ29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHNlcnZlci5zdGFydChbXSk7XG4gICAgICB9XG5cbiAgICAgIHlpZWxkIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXJ2ZXIgPSBhd2FpdCBzdGFydFZpdGVzdCgndGVzdCcsIFtdLCBjb25maWcsIHZpdGVDb25maWcpO1xuXG4gICAgICBjb25zdCBzdWNjZXNzID0gc2VydmVyPy5zdGF0ZS5nZXRDb3VudE9mRmFpbGVkVGVzdHMoKSA9PT0gMDtcblxuICAgICAgeWllbGQgeyBzdWNjZXNzIH07XG4gICAgfVxuICB9XG5cbiAgeWllbGQgeyBzdWNjZXNzOiB0cnVlIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFeHRyYUFyZ3MoXG4gIG9wdGlvbnM6IFZpdGVzdFNjaGVtYSxcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAvLyBzdXBwb3J0IHBhc3NpbmcgZXh0cmEgYXJncyB0byBWaXRlc3QgQ0xJXG4gIGNvbnN0IHNjaGVtYSA9IGF3YWl0IGltcG9ydCgnLi9zY2hlbWEuanNvbicsIHsgd2l0aDogeyB0eXBlOiAnanNvbicgfSB9KTtcbiAgY29uc3QgZXh0cmFBcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9wdGlvbnMpKSB7XG4gICAgaWYgKCEoc2NoZW1hIGFzIGFueSkuZGVmYXVsdC5wcm9wZXJ0aWVzW2tleV0pIHtcbiAgICAgIGV4dHJhQXJnc1trZXldID0gKG9wdGlvbnMgYXMgYW55KVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHRyYUFyZ3M7XG59XG5cbmZ1bmN0aW9uIGZpbmRJbmNsdWRlcyhvcHRpb25zOiB7XG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZztcbiAgcHJvamVjdFJvb3Q6IHN0cmluZztcbiAgaW5jbHVkZTogc3RyaW5nW107XG4gIGV4Y2x1ZGU6IHN0cmluZ1tdO1xufSkge1xuICBjb25zdCBmZyA9IHJlcXVpcmUoJ2Zhc3QtZ2xvYicpO1xuICBjb25zdCB7IG5vcm1hbGl6ZVBhdGggfSA9IHJlcXVpcmUoJ3ZpdGUnKTtcblxuICBjb25zdCBwcm9qZWN0Um9vdCA9IG5vcm1hbGl6ZVBhdGgoXG4gICAgcGF0aC5yZXNvbHZlKG9wdGlvbnMud29ya3NwYWNlUm9vdCwgb3B0aW9ucy5wcm9qZWN0Um9vdCksXG4gICk7XG4gIGNvbnN0IGdsb2JzID0gWy4uLm9wdGlvbnMuaW5jbHVkZS5tYXAoKGdsb2IpID0+IGAke3Byb2plY3RSb290fS8ke2dsb2J9YCldO1xuXG4gIHJldHVybiBmZy5zeW5jKGdsb2JzLCB7XG4gICAgZG90OiB0cnVlLFxuICAgIGlnbm9yZTogb3B0aW9ucy5leGNsdWRlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVFbnRyeVBvaW50cyh7XG4gIHByb2plY3RSb290LFxuICB0ZXN0RmlsZXMsXG4gIGNvbnRleHQsXG4gIGFuZ3VsYXJWZXJzaW9uLFxufToge1xuICBwcm9qZWN0Um9vdDogc3RyaW5nO1xuICB0ZXN0RmlsZXM6IHN0cmluZ1tdO1xuICBjb250ZXh0OiBhbnk7XG4gIGFuZ3VsYXJWZXJzaW9uOiBudW1iZXI7XG59KSB7XG4gIGlmIChhbmd1bGFyVmVyc2lvbiA8IDE5KSB7XG4gICAgcmV0dXJuIHRlc3RGaWxlcztcbiAgfVxuXG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG5cbiAgcmV0dXJuIG5ldyBNYXAoXG4gICAgQXJyYXkuZnJvbSh0ZXN0RmlsZXMsICh0ZXN0RmlsZSkgPT4ge1xuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aFxuICAgICAgICAucmVsYXRpdmUoXG4gICAgICAgICAgdGVzdEZpbGUuc3RhcnRzV2l0aChwcm9qZWN0Um9vdClcbiAgICAgICAgICAgID8gcHJvamVjdFJvb3RcbiAgICAgICAgICAgIDogY29udGV4dC53b3Jrc3BhY2VSb290LFxuICAgICAgICAgIHRlc3RGaWxlLFxuICAgICAgICApXG4gICAgICAgIC5yZXBsYWNlKC9eWy4vXSsvLCAnXycpXG4gICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJy0nKTtcblxuICAgICAgbGV0IHVuaXF1ZU5hbWUgPSBgc3BlYy0ke3BhdGguYmFzZW5hbWUoXG4gICAgICAgIHJlbGF0aXZlUGF0aCxcbiAgICAgICAgcGF0aC5leHRuYW1lKHJlbGF0aXZlUGF0aCksXG4gICAgICApfWA7XG4gICAgICBsZXQgc3VmZml4ID0gMjtcbiAgICAgIHdoaWxlIChzZWVuLmhhcyh1bmlxdWVOYW1lKSkge1xuICAgICAgICB1bmlxdWVOYW1lID0gYCR7cmVsYXRpdmVQYXRofS0ke3N1ZmZpeH1gO1xuICAgICAgICArK3N1ZmZpeDtcbiAgICAgIH1cbiAgICAgIHNlZW4uYWRkKHVuaXF1ZU5hbWUpO1xuXG4gICAgICByZXR1cm4gW3VuaXF1ZU5hbWUsIHRlc3RGaWxlXTtcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcih2aXRlc3RBcHBsaWNhdGlvbkJ1aWxkZXIpIGFzIHVua25vd247XG4iXX0=
@@ -48,14 +48,14 @@ async function vitestBuilder(options, context) {
48
48
  }
49
49
  export async function getExtraArgs(options) {
50
50
  // support passing extra args to Vitest CLI
51
- const schema = await import('./schema.json');
51
+ const schema = await import('./schema.json', { with: { type: 'json' } });
52
52
  const extraArgs = {};
53
53
  for (const key of Object.keys(options)) {
54
- if (!schema.properties[key]) {
54
+ if (!schema.default.properties[key]) {
55
55
  extraArgs[key] = options[key];
56
56
  }
57
57
  }
58
58
  return extraArgs;
59
59
  }
60
60
  export default createBuilder(vitestBuilder);
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL3Rlc3Qvdml0ZXN0LmltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLDJCQUEyQixDQUFDO0FBSW5DLEtBQUssVUFBVSxhQUFhLENBQzFCLE9BQXFCLEVBQ3JCLE9BQXVCO0lBRXZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBRS9CLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFPLFFBQVEsQ0FDckMsOEJBQThCLENBQy9CLEVBQTRDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQ3BELE9BQU8sQ0FBQyxNQUEyQixDQUNwQyxDQUFDO0lBQ0YsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDO0lBQy9CLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQ2xELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRTtRQUN2QyxLQUFLO1FBQ0wsRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVTtRQUMxQixRQUFRLEVBQUU7WUFDUixPQUFPLEVBQUUsZUFBZTtZQUN4QixHQUFHLFlBQVk7U0FDaEI7UUFDRCxNQUFNO1FBQ04sR0FBRyxTQUFTO0tBQ2IsQ0FBQztJQUNGLE1BQU0sYUFBYSxHQUFRO1FBQ3pCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRTtLQUNoQixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQzlCLE1BQU0sRUFDTixPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFDdkIsTUFBTSxFQUNOLGFBQWEsQ0FDZCxDQUFDO0lBRUYsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRXRCLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDZixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBWSxDQUFDO0lBRXBFLE9BQU87UUFDTCxPQUFPLEVBQUUsQ0FBQyxTQUFTO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQ2hDLE9BQXFCO0lBRXJCLDJDQUEyQztJQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBd0IsRUFBRSxDQUFDO0lBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBRSxNQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFJLE9BQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxlQUFlLGFBQWEsQ0FBQyxhQUFhLENBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1aWxkZXJDb250ZXh0LFxuICBCdWlsZGVyT3V0cHV0LFxuICBjcmVhdGVCdWlsZGVyLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcblxuaW1wb3J0IHsgVml0ZXN0U2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5hc3luYyBmdW5jdGlvbiB2aXRlc3RCdWlsZGVyKFxuICBvcHRpb25zOiBWaXRlc3RTY2hlbWEsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuKTogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PiB7XG4gIHByb2Nlc3MuZW52WydURVNUJ10gPSAndHJ1ZSc7XG4gIHByb2Nlc3MuZW52WydWSVRFU1QnXSA9ICd0cnVlJztcblxuICBjb25zdCB7IHN0YXJ0Vml0ZXN0IH0gPSBhd2FpdCAoRnVuY3Rpb24oXG4gICAgJ3JldHVybiBpbXBvcnQoXCJ2aXRlc3Qvbm9kZVwiKScsXG4gICkoKSBhcyBQcm9taXNlPHR5cGVvZiBpbXBvcnQoJ3ZpdGVzdC9ub2RlJyk+KTtcblxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEoXG4gICAgY29udGV4dC50YXJnZXQgYXMgdW5rbm93biBhcyBzdHJpbmcsXG4gICk7XG4gIGNvbnN0IHsgY292ZXJhZ2VBcmdzLCAuLi5leHRyYUFyZ3MgfSA9IGF3YWl0IGdldEV4dHJhQXJncyhvcHRpb25zKTtcbiAgY29uc3Qgd2F0Y2ggPSBvcHRpb25zLndhdGNoID09PSB0cnVlO1xuICBjb25zdCB1aSA9IG9wdGlvbnMudWkgPT09IHRydWU7XG4gIGNvbnN0IGNvdmVyYWdlRW5hYmxlZCA9IG9wdGlvbnMuY292ZXJhZ2UgPT09IHRydWU7XG4gIGNvbnN0IHVwZGF0ZSA9IG9wdGlvbnMudXBkYXRlID09PSB0cnVlO1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgcm9vdDogYCR7cHJvamVjdENvbmZpZ1sncm9vdCddIHx8ICcuJ31gLFxuICAgIHdhdGNoLFxuICAgIHVpLFxuICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdGaWxlLFxuICAgIGNvdmVyYWdlOiB7XG4gICAgICBlbmFibGVkOiBjb3ZlcmFnZUVuYWJsZWQsXG4gICAgICAuLi5jb3ZlcmFnZUFyZ3MsXG4gICAgfSxcbiAgICB1cGRhdGUsXG4gICAgLi4uZXh0cmFBcmdzLFxuICB9O1xuICBjb25zdCB2aXRlT3ZlcnJpZGVzOiBhbnkgPSB7XG4gICAgdGVzdDogeyB3YXRjaCB9LFxuICB9O1xuXG4gIGNvbnN0IHNlcnZlciA9IGF3YWl0IHN0YXJ0Vml0ZXN0KFxuICAgICd0ZXN0JyxcbiAgICBvcHRpb25zLnRlc3RGaWxlcyA/PyBbXSxcbiAgICBjb25maWcsXG4gICAgdml0ZU92ZXJyaWRlcyxcbiAgKTtcblxuICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG5cbiAgY29uc3QgcHJvY2Vzc0V4aXQgPSAoKSA9PiB7XG4gICAgc2VydmVyPy5leGl0KCk7XG4gICAgaWYgKGhhc0Vycm9ycykge1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChvcHRpb25zLndhdGNoKSB7XG4gICAgcHJvY2Vzcy5vbignU0lHSU5UJywgcHJvY2Vzc0V4aXQpO1xuICAgIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCBwcm9jZXNzRXhpdCk7XG4gICAgcHJvY2Vzcy5vbignZXhpdCcsIHByb2Nlc3NFeGl0KTtcbiAgfVxuXG4gIC8vIHZpdGVzdCBzZXRzIHRoZSBleGl0Q29kZSA9IDEgd2hlbiBjb2RlIGNvdmVyYWdlIGlzbid0IG1ldFxuICBoYXNFcnJvcnMgPSAocHJvY2Vzcy5leGl0Q29kZSAmJiBwcm9jZXNzLmV4aXRDb2RlICE9PSAwKSBhcyBib29sZWFuO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogIWhhc0Vycm9ycyxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhQXJncyhcbiAgb3B0aW9uczogVml0ZXN0U2NoZW1hLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIC8vIHN1cHBvcnQgcGFzc2luZyBleHRyYSBhcmdzIHRvIFZpdGVzdCBDTElcbiAgY29uc3Qgc2NoZW1hID0gYXdhaXQgaW1wb3J0KCcuL3NjaGVtYS5qc29uJyk7XG4gIGNvbnN0IGV4dHJhQXJnczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvcHRpb25zKSkge1xuICAgIGlmICghKHNjaGVtYSBhcyBhbnkpLnByb3BlcnRpZXNba2V5XSkge1xuICAgICAgZXh0cmFBcmdzW2tleV0gPSAob3B0aW9ucyBhcyBhbnkpW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dHJhQXJncztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcih2aXRlc3RCdWlsZGVyKSBhcyBhbnk7XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL3Rlc3Qvdml0ZXN0LmltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLDJCQUEyQixDQUFDO0FBSW5DLEtBQUssVUFBVSxhQUFhLENBQzFCLE9BQXFCLEVBQ3JCLE9BQXVCO0lBRXZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBRS9CLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFPLFFBQVEsQ0FDckMsOEJBQThCLENBQy9CLEVBQTRDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQ3BELE9BQU8sQ0FBQyxNQUEyQixDQUNwQyxDQUFDO0lBQ0YsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDO0lBQy9CLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQ2xELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRTtRQUN2QyxLQUFLO1FBQ0wsRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVTtRQUMxQixRQUFRLEVBQUU7WUFDUixPQUFPLEVBQUUsZUFBZTtZQUN4QixHQUFHLFlBQVk7U0FDaEI7UUFDRCxNQUFNO1FBQ04sR0FBRyxTQUFTO0tBQ2IsQ0FBQztJQUNGLE1BQU0sYUFBYSxHQUFRO1FBQ3pCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRTtLQUNoQixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQzlCLE1BQU0sRUFDTixPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFDdkIsTUFBTSxFQUNOLGFBQWEsQ0FDZCxDQUFDO0lBRUYsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRXRCLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDZixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBWSxDQUFDO0lBRXBFLE9BQU87UUFDTCxPQUFPLEVBQUUsQ0FBQyxTQUFTO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQ2hDLE9BQXFCO0lBRXJCLDJDQUEyQztJQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFFLE1BQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFJLE9BQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxlQUFlLGFBQWEsQ0FBQyxhQUFhLENBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1aWxkZXJDb250ZXh0LFxuICBCdWlsZGVyT3V0cHV0LFxuICBjcmVhdGVCdWlsZGVyLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcblxuaW1wb3J0IHsgVml0ZXN0U2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5hc3luYyBmdW5jdGlvbiB2aXRlc3RCdWlsZGVyKFxuICBvcHRpb25zOiBWaXRlc3RTY2hlbWEsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuKTogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PiB7XG4gIHByb2Nlc3MuZW52WydURVNUJ10gPSAndHJ1ZSc7XG4gIHByb2Nlc3MuZW52WydWSVRFU1QnXSA9ICd0cnVlJztcblxuICBjb25zdCB7IHN0YXJ0Vml0ZXN0IH0gPSBhd2FpdCAoRnVuY3Rpb24oXG4gICAgJ3JldHVybiBpbXBvcnQoXCJ2aXRlc3Qvbm9kZVwiKScsXG4gICkoKSBhcyBQcm9taXNlPHR5cGVvZiBpbXBvcnQoJ3ZpdGVzdC9ub2RlJyk+KTtcblxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEoXG4gICAgY29udGV4dC50YXJnZXQgYXMgdW5rbm93biBhcyBzdHJpbmcsXG4gICk7XG4gIGNvbnN0IHsgY292ZXJhZ2VBcmdzLCAuLi5leHRyYUFyZ3MgfSA9IGF3YWl0IGdldEV4dHJhQXJncyhvcHRpb25zKTtcbiAgY29uc3Qgd2F0Y2ggPSBvcHRpb25zLndhdGNoID09PSB0cnVlO1xuICBjb25zdCB1aSA9IG9wdGlvbnMudWkgPT09IHRydWU7XG4gIGNvbnN0IGNvdmVyYWdlRW5hYmxlZCA9IG9wdGlvbnMuY292ZXJhZ2UgPT09IHRydWU7XG4gIGNvbnN0IHVwZGF0ZSA9IG9wdGlvbnMudXBkYXRlID09PSB0cnVlO1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgcm9vdDogYCR7cHJvamVjdENvbmZpZ1sncm9vdCddIHx8ICcuJ31gLFxuICAgIHdhdGNoLFxuICAgIHVpLFxuICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdGaWxlLFxuICAgIGNvdmVyYWdlOiB7XG4gICAgICBlbmFibGVkOiBjb3ZlcmFnZUVuYWJsZWQsXG4gICAgICAuLi5jb3ZlcmFnZUFyZ3MsXG4gICAgfSxcbiAgICB1cGRhdGUsXG4gICAgLi4uZXh0cmFBcmdzLFxuICB9O1xuICBjb25zdCB2aXRlT3ZlcnJpZGVzOiBhbnkgPSB7XG4gICAgdGVzdDogeyB3YXRjaCB9LFxuICB9O1xuXG4gIGNvbnN0IHNlcnZlciA9IGF3YWl0IHN0YXJ0Vml0ZXN0KFxuICAgICd0ZXN0JyxcbiAgICBvcHRpb25zLnRlc3RGaWxlcyA/PyBbXSxcbiAgICBjb25maWcsXG4gICAgdml0ZU92ZXJyaWRlcyxcbiAgKTtcblxuICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG5cbiAgY29uc3QgcHJvY2Vzc0V4aXQgPSAoKSA9PiB7XG4gICAgc2VydmVyPy5leGl0KCk7XG4gICAgaWYgKGhhc0Vycm9ycykge1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChvcHRpb25zLndhdGNoKSB7XG4gICAgcHJvY2Vzcy5vbignU0lHSU5UJywgcHJvY2Vzc0V4aXQpO1xuICAgIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCBwcm9jZXNzRXhpdCk7XG4gICAgcHJvY2Vzcy5vbignZXhpdCcsIHByb2Nlc3NFeGl0KTtcbiAgfVxuXG4gIC8vIHZpdGVzdCBzZXRzIHRoZSBleGl0Q29kZSA9IDEgd2hlbiBjb2RlIGNvdmVyYWdlIGlzbid0IG1ldFxuICBoYXNFcnJvcnMgPSAocHJvY2Vzcy5leGl0Q29kZSAmJiBwcm9jZXNzLmV4aXRDb2RlICE9PSAwKSBhcyBib29sZWFuO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogIWhhc0Vycm9ycyxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhQXJncyhcbiAgb3B0aW9uczogVml0ZXN0U2NoZW1hLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIC8vIHN1cHBvcnQgcGFzc2luZyBleHRyYSBhcmdzIHRvIFZpdGVzdCBDTElcbiAgY29uc3Qgc2NoZW1hID0gYXdhaXQgaW1wb3J0KCcuL3NjaGVtYS5qc29uJywgeyB3aXRoOiB7IHR5cGU6ICdqc29uJyB9IH0pO1xuICBjb25zdCBleHRyYUFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3B0aW9ucykpIHtcbiAgICBpZiAoIShzY2hlbWEgYXMgYW55KS5kZWZhdWx0LnByb3BlcnRpZXNba2V5XSkge1xuICAgICAgZXh0cmFBcmdzW2tleV0gPSAob3B0aW9ucyBhcyBhbnkpW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dHJhQXJncztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcih2aXRlc3RCdWlsZGVyKSBhcyBhbnk7XG4iXX0=