ngx-scandoc 15.0.8 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/core/components/scan/scan.component.d.ts +2 -2
  2. package/core/components/scan-results/scan-results.component.d.ts +2 -2
  3. package/core/interfaces/config.d.ts +2 -0
  4. package/dialogs/components/blank/blank.component.d.ts +1 -1
  5. package/dialogs/components/confirm/confirm.component.d.ts +1 -1
  6. package/dialogs/components/loading/loading.component.d.ts +1 -1
  7. package/dialogs/components/prompt-manual/prompt-manual.component.d.ts +1 -1
  8. package/dialogs/components/scan-profile/scan-profile.component.d.ts +1 -1
  9. package/dialogs/components/scan-selfie/scan-selfie.component.d.ts +1 -1
  10. package/dialogs/components/turn-document/turn-document.component.d.ts +1 -1
  11. package/esm2020/core/components/manual-scan/manual-scan.component.mjs +1 -1
  12. package/esm2020/core/components/scan/scan.component.mjs +3 -3
  13. package/esm2020/core/components/scan-results/scan-results.component.mjs +5 -5
  14. package/esm2020/core/interfaces/config.mjs +1 -1
  15. package/esm2020/dialogs/components/blank/blank.component.mjs +3 -3
  16. package/esm2020/dialogs/components/confirm/confirm.component.mjs +3 -3
  17. package/esm2020/dialogs/components/loading/loading.component.mjs +3 -3
  18. package/esm2020/dialogs/components/prompt-manual/prompt-manual.component.mjs +3 -3
  19. package/esm2020/dialogs/components/scan-profile/scan-profile.component.mjs +3 -3
  20. package/esm2020/dialogs/components/scan-selfie/scan-selfie.component.mjs +3 -3
  21. package/esm2020/dialogs/components/turn-document/turn-document.component.mjs +3 -3
  22. package/esm2020/lib/ngx-scandoc.module.mjs +3 -3
  23. package/esm2020/providers/auth.provider.mjs +5 -5
  24. package/esm2020/providers/interceptor.provider.mjs +3 -3
  25. package/esm2020/providers/scan.form.mjs +8 -5
  26. package/esm2020/providers/scan.provider.mjs +1 -1
  27. package/esm2020/providers/translation.provider.mjs +2 -2
  28. package/esm2020/public-api.mjs +3 -3
  29. package/fesm2015/ngx-scandoc.mjs +35 -32
  30. package/fesm2015/ngx-scandoc.mjs.map +1 -1
  31. package/fesm2020/ngx-scandoc.mjs +35 -32
  32. package/fesm2020/ngx-scandoc.mjs.map +1 -1
  33. package/package.json +1 -1
  34. package/providers/auth.provider.d.ts +3 -3
  35. package/providers/interceptor.provider.d.ts +2 -2
  36. package/providers/scan.form.d.ts +4 -3
  37. package/public-api.d.ts +2 -2
@@ -4,7 +4,7 @@ import { FormGroup } from '@angular/forms';
4
4
  import { ScanProvider } from '../../../providers/scan.provider';
5
5
  import { WebcamImage } from '../../../core/components/webcam/domain/webcam-image';
6
6
  import { WebcamInitError } from '../../../core/components/webcam/domain/webcam-init-error';
7
- import { AuthProvider } from '../../../providers/auth.provider';
7
+ import { NgxScandocAuthProvider } from '../../../providers/auth.provider';
8
8
  import { NgxScandocCameraProvider } from '../../../providers/camera.provider';
9
9
  import { LayoutProvider } from '../../../providers/layout.provider';
10
10
  import { BaseComponent } from '../base.component';
@@ -81,7 +81,7 @@ export declare class ScanComponent extends BaseComponent implements AfterViewIni
81
81
  get class(): boolean;
82
82
  onResize(): void;
83
83
  scanProvider: ScanProvider;
84
- constructor(cd: ChangeDetectorRef, zone: NgZone, cameraProvider: NgxScandocCameraProvider, injector: Injector, layoutProvider: LayoutProvider, platform: Platform, deviceService: DeviceDetectorService, auth: AuthProvider);
84
+ constructor(cd: ChangeDetectorRef, zone: NgZone, cameraProvider: NgxScandocCameraProvider, injector: Injector, layoutProvider: LayoutProvider, platform: Platform, deviceService: DeviceDetectorService, auth: NgxScandocAuthProvider);
85
85
  private resetLogData;
86
86
  init(): void;
87
87
  continue(): void;
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter, OnDestroy, OnInit, ChangeDetectorRef, NgZone } from '@angular/core';
2
2
  import { NgxScandocCameraProvider } from '../../../providers/camera.provider';
3
3
  import { FormGroup } from '@angular/forms';
4
- import { ScanFieldsProvider } from '../../../providers/scan.form';
4
+ import { NgxScandocFieldsProvider } from '../../../providers/scan.form';
5
5
  import { Subject } from 'rxjs';
6
6
  import { BaseComponent } from '../base.component';
7
7
  import { ScanProvider } from '../../../providers/scan.provider';
@@ -18,7 +18,7 @@ export declare class ScanResultsComponent extends BaseComponent implements OnIni
18
18
  fields: any;
19
19
  form: FormGroup;
20
20
  action: EventEmitter<any>;
21
- constructor(cameraProvider: NgxScandocCameraProvider, formProvider: ScanFieldsProvider, provider: ScanProvider, cd: ChangeDetectorRef, zone: NgZone);
21
+ constructor(cameraProvider: NgxScandocCameraProvider, formProvider: NgxScandocFieldsProvider, provider: ScanProvider, cd: ChangeDetectorRef, zone: NgZone);
22
22
  ngOnInit(): void;
23
23
  ngOnDestroy(): void;
24
24
  selfie(): void;
@@ -1,3 +1,4 @@
1
+ import { FormlyFieldConfig } from "@ngx-formly/core";
1
2
  export interface AuthConfig {
2
3
  path: string;
3
4
  tokenName: string;
@@ -19,6 +20,7 @@ export interface ScanConfig {
19
20
  manualScanDelay: number;
20
21
  showManualMode?: boolean;
21
22
  useTranslation?: boolean;
23
+ fields?: FormlyFieldConfig[];
22
24
  }
23
25
  export interface ScanDataConfig {
24
26
  auth: AuthConfig;
@@ -12,5 +12,5 @@ export declare class BlankComponent implements AfterViewInit {
12
12
  init(): void;
13
13
  ngAfterViewInit(): void;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<BlankComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<BlankComponent, "app-dialog-blank", never, {}, {}, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<BlankComponent, "ngx-scandoc-blank", never, {}, {}, never, never, false, never>;
16
16
  }
@@ -25,6 +25,6 @@ export declare class ConfirmComponent implements OnInit {
25
25
  action(key: any): void;
26
26
  close(): void;
27
27
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmComponent, "app-confirm", never, {}, {}, never, never, false, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmComponent, "ngx-scandoc-confirm", never, {}, {}, never, never, false, never>;
29
29
  }
30
30
  export {};
@@ -1,5 +1,5 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class LoadingComponent {
3
3
  static ɵfac: i0.ɵɵFactoryDeclaration<LoadingComponent, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<LoadingComponent, "app-loading", never, {}, {}, never, never, false, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<LoadingComponent, "ngx-scandoc-loading", never, {}, {}, never, never, false, never>;
5
5
  }
@@ -8,5 +8,5 @@ export declare class PromptManualComponent implements OnInit {
8
8
  ngOnInit(): void;
9
9
  close(key: boolean): void;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<PromptManualComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<PromptManualComponent, "app-prompt-manual", never, {}, {}, never, never, false, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<PromptManualComponent, "ngx-scandoc-prompt-manual", never, {}, {}, never, never, false, never>;
12
12
  }
@@ -21,5 +21,5 @@ export declare class ScanProfileComponent extends BaseComponent implements After
21
21
  actions(event: any): void;
22
22
  close(): void;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<ScanProfileComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<ScanProfileComponent, "app-scan-profile", never, { "type": "type"; }, {}, never, never, false, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScanProfileComponent, "ngx-scandoc-profile", never, { "type": "type"; }, {}, never, never, false, never>;
25
25
  }
@@ -33,5 +33,5 @@ export declare class ScanSelfieComponent extends BaseComponent implements AfterV
33
33
  continue(): void;
34
34
  close(): void;
35
35
  static ɵfac: i0.ɵɵFactoryDeclaration<ScanSelfieComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<ScanSelfieComponent, "app-scan-selfie", never, {}, { "actions": "actions"; }, never, never, false, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScanSelfieComponent, "ngx-scandoc-selfie", never, {}, { "actions": "actions"; }, never, never, false, never>;
37
37
  }
@@ -8,5 +8,5 @@ export declare class TurnDocumentComponent implements OnInit {
8
8
  ngOnInit(): void;
9
9
  close(): void;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<TurnDocumentComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<TurnDocumentComponent, "app-turndocuments", never, {}, {}, never, never, false, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<TurnDocumentComponent, "ngx-scandoc-turn-document", never, {}, {}, never, never, false, never>;
12
12
  }
@@ -287,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
287
287
  type: HostListener,
288
288
  args: ['window:resize', ['$event']]
289
289
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFudWFsLXNjYW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy9tYW51YWwtc2Nhbi9tYW51YWwtc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL21hbnVhbC1zY2FuL21hbnVhbC1zY2FuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQU1aLE1BQU0sRUFFTixZQUFZLEVBQ1osU0FBUyxFQUVULFdBQVcsR0FFWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFTbEQsTUFBTSxPQUFPLG1CQUNYLFNBQVEsYUFBYTtJQWdEckIsSUFBaUMsS0FBSztRQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztZQUVyRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxLQUFLLEVBQUU7b0JB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QUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBYztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUUzQixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsSUFBUztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN2QztRQUVELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7Z0hBMVNVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDJUQzdCaEMsdXlTQW9UQTsyRkR2UmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGlCQUFpQjtpTUFTakIsTUFBTTtzQkFBZixNQUFNO2dCQTRDYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ2MsS0FBSztzQkFBckMsV0FBVzt1QkFBQyxjQUFjO2dCQUkzQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9jYW1lcmEucHJvdmlkZXInO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NhbkZpZWxkc1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL3NjYW4uZm9ybSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvbGF5b3V0LnByb3ZpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LW1hbnVhbC1zY2FuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hbnVhbC1zY2FuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFudWFsLXNjYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYW51YWxTY2FuQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHZpZGVvT3B0aW9uczogTWVkaWFUcmFja0NvbnN0cmFpbnRzID0ge1xuICAgIHdpZHRoOiAxOTIwLFxuICAgIGhlaWdodDogMTA4MCxcbiAgICBmYWNpbmdNb2RlOiAnZW52aXJvbm1lbnQnLFxuICB9O1xuICBjYW1lcmFSZWFkeSA9IGZhbHNlO1xuICBzY2FuQmxhc3REYXRhOiBhbnkgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdzY2FuZG9jLmZyb250JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnc2NhbmRvYy5mcm9udERlc2NyaXB0aW9uJyxcbiAgICAgIHNpZGU6ICdGUk9OVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ3NjYW5kb2MuYmFjaycsXG4gICAgICBkZXNjcmlwdGlvbjogJ3NjYW5kb2MuYmFja0Rlc2NyaXB0aW9uJyxcbiAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgc2lkZTogJ0JBQ0snLFxuICAgIH0sXG4gIF07XG4gIGVycm9yID0gZmFsc2U7XG4gIHNjYW5pbmcgPSBmYWxzZTtcbiAgZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBzZWxlY3RlZFNpZGU6IGFueTtcbiAgcHJldmlldzogYW55ID0gbnVsbDtcbiAgc2NhblR5cGU6IGFueTtcbiAgd2lkdGg6IGFueTtcbiAgaGVpZ2h0OiBhbnk7XG4gIHZpZGVvV2lkdGg6IGFueTtcbiAgdmlkZW9IZWlnaHQ6IGFueTtcbiAgc2NhbkRhdGFzOiBhbnkgPSBbXTtcbiAgc2NhblNpZGU6IGFueTtcblxuICByZXN1bHQ6IGFueTtcbiAgd2ViY2FtSW1hZ2U6IGFueTtcbiAgcHVibGljIHRyaWdnZXI6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgLy8gc3dpdGNoIHRvIG5leHQgLyBwcmV2aW91cyAvIHNwZWNpZmljIHdlYmNhbTsgdHJ1ZS9mYWxzZTogZm9yd2FyZC9iYWNrd2FyZHMsIHN0cmluZzogZGV2aWNlSWRcbiAgcHVibGljIG5leHRXZWJjYW06IFN1YmplY3Q8Ym9vbGVhbiB8IHN0cmluZz4gPSBuZXcgU3ViamVjdDxcbiAgICBib29sZWFuIHwgc3RyaW5nXG4gID4oKTtcblxuICBpc01vYmlsZSA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCd3cmFwZXInKSB3cmFwZXI/OiBFbGVtZW50UmVmO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vYmlsZScpIGdldCBjbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc01vYmlsZTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoKSB7XG4gICAgaWYgKHRoaXMud3JhcGVyKSB7XG4gICAgICB0aGlzLndpZHRoID0gdGhpcy53cmFwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy53cmFwZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWRlbyA9IHRoaXMud3JhcGVyPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7XG4gICAgICAgIGlmICh2aWRlbykge1xuICAgICAgICAgIC8vICAgY29uc29sZS5sb2codmlkZW8uY2xpZW50V2lkdGgsIHZpZGVvLmNsaWVudEhlaWdodCk7XG4gICAgICAgICAgdGhpcy52aWRlb1dpZHRoID0gdmlkZW8uY2xpZW50V2lkdGg7XG4gICAgICAgICAgdGhpcy52aWRlb0hlaWdodCA9IHZpZGVvLmNsaWVudEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2FtZXJhUHJvdmlkZXI6IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGxheW91dFByb3ZpZGVyOiBMYXlvdXRQcm92aWRlcixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fX3N1YnModGhpcy5sYXlvdXRQcm92aWRlci5icmVha3BvaW50JCkuc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gIXYubWF0Y2hlcztcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnV1RGJyk7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICB9KTtcblxuICAgICAgY29uc29sZS5sb2coJ01OT0JJTEUnLCB0aGlzLmlzTW9iaWxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV4dFdlYmNhbU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMubmV4dFdlYmNhbS5hc09ic2VydmFibGUoKTtcbiAgfVxuICBwdWJsaWMgY2FtZXJhV2FzU3dpdGNoZWQoZGV2aWNlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdbYWN0aXZlIGRldmljZV0nLCBkZXZpY2VJZCk7XG4gICAgLy8gdGhpcy5kZXZpY2VJZCA9IGRldmljZUlkO1xuICAgIC8vIHRoaXMuY2FtZXJhUmVhZHkgPSB0cnVlO1xuICAgIC8vIHRoaXMuZGVmYXVsdERldmljZSA9IGRldmljZUlkO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgICAvLyB0aGlzLnNjYW4oKTtcbiAgICB9LCAzMDApO1xuICB9XG4gIHB1YmxpYyBoYW5kbGVJbml0RXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfVxuICByZXNvbHV0aW9uTGltaXQoZmlsZTogYW55KSB7XG4gICAgY29uc3QgbWluV2lkdGggPSAxMjgwO1xuICAgIGNvbnN0IG1pbkhlaWdodCA9IDcyMDtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltZy5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gaW1nLm5hdHVyYWxIZWlnaHQ7XG5cbiAgICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XG4gICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgIHZhbGlkID0gd2lkdGggPj0gbWluV2lkdGggJiYgaGVpZ2h0ID49IG1pbkhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWxpZCA9IHdpZHRoID49IG1pbkhlaWdodCAmJiBoZWlnaHQgPj0gbWluV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBvYnNlcnZlci5uZXh0KHZhbGlkKTtcbiAgICAgIH07XG4gICAgICBpbWcub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgZ2V0SW1nQmFzZTY0KG51bTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLmltYWdlLmRhdGFVcmwuc3BsaXQoJywnKVsxXTtcbiAgfVxuICBnZXRCYXNlNjQoZmlsZTogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChyZWFkZXIucmVzdWx0KTtcbiAgICAgIH07XG4gICAgICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGhhbmRsZUZpbGVJbnB1dCh0YXJnZXQ6IGFueSwgZXZlbnQ6IGFueSwgc2lkZTogYW55KSB7XG4gICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0ID0gdGFyZ2V0LmZpbGVzO1xuICAgIHRoaXMuc2VsZWN0ZWRTaWRlID0gc2lkZTtcbiAgICBjb25zb2xlLmxvZyhmaWxlcyk7XG4gICAgY29uc3QgZmlsZSA9IGZpbGVzLml0ZW0oMCk7XG5cbiAgICB0aGlzLnJlc29sdXRpb25MaW1pdChmaWxlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodmFsaWQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiB2YWxpZCA/IHRoaXMuZ2V0QmFzZTY0KGZpbGUpIDogb2YoZmFsc2UpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoaW1hZ2VBc0RhdGFVcmwpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coaW1hZ2VBc0RhdGFVcmwpO1xuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBudWxsO1xuICAgICAgICBpZiAoIWltYWdlQXNEYXRhVXJsKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdNSU4gUkVTJyk7XG4gICAgICAgICAgLy8gdGhpcy5kaWFsb2dzLmFsZXJ0KFxuICAgICAgICAgIC8vICAgJ2NvcmUucGFnZS5lcnJvcicsXG4gICAgICAgICAgLy8gICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgIC8vICAgICAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5taW5SZXNvbHV0aW9uJ1xuICAgICAgICAgIC8vICAgKVxuICAgICAgICAgIC8vICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2lkZS5pbWFnZSA9IHtcbiAgICAgICAgICAgIF9pbWFnZUFzRGF0YVVybDogaW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgICBpbWFnZUFzRGF0YVVybDogaW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFNpZGUuc2lkZSA9PT0gJ0ZST05UJykge1xuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBjYW1lcmFPZmYoZXY6IGFueSkge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG4gIHNpbmdsZVNjYW4oc2lkZTogYW55KSB7XG4gICAgdGhpcy5zY2FuVHlwZSA9IHNpZGUuc2lkZTtcbiAgICB0aGlzLnByZXZpZXcgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRTaWRlID0gc2lkZTtcblxuICAgIHRoaXMuc2VsZWN0ZWRTaWRlLmltYWdlID0gbnVsbDtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgc2NhbkJsYXN0RmluaXNoKCkge1xuICAgIHRoaXMuYWN0aW9uLmVtaXQodGhpcy5zY2FuQmxhc3REYXRhKTtcbiAgfVxuICBnZXQgc2NhbkJsYXN0Q2FuVXBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgcHVibGljIGhhbmRsZUltYWdlKHdlYmNhbUltYWdlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW3JlY2VpdmVkIHdlYmNhbSBpbWFnZV0nLCB3ZWJjYW1JbWFnZSk7XG5cbiAgICB0aGlzLndlYmNhbUltYWdlID0gd2ViY2FtSW1hZ2U7XG4gICAgdGhpcy5wcmV2aWV3ID0gd2ViY2FtSW1hZ2UuaW1hZ2VBc0RhdGFVcmw7XG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNvbnRpbnVlKCkge1xuICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFNpZGUuaW1hZ2UgPSB0aGlzLndlYmNhbUltYWdlO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTaWRlLnNpZGUgPT09ICdGUk9OVCcpIHtcbiAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAyMDApO1xuICB9XG4gIHJldHJ5KCkge1xuICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcblxuICAgIC8vIHRoaXMucmVzdWx0ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgZWxlbWVudC5pbWFnZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICB9XG4gIHB1YmxpYyB0cmlnZ2VyU25hcHNob3QoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyLm5leHQoMCk7XG4gIH1cbiAgc2NhbigpIHtcbiAgICBjb25zb2xlLmxvZygnU0NBTicpO1xuICAgIHRoaXMudHJpZ2dlclNuYXBzaG90KCk7XG4gICAgdGhpcy5zY2FuRGF0YXNbMF0gPSB0cnVlO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY2FtZXJhUHJvdmlkZXIpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgcm90YXRlQmFzZTY0SW1hZ2UoYmFzZTY0ZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgaW1hZ2Uuc3JjID0gYmFzZTY0ZGF0YTtcbiAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coY2FudmFzKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gaW1hZ2UuaGVpZ2h0O1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2Uud2lkdGg7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICBjdHgucm90YXRlKCg5MCAqIE1hdGguUEkpIC8gMTgwKTtcbiAgICAgICAgICBjdHgudHJhbnNsYXRlKDAsIC1jYW52YXMud2lkdGgpO1xuICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoY2FudmFzLnRvRGF0YVVSTCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcih7IHR5cGU6ICdnZW5lcmljIGVycm9yJyB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGltYWdlLm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgc2luZ2xlU2NhblJvdGF0ZShzaWRlOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhzaWRlKTtcbiAgICB0aGlzLnJvdGF0ZUJhc2U2NEltYWdlKHNpZGUuaW1hZ2UuaW1hZ2VBc0RhdGFVcmwpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgc2lkZS5pbWFnZSA9IHsgaW1hZ2VBc0RhdGFVcmw6IGRhdGEgfTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG4gIHZpZGVvUmVhZHkoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmxvZygnUkVBRFknLCBldmVudCk7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGV2ZW50O1xuXG4gIH1cbiAgc2luZ2xlU2NhblJlbW92ZShzaWRlOiBhbnkpIHtcbiAgICBzaWRlLmltYWdlID0gbnVsbDtcbiAgICBpZiAoc2lkZS5zaWRlID09PSAnRlJPTlQnKSB7XG4gICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCJcblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXN1bHRcIj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb2N1bWVudFR5cGVTZWxlY3RlZFwiPlxuICA8c2VjdGlvblxuICAgIGNsYXNzPVwic2NhbkJsYXN0V3JhcGVyXCJcbiAgICBuZ0NsYXNzLmx0LW1kPVwibW9iaWxlXCJcbiAgICBmeEZsZXhcbiAgICBmeExheW91dD1cImNvbHVtblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2NhbkJsYXN0XCIgZnhGbGV4IGZ4TGF5b3V0Lmx0LW1kPVwiY29sdW1uXCIgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgIDxtYXQtY2FyZFxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZWRcIlxuICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW5cIlxuICAgICAgICBmeExheW91dD1cImNvbHVtblwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBzaWRlIG9mIHNjYW5CbGFzdERhdGFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IG5nQ2xhc3MubHQtc209XCJzbWFsbFwiIGNsYXNzPVwiaGVhZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGZ4RmxleD57eyBzaWRlLnRpdGxlIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvd1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzaW5nbGVTY2FuKHNpZGUpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzaWRlLmRpc2FibGVkXCJcbiAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHhcIlxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uV3JhcFwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2FtZXJhPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2Muc2NhbkNhbWVyYVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2lkZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA0cHhcIlxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXG4gICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVGaWxlSW5wdXQoJGV2ZW50LnRhcmdldCwgJGV2ZW50LCBzaWRlKVwiXG4gICAgICAgICAgICAgICNmaWxlXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbldyYXBcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZpbGVfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MudXNlRnJvbURpc2tcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogMVwiIGNsYXNzPVwicHJldmlld1BsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNpZGUuaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nV3JhcFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZsZXg6IDFcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICsgc2lkZS5pbWFnZS5pbWFnZUFzRGF0YVVybCArICcpJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0Lmx0LW1kPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3dcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNpbmdsZVNjYW5SZW1vdmUoc2lkZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItNCByZW1CdXR0b24gZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25XcmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MucmVtb3ZlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtNCByb3RhdGVCdXR0b24gZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlU2NhblJvdGF0ZShzaWRlKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uV3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnJvdGF0ZV85MF9kZWdyZWVzX2N3PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2Mucm90YXRlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNpZGUuaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNpZGUuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1jYXJkPlxuICAgIDwvZGl2PlxuICAgIDxmb290ZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHgtOCBwYi04XCJcbiAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwcHggOHB4IDhweCA4cHg7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3dcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInNjYW5CbGFzdEZpbmlzaCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNjYW5CbGFzdENhblVwbG9hZFwiXG4gICAgICAgICAgc3R5bGU9XCJmbGV4OiAxXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnVwbG9hZFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2XG4gIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmbGV4OiAxXCJcbiAgKm5nSWY9XCJkb2N1bWVudFR5cGVTZWxlY3RlZFwiXG4+XG4gIDxkaXZcbiAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGZsZXg6IDFcIlxuICAgICN3cmFwZXJcbiAgICBjbGFzcz1cIndyYXBlclwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBzdHlsZT1cIlxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMHB4O1xuICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICB6LWluZGV4OiAyMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTtcbiAgICAgIFwiXG4gICAgICAqbmdJZj1cIiFjYW1lcmFSZWFkeSAmJiAhcHJldmlld1wiXG4gICAgPlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVycm9yXCI+XG4gICAgICA8bmd4LXNjYW5kb2Mtd2ViY2FtXG4gICAgICAgICpuZ0lmPVwiIXByZXZpZXcgJiYgIXNjYW5pbmdcIlxuICAgICAgICBjbGFzcz1cIm1haW4gZmxleFwiXG5cbiAgICAgICAgI3dlYmNhbVxuICAgICAgICBbdHJpZ2dlcl09XCJ0cmlnZ2VyXCJcbiAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJoYW5kbGVJbWFnZSgkZXZlbnQpXCJcbih2aWRlb1JlYWR5KT1cInZpZGVvUmVhZHkoJGV2ZW50KVwiXG4gICAgICAgIChjYW1lcmFTd2l0Y2hlZCk9XCJjYW1lcmFXYXNTd2l0Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgKGluaXRFcnJvcik9XCJoYW5kbGVJbml0RXJyb3IoJGV2ZW50KVwiXG4gICAgICAgIHR5cGU9XCJtYW51YWxcIlxuXG4gICAgICAgIChkZXN0cm95ZWQpPVwiY2FtZXJhT2ZmKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9uZ3gtc2NhbmRvYy13ZWJjYW0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcmV2aWV3RGF0YVwiXG4gICAgICAqbmdJZj1cInByZXZpZXdcIlxuICAgICAgc3R5bGU9XCJcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgei1pbmRleDogMjA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZXJyb3JcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb25cbiAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1sLThcIj57e1xuICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUudW5hYmxlVG9EZXRlY3RJZFwiIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUucGxhY2VJZENsb3NlVG9EZXZpY2VcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmVuc3VyZVN1ZmZpY2llbnRMaWdodFwiXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuaG9sZERvY3VtZW50U3RlYWR5XCJcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5tYWtlU3VyZUFsbEVkZ2VzT2ZUaGVJZEFyZVZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLm1ha2VTdXJlVGhlcmVBcmVOb0dsYXJlQW5kU2hhZG93c09uVGhlSWRcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNjYW5QcmV2aWV3XCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmbGV4OiAxXCJcbiAgICAgICAgKm5nSWY9XCIhZXJyb3IgJiYgIXNjYW5pbmdcIlxuICAgICAgPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweS0xNlwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5lbnN1cmVBbGxUZXh0c0FyZVZpc2libGVcIlxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPVwiZmxleDogMVwiXG4gICAgICAgICAgY2xhc3M9XCJpbWFnZVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiJ3VybCgnICsgcHJldmlldyArICcpJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Zm9vdGVyIGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJwLThcIj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJkaXNwbGF5SW5mb1wiICpuZ0lmPVwiIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIj5cbiAgICAgIHt7IGRpc3BsYXlJbmZvIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMjZweDtcIj5cbiAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE4cHg7XCIgKm5nSWY9XCJpZFNjYW4gJiYgIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdCQUNLJ1wiPlxuICAgICAgICBUdXJuIGRvY3VtZW50IGFuZDpcbiAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmNhcHR1cmVCYWNrXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0ZST05UJ1wiPlxuICAgICAgICBUdXJuIGRvY3VtZW50IGFuZDpcbiAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmNhcHR1cmVGcm9udFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8YnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbWVyYVJlYWR5XCJcbiAgICAgIGNsYXNzPVwidy0xMDAtcFwiXG4gICAgICAqbmdJZj1cIiFwcmV2aWV3XCJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAoY2xpY2spPVwic2NhbigpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NhblR5cGUgPT09ICdGUk9OVCdcIj57e1xuICAgICAgICAgIFwic2NhbmRvYy5jYXB0dXJlRnJvbnRcIiB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NhblR5cGUgPT09ICdCQUNLJ1wiPnt7XG4gICAgICAgICAgXCJzY2FuZG9jLmNhcHR1cmVCYWNrXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NhblNpZGUgPT09IDFcIj57e1xuICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuY2FwdHVyZUJhY2tPZklkXCIgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInctMTAwLXBcIlxuICAgICAgKm5nSWY9XCJwcmV2aWV3XCJcbiAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleDogMVwiXG4gICAgPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImZsZXggbXItNFwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZXRyeSgpXCI+XG4gICAgICAgIHt7IFwic2NhbmRvYy5yZXRyeVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiZXJyb3JcIlxuICAgICAgICBjbGFzcz1cIm1sLTQgZmxleFwiXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjb250aW51ZSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgXCJzY2FuZG9jLmNvbnRpbnVlV2l0aFNlbGVjdGVkSW1hZ2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9vdGVyPlxuPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFudWFsLXNjYW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy9tYW51YWwtc2Nhbi9tYW51YWwtc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL21hbnVhbC1zY2FuL21hbnVhbC1zY2FuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQU1aLE1BQU0sRUFFTixZQUFZLEVBQ1osU0FBUyxFQUVULFdBQVcsR0FFWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFTbEQsTUFBTSxPQUFPLG1CQUNYLFNBQVEsYUFBYTtJQWdEckIsSUFBaUMsS0FBSztRQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztZQUVyRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxLQUFLLEVBQUU7b0JB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QUUsSUFBSSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBYztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUUzQixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsSUFBUztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN2QztRQUVELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7Z0hBMVNVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDJUQzdCaEMsdXlTQW9UQTsyRkR2UmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGlCQUFpQjtpTUFTakIsTUFBTTtzQkFBZixNQUFNO2dCQTRDYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ2MsS0FBSztzQkFBckMsV0FBVzt1QkFBQyxjQUFjO2dCQUkzQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9jYW1lcmEucHJvdmlkZXInO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0ZpZWxkc1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL3NjYW4uZm9ybSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvbGF5b3V0LnByb3ZpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LW1hbnVhbC1zY2FuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hbnVhbC1zY2FuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFudWFsLXNjYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYW51YWxTY2FuQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHZpZGVvT3B0aW9uczogTWVkaWFUcmFja0NvbnN0cmFpbnRzID0ge1xuICAgIHdpZHRoOiAxOTIwLFxuICAgIGhlaWdodDogMTA4MCxcbiAgICBmYWNpbmdNb2RlOiAnZW52aXJvbm1lbnQnLFxuICB9O1xuICBjYW1lcmFSZWFkeSA9IGZhbHNlO1xuICBzY2FuQmxhc3REYXRhOiBhbnkgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdzY2FuZG9jLmZyb250JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnc2NhbmRvYy5mcm9udERlc2NyaXB0aW9uJyxcbiAgICAgIHNpZGU6ICdGUk9OVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ3NjYW5kb2MuYmFjaycsXG4gICAgICBkZXNjcmlwdGlvbjogJ3NjYW5kb2MuYmFja0Rlc2NyaXB0aW9uJyxcbiAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgc2lkZTogJ0JBQ0snLFxuICAgIH0sXG4gIF07XG4gIGVycm9yID0gZmFsc2U7XG4gIHNjYW5pbmcgPSBmYWxzZTtcbiAgZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBzZWxlY3RlZFNpZGU6IGFueTtcbiAgcHJldmlldzogYW55ID0gbnVsbDtcbiAgc2NhblR5cGU6IGFueTtcbiAgd2lkdGg6IGFueTtcbiAgaGVpZ2h0OiBhbnk7XG4gIHZpZGVvV2lkdGg6IGFueTtcbiAgdmlkZW9IZWlnaHQ6IGFueTtcbiAgc2NhbkRhdGFzOiBhbnkgPSBbXTtcbiAgc2NhblNpZGU6IGFueTtcblxuICByZXN1bHQ6IGFueTtcbiAgd2ViY2FtSW1hZ2U6IGFueTtcbiAgcHVibGljIHRyaWdnZXI6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgLy8gc3dpdGNoIHRvIG5leHQgLyBwcmV2aW91cyAvIHNwZWNpZmljIHdlYmNhbTsgdHJ1ZS9mYWxzZTogZm9yd2FyZC9iYWNrd2FyZHMsIHN0cmluZzogZGV2aWNlSWRcbiAgcHVibGljIG5leHRXZWJjYW06IFN1YmplY3Q8Ym9vbGVhbiB8IHN0cmluZz4gPSBuZXcgU3ViamVjdDxcbiAgICBib29sZWFuIHwgc3RyaW5nXG4gID4oKTtcblxuICBpc01vYmlsZSA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCd3cmFwZXInKSB3cmFwZXI/OiBFbGVtZW50UmVmO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vYmlsZScpIGdldCBjbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc01vYmlsZTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoKSB7XG4gICAgaWYgKHRoaXMud3JhcGVyKSB7XG4gICAgICB0aGlzLndpZHRoID0gdGhpcy53cmFwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy53cmFwZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWRlbyA9IHRoaXMud3JhcGVyPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7XG4gICAgICAgIGlmICh2aWRlbykge1xuICAgICAgICAgIC8vICAgY29uc29sZS5sb2codmlkZW8uY2xpZW50V2lkdGgsIHZpZGVvLmNsaWVudEhlaWdodCk7XG4gICAgICAgICAgdGhpcy52aWRlb1dpZHRoID0gdmlkZW8uY2xpZW50V2lkdGg7XG4gICAgICAgICAgdGhpcy52aWRlb0hlaWdodCA9IHZpZGVvLmNsaWVudEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2FtZXJhUHJvdmlkZXI6IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGxheW91dFByb3ZpZGVyOiBMYXlvdXRQcm92aWRlcixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fX3N1YnModGhpcy5sYXlvdXRQcm92aWRlci5icmVha3BvaW50JCkuc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gIXYubWF0Y2hlcztcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnV1RGJyk7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICB9KTtcblxuICAgICAgY29uc29sZS5sb2coJ01OT0JJTEUnLCB0aGlzLmlzTW9iaWxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV4dFdlYmNhbU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMubmV4dFdlYmNhbS5hc09ic2VydmFibGUoKTtcbiAgfVxuICBwdWJsaWMgY2FtZXJhV2FzU3dpdGNoZWQoZGV2aWNlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdbYWN0aXZlIGRldmljZV0nLCBkZXZpY2VJZCk7XG4gICAgLy8gdGhpcy5kZXZpY2VJZCA9IGRldmljZUlkO1xuICAgIC8vIHRoaXMuY2FtZXJhUmVhZHkgPSB0cnVlO1xuICAgIC8vIHRoaXMuZGVmYXVsdERldmljZSA9IGRldmljZUlkO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgICAvLyB0aGlzLnNjYW4oKTtcbiAgICB9LCAzMDApO1xuICB9XG4gIHB1YmxpYyBoYW5kbGVJbml0RXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfVxuICByZXNvbHV0aW9uTGltaXQoZmlsZTogYW55KSB7XG4gICAgY29uc3QgbWluV2lkdGggPSAxMjgwO1xuICAgIGNvbnN0IG1pbkhlaWdodCA9IDcyMDtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltZy5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gaW1nLm5hdHVyYWxIZWlnaHQ7XG5cbiAgICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XG4gICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgIHZhbGlkID0gd2lkdGggPj0gbWluV2lkdGggJiYgaGVpZ2h0ID49IG1pbkhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWxpZCA9IHdpZHRoID49IG1pbkhlaWdodCAmJiBoZWlnaHQgPj0gbWluV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBvYnNlcnZlci5uZXh0KHZhbGlkKTtcbiAgICAgIH07XG4gICAgICBpbWcub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgZ2V0SW1nQmFzZTY0KG51bTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLmltYWdlLmRhdGFVcmwuc3BsaXQoJywnKVsxXTtcbiAgfVxuICBnZXRCYXNlNjQoZmlsZTogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChyZWFkZXIucmVzdWx0KTtcbiAgICAgIH07XG4gICAgICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGhhbmRsZUZpbGVJbnB1dCh0YXJnZXQ6IGFueSwgZXZlbnQ6IGFueSwgc2lkZTogYW55KSB7XG4gICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0ID0gdGFyZ2V0LmZpbGVzO1xuICAgIHRoaXMuc2VsZWN0ZWRTaWRlID0gc2lkZTtcbiAgICBjb25zb2xlLmxvZyhmaWxlcyk7XG4gICAgY29uc3QgZmlsZSA9IGZpbGVzLml0ZW0oMCk7XG5cbiAgICB0aGlzLnJlc29sdXRpb25MaW1pdChmaWxlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodmFsaWQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiB2YWxpZCA/IHRoaXMuZ2V0QmFzZTY0KGZpbGUpIDogb2YoZmFsc2UpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoaW1hZ2VBc0RhdGFVcmwpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coaW1hZ2VBc0RhdGFVcmwpO1xuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBudWxsO1xuICAgICAgICBpZiAoIWltYWdlQXNEYXRhVXJsKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdNSU4gUkVTJyk7XG4gICAgICAgICAgLy8gdGhpcy5kaWFsb2dzLmFsZXJ0KFxuICAgICAgICAgIC8vICAgJ2NvcmUucGFnZS5lcnJvcicsXG4gICAgICAgICAgLy8gICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgIC8vICAgICAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5taW5SZXNvbHV0aW9uJ1xuICAgICAgICAgIC8vICAgKVxuICAgICAgICAgIC8vICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2lkZS5pbWFnZSA9IHtcbiAgICAgICAgICAgIF9pbWFnZUFzRGF0YVVybDogaW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgICBpbWFnZUFzRGF0YVVybDogaW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFNpZGUuc2lkZSA9PT0gJ0ZST05UJykge1xuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBjYW1lcmFPZmYoZXY6IGFueSkge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG4gIHNpbmdsZVNjYW4oc2lkZTogYW55KSB7XG4gICAgdGhpcy5zY2FuVHlwZSA9IHNpZGUuc2lkZTtcbiAgICB0aGlzLnByZXZpZXcgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRTaWRlID0gc2lkZTtcblxuICAgIHRoaXMuc2VsZWN0ZWRTaWRlLmltYWdlID0gbnVsbDtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgc2NhbkJsYXN0RmluaXNoKCkge1xuICAgIHRoaXMuYWN0aW9uLmVtaXQodGhpcy5zY2FuQmxhc3REYXRhKTtcbiAgfVxuICBnZXQgc2NhbkJsYXN0Q2FuVXBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgcHVibGljIGhhbmRsZUltYWdlKHdlYmNhbUltYWdlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW3JlY2VpdmVkIHdlYmNhbSBpbWFnZV0nLCB3ZWJjYW1JbWFnZSk7XG5cbiAgICB0aGlzLndlYmNhbUltYWdlID0gd2ViY2FtSW1hZ2U7XG4gICAgdGhpcy5wcmV2aWV3ID0gd2ViY2FtSW1hZ2UuaW1hZ2VBc0RhdGFVcmw7XG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNvbnRpbnVlKCkge1xuICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFNpZGUuaW1hZ2UgPSB0aGlzLndlYmNhbUltYWdlO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTaWRlLnNpZGUgPT09ICdGUk9OVCcpIHtcbiAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAyMDApO1xuICB9XG4gIHJldHJ5KCkge1xuICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcblxuICAgIC8vIHRoaXMucmVzdWx0ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgZWxlbWVudC5pbWFnZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICB9XG4gIHB1YmxpYyB0cmlnZ2VyU25hcHNob3QoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyLm5leHQoMCk7XG4gIH1cbiAgc2NhbigpIHtcbiAgICBjb25zb2xlLmxvZygnU0NBTicpO1xuICAgIHRoaXMudHJpZ2dlclNuYXBzaG90KCk7XG4gICAgdGhpcy5zY2FuRGF0YXNbMF0gPSB0cnVlO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY2FtZXJhUHJvdmlkZXIpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgcm90YXRlQmFzZTY0SW1hZ2UoYmFzZTY0ZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgaW1hZ2Uuc3JjID0gYmFzZTY0ZGF0YTtcbiAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coY2FudmFzKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gaW1hZ2UuaGVpZ2h0O1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2Uud2lkdGg7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICBjdHgucm90YXRlKCg5MCAqIE1hdGguUEkpIC8gMTgwKTtcbiAgICAgICAgICBjdHgudHJhbnNsYXRlKDAsIC1jYW52YXMud2lkdGgpO1xuICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoY2FudmFzLnRvRGF0YVVSTCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcih7IHR5cGU6ICdnZW5lcmljIGVycm9yJyB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGltYWdlLm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgc2luZ2xlU2NhblJvdGF0ZShzaWRlOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhzaWRlKTtcbiAgICB0aGlzLnJvdGF0ZUJhc2U2NEltYWdlKHNpZGUuaW1hZ2UuaW1hZ2VBc0RhdGFVcmwpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgc2lkZS5pbWFnZSA9IHsgaW1hZ2VBc0RhdGFVcmw6IGRhdGEgfTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG4gIHZpZGVvUmVhZHkoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmxvZygnUkVBRFknLCBldmVudCk7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGV2ZW50O1xuXG4gIH1cbiAgc2luZ2xlU2NhblJlbW92ZShzaWRlOiBhbnkpIHtcbiAgICBzaWRlLmltYWdlID0gbnVsbDtcbiAgICBpZiAoc2lkZS5zaWRlID09PSAnRlJPTlQnKSB7XG4gICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCJcblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZXN1bHRcIj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb2N1bWVudFR5cGVTZWxlY3RlZFwiPlxuICA8c2VjdGlvblxuICAgIGNsYXNzPVwic2NhbkJsYXN0V3JhcGVyXCJcbiAgICBuZ0NsYXNzLmx0LW1kPVwibW9iaWxlXCJcbiAgICBmeEZsZXhcbiAgICBmeExheW91dD1cImNvbHVtblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2NhbkJsYXN0XCIgZnhGbGV4IGZ4TGF5b3V0Lmx0LW1kPVwiY29sdW1uXCIgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgIDxtYXQtY2FyZFxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZWRcIlxuICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW5cIlxuICAgICAgICBmeExheW91dD1cImNvbHVtblwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBzaWRlIG9mIHNjYW5CbGFzdERhdGFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IG5nQ2xhc3MubHQtc209XCJzbWFsbFwiIGNsYXNzPVwiaGVhZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGZ4RmxleD57eyBzaWRlLnRpdGxlIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvd1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzaW5nbGVTY2FuKHNpZGUpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzaWRlLmRpc2FibGVkXCJcbiAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHhcIlxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uV3JhcFwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2FtZXJhPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2Muc2NhbkNhbWVyYVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2lkZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA0cHhcIlxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXG4gICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVGaWxlSW5wdXQoJGV2ZW50LnRhcmdldCwgJGV2ZW50LCBzaWRlKVwiXG4gICAgICAgICAgICAgICNmaWxlXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbldyYXBcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZpbGVfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MudXNlRnJvbURpc2tcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogMVwiIGNsYXNzPVwicHJldmlld1BsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNpZGUuaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nV3JhcFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZsZXg6IDFcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICsgc2lkZS5pbWFnZS5pbWFnZUFzRGF0YVVybCArICcpJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0Lmx0LW1kPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3dcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNpbmdsZVNjYW5SZW1vdmUoc2lkZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItNCByZW1CdXR0b24gZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25XcmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MucmVtb3ZlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtNCByb3RhdGVCdXR0b24gZmxleFwiXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlU2NhblJvdGF0ZShzaWRlKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uV3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnJvdGF0ZV85MF9kZWdyZWVzX2N3PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2Mucm90YXRlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNpZGUuaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNpZGUuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1jYXJkPlxuICAgIDwvZGl2PlxuICAgIDxmb290ZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHgtOCBwYi04XCJcbiAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwcHggOHB4IDhweCA4cHg7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3dcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInNjYW5CbGFzdEZpbmlzaCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNjYW5CbGFzdENhblVwbG9hZFwiXG4gICAgICAgICAgc3R5bGU9XCJmbGV4OiAxXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnVwbG9hZFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2XG4gIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmbGV4OiAxXCJcbiAgKm5nSWY9XCJkb2N1bWVudFR5cGVTZWxlY3RlZFwiXG4+XG4gIDxkaXZcbiAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGZsZXg6IDFcIlxuICAgICN3cmFwZXJcbiAgICBjbGFzcz1cIndyYXBlclwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBzdHlsZT1cIlxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMHB4O1xuICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICB6LWluZGV4OiAyMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTtcbiAgICAgIFwiXG4gICAgICAqbmdJZj1cIiFjYW1lcmFSZWFkeSAmJiAhcHJldmlld1wiXG4gICAgPlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVycm9yXCI+XG4gICAgICA8bmd4LXNjYW5kb2Mtd2ViY2FtXG4gICAgICAgICpuZ0lmPVwiIXByZXZpZXcgJiYgIXNjYW5pbmdcIlxuICAgICAgICBjbGFzcz1cIm1haW4gZmxleFwiXG5cbiAgICAgICAgI3dlYmNhbVxuICAgICAgICBbdHJpZ2dlcl09XCJ0cmlnZ2VyXCJcbiAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJoYW5kbGVJbWFnZSgkZXZlbnQpXCJcbih2aWRlb1JlYWR5KT1cInZpZGVvUmVhZHkoJGV2ZW50KVwiXG4gICAgICAgIChjYW1lcmFTd2l0Y2hlZCk9XCJjYW1lcmFXYXNTd2l0Y2hlZCgkZXZlbnQpXCJcbiAgICAgICAgKGluaXRFcnJvcik9XCJoYW5kbGVJbml0RXJyb3IoJGV2ZW50KVwiXG4gICAgICAgIHR5cGU9XCJtYW51YWxcIlxuXG4gICAgICAgIChkZXN0cm95ZWQpPVwiY2FtZXJhT2ZmKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9uZ3gtc2NhbmRvYy13ZWJjYW0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcmV2aWV3RGF0YVwiXG4gICAgICAqbmdJZj1cInByZXZpZXdcIlxuICAgICAgc3R5bGU9XCJcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgei1pbmRleDogMjA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZXJyb3JcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb25cbiAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1sLThcIj57e1xuICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUudW5hYmxlVG9EZXRlY3RJZFwiIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUucGxhY2VJZENsb3NlVG9EZXZpY2VcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmVuc3VyZVN1ZmZpY2llbnRMaWdodFwiXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuaG9sZERvY3VtZW50U3RlYWR5XCJcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5tYWtlU3VyZUFsbEVkZ2VzT2ZUaGVJZEFyZVZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLm1ha2VTdXJlVGhlcmVBcmVOb0dsYXJlQW5kU2hhZG93c09uVGhlSWRcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNjYW5QcmV2aWV3XCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmbGV4OiAxXCJcbiAgICAgICAgKm5nSWY9XCIhZXJyb3IgJiYgIXNjYW5pbmdcIlxuICAgICAgPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweS0xNlwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5lbnN1cmVBbGxUZXh0c0FyZVZpc2libGVcIlxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPVwiZmxleDogMVwiXG4gICAgICAgICAgY2xhc3M9XCJpbWFnZVwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiJ3VybCgnICsgcHJldmlldyArICcpJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Zm9vdGVyIGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJwLThcIj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJkaXNwbGF5SW5mb1wiICpuZ0lmPVwiIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIj5cbiAgICAgIHt7IGRpc3BsYXlJbmZvIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMjZweDtcIj5cbiAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE4cHg7XCIgKm5nSWY9XCJpZFNjYW4gJiYgIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdCQUNLJ1wiPlxuICAgICAgICBUdXJuIGRvY3VtZW50IGFuZDpcbiAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmNhcHR1cmVCYWNrXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0ZST05UJ1wiPlxuICAgICAgICBUdXJuIGRvY3VtZW50IGFuZDpcbiAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmNhcHR1cmVGcm9udFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8YnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbWVyYVJlYWR5XCJcbiAgICAgIGNsYXNzPVwidy0xMDAtcFwiXG4gICAgICAqbmdJZj1cIiFwcmV2aWV3XCJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAoY2xpY2spPVwic2NhbigpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NhblR5cGUgPT09ICdGUk9OVCdcIj57e1xuICAgICAgICAgIFwic2NhbmRvYy5jYXB0dXJlRnJvbnRcIiB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NhblR5cGUgPT09ICdCQUNLJ1wiPnt7XG4gICAgICAgICAgXCJzY2FuZG9jLmNhcHR1cmVCYWNrXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NhblNpZGUgPT09IDFcIj57e1xuICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuY2FwdHVyZUJhY2tPZklkXCIgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInctMTAwLXBcIlxuICAgICAgKm5nSWY9XCJwcmV2aWV3XCJcbiAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleDogMVwiXG4gICAgPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImZsZXggbXItNFwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZXRyeSgpXCI+XG4gICAgICAgIHt7IFwic2NhbmRvYy5yZXRyeVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiZXJyb3JcIlxuICAgICAgICBjbGFzcz1cIm1sLTQgZmxleFwiXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjb250aW51ZSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgXCJzY2FuZG9jLmNvbnRpbnVlV2l0aFNlbGVjdGVkSW1hZ2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9vdGVyPlxuPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==