angular-three 1.2.4 → 1.3.1

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.
@@ -167,13 +167,13 @@ export class NgtCanvas extends NgtRxStore {
167
167
  };
168
168
  }
169
169
  }
170
- NgtCanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtCanvas, deps: null, target: i0.ɵɵFactoryTarget.Component });
171
- NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "class.ngt-canvas": "this.hostClass", "style.pointerEvents": "this.pointerEvents" } }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false })], 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, ngImport: i0, template: `
170
+ NgtCanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtCanvas, deps: null, target: i0.ɵɵFactoryTarget.Component });
171
+ NgtCanvas.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "class.ngt-canvas": "this.hostClass", "style.pointerEvents": "this.pointerEvents" } }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false })], 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, ngImport: i0, template: `
172
172
  <div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
173
173
  <canvas #glCanvas style="display: block;"></canvas>
174
174
  </div>
175
175
  `, isInline: true, styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }] });
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtCanvas, decorators: [{
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtCanvas, decorators: [{
177
177
  type: Component,
178
178
  args: [{ selector: 'ngt-canvas', standalone: true, template: `
179
179
  <div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
@@ -39,9 +39,9 @@ export class NgtArgs {
39
39
  this.view.detectChanges();
40
40
  }
41
41
  }
42
- NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive });
43
- NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, ngImport: i0 });
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtArgs, decorators: [{
42
+ NgtArgs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive });
43
+ NgtArgs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, ngImport: i0 });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtArgs, decorators: [{
45
45
  type: Directive,
46
46
  args: [{ selector: '[args]', standalone: true }]
47
47
  }], ctorParameters: function () { return []; }, propDecorators: { args: [{
@@ -6,9 +6,9 @@ export class NgtRepeat extends NgForOf {
6
6
  this.ngForOf = Number.isInteger(count) ? Array.from({ length: count }, (_, i) => i) : [];
7
7
  }
8
8
  }
9
- NgtRepeat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10
- NgtRepeat.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRepeat, decorators: [{
9
+ NgtRepeat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10
+ NgtRepeat.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRepeat, decorators: [{
12
12
  type: Directive,
13
13
  args: [{ selector: '[ngFor][ngForRepeat]', standalone: true }]
14
14
  }], propDecorators: { ngForRepeat: [{
@@ -45,9 +45,9 @@ export class NgtPush {
45
45
  this.obj = undefined;
46
46
  }
47
47
  }
48
- NgtPush.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtPush, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
49
- NgtPush.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NgtPush, isStandalone: true, name: "ngtPush", pure: false });
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtPush, decorators: [{
48
+ NgtPush.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtPush, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
49
+ NgtPush.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.3", ngImport: i0, type: NgtPush, isStandalone: true, name: "ngtPush", pure: false });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtPush, decorators: [{
51
51
  type: Pipe,
52
52
  args: [{ name: 'ngtPush', pure: false, standalone: true }]
53
53
  }] });
@@ -54,9 +54,9 @@ export class NgtPortalBeforeRender {
54
54
  this.subscription?.();
55
55
  }
56
56
  }
57
- NgtPortalBeforeRender.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive });
58
- NgtPortalBeforeRender.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NgtPortalBeforeRender, isStandalone: true, selector: "ngt-portal-before-render", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 });
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
57
+ NgtPortalBeforeRender.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Directive });
58
+ NgtPortalBeforeRender.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtPortalBeforeRender, isStandalone: true, selector: "ngt-portal-before-render", inputs: { renderPriority: "renderPriority", parentScene: "parentScene", parentCamera: "parentCamera" }, outputs: { beforeRender: "beforeRender" }, ngImport: i0 });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
60
60
  type: Directive,
61
61
  args: [{
62
62
  selector: 'ngt-portal-before-render',
@@ -80,9 +80,9 @@ export class NgtPortalContent {
80
80
  }
81
81
  }
82
82
  }
83
- NgtPortalContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
84
- NgtPortalContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtPortalContent, decorators: [{
83
+ NgtPortalContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
84
+ NgtPortalContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: NgtPortalContent, isStandalone: true, selector: "ng-template[ngtPortalContent]", ngImport: i0 });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtPortalContent, decorators: [{
86
86
  type: Directive,
87
87
  args: [{ selector: 'ng-template[ngtPortalContent]', standalone: true }]
88
88
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ViewContainerRef, decorators: [{
@@ -190,8 +190,8 @@ _NgtPortal_instances = new WeakSet(), _NgtPortal_inject = function _NgtPortal_in
190
190
  ...restInputsState,
191
191
  };
192
192
  };
193
- NgtPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtPortal, deps: null, target: i0.ɵɵFactoryTarget.Component });
194
- NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", state: "state", 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: `
193
+ NgtPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtPortal, deps: null, target: i0.ɵɵFactoryTarget.Component });
194
+ NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: "container", state: "state", 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: `
195
195
  <ng-container #portalContentAnchor>
196
196
  <ngt-portal-before-render
197
197
  *ngIf="autoRender && portalContentRendered"
@@ -202,7 +202,7 @@ NgtPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
202
202
  />
203
203
  </ng-container>
204
204
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtPortalBeforeRender, selector: "ngt-portal-before-render", inputs: ["renderPriority", "parentScene", "parentCamera"], outputs: ["beforeRender"] }] });
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtPortal, decorators: [{
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtPortal, decorators: [{
206
206
  type: Component,
207
207
  args: [{
208
208
  selector: 'ngt-portal',
@@ -1,4 +1,4 @@
1
- import { ChangeDetectorRef, RendererFactory2 } from '@angular/core';
1
+ import { ChangeDetectorRef, makeEnvironmentProviders, RendererFactory2 } from '@angular/core';
2
2
  import { NgtStore } from '../stores/store';
3
3
  import { NGT_COMPOUND_PREFIXES } from './di';
4
4
  import { NgtRendererFactory } from './renderer';
@@ -9,11 +9,11 @@ export function provideNgtRenderer({ store, changeDetectorRef, compoundPrefixes
9
9
  if (!compoundPrefixes.includes('ngtp')) {
10
10
  compoundPrefixes.push('ngtp');
11
11
  }
12
- return [
12
+ return makeEnvironmentProviders([
13
13
  { provide: RendererFactory2, useClass: NgtRendererFactory },
14
14
  { provide: NgtStore, useValue: store },
15
15
  { provide: ChangeDetectorRef, useValue: changeDetectorRef },
16
16
  { provide: NGT_COMPOUND_PREFIXES, useValue: compoundPrefixes },
17
- ];
17
+ ]);
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFRaEQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixHQUFHLEVBQUUsRUFBOEI7SUFDOUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDakM7SUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3BDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQztJQUVELE9BQU87UUFDSCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7UUFDM0QsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7UUFDdEMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1FBQzNELEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTtLQUNqRSxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RTdG9yZSB9IGZyb20gJy4uL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgeyBOR1RfQ09NUE9VTkRfUFJFRklYRVMgfSBmcm9tICcuL2RpJztcbmltcG9ydCB7IE5ndFJlbmRlcmVyRmFjdG9yeSB9IGZyb20gJy4vcmVuZGVyZXInO1xuXG5leHBvcnQgdHlwZSBOZ3RSZW5kZXJlclByb3ZpZGVyT3B0aW9ucyA9IHtcbiAgICBzdG9yZTogTmd0U3RvcmU7XG4gICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuICAgIGNvbXBvdW5kUHJlZml4ZXM/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmd0UmVuZGVyZXIoeyBzdG9yZSwgY2hhbmdlRGV0ZWN0b3JSZWYsIGNvbXBvdW5kUHJlZml4ZXMgPSBbXSB9OiBOZ3RSZW5kZXJlclByb3ZpZGVyT3B0aW9ucykge1xuICAgIGlmICghY29tcG91bmRQcmVmaXhlcy5pbmNsdWRlcygnbmd0cycpKSB7XG4gICAgICAgIGNvbXBvdW5kUHJlZml4ZXMucHVzaCgnbmd0cycpO1xuICAgIH1cblxuICAgIGlmICghY29tcG91bmRQcmVmaXhlcy5pbmNsdWRlcygnbmd0cCcpKSB7XG4gICAgICAgIGNvbXBvdW5kUHJlZml4ZXMucHVzaCgnbmd0cCcpO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAgIHsgcHJvdmlkZTogUmVuZGVyZXJGYWN0b3J5MiwgdXNlQ2xhc3M6IE5ndFJlbmRlcmVyRmFjdG9yeSB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5ndFN0b3JlLCB1c2VWYWx1ZTogc3RvcmUgfSxcbiAgICAgICAgeyBwcm92aWRlOiBDaGFuZ2VEZXRlY3RvclJlZiwgdXNlVmFsdWU6IGNoYW5nZURldGVjdG9yUmVmIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdUX0NPTVBPVU5EX1BSRUZJWEVTLCB1c2VWYWx1ZTogY29tcG91bmRQcmVmaXhlcyB9LFxuICAgIF07XG59XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFRaEQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixHQUFHLEVBQUUsRUFBOEI7SUFDOUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDakM7SUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3BDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQztJQUVELE9BQU8sd0JBQXdCLENBQUM7UUFDNUIsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFO1FBQzNELEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1FBQ3RDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtRQUMzRCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUU7S0FDakUsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFN0b3JlIH0gZnJvbSAnLi4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB7IE5HVF9DT01QT1VORF9QUkVGSVhFUyB9IGZyb20gJy4vZGknO1xuaW1wb3J0IHsgTmd0UmVuZGVyZXJGYWN0b3J5IH0gZnJvbSAnLi9yZW5kZXJlcic7XG5cbmV4cG9ydCB0eXBlIE5ndFJlbmRlcmVyUHJvdmlkZXJPcHRpb25zID0ge1xuICAgIHN0b3JlOiBOZ3RTdG9yZTtcbiAgICBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICAgY29tcG91bmRQcmVmaXhlcz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ3RSZW5kZXJlcih7IHN0b3JlLCBjaGFuZ2VEZXRlY3RvclJlZiwgY29tcG91bmRQcmVmaXhlcyA9IFtdIH06IE5ndFJlbmRlcmVyUHJvdmlkZXJPcHRpb25zKSB7XG4gICAgaWYgKCFjb21wb3VuZFByZWZpeGVzLmluY2x1ZGVzKCduZ3RzJykpIHtcbiAgICAgICAgY29tcG91bmRQcmVmaXhlcy5wdXNoKCduZ3RzJyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21wb3VuZFByZWZpeGVzLmluY2x1ZGVzKCduZ3RwJykpIHtcbiAgICAgICAgY29tcG91bmRQcmVmaXhlcy5wdXNoKCduZ3RwJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgICAgIHsgcHJvdmlkZTogUmVuZGVyZXJGYWN0b3J5MiwgdXNlQ2xhc3M6IE5ndFJlbmRlcmVyRmFjdG9yeSB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5ndFN0b3JlLCB1c2VWYWx1ZTogc3RvcmUgfSxcbiAgICAgICAgeyBwcm92aWRlOiBDaGFuZ2VEZXRlY3RvclJlZiwgdXNlVmFsdWU6IGNoYW5nZURldGVjdG9yUmVmIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdUX0NPTVBPVU5EX1BSRUZJWEVTLCB1c2VWYWx1ZTogY29tcG91bmRQcmVmaXhlcyB9LFxuICAgIF0pO1xufVxuIl19
@@ -48,9 +48,9 @@ export class NgtRendererFactory {
48
48
  return renderer;
49
49
  }
50
50
  }
51
- NgtRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRendererFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
- NgtRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRendererFactory });
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRendererFactory, decorators: [{
51
+ NgtRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRendererFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
+ NgtRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRendererFactory });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRendererFactory, decorators: [{
54
54
  type: Injectable
55
55
  }] });
56
56
  export class NgtRenderer {
@@ -217,7 +217,7 @@ export class NgtRenderer {
217
217
  // refChild: NgtRendererNode
218
218
  // isMove?: boolean | undefined
219
219
  ) {
220
- if (!parent.__ngt_renderer__)
220
+ if (!parent.__ngt_renderer__ || parent === newChild)
221
221
  return;
222
222
  this.appendChild(parent, newChild);
223
223
  }
@@ -311,4 +311,4 @@ export class NgtRenderer {
311
311
  return this.delegate.data;
312
312
  }
313
313
  }
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci9yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUdoSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRXFCLDRCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyxVQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7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IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBpbmplY3QsIEluamVjdGFibGUsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiwgUmVuZGVyZXJUeXBlMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdUX0NBVEFMT0dVRSB9IGZyb20gJy4uL2RpL2NhdGFsb2d1ZSc7XG5pbXBvcnQgeyBOZ3RTdG9yZSB9IGZyb20gJy4uL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlLCBwcmVwYXJlIH0gZnJvbSAnLi4vdXRpbHMvaW5zdGFuY2UnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi91dGlscy9pcyc7XG5pbXBvcnQgeyBOR1RfQ09NUE9VTkRfUFJFRklYRVMgfSBmcm9tICcuL2RpJztcbmltcG9ydCB7IE5ndFJlbmRlcmVyQ2xhc3NJZCB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgTmd0UmVuZGVyZXJOb2RlLCBOZ3RSZW5kZXJlclN0b3JlIH0gZnJvbSAnLi9zdGF0ZSc7XG5pbXBvcnQgeyBhdHRhY2hUaHJlZUNoaWxkLCBrZWJhYlRvUGFzY2FsLCBwcm9jZXNzVGhyZWVFdmVudCwgcmVtb3ZlVGhyZWVDaGlsZCwgU1BFQ0lBTF9ET01fVEFHIH0gZnJvbSAnLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3RSZW5kZXJlckZhY3RvcnkgaW1wbGVtZW50cyBSZW5kZXJlckZhY3RvcnkyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbGVnYXRlUmVuZGVyZXJGYWN0b3J5ID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZ3VlID0gaW5qZWN0KE5HVF9DQVRBTE9HVUUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG91bmRQcmVmaXhlcyA9IGluamVjdChOR1RfQ09NUE9VTkRfUFJFRklYRVMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgcHJpdmF0ZSByZW5kZXJlck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZW5kZXJlcjI+KCk7XG5cbiAgICBjcmVhdGVSZW5kZXJlcihob3N0RWxlbWVudDogYW55LCB0eXBlOiBSZW5kZXJlclR5cGUyIHwgbnVsbCk6IFJlbmRlcmVyMiB7XG4gICAgICAgIGNvbnN0IGRlbGVnYXRlUmVuZGVyZXIgPSB0aGlzLmRlbGVnYXRlUmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKGhvc3RFbGVtZW50LCB0eXBlKTtcbiAgICAgICAgaWYgKCF0eXBlKSByZXR1cm4gZGVsZWdhdGVSZW5kZXJlcjtcblxuICAgICAgICBsZXQgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyTWFwLmdldCh0eXBlLmlkKTtcbiAgICAgICAgaWYgKHJlbmRlcmVyKSByZXR1cm4gcmVuZGVyZXI7XG5cbiAgICAgICAgaWYgKCFob3N0RWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSBuZXcgTmd0UmVuZGVyZXJTdG9yZSh7XG4gICAgICAgICAgICAgICAgc3RvcmU6IHRoaXMuc3RvcmUsXG4gICAgICAgICAgICAgICAgY2RyOiB0aGlzLmNkcixcbiAgICAgICAgICAgICAgICBjb21wb3VuZFByZWZpeGVzOiB0aGlzLmNvbXBvdW5kUHJlZml4ZXMsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQ6IHRoaXMuZG9jdW1lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlbmRlcmVyID0gbmV3IE5ndFJlbmRlcmVyKGRlbGVnYXRlUmVuZGVyZXIsIHN0b3JlLCB0aGlzLmNhdGFsb2d1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyTWFwLnNldCh0eXBlLmlkLCByZW5kZXJlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlbmRlcmVyKSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZSA9IG5ldyBOZ3RSZW5kZXJlclN0b3JlKHtcbiAgICAgICAgICAgICAgICBzdG9yZTogdGhpcy5zdG9yZSxcbiAgICAgICAgICAgICAgICBjZHI6IHRoaXMuY2RyLFxuICAgICAgICAgICAgICAgIGNvbXBvdW5kUHJlZml4ZXM6IHRoaXMuY29tcG91bmRQcmVmaXhlcyxcbiAgICAgICAgICAgICAgICBkb2N1bWVudDogdGhpcy5kb2N1bWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVuZGVyZXIgPSBuZXcgTmd0UmVuZGVyZXIoZGVsZWdhdGVSZW5kZXJlciwgc3RvcmUsIHRoaXMuY2F0YWxvZ3VlKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXJNYXAuc2V0KHR5cGUuaWQsIHJlbmRlcmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZW5kZXJlcjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZ3RSZW5kZXJlciBpbXBsZW1lbnRzIFJlbmRlcmVyMiB7XG4gICAgcHJpdmF0ZSBmaXJzdCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGVsZWdhdGU6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogTmd0UmVuZGVyZXJTdG9yZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9ndWU6IFJlY29yZDxzdHJpbmcsIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vdCA9IGZhbHNlXG4gICAgKSB7fVxuXG4gICAgY3JlYXRlRWxlbWVudChuYW1lOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChuYW1lLCBuYW1lc3BhY2UpO1xuXG4gICAgICAgIC8vIG9uIGZpcnN0IHBhc3MsIHdlIHJldHVybiB0aGUgUm9vdCBTY2VuZSBhcyB0aGUgcm9vdCBub2RlXG4gICAgICAgIGlmICh0aGlzLnJvb3QgJiYgIXRoaXMuZmlyc3QpIHtcbiAgICAgICAgICAgIHRoaXMuZmlyc3QgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgndGhyZWUnLCB0aGlzLnN0b3JlLnJvb3RTY2VuZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBoYW5kbGUgY29tcG91bmRcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUuaXNDb21wb3VuZChuYW1lKSkgcmV0dXJuIHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgnY29tcG91bmQnLCBlbGVtZW50KTtcblxuICAgICAgICAvLyBoYW5kbGUgcG9ydGFsXG4gICAgICAgIGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1BPUlRBTCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgncG9ydGFsJywgZWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBoYW5kbGUgcmF3IHZhbHVlXG4gICAgICAgIGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1ZBTFVFKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKFxuICAgICAgICAgICAgICAgICd0aHJlZScsXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7IF9fbmd0X3JlbmRlcmVyX186IHsgcmF3VmFsdWU6IHVuZGVmaW5lZCB9IH0sIHsgX19uZ3RfXzogeyBpc1JhdzogdHJ1ZSB9IH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBpbmplY3RlZEFyZ3MsIHN0b3JlIH0gPSB0aGlzLnN0b3JlLmdldENyZWF0aW9uU3RhdGUoKTtcblxuICAgICAgICAvLyBoYW5kbGUgcHJpbWl0aXZlXG4gICAgICAgIGlmIChuYW1lID09PSBTUEVDSUFMX0RPTV9UQUcuTkdUX1BSSU1JVElWRSkge1xuICAgICAgICAgICAgaWYgKCFpbmplY3RlZEFyZ3NbMF0pIHRocm93IG5ldyBFcnJvcihgW05HVF0gbmd0LXByaW1pdGl2ZSB3aXRob3V0IGFyZ3MgaXMgaW52YWxpZGApO1xuICAgICAgICAgICAgY29uc3Qgb2JqZWN0ID0gaW5qZWN0ZWRBcmdzWzBdO1xuICAgICAgICAgICAgbGV0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKG9iamVjdCk7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGxvY2FsU3RhdGUpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHByZXBhcmUob2JqZWN0LCB7IHN0b3JlLCBhcmdzOiBpbmplY3RlZEFyZ3MsIHByaW1pdGl2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShvYmplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2NhbFN0YXRlLnN0b3JlKSBsb2NhbFN0YXRlLnN0b3JlID0gc3RvcmU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCd0aHJlZScsIG9iamVjdCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aHJlZVRhZyA9IG5hbWUuc3RhcnRzV2l0aCgnbmd0JykgPyBuYW1lLnNsaWNlKDQpIDogbmFtZTtcbiAgICAgICAgY29uc3QgdGhyZWVOYW1lID0ga2ViYWJUb1Bhc2NhbCh0aHJlZVRhZyk7XG4gICAgICAgIGNvbnN0IHRocmVlVGFyZ2V0ID0gdGhpcy5jYXRhbG9ndWVbdGhyZWVOYW1lXTtcbiAgICAgICAgLy8gd2UgaGF2ZSB0aGUgVEhSRUUgY29uc3RydWN0b3IgaGVyZSwgaGFuZGxlIGl0XG4gICAgICAgIGlmICh0aHJlZVRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBwcmVwYXJlKG5ldyB0aHJlZVRhcmdldCguLi5pbmplY3RlZEFyZ3MpLCB7IHN0b3JlLCBhcmdzOiBpbmplY3RlZEFyZ3MgfSk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCd0aHJlZScsIGluc3RhbmNlKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICAgICAgICAgIGlmIChpcy5nZW9tZXRyeShpbnN0YW5jZSkpIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0YXRlLmF0dGFjaCA9IFsnZ2VvbWV0cnknXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXMubWF0ZXJpYWwoaW5zdGFuY2UpKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdGF0ZS5hdHRhY2ggPSBbJ21hdGVyaWFsJ107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuY3JlYXRlTm9kZSgnZG9tJywgZWxlbWVudCk7XG4gICAgfVxuXG4gICAgY3JlYXRlQ29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnQgPSB0aGlzLmRlbGVnYXRlLmNyZWF0ZUNvbW1lbnQodmFsdWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCdjb21tZW50JywgY29tbWVudCk7XG4gICAgfVxuXG4gICAgYXBwZW5kQ2hpbGQocGFyZW50OiBOZ3RSZW5kZXJlck5vZGUsIG5ld0NoaWxkOiBOZ3RSZW5kZXJlck5vZGUpOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETzoganVzdCBpZ25vcmUgdGV4dCBub2RlIGZvciBub3dcbiAgICAgICAgaWYgKG5ld0NoaWxkIGluc3RhbmNlb2YgVGV4dCkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldFBhcmVudChuZXdDaGlsZCwgcGFyZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcmUuc2V0UGFyZW50KG5ld0NoaWxkLCBwYXJlbnQpO1xuICAgICAgICB0aGlzLnN0b3JlLmFkZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuXG4gICAgICAgIC8vIGlmIG5ldyBjaGlsZCBpcyBhIHBvcnRhbFxuICAgICAgICBpZiAobmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdwb3J0YWwnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnByb2Nlc3NQb3J0YWxDb250YWluZXIobmV3Q2hpbGQpO1xuICAgICAgICAgICAgaWYgKG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBwYXJlbnQgaXMgYSBwb3J0YWxcbiAgICAgICAgaWYgKHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3BvcnRhbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihwYXJlbnQpO1xuICAgICAgICAgICAgaWYgKHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgYm90aCBhcmUgdGhyZWUgaW5zdGFuY2VzLCBzdHJhaWdodGZvcndhcmQgY2FzZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiZcbiAgICAgICAgICAgIG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnXG4gICAgICAgICkge1xuICAgICAgICAgICAgYXR0YWNoVGhyZWVDaGlsZChwYXJlbnQsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgIC8vIGhlcmUsIHdlIGhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIG9mIGlmIHRoZSBwYXJlbnQgaGFzIGEgY29tcG91bmRQYXJlbnQsIHdoaWNoIG1lYW5zIHRoaXMgY2hpbGQgaXMgcGFydCBvZiBhIGNvbXBvdW5kIHBhcmVudCB0ZW1wbGF0ZVxuICAgICAgICAgICAgaWYgKCFuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZF0pIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudFdpdGhDb21wb3VuZCA9IHRoaXMuc3RvcmUuZ2V0Q2xvc2VzdFBhcmVudFdpdGhDb21wb3VuZChwYXJlbnQpO1xuICAgICAgICAgICAgaWYgKCFjbG9zZXN0R3JhbmRwYXJlbnRXaXRoQ29tcG91bmQpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50V2l0aENvbXBvdW5kLCBuZXdDaGlsZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBvbmx5IHRoZSBwYXJlbnQgaXMgdGhlIFRIUkVFIGluc3RhbmNlXG4gICAgICAgIGlmIChwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcbiAgICAgICAgICAgIGlmIChuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jaGlsZHJlbl0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZW5kZXJDaGlsZCBvZiBuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jaGlsZHJlbl0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChwYXJlbnQsIHJlbmRlckNoaWxkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBwYXJlbnQgaXMgYSBjb21wb3VuZFxuICAgICAgICBpZiAocGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnKSB7XG4gICAgICAgICAgICAvLyBpZiBjb21wb3VuZCBkb2Vzbid0IGhhdmUgYSBUSFJFRSBpbnN0YW5jZSBzZXQgeWV0XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSAmJlxuICAgICAgICAgICAgICAgIG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBjaGlsZCBpcyBpbmRlZWQgYW4gbmd0Q29tcG91bmRcbiAgICAgICAgICAgICAgICBpZiAobmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0Q29tcG91bmQocGFyZW50LCBuZXdDaGlsZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90LCB3ZSB0cmFjayB0aGUgcGFyZW50ICh0aGF0IGlzIHN1cHBvc2VkbHkgdGhlIGNvbXBvdW5kIGNvbXBvbmVudCkgb24gdGhpcyB0aHJlZSBpbnN0YW5jZVxuICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kUGFyZW50XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRQYXJlbnRdID0gcGFyZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZXNldCB0aGUgY29tcG91bmQgaWYgaXQncyBjaGFuZ2VkXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdICYmXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiZcbiAgICAgICAgICAgICAgICBuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZF0gJiZcbiAgICAgICAgICAgICAgICBwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0gIT09IG5ld0NoaWxkXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNldENvbXBvdW5kKHBhcmVudCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkRmluZEdyYW5kcGFyZW50SW5zdGFuY2UgPVxuICAgICAgICAgICAgLy8gaWYgY2hpbGQgaXMgdGhyZWUgYnV0IGhhdmVuJ3QgYmVlbiBhdHRhY2hlZCB0byBhIHBhcmVudCB5ZXRcbiAgICAgICAgICAgIChuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyAmJiAhZ2V0TG9jYWxTdGF0ZShuZXdDaGlsZCkucGFyZW50KSB8fFxuICAgICAgICAgICAgLy8gb3IgYm90aCBwYXJlbnQgYW5kIGNoaWxkIGFyZSBET00gZWxlbWVudHNcbiAgICAgICAgICAgIChwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdkb20nICYmXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdkb20nKTtcblxuICAgICAgICBpZiAoc2hvdWxkRmluZEdyYW5kcGFyZW50SW5zdGFuY2UpIHtcbiAgICAgICAgICAgIC8vIHdlJ2xsIHRyeSB0byBnZXQgdGhlIGdyYW5kcGFyZW50IGluc3RhbmNlIGhlcmUgc28gdGhhdCB3ZSBjYW4gcnVuIGFwcGVuZENoaWxkIHdpdGggYm90aCBpbnN0YW5jZXNcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gdGhpcy5zdG9yZS5nZXRDbG9zZXN0UGFyZW50V2l0aEluc3RhbmNlKHBhcmVudCk7XG4gICAgICAgICAgICBpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlLCBuZXdDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRCZWZvcmUoXG4gICAgICAgIHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLFxuICAgICAgICBuZXdDaGlsZDogTmd0UmVuZGVyZXJOb2RlXG4gICAgICAgIC8vIFRPRE8gIHdlIG1pZ2h0IG5lZWQgdGhlc2U/XG4gICAgICAgIC8vIHJlZkNoaWxkOiBOZ3RSZW5kZXJlck5vZGVcbiAgICAgICAgLy8gaXNNb3ZlPzogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIXBhcmVudC5fX25ndF9yZW5kZXJlcl9fKSByZXR1cm47XG4gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQ2hpbGQocGFyZW50OiBOZ3RSZW5kZXJlck5vZGUsIG9sZENoaWxkOiBOZ3RSZW5kZXJlck5vZGUsIGlzSG9zdEVsZW1lbnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyAmJlxuICAgICAgICAgICAgb2xkQ2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZW1vdmVUaHJlZUNoaWxkKHBhcmVudCwgb2xkQ2hpbGQsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kZXN0cm95KG9sZENoaWxkLCBwYXJlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnICYmXG4gICAgICAgICAgICBwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQucGFyZW50XVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQocGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF0sIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGVzdHJveShvbGRDaGlsZCwgcGFyZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlID0gdGhpcy5zdG9yZS5nZXRDbG9zZXN0UGFyZW50V2l0aEluc3RhbmNlKHBhcmVudCk7XG4gICAgICAgIGlmIChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSwgb2xkQ2hpbGQsIGlzSG9zdEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RvcmUuZGVzdHJveShvbGRDaGlsZCwgY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UgYXMgTmd0UmVuZGVyZXJOb2RlKTtcbiAgICB9XG5cbiAgICBwYXJlbnROb2RlKG5vZGU6IE5ndFJlbmRlcmVyTm9kZSkge1xuICAgICAgICBpZiAobm9kZS5fX25ndF9yZW5kZXJlcl9fPy5bTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF0pIHJldHVybiBub2RlLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF07XG4gICAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUobm9kZSk7XG4gICAgfVxuXG4gICAgc2V0QXR0cmlidXRlKGVsOiBOZ3RSZW5kZXJlck5vZGUsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAoZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcpIHtcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdGhlIGNvbXBvdW5kIGluc3RhbmNlIHlldFxuICAgICAgICAgICAgZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuYXR0cmlidXRlc11bbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICghZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnF1ZXVlT3BlcmF0aW9uKGVsLCBbJ29wJywgKCkgPT4gdGhpcy5zZXRBdHRyaWJ1dGUoZWwsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShlbC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuYXBwbHlBdHRyaWJ1dGUoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFByb3BlcnR5KGVsOiBOZ3RSZW5kZXJlck5vZGUsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcpIHtcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdGhlIGNvbXBvdW5kIGluc3RhbmNlIHlldFxuICAgICAgICAgICAgZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQucHJvcGVydGllc11bbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICghZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnF1ZXVlT3BlcmF0aW9uKGVsLCBbJ29wJywgKCkgPT4gdGhpcy5zZXRQcm9wZXJ0eShlbCwgbmFtZSwgdmFsdWUpXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0uX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICAgICAgZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0uX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRdLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdLl9fbmd0X3JlbmRlcmVyX19bXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRQcm9wZXJ0eShlbC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSwgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmFwcGx5UHJvcGVydHkoZWwsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxpc3Rlbih0YXJnZXQ6IE5ndFJlbmRlcmVyTm9kZSwgZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gYm9vbGVhbiB8IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgICAgICAgLy8gaWYgdGFyZ2V0IGlzIERPTSBub2RlLCB0aGVuIHdlIHBhc3MgdGhhdCB0byBkZWxlZ2F0ZSBSZW5kZXJlclxuICAgICAgICBpZiAodGhpcy5zdG9yZS5pc0RPTSh0YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odGFyZ2V0LCBldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRhcmdldC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyB8fFxuICAgICAgICAgICAgKHRhcmdldC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbXBvdW5kJyAmJlxuICAgICAgICAgICAgICAgIHRhcmdldC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHRhcmdldC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSB8fCB0YXJnZXQ7XG4gICAgICAgICAgICBjb25zdCBwcmlvcml0eSA9IGdldExvY2FsU3RhdGUodGFyZ2V0KS5wcmlvcml0eTtcbiAgICAgICAgICAgIHJldHVybiBwcm9jZXNzVGhyZWVFdmVudChpbnN0YW5jZSwgcHJpb3JpdHkgfHwgMCwgZXZlbnROYW1lLCBjYWxsYmFjaywgdGhpcy5zdG9yZS5yb290Q2RyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRhcmdldC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbXBvdW5kJyAmJlxuICAgICAgICAgICAgIXRhcmdldC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucXVldWVPcGVyYXRpb24odGFyZ2V0LCBbXG4gICAgICAgICAgICAgICAgJ29wJyxcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLnN0b3JlLnF1ZXVlT3BlcmF0aW9uKHRhcmdldCwgWydjbGVhblVwJywgdGhpcy5saXN0ZW4odGFyZ2V0LCBldmVudE5hbWUsIGNhbGxiYWNrKV0pLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgIH1cblxuICAgIGdldCBkYXRhKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhO1xuICAgIH1cbiAgICBjcmVhdGVUZXh0ID0gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVUZXh0LmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG4gICAgZGVzdHJveSA9IHRoaXMuZGVsZWdhdGUuZGVzdHJveS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGRlc3Ryb3lOb2RlOiAoKG5vZGU6IGFueSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgICBzZWxlY3RSb290RWxlbWVudCA9IHRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICBuZXh0U2libGluZyA9IHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICByZW1vdmVBdHRyaWJ1dGUgPSB0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGFkZENsYXNzID0gdGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHJlbW92ZUNsYXNzID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcy5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHNldFN0eWxlID0gdGhpcy5kZWxlZ2F0ZS5zZXRTdHlsZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHJlbW92ZVN0eWxlID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVTdHlsZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIHNldFZhbHVlID0gdGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZS5iaW5kKHRoaXMuZGVsZWdhdGUpO1xufVxuIl19
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci9yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUdoSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRXFCLDRCQUF1QixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyxVQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7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c0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIGluamVjdCwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyLCBSZW5kZXJlclR5cGUyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR1RfQ0FUQUxPR1VFIH0gZnJvbSAnLi4vZGkvY2F0YWxvZ3VlJztcbmltcG9ydCB7IE5ndFN0b3JlIH0gZnJvbSAnLi4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIHByZXBhcmUgfSBmcm9tICcuLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IE5HVF9DT01QT1VORF9QUkVGSVhFUyB9IGZyb20gJy4vZGknO1xuaW1wb3J0IHsgTmd0UmVuZGVyZXJDbGFzc0lkIH0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgeyBOZ3RSZW5kZXJlck5vZGUsIE5ndFJlbmRlcmVyU3RvcmUgfSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB7IGF0dGFjaFRocmVlQ2hpbGQsIGtlYmFiVG9QYXNjYWwsIHByb2Nlc3NUaHJlZUV2ZW50LCByZW1vdmVUaHJlZUNoaWxkLCBTUEVDSUFMX0RPTV9UQUcgfSBmcm9tICcuL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndFJlbmRlcmVyRmFjdG9yeSBpbXBsZW1lbnRzIFJlbmRlcmVyRmFjdG9yeTIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVsZWdhdGVSZW5kZXJlckZhY3RvcnkgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5MiwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9ndWUgPSBpbmplY3QoTkdUX0NBVEFMT0dVRSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21wb3VuZFByZWZpeGVzID0gaW5qZWN0KE5HVF9DT01QT1VORF9QUkVGSVhFUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICBwcml2YXRlIHJlbmRlcmVyTWFwID0gbmV3IE1hcDxzdHJpbmcsIFJlbmRlcmVyMj4oKTtcblxuICAgIGNyZWF0ZVJlbmRlcmVyKGhvc3RFbGVtZW50OiBhbnksIHR5cGU6IFJlbmRlcmVyVHlwZTIgfCBudWxsKTogUmVuZGVyZXIyIHtcbiAgICAgICAgY29uc3QgZGVsZWdhdGVSZW5kZXJlciA9IHRoaXMuZGVsZWdhdGVSZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIoaG9zdEVsZW1lbnQsIHR5cGUpO1xuICAgICAgICBpZiAoIXR5cGUpIHJldHVybiBkZWxlZ2F0ZVJlbmRlcmVyO1xuXG4gICAgICAgIGxldCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXJNYXAuZ2V0KHR5cGUuaWQpO1xuICAgICAgICBpZiAocmVuZGVyZXIpIHJldHVybiByZW5kZXJlcjtcblxuICAgICAgICBpZiAoIWhvc3RFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZSA9IG5ldyBOZ3RSZW5kZXJlclN0b3JlKHtcbiAgICAgICAgICAgICAgICBzdG9yZTogdGhpcy5zdG9yZSxcbiAgICAgICAgICAgICAgICBjZHI6IHRoaXMuY2RyLFxuICAgICAgICAgICAgICAgIGNvbXBvdW5kUHJlZml4ZXM6IHRoaXMuY29tcG91bmRQcmVmaXhlcyxcbiAgICAgICAgICAgICAgICBkb2N1bWVudDogdGhpcy5kb2N1bWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVuZGVyZXIgPSBuZXcgTmd0UmVuZGVyZXIoZGVsZWdhdGVSZW5kZXJlciwgc3RvcmUsIHRoaXMuY2F0YWxvZ3VlLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXJNYXAuc2V0KHR5cGUuaWQsIHJlbmRlcmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gbmV3IE5ndFJlbmRlcmVyU3RvcmUoe1xuICAgICAgICAgICAgICAgIHN0b3JlOiB0aGlzLnN0b3JlLFxuICAgICAgICAgICAgICAgIGNkcjogdGhpcy5jZHIsXG4gICAgICAgICAgICAgICAgY29tcG91bmRQcmVmaXhlczogdGhpcy5jb21wb3VuZFByZWZpeGVzLFxuICAgICAgICAgICAgICAgIGRvY3VtZW50OiB0aGlzLmRvY3VtZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZW5kZXJlciA9IG5ldyBOZ3RSZW5kZXJlcihkZWxlZ2F0ZVJlbmRlcmVyLCBzdG9yZSwgdGhpcy5jYXRhbG9ndWUpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlck1hcC5zZXQodHlwZS5pZCwgcmVuZGVyZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlbmRlcmVyO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5ndFJlbmRlcmVyIGltcGxlbWVudHMgUmVuZGVyZXIyIHtcbiAgICBwcml2YXRlIGZpcnN0ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkZWxlZ2F0ZTogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBOZ3RSZW5kZXJlclN0b3JlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGFsb2d1ZTogUmVjb3JkPHN0cmluZywgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb290ID0gZmFsc2VcbiAgICApIHt9XG5cbiAgICBjcmVhdGVFbGVtZW50KG5hbWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KG5hbWUsIG5hbWVzcGFjZSk7XG5cbiAgICAgICAgLy8gb24gZmlyc3QgcGFzcywgd2UgcmV0dXJuIHRoZSBSb290IFNjZW5lIGFzIHRoZSByb290IG5vZGVcbiAgICAgICAgaWYgKHRoaXMucm9vdCAmJiAhdGhpcy5maXJzdCkge1xuICAgICAgICAgICAgdGhpcy5maXJzdCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCd0aHJlZScsIHRoaXMuc3RvcmUucm9vdFNjZW5lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGhhbmRsZSBjb21wb3VuZFxuICAgICAgICBpZiAodGhpcy5zdG9yZS5pc0NvbXBvdW5kKG5hbWUpKSByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCdjb21wb3VuZCcsIGVsZW1lbnQpO1xuXG4gICAgICAgIC8vIGhhbmRsZSBwb3J0YWxcbiAgICAgICAgaWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfUE9SVEFMKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCdwb3J0YWwnLCBlbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGhhbmRsZSByYXcgdmFsdWVcbiAgICAgICAgaWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfVkFMVUUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoXG4gICAgICAgICAgICAgICAgJ3RocmVlJyxcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHsgX19uZ3RfcmVuZGVyZXJfXzogeyByYXdWYWx1ZTogdW5kZWZpbmVkIH0gfSwgeyBfX25ndF9fOiB7IGlzUmF3OiB0cnVlIH0gfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGluamVjdGVkQXJncywgc3RvcmUgfSA9IHRoaXMuc3RvcmUuZ2V0Q3JlYXRpb25TdGF0ZSgpO1xuXG4gICAgICAgIC8vIGhhbmRsZSBwcmltaXRpdmVcbiAgICAgICAgaWYgKG5hbWUgPT09IFNQRUNJQUxfRE9NX1RBRy5OR1RfUFJJTUlUSVZFKSB7XG4gICAgICAgICAgICBpZiAoIWluamVjdGVkQXJnc1swXSkgdGhyb3cgbmV3IEVycm9yKGBbTkdUXSBuZ3QtcHJpbWl0aXZlIHdpdGhvdXQgYXJncyBpcyBpbnZhbGlkYCk7XG4gICAgICAgICAgICBjb25zdCBvYmplY3QgPSBpbmplY3RlZEFyZ3NbMF07XG4gICAgICAgICAgICBsZXQgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUob2JqZWN0KTtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMobG9jYWxTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcHJlcGFyZShvYmplY3QsIHsgc3RvcmUsIGFyZ3M6IGluamVjdGVkQXJncywgcHJpbWl0aXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKG9iamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWxvY2FsU3RhdGUuc3RvcmUpIGxvY2FsU3RhdGUuc3RvcmUgPSBzdG9yZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoJ3RocmVlJywgb2JqZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRocmVlVGFnID0gbmFtZS5zdGFydHNXaXRoKCduZ3QnKSA/IG5hbWUuc2xpY2UoNCkgOiBuYW1lO1xuICAgICAgICBjb25zdCB0aHJlZU5hbWUgPSBrZWJhYlRvUGFzY2FsKHRocmVlVGFnKTtcbiAgICAgICAgY29uc3QgdGhyZWVUYXJnZXQgPSB0aGlzLmNhdGFsb2d1ZVt0aHJlZU5hbWVdO1xuICAgICAgICAvLyB3ZSBoYXZlIHRoZSBUSFJFRSBjb25zdHJ1Y3RvciBoZXJlLCBoYW5kbGUgaXRcbiAgICAgICAgaWYgKHRocmVlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHByZXBhcmUobmV3IHRocmVlVGFyZ2V0KC4uLmluamVjdGVkQXJncyksIHsgc3RvcmUsIGFyZ3M6IGluamVjdGVkQXJncyB9KTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoJ3RocmVlJywgaW5zdGFuY2UpO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuICAgICAgICAgICAgaWYgKGlzLmdlb21ldHJ5KGluc3RhbmNlKSkge1xuICAgICAgICAgICAgICAgIGxvY2FsU3RhdGUuYXR0YWNoID0gWydnZW9tZXRyeSddO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpcy5tYXRlcmlhbChpbnN0YW5jZSkpIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0YXRlLmF0dGFjaCA9IFsnbWF0ZXJpYWwnXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5jcmVhdGVOb2RlKCdkb20nLCBlbGVtZW50KTtcbiAgICB9XG5cbiAgICBjcmVhdGVDb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29tbWVudCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmNyZWF0ZU5vZGUoJ2NvbW1lbnQnLCBjb21tZW50KTtcbiAgICB9XG5cbiAgICBhcHBlbmRDaGlsZChwYXJlbnQ6IE5ndFJlbmRlcmVyTm9kZSwgbmV3Q2hpbGQ6IE5ndFJlbmRlcmVyTm9kZSk6IHZvaWQge1xuICAgICAgICAvLyBUT0RPOiBqdXN0IGlnbm9yZSB0ZXh0IG5vZGUgZm9yIG5vd1xuICAgICAgICBpZiAobmV3Q2hpbGQgaW5zdGFuY2VvZiBUZXh0KSByZXR1cm47XG5cbiAgICAgICAgaWYgKG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0UGFyZW50KG5ld0NoaWxkLCBwYXJlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdG9yZS5zZXRQYXJlbnQobmV3Q2hpbGQsIHBhcmVudCk7XG4gICAgICAgIHRoaXMuc3RvcmUuYWRkQ2hpbGQocGFyZW50LCBuZXdDaGlsZCk7XG5cbiAgICAgICAgLy8gaWYgbmV3IGNoaWxkIGlzIGEgcG9ydGFsXG4gICAgICAgIGlmIChuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3BvcnRhbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucHJvY2Vzc1BvcnRhbENvbnRhaW5lcihuZXdDaGlsZCk7XG4gICAgICAgICAgICBpZiAobmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQucG9ydGFsQ29udGFpbmVyXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQocGFyZW50LCBuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHBhcmVudCBpcyBhIHBvcnRhbFxuICAgICAgICBpZiAocGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAncG9ydGFsJykge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5wcm9jZXNzUG9ydGFsQ29udGFpbmVyKHBhcmVudCk7XG4gICAgICAgICAgICBpZiAocGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnBvcnRhbENvbnRhaW5lcl0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5wb3J0YWxDb250YWluZXJdLCBuZXdDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBib3RoIGFyZSB0aHJlZSBpbnN0YW5jZXMsIHN0cmFpZ2h0Zm9yd2FyZCBjYXNlXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyAmJlxuICAgICAgICAgICAgbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBhdHRhY2hUaHJlZUNoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuICAgICAgICAgICAgLy8gaGVyZSwgd2UgaGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2YgaWYgdGhlIHBhcmVudCBoYXMgYSBjb21wb3VuZFBhcmVudCwgd2hpY2ggbWVhbnMgdGhpcyBjaGlsZCBpcyBwYXJ0IG9mIGEgY29tcG91bmQgcGFyZW50IHRlbXBsYXRlXG4gICAgICAgICAgICBpZiAoIW5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kXSkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgY2xvc2VzdEdyYW5kcGFyZW50V2l0aENvbXBvdW5kID0gdGhpcy5zdG9yZS5nZXRDbG9zZXN0UGFyZW50V2l0aENvbXBvdW5kKHBhcmVudCk7XG4gICAgICAgICAgICBpZiAoIWNsb3Nlc3RHcmFuZHBhcmVudFdpdGhDb21wb3VuZCkgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjbG9zZXN0R3JhbmRwYXJlbnRXaXRoQ29tcG91bmQsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIG9ubHkgdGhlIHBhcmVudCBpcyB0aGUgVEhSRUUgaW5zdGFuY2VcbiAgICAgICAgaWYgKHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuICAgICAgICAgICAgaWYgKG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNoaWxkcmVuXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlbmRlckNoaWxkIG9mIG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNoaWxkcmVuXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgcmVuZGVyQ2hpbGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHBhcmVudCBpcyBhIGNvbXBvdW5kXG4gICAgICAgIGlmIChwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcpIHtcbiAgICAgICAgICAgIC8vIGlmIGNvbXBvdW5kIGRvZXNuJ3QgaGF2ZSBhIFRIUkVFIGluc3RhbmNlIHNldCB5ZXRcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhcGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdICYmXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZSdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIGlmIGNoaWxkIGlzIGluZGVlZCBhbiBuZ3RDb21wb3VuZFxuICAgICAgICAgICAgICAgIGlmIChuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRDb21wb3VuZChwYXJlbnQsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3QsIHdlIHRyYWNrIHRoZSBwYXJlbnQgKHRoYXQgaXMgc3VwcG9zZWRseSB0aGUgY29tcG91bmQgY29tcG9uZW50KSBvbiB0aGlzIHRocmVlIGluc3RhbmNlXG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV3Q2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRQYXJlbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZFBhcmVudF0gPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBjb21wb3VuZCBpZiBpdCdzIGNoYW5nZWRcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0gJiZcbiAgICAgICAgICAgICAgICBuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJyAmJlxuICAgICAgICAgICAgICAgIG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kXSAmJlxuICAgICAgICAgICAgICAgIHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXSAhPT0gbmV3Q2hpbGRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0Q29tcG91bmQocGFyZW50LCBuZXdDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzaG91bGRGaW5kR3JhbmRwYXJlbnRJbnN0YW5jZSA9XG4gICAgICAgICAgICAvLyBpZiBjaGlsZCBpcyB0aHJlZSBidXQgaGF2ZW4ndCBiZWVuIGF0dGFjaGVkIHRvIGEgcGFyZW50IHlldFxuICAgICAgICAgICAgKG5ld0NoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnICYmICFnZXRMb2NhbFN0YXRlKG5ld0NoaWxkKS5wYXJlbnQpIHx8XG4gICAgICAgICAgICAvLyBvciBib3RoIHBhcmVudCBhbmQgY2hpbGQgYXJlIERPTSBlbGVtZW50c1xuICAgICAgICAgICAgKHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2RvbScgJiZcbiAgICAgICAgICAgICAgICBuZXdDaGlsZC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2RvbScpO1xuXG4gICAgICAgIGlmIChzaG91bGRGaW5kR3JhbmRwYXJlbnRJbnN0YW5jZSkge1xuICAgICAgICAgICAgLy8gd2UnbGwgdHJ5IHRvIGdldCB0aGUgZ3JhbmRwYXJlbnQgaW5zdGFuY2UgaGVyZSBzbyB0aGF0IHdlIGNhbiBydW4gYXBwZW5kQ2hpbGQgd2l0aCBib3RoIGluc3RhbmNlc1xuICAgICAgICAgICAgY29uc3QgY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UgPSB0aGlzLnN0b3JlLmdldENsb3Nlc3RQYXJlbnRXaXRoSW5zdGFuY2UocGFyZW50KTtcbiAgICAgICAgICAgIGlmIChjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydEJlZm9yZShcbiAgICAgICAgcGFyZW50OiBOZ3RSZW5kZXJlck5vZGUsXG4gICAgICAgIG5ld0NoaWxkOiBOZ3RSZW5kZXJlck5vZGVcbiAgICAgICAgLy8gVE9ETyAgd2UgbWlnaHQgbmVlZCB0aGVzZT9cbiAgICAgICAgLy8gcmVmQ2hpbGQ6IE5ndFJlbmRlcmVyTm9kZVxuICAgICAgICAvLyBpc01vdmU/OiBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICghcGFyZW50Ll9fbmd0X3JlbmRlcmVyX18gfHwgcGFyZW50ID09PSBuZXdDaGlsZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBhcmVudCwgbmV3Q2hpbGQpO1xuICAgIH1cblxuICAgIHJlbW92ZUNoaWxkKHBhcmVudDogTmd0UmVuZGVyZXJOb2RlLCBvbGRDaGlsZDogTmd0UmVuZGVyZXJOb2RlLCBpc0hvc3RFbGVtZW50PzogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXJlbnQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgJiZcbiAgICAgICAgICAgIG9sZENoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQsIG9sZENoaWxkLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGVzdHJveShvbGRDaGlsZCwgcGFyZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ2NvbXBvdW5kJyAmJlxuICAgICAgICAgICAgcGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnBhcmVudF1cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKHBhcmVudC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdLCBvbGRDaGlsZCwgaXNIb3N0RWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyZW50Ll9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRlc3Ryb3kob2xkQ2hpbGQsIHBhcmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbG9zZXN0R3JhbmRwYXJlbnRJbnN0YW5jZSA9IHRoaXMuc3RvcmUuZ2V0Q2xvc2VzdFBhcmVudFdpdGhJbnN0YW5jZShwYXJlbnQpO1xuICAgICAgICBpZiAoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQoY2xvc2VzdEdyYW5kcGFyZW50SW5zdGFuY2UsIG9sZENoaWxkLCBpc0hvc3RFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3JlLmRlc3Ryb3kob2xkQ2hpbGQsIGNsb3Nlc3RHcmFuZHBhcmVudEluc3RhbmNlIGFzIE5ndFJlbmRlcmVyTm9kZSk7XG4gICAgfVxuXG4gICAgcGFyZW50Tm9kZShub2RlOiBOZ3RSZW5kZXJlck5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuX19uZ3RfcmVuZGVyZXJfXz8uW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdKSByZXR1cm4gbm9kZS5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5wYXJlbnRdO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG5vZGUpO1xuICAgIH1cblxuICAgIHNldEF0dHJpYnV0ZShlbDogTmd0UmVuZGVyZXJOb2RlLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnKSB7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRoZSBjb21wb3VuZCBpbnN0YW5jZSB5ZXRcbiAgICAgICAgICAgIGVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmF0dHJpYnV0ZXNdW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIWVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5xdWV1ZU9wZXJhdGlvbihlbCwgWydvcCcsICgpID0+IHRoaXMuc2V0QXR0cmlidXRlKGVsLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKV0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0sIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAndGhyZWUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmFwcGx5QXR0cmlidXRlKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRQcm9wZXJ0eShlbDogTmd0UmVuZGVyZXJOb2RlLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnR5cGVdID09PSAnY29tcG91bmQnKSB7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRoZSBjb21wb3VuZCBpbnN0YW5jZSB5ZXRcbiAgICAgICAgICAgIGVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnByb3BlcnRpZXNdW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIWVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5xdWV1ZU9wZXJhdGlvbihlbCwgWydvcCcsICgpID0+IHRoaXMuc2V0UHJvcGVydHkoZWwsIG5hbWUsIHZhbHVlKV0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kXSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAgICAgIGVsLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kZWRdLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLmNvbXBvdW5kXSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5lbC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC5jb21wb3VuZGVkXS5fX25ndF9yZW5kZXJlcl9fW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0UHJvcGVydHkoZWwuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0sIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbC5fX25ndF9yZW5kZXJlcl9fW05ndFJlbmRlcmVyQ2xhc3NJZC50eXBlXSA9PT0gJ3RocmVlJykge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5hcHBseVByb3BlcnR5KGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsaXN0ZW4odGFyZ2V0OiBOZ3RSZW5kZXJlck5vZGUsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IGJvb2xlYW4gfCB2b2lkKTogKCkgPT4gdm9pZCB7XG4gICAgICAgIC8vIGlmIHRhcmdldCBpcyBET00gbm9kZSwgdGhlbiB3ZSBwYXNzIHRoYXQgdG8gZGVsZWdhdGUgUmVuZGVyZXJcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUuaXNET00odGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHRhcmdldCwgZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0YXJnZXQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICd0aHJlZScgfHxcbiAgICAgICAgICAgICh0YXJnZXQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcgJiZcbiAgICAgICAgICAgICAgICB0YXJnZXQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0pXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0YXJnZXQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF0gfHwgdGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgcHJpb3JpdHkgPSBnZXRMb2NhbFN0YXRlKHRhcmdldCkucHJpb3JpdHk7XG4gICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1RocmVlRXZlbnQoaW5zdGFuY2UsIHByaW9yaXR5IHx8IDAsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIHRoaXMuc3RvcmUucm9vdENkcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0YXJnZXQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQudHlwZV0gPT09ICdjb21wb3VuZCcgJiZcbiAgICAgICAgICAgICF0YXJnZXQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQuY29tcG91bmRlZF1cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnF1ZXVlT3BlcmF0aW9uKHRhcmdldCwgW1xuICAgICAgICAgICAgICAgICdvcCcsXG4gICAgICAgICAgICAgICAgKCkgPT4gdGhpcy5zdG9yZS5xdWV1ZU9wZXJhdGlvbih0YXJnZXQsIFsnY2xlYW5VcCcsIHRoaXMubGlzdGVuKHRhcmdldCwgZXZlbnROYW1lLCBjYWxsYmFjayldKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICB9XG5cbiAgICBnZXQgZGF0YSgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZGF0YTtcbiAgICB9XG4gICAgY3JlYXRlVGV4dCA9IHRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dC5iaW5kKHRoaXMuZGVsZWdhdGUpO1xuICAgIGRlc3Ryb3kgPSB0aGlzLmRlbGVnYXRlLmRlc3Ryb3kuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICBkZXN0cm95Tm9kZTogKChub2RlOiBhbnkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG4gICAgc2VsZWN0Um9vdEVsZW1lbnQgPSB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50LmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG4gICAgbmV4dFNpYmxpbmcgPSB0aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nLmJpbmQodGhpcy5kZWxlZ2F0ZSk7XG4gICAgcmVtb3ZlQXR0cmlidXRlID0gdGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICBhZGRDbGFzcyA9IHRoaXMuZGVsZWdhdGUuYWRkQ2xhc3MuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICByZW1vdmVDbGFzcyA9IHRoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3MuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICBzZXRTdHlsZSA9IHRoaXMuZGVsZWdhdGUuc2V0U3R5bGUuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICByZW1vdmVTdHlsZSA9IHRoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUuYmluZCh0aGlzLmRlbGVnYXRlKTtcbiAgICBzZXRWYWx1ZSA9IHRoaXMuZGVsZWdhdGUuc2V0VmFsdWUuYmluZCh0aGlzLmRlbGVnYXRlKTtcbn1cbiJdfQ==
@@ -91,9 +91,9 @@ export class NgtRxStore extends RxState {
91
91
  return this.hold(obs.pipe(tapEffect(sideEffectFn)));
92
92
  }
93
93
  }
94
- NgtRxStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRxStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
95
- NgtRxStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRxStore });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtRxStore, decorators: [{
94
+ NgtRxStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRxStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
95
+ NgtRxStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRxStore });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRxStore, decorators: [{
97
97
  type: Injectable
98
98
  }], ctorParameters: function () { return []; } });
99
99
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9zdG9yZXMvcngtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUF3QyxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRWpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQW1DLEVBQUUsQ0FBQyxTQUFTLENBQUksU0FBZSxDQUFDLENBQUM7QUFNdEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFTLFFBQTBCO0lBQ3hELElBQUksU0FBUyxHQUE2RixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDbkgsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLElBQUksSUFBSSxHQUF1QixTQUFTLENBQUM7SUFFekMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtRQUNoQyxPQUFPLEdBQUcsRUFBRTtZQUNSLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDOUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixPQUFPLEdBQUcsQ0FBUztRQUNmLElBQUksRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ3BCLElBQUksU0FBUyxJQUFJLFFBQVEsRUFBRTtnQkFDdkIsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDdEQ7WUFFRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxhQUFhLEVBQUU7Z0JBQ2YsU0FBUyxHQUFHLGFBQWEsQ0FBQzthQUM3QjtZQUVELElBQUksR0FBRyxLQUFLLENBQUM7WUFFYixJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNYLFFBQVEsR0FBRyxJQUFJLENBQUM7YUFDbkI7UUFDTCxDQUFDO1FBQ0QsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDekIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDNUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7S0FDeEIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUdELE1BQU0sT0FBTyxVQUdYLFNBQVEsT0FBaUI7SUFDdkI7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQUNSLHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBYyxDQUFDLENBQUM7UUFDekQsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQiwwR0FBMEc7UUFDMUcsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQy9CLEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQ04sc0ZBQXNGO2dCQUN0RixPQUFPLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRTtvQkFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQ2xCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7NEJBQ3JFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDOzRCQUM1RSxPQUFPLE1BQU0sQ0FBQzt3QkFDbEIsQ0FBQyxFQUFFLEVBQWtCLENBQUMsQ0FBQzt3QkFDdkIsT0FBTyxXQUFXLENBQUMsT0FBNEIsQ0FBQyxDQUFDO3FCQUNwRDtvQkFDRCxzRUFBc0U7b0JBQ3RFLE9BQU8sV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQztZQUNOLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsVUFBVTtRQUNoQixPQUFPO0lBQ1gsQ0FBQztJQUVELE1BQU0sQ0FBSSxHQUFrQixFQUFFLFlBQXlCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7dUdBckNRLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUnhTdGF0ZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlJztcbmltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi91dGlscy9pcyc7XG5cbmV4cG9ydCBjb25zdCBzdGFydFdpdGhVbmRlZmluZWQgPSA8VD4oKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+ID0+IHN0YXJ0V2l0aDxUPih1bmRlZmluZWQhIGFzIFQpO1xuXG50eXBlIEVmZmVjdEZuPFRWYWx1ZT4gPSAoXG4gICAgdmFsdWU6IFRWYWx1ZVxuKSA9PiB2b2lkIHwgdW5kZWZpbmVkIHwgKChjbGVhblVwUGFyYW1zOiB7IHByZXY6IFRWYWx1ZSB8IHVuZGVmaW5lZDsgY29tcGxldGU6IGJvb2xlYW47IGVycm9yOiBib29sZWFuIH0pID0+IHZvaWQpO1xuXG4vKipcbiAqIEFuIGV4dGVuZGVkIGB0YXBgIG9wZXJhdG9yIHRoYXQgYWNjZXB0cyBhbiBgZWZmZWN0Rm5gIHdoaWNoOlxuICogLSBydW5zIG9uIGV2ZXJ5IGBuZXh0YCBub3RpZmljYXRpb24gZnJvbSBgc291cmNlJGBcbiAqIC0gY2FuIG9wdGlvbmFsbHkgcmV0dXJuIGEgYGNsZWFuVXBgIGZ1bmN0aW9uIHRoYXRcbiAqIGludm9rZXMgZnJvbSB0aGUgMm5kIGBuZXh0YCBub3RpZmljYXRpb24gb253YXJkIGFuZCBvbiBgdW5zdWJzY3JpYmVgIChkZXN0cm95ZWQpXG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzb3VyY2UkLnBpcGUoXG4gKiAgdGFwRWZmZWN0KChzb3VyY2VWYWx1ZSkgPSB7XG4gKiAgICBjb25zdCBjYiA9ICgpID0+IHtcbiAqICAgICAgZG9TdHVmZihzb3VyY2VWYWx1ZSk7XG4gKiAgICB9O1xuICogICAgYWRkTGlzdGVuZXIoJ2V2ZW50JywgY2IpO1xuICpcbiAqICAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgIHJlbW92ZUxpc3RlbmVyKCdldmVudCcsIGNiKTtcbiAqICAgIH1cbiAqICB9KVxuICogKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YXBFZmZlY3Q8VFZhbHVlPihlZmZlY3RGbjogRWZmZWN0Rm48VFZhbHVlPik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUVmFsdWU+IHtcbiAgICBsZXQgY2xlYW51cEZuOiAoY2xlYW5VcFBhcmFtczogeyBwcmV2OiBUVmFsdWUgfCB1bmRlZmluZWQ7IGNvbXBsZXRlOiBib29sZWFuOyBlcnJvcjogYm9vbGVhbiB9KSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgbGV0IGZpcnN0UnVuID0gZmFsc2U7XG4gICAgbGV0IHByZXY6IFRWYWx1ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHRlYXJkb3duID0gKGVycm9yOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2xlYW51cEZuKSB7XG4gICAgICAgICAgICAgICAgY2xlYW51cEZuKHsgcHJldiwgY29tcGxldGU6IHRydWUsIGVycm9yIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gdGFwPFRWYWx1ZT4oe1xuICAgICAgICBuZXh0OiAodmFsdWU6IFRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNsZWFudXBGbiAmJiBmaXJzdFJ1bikge1xuICAgICAgICAgICAgICAgIGNsZWFudXBGbih7IHByZXYsIGNvbXBsZXRlOiBmYWxzZSwgZXJyb3I6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjbGVhblVwT3JWb2lkID0gZWZmZWN0Rm4odmFsdWUpO1xuICAgICAgICAgICAgaWYgKGNsZWFuVXBPclZvaWQpIHtcbiAgICAgICAgICAgICAgICBjbGVhbnVwRm4gPSBjbGVhblVwT3JWb2lkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcmV2ID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICghZmlyc3RSdW4pIHtcbiAgICAgICAgICAgICAgICBmaXJzdFJ1biA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiB0ZWFyZG93bihmYWxzZSksXG4gICAgICAgIHVuc3Vic2NyaWJlOiB0ZWFyZG93bihmYWxzZSksXG4gICAgICAgIGVycm9yOiB0ZWFyZG93bih0cnVlKSxcbiAgICB9KTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndFJ4U3RvcmU8XG4gICAgVFN0YXRlIGV4dGVuZHMgb2JqZWN0ID0gYW55LFxuICAgIFRSeFN0YXRlIGV4dGVuZHMgb2JqZWN0ID0gVFN0YXRlICYgUmVjb3JkPHN0cmluZywgYW55PlxuPiBleHRlbmRzIFJ4U3RhdGU8VFJ4U3RhdGU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLy8gc2V0IGEgZHVtbXkgcHJvcGVydHkgc28gdGhhdCBpbml0aWFsIHRoaXMuZ2V0KCkgd29uJ3QgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB0aGlzLnNldCh7IF9fbmd0X2R1bW15X186ICdfX25ndF9kdW1teV9fJyB9IGFzIFRSeFN0YXRlKTtcbiAgICAgICAgLy8gY2FsbCBpbml0aWFsaXplIHRoYXQgbWlnaHQgYmUgc2V0dXAgYnkgZGVyaXZlZCBTdG9yZXNcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgICAgIC8vIG92ZXJyaWRlIHNldCBzbyBvdXIgY29uc3VtZXJzIGRvbid0IGhhdmUgdG8gaGFuZGxlIHVuZGVmaW5lZCBmb3Igc3RhdGUgdGhhdCBhbHJlYWR5IGhhdmUgZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTZXQgPSB0aGlzLnNldC5iaW5kKHRoaXMpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3NldCcsIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFBhcmFtZXRlcnMgdHlwZSBkb2VzIG5vdCBkbyB3ZWxsIHdpdGggb3ZlcmxvYWRzIChSeFN0YXRlI3NldCkuIFNvIHdlIHVzZSBhbnlbXSBoZXJlXG4gICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEFyZyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpcy5vYmooZmlyc3RBcmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RBcmdzID0gT2JqZWN0LmVudHJpZXMoZmlyc3RBcmcpLnJlZHVjZSgobW9kZGVkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RkZWRba2V5XSA9IHZhbHVlID09PSB1bmRlZmluZWQgPyB0aGlzLmdldChrZXkgYXMga2V5b2YgVFJ4U3RhdGUpIDogdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGRlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHt9IGFzIE5ndEFueVJlY29yZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxTZXQobW9kQXJncyBhcyBQYXJ0aWFsPFRSeFN0YXRlPik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBub3Qgc3VyZSB3aHkgLi4uYXJncyBoZXJlIGRvZXNuJ3QgcGFzcyB0dXBsZSBjaGVja1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxTZXQoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplKCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWZmZWN0PFM+KG9iczogT2JzZXJ2YWJsZTxTPiwgc2lkZUVmZmVjdEZuOiBFZmZlY3RGbjxTPik6IHZvaWQge1xuICAgICAgICByZXR1cm4gdGhpcy5ob2xkKG9icy5waXBlKHRhcEVmZmVjdChzaWRlRWZmZWN0Rm4pKSk7XG4gICAgfVxufVxuIl19
@@ -355,9 +355,9 @@ export class NgtStore extends NgtRxStore {
355
355
  this.hold(this.select(), () => invalidate(this));
356
356
  }
357
357
  }
358
- NgtStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
359
- NgtStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtStore });
360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtStore, decorators: [{
358
+ NgtStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
359
+ NgtStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtStore });
360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtStore, decorators: [{
361
361
  type: Injectable
362
362
  }] });
363
363
  function computeInitialSize(canvas, defaultSize) {
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndFJ4U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9yeC1zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIE5ndEFueVJlY29yZCA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5leHBvcnQgdHlwZSBOZ3ROb25GdW5jdGlvbktleXM8VD4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVF0tPzogVFtLXSBleHRlbmRzIEZ1bmN0aW9uID8gbmV2ZXIgOiBLO1xufVtrZXlvZiBUXTtcbmV4cG9ydCB0eXBlIE5ndFByb3BlcnRpZXM8VD4gPSBQaWNrPFQsIHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyAoXzogYW55KSA9PiBhbnkgPyBuZXZlciA6IEsgfVtrZXlvZiBUXT47XG5leHBvcnQgdHlwZSBOZ3RPdmVyd3JpdGU8VCwgTz4gPSBPbWl0PFQsIE5ndE5vbkZ1bmN0aW9uS2V5czxPPj4gJiBPO1xuXG5leHBvcnQgdHlwZSBOZ3RFcXVDb25maWcgPSB7XG4gICAgLyoqIENvbXBhcmUgYXJyYXlzIGJ5IHJlZmVyZW5jZSBlcXVhbGl0eSBhID09PSBiIChkZWZhdWx0KSwgb3IgYnkgc2hhbGxvdyBlcXVhbGl0eSAqL1xuICAgIGFycmF5cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuICAgIC8qKiBDb21wYXJlIG9iamVjdHMgYnkgcmVmZXJlbmNlIGVxdWFsaXR5IGEgPT09IGIgKGRlZmF1bHQpLCBvciBieSBzaGFsbG93IGVxdWFsaXR5ICovXG4gICAgb2JqZWN0cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuICAgIC8qKiBJZiB0cnVlIHRoZSBrZXlzIGluIGJvdGggYSBhbmQgYiBtdXN0IG1hdGNoIDE6MSAoZGVmYXVsdCksIGlmIGZhbHNlIGEncyBrZXlzIG11c3QgaW50ZXJzZWN0IGIncyAqL1xuICAgIHN0cmljdD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEludGVyc2VjdGlvbiBleHRlbmRzIFRIUkVFLkludGVyc2VjdGlvbiB7XG4gICAgLyoqIFRoZSBldmVudCBzb3VyY2UgKHRoZSBvYmplY3Qgd2hpY2ggcmVnaXN0ZXJlZCB0aGUgaGFuZGxlcikgKi9cbiAgICBldmVudE9iamVjdDogVEhSRUUuT2JqZWN0M0Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0UG9pbnRlckNhcHR1cmVUYXJnZXQge1xuICAgIGludGVyc2VjdGlvbjogTmd0SW50ZXJzZWN0aW9uO1xuICAgIHRhcmdldDogRWxlbWVudDtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhID0gVEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhIHwgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmE7XG5leHBvcnQgdHlwZSBOZ3RDYW1lcmFNYW51YWwgPSBOZ3RDYW1lcmEgJiB7IG1hbnVhbD86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxUU291cmNlRXZlbnQ+IGV4dGVuZHMgTmd0SW50ZXJzZWN0aW9uIHtcbiAgICAvKiogVGhlIGV2ZW50IHNvdXJjZSAodGhlIG9iamVjdCB3aGljaCByZWdpc3RlcmVkIHRoZSBoYW5kbGVyKSAqL1xuICAgIGV2ZW50T2JqZWN0OiBUSFJFRS5PYmplY3QzRDtcbiAgICAvKiogQW4gYXJyYXkgb2YgaW50ZXJzZWN0aW9ucyAqL1xuICAgIGludGVyc2VjdGlvbnM6IE5ndEludGVyc2VjdGlvbltdO1xuICAgIC8qKiB2ZWMzLnNldChwb2ludGVyLngsIHBvaW50ZXIueSwgMCkudW5wcm9qZWN0KGNhbWVyYSkgKi9cbiAgICB1bnByb2plY3RlZFBvaW50OiBUSFJFRS5WZWN0b3IzO1xuICAgIC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG4gICAgcG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcbiAgICAvKiogRGVsdGEgYmV0d2VlbiBmaXJzdCBjbGljayBhbmQgdGhpcyBldmVudCAqL1xuICAgIGRlbHRhOiBudW1iZXI7XG4gICAgLyoqIFRoZSByYXkgdGhhdCBwaWVyY2VkIGl0ICovXG4gICAgcmF5OiBUSFJFRS5SYXk7XG4gICAgLyoqIFRoZSBjYW1lcmEgdGhhdCB3YXMgdXNlZCBieSB0aGUgcmF5Y2FzdGVyICovXG4gICAgY2FtZXJhOiBOZ3RDYW1lcmE7XG4gICAgLyoqIHN0b3BQcm9wYWdhdGlvbiB3aWxsIHN0b3AgdW5kZXJseWluZyBoYW5kbGVycyBmcm9tIGZpcmluZyAqL1xuICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcbiAgICAvKiogVGhlIG9yaWdpbmFsIGhvc3QgZXZlbnQgKi9cbiAgICBuYXRpdmVFdmVudDogVFNvdXJjZUV2ZW50O1xuICAgIC8qKiBJZiB0aGUgZXZlbnQgd2FzIHN0b3BwZWQgYnkgY2FsbGluZyBzdG9wUHJvcGFnYXRpb24gKi9cbiAgICBzdG9wcGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RUaHJlZUV2ZW50PFRFdmVudD4gPSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxURXZlbnQ+ICYgTmd0UHJvcGVydGllczxURXZlbnQ+O1xuZXhwb3J0IHR5cGUgTmd0RG9tRXZlbnQgPSBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50IHwgV2hlZWxFdmVudDtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RFdmVudHMge1xuICAgIGNsaWNrOiBFdmVudExpc3RlbmVyO1xuICAgIGNvbnRleHRtZW51OiBFdmVudExpc3RlbmVyO1xuICAgIGRibGNsaWNrOiBFdmVudExpc3RlbmVyO1xuICAgIHdoZWVsOiBFdmVudExpc3RlbmVyO1xuICAgIHBvaW50ZXJkb3duOiBFdmVudExpc3RlbmVyO1xuICAgIHBvaW50ZXJ1cDogRXZlbnRMaXN0ZW5lcjtcbiAgICBwb2ludGVybGVhdmU6IEV2ZW50TGlzdGVuZXI7XG4gICAgcG9pbnRlcm1vdmU6IEV2ZW50TGlzdGVuZXI7XG4gICAgcG9pbnRlcmNhbmNlbDogRXZlbnRMaXN0ZW5lcjtcbiAgICBsb3N0cG9pbnRlcmNhcHR1cmU6IEV2ZW50TGlzdGVuZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0RXZlbnRIYW5kbGVycyB7XG4gICAgY2xpY2s/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgY29udGV4dG1lbnU/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgZGJsY2xpY2s/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcnVwPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcmRvd24/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVyb3Zlcj86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJvdXQ/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVyZW50ZXI/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVybGVhdmU/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVybW92ZT86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJtaXNzZWQ/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgcG9pbnRlcmNhbmNlbD86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHdoZWVsPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFdoZWVsRXZlbnQ+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RGaWx0ZXJGdW5jdGlvbiA9IChpdGVtczogVEhSRUUuSW50ZXJzZWN0aW9uW10sIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPikgPT4gVEhSRUUuSW50ZXJzZWN0aW9uW107XG5cbmV4cG9ydCB0eXBlIE5ndENvbXB1dGVGdW5jdGlvbiA9IChcbiAgICBldmVudDogTmd0RG9tRXZlbnQsXG4gICAgcm9vdDogTmd0UnhTdG9yZTxOZ3RTdGF0ZT4sXG4gICAgcHJldmlvdXM/OiBOZ3RSeFN0b3JlPE5ndFN0YXRlPlxuKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEV2ZW50TWFuYWdlcjxUVGFyZ2V0ID0gYW55PiB7XG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGV2ZW50IGxheWVyIGlzIGFjdGl2ZSAqL1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIEV2ZW50IGxheWVyIHByaW9yaXR5LCBoaWdoZXIgcHJpb3JpdGl6ZWQgbGF5ZXJzIGNvbWUgZmlyc3QgYW5kIG1heSBzdG9wKC1wcm9wYWdhdGUpIGxvd2VyIGxheWVyICAqL1xuICAgIHByaW9yaXR5OiBudW1iZXI7XG4gICAgLyoqIFRoZSBjb21wdXRlIGZ1bmN0aW9uIG5lZWRzIHRvIHNldCB1cCB0aGUgcmF5Y2FzdGVyIGFuZCBhbiB4eS0gcG9pbnRlciAgKi9cbiAgICBjb21wdXRlPzogTmd0Q29tcHV0ZUZ1bmN0aW9uO1xuICAgIC8qKiBUaGUgZmlsdGVyIGNhbiByZS1vcmRlciBvciByZS1zdHJ1Y3R1cmUgdGhlIGludGVyc2VjdGlvbnMgICovXG4gICAgZmlsdGVyPzogTmd0RmlsdGVyRnVuY3Rpb247XG4gICAgLyoqIFRoZSB0YXJnZXQgbm9kZSB0aGUgZXZlbnQgbGF5ZXIgaXMgdGllZCB0byAqL1xuICAgIGNvbm5lY3RlZD86IFRUYXJnZXQ7XG4gICAgLyoqIEFsbCB0aGUgcG9pbnRlciBldmVudCBoYW5kbGVycyB0aHJvdWdoIHdoaWNoIHRoZSBob3N0IGZvcndhcmRzIG5hdGl2ZSBldmVudHMgKi9cbiAgICBoYW5kbGVycz86IE5ndEV2ZW50cztcbiAgICAvKiogQWxsb3dzIHJlLWNvbm5lY3RpbmcgdG8gYW5vdGhlciB0YXJnZXQgKi9cbiAgICBjb25uZWN0PzogKHRhcmdldDogVFRhcmdldCkgPT4gdm9pZDtcbiAgICAvKiogUmVtb3ZlcyBhbGwgZXhpc3RpbmcgZXZlbnRzIGhhbmRsZXJzIGZyb20gdGhlIHRhcmdldCAqL1xuICAgIGRpc2Nvbm5lY3Q/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFBlcmZvcm1hbmNlIHtcbiAgICAvKiogQ3VycmVudCBwZXJmb3JtYW5jZSBub3JtYWwsIGJldHdlZW4gbWluIGFuZCBtYXggKi9cbiAgICBjdXJyZW50OiBudW1iZXI7XG4gICAgLyoqIEhvdyBsb3cgdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiAwIGFuZCBtYXggKi9cbiAgICBtaW46IG51bWJlcjtcbiAgICAvKiogSG93IGhpZ2ggdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiBtaW4gYW5kIG1heCAqL1xuICAgIG1heDogbnVtYmVyO1xuICAgIC8qKiBUaW1lIHVudGlsIGN1cnJlbnQgcmV0dXJucyB0byBtYXggaW4gbXMgKi9cbiAgICBkZWJvdW5jZTogbnVtYmVyO1xuICAgIC8qKiBTZXRzIGN1cnJlbnQgdG8gbWluLCBwdXRzIHRoZSBzeXN0ZW0gaW4gcmVncmVzc2lvbiAqL1xuICAgIHJlZ3Jlc3M6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndERwciA9IG51bWJlciB8IFttaW46IG51bWJlciwgbWF4OiBudW1iZXJdO1xuZXhwb3J0IHR5cGUgTmd0U2l6ZSA9IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIHRvcDogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBOZ3RWaWV3cG9ydCA9IE5ndFNpemUgJiB7XG4gICAgLyoqIFRoZSBpbml0aWFsIHBpeGVsIHJhdGlvICovXG4gICAgaW5pdGlhbERwcjogbnVtYmVyO1xuICAgIC8qKiBDdXJyZW50IHBpeGVsIHJhdGlvICovXG4gICAgZHByOiBudW1iZXI7XG4gICAgLyoqIHNpemUud2lkdGggLyB2aWV3cG9ydC53aWR0aCAqL1xuICAgIGZhY3RvcjogbnVtYmVyO1xuICAgIC8qKiBDYW1lcmEgZGlzdGFuY2UgKi9cbiAgICBkaXN0YW5jZTogbnVtYmVyO1xuICAgIC8qKiBDYW1lcmEgYXNwZWN0IHJhdGlvOiB3aWR0aCAvIGhlaWdodCAqL1xuICAgIGFzcGVjdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RSZW5kZXJTdGF0ZSBleHRlbmRzIE5ndFN0YXRlIHtcbiAgICBkZWx0YTogbnVtYmVyO1xuICAgIGZyYW1lPzogWFJGcmFtZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RCZWZvcmVSZW5kZXJFdmVudDxUT2JqZWN0IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlPiB7XG4gICAgc3RhdGU6IE5ndFJlbmRlclN0YXRlO1xuICAgIG9iamVjdDogVE9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RCZWZvcmVSZW5kZXJSZWNvcmQge1xuICAgIGNhbGxiYWNrOiAoc3RhdGU6IE5ndFJlbmRlclN0YXRlKSA9PiB2b2lkO1xuICAgIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPjtcbiAgICBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnRlcm5hbFN0YXRlIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgcHJpb3JpdHk6IG51bWJlcjtcbiAgICBmcmFtZXM6IG51bWJlcjtcbiAgICBsYXN0RXZlbnQ6IE5ndERvbUV2ZW50O1xuICAgIGludGVyYWN0aW9uOiBUSFJFRS5PYmplY3QzRFtdO1xuICAgIGhvdmVyZWQ6IE1hcDxzdHJpbmcsIE5ndFRocmVlRXZlbnQ8Tmd0RG9tRXZlbnQ+PjtcbiAgICBzdWJzY3JpYmVyczogTmd0QmVmb3JlUmVuZGVyUmVjb3JkW107XG4gICAgY2FwdHVyZWRNYXA6IE1hcDxudW1iZXIsIE1hcDxUSFJFRS5PYmplY3QzRCwgTmd0UG9pbnRlckNhcHR1cmVUYXJnZXQ+PjtcbiAgICBpbml0aWFsQ2xpY2s6IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG4gICAgaW5pdGlhbEhpdHM6IFRIUkVFLk9iamVjdDNEW107XG4gICAgc3Vic2NyaWJlOiAoXG4gICAgICAgIGNhbGxiYWNrOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sXG4gICAgICAgIHByaW9yaXR5PzogbnVtYmVyLFxuICAgICAgICBzdG9yZT86IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+XG4gICAgKSA9PiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFN0YXRlIHtcbiAgICAvKiogU2V0IGN1cnJlbnQgc3RhdGUgKi9cbiAgICBzZXQ6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydzZXQnXTtcbiAgICAvKiogR2V0IGN1cnJlbnQgc3RhdGUgKi9cbiAgICBnZXQ6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydnZXQnXTtcbiAgICBzZWxlY3Q6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydzZWxlY3QnXTtcbiAgICAvKiogY2FudmFzIHJlYWR5IHN0YXRlICovXG4gICAgcmVhZHk6IGJvb2xlYW47XG4gICAgLyoqIFRoZSBpbnN0YW5jZSBvZiB0aGUgcmVuZGVyZXIgKi9cbiAgICBnbDogVEhSRUUuV2ViR0xSZW5kZXJlcjtcbiAgICAvKiogRGVmYXVsdCBjYW1lcmEgKi9cbiAgICBjYW1lcmE6IE5ndENhbWVyYU1hbnVhbDtcbiAgICAvKiogRGVmYXVsdCBzY2VuZSAqL1xuICAgIHNjZW5lOiBUSFJFRS5TY2VuZTtcbiAgICAvKiogRGVmYXVsdCByYXljYXN0ZXIgKi9cbiAgICByYXljYXN0ZXI6IFRIUkVFLlJheWNhc3RlcjtcbiAgICAvKiogRGVmYXVsdCBjbG9jayAqL1xuICAgIGNsb2NrOiBUSFJFRS5DbG9jaztcbiAgICAvKiogRXZlbnQgbGF5ZXIgaW50ZXJmYWNlLCBjb250YWlucyB0aGUgZXZlbnQgaGFuZGxlciBhbmQgdGhlIG5vZGUgdGhleSdyZSBjb25uZWN0ZWQgdG8gKi9cbiAgICBldmVudHM6IE5ndEV2ZW50TWFuYWdlcjtcbiAgICAvKiogWFIgaW50ZXJmYWNlICovXG4gICAgeHI6IHsgY29ubmVjdDogKCkgPT4gdm9pZDsgZGlzY29ubmVjdDogKCkgPT4gdm9pZCB9O1xuICAgIC8qKiBDdXJyZW50bHkgdXNlZCBjb250cm9scyAqL1xuICAgIGNvbnRyb2xzOiBUSFJFRS5FdmVudERpc3BhdGNoZXIgfCBudWxsO1xuICAgIC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG4gICAgcG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcbiAgICAvKiBXaGV0aGVyIHRvIGVuYWJsZSByMTM5J3MgQ29sb3JNYW5hZ2VtZW50LmxlZ2FjeU1vZGUgKi9cbiAgICBsZWdhY3k6IGJvb2xlYW47XG4gICAgLyoqIFNob3J0Y3V0IHRvIGdsLm91dHB1dEVuY29kaW5nID0gTGluZWFyRW5jb2RpbmcgKi9cbiAgICBsaW5lYXI6IGJvb2xlYW47XG4gICAgLyoqIFNob3J0Y3V0IHRvIGdsLnRvbmVNYXBwaW5nID0gTm9Ub25lbWFwcGluZyAqL1xuICAgIGZsYXQ6IGJvb2xlYW47XG4gICAgLyoqIFJlbmRlciBsb29wIGZsYWdzICovXG4gICAgZnJhbWVsb29wOiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJztcbiAgICAvKiogQWRhcHRpdmUgcGVyZm9ybWFuY2UgaW50ZXJmYWNlICovXG4gICAgcGVyZm9ybWFuY2U6IE5ndFBlcmZvcm1hbmNlO1xuICAgIC8qKiBSZWFjdGl2ZSBwaXhlbC1zaXplIG9mIHRoZSBjYW52YXMgKi9cbiAgICBzaXplOiBOZ3RTaXplO1xuICAgIC8qKiBSZWFjdGl2ZSBzaXplIG9mIHRoZSB2aWV3cG9ydCBpbiB0aHJlZWpzIHVuaXRzICovXG4gICAgdmlld3BvcnQ6IE5ndFZpZXdwb3J0ICYge1xuICAgICAgICBnZXRDdXJyZW50Vmlld3BvcnQ6IChcbiAgICAgICAgICAgIGNhbWVyYT86IE5ndENhbWVyYU1hbnVhbCxcbiAgICAgICAgICAgIHRhcmdldD86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPixcbiAgICAgICAgICAgIHNpemU/OiBOZ3RTaXplXG4gICAgICAgICkgPT4gT21pdDxOZ3RWaWV3cG9ydCwgJ2RwcicgfCAnaW5pdGlhbERwcic+O1xuICAgIH07XG4gICAgLyoqIEZsYWdzIHRoZSBjYW52YXMgZm9yIHJlbmRlciwgYnV0IGRvZXNuJ3QgcmVuZGVyIGluIGl0c2VsZiAqL1xuICAgIGludmFsaWRhdGU6IChmcmFtZXM/OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgLyoqIEFkdmFuY2UgKHJlbmRlcikgb25lIHN0ZXAgKi9cbiAgICBhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIC8qKiBTaG9ydGN1dCB0byBzZXR0aW5nIHRoZSBldmVudCBsYXllciAqL1xuICAgIHNldEV2ZW50czogKGV2ZW50czogUGFydGlhbDxOZ3RFdmVudE1hbmFnZXI8YW55Pj4pID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogU2hvcnRjdXQgdG8gbWFudWFsIHNpemluZ1xuICAgICAqL1xuICAgIHNldFNpemU6ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wPzogbnVtYmVyLCBsZWZ0PzogbnVtYmVyLCB1cGRhdGVTdHlsZT86IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgLyoqIFNob3J0Y3V0IHRvIG1hbnVhbCBzZXR0aW5nIHRoZSBwaXhlbCByYXRpbyAqL1xuICAgIHNldERwcjogKGRwcjogTmd0RHByKSA9PiB2b2lkO1xuICAgIC8qKiBTaG9ydGN1dCB0byBmcmFtZWxvb3AgZmxhZ3MgKi9cbiAgICBzZXRGcmFtZWxvb3A6IChmcmFtZWxvb3A/OiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJykgPT4gdm9pZDtcbiAgICAvKiogV2hlbiB0aGUgY2FudmFzIHdhcyBjbGlja2VkIGJ1dCBub3RoaW5nIHdhcyBoaXQgKi9cbiAgICBvblBvaW50ZXJNaXNzZWQ/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgLyoqIElmIHRoaXMgc3RhdGUgbW9kZWwgaXMgbGF5ZXJkICh2aWEgY3JlYXRlUG9ydGFsKSB0aGVuIHRoaXMgY29udGFpbnMgdGhlIHByZXZpb3VzIGxheWVyICovXG4gICAgcHJldmlvdXNTdG9yZT86IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+O1xuICAgIC8qKiBJbnRlcm5hbHMgKi9cbiAgICBpbnRlcm5hbDogTmd0SW50ZXJuYWxTdGF0ZTtcbiAgICAvKiogc2hvcnRjdXRzIGZvciBhZGQgYW5kIHJlbW92ZSBpbnRlcmFjdGlvbiAqL1xuICAgIGFkZEludGVyYWN0aW9uOiAoaW50ZXJhY3Rpb246IFRIUkVFLk9iamVjdDNEKSA9PiB2b2lkO1xuICAgIHJlbW92ZUludGVyYWN0aW9uOiAodXVpZDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RBdHRhY2hGdW5jdGlvbjxUQ2hpbGQgPSBhbnksIFRQYXJlbnQgPSBhbnk+ID0gKFxuICAgIHBhcmVudDogVFBhcmVudCxcbiAgICBjaGlsZDogVENoaWxkLFxuICAgIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPlxuKSA9PiB2b2lkIHwgKCgpID0+IHZvaWQpO1xuXG5leHBvcnQgdHlwZSBOZ3RBZnRlckF0dGFjaDxcbiAgICBUUGFyZW50IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlLFxuICAgIFRDaGlsZCBleHRlbmRzIE5ndEluc3RhbmNlTm9kZSA9IE5ndEluc3RhbmNlTm9kZVxuPiA9IHsgcGFyZW50OiBUUGFyZW50OyBub2RlOiBUQ2hpbGQgfTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnN0YW5jZUxvY2FsU3RhdGUge1xuICAgIC8qKiB0aGUgc3RhdGUgZ2V0dGVyIG9mIHRoZSBjYW52YXMgdGhhdCB0aGUgaW5zdGFuY2UgaXMgYmVpbmcgcmVuZGVyZWQgdG8gKi9cbiAgICBzdG9yZTogTmd0UnhTdG9yZTxOZ3RTdGF0ZT47XG4gICAgLy8gb2JqZWN0cyBhbmQgcGFyZW50IGFyZSB1c2VkIHdoZW4gY2hpbGRyZW4gYXJlIGFkZGVkIHdpdGggYGF0dGFjaGAgaW5zdGVhZCBvZiBiZWluZyBhZGRlZCB0byB0aGUgT2JqZWN0M0Qgc2NlbmUgZ3JhcGhcbiAgICBub25PYmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8vIG9iamVjdHMgdGhhdCBhcmUgT2JqZWN0M0RcbiAgICBvYmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8vIHNob3J0Y3V0IHRvIGFkZC9yZW1vdmUgb2JqZWN0IHRvIGxpc3RcbiAgICBhZGQ6IChpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCB0eXBlOiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycpID0+IHZvaWQ7XG4gICAgcmVtb3ZlOiAoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSwgdHlwZTogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnKSA9PiB2b2lkO1xuICAgIC8vIHBhcmVudCBiYXNlZCBvbiBhdHRhY2ggdGhyZWUgaW5zdGFuY2VcbiAgICBwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSB8IG51bGw7XG4gICAgLy8gaWYgdGhpcyBUSFJFRSBpbnN0YW5jZSBpcyBhIG5ndC1wcmltaXRpdmVcbiAgICBwcmltaXRpdmU/OiBib29sZWFuO1xuICAgIC8vIGlmIHRoaXMgVEhSRUUgb2JqZWN0IGhhcyBhbnkgZXZlbnRzIGJvdW5kIHRvIGl0XG4gICAgZXZlbnRDb3VudDogbnVtYmVyO1xuICAgIC8vIGxpc3Qgb2YgaGFuZGxlcnMgdG8gaGFuZGxlIHRoZSBldmVudHNcbiAgICBoYW5kbGVyczogUGFydGlhbDxOZ3RFdmVudEhhbmRsZXJzPjtcbiAgICAvLyBwcmV2aW91cyBhcmdzXG4gICAgYXJncz86IHVua25vd25bXTtcbiAgICAvLyBhdHRhY2ggaW5mb3JtYXRpb24gc28gdGhhdCB3ZSBjYW4gZGV0YWNoIGFzIHdlbGwgYXMgcmVzZXRcbiAgICBhdHRhY2g/OiBzdHJpbmdbXSB8IE5ndEF0dGFjaEZ1bmN0aW9uO1xuICAgIC8vIHByZXZpb3VzbHkgYXR0YWNoIGluZm9ybWF0aW9uIHNvIHdlIGNhbiByZXNldCBhcyB3ZWxsIGFzIGNsZWFuIHVwXG4gICAgcHJldmlvdXNBdHRhY2g/OiB1bmtub3duIHwgKCgpID0+IHZvaWQpO1xuICAgIC8vIGlzIHJhdyB2YWx1ZVxuICAgIGlzUmF3PzogYm9vbGVhbjtcbiAgICAvLyBwcmlvcml0eSBmb3IgYmVmb3JlIHJlbmRlclxuICAgIHByaW9yaXR5PzogbnVtYmVyO1xuICAgIC8vIGVtaXR0ZXIgYWZ0ZXIgcHJvcHMgdXBkYXRlXG4gICAgYWZ0ZXJVcGRhdGU/OiBFdmVudEVtaXR0ZXI8Tmd0SW5zdGFuY2VOb2RlPjtcbiAgICAvLyBlbWl0dGVyIGFmdGVyIGF0dGFjaGluZyB0byBwYXJlbnRcbiAgICBhZnRlckF0dGFjaD86IEV2ZW50RW1pdHRlcjxOZ3RBZnRlckF0dGFjaD47XG59XG5cbmV4cG9ydCB0eXBlIE5ndEluc3RhbmNlTm9kZTxUTm9kZSA9IGFueT4gPSBUTm9kZSAmIHtcbiAgICBfX25ndF9fOiBOZ3RJbnN0YW5jZUxvY2FsU3RhdGU7XG59ICYgTmd0QW55UmVjb3JkO1xuXG5leHBvcnQgdHlwZSBOZ3RHTFJlbmRlcmVyID0ge1xuICAgIHJlbmRlcjogKHNjZW5lOiBUSFJFRS5TY2VuZSwgY2FtZXJhOiBUSFJFRS5DYW1lcmEpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RHTE9wdGlvbnMgPVxuICAgIHwgTmd0R0xSZW5kZXJlclxuICAgIHwgKChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSA9PiBOZ3RHTFJlbmRlcmVyKVxuICAgIHwgUGFydGlhbDxOZ3RQcm9wZXJ0aWVzPFRIUkVFLldlYkdMUmVuZGVyZXI+IHwgVEhSRUUuV2ViR0xSZW5kZXJlclBhcmFtZXRlcnM+XG4gICAgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIE5ndEV4dGVuZGVkQ29sb3JzPFQ+ID0ge1xuICAgIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgVEhSRUUuQ29sb3IgfCB1bmRlZmluZWQgPyBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uIDogVFtLXTtcbn07XG5cbi8qKlxuICogSWYgKipUKiogY29udGFpbnMgYSBjb25zdHJ1Y3RvciwgQHNlZSBDb25zdHJ1Y3RvclBhcmFtZXRlcnMgbXVzdCBiZSB1c2VkLCBvdGhlcndpc2UgKipUKiouXG4gKi9cbmV4cG9ydCB0eXBlIE5ndE5vZGVBcmdzPFQ+ID0gVCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55KSA9PiBhbnkgPyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VD4gOiBUO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndE5vZGVQcm9wczxQPiB7XG4gICAgYXR0YWNoPzogc3RyaW5nW107XG4gICAgLyoqIENvbnN0cnVjdG9yIGFyZ3VtZW50cyAqL1xuICAgIGFyZ3M/OiBOZ3ROb2RlQXJnczxQPjtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Tm9kZTxULCBQPiA9IE5ndEV4dGVuZGVkQ29sb3JzPE5ndE92ZXJ3cml0ZTxQYXJ0aWFsPFQ+LCBOZ3ROb2RlUHJvcHM8UD4+PjtcbmV4cG9ydCB0eXBlIE5ndE9iamVjdDNETm9kZTxULCBQPiA9IE5ndE92ZXJ3cml0ZTxcbiAgICBOZ3ROb2RlPFQsIFA+LFxuICAgIHtcbiAgICAgICAgcG9zaXRpb24/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT47XG4gICAgICAgIHVwPzogVEhSRUUuVmVjdG9yMyB8IFBhcmFtZXRlcnM8VEhSRUUuVmVjdG9yM1snc2V0J10+O1xuICAgICAgICBzY2FsZT86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPjtcbiAgICAgICAgcm90YXRpb24/OiBUSFJFRS5FdWxlciB8IFBhcmFtZXRlcnM8VEhSRUUuRXVsZXJbJ3NldCddPjtcbiAgICAgICAgbWF0cml4PzogVEhSRUUuTWF0cml4NCB8IFBhcmFtZXRlcnM8VEhSRUUuTWF0cml4NFsnc2V0J10+O1xuICAgICAgICBxdWF0ZXJuaW9uPzogVEhSRUUuUXVhdGVybmlvbiB8IFBhcmFtZXRlcnM8VEhSRUUuUXVhdGVybmlvblsnc2V0J10+O1xuICAgICAgICBsYXllcnM/OiBUSFJFRS5MYXllcnMgfCBQYXJhbWV0ZXJzPFRIUkVFLkxheWVyc1snc2V0J10+O1xuICAgIH1cbj4gJlxuICAgIE5ndEV2ZW50SGFuZGxlcnM7XG5cbmV4cG9ydCB0eXBlIE5ndENvbmRpdGlvbmFsVHlwZTxDaGlsZCwgUGFyZW50LCBUcnV0aHksIEZhbHN5PiA9IENoaWxkIGV4dGVuZHMgUGFyZW50ID8gVHJ1dGh5IDogRmFsc3k7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0TG9hZGVyUHJvdG88VD4gZXh0ZW5kcyBUSFJFRS5Mb2FkZXIge1xuICAgIGxvYWQoXG4gICAgICAgIHVybDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICAgIG9uTG9hZD86IChyZXN1bHQ6IFQpID0+IHZvaWQsXG4gICAgICAgIG9uUHJvZ3Jlc3M/OiAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHZvaWQsXG4gICAgICAgIG9uRXJyb3I/OiAoZXZlbnQ6IEVycm9yRXZlbnQpID0+IHZvaWRcbiAgICApOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndExvYWRlckV4dGVuc2lvbnM8VExvYWRlciBleHRlbmRzIFRIUkVFLkxvYWRlciA9IFRIUkVFLkxvYWRlcj4ge1xuICAgIChsb2FkZXI6IFRMb2FkZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RMb2FkZXJSZXN1bHQ8VD4gPSBUIGV4dGVuZHMgYW55W10gPyBOZ3RMb2FkZXJQcm90bzxUW251bWJlcl0+IDogTmd0TG9hZGVyUHJvdG88VD47XG5leHBvcnQgdHlwZSBOZ3RCcmFuY2hpbmdSZXR1cm48VCA9IGFueSwgUGFyZW50ID0gYW55LCBDb2VyY2VkID0gYW55PiA9IE5ndENvbmRpdGlvbmFsVHlwZTxULCBQYXJlbnQsIENvZXJjZWQsIFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndE9iamVjdE1hcCB7XG4gICAgbm9kZXM6IHsgW25hbWU6IHN0cmluZ106IFRIUkVFLk9iamVjdDNEIH07XG4gICAgbWF0ZXJpYWxzOiB7IFtuYW1lOiBzdHJpbmddOiBUSFJFRS5NYXRlcmlhbCB9O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RDYW52YXNJbnB1dHMge1xuICAgIC8qKiBBIHRocmVlanMgcmVuZGVyZXIgaW5zdGFuY2Ugb3IgcHJvcHMgdGhhdCBnbyBpbnRvIHRoZSBkZWZhdWx0IHJlbmRlcmVyICovXG4gICAgZ2w/OiBOZ3RHTE9wdGlvbnM7XG4gICAgLyoqIERpbWVuc2lvbnMgdG8gZml0IHRoZSByZW5kZXJlciB0by4gV2lsbCBtZWFzdXJlIGNhbnZhcyBkaW1lbnNpb25zIGlmIG9taXR0ZWQgKi9cbiAgICBzaXplPzogTmd0U2l6ZTtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzIFBDRnNvZnQgc2hhZG93cy4gQ2FuIGFjY2VwdCBgZ2wuc2hhZG93TWFwYCBvcHRpb25zIGZvciBmaW5lLXR1bmluZy5cbiAgICAgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL3JlbmRlcmVycy9XZWJHTFJlbmRlcmVyLnNoYWRvd01hcFxuICAgICAqL1xuICAgIHNoYWRvd3M/OiBib29sZWFuIHwgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD47XG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhyZWUgcjEzOSBjb2xvciBtYW5hZ2VtZW50LlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNtYW51YWwvZW4vaW50cm9kdWN0aW9uL0NvbG9yLW1hbmFnZW1lbnRcbiAgICAgKi9cbiAgICBsZWdhY3k/OiBib29sZWFuO1xuICAgIC8qKiBTd2l0Y2ggb2ZmIGF1dG9tYXRpYyBzUkdCIGVuY29kaW5nIGFuZCBnYW1tYSBjb3JyZWN0aW9uICovXG4gICAgbGluZWFyPzogYm9vbGVhbjtcbiAgICAvKiogVXNlIGBOb1RvbmVNYXBwaW5nYCBpbnN0ZWFkIG9mIGBBQ0VTRmlsbWljVG9uZU1hcHBpbmdgICovXG4gICAgZmxhdD86IGJvb2xlYW47XG4gICAgLyoqIENyZWF0ZXMgYW4gb3J0aG9ncmFwaGljIGNhbWVyYSAqL1xuICAgIG9ydGhvZ3JhcGhpYz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUjNGJ3MgcmVuZGVyIG1vZGUuIFNldCB0byBgZGVtYW5kYCB0byBvbmx5IHJlbmRlciBvbiBzdGF0ZSBjaGFuZ2Ugb3IgYG5ldmVyYCB0byB0YWtlIGNvbnRyb2wuXG4gICAgICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hZHZhbmNlZC9zY2FsaW5nLXBlcmZvcm1hbmNlI29uLWRlbWFuZC1yZW5kZXJpbmdcbiAgICAgKi9cbiAgICBmcmFtZWxvb3A/OiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJztcbiAgICAvKipcbiAgICAgKiBSM0YgcGVyZm9ybWFuY2Ugb3B0aW9ucyBmb3IgYWRhcHRpdmUgcGVyZm9ybWFuY2UuXG4gICAgICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hZHZhbmNlZC9zY2FsaW5nLXBlcmZvcm1hbmNlI21vdmVtZW50LXJlZ3Jlc3Npb25cbiAgICAgKi9cbiAgICBwZXJmb3JtYW5jZT86IFBhcnRpYWw8T21pdDxOZ3RQZXJmb3JtYW5jZSwgJ3JlZ3Jlc3MnPj47XG4gICAgLyoqIFRhcmdldCBwaXhlbCByYXRpby4gQ2FuIGNsYW1wIGJldHdlZW4gYSByYW5nZTogYFttaW4sIG1heF1gICovXG4gICAgZHByPzogTmd0RHByO1xuICAgIC8qKiBQcm9wcyB0aGF0IGdvIGludG8gdGhlIGRlZmF1bHQgcmF5Y2FzdGVyICovXG4gICAgcmF5Y2FzdGVyPzogUGFydGlhbDxUSFJFRS5SYXljYXN0ZXI+O1xuICAgIC8qKiBBIGBDYW1lcmFgIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCBjYW1lcmEgKi9cbiAgICBjYW1lcmE/OiAoXG4gICAgICAgIHwgTmd0Q2FtZXJhXG4gICAgICAgIHwgUGFydGlhbDxcbiAgICAgICAgICAgICAgTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkNhbWVyYSwgdHlwZW9mIFRIUkVFLkNhbWVyYT4gJlxuICAgICAgICAgICAgICAgICAgTmd0T2JqZWN0M0ROb2RlPFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhLCB0eXBlb2YgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmE+ICZcbiAgICAgICAgICAgICAgICAgIE5ndE9iamVjdDNETm9kZTxUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEsIHR5cGVvZiBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmE+XG4gICAgICAgICAgPlxuICAgICkgJiB7XG4gICAgICAgIC8qKiBGbGFncyB0aGUgY2FtZXJhIGFzIG1hbnVhbCwgcHV0dGluZyBwcm9qZWN0aW9uIGludG8geW91ciBvd24gaGFuZHMgKi9cbiAgICAgICAgbWFudWFsPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKiBBbiBSM0YgZXZlbnQgbWFuYWdlciB0byBtYW5hZ2UgZWxlbWVudHMnIHBvaW50ZXIgZXZlbnRzICovXG4gICAgZXZlbnRzPzogKHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPikgPT4gTmd0RXZlbnRNYW5hZ2VyPEhUTUxFbGVtZW50PjtcbiAgICAvKiogVGhlIHRhcmdldCB3aGVyZSBldmVudHMgYXJlIGJlaW5nIHN1YnNjcmliZWQgdG8sIGRlZmF1bHQ6IHRoZSBkaXYgdGhhdCB3cmFwcyBjYW52YXMgKi9cbiAgICBldmVudFNvdXJjZT86IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgLyoqIFRoZSBldmVudCBwcmVmaXggdGhhdCBpcyBjYXN0IGludG8gY2FudmFzIHBvaW50ZXIgeC95IGV2ZW50cywgZGVmYXVsdDogXCJvZmZzZXRcIiAqL1xuICAgIGV2ZW50UHJlZml4PzogJ29mZnNldCcgfCAnY2xpZW50JyB8ICdwYWdlJyB8ICdsYXllcicgfCAnc2NyZWVuJztcbiAgICAvKiogRGVmYXVsdCBjb29yZGluYXRlIGZvciB0aGUgY2FtZXJhIHRvIGxvb2sgYXQgKi9cbiAgICBsb29rQXQ/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndFJ4U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9yeC1zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIE5ndEFueVJlY29yZCA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5leHBvcnQgdHlwZSBOZ3ROb25GdW5jdGlvbktleXM8VD4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVF0tPzogVFtLXSBleHRlbmRzIEZ1bmN0aW9uID8gbmV2ZXIgOiBLO1xufVtrZXlvZiBUXTtcbmV4cG9ydCB0eXBlIE5ndFByb3BlcnRpZXM8VD4gPSBQaWNrPFQsIHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyAoXzogYW55KSA9PiBhbnkgPyBuZXZlciA6IEsgfVtrZXlvZiBUXT47XG5leHBvcnQgdHlwZSBOZ3RPdmVyd3JpdGU8VCwgTz4gPSBPbWl0PFQsIE5ndE5vbkZ1bmN0aW9uS2V5czxPPj4gJiBPO1xuXG5leHBvcnQgdHlwZSBOZ3RFcXVDb25maWcgPSB7XG4gICAgLyoqIENvbXBhcmUgYXJyYXlzIGJ5IHJlZmVyZW5jZSBlcXVhbGl0eSBhID09PSBiIChkZWZhdWx0KSwgb3IgYnkgc2hhbGxvdyBlcXVhbGl0eSAqL1xuICAgIGFycmF5cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuICAgIC8qKiBDb21wYXJlIG9iamVjdHMgYnkgcmVmZXJlbmNlIGVxdWFsaXR5IGEgPT09IGIgKGRlZmF1bHQpLCBvciBieSBzaGFsbG93IGVxdWFsaXR5ICovXG4gICAgb2JqZWN0cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuICAgIC8qKiBJZiB0cnVlIHRoZSBrZXlzIGluIGJvdGggYSBhbmQgYiBtdXN0IG1hdGNoIDE6MSAoZGVmYXVsdCksIGlmIGZhbHNlIGEncyBrZXlzIG11c3QgaW50ZXJzZWN0IGIncyAqL1xuICAgIHN0cmljdD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEludGVyc2VjdGlvbiBleHRlbmRzIFRIUkVFLkludGVyc2VjdGlvbiB7XG4gICAgLyoqIFRoZSBldmVudCBzb3VyY2UgKHRoZSBvYmplY3Qgd2hpY2ggcmVnaXN0ZXJlZCB0aGUgaGFuZGxlcikgKi9cbiAgICBldmVudE9iamVjdDogVEhSRUUuT2JqZWN0M0Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0UG9pbnRlckNhcHR1cmVUYXJnZXQge1xuICAgIGludGVyc2VjdGlvbjogTmd0SW50ZXJzZWN0aW9uO1xuICAgIHRhcmdldDogRWxlbWVudDtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhID0gVEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhIHwgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmE7XG5leHBvcnQgdHlwZSBOZ3RDYW1lcmFNYW51YWwgPSBOZ3RDYW1lcmEgJiB7IG1hbnVhbD86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxUU291cmNlRXZlbnQ+IGV4dGVuZHMgTmd0SW50ZXJzZWN0aW9uIHtcbiAgICAvKiogVGhlIGV2ZW50IHNvdXJjZSAodGhlIG9iamVjdCB3aGljaCByZWdpc3RlcmVkIHRoZSBoYW5kbGVyKSAqL1xuICAgIGV2ZW50T2JqZWN0OiBUSFJFRS5PYmplY3QzRDtcbiAgICAvKiogQW4gYXJyYXkgb2YgaW50ZXJzZWN0aW9ucyAqL1xuICAgIGludGVyc2VjdGlvbnM6IE5ndEludGVyc2VjdGlvbltdO1xuICAgIC8qKiB2ZWMzLnNldChwb2ludGVyLngsIHBvaW50ZXIueSwgMCkudW5wcm9qZWN0KGNhbWVyYSkgKi9cbiAgICB1bnByb2plY3RlZFBvaW50OiBUSFJFRS5WZWN0b3IzO1xuICAgIC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG4gICAgcG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcbiAgICAvKiogRGVsdGEgYmV0d2VlbiBmaXJzdCBjbGljayBhbmQgdGhpcyBldmVudCAqL1xuICAgIGRlbHRhOiBudW1iZXI7XG4gICAgLyoqIFRoZSByYXkgdGhhdCBwaWVyY2VkIGl0ICovXG4gICAgcmF5OiBUSFJFRS5SYXk7XG4gICAgLyoqIFRoZSBjYW1lcmEgdGhhdCB3YXMgdXNlZCBieSB0aGUgcmF5Y2FzdGVyICovXG4gICAgY2FtZXJhOiBOZ3RDYW1lcmE7XG4gICAgLyoqIHN0b3BQcm9wYWdhdGlvbiB3aWxsIHN0b3AgdW5kZXJseWluZyBoYW5kbGVycyBmcm9tIGZpcmluZyAqL1xuICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcbiAgICAvKiogVGhlIG9yaWdpbmFsIGhvc3QgZXZlbnQgKi9cbiAgICBuYXRpdmVFdmVudDogVFNvdXJjZUV2ZW50O1xuICAgIC8qKiBJZiB0aGUgZXZlbnQgd2FzIHN0b3BwZWQgYnkgY2FsbGluZyBzdG9wUHJvcGFnYXRpb24gKi9cbiAgICBzdG9wcGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RUaHJlZUV2ZW50PFRFdmVudD4gPSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxURXZlbnQ+ICYgTmd0UHJvcGVydGllczxURXZlbnQ+O1xuZXhwb3J0IHR5cGUgTmd0RG9tRXZlbnQgPSBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50IHwgV2hlZWxFdmVudDtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RFdmVudHMge1xuICAgIGNsaWNrOiBFdmVudExpc3RlbmVyO1xuICAgIGNvbnRleHRtZW51OiBFdmVudExpc3RlbmVyO1xuICAgIGRibGNsaWNrOiBFdmVudExpc3RlbmVyO1xuICAgIHdoZWVsOiBFdmVudExpc3RlbmVyO1xuICAgIHBvaW50ZXJkb3duOiBFdmVudExpc3RlbmVyO1xuICAgIHBvaW50ZXJ1cDogRXZlbnRMaXN0ZW5lcjtcbiAgICBwb2ludGVybGVhdmU6IEV2ZW50TGlzdGVuZXI7XG4gICAgcG9pbnRlcm1vdmU6IEV2ZW50TGlzdGVuZXI7XG4gICAgcG9pbnRlcmNhbmNlbDogRXZlbnRMaXN0ZW5lcjtcbiAgICBsb3N0cG9pbnRlcmNhcHR1cmU6IEV2ZW50TGlzdGVuZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0RXZlbnRIYW5kbGVycyB7XG4gICAgY2xpY2s/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgY29udGV4dG1lbnU/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgZGJsY2xpY2s/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcnVwPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcmRvd24/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVyb3Zlcj86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJvdXQ/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVyZW50ZXI/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVybGVhdmU/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVybW92ZT86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJtaXNzZWQ/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgcG9pbnRlcmNhbmNlbD86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHdoZWVsPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFdoZWVsRXZlbnQ+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RGaWx0ZXJGdW5jdGlvbiA9IChpdGVtczogVEhSRUUuSW50ZXJzZWN0aW9uW10sIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPikgPT4gVEhSRUUuSW50ZXJzZWN0aW9uW107XG5cbmV4cG9ydCB0eXBlIE5ndENvbXB1dGVGdW5jdGlvbiA9IChcbiAgICBldmVudDogTmd0RG9tRXZlbnQsXG4gICAgcm9vdDogTmd0UnhTdG9yZTxOZ3RTdGF0ZT4sXG4gICAgcHJldmlvdXM/OiBOZ3RSeFN0b3JlPE5ndFN0YXRlPlxuKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndEV2ZW50TWFuYWdlcjxUVGFyZ2V0ID0gYW55PiB7XG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGV2ZW50IGxheWVyIGlzIGFjdGl2ZSAqL1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIEV2ZW50IGxheWVyIHByaW9yaXR5LCBoaWdoZXIgcHJpb3JpdGl6ZWQgbGF5ZXJzIGNvbWUgZmlyc3QgYW5kIG1heSBzdG9wKC1wcm9wYWdhdGUpIGxvd2VyIGxheWVyICAqL1xuICAgIHByaW9yaXR5OiBudW1iZXI7XG4gICAgLyoqIFRoZSBjb21wdXRlIGZ1bmN0aW9uIG5lZWRzIHRvIHNldCB1cCB0aGUgcmF5Y2FzdGVyIGFuZCBhbiB4eS0gcG9pbnRlciAgKi9cbiAgICBjb21wdXRlPzogTmd0Q29tcHV0ZUZ1bmN0aW9uO1xuICAgIC8qKiBUaGUgZmlsdGVyIGNhbiByZS1vcmRlciBvciByZS1zdHJ1Y3R1cmUgdGhlIGludGVyc2VjdGlvbnMgICovXG4gICAgZmlsdGVyPzogTmd0RmlsdGVyRnVuY3Rpb247XG4gICAgLyoqIFRoZSB0YXJnZXQgbm9kZSB0aGUgZXZlbnQgbGF5ZXIgaXMgdGllZCB0byAqL1xuICAgIGNvbm5lY3RlZD86IFRUYXJnZXQ7XG4gICAgLyoqIEFsbCB0aGUgcG9pbnRlciBldmVudCBoYW5kbGVycyB0aHJvdWdoIHdoaWNoIHRoZSBob3N0IGZvcndhcmRzIG5hdGl2ZSBldmVudHMgKi9cbiAgICBoYW5kbGVycz86IE5ndEV2ZW50cztcbiAgICAvKiogQWxsb3dzIHJlLWNvbm5lY3RpbmcgdG8gYW5vdGhlciB0YXJnZXQgKi9cbiAgICBjb25uZWN0PzogKHRhcmdldDogVFRhcmdldCkgPT4gdm9pZDtcbiAgICAvKiogUmVtb3ZlcyBhbGwgZXhpc3RpbmcgZXZlbnRzIGhhbmRsZXJzIGZyb20gdGhlIHRhcmdldCAqL1xuICAgIGRpc2Nvbm5lY3Q/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFBlcmZvcm1hbmNlIHtcbiAgICAvKiogQ3VycmVudCBwZXJmb3JtYW5jZSBub3JtYWwsIGJldHdlZW4gbWluIGFuZCBtYXggKi9cbiAgICBjdXJyZW50OiBudW1iZXI7XG4gICAgLyoqIEhvdyBsb3cgdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiAwIGFuZCBtYXggKi9cbiAgICBtaW46IG51bWJlcjtcbiAgICAvKiogSG93IGhpZ2ggdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiBtaW4gYW5kIG1heCAqL1xuICAgIG1heDogbnVtYmVyO1xuICAgIC8qKiBUaW1lIHVudGlsIGN1cnJlbnQgcmV0dXJucyB0byBtYXggaW4gbXMgKi9cbiAgICBkZWJvdW5jZTogbnVtYmVyO1xuICAgIC8qKiBTZXRzIGN1cnJlbnQgdG8gbWluLCBwdXRzIHRoZSBzeXN0ZW0gaW4gcmVncmVzc2lvbiAqL1xuICAgIHJlZ3Jlc3M6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndERwciA9IG51bWJlciB8IFttaW46IG51bWJlciwgbWF4OiBudW1iZXJdO1xuZXhwb3J0IHR5cGUgTmd0U2l6ZSA9IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIHRvcDogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBOZ3RWaWV3cG9ydCA9IE5ndFNpemUgJiB7XG4gICAgLyoqIFRoZSBpbml0aWFsIHBpeGVsIHJhdGlvICovXG4gICAgaW5pdGlhbERwcjogbnVtYmVyO1xuICAgIC8qKiBDdXJyZW50IHBpeGVsIHJhdGlvICovXG4gICAgZHByOiBudW1iZXI7XG4gICAgLyoqIHNpemUud2lkdGggLyB2aWV3cG9ydC53aWR0aCAqL1xuICAgIGZhY3RvcjogbnVtYmVyO1xuICAgIC8qKiBDYW1lcmEgZGlzdGFuY2UgKi9cbiAgICBkaXN0YW5jZTogbnVtYmVyO1xuICAgIC8qKiBDYW1lcmEgYXNwZWN0IHJhdGlvOiB3aWR0aCAvIGhlaWdodCAqL1xuICAgIGFzcGVjdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RSZW5kZXJTdGF0ZSBleHRlbmRzIE5ndFN0YXRlIHtcbiAgICBkZWx0YTogbnVtYmVyO1xuICAgIGZyYW1lPzogWFJGcmFtZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RCZWZvcmVSZW5kZXJFdmVudDxUT2JqZWN0IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlPiB7XG4gICAgc3RhdGU6IE5ndFJlbmRlclN0YXRlO1xuICAgIG9iamVjdDogVE9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RCZWZvcmVSZW5kZXJSZWNvcmQge1xuICAgIGNhbGxiYWNrOiAoc3RhdGU6IE5ndFJlbmRlclN0YXRlKSA9PiB2b2lkO1xuICAgIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPjtcbiAgICBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnRlcm5hbFN0YXRlIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgcHJpb3JpdHk6IG51bWJlcjtcbiAgICBmcmFtZXM6IG51bWJlcjtcbiAgICBsYXN0RXZlbnQ6IE5ndERvbUV2ZW50O1xuICAgIGludGVyYWN0aW9uOiBUSFJFRS5PYmplY3QzRFtdO1xuICAgIGhvdmVyZWQ6IE1hcDxzdHJpbmcsIE5ndFRocmVlRXZlbnQ8Tmd0RG9tRXZlbnQ+PjtcbiAgICBzdWJzY3JpYmVyczogTmd0QmVmb3JlUmVuZGVyUmVjb3JkW107XG4gICAgY2FwdHVyZWRNYXA6IE1hcDxudW1iZXIsIE1hcDxUSFJFRS5PYmplY3QzRCwgTmd0UG9pbnRlckNhcHR1cmVUYXJnZXQ+PjtcbiAgICBpbml0aWFsQ2xpY2s6IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG4gICAgaW5pdGlhbEhpdHM6IFRIUkVFLk9iamVjdDNEW107XG4gICAgc3Vic2NyaWJlOiAoXG4gICAgICAgIGNhbGxiYWNrOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sXG4gICAgICAgIHByaW9yaXR5PzogbnVtYmVyLFxuICAgICAgICBzdG9yZT86IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+XG4gICAgKSA9PiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFN0YXRlIHtcbiAgICAvKiogU2V0IGN1cnJlbnQgc3RhdGUgKi9cbiAgICBzZXQ6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydzZXQnXTtcbiAgICAvKiogR2V0IGN1cnJlbnQgc3RhdGUgKi9cbiAgICBnZXQ6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydnZXQnXTtcbiAgICBzZWxlY3Q6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+WydzZWxlY3QnXTtcbiAgICAvKiogY2FudmFzIHJlYWR5IHN0YXRlICovXG4gICAgcmVhZHk6IGJvb2xlYW47XG4gICAgLyoqIFRoZSBpbnN0YW5jZSBvZiB0aGUgcmVuZGVyZXIgKi9cbiAgICBnbDogVEhSRUUuV2ViR0xSZW5kZXJlcjtcbiAgICAvKiogRGVmYXVsdCBjYW1lcmEgKi9cbiAgICBjYW1lcmE6IE5ndENhbWVyYU1hbnVhbDtcbiAgICAvKiogRGVmYXVsdCBzY2VuZSAqL1xuICAgIHNjZW5lOiBUSFJFRS5TY2VuZTtcbiAgICAvKiogRGVmYXVsdCByYXljYXN0ZXIgKi9cbiAgICByYXljYXN0ZXI6IFRIUkVFLlJheWNhc3RlcjtcbiAgICAvKiogRGVmYXVsdCBjbG9jayAqL1xuICAgIGNsb2NrOiBUSFJFRS5DbG9jaztcbiAgICAvKiogRXZlbnQgbGF5ZXIgaW50ZXJmYWNlLCBjb250YWlucyB0aGUgZXZlbnQgaGFuZGxlciBhbmQgdGhlIG5vZGUgdGhleSdyZSBjb25uZWN0ZWQgdG8gKi9cbiAgICBldmVudHM6IE5ndEV2ZW50TWFuYWdlcjtcbiAgICAvKiogWFIgaW50ZXJmYWNlICovXG4gICAgeHI6IHsgY29ubmVjdDogKCkgPT4gdm9pZDsgZGlzY29ubmVjdDogKCkgPT4gdm9pZCB9O1xuICAgIC8qKiBDdXJyZW50bHkgdXNlZCBjb250cm9scyAqL1xuICAgIGNvbnRyb2xzOiBUSFJFRS5FdmVudERpc3BhdGNoZXIgfCBudWxsO1xuICAgIC8qKiBOb3JtYWxpemVkIGV2ZW50IGNvb3JkaW5hdGVzICovXG4gICAgcG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcbiAgICAvKiBXaGV0aGVyIHRvIGVuYWJsZSByMTM5J3MgQ29sb3JNYW5hZ2VtZW50LmxlZ2FjeU1vZGUgKi9cbiAgICBsZWdhY3k6IGJvb2xlYW47XG4gICAgLyoqIFNob3J0Y3V0IHRvIGdsLm91dHB1dEVuY29kaW5nID0gTGluZWFyRW5jb2RpbmcgKi9cbiAgICBsaW5lYXI6IGJvb2xlYW47XG4gICAgLyoqIFNob3J0Y3V0IHRvIGdsLnRvbmVNYXBwaW5nID0gTm9Ub25lbWFwcGluZyAqL1xuICAgIGZsYXQ6IGJvb2xlYW47XG4gICAgLyoqIFJlbmRlciBsb29wIGZsYWdzICovXG4gICAgZnJhbWVsb29wOiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJztcbiAgICAvKiogQWRhcHRpdmUgcGVyZm9ybWFuY2UgaW50ZXJmYWNlICovXG4gICAgcGVyZm9ybWFuY2U6IE5ndFBlcmZvcm1hbmNlO1xuICAgIC8qKiBSZWFjdGl2ZSBwaXhlbC1zaXplIG9mIHRoZSBjYW52YXMgKi9cbiAgICBzaXplOiBOZ3RTaXplO1xuICAgIC8qKiBSZWFjdGl2ZSBzaXplIG9mIHRoZSB2aWV3cG9ydCBpbiB0aHJlZWpzIHVuaXRzICovXG4gICAgdmlld3BvcnQ6IE5ndFZpZXdwb3J0ICYge1xuICAgICAgICBnZXRDdXJyZW50Vmlld3BvcnQ6IChcbiAgICAgICAgICAgIGNhbWVyYT86IE5ndENhbWVyYU1hbnVhbCxcbiAgICAgICAgICAgIHRhcmdldD86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPixcbiAgICAgICAgICAgIHNpemU/OiBOZ3RTaXplXG4gICAgICAgICkgPT4gT21pdDxOZ3RWaWV3cG9ydCwgJ2RwcicgfCAnaW5pdGlhbERwcic+O1xuICAgIH07XG4gICAgLyoqIEZsYWdzIHRoZSBjYW52YXMgZm9yIHJlbmRlciwgYnV0IGRvZXNuJ3QgcmVuZGVyIGluIGl0c2VsZiAqL1xuICAgIGludmFsaWRhdGU6IChmcmFtZXM/OiBudW1iZXIpID0+IHZvaWQ7XG4gICAgLyoqIEFkdmFuY2UgKHJlbmRlcikgb25lIHN0ZXAgKi9cbiAgICBhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIC8qKiBTaG9ydGN1dCB0byBzZXR0aW5nIHRoZSBldmVudCBsYXllciAqL1xuICAgIHNldEV2ZW50czogKGV2ZW50czogUGFydGlhbDxOZ3RFdmVudE1hbmFnZXI8YW55Pj4pID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogU2hvcnRjdXQgdG8gbWFudWFsIHNpemluZ1xuICAgICAqL1xuICAgIHNldFNpemU6ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wPzogbnVtYmVyLCBsZWZ0PzogbnVtYmVyLCB1cGRhdGVTdHlsZT86IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgLyoqIFNob3J0Y3V0IHRvIG1hbnVhbCBzZXR0aW5nIHRoZSBwaXhlbCByYXRpbyAqL1xuICAgIHNldERwcjogKGRwcjogTmd0RHByKSA9PiB2b2lkO1xuICAgIC8qKiBTaG9ydGN1dCB0byBmcmFtZWxvb3AgZmxhZ3MgKi9cbiAgICBzZXRGcmFtZWxvb3A6IChmcmFtZWxvb3A/OiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJykgPT4gdm9pZDtcbiAgICAvKiogV2hlbiB0aGUgY2FudmFzIHdhcyBjbGlja2VkIGJ1dCBub3RoaW5nIHdhcyBoaXQgKi9cbiAgICBvblBvaW50ZXJNaXNzZWQ/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgLyoqIElmIHRoaXMgc3RhdGUgbW9kZWwgaXMgbGF5ZXJkICh2aWEgY3JlYXRlUG9ydGFsKSB0aGVuIHRoaXMgY29udGFpbnMgdGhlIHByZXZpb3VzIGxheWVyICovXG4gICAgcHJldmlvdXNTdG9yZT86IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+O1xuICAgIC8qKiBJbnRlcm5hbHMgKi9cbiAgICBpbnRlcm5hbDogTmd0SW50ZXJuYWxTdGF0ZTtcbiAgICAvKiogc2hvcnRjdXRzIGZvciBhZGQgYW5kIHJlbW92ZSBpbnRlcmFjdGlvbiAqL1xuICAgIGFkZEludGVyYWN0aW9uOiAoaW50ZXJhY3Rpb246IFRIUkVFLk9iamVjdDNEKSA9PiB2b2lkO1xuICAgIHJlbW92ZUludGVyYWN0aW9uOiAodXVpZDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RBdHRhY2hGdW5jdGlvbjxUQ2hpbGQgPSBhbnksIFRQYXJlbnQgPSBhbnk+ID0gKFxuICAgIHBhcmVudDogVFBhcmVudCxcbiAgICBjaGlsZDogVENoaWxkLFxuICAgIHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPlxuKSA9PiB2b2lkIHwgKCgpID0+IHZvaWQpO1xuXG5leHBvcnQgdHlwZSBOZ3RBZnRlckF0dGFjaDxcbiAgICBUUGFyZW50IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlLFxuICAgIFRDaGlsZCBleHRlbmRzIE5ndEluc3RhbmNlTm9kZSA9IE5ndEluc3RhbmNlTm9kZVxuPiA9IHsgcGFyZW50OiBUUGFyZW50OyBub2RlOiBUQ2hpbGQgfTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RJbnN0YW5jZUxvY2FsU3RhdGUge1xuICAgIC8qKiB0aGUgc3RhdGUgZ2V0dGVyIG9mIHRoZSBjYW52YXMgdGhhdCB0aGUgaW5zdGFuY2UgaXMgYmVpbmcgcmVuZGVyZWQgdG8gKi9cbiAgICBzdG9yZTogTmd0UnhTdG9yZTxOZ3RTdGF0ZT47XG4gICAgLy8gb2JqZWN0cyBhbmQgcGFyZW50IGFyZSB1c2VkIHdoZW4gY2hpbGRyZW4gYXJlIGFkZGVkIHdpdGggYGF0dGFjaGAgaW5zdGVhZCBvZiBiZWluZyBhZGRlZCB0byB0aGUgT2JqZWN0M0Qgc2NlbmUgZ3JhcGhcbiAgICBub25PYmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8vIG9iamVjdHMgdGhhdCBhcmUgT2JqZWN0M0RcbiAgICBvYmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8vIHNob3J0Y3V0IHRvIGFkZC9yZW1vdmUgb2JqZWN0IHRvIGxpc3RcbiAgICBhZGQ6IChpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCB0eXBlOiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycpID0+IHZvaWQ7XG4gICAgcmVtb3ZlOiAoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSwgdHlwZTogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnKSA9PiB2b2lkO1xuICAgIC8vIHBhcmVudCBiYXNlZCBvbiBhdHRhY2ggdGhyZWUgaW5zdGFuY2VcbiAgICBwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSB8IG51bGw7XG4gICAgLy8gaWYgdGhpcyBUSFJFRSBpbnN0YW5jZSBpcyBhIG5ndC1wcmltaXRpdmVcbiAgICBwcmltaXRpdmU/OiBib29sZWFuO1xuICAgIC8vIGlmIHRoaXMgVEhSRUUgb2JqZWN0IGhhcyBhbnkgZXZlbnRzIGJvdW5kIHRvIGl0XG4gICAgZXZlbnRDb3VudDogbnVtYmVyO1xuICAgIC8vIGxpc3Qgb2YgaGFuZGxlcnMgdG8gaGFuZGxlIHRoZSBldmVudHNcbiAgICBoYW5kbGVyczogUGFydGlhbDxOZ3RFdmVudEhhbmRsZXJzPjtcbiAgICAvLyBwcmV2aW91cyBhcmdzXG4gICAgYXJncz86IHVua25vd25bXTtcbiAgICAvLyBhdHRhY2ggaW5mb3JtYXRpb24gc28gdGhhdCB3ZSBjYW4gZGV0YWNoIGFzIHdlbGwgYXMgcmVzZXRcbiAgICBhdHRhY2g/OiBzdHJpbmdbXSB8IE5ndEF0dGFjaEZ1bmN0aW9uO1xuICAgIC8vIHByZXZpb3VzbHkgYXR0YWNoIGluZm9ybWF0aW9uIHNvIHdlIGNhbiByZXNldCBhcyB3ZWxsIGFzIGNsZWFuIHVwXG4gICAgcHJldmlvdXNBdHRhY2g/OiB1bmtub3duIHwgKCgpID0+IHZvaWQpO1xuICAgIC8vIGlzIHJhdyB2YWx1ZVxuICAgIGlzUmF3PzogYm9vbGVhbjtcbiAgICAvLyBwcmlvcml0eSBmb3IgYmVmb3JlIHJlbmRlclxuICAgIHByaW9yaXR5PzogbnVtYmVyO1xuICAgIC8vIGVtaXR0ZXIgYWZ0ZXIgcHJvcHMgdXBkYXRlXG4gICAgYWZ0ZXJVcGRhdGU/OiBFdmVudEVtaXR0ZXI8Tmd0SW5zdGFuY2VOb2RlPjtcbiAgICAvLyBlbWl0dGVyIGFmdGVyIGF0dGFjaGluZyB0byBwYXJlbnRcbiAgICBhZnRlckF0dGFjaD86IEV2ZW50RW1pdHRlcjxOZ3RBZnRlckF0dGFjaD47XG59XG5cbmV4cG9ydCB0eXBlIE5ndEluc3RhbmNlTm9kZTxUTm9kZSA9IGFueT4gPSBUTm9kZSAmIHtcbiAgICBfX25ndF9fOiBOZ3RJbnN0YW5jZUxvY2FsU3RhdGU7XG59ICYgTmd0QW55UmVjb3JkO1xuXG5leHBvcnQgdHlwZSBOZ3RHTFJlbmRlcmVyID0ge1xuICAgIHJlbmRlcjogKHNjZW5lOiBUSFJFRS5TY2VuZSwgY2FtZXJhOiBUSFJFRS5DYW1lcmEpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RHTE9wdGlvbnMgPVxuICAgIHwgTmd0R0xSZW5kZXJlclxuICAgIHwgKChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSA9PiBOZ3RHTFJlbmRlcmVyKVxuICAgIHwgUGFydGlhbDxOZ3RQcm9wZXJ0aWVzPFRIUkVFLldlYkdMUmVuZGVyZXI+IHwgVEhSRUUuV2ViR0xSZW5kZXJlclBhcmFtZXRlcnM+XG4gICAgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIE5ndEV4dGVuZGVkQ29sb3JzPFQ+ID0ge1xuICAgIFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgVEhSRUUuQ29sb3IgfCB1bmRlZmluZWQgPyBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uIDogVFtLXTtcbn07XG5cbi8qKlxuICogSWYgKipUKiogY29udGFpbnMgYSBjb25zdHJ1Y3RvciwgQHNlZSBDb25zdHJ1Y3RvclBhcmFtZXRlcnMgbXVzdCBiZSB1c2VkLCBvdGhlcndpc2UgKipUKiouXG4gKi9cbmV4cG9ydCB0eXBlIE5ndE5vZGVBcmdzPFQ+ID0gVCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55KSA9PiBhbnkgPyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VD4gOiBUO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndE5vZGVQcm9wczxQPiB7XG4gICAgYXR0YWNoPzogc3RyaW5nW107XG4gICAgLyoqIENvbnN0cnVjdG9yIGFyZ3VtZW50cyAqL1xuICAgIGFyZ3M/OiBOZ3ROb2RlQXJnczxQPjtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Tm9kZTxULCBQPiA9IE5ndEV4dGVuZGVkQ29sb3JzPE5ndE92ZXJ3cml0ZTxQYXJ0aWFsPFQ+LCBOZ3ROb2RlUHJvcHM8UD4+PjtcbmV4cG9ydCB0eXBlIE5ndE9iamVjdDNETm9kZTxULCBQPiA9IE5ndE92ZXJ3cml0ZTxcbiAgICBOZ3ROb2RlPFQsIFA+LFxuICAgIHtcbiAgICAgICAgcG9zaXRpb24/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT47XG4gICAgICAgIHVwPzogVEhSRUUuVmVjdG9yMyB8IFBhcmFtZXRlcnM8VEhSRUUuVmVjdG9yM1snc2V0J10+O1xuICAgICAgICBzY2FsZT86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPjtcbiAgICAgICAgcm90YXRpb24/OiBUSFJFRS5FdWxlciB8IFBhcmFtZXRlcnM8VEhSRUUuRXVsZXJbJ3NldCddPjtcbiAgICAgICAgbWF0cml4PzogVEhSRUUuTWF0cml4NCB8IFBhcmFtZXRlcnM8VEhSRUUuTWF0cml4NFsnc2V0J10+O1xuICAgICAgICBxdWF0ZXJuaW9uPzogVEhSRUUuUXVhdGVybmlvbiB8IFBhcmFtZXRlcnM8VEhSRUUuUXVhdGVybmlvblsnc2V0J10+O1xuICAgICAgICBsYXllcnM/OiBUSFJFRS5MYXllcnMgfCBQYXJhbWV0ZXJzPFRIUkVFLkxheWVyc1snc2V0J10+O1xuICAgIH1cbj4gJlxuICAgIE5ndEV2ZW50SGFuZGxlcnM7XG5cbmV4cG9ydCB0eXBlIE5ndENvbmRpdGlvbmFsVHlwZTxDaGlsZCwgUGFyZW50LCBUcnV0aHksIEZhbHN5PiA9IENoaWxkIGV4dGVuZHMgUGFyZW50ID8gVHJ1dGh5IDogRmFsc3k7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0TG9hZGVyUHJvdG88VD4gZXh0ZW5kcyBUSFJFRS5Mb2FkZXIge1xuICAgIGxvYWQoXG4gICAgICAgIHVybDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICAgIG9uTG9hZD86IChyZXN1bHQ6IFQpID0+IHZvaWQsXG4gICAgICAgIG9uUHJvZ3Jlc3M/OiAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHZvaWQsXG4gICAgICAgIG9uRXJyb3I/OiAoZXZlbnQ6IEVycm9yRXZlbnQpID0+IHZvaWRcbiAgICApOiB1bmtub3duO1xuICAgIGxvYWRBc3luYyh1cmw6IHN0cmluZyB8IHN0cmluZ1tdLCBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkKTogUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndExvYWRlckV4dGVuc2lvbnM8VExvYWRlciBleHRlbmRzIFRIUkVFLkxvYWRlciA9IFRIUkVFLkxvYWRlcj4ge1xuICAgIChsb2FkZXI6IFRMb2FkZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RMb2FkZXJSZXN1bHQ8VD4gPSBUIGV4dGVuZHMgYW55W10gPyBOZ3RMb2FkZXJQcm90bzxUW251bWJlcl0+IDogTmd0TG9hZGVyUHJvdG88VD47XG5leHBvcnQgdHlwZSBOZ3RCcmFuY2hpbmdSZXR1cm48VCA9IGFueSwgUGFyZW50ID0gYW55LCBDb2VyY2VkID0gYW55PiA9IE5ndENvbmRpdGlvbmFsVHlwZTxULCBQYXJlbnQsIENvZXJjZWQsIFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndE9iamVjdE1hcCB7XG4gICAgbm9kZXM6IHsgW25hbWU6IHN0cmluZ106IFRIUkVFLk9iamVjdDNEIH07XG4gICAgbWF0ZXJpYWxzOiB7IFtuYW1lOiBzdHJpbmddOiBUSFJFRS5NYXRlcmlhbCB9O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RDYW52YXNJbnB1dHMge1xuICAgIC8qKiBBIHRocmVlanMgcmVuZGVyZXIgaW5zdGFuY2Ugb3IgcHJvcHMgdGhhdCBnbyBpbnRvIHRoZSBkZWZhdWx0IHJlbmRlcmVyICovXG4gICAgZ2w/OiBOZ3RHTE9wdGlvbnM7XG4gICAgLyoqIERpbWVuc2lvbnMgdG8gZml0IHRoZSByZW5kZXJlciB0by4gV2lsbCBtZWFzdXJlIGNhbnZhcyBkaW1lbnNpb25zIGlmIG9taXR0ZWQgKi9cbiAgICBzaXplPzogTmd0U2l6ZTtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzIFBDRnNvZnQgc2hhZG93cy4gQ2FuIGFjY2VwdCBgZ2wuc2hhZG93TWFwYCBvcHRpb25zIGZvciBmaW5lLXR1bmluZy5cbiAgICAgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL3JlbmRlcmVycy9XZWJHTFJlbmRlcmVyLnNoYWRvd01hcFxuICAgICAqL1xuICAgIHNoYWRvd3M/OiBib29sZWFuIHwgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD47XG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhyZWUgcjEzOSBjb2xvciBtYW5hZ2VtZW50LlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNtYW51YWwvZW4vaW50cm9kdWN0aW9uL0NvbG9yLW1hbmFnZW1lbnRcbiAgICAgKi9cbiAgICBsZWdhY3k/OiBib29sZWFuO1xuICAgIC8qKiBTd2l0Y2ggb2ZmIGF1dG9tYXRpYyBzUkdCIGVuY29kaW5nIGFuZCBnYW1tYSBjb3JyZWN0aW9uICovXG4gICAgbGluZWFyPzogYm9vbGVhbjtcbiAgICAvKiogVXNlIGBOb1RvbmVNYXBwaW5nYCBpbnN0ZWFkIG9mIGBBQ0VTRmlsbWljVG9uZU1hcHBpbmdgICovXG4gICAgZmxhdD86IGJvb2xlYW47XG4gICAgLyoqIENyZWF0ZXMgYW4gb3J0aG9ncmFwaGljIGNhbWVyYSAqL1xuICAgIG9ydGhvZ3JhcGhpYz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUjNGJ3MgcmVuZGVyIG1vZGUuIFNldCB0byBgZGVtYW5kYCB0byBvbmx5IHJlbmRlciBvbiBzdGF0ZSBjaGFuZ2Ugb3IgYG5ldmVyYCB0byB0YWtlIGNvbnRyb2wuXG4gICAgICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hZHZhbmNlZC9zY2FsaW5nLXBlcmZvcm1hbmNlI29uLWRlbWFuZC1yZW5kZXJpbmdcbiAgICAgKi9cbiAgICBmcmFtZWxvb3A/OiAnYWx3YXlzJyB8ICdkZW1hbmQnIHwgJ25ldmVyJztcbiAgICAvKipcbiAgICAgKiBSM0YgcGVyZm9ybWFuY2Ugb3B0aW9ucyBmb3IgYWRhcHRpdmUgcGVyZm9ybWFuY2UuXG4gICAgICogQHNlZSBodHRwczovL2RvY3MucG1uZC5ycy9yZWFjdC10aHJlZS1maWJlci9hZHZhbmNlZC9zY2FsaW5nLXBlcmZvcm1hbmNlI21vdmVtZW50LXJlZ3Jlc3Npb25cbiAgICAgKi9cbiAgICBwZXJmb3JtYW5jZT86IFBhcnRpYWw8T21pdDxOZ3RQZXJmb3JtYW5jZSwgJ3JlZ3Jlc3MnPj47XG4gICAgLyoqIFRhcmdldCBwaXhlbCByYXRpby4gQ2FuIGNsYW1wIGJldHdlZW4gYSByYW5nZTogYFttaW4sIG1heF1gICovXG4gICAgZHByPzogTmd0RHByO1xuICAgIC8qKiBQcm9wcyB0aGF0IGdvIGludG8gdGhlIGRlZmF1bHQgcmF5Y2FzdGVyICovXG4gICAgcmF5Y2FzdGVyPzogUGFydGlhbDxUSFJFRS5SYXljYXN0ZXI+O1xuICAgIC8qKiBBIGBDYW1lcmFgIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCBjYW1lcmEgKi9cbiAgICBjYW1lcmE/OiAoXG4gICAgICAgIHwgTmd0Q2FtZXJhXG4gICAgICAgIHwgUGFydGlhbDxcbiAgICAgICAgICAgICAgTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkNhbWVyYSwgdHlwZW9mIFRIUkVFLkNhbWVyYT4gJlxuICAgICAgICAgICAgICAgICAgTmd0T2JqZWN0M0ROb2RlPFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhLCB0eXBlb2YgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmE+ICZcbiAgICAgICAgICAgICAgICAgIE5ndE9iamVjdDNETm9kZTxUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEsIHR5cGVvZiBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmE+XG4gICAgICAgICAgPlxuICAgICkgJiB7XG4gICAgICAgIC8qKiBGbGFncyB0aGUgY2FtZXJhIGFzIG1hbnVhbCwgcHV0dGluZyBwcm9qZWN0aW9uIGludG8geW91ciBvd24gaGFuZHMgKi9cbiAgICAgICAgbWFudWFsPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKiBBbiBSM0YgZXZlbnQgbWFuYWdlciB0byBtYW5hZ2UgZWxlbWVudHMnIHBvaW50ZXIgZXZlbnRzICovXG4gICAgZXZlbnRzPzogKHN0b3JlOiBOZ3RSeFN0b3JlPE5ndFN0YXRlPikgPT4gTmd0RXZlbnRNYW5hZ2VyPEhUTUxFbGVtZW50PjtcbiAgICAvKiogVGhlIHRhcmdldCB3aGVyZSBldmVudHMgYXJlIGJlaW5nIHN1YnNjcmliZWQgdG8sIGRlZmF1bHQ6IHRoZSBkaXYgdGhhdCB3cmFwcyBjYW52YXMgKi9cbiAgICBldmVudFNvdXJjZT86IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgLyoqIFRoZSBldmVudCBwcmVmaXggdGhhdCBpcyBjYXN0IGludG8gY2FudmFzIHBvaW50ZXIgeC95IGV2ZW50cywgZGVmYXVsdDogXCJvZmZzZXRcIiAqL1xuICAgIGV2ZW50UHJlZml4PzogJ29mZnNldCcgfCAnY2xpZW50JyB8ICdwYWdlJyB8ICdsYXllcicgfCAnc2NyZWVuJztcbiAgICAvKiogRGVmYXVsdCBjb29yZGluYXRlIGZvciB0aGUgY2FtZXJhIHRvIGxvb2sgYXQgKi9cbiAgICBsb29rQXQ/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT47XG59XG4iXX0=