angular-three 2.0.0-beta.5 → 2.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/esm2022/index.mjs +1 -2
  2. package/esm2022/lib/canvas.mjs +3 -3
  3. package/esm2022/lib/di/ref.mjs +15 -10
  4. package/esm2022/lib/directives/args.mjs +3 -3
  5. package/esm2022/lib/directives/common.mjs +3 -3
  6. package/esm2022/lib/directives/parent.mjs +3 -3
  7. package/esm2022/lib/directives/repeat.mjs +3 -3
  8. package/esm2022/lib/loader.mjs +3 -3
  9. package/esm2022/lib/portal.mjs +12 -12
  10. package/esm2022/lib/renderer/renderer.mjs +6 -7
  11. package/esm2022/lib/renderer/store.mjs +11 -1
  12. package/esm2022/lib/renderer/utils.mjs +10 -4
  13. package/esm2022/lib/routed-scene.mjs +3 -3
  14. package/esm2022/lib/stores/signal.store.mjs +6 -7
  15. package/esm2022/lib/stores/store.mjs +3 -3
  16. package/esm2022/lib/utils/apply-props.mjs +1 -3
  17. package/esm2022/lib/utils/instance.mjs +22 -19
  18. package/esm2022/lib/utils/timing.mjs +3 -15
  19. package/fesm2022/angular-three.mjs +96 -107
  20. package/fesm2022/angular-three.mjs.map +1 -1
  21. package/index.d.ts +0 -1
  22. package/lib/utils/timing.d.ts +1 -3
  23. package/package.json +49 -49
  24. package/esm2022/lib/utils/signal.mjs +0 -24
  25. package/lib/utils/signal.d.ts +0 -2
  26. package/metadata.json +0 -1
  27. package/plugin/README.md +0 -11
  28. package/plugin/generators.json +0 -19
  29. package/plugin/package.json +0 -8
  30. package/plugin/src/generators/init/compat.d.ts +0 -2
  31. package/plugin/src/generators/init/compat.js +0 -6
  32. package/plugin/src/generators/init/compat.js.map +0 -1
  33. package/plugin/src/generators/init/init.d.ts +0 -5
  34. package/plugin/src/generators/init/init.js +0 -56
  35. package/plugin/src/generators/init/init.js.map +0 -1
  36. package/plugin/src/generators/init/schema.json +0 -6
  37. package/plugin/src/index.d.ts +0 -1
  38. package/plugin/src/index.js +0 -6
  39. package/plugin/src/index.js.map +0 -1
  40. package/web-types.json +0 -1
package/esm2022/index.mjs CHANGED
@@ -20,7 +20,6 @@ export * from './lib/utils/instance';
20
20
  export * from './lib/utils/is';
21
21
  export * from './lib/utils/make';
22
22
  export * from './lib/utils/safe-detect-changes';
23
- export * from './lib/utils/signal';
24
23
  export * from './lib/utils/timing';
25
24
  export * from './lib/utils/update';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2FudmFzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL2JlZm9yZS1yZW5kZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGkvY2F0YWxvZ3VlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL3JlZic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2FyZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9wYXJlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yZXBlYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZGVyJztcbmV4cG9ydCB7IGFkZEFmdGVyRWZmZWN0LCBhZGRFZmZlY3QsIGFkZFRhaWwgfSBmcm9tICcuL2xpYi9sb29wJztcbmV4cG9ydCB7IE5ndFBvcnRhbCwgTmd0UG9ydGFsQ29udGVudCB9IGZyb20gJy4vbGliL3BvcnRhbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yb3V0ZWQtc2NlbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmVzL3NpZ25hbC5zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yZXMvc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGhyZWUtdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvYXBwbHktcHJvcHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvYXNzZXJ0LWluLWluamVjdGlvbi1jb250ZXh0JztcbmV4cG9ydCB7IGNyZWF0ZUF0dGFjaEZ1bmN0aW9uIH0gZnJvbSAnLi9saWIvdXRpbHMvYXR0YWNoJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2luc3RhbmNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2lzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL21ha2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvc2FmZS1kZXRlY3QtY2hhbmdlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9zaWduYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvdGltaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3VwZGF0ZSc7XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbnZhcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaS9iZWZvcmUtcmVuZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL2NhdGFsb2d1ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaS9yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9hcmdzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcGFyZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcmVwZWF0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvYWRlcic7XG5leHBvcnQgeyBhZGRBZnRlckVmZmVjdCwgYWRkRWZmZWN0LCBhZGRUYWlsIH0gZnJvbSAnLi9saWIvbG9vcCc7XG5leHBvcnQgeyBOZ3RQb3J0YWwsIE5ndFBvcnRhbENvbnRlbnQgfSBmcm9tICcuL2xpYi9wb3J0YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm91dGVkLXNjZW5lJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0b3Jlcy9zaWduYWwuc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmVzL3N0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RocmVlLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2FwcGx5LXByb3BzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2Fzc2VydC1pbi1pbmplY3Rpb24tY29udGV4dCc7XG5leHBvcnQgeyBjcmVhdGVBdHRhY2hGdW5jdGlvbiB9IGZyb20gJy4vbGliL3V0aWxzL2F0dGFjaCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9pcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9tYWtlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvdGltaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3VwZGF0ZSc7XG4iXX0=
@@ -208,15 +208,15 @@ class NgtCanvas extends NgtSignalStore {
208
208
  }
209
209
  });
210
210
  }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", scene: "scene", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false, emitInitialResult: true })], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", scene: "scene", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false, emitInitialResult: true })], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
213
213
  <div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
214
214
  <canvas #glCanvas style="display: block;"> </canvas>
215
215
  </div>
216
216
  `, isInline: true, dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
217
217
  }
218
218
  export { NgtCanvas };
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtCanvas, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtCanvas, decorators: [{
220
220
  type: Component,
221
221
  args: [{
222
222
  selector: 'ngt-canvas',
@@ -1,18 +1,16 @@
1
- import { ApplicationRef, ChangeDetectorRef, DestroyRef, ElementRef, computed, inject, runInInjectionContext, untracked, } from '@angular/core';
1
+ import { ChangeDetectorRef, DestroyRef, ElementRef, computed, inject, runInInjectionContext, signal, untracked, } from '@angular/core';
2
2
  import { assertInjectionContext } from '../utils/assert-in-injection-context';
3
3
  import { getLocalState } from '../utils/instance';
4
4
  import { is } from '../utils/is';
5
5
  import { safeDetectChanges } from '../utils/safe-detect-changes';
6
- import { createSignal } from '../utils/signal';
7
6
  export function injectNgtRef(initial = null, injector) {
8
7
  injector = assertInjectionContext(injectNgtRef, injector);
8
+ const ref = is.ref(initial) ? initial : new ElementRef(initial);
9
+ const signalRef = signal(ref.nativeElement);
10
+ const readonlySignal = signalRef.asReadonly();
11
+ const cached = new Map();
9
12
  return runInInjectionContext(injector, () => {
10
13
  const cdr = inject(ChangeDetectorRef);
11
- const appRef = inject(ApplicationRef);
12
- const ref = is.ref(initial) ? initial : new ElementRef(initial);
13
- const signalRef = createSignal(ref.nativeElement);
14
- const readonlySignal = signalRef.asReadonly();
15
- const cached = new Map();
16
14
  inject(DestroyRef).onDestroy(() => void cached.clear());
17
15
  const children = (type = 'objects') => {
18
16
  if (!cached.has(type)) {
@@ -35,9 +33,16 @@ export function injectNgtRef(initial = null, injector) {
35
33
  Object.defineProperty(ref, 'nativeElement', {
36
34
  set: (newElement) => {
37
35
  if (newElement !== untracked(signalRef)) {
38
- signalRef.set(newElement);
39
- // trigger CDR
36
+ try {
37
+ signalRef.set(newElement);
38
+ }
39
+ catch {
40
+ requestAnimationFrame(() => {
41
+ signalRef.set(newElement);
42
+ });
43
+ }
40
44
  requestAnimationFrame(() => void safeDetectChanges(cdr));
45
+ // trigger CDR
41
46
  }
42
47
  },
43
48
  get: () => readonlySignal(),
@@ -46,4 +51,4 @@ export function injectNgtRef(initial = null, injector) {
46
51
  return Object.assign(ref, { children });
47
52
  });
48
53
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGkvcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixVQUFVLEVBR1YsUUFBUSxFQUNSLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVMvQyxNQUFNLFVBQVUsWUFBWSxDQUN4QixVQUEyQyxJQUFLLEVBQ2hELFFBQW1CO0lBRW5CLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFXLE9BQW1CLENBQUMsQ0FBQztRQUN0RixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXpCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUV4RCxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQTBDLFNBQVMsRUFBRSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuQixNQUFNLENBQUMsR0FBRyxDQUNOLElBQUksRUFDSixRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNWLE1BQU0sUUFBUSxHQUFHLGNBQWMsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsUUFBUTt3QkFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVO3dCQUFFLE9BQU8sRUFBRSxDQUFDO29CQUM3RCxJQUFJLElBQUksS0FBSyxTQUFTO3dCQUFFLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNwRCxJQUFJLElBQUksS0FBSyxZQUFZO3dCQUFFLE9BQU8sVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUMxRCxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLENBQ0wsQ0FBQzthQUNMO1lBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRTtZQUN4QyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxVQUFVLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNyQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQixjQUFjO29CQUNkLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDNUQ7WUFDTCxDQUFDO1lBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRTtTQUM5QixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQTZCLENBQUM7SUFDeEUsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgU2lnbmFsLFxuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdCxcbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gICAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydEluamVjdGlvbkNvbnRleHQgfSBmcm9tICcuLi91dGlscy9hc3NlcnQtaW4taW5qZWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJy4uL3V0aWxzL2luc3RhbmNlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcbmltcG9ydCB7IGNyZWF0ZVNpZ25hbCB9IGZyb20gJy4uL3V0aWxzL3NpZ25hbCc7XG5cbmV4cG9ydCB0eXBlIE5ndEluamVjdGVkUmVmPFRFbGVtZW50PiA9IEVsZW1lbnRSZWY8VEVsZW1lbnQ+ICYge1xuICAgIC8qIGNvbnN1bWVycyBzaG91bGQgdXNlIHRoaXMgZm9yIGxpc3RlbnRpbmcgdG8gY2hpbGRyZW4gY2hhbmdlcyBvbiB0aGlzIHJlZiAqL1xuICAgIGNoaWxkcmVuOiAodHlwZT86ICdvYmplY3RzJyB8ICdub25PYmplY3RzJyB8ICdib3RoJykgPT4gU2lnbmFsPE5ndEluc3RhbmNlTm9kZVtdPjtcbiAgICAvKiBjb25zdW1lcnMgc2hvdWxkIHVzZSB0aGlzIHRvIHJlYWQgdGhlIHJlZiBjdXJyZW50IHZhbHVlIHdpdGhvdXQgcmVnaXN0ZXJpbmcgdGhlIHNpZ25hbCAqL1xuICAgIHVudHJhY2tlZDogVEVsZW1lbnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0UmVmPFRFbGVtZW50PihcbiAgICBpbml0aWFsOiBFbGVtZW50UmVmPFRFbGVtZW50PiB8IFRFbGVtZW50ID0gbnVsbCEsXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvclxuKTogTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+IHtcbiAgICBpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0UmVmLCBpbmplY3Rvcik7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4ge1xuICAgICAgICBjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICBjb25zdCBhcHBSZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xuICAgICAgICBjb25zdCByZWYgPSBpcy5yZWYoaW5pdGlhbCkgPyBpbml0aWFsIDogbmV3IEVsZW1lbnRSZWY8VEVsZW1lbnQ+KGluaXRpYWwgYXMgVEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBzaWduYWxSZWYgPSBjcmVhdGVTaWduYWwocmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZWFkb25seVNpZ25hbCA9IHNpZ25hbFJlZi5hc1JlYWRvbmx5KCk7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IG5ldyBNYXAoKTtcblxuICAgICAgICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHZvaWQgY2FjaGVkLmNsZWFyKCkpO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gKHR5cGU6ICdvYmplY3RzJyB8ICdub25PYmplY3RzJyB8ICdib3RoJyA9ICdvYmplY3RzJykgPT4ge1xuICAgICAgICAgICAgaWYgKCFjYWNoZWQuaGFzKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVkLnNldChcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSByZWFkb25seVNpZ25hbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZSkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbFN0YXRlLm9iamVjdHMgfHwgIWxvY2FsU3RhdGUubm9uT2JqZWN0cykgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3RzJykgcmV0dXJuIGxvY2FsU3RhdGUub2JqZWN0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdub25PYmplY3RzJykgcmV0dXJuIGxvY2FsU3RhdGUubm9uT2JqZWN0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5sb2NhbFN0YXRlLm9iamVjdHMoKSwgLi4ubG9jYWxTdGF0ZS5ub25PYmplY3RzKCldO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkLmdldCh0eXBlKSE7XG4gICAgICAgIH07XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZiwgJ25hdGl2ZUVsZW1lbnQnLCB7XG4gICAgICAgICAgICBzZXQ6IChuZXdFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnQgIT09IHVudHJhY2tlZChzaWduYWxSZWYpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpZ25hbFJlZi5zZXQobmV3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgQ0RSXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB2b2lkIHNhZmVEZXRlY3RDaGFuZ2VzKGNkcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHJlYWRvbmx5U2lnbmFsKCksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWYsICd1bnRyYWNrZWQnLCB7IGdldDogKCkgPT4gdW50cmFja2VkKHJlYWRvbmx5U2lnbmFsKSB9KTtcblxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZWYsIHsgY2hpbGRyZW4gfSkgYXMgTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+O1xuICAgIH0pO1xufVxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGkvcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFVBQVUsRUFHVixRQUFRLEVBQ1IsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBU2pFLE1BQU0sVUFBVSxZQUFZLENBQ3hCLFVBQTJDLElBQUssRUFDaEQsUUFBbUI7SUFFbkIsUUFBUSxHQUFHLHNCQUFzQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFXLE9BQW1CLENBQUMsQ0FBQztJQUN0RixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE9BQU8scUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUN4QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV0QyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFeEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUEwQyxTQUFTLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FDTixJQUFJLEVBQ0osUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDVixNQUFNLFFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFFBQVE7d0JBQUUsT0FBTyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTt3QkFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxJQUFJLEtBQUssU0FBUzt3QkFBRSxPQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxJQUFJLEtBQUssWUFBWTt3QkFBRSxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDMUQsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUNMLENBQUM7YUFDTDtZQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUU7WUFDeEMsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksVUFBVSxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDckMsSUFBSTt3QkFDQSxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUM3QjtvQkFBQyxNQUFNO3dCQUNKLHFCQUFxQixDQUFDLEdBQUcsRUFBRTs0QkFDdkIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLENBQUM7cUJBQ047b0JBQ0QscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN6RCxjQUFjO2lCQUNqQjtZQUNMLENBQUM7WUFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFO1NBQzlCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWxGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBNkIsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3RvcixcbiAgICBTaWduYWwsXG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydEluamVjdGlvbkNvbnRleHQgfSBmcm9tICcuLi91dGlscy9hc3NlcnQtaW4taW5qZWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJy4uL3V0aWxzL2luc3RhbmNlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcblxuZXhwb3J0IHR5cGUgTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+ID0gRWxlbWVudFJlZjxURWxlbWVudD4gJiB7XG4gICAgLyogY29uc3VtZXJzIHNob3VsZCB1c2UgdGhpcyBmb3IgbGlzdGVudGluZyB0byBjaGlsZHJlbiBjaGFuZ2VzIG9uIHRoaXMgcmVmICovXG4gICAgY2hpbGRyZW46ICh0eXBlPzogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnIHwgJ2JvdGgnKSA9PiBTaWduYWw8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8qIGNvbnN1bWVycyBzaG91bGQgdXNlIHRoaXMgdG8gcmVhZCB0aGUgcmVmIGN1cnJlbnQgdmFsdWUgd2l0aG91dCByZWdpc3RlcmluZyB0aGUgc2lnbmFsICovXG4gICAgdW50cmFja2VkOiBURWxlbWVudDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RSZWY8VEVsZW1lbnQ+KFxuICAgIGluaXRpYWw6IEVsZW1lbnRSZWY8VEVsZW1lbnQ+IHwgVEVsZW1lbnQgPSBudWxsISxcbiAgICBpbmplY3Rvcj86IEluamVjdG9yXG4pOiBOZ3RJbmplY3RlZFJlZjxURWxlbWVudD4ge1xuICAgIGluamVjdG9yID0gYXNzZXJ0SW5qZWN0aW9uQ29udGV4dChpbmplY3ROZ3RSZWYsIGluamVjdG9yKTtcbiAgICBjb25zdCByZWYgPSBpcy5yZWYoaW5pdGlhbCkgPyBpbml0aWFsIDogbmV3IEVsZW1lbnRSZWY8VEVsZW1lbnQ+KGluaXRpYWwgYXMgVEVsZW1lbnQpO1xuICAgIGNvbnN0IHNpZ25hbFJlZiA9IHNpZ25hbChyZWYubmF0aXZlRWxlbWVudCk7XG4gICAgY29uc3QgcmVhZG9ubHlTaWduYWwgPSBzaWduYWxSZWYuYXNSZWFkb25seSgpO1xuICAgIGNvbnN0IGNhY2hlZCA9IG5ldyBNYXAoKTtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAgICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB2b2lkIGNhY2hlZC5jbGVhcigpKTtcblxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9ICh0eXBlOiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycgfCAnYm90aCcgPSAnb2JqZWN0cycpID0+IHtcbiAgICAgICAgICAgIGlmICghY2FjaGVkLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgICAgIGNhY2hlZC5zZXQoXG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gcmVhZG9ubHlTaWduYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UpIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxTdGF0ZS5vYmplY3RzIHx8ICFsb2NhbFN0YXRlLm5vbk9iamVjdHMpIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnb2JqZWN0cycpIHJldHVybiBsb2NhbFN0YXRlLm9iamVjdHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnbm9uT2JqZWN0cycpIHJldHVybiBsb2NhbFN0YXRlLm5vbk9iamVjdHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4ubG9jYWxTdGF0ZS5vYmplY3RzKCksIC4uLmxvY2FsU3RhdGUubm9uT2JqZWN0cygpXTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZC5nZXQodHlwZSkhO1xuICAgICAgICB9O1xuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWYsICduYXRpdmVFbGVtZW50Jywge1xuICAgICAgICAgICAgc2V0OiAobmV3RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChuZXdFbGVtZW50ICE9PSB1bnRyYWNrZWQoc2lnbmFsUmVmKSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsUmVmLnNldChuZXdFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbFJlZi5zZXQobmV3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdm9pZCBzYWZlRGV0ZWN0Q2hhbmdlcyhjZHIpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBDRFJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0OiAoKSA9PiByZWFkb25seVNpZ25hbCgpLFxuICAgICAgICB9KTtcblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVmLCAndW50cmFja2VkJywgeyBnZXQ6ICgpID0+IHVudHJhY2tlZChyZWFkb25seVNpZ25hbCkgfSk7XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocmVmLCB7IGNoaWxkcmVuIH0pIGFzIE5ndEluamVjdGVkUmVmPFRFbGVtZW50PjtcbiAgICB9KTtcbn1cbiJdfQ==
@@ -20,11 +20,11 @@ class NgtArgs extends NgtCommonDirective {
20
20
  validate() {
21
21
  return !this.injected && !!this.#injectedArgs.length;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 }); }
25
25
  }
26
26
  export { NgtArgs };
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtArgs, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtArgs, decorators: [{
28
28
  type: Directive,
29
29
  args: [{ selector: '[args]', standalone: true }]
30
30
  }], propDecorators: { args: [{
@@ -30,11 +30,11 @@ class NgtCommonDirective {
30
30
  });
31
31
  }
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
34
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtCommonDirective, ngImport: i0 }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
34
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: NgtCommonDirective, ngImport: i0 }); }
35
35
  }
36
36
  export { NgtCommonDirective };
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtCommonDirective, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtCommonDirective, decorators: [{
38
38
  type: Directive
39
39
  }], ctorParameters: function () { return []; } });
40
40
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGlyZWN0aXZlcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRWpFLE1BQ3NCLGtCQUFrQjtJQUMzQixJQUFJLENBQTRCO0lBQ2hDLEtBQUssQ0FBa0I7SUFDdkIsU0FBUyxDQUF1QjtJQUl6QyxLQUFLLENBQTRCO0lBRWpDO1FBUlMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hDLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUk5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDcEQsSUFBSSxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRTtZQUMzQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sV0FBVyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBSVMsVUFBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN4QjtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7OEdBN0JpQixrQkFBa0I7a0dBQWxCLGtCQUFrQjs7U0FBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRHZDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgaW5qZWN0LCBOZ1pvbmUsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UIH0gZnJvbSAnLi4vcmVuZGVyZXIvdXRpbHMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd0Q29tbW9uRGlyZWN0aXZlIHtcbiAgICByZWFkb25seSAjdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcmVhZG9ubHkgI3RlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblxuICAgIHByb3RlY3RlZCBpbmplY3RlZCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBzaG91bGRDcmVhdGVWaWV3ID0gdHJ1ZTtcbiAgICAjdmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IHRoaXMuI3Zjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuICAgICAgICAgICAgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0oKTtcbiAgICAgICAgICAgIGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFic3RyYWN0IHZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVmlldygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQ3JlYXRlVmlldykge1xuICAgICAgICAgICAgaWYgKHRoaXMuI3ZpZXcgJiYgIXRoaXMuI3ZpZXcuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jdmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiN2aWV3ID0gdGhpcy4jdmNyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLiN0ZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy4jdmlldyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -20,11 +20,11 @@ class NgtParent extends NgtCommonDirective {
20
20
  validate() {
21
21
  return !this.injected && !!this.#injectedParent;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtParent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtParent, isStandalone: true, selector: "[parent]", inputs: { parent: "parent" }, usesInheritance: true, ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtParent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: NgtParent, isStandalone: true, selector: "[parent]", inputs: { parent: "parent" }, usesInheritance: true, ngImport: i0 }); }
25
25
  }
26
26
  export { NgtParent };
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtParent, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtParent, decorators: [{
28
28
  type: Directive,
29
29
  args: [{ selector: '[parent]', standalone: true }]
30
30
  }], propDecorators: { parent: [{
@@ -5,11 +5,11 @@ class NgtRepeat extends NgForOf {
5
5
  set ngForRepeat(count) {
6
6
  this.ngForOf = Number.isInteger(count) ? Array.from({ length: count }, (_, i) => i) : [];
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
9
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
9
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 }); }
10
10
  }
11
11
  export { NgtRepeat };
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtRepeat, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtRepeat, decorators: [{
13
13
  type: Directive,
14
14
  args: [{ selector: '[ngFor][ngForRepeat]', standalone: true }]
15
15
  }], propDecorators: { ngForRepeat: [{
@@ -2,7 +2,7 @@ import { ChangeDetectorRef, effect, inject, runInInjectionContext, signal } from
2
2
  import { assertInjectionContext } from './utils/assert-in-injection-context';
3
3
  import { makeObjectGraph } from './utils/make';
4
4
  import { safeDetectChanges } from './utils/safe-detect-changes';
5
- import { requestAnimationInInjectionContext } from './utils/timing';
5
+ import { requestAnimationFrameInInjectionContext } from './utils/timing';
6
6
  const cached = new Map();
7
7
  function normalizeInputs(input) {
8
8
  if (Array.isArray(input))
@@ -38,7 +38,7 @@ export function injectNgtLoader(loaderConstructorFactory, inputs, { extensions,
38
38
  return runInInjectionContext(injector, () => {
39
39
  const cdr = inject(ChangeDetectorRef);
40
40
  const effector = load(loaderConstructorFactory, inputs, { extensions, onProgress });
41
- requestAnimationInInjectionContext(() => {
41
+ requestAnimationFrameInInjectionContext(() => {
42
42
  effect(() => {
43
43
  const originalUrls = inputs();
44
44
  Promise.all(effector()).then((results) => {
@@ -66,4 +66,4 @@ injectNgtLoader['preload'] = (loaderConstructorFactory, inputs, extensions) => {
66
66
  injectNgtLoader['destroy'] = () => {
67
67
  cached.clear();
68
68
  };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQVV4SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3BFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFekIsU0FBUyxlQUFlLENBQUMsS0FBaUQ7SUFDdEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUtULHdCQUFrRSxFQUNsRSxNQUFrQixFQUNsQixFQUNJLFVBQVUsRUFDVixVQUFVLE1BSVYsRUFBRTtJQUVOLE9BQU8sR0FBRyxFQUFFO1FBQ1IsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxJQUFJLFVBQVU7WUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENB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Q0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBS3pCLHdCQUFrRSxFQUNsRSxNQUFrQixFQUNsQixVQUFvRCxFQUN0RCxFQUFFO0lBQ0EsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUYsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsRUFBRTtJQUM5QixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdG9yLCBlZmZlY3QsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBzaWduYWwsIHR5cGUgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEdMVEYgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vbG9hZGVycy9HTFRGTG9hZGVyJztcbmltcG9ydCB0eXBlIHtcbiAgICBOZ3RBbnlSZWNvcmQsXG4gICAgTmd0QnJhbmNoaW5nUmV0dXJuLFxuICAgIE5ndExvYWRlckV4dGVuc2lvbnMsXG4gICAgTmd0TG9hZGVyUHJvdG8sXG4gICAgTmd0TG9hZGVyUmV0dXJuVHlwZSxcbiAgICBOZ3RPYmplY3RNYXAsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vdXRpbHMvYXNzZXJ0LWluLWluamVjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IG1ha2VPYmplY3RHcmFwaCB9IGZyb20gJy4vdXRpbHMvbWFrZSc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4vdXRpbHMvc2FmZS1kZXRlY3QtY2hhbmdlcyc7XG5pbXBvcnQgeyByZXF1ZXN0QW5pbWF0aW9uSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnLi91dGlscy90aW1pbmcnO1xuXG5leHBvcnQgdHlwZSBOZ3RMb2FkZXJSZXN1bHRzPFxuICAgIFRJbnB1dCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBUUmV0dXJuXG4+ID0gVElucHV0IGV4dGVuZHMgc3RyaW5nW10gPyBUUmV0dXJuW10gOiBUSW5wdXQgZXh0ZW5kcyBvYmplY3QgPyB7IFtrZXkgaW4ga2V5b2YgVElucHV0XTogVFJldHVybiB9IDogVFJldHVybjtcblxuY29uc3QgY2FjaGVkID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVJbnB1dHMoaW5wdXQ6IHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSByZXR1cm4gW2lucHV0XTtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnB1dCk7XG59XG5cbmZ1bmN0aW9uIGxvYWQ8XG4gICAgVERhdGEsXG4gICAgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBUTG9hZGVyQ29uc3RydWN0b3IgZXh0ZW5kcyBOZ3RMb2FkZXJQcm90bzxURGF0YT5cbj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBzdHJpbmdbXSkgPT4gVExvYWRlckNvbnN0cnVjdG9yLFxuICAgIGlucHV0czogKCkgPT4gVFVybCxcbiAgICB7XG4gICAgICAgIGV4dGVuc2lvbnMsXG4gICAgICAgIG9uUHJvZ3Jlc3MsXG4gICAgfToge1xuICAgICAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9uczxUTG9hZGVyQ29uc3RydWN0b3I+O1xuICAgICAgICBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkO1xuICAgIH0gPSB7fVxuKSB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgdXJscyA9IG5vcm1hbGl6ZUlucHV0cyhpbnB1dHMoKSk7XG4gICAgICAgIGNvbnN0IGxvYWRlciA9IG5ldyAobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5KHVybHMpKSgpO1xuICAgICAgICBpZiAoZXh0ZW5zaW9ucykgZXh0ZW5zaW9ucyhsb2FkZXIpO1xuICAgICAgICAvLyBUT0RPOiByZWV2YWx1YXRlIHRoaXNcbiAgICAgICAgcmV0dXJuIHVybHMubWFwKCh1cmwpID0+IHtcbiAgICAgICAgICAgIGlmICghY2FjaGVkLmhhcyh1cmwpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVkLnNldChcbiAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdzY2VuZScgaW4gKGRhdGEgYXMgTmd0QW55UmVjb3JkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBhcyBOZ3RBbnlSZWNvcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZU9iamVjdEdyYXBoKChkYXRhIGFzIE5ndEFueVJlY29yZClbJ3NjZW5lJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChuZXcgRXJyb3IoYFtOR1RdIENvdWxkIG5vdCBsb2FkICR7dXJsfTogJHtlcnJvcn1gKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjYWNoZWQuZ2V0KHVybCkhO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0TG9hZGVyPFxuICAgIFREYXRhLFxuICAgIFRVcmwgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgVExvYWRlckNvbnN0cnVjdG9yIGV4dGVuZHMgTmd0TG9hZGVyUHJvdG88VERhdGE+LFxuICAgIFRSZXR1cm4gPSBOZ3RMb2FkZXJSZXR1cm5UeXBlPFREYXRhLCBUTG9hZGVyQ29uc3RydWN0b3I+XG4+KFxuICAgIGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeTogKGlucHV0czogc3RyaW5nW10pID0+IFRMb2FkZXJDb25zdHJ1Y3RvcixcbiAgICBpbnB1dHM6ICgpID0+IFRVcmwsXG4gICAge1xuICAgICAgICBleHRlbnNpb25zLFxuICAgICAgICBvblByb2dyZXNzLFxuICAgICAgICBpbmplY3RvcixcbiAgICB9OiB7XG4gICAgICAgIGV4dGVuc2lvbnM/OiBOZ3RMb2FkZXJFeHRlbnNpb25zPFRMb2FkZXJDb25zdHJ1Y3Rvcj47XG4gICAgICAgIG9uUHJvZ3Jlc3M/OiAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHZvaWQ7XG4gICAgICAgIGluamVjdG9yPzogSW5qZWN0b3I7XG4gICAgfSA9IHt9XG4pOiBTaWduYWw8Tmd0TG9hZGVyUmVzdWx0czxUVXJsLCBOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVybiwgR0xURiwgR0xURiAmIE5ndE9iamVjdE1hcD4+PiB7XG4gICAgaW5qZWN0b3IgPSBhc3NlcnRJbmplY3Rpb25Db250ZXh0KGluamVjdE5ndExvYWRlciwgaW5qZWN0b3IpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gc2lnbmFsPE5ndExvYWRlclJlc3VsdHM8VFVybCwgTmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm4sIEdMVEYsIEdMVEYgJiBOZ3RPYmplY3RNYXA+Pj4obnVsbCEpO1xuICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgY29uc3QgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICAgICAgY29uc3QgZWZmZWN0b3IgPSBsb2FkKGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeSwgaW5wdXRzLCB7IGV4dGVuc2lvbnMsIG9uUHJvZ3Jlc3MgfSk7XG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFVybHMgPSBpbnB1dHMoKTtcbiAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwoZWZmZWN0b3IoKSkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXBkYXRlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcmlnaW5hbFVybHMpKSByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9yaWdpbmFsVXJscyA9PT0gJ3N0cmluZycpIHJldHVybiByZXN1bHRzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvcmlnaW5hbFVybHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlzLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCBhcyBOZ3RBbnlSZWNvcmQpW2tleV0gPSByZXN1bHRzW2tleXMuaW5kZXhPZihrZXkpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7fSBhcyB7IFtrZXkgaW4ga2V5b2YgVFVybF06IE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXMoY2RyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXNwb25zZS5hc1JlYWRvbmx5KCk7XG4gICAgfSk7XG59XG5cbmluamVjdE5ndExvYWRlclsncHJlbG9hZCddID0gPFxuICAgIFREYXRhLFxuICAgIFRVcmwgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgVExvYWRlckNvbnN0cnVjdG9yIGV4dGVuZHMgTmd0TG9hZGVyUHJvdG88VERhdGE+XG4+KFxuICAgIGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeTogKGlucHV0czogc3RyaW5nW10pID0+IFRMb2FkZXJDb25zdHJ1Y3RvcixcbiAgICBpbnB1dHM6ICgpID0+IFRVcmwsXG4gICAgZXh0ZW5zaW9ucz86IE5ndExvYWRlckV4dGVuc2lvbnM8VExvYWRlckNvbnN0cnVjdG9yPlxuKSA9PiB7XG4gICAgUHJvbWlzZS5hbGwobG9hZChsb2FkZXJDb25zdHJ1Y3RvckZhY3RvcnksIGlucHV0cywgeyBleHRlbnNpb25zIH0pKCkpO1xufTtcblxuaW5qZWN0Tmd0TG9hZGVyWydkZXN0cm95J10gPSAoKSA9PiB7XG4gICAgY2FjaGVkLmNsZWFyKCk7XG59O1xuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQVV4SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3pFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFekIsU0FBUyxlQUFlLENBQUMsS0FBaUQ7SUFDdEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUtULHdCQUFrRSxFQUNsRSxNQUFrQixFQUNsQixFQUNJLFVBQVUsRUFDVixVQUFVLE1BSVYsRUFBRTtJQUVOLE9BQU8sR0FBRyxFQUFFO1FBQ1IsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxJQUFJLFVBQVU7WUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENB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Q0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBS3pCLHdCQUFrRSxFQUNsRSxNQUFrQixFQUNsQixVQUFvRCxFQUN0RCxFQUFFO0lBQ0EsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUYsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsRUFBRTtJQUM5QixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdG9yLCBlZmZlY3QsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBzaWduYWwsIHR5cGUgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEdMVEYgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vbG9hZGVycy9HTFRGTG9hZGVyJztcbmltcG9ydCB0eXBlIHtcbiAgICBOZ3RBbnlSZWNvcmQsXG4gICAgTmd0QnJhbmNoaW5nUmV0dXJuLFxuICAgIE5ndExvYWRlckV4dGVuc2lvbnMsXG4gICAgTmd0TG9hZGVyUHJvdG8sXG4gICAgTmd0TG9hZGVyUmV0dXJuVHlwZSxcbiAgICBOZ3RPYmplY3RNYXAsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vdXRpbHMvYXNzZXJ0LWluLWluamVjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IG1ha2VPYmplY3RHcmFwaCB9IGZyb20gJy4vdXRpbHMvbWFrZSc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4vdXRpbHMvc2FmZS1kZXRlY3QtY2hhbmdlcyc7XG5pbXBvcnQgeyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICcuL3V0aWxzL3RpbWluZyc7XG5cbmV4cG9ydCB0eXBlIE5ndExvYWRlclJlc3VsdHM8XG4gICAgVElucHV0IGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIFRSZXR1cm5cbj4gPSBUSW5wdXQgZXh0ZW5kcyBzdHJpbmdbXSA/IFRSZXR1cm5bXSA6IFRJbnB1dCBleHRlbmRzIG9iamVjdCA/IHsgW2tleSBpbiBrZXlvZiBUSW5wdXRdOiBUUmV0dXJuIH0gOiBUUmV0dXJuO1xuXG5jb25zdCBjYWNoZWQgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUlucHV0cyhpbnB1dDogc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHJldHVybiBbaW5wdXRdO1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGlucHV0KTtcbn1cblxuZnVuY3Rpb24gbG9hZDxcbiAgICBURGF0YSxcbiAgICBUVXJsIGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIFRMb2FkZXJDb25zdHJ1Y3RvciBleHRlbmRzIE5ndExvYWRlclByb3RvPFREYXRhPlxuPihcbiAgICBsb2FkZXJDb25zdHJ1Y3RvckZhY3Rvcnk6IChpbnB1dHM6IHN0cmluZ1tdKSA9PiBUTG9hZGVyQ29uc3RydWN0b3IsXG4gICAgaW5wdXRzOiAoKSA9PiBUVXJsLFxuICAgIHtcbiAgICAgICAgZXh0ZW5zaW9ucyxcbiAgICAgICAgb25Qcm9ncmVzcyxcbiAgICB9OiB7XG4gICAgICAgIGV4dGVuc2lvbnM/OiBOZ3RMb2FkZXJFeHRlbnNpb25zPFRMb2FkZXJDb25zdHJ1Y3Rvcj47XG4gICAgICAgIG9uUHJvZ3Jlc3M/OiAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHZvaWQ7XG4gICAgfSA9IHt9XG4pIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCB1cmxzID0gbm9ybWFsaXplSW5wdXRzKGlucHV0cygpKTtcbiAgICAgICAgY29uc3QgbG9hZGVyID0gbmV3IChsb2FkZXJDb25zdHJ1Y3RvckZhY3RvcnkodXJscykpKCk7XG4gICAgICAgIGlmIChleHRlbnNpb25zKSBleHRlbnNpb25zKGxvYWRlcik7XG4gICAgICAgIC8vIFRPRE86IHJlZXZhbHVhdGUgdGhpc1xuICAgICAgICByZXR1cm4gdXJscy5tYXAoKHVybCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjYWNoZWQuaGFzKHVybCkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZWQuc2V0KFxuICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ3NjZW5lJyBpbiAoZGF0YSBhcyBOZ3RBbnlSZWNvcmQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIGFzIE5ndEFueVJlY29yZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlT2JqZWN0R3JhcGgoKGRhdGEgYXMgTmd0QW55UmVjb3JkKVsnc2NlbmUnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblByb2dyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4gcmVqZWN0KG5ldyBFcnJvcihgW05HVF0gQ291bGQgbm90IGxvYWQgJHt1cmx9OiAke2Vycm9yfWApKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZC5nZXQodXJsKSE7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RMb2FkZXI8XG4gICAgVERhdGEsXG4gICAgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBUTG9hZGVyQ29uc3RydWN0b3IgZXh0ZW5kcyBOZ3RMb2FkZXJQcm90bzxURGF0YT4sXG4gICAgVFJldHVybiA9IE5ndExvYWRlclJldHVyblR5cGU8VERhdGEsIFRMb2FkZXJDb25zdHJ1Y3Rvcj5cbj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBzdHJpbmdbXSkgPT4gVExvYWRlckNvbnN0cnVjdG9yLFxuICAgIGlucHV0czogKCkgPT4gVFVybCxcbiAgICB7XG4gICAgICAgIGV4dGVuc2lvbnMsXG4gICAgICAgIG9uUHJvZ3Jlc3MsXG4gICAgICAgIGluamVjdG9yLFxuICAgIH06IHtcbiAgICAgICAgZXh0ZW5zaW9ucz86IE5ndExvYWRlckV4dGVuc2lvbnM8VExvYWRlckNvbnN0cnVjdG9yPjtcbiAgICAgICAgb25Qcm9ncmVzcz86IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4gdm9pZDtcbiAgICAgICAgaW5qZWN0b3I/OiBJbmplY3RvcjtcbiAgICB9ID0ge31cbik6IFNpZ25hbDxOZ3RMb2FkZXJSZXN1bHRzPFRVcmwsIE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPj4+IHtcbiAgICBpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0TG9hZGVyLCBpbmplY3Rvcik7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBzaWduYWw8Tmd0TG9hZGVyUmVzdWx0czxUVXJsLCBOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVybiwgR0xURiwgR0xURiAmIE5ndE9iamVjdE1hcD4+PihudWxsISk7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4ge1xuICAgICAgICBjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICBjb25zdCBlZmZlY3RvciA9IGxvYWQobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5LCBpbnB1dHMsIHsgZXh0ZW5zaW9ucywgb25Qcm9ncmVzcyB9KTtcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbkluamVjdGlvbkNvbnRleHQoKCkgPT4ge1xuICAgICAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmxzID0gaW5wdXRzKCk7XG4gICAgICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKGVmZmVjdG9yKCkpLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3JpZ2luYWxVcmxzKSkgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcmlnaW5hbFVybHMgPT09ICdzdHJpbmcnKSByZXR1cm4gcmVzdWx0c1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob3JpZ2luYWxVcmxzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5cy5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHQgYXMgTmd0QW55UmVjb3JkKVtrZXldID0gcmVzdWx0c1trZXlzLmluZGV4T2Yoa2V5KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge30gYXMgeyBba2V5IGluIGtleW9mIFRVcmxdOiBOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVybiwgR0xURiwgR0xURiAmIE5ndE9iamVjdE1hcD4gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKGNkcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuYXNSZWFkb25seSgpO1xuICAgIH0pO1xufVxuXG5pbmplY3ROZ3RMb2FkZXJbJ3ByZWxvYWQnXSA9IDxcbiAgICBURGF0YSxcbiAgICBUVXJsIGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIFRMb2FkZXJDb25zdHJ1Y3RvciBleHRlbmRzIE5ndExvYWRlclByb3RvPFREYXRhPlxuPihcbiAgICBsb2FkZXJDb25zdHJ1Y3RvckZhY3Rvcnk6IChpbnB1dHM6IHN0cmluZ1tdKSA9PiBUTG9hZGVyQ29uc3RydWN0b3IsXG4gICAgaW5wdXRzOiAoKSA9PiBUVXJsLFxuICAgIGV4dGVuc2lvbnM/OiBOZ3RMb2FkZXJFeHRlbnNpb25zPFRMb2FkZXJDb25zdHJ1Y3Rvcj5cbikgPT4ge1xuICAgIFByb21pc2UuYWxsKGxvYWQobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5LCBpbnB1dHMsIHsgZXh0ZW5zaW9ucyB9KSgpKTtcbn07XG5cbmluamVjdE5ndExvYWRlclsnZGVzdHJveSddID0gKCkgPT4ge1xuICAgIGNhY2hlZC5jbGVhcigpO1xufTtcbiJdfQ==
@@ -9,7 +9,7 @@ import { NgtStore } from './stores/store';
9
9
  import { getLocalState, prepare } from './utils/instance';
10
10
  import { is } from './utils/is';
11
11
  import { safeDetectChanges } from './utils/safe-detect-changes';
12
- import { queueMicrotaskInInjectionContext } from './utils/timing';
12
+ import { requestAnimationFrameInInjectionContext } from './utils/timing';
13
13
  import { updateCamera } from './utils/update';
14
14
  import * as i0 from "@angular/core";
15
15
  const privateKeys = [
@@ -32,7 +32,7 @@ class NgtPortalBeforeRender {
32
32
  this.renderPriority = 1;
33
33
  this.beforeRender = new EventEmitter();
34
34
  let oldClear;
35
- queueMicrotaskInInjectionContext(() => {
35
+ requestAnimationFrameInInjectionContext(() => {
36
36
  injectBeforeRender(({ delta, frame }) => {
37
37
  this.beforeRender.emit({ ...this.#portalStore.get(), delta, frame });
38
38
  const { gl, scene, camera } = this.#portalStore.get();
@@ -51,11 +51,11 @@ class NgtPortalBeforeRender {
51
51
  }, { priority: this.renderPriority });
52
52
  });
53
53
  }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtPortalBeforeRender, isStandalone: true, selector: "[ngtPortalBeforeRender]", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 }); }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: NgtPortalBeforeRender, isStandalone: true, selector: "[ngtPortalBeforeRender]", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 }); }
56
56
  }
57
57
  export { NgtPortalBeforeRender };
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
59
59
  type: Directive,
60
60
  args: [{ selector: '[ngtPortalBeforeRender]', standalone: true }]
61
61
  }], ctorParameters: function () { return []; }, propDecorators: { renderPriority: [{
@@ -77,11 +77,11 @@ class NgtPortalContent {
77
77
  delete commentNode[SPECIAL_INTERNAL_ADD_COMMENT];
78
78
  }
79
79
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
81
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 }); }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
81
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 }); }
82
82
  }
83
83
  export { NgtPortalContent };
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtPortalContent, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtPortalContent, decorators: [{
85
85
  type: Directive,
86
86
  args: [{ selector: 'ng-template[ngtPortalContent]', standalone: true }]
87
87
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ViewContainerRef, decorators: [{
@@ -196,8 +196,8 @@ class NgtPortal extends NgtSignalStore {
196
196
  ...restInputsState,
197
197
  };
198
198
  }
199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", portalState: "portalState", autoRender: "autoRender", autoRenderPriority: "autoRenderPriority" }, outputs: { beforeRender: "beforeRender" }, providers: [NgtStore], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", portalState: "portalState", autoRender: "autoRender", autoRenderPriority: "autoRenderPriority" }, outputs: { beforeRender: "beforeRender" }, providers: [NgtStore], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: `
201
201
  <ng-container #portalContentAnchor>
202
202
  <ng-container
203
203
  *ngIf="autoRender && portalContentRendered"
@@ -211,7 +211,7 @@ class NgtPortal extends NgtSignalStore {
211
211
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtPortalBeforeRender, selector: "[ngtPortalBeforeRender]", inputs: ["renderPriority", "parentScene", "parentCamera"], outputs: ["beforeRender"] }] }); }
212
212
  }
213
213
  export { NgtPortal };
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtPortal, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: NgtPortal, decorators: [{
215
215
  type: Component,
216
216
  args: [{
217
217
  selector: 'ngt-portal',
@@ -248,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
248
248
  type: ViewChild,
249
249
  args: ['portalContentAnchor', { read: ViewContainerRef, static: true }]
250
250
  }] } });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEdBSVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTlDLE1BQU0sV0FBVyxHQUFHO0lBQ2hCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsUUFBUTtJQUNS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UyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTtZQUNwQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUN4RCxHQUFHLGVBQWU7U0FDVCxDQUFDO0lBQ2xCLENBQUM7OEdBdklRLFNBQVM7a0dBQVQsU0FBUyx3T0FGUCxDQUFDLFFBQVEsQ0FBQyw2RUFnQlAsZ0JBQWdCLDJCQUFVLFdBQVcsa0pBR1QsZ0JBQWdCLGtFQWhDaEQ7Ozs7Ozs7Ozs7O0tBV1QsNERBQ1MsSUFBSSw2RkE3REwscUJBQXFCOztTQWdFckIsU0FBUzsyRkFBVCxTQUFTO2tCQWxCckIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7S0FXVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDeEI7MEVBRWdCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUdFLHFCQUFxQjtzQkFEN0IsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJMUQsbUJBQW1CO3NCQUQzQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIHR5cGUgRWxlbWVudFJlZixcbiAgICB0eXBlIEVtYmVkZGVkVmlld1JlZixcbiAgICB0eXBlIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIgfSBmcm9tICcuL2RpL2JlZm9yZS1yZW5kZXInO1xuaW1wb3J0IHsgaW5qZWN0Tmd0UmVmIH0gZnJvbSAnLi9kaS9yZWYnO1xuaW1wb3J0IHsgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCB9IGZyb20gJy4vcmVuZGVyZXIvdXRpbHMnO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zaWduYWwuc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEV2ZW50TWFuYWdlciwgTmd0UmVuZGVyU3RhdGUsIE5ndFNpemUsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuaW1wb3J0IHsgcXVldWVNaWNyb3Rhc2tJbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICcuL3V0aWxzL3RpbWluZyc7XG5pbXBvcnQgeyB1cGRhdGVDYW1lcmEgfSBmcm9tICcuL3V0aWxzL3VwZGF0ZSc7XG5cbmNvbnN0IHByaXZhdGVLZXlzID0gW1xuICAgICdnZXQnLFxuICAgICdzZXQnLFxuICAgICdzZWxlY3QnLFxuICAgICdzZXRTaXplJyxcbiAgICAnc2V0RHByJyxcbiAgICAnc2V0RnJhbWVsb29wJyxcbiAgICAnZXZlbnRzJyxcbiAgICAnaW52YWxpZGF0ZScsXG4gICAgJ2FkdmFuY2UnLFxuICAgICdzaXplJyxcbiAgICAndmlld3BvcnQnLFxuXSBhcyBjb25zdDtcbnR5cGUgUHJpdmF0ZUtleXMgPSAodHlwZW9mIHByaXZhdGVLZXlzKVtudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFBvcnRhbElucHV0cyB7XG4gICAgY29udGFpbmVyOiBFbGVtZW50UmVmPFRIUkVFLk9iamVjdDNEPiB8IFRIUkVFLk9iamVjdDNEO1xuICAgIGNhbWVyYTogRWxlbWVudFJlZjxUSFJFRS5DYW1lcmE+IHwgVEhSRUUuQ2FtZXJhO1xuICAgIHN0YXRlOiBQYXJ0aWFsPFxuICAgICAgICBPbWl0PE5ndFN0YXRlLCBQcml2YXRlS2V5cz4gJiB7XG4gICAgICAgICAgICBldmVudHM6IFBhcnRpYWw8UGljazxOZ3RFdmVudE1hbmFnZXI8YW55PiwgJ2VuYWJsZWQnIHwgJ3ByaW9yaXR5JyB8ICdjb21wdXRlJyB8ICdjb25uZWN0ZWQnPj47XG4gICAgICAgICAgICBzaXplOiBOZ3RTaXplO1xuICAgICAgICB9XG4gICAgPjtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25ndFBvcnRhbEJlZm9yZVJlbmRlcl0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsQmVmb3JlUmVuZGVyIHtcbiAgICByZWFkb25seSAjcG9ydGFsU3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgQElucHV0KCkgcmVuZGVyUHJpb3JpdHkgPSAxO1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHBhcmVudFNjZW5lITogVEhSRUUuU2NlbmU7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcGFyZW50Q2FtZXJhITogVEhSRUUuQ2FtZXJhO1xuXG4gICAgQE91dHB1dCgpIGJlZm9yZVJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0UmVuZGVyU3RhdGU+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgbGV0IG9sZENsZWFyOiBib29sZWFuO1xuICAgICAgICBxdWV1ZU1pY3JvdGFza0luSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICBpbmplY3RCZWZvcmVSZW5kZXIoXG4gICAgICAgICAgICAgICAgKHsgZGVsdGEsIGZyYW1lIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWZvcmVSZW5kZXIuZW1pdCh7IC4uLnRoaXMuI3BvcnRhbFN0b3JlLmdldCgpLCBkZWx0YSwgZnJhbWUgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZ2wsIHNjZW5lLCBjYW1lcmEgfSA9IHRoaXMuI3BvcnRhbFN0b3JlLmdldCgpO1xuICAgICAgICAgICAgICAgICAgICBvbGRDbGVhciA9IGdsLmF1dG9DbGVhcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyUHJpb3JpdHkgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIHNjZW5lIGFuZCByZW5kZXIgd2l0aCBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5hdXRvQ2xlYXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyKHRoaXMucGFyZW50U2NlbmUsIHRoaXMucGFyZW50Q2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlIGNsZWFuaW5nXG4gICAgICAgICAgICAgICAgICAgIGdsLmF1dG9DbGVhciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBnbC5jbGVhckRlcHRoKCk7XG4gICAgICAgICAgICAgICAgICAgIGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVzdG9yZVxuICAgICAgICAgICAgICAgICAgICBnbC5hdXRvQ2xlYXIgPSBvbGRDbGVhcjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgcHJpb3JpdHk6IHRoaXMucmVuZGVyUHJpb3JpdHkgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ3RQb3J0YWxDb250ZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWxDb250ZW50IHtcbiAgICBjb25zdHJ1Y3Rvcih2Y3I6IFZpZXdDb250YWluZXJSZWYsIEBTa2lwU2VsZigpIHBhcmVudFZjcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IHZjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuICAgICAgICAgICAgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0ocGFyZW50VmNyLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBkZWxldGUgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LXBvcnRhbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICNwb3J0YWxDb250ZW50QW5jaG9yPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYXV0b1JlbmRlciAmJiBwb3J0YWxDb250ZW50UmVuZGVyZWRcIlxuICAgICAgICAgICAgICAgIG5ndFBvcnRhbEJlZm9yZVJlbmRlclxuICAgICAgICAgICAgICAgIFtyZW5kZXJQcmlvcml0eV09XCJhdXRvUmVuZGVyUHJpb3JpdHlcIlxuICAgICAgICAgICAgICAgIFtwYXJlbnRTY2VuZV09XCJwYXJlbnRTY2VuZVwiXG4gICAgICAgICAgICAgICAgW3BhcmVudENhbWVyYV09XCJwYXJlbnRDYW1lcmFcIlxuICAgICAgICAgICAgICAgIChiZWZvcmVSZW5kZXIpPVwib25CZWZvcmVSZW5kZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ3RQb3J0YWxCZWZvcmVSZW5kZXJdLFxuICAgIHByb3ZpZGVyczogW05ndFN0b3JlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsIGV4dGVuZHMgTmd0U2lnbmFsU3RvcmU8Tmd0UG9ydGFsSW5wdXRzPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgc2V0IGNvbnRhaW5lcihjb250YWluZXI6IE5ndFBvcnRhbElucHV0c1snY29udGFpbmVyJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb250YWluZXIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBvcnRhbFN0YXRlKHN0YXRlOiBOZ3RQb3J0YWxJbnB1dHNbJ3N0YXRlJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzdGF0ZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBhdXRvUmVuZGVyID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBhdXRvUmVuZGVyUHJpb3JpdHkgPSAxO1xuXG4gICAgQE91dHB1dCgpIGJlZm9yZVJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8eyByb290OiBOZ3RSZW5kZXJTdGF0ZTsgcG9ydGFsOiBOZ3RSZW5kZXJTdGF0ZSB9PigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChOZ3RQb3J0YWxDb250ZW50LCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICByZWFkb25seSBwb3J0YWxDb250ZW50VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIEBWaWV3Q2hpbGQoJ3BvcnRhbENvbnRlbnRBbmNob3InLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHJlYWRvbmx5IHBvcnRhbENvbnRlbnRBbmNob3IhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgcmVhZG9ubHkgI3BhcmVudFN0b3JlID0gaW5qZWN0KE5ndFN0b3JlLCB7IHNraXBTZWxmOiB0cnVlIH0pO1xuICAgIHJlYWRvbmx5IHBhcmVudFNjZW5lID0gdGhpcy4jcGFyZW50U3RvcmUuZ2V0KCdzY2VuZScpO1xuICAgIHJlYWRvbmx5IHBhcmVudENhbWVyYSA9IHRoaXMuI3BhcmVudFN0b3JlLmdldCgnY2FtZXJhJyk7XG5cbiAgICByZWFkb25seSAjcG9ydGFsU3RvcmUgPSBpbmplY3QoTmd0U3RvcmUsIHsgc2VsZjogdHJ1ZSB9KTtcbiAgICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICByZWFkb25seSAjcmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcigpO1xuICAgIHJlYWRvbmx5ICNwb2ludGVyID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblxuICAgIHBvcnRhbENvbnRlbnRSZW5kZXJlZCA9IGZhbHNlO1xuICAgICNwb3J0YWxDb250ZW50Vmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7IGNvbnRhaW5lcjogaW5qZWN0Tmd0UmVmPFRIUkVFLlNjZW5lPihwcmVwYXJlKG5ldyBUSFJFRS5TY2VuZSgpKSkgfSk7XG4gICAgICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuI3BvcnRhbENvbnRlbnRWaWV3ICYmICF0aGlzLiNwb3J0YWxDb250ZW50Vmlldy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNwb3J0YWxDb250ZW50Vmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gdGhpcy4jcGFyZW50U3RvcmUuZ2V0KCk7XG4gICAgICAgIGNvbnN0IGlucHV0c1N0YXRlID0gdGhpcy5nZXQoKTtcblxuICAgICAgICBpZiAoIWlucHV0c1N0YXRlLnN0YXRlICYmIHRoaXMuYXV0b1JlbmRlcikge1xuICAgICAgICAgICAgaW5wdXRzU3RhdGUuc3RhdGUgPSB7IGV2ZW50czogeyBwcmlvcml0eTogdGhpcy5hdXRvUmVuZGVyUHJpb3JpdHkgKyAxIH0gfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgZXZlbnRzLCBzaXplLCAuLi5yZXN0SW5wdXRzU3RhdGUgfSA9IGlucHV0c1N0YXRlLnN0YXRlIHx8IHt9O1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclN0YXRlID0gaW5wdXRzU3RhdGUuY29udGFpbmVyO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBpcy5yZWYoY29udGFpbmVyU3RhdGUpID8gY29udGFpbmVyU3RhdGUubmF0aXZlRWxlbWVudCA6IGNvbnRhaW5lclN0YXRlO1xuXG4gICAgICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNvbnRhaW5lcik7XG4gICAgICAgIGlmICghbG9jYWxTdGF0ZS5zdG9yZSkge1xuICAgICAgICAgICAgbG9jYWxTdGF0ZS5zdG9yZSA9IHRoaXMuI3BvcnRhbFN0b3JlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4jcG9ydGFsU3RvcmUuc2V0KHtcbiAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXG4gICAgICAgICAgICBzY2VuZTogY29udGFpbmVyIGFzIFRIUkVFLlNjZW5lLFxuICAgICAgICAgICAgcmF5Y2FzdGVyOiB0aGlzLiNyYXljYXN0ZXIsXG4gICAgICAgICAgICBwb2ludGVyOiB0aGlzLiNwb2ludGVyLFxuICAgICAgICAgICAgcHJldmlvdXNTdG9yZTogdGhpcy4jcGFyZW50U3RvcmUsXG4gICAgICAgICAgICBldmVudHM6IHsgLi4ucHJldmlvdXNTdGF0ZS5ldmVudHMsIC4uLihldmVudHMgfHwge30pIH0sXG4gICAgICAgICAgICBzaXplOiB7IC4uLnByZXZpb3VzU3RhdGUuc2l6ZSwgLi4uKHNpemUgfHwge30pIH0sXG4gICAgICAgICAgICAuLi5yZXN0SW5wdXRzU3RhdGUsXG4gICAgICAgICAgICBnZXQ6IHRoaXMuI3BvcnRhbFN0b3JlLmdldC5iaW5kKHRoaXMuI3BvcnRhbFN0b3JlKSxcbiAgICAgICAgICAgIHNldDogdGhpcy4jcG9ydGFsU3RvcmUuc2V0LmJpbmQodGhpcy4jcG9ydGFsU3RvcmUpLFxuICAgICAgICAgICAgc2V0RXZlbnRzOiAoZXZlbnRzKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuI3BvcnRhbFN0b3JlLnNldCgoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBldmVudHM6IHsgLi4uc3RhdGUuZXZlbnRzLCAuLi5ldmVudHMgfSB9KSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudFN0YXRlID0gdGhpcy4jcGFyZW50U3RvcmUuc2VsZWN0KCk7XG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IHBhcmVudFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3BvcnRhbFN0b3JlLnNldCgoc3RhdGUpID0+IHRoaXMuI2luamVjdChwcmV2aW91cywgc3RhdGUpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGluamVjdG9yOiB0aGlzLiNpbmplY3RvciwgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNwb3J0YWxTdG9yZS5zZXQoKGluamVjdFN0YXRlKSA9PiB0aGlzLiNpbmplY3QodGhpcy4jcGFyZW50U3RvcmUuZ2V0KCksIGluamVjdFN0YXRlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiNwb3J0YWxDb250ZW50VmlldyA9IHRoaXMucG9ydGFsQ29udGVudEFuY2hvci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5wb3J0YWxDb250ZW50VGVtcGxhdGUpO1xuICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLiNwb3J0YWxDb250ZW50Vmlldyk7XG4gICAgICAgIHRoaXMucG9ydGFsQ29udGVudFJlbmRlcmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkJlZm9yZVJlbmRlcihwb3J0YWw6IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIHRoaXMuYmVmb3JlUmVuZGVyLmVtaXQoe1xuICAgICAgICAgICAgcm9vdDogeyAuLi50aGlzLiNwYXJlbnRTdG9yZS5nZXQoKSwgZGVsdGE6IHBvcnRhbC5kZWx0YSwgZnJhbWU6IHBvcnRhbC5mcmFtZSB9LFxuICAgICAgICAgICAgcG9ydGFsLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjaW5qZWN0KHJvb3RTdGF0ZTogTmd0U3RhdGUsIGluamVjdFN0YXRlOiBOZ3RTdGF0ZSkge1xuICAgICAgICBjb25zdCBpbnRlcnNlY3Q6IFBhcnRpYWw8Tmd0U3RhdGU+ID0geyAuLi5yb290U3RhdGUgfTtcblxuICAgICAgICBPYmplY3Qua2V5cyhpbnRlcnNlY3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHByaXZhdGVLZXlzLmluY2x1ZGVzKGtleSBhcyBQcml2YXRlS2V5cykgfHxcbiAgICAgICAgICAgICAgICByb290U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXSAhPT0gaW5qZWN0U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGludGVyc2VjdFtrZXkgYXMga2V5b2YgTmd0U3RhdGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpbnB1dHMgPSB0aGlzLmdldCgpO1xuICAgICAgICBjb25zdCB7IHNpemUsIGV2ZW50cywgLi4ucmVzdElucHV0c1N0YXRlIH0gPSBpbnB1dHMuc3RhdGUgfHwge307XG5cbiAgICAgICAgbGV0IHZpZXdwb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoaW5qZWN0U3RhdGUgJiYgc2l6ZSkge1xuICAgICAgICAgICAgY29uc3QgY2FtZXJhID0gaW5qZWN0U3RhdGUuY2FtZXJhO1xuICAgICAgICAgICAgdmlld3BvcnQgPSByb290U3RhdGUudmlld3BvcnQuZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSwgbmV3IFRIUkVFLlZlY3RvcjMoKSwgc2l6ZSk7XG4gICAgICAgICAgICBpZiAoY2FtZXJhICE9PSByb290U3RhdGUuY2FtZXJhKSB1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5pbnRlcnNlY3QsXG4gICAgICAgICAgICBzY2VuZTogaXMucmVmKGlucHV0cy5jb250YWluZXIpID8gaW5wdXRzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50IDogaW5wdXRzLmNvbnRhaW5lcixcbiAgICAgICAgICAgIHJheWNhc3RlcjogdGhpcy4jcmF5Y2FzdGVyLFxuICAgICAgICAgICAgcG9pbnRlcjogdGhpcy4jcG9pbnRlcixcbiAgICAgICAgICAgIHByZXZpb3VzU3RvcmU6IHRoaXMuI3BhcmVudFN0b3JlLFxuICAgICAgICAgICAgZXZlbnRzOiB7IC4uLnJvb3RTdGF0ZS5ldmVudHMsIC4uLihpbmplY3RTdGF0ZT8uZXZlbnRzIHx8IHt9KSwgLi4uZXZlbnRzIH0sXG4gICAgICAgICAgICBzaXplOiB7IC4uLnJvb3RTdGF0ZS5zaXplLCAuLi5zaXplIH0sXG4gICAgICAgICAgICB2aWV3cG9ydDogeyAuLi5yb290U3RhdGUudmlld3BvcnQsIC4uLih2aWV3cG9ydCB8fCB7fSkgfSxcbiAgICAgICAgICAgIC4uLnJlc3RJbnB1dHNTdGF0ZSxcbiAgICAgICAgfSBhcyBOZ3RTdGF0ZTtcbiAgICB9XG59XG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEdBSVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTlDLE1BQU0sV0FBVyxHQUFHO0lBQ2hCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsUUFBUTtJQUNSLFNBQVM7SUFDVCxRQUFRO0lBQ1IsY0FBYztJQUNkLFFBQVE7SUFDUixZQUFZO0lBQ1osU0FBUztJQUNULE1BQU07SUFDTixVQUFVO0NBQ0osQ0FBQztBQWNYLE1BQ2EscUJBQXFCO0lBQ3JCLFlBQVksQ0FBb0I7SUFRekM7UUFSUyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQyxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUlsQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBR3hELElBQUksUUFBaUIsQ0FBQztRQUN0Qix1Q0FBdUMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsa0JBQWtCLENBQ2QsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDckUsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDdEQsUUFBUSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLEVBQUU7b0JBQzNCLHNDQUFzQztvQkFDdEMsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ3BCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2xEO2dCQUNELG1CQUFtQjtnQkFDbkIsRUFBRSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3pCLFVBQVU7Z0JBQ1YsRUFBRSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDNUIsQ0FBQyxFQUNELEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FDcEMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FoQ1EscUJBQXFCO2tHQUFyQixxQkFBcUI7O1NBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7MEVBSXZELGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ3FCLFdBQVc7c0JBQXJDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLFlBQVk7c0JBQXRDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUVmLFlBQVk7c0JBQXJCLE1BQU07O0FBNEJYLE1BQ2EsZ0JBQWdCO0lBQ3pCLFlBQVksR0FBcUIsRUFBYyxTQUEyQjtRQUN0RSxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM5QyxJQUFJLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO1lBQzNDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0UsT0FBTyxXQUFXLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUNwRDtJQUNMLENBQUM7OEdBUFEsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7O1NBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLCtCQUErQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7OzBCQUVsQyxRQUFROztBQVNoRCxNQWtCYSxTQUFVLFNBQVEsY0FBK0I7SUFDMUQsSUFBYSxTQUFTLENBQUMsU0FBdUM7UUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWEsV0FBVyxDQUFDLEtBQStCO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFhUSxZQUFZLENBQXdDO0lBSXBELFlBQVksQ0FBb0M7SUFDaEQsU0FBUyxDQUFvQjtJQUM3QixLQUFLLENBQWtCO0lBRXZCLFVBQVUsQ0FBeUI7SUFDbkMsUUFBUSxDQUF1QjtJQUd4QyxrQkFBa0IsQ0FBNEI7SUFFOUM7UUFDSSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFjLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBMUJ2RSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQUV0QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFvRCxDQUFDO1FBUXJGLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELGdCQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsaUJBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRCxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkIsZUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25DLGFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV4QywwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFLMUIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDckM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2QyxXQUFXLENBQUMsS0FBSyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQzdFO1FBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxlQUFlLEVBQUUsR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUVyRSxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQzdDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUV6RixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDbkIsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7WUFDbEIsR0FBRyxhQUFhO1lBQ2hCLEtBQUssRUFBRSxTQUF3QjtZQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3RCLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUNoQyxNQUFNLEVBQUUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRTtZQUN0RCxJQUFJLEVBQUUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNoRCxHQUFHLGVBQWU7WUFDbEIsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ2xELEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNsRCxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMvRixDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9DLE1BQU0sQ0FDRixHQUFHLEVBQUU7WUFDRCxNQUFNLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDeEQsQ0FBQztRQUVGLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFzQjtRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNuQixJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDOUUsTUFBTTtTQUNULENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBbUIsRUFBRSxXQUFxQjtRQUM5QyxNQUFNLFNBQVMsR0FBc0IsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBRXRELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkMsSUFDSSxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQWtCLENBQUM7Z0JBQ3hDLFNBQVMsQ0FBQyxHQUFxQixDQUFDLEtBQUssV0FBVyxDQUFDLEdBQXFCLENBQUMsRUFDekU7Z0JBQ0UsT0FBTyxTQUFTLENBQUMsR0FBcUIsQ0FBQyxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxlQUFlLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUVoRSxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDekIsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDbEMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BGLElBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxNQUFNO2dCQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDL0Q7UUFFRCxPQUFPO1lBQ0gsR0FBRyxTQUFTO1lBQ1osS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDbkYsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QixhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDaEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFO1lBQzFFLElBQUksRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTtZQUNwQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUN4RCxHQUFHLGVBQWU7U0FDVCxDQUFDO0lBQ2xCLENBQUM7OEdBdklRLFNBQVM7a0dBQVQsU0FBUyx3T0FGUCxDQUFDLFFBQVEsQ0FBQyw2RUFnQlAsZ0JBQWdCLDJCQUFVLFdBQVcsa0pBR1QsZ0JBQWdCLGtFQWhDaEQ7Ozs7Ozs7Ozs7O0tBV1QsNERBQ1MsSUFBSSw2RkE3REwscUJBQXFCOztTQWdFckIsU0FBUzsyRkFBVCxTQUFTO2tCQWxCckIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7S0FXVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDeEI7MEVBRWdCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUdFLHFCQUFxQjtzQkFEN0IsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJMUQsbUJBQW1CO3NCQUQzQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIHR5cGUgRWxlbWVudFJlZixcbiAgICB0eXBlIEVtYmVkZGVkVmlld1JlZixcbiAgICB0eXBlIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIgfSBmcm9tICcuL2RpL2JlZm9yZS1yZW5kZXInO1xuaW1wb3J0IHsgaW5qZWN0Tmd0UmVmIH0gZnJvbSAnLi9kaS9yZWYnO1xuaW1wb3J0IHsgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCB9IGZyb20gJy4vcmVuZGVyZXIvdXRpbHMnO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zaWduYWwuc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEV2ZW50TWFuYWdlciwgTmd0UmVuZGVyU3RhdGUsIE5ndFNpemUsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnLi91dGlscy90aW1pbmcnO1xuaW1wb3J0IHsgdXBkYXRlQ2FtZXJhIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5jb25zdCBwcml2YXRlS2V5cyA9IFtcbiAgICAnZ2V0JyxcbiAgICAnc2V0JyxcbiAgICAnc2VsZWN0JyxcbiAgICAnc2V0U2l6ZScsXG4gICAgJ3NldERwcicsXG4gICAgJ3NldEZyYW1lbG9vcCcsXG4gICAgJ2V2ZW50cycsXG4gICAgJ2ludmFsaWRhdGUnLFxuICAgICdhZHZhbmNlJyxcbiAgICAnc2l6ZScsXG4gICAgJ3ZpZXdwb3J0Jyxcbl0gYXMgY29uc3Q7XG50eXBlIFByaXZhdGVLZXlzID0gKHR5cGVvZiBwcml2YXRlS2V5cylbbnVtYmVyXTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RQb3J0YWxJbnB1dHMge1xuICAgIGNvbnRhaW5lcjogRWxlbWVudFJlZjxUSFJFRS5PYmplY3QzRD4gfCBUSFJFRS5PYmplY3QzRDtcbiAgICBjYW1lcmE6IEVsZW1lbnRSZWY8VEhSRUUuQ2FtZXJhPiB8IFRIUkVFLkNhbWVyYTtcbiAgICBzdGF0ZTogUGFydGlhbDxcbiAgICAgICAgT21pdDxOZ3RTdGF0ZSwgUHJpdmF0ZUtleXM+ICYge1xuICAgICAgICAgICAgZXZlbnRzOiBQYXJ0aWFsPFBpY2s8Tmd0RXZlbnRNYW5hZ2VyPGFueT4sICdlbmFibGVkJyB8ICdwcmlvcml0eScgfCAnY29tcHV0ZScgfCAnY29ubmVjdGVkJz4+O1xuICAgICAgICAgICAgc2l6ZTogTmd0U2l6ZTtcbiAgICAgICAgfVxuICAgID47XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tuZ3RQb3J0YWxCZWZvcmVSZW5kZXJdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndFBvcnRhbEJlZm9yZVJlbmRlciB7XG4gICAgcmVhZG9ubHkgI3BvcnRhbFN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIEBJbnB1dCgpIHJlbmRlclByaW9yaXR5ID0gMTtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwYXJlbnRTY2VuZSE6IFRIUkVFLlNjZW5lO1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHBhcmVudENhbWVyYSE6IFRIUkVFLkNhbWVyYTtcblxuICAgIEBPdXRwdXQoKSBiZWZvcmVSZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE5ndFJlbmRlclN0YXRlPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGxldCBvbGRDbGVhcjogYm9vbGVhbjtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lSW5JbmplY3Rpb25Db250ZXh0KCgpID0+IHtcbiAgICAgICAgICAgIGluamVjdEJlZm9yZVJlbmRlcihcbiAgICAgICAgICAgICAgICAoeyBkZWx0YSwgZnJhbWUgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZVJlbmRlci5lbWl0KHsgLi4udGhpcy4jcG9ydGFsU3RvcmUuZ2V0KCksIGRlbHRhLCBmcmFtZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBnbCwgc2NlbmUsIGNhbWVyYSB9ID0gdGhpcy4jcG9ydGFsU3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIG9sZENsZWFyID0gZ2wuYXV0b0NsZWFyO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJQcmlvcml0eSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgc2NlbmUgYW5kIHJlbmRlciB3aXRoIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsLmF1dG9DbGVhciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBnbC5yZW5kZXIodGhpcy5wYXJlbnRTY2VuZSwgdGhpcy5wYXJlbnRDYW1lcmEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgY2xlYW5pbmdcbiAgICAgICAgICAgICAgICAgICAgZ2wuYXV0b0NsZWFyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyRGVwdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuICAgICAgICAgICAgICAgICAgICAvLyByZXN0b3JlXG4gICAgICAgICAgICAgICAgICAgIGdsLmF1dG9DbGVhciA9IG9sZENsZWFyO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeyBwcmlvcml0eTogdGhpcy5yZW5kZXJQcmlvcml0eSB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW25ndFBvcnRhbENvbnRlbnRdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndFBvcnRhbENvbnRlbnQge1xuICAgIGNvbnN0cnVjdG9yKHZjcjogVmlld0NvbnRhaW5lclJlZiwgQFNraXBTZWxmKCkgcGFyZW50VmNyOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdmNyLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGNvbW1lbnROb2RlW1NQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlRdKSB7XG4gICAgICAgICAgICBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXShwYXJlbnRWY3IuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3QtcG9ydGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250YWluZXIgI3BvcnRhbENvbnRlbnRBbmNob3I+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhdXRvUmVuZGVyICYmIHBvcnRhbENvbnRlbnRSZW5kZXJlZFwiXG4gICAgICAgICAgICAgICAgbmd0UG9ydGFsQmVmb3JlUmVuZGVyXG4gICAgICAgICAgICAgICAgW3JlbmRlclByaW9yaXR5XT1cImF1dG9SZW5kZXJQcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgW3BhcmVudFNjZW5lXT1cInBhcmVudFNjZW5lXCJcbiAgICAgICAgICAgICAgICBbcGFyZW50Q2FtZXJhXT1cInBhcmVudENhbWVyYVwiXG4gICAgICAgICAgICAgICAgKGJlZm9yZVJlbmRlcik9XCJvbkJlZm9yZVJlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5ndFBvcnRhbEJlZm9yZVJlbmRlcl0sXG4gICAgcHJvdmlkZXJzOiBbTmd0U3RvcmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWwgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RQb3J0YWxJbnB1dHM+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBzZXQgY29udGFpbmVyKGNvbnRhaW5lcjogTmd0UG9ydGFsSW5wdXRzWydjb250YWluZXInXSkge1xuICAgICAgICB0aGlzLnNldCh7IGNvbnRhaW5lciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcG9ydGFsU3RhdGUoc3RhdGU6IE5ndFBvcnRhbElucHV0c1snc3RhdGUnXSkge1xuICAgICAgICB0aGlzLnNldCh7IHN0YXRlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGF1dG9SZW5kZXIgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGF1dG9SZW5kZXJQcmlvcml0eSA9IDE7XG5cbiAgICBAT3V0cHV0KCkgYmVmb3JlUmVuZGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJvb3Q6IE5ndFJlbmRlclN0YXRlOyBwb3J0YWw6IE5ndFJlbmRlclN0YXRlIH0+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKE5ndFBvcnRhbENvbnRlbnQsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHJlYWRvbmx5IHBvcnRhbENvbnRlbnRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgQFZpZXdDaGlsZCgncG9ydGFsQ29udGVudEFuY2hvcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgcG9ydGFsQ29udGVudEFuY2hvciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICByZWFkb25seSAjcGFyZW50U3RvcmUgPSBpbmplY3QoTmd0U3RvcmUsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgcmVhZG9ubHkgcGFyZW50U2NlbmUgPSB0aGlzLiNwYXJlbnRTdG9yZS5nZXQoJ3NjZW5lJyk7XG4gICAgcmVhZG9ubHkgcGFyZW50Q2FtZXJhID0gdGhpcy4jcGFyZW50U3RvcmUuZ2V0KCdjYW1lcmEnKTtcblxuICAgIHJlYWRvbmx5ICNwb3J0YWxTdG9yZSA9IGluamVjdChOZ3RTdG9yZSwgeyBzZWxmOiB0cnVlIH0pO1xuICAgIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcmVhZG9ubHkgI3pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIHJlYWRvbmx5ICNyYXljYXN0ZXIgPSBuZXcgVEhSRUUuUmF5Y2FzdGVyKCk7XG4gICAgcmVhZG9ubHkgI3BvaW50ZXIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXG4gICAgcG9ydGFsQ29udGVudFJlbmRlcmVkID0gZmFsc2U7XG4gICAgI3BvcnRhbENvbnRlbnRWaWV3PzogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHsgY29udGFpbmVyOiBpbmplY3ROZ3RSZWY8VEhSRUUuU2NlbmU+KHByZXBhcmUobmV3IFRIUkVFLlNjZW5lKCkpKSB9KTtcbiAgICAgICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jcG9ydGFsQ29udGVudFZpZXcgJiYgIXRoaXMuI3BvcnRhbENvbnRlbnRWaWV3LmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuI3BvcnRhbENvbnRlbnRWaWV3LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSB0aGlzLiNwYXJlbnRTdG9yZS5nZXQoKTtcbiAgICAgICAgY29uc3QgaW5wdXRzU3RhdGUgPSB0aGlzLmdldCgpO1xuXG4gICAgICAgIGlmICghaW5wdXRzU3RhdGUuc3RhdGUgJiYgdGhpcy5hdXRvUmVuZGVyKSB7XG4gICAgICAgICAgICBpbnB1dHNTdGF0ZS5zdGF0ZSA9IHsgZXZlbnRzOiB7IHByaW9yaXR5OiB0aGlzLmF1dG9SZW5kZXJQcmlvcml0eSArIDEgfSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBldmVudHMsIHNpemUsIC4uLnJlc3RJbnB1dHNTdGF0ZSB9ID0gaW5wdXRzU3RhdGUuc3RhdGUgfHwge307XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyU3RhdGUgPSBpbnB1dHNTdGF0ZS5jb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGlzLnJlZihjb250YWluZXJTdGF0ZSkgPyBjb250YWluZXJTdGF0ZS5uYXRpdmVFbGVtZW50IDogY29udGFpbmVyU3RhdGU7XG5cbiAgICAgICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKCFsb2NhbFN0YXRlLnN0b3JlKSB7XG4gICAgICAgICAgICBsb2NhbFN0YXRlLnN0b3JlID0gdGhpcy4jcG9ydGFsU3RvcmU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNwb3J0YWxTdG9yZS5zZXQoe1xuICAgICAgICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcbiAgICAgICAgICAgIHNjZW5lOiBjb250YWluZXIgYXMgVEhSRUUuU2NlbmUsXG4gICAgICAgICAgICByYXljYXN0ZXI6IHRoaXMuI3JheWNhc3RlcixcbiAgICAgICAgICAgIHBvaW50ZXI6IHRoaXMuI3BvaW50ZXIsXG4gICAgICAgICAgICBwcmV2aW91c1N0b3JlOiB0aGlzLiNwYXJlbnRTdG9yZSxcbiAgICAgICAgICAgIGV2ZW50czogeyAuLi5wcmV2aW91c1N0YXRlLmV2ZW50cywgLi4uKGV2ZW50cyB8fCB7fSkgfSxcbiAgICAgICAgICAgIHNpemU6IHsgLi4ucHJldmlvdXNTdGF0ZS5zaXplLCAuLi4oc2l6ZSB8fCB7fSkgfSxcbiAgICAgICAgICAgIC4uLnJlc3RJbnB1dHNTdGF0ZSxcbiAgICAgICAgICAgIGdldDogdGhpcy4jcG9ydGFsU3RvcmUuZ2V0LmJpbmQodGhpcy4jcG9ydGFsU3RvcmUpLFxuICAgICAgICAgICAgc2V0OiB0aGlzLiNwb3J0YWxTdG9yZS5zZXQuYmluZCh0aGlzLiNwb3J0YWxTdG9yZSksXG4gICAgICAgICAgICBzZXRFdmVudHM6IChldmVudHMpID0+XG4gICAgICAgICAgICAgICAgdGhpcy4jcG9ydGFsU3RvcmUuc2V0KChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGV2ZW50czogeyAuLi5zdGF0ZS5ldmVudHMsIC4uLmV2ZW50cyB9IH0pKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcGFyZW50U3RhdGUgPSB0aGlzLiNwYXJlbnRTdG9yZS5zZWxlY3QoKTtcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzID0gcGFyZW50U3RhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jcG9ydGFsU3RvcmUuc2V0KChzdGF0ZSkgPT4gdGhpcy4jaW5qZWN0KHByZXZpb3VzLCBzdGF0ZSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgaW5qZWN0b3I6IHRoaXMuI2luamVjdG9yLCBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3BvcnRhbFN0b3JlLnNldCgoaW5qZWN0U3RhdGUpID0+IHRoaXMuI2luamVjdCh0aGlzLiNwYXJlbnRTdG9yZS5nZXQoKSwgaW5qZWN0U3RhdGUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuI3BvcnRhbENvbnRlbnRWaWV3ID0gdGhpcy5wb3J0YWxDb250ZW50QW5jaG9yLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnBvcnRhbENvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKHRoaXMuI3BvcnRhbENvbnRlbnRWaWV3KTtcbiAgICAgICAgdGhpcy5wb3J0YWxDb250ZW50UmVuZGVyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uQmVmb3JlUmVuZGVyKHBvcnRhbDogTmd0UmVuZGVyU3RhdGUpIHtcbiAgICAgICAgdGhpcy5iZWZvcmVSZW5kZXIuZW1pdCh7XG4gICAgICAgICAgICByb290OiB7IC4uLnRoaXMuI3BhcmVudFN0b3JlLmdldCgpLCBkZWx0YTogcG9ydGFsLmRlbHRhLCBmcmFtZTogcG9ydGFsLmZyYW1lIH0sXG4gICAgICAgICAgICBwb3J0YWwsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICNpbmplY3Qocm9vdFN0YXRlOiBOZ3RTdGF0ZSwgaW5qZWN0U3RhdGU6IE5ndFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGludGVyc2VjdDogUGFydGlhbDxOZ3RTdGF0ZT4gPSB7IC4uLnJvb3RTdGF0ZSB9O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKGludGVyc2VjdCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5IGFzIFByaXZhdGVLZXlzKSB8fFxuICAgICAgICAgICAgICAgIHJvb3RTdGF0ZVtrZXkgYXMga2V5b2YgTmd0U3RhdGVdICE9PSBpbmplY3RTdGF0ZVtrZXkgYXMga2V5b2YgTmd0U3RhdGVdXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgaW50ZXJzZWN0W2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHsgc2l6ZSwgZXZlbnRzLCAuLi5yZXN0SW5wdXRzU3RhdGUgfSA9IGlucHV0cy5zdGF0ZSB8fCB7fTtcblxuICAgICAgICBsZXQgdmlld3BvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChpbmplY3RTdGF0ZSAmJiBzaXplKSB7XG4gICAgICAgICAgICBjb25zdCBjYW1lcmEgPSBpbmplY3RTdGF0ZS5jYW1lcmE7XG4gICAgICAgICAgICB2aWV3cG9ydCA9IHJvb3RTdGF0ZS52aWV3cG9ydC5nZXRDdXJyZW50Vmlld3BvcnQoY2FtZXJhLCBuZXcgVEhSRUUuVmVjdG9yMygpLCBzaXplKTtcbiAgICAgICAgICAgIGlmIChjYW1lcmEgIT09IHJvb3RTdGF0ZS5jYW1lcmEpIHVwZGF0ZUNhbWVyYShjYW1lcmEsIHNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmludGVyc2VjdCxcbiAgICAgICAgICAgIHNjZW5lOiBpcy5yZWYoaW5wdXRzLmNvbnRhaW5lcikgPyBpbnB1dHMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgOiBpbnB1dHMuY29udGFpbmVyLFxuICAgICAgICAgICAgcmF5Y2FzdGVyOiB0aGlzLiNyYXljYXN0ZXIsXG4gICAgICAgICAgICBwb2ludGVyOiB0aGlzLiNwb2ludGVyLFxuICAgICAgICAgICAgcHJldmlvdXNTdG9yZTogdGhpcy4jcGFyZW50U3RvcmUsXG4gICAgICAgICAgICBldmVudHM6IHsgLi4ucm9vdFN0YXRlLmV2ZW50cywgLi4uKGluamVjdFN0YXRlPy5ldmVudHMgfHwge30pLCAuLi5ldmVudHMgfSxcbiAgICAgICAgICAgIHNpemU6IHsgLi4ucm9vdFN0YXRlLnNpemUsIC4uLnNpemUgfSxcbiAgICAgICAgICAgIHZpZXdwb3J0OiB7IC4uLnJvb3RTdGF0ZS52aWV3cG9ydCwgLi4uKHZpZXdwb3J0IHx8IHt9KSB9LFxuICAgICAgICAgICAgLi4ucmVzdElucHV0c1N0YXRlLFxuICAgICAgICB9IGFzIE5ndFN0YXRlO1xuICAgIH1cbn1cbiJdfQ==