ngx-tethys 17.0.13 → 17.0.14

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.
@@ -1,17 +1,16 @@
1
- import { TabIndexDisabledControlValueAccessorMixin, getFlexiblePositions, ThyClickDispatcher, EXPANDED_DROPDOWN_POSITIONS } from 'ngx-tethys/core';
1
+ import { EXPANDED_DROPDOWN_POSITIONS, getFlexiblePositions, scaleYMotion, TabIndexDisabledControlValueAccessorMixin, ThyClickDispatcher } from 'ngx-tethys/core';
2
+ import { ThyEmpty } from 'ngx-tethys/empty';
3
+ import { ThyFlexibleText } from 'ngx-tethys/flexible-text';
4
+ import { ThyIcon } from 'ngx-tethys/icon';
5
+ import { ThySelectControl, ThyStopPropagationDirective } from 'ngx-tethys/shared';
2
6
  import { coerceBooleanProperty, elementMatchClosest, isArray, isObject, produce, warnDeprecation } from 'ngx-tethys/util';
3
7
  import { of, Subject } from 'rxjs';
4
8
  import { take, takeUntil } from 'rxjs/operators';
5
9
  import { CdkConnectedOverlay, CdkOverlayOrigin, ViewportRuler } from '@angular/cdk/overlay';
10
+ import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
6
11
  import { isPlatformBrowser, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';
7
12
  import { ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostBinding, Inject, Input, NgZone, Output, PLATFORM_ID, TemplateRef, ViewChild } from '@angular/core';
8
13
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
- import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
10
- import { ThyEmpty } from 'ngx-tethys/empty';
11
- import { ThyIcon } from 'ngx-tethys/icon';
12
- import { ThyFlexibleText } from 'ngx-tethys/flexible-text';
13
- import { ThySelectControl, ThyStopPropagationDirective } from 'ngx-tethys/shared';
14
- import { scaleYMotion } from 'ngx-tethys/core';
15
14
  import * as i0 from "@angular/core";
16
15
  import * as i1 from "ngx-tethys/core";
17
16
  import * as i2 from "@angular/cdk/overlay";
@@ -49,6 +48,9 @@ export class ThyTreeSelect extends TabIndexDisabledControlValueAccessorMixin {
49
48
  if (this.initialled) {
50
49
  this.flattenTreeNodes = this.flattenNodes(this.treeNodes, this.flattenTreeNodes, []);
51
50
  this.setSelectedNodes();
51
+ if (this.thyVirtualScroll) {
52
+ this.buildFlattenTreeNodes();
53
+ }
52
54
  }
53
55
  }
54
56
  get thyDisabled() {
@@ -652,4 +654,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
652
654
  }], thyVirtualScroll: [{
653
655
  type: Input
654
656
  }] } });
655
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC1ub2Rlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gseUNBQXlDLEVBQ3pDLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzlCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFILE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUEwQixhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckcsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sV0FBVyxFQUNYLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFD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V0FBVyxFQUFFLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsNkJBQTZCO1FBQzdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxJQUF1QjtRQUM3QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzhHQXZIUSxrQkFBa0I7a0dBQWxCLGtCQUFrQixtT0Uza0IvQix3a0ZBcURBLDRDRnNnQlEsSUFBSSw2RkFDSixLQUFLLG1IQUNMLGdCQUFnQixvSkFDaEIsd0JBQXdCLGlKQUN4Qix5QkFBeUIsc0lBQ3pCLGVBQWUsNkxBQ2YsUUFBUSw4VEFDUixPQUFPLG9GQUNQLE9BQU8sMkVBQ1AsT0FBTyxzTUFDUCxlQUFlOzsyRkFNVixrQkFBa0I7a0JBckI5QixTQUFTOytCQUNJLHVCQUF1QixjQUVyQixJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixLQUFLO3dCQUNMLGdCQUFnQjt3QkFDaEIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLGVBQWU7d0JBQ2YsUUFBUTt3QkFDUixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxlQUFlO3FCQUNsQixRQUNLO3dCQUNGLGlCQUFpQixFQUFFLElBQUk7cUJBQzFCOytFQUdxQixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBSVAsU0FBUztzQkFBckIsS0FBSztnQkFPRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFRhYkluZGV4RGlzYWJsZWRDb250cm9sVmFsdWVBY2Nlc3Nvck1peGluLFxuICAgIGdldEZsZXhpYmxlUG9zaXRpb25zLFxuICAgIFRoeUNsaWNrRGlzcGF0Y2hlcixcbiAgICBFWFBBTkRFRF9EUk9QRE9XTl9QT1NJVElPTlNcbn0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeVRyZWVOb2RlIH0gZnJvbSAnbmd4LXRldGh5cy90cmVlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgZWxlbWVudE1hdGNoQ2xvc2VzdCwgaXNBcnJheSwgaXNPYmplY3QsIHByb2R1Y2UsIHdhcm5EZXByZWNhdGlvbiB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2luLCBDb25uZWN0aW9uUG9zaXRpb25QYWlyLCBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLCBDZGtWaXJ0dWFsRm9yT2YsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgVGh5RW1wdHkgfSBmcm9tICduZ3gtdGV0aHlzL2VtcHR5JztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5RmxleGlibGVUZXh0IH0gZnJvbSAnbmd4LXRldGh5cy9mbGV4aWJsZS10ZXh0JztcbmltcG9ydCB7IFRoeVNlbGVjdENvbnRyb2wsIFRoeVN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IFRoeVRyZWVTZWxlY3ROb2RlLCBUaHlUcmVlU2VsZWN0VHlwZSB9IGZyb20gJy4vdHJlZS1zZWxlY3QuY2xhc3MnO1xuaW1wb3J0IHsgc2NhbGVZTW90aW9uIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcblxudHlwZSBJbnB1dFNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJUcmVlRGF0YSh0cmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10sIHNlYXJjaFRleHQ6IHN0cmluZywgc2VhcmNoS2V5OiBzdHJpbmcgPSAnbmFtZScpIHtcbiAgICBjb25zdCBmaWx0ZXJOb2RlcyA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSwgcmVzdWx0OiBUaHlUcmVlU2VsZWN0Tm9kZVtdKSA9PiB7XG4gICAgICAgIGlmIChub2RlW3NlYXJjaEtleV0gJiYgbm9kZVtzZWFyY2hLZXldLmluZGV4T2Yoc2VhcmNoVGV4dCkgIT09IC0xKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gbm9kZS5jaGlsZHJlbi5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBmaWx0ZXJOb2RlcyhjdXJyZW50LCBwcmV2aW91cyksIFtdIGFzIFRoeVRyZWVTZWxlY3ROb2RlW10pO1xuICAgICAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB7IC4uLm5vZGUsIGNoaWxkcmVuOiBub2RlcywgZXhwYW5kOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIGNvbnN0IHRyZWVEYXRhID0gdHJlZU5vZGVzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IGZpbHRlck5vZGVzKGN1cnJlbnQsIHByZXZpb3VzKSwgW10gYXMgVGh5VHJlZVNlbGVjdE5vZGVbXSk7XG4gICAgcmV0dXJuIHRyZWVEYXRhO1xufVxuXG4vKipcbiAqIOagkemAieaLqee7hOS7tlxuICogQG5hbWUgdGh5LXRyZWUtc2VsZWN0XG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktdHJlZS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5VHJlZVNlbGVjdCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgVGh5U2VsZWN0Q29udHJvbCxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBUaHlUcmVlU2VsZWN0Tm9kZXMpLFxuICAgICAgICBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnb25CbHVyKCRldmVudCknXG4gICAgfSxcbiAgICBhbmltYXRpb25zOiBbc2NhbGVZTW90aW9uXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0IGV4dGVuZHMgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXNlbGVjdC1jdXN0b20nKSB0cmVlU2VsZWN0Q2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktc2VsZWN0JykgaXNUcmVlU2VsZWN0ID0gdHJ1ZTtcblxuICAgIC8vIOiPnOWNleaYr+WQpuWxleW8gFxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWVudS1pcy1vcGVuZWQnKSBleHBhbmRUcmVlU2VsZWN0T3B0aW9ucyA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktc2VsZWN0LWN1c3RvbS0tbXVsdGlwbGUnKSBpc011bHRpID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgdHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdO1xuXG4gICAgcHVibGljIHNlbGVjdGVkVmFsdWU6IGFueTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZE5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlO1xuXG4gICAgcHVibGljIHNlbGVjdGVkTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIHB1YmxpYyBmbGF0dGVuVHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW107XG5cbiAgICB2aXJ0dWFsVHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW107XG5cbiAgICBwdWJsaWMgY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IDA7XG5cbiAgICBwdWJsaWMgcG9zaXRpb25zOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW107XG5cbiAgICBwdWJsaWMgZXhwYW5kZWREcm9wZG93blBvc2l0aW9ucyA9IEVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OUztcblxuICAgIHB1YmxpYyBpY29uczogeyBleHBhbmQ6IHN0cmluZzsgY29sbGFwc2U6IHN0cmluZzsgZ2FwPzogbnVtYmVyIH0gPSB7XG4gICAgICAgIGV4cGFuZDogJ2FuZ2xlLWRvd24nLFxuICAgICAgICBjb2xsYXBzZTogJ2FuZ2xlLXJpZ2h0JyxcbiAgICAgICAgZ2FwOiAxNVxuICAgIH07XG5cbiAgICBwcml2YXRlIGluaXRpYWxsZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHVibGljIHZhbHVlSXNPYmplY3QgPSBmYWxzZTtcblxuICAgIG9yaWdpblRyZWVOb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3RoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheScpXG4gICAgdGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgndHJlZU5vZGVUZW1wbGF0ZScpXG4gICAgdHJlZU5vZGVUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrT3ZlcmxheU9yaWdpbiwgeyBzdGF0aWM6IHRydWUgfSkgY2RrT3ZlcmxheU9yaWdpbjogQ2RrT3ZlcmxheU9yaWdpbjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrQ29ubmVjdGVkT3ZlcmxheSwgeyBzdGF0aWM6IHRydWUgfSkgY2RrQ29ubmVjdGVkT3ZlcmxheTogQ2RrQ29ubmVjdGVkT3ZlcmxheTtcblxuICAgIEBWaWV3Q2hpbGQoJ2N1c3RvbURpc3BsYXlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIGN1c3RvbURpc3BsYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIHRyZWVOb2RlcyDmlbDmja5cbiAgICAgKiBAdHlwZSBUaHlUcmVlU2VsZWN0Tm9kZVtdXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VHJlZU5vZGVzKHZhbHVlOiBUaHlUcmVlU2VsZWN0Tm9kZVtdKSB7XG4gICAgICAgIHRoaXMudHJlZU5vZGVzID0gdmFsdWU7XG4gICAgICAgIHRoaXMub3JpZ2luVHJlZU5vZGVzID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmxhdHRlblRyZWVOb2RlcyA9IHRoaXMuZmxhdHRlbk5vZGVzKHRoaXMudHJlZU5vZGVzLCB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMsIFtdKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWROb2RlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5byA5ZCv6Jma5ouf5rua5YqoXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5VmlydHVhbFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5qCR6IqC54K555qE5ZSv5LiA5qCH6K+GXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UHJpbWFyeUtleSA9ICdfaWQnO1xuXG4gICAgLyoqXG4gICAgICog5qCR6IqC54K555qE5pi+56S655qE5a2X5q61IGtleVxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNob3dLZXkgPSAnbmFtZSc7XG5cbiAgICBASW5wdXQoKSB0aHlDaGlsZENvdW50S2V5ID0gJ2NoaWxkQ291bnQnO1xuXG4gICAgLyoqXG4gICAgICog5Y2V6YCJ5pe277yM5piv5ZCm5pi+56S65riF6Zmk5oyJ6ZKu77yM5b2T5Li6IHRydWUg5pe277yM5pi+56S65riF6Zmk5oyJ6ZKuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBbGxvd0NsZWFyOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeU11bHRpcGxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbnpoHnlKjmoJHpgInmi6nlmajvvIzlvZPkuLogdHJ1ZSDnpoHnlKjmoJHpgInmi6nlmahcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5RGlzYWJsZSA9IGZhbHNlO1xuXG4gICAgZ2V0IHRoeURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlEaXNhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagkemAieaLqeahhum7mOiupOaWh+Wtl1xuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlaG9sZGVyID0gJ+ivt+mAieaLqeiKgueCuSc7XG5cbiAgICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaOp+WItuagkemAieaLqeeahOi+k+WFpeahhuWkp+Wwj1xuICAgICAqIEB0eXBlIHhzIHwgc20gfCBtZCB8IGRlZmF1bHQgfCBsZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IElucHV0U2l6ZTtcblxuICAgIC8qKlxuICAgICAqIOaUueWPmOepuumAiemhueeahOaDheWGteS4i+eahOaPkOekuuaWh+acrFxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUVtcHR5T3B0aW9uc1RleHQgPSAn5pqC5pe25rKh5pyJ5pWw5o2u5Y+v6YCJJztcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpumakOiXj+iKgueCuSjkuI3lj6/ov5vooYzku7vkvZXmk43kvZwp77yM5LyY5YWI57qn6auY5LqOIHRoeUhpZGRlbk5vZGVGblxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUhpZGRlbk5vZGVLZXkgPSAnaGlkZGVuJztcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpuemgeeUqOiKgueCuSjkuI3lj6/ov5vooYzku7vkvZXmk43kvZwp77yM5LyY5YWI57qn6auY5LqOIHRoeURpc2FibGVOb2RlRm5cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlEaXNhYmxlTm9kZUtleSA9ICdkaXNhYmxlZCc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblvILmraXliqDovb3oioLngrnnmoTlrZDoioLngrko5pi+56S65Yqg6L2954q25oCBKe+8jOW9k+S4uiB0cnVlIOaXtu+8jOW8guatpeiOt+WPllxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBc3luY05vZGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWxleekuuWFqOWQjVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlTaG93V2hvbGVOYW1lID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrmkJzntKJcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5U2hvd1NlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5Zu+5qCH57G75Z6L77yM5pSv5oyBIGRlZmF1bHQgfCBlc3BlY2lhbO+8jOW3suW6n+W8g1xuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5SWNvblR5cGUodHlwZTogVGh5VHJlZVNlbGVjdFR5cGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICAgICAgd2FybkRlcHJlY2F0aW9uKCdUaGlzIHBhcmFtZXRlciBoYXMgYmVlbiBkZXByZWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmICh0eXBlID09PSAnZXNwZWNpYWwnKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmljb25zID0geyBleHBhbmQ6ICdtaW51cy1zcXVhcmUnLCBjb2xsYXBzZTogJ3BsdXMtc3F1YXJlJywgZ2FwOiAyMCB9O1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5pY29ucyA9IHsgZXhwYW5kOiAnY2FyZXQtcmlnaHQtZG93bicsIGNvbGxhcHNlOiAnY2FyZXQtcmlnaHQnLCBnYXA6IDE1IH07XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbpmpDol4/oioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKSzkvJjlhYjnuqfkvY7kuo4gdGh5SGlkZGVuTm9kZUtleeOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5oaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlIaWRkZW5Ob2RlRm46IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5oaWRkZW47XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbnpoHnlKjoioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKe+8jOS8mOWFiOe6p+S9juS6jiB0aHlEaXNhYmxlTm9kZUtleeOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5kaXNhYmxlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeURpc2FibGVOb2RlRm46IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5kaXNhYmxlZDtcblxuICAgIC8qKlxuICAgICAqIOiOt+WPluiKgueCueeahOWtkOiKgueCue+8jOi/lOWbniBPYnNlcnZhYmxlPFRoeVRyZWVTZWxlY3ROb2RlPuOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gT2JzZXJ2YWJsZTxUaHlUcmVlU2VsZWN0Tm9kZT4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG9mKFtdKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUdldE5vZGVDaGlsZHJlbjogKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBPYnNlcnZhYmxlPFRoeVRyZWVTZWxlY3ROb2RlPiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gb2YoW10pO1xuXG4gICAgLyoqXG4gICAgICog5qCR6YCJ5oup57uE5Lu25bGV5byA5ZKM5oqY5Y+g54q25oCB5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUV4cGFuZFN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfZ2V0TmdNb2RlbFR5cGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlSXNPYmplY3QgPSAhdGhpcy5zZWxlY3RlZFZhbHVlWzBdIHx8IGlzT2JqZWN0KHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlSXNPYmplY3QgPSBpc09iamVjdCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkRmxhdHRlblRyZWVOb2RlcygpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsVHJlZU5vZGVzID0gdGhpcy5nZXRGbGF0dGVuVHJlZU5vZGVzKHRoaXMudHJlZU5vZGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZsYXR0ZW5UcmVlTm9kZXMocm9vdFRyZWVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gdGhpcy50cmVlTm9kZXMpIHtcbiAgICAgICAgY29uc3QgZm9yRWFjaFRyZWUgPSAodHJlZTogVGh5VHJlZVNlbGVjdE5vZGVbXSwgZm46IGFueSwgcmVzdWx0OiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW10pID0+IHtcbiAgICAgICAgICAgIHRyZWUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBmbihpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoVHJlZShpdGVtLmNoaWxkcmVuLCBmbiwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmb3JFYWNoVHJlZShyb290VHJlZXMsIChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gISFub2RlLmV4cGFuZCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZ2V0TmdNb2RlbFR5cGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgdGh5Q2xpY2tEaXNwYXRjaGVyOiBUaHlDbGlja0Rpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGdldEZsZXhpYmxlUG9zaXRpb25zKCdib3R0b20nLCA0KTtcbiAgICAgICAgdGhpcy5pc011bHRpID0gdGhpcy50aHlNdWx0aXBsZTtcbiAgICAgICAgdGhpcy5mbGF0dGVuVHJlZU5vZGVzID0gdGhpcy5mbGF0dGVuTm9kZXModGhpcy50cmVlTm9kZXMsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgW10pO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsbGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2xpY2tEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld3BvcnRSdWxlclxuICAgICAgICAgICAgLmNoYW5nZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgIGlucHV0RWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIC8vIDEuIFRhYiDogZrnhKblkI7oh6rliqjogZrnhKbliLAgaW5wdXQg6L6T5YWl5qGG77yM5q2k5YiG5pSv5LiL55u05o6l6L+U5Zue77yM5peg6ZyA6Kem5Y+RIG9uVG91Y2hlZEZuXG4gICAgICAgIC8vIDIuIOaJk+W8gOmAieaLqeahhuWQjuWmguaenOeCueWHu+W8ueahhuWGheWvvOiHtCBpbnB1dCDlpLHnhKbvvIzml6DpnIDop6blj5Egb25Ub3VjaGVkRm5cbiAgICAgICAgaWYgKGVsZW1lbnRNYXRjaENsb3Nlc3QoJGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBbJ3RoeS10cmVlLXNlbGVjdCcsICd0aHktdHJlZS1zZWxlY3Qtbm9kZXMnXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZFZhbHVlT2JqZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgIH1cblxuICAgIHNlYXJjaFZhbHVlKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRyZWVOb2RlcyA9IGZpbHRlclRyZWVEYXRhKHRoaXMub3JpZ2luVHJlZU5vZGVzLCBzZWFyY2hUZXh0LnRyaW0oKSwgdGhpcy50aHlTaG93S2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UG9zaXRpb24oKSB7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLmNka0Nvbm5lY3RPdmVybGF5V2lkdGggPSB0aGlzLmNka092ZXJsYXlPcmlnaW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmxhdHRlbk5vZGVzKFxuICAgICAgICBub2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICByZXN1bHROb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICBwYXJlbnRQcmltYXJ5VmFsdWU6IHN0cmluZ1tdID0gW11cbiAgICApOiBUaHlUcmVlU2VsZWN0Tm9kZVtdIHtcbiAgICAgICAgcmVzdWx0Tm9kZXMgPSByZXN1bHROb2Rlcy5jb25jYXQobm9kZXMpO1xuICAgICAgICBsZXQgbm9kZXNMZWFmczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuICAgICAgICAobm9kZXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnBhcmVudFZhbHVlcyA9IHBhcmVudFByaW1hcnlWYWx1ZTtcbiAgICAgICAgICAgIGl0ZW0ubGV2ZWwgPSBpdGVtLnBhcmVudFZhbHVlcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUxlYWZzID0gdGhpcy5mbGF0dGVuTm9kZXMoaXRlbS5jaGlsZHJlbiwgcmVzdWx0Tm9kZXMsIFsuLi5wYXJlbnRQcmltYXJ5VmFsdWUsIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XV0pO1xuICAgICAgICAgICAgICAgIG5vZGVzTGVhZnMgPSBbLi4ubm9kZXNMZWFmcywgLi4ubm9kZUxlYWZzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbLi4ubm9kZXMsIC4uLm5vZGVzTGVhZnNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmRUcmVlTm9kZSh2YWx1ZTogc3RyaW5nKTogVGh5VHJlZVNlbGVjdE5vZGUge1xuICAgICAgICByZXR1cm4gKHRoaXMuZmxhdHRlblRyZWVOb2RlcyB8fCBbXSkuZmluZChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2VsZWN0ZWROb2RlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgLy8g5aSa6YCJ5pWw5o2u5Yid5aeL5YyWXG4gICAgICAgICAgICBpZiAodGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0ICYmIE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSkuaW5kZXhPZih0aGlzLnRoeVByaW1hcnlLZXkpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kVHJlZU5vZGUoaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRUcmVlTm9kZShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDljZXpgInmlbDmja7liJ3lp4vljJZcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkVmFsdWUpLmluZGV4T2YodGhpcy50aHlQcmltYXJ5S2V5KSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy50aHlQcmltYXJ5S2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblNlbGVjdFBvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5RGlzYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IHRoaXMuY2RrT3ZlcmxheU9yaWdpbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSAhdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucztcbiAgICAgICAgdGhpcy50aHlFeHBhbmRTdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zKTtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGVkVmFsdWUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGFuZ2VTZWxlY3RWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVJc09iamVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZVxuICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZE5vZGVzLm1hcChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSlcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWROb2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlTXVsdGlwbGVTZWxlY3RlZE5vZGUoZXZlbnQ6IHsgaXRlbTogVGh5VHJlZVNlbGVjdE5vZGU7ICRldmVudE9yaWdpbjogRXZlbnQgfSkge1xuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkTm9kZShldmVudC5pdGVtLCBldmVudC4kZXZlbnRPcmlnaW4pO1xuICAgIH1cblxuICAgIC8vIHRoeU11bHRpcGxlID0gdHJ1ZSDml7bvvIznp7vpmaTmlbDmja7ml7bosIPnlKhcbiAgICByZW1vdmVTZWxlY3RlZE5vZGUobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUsIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlEaXNhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHByb2R1Y2UodGhpcy5zZWxlY3RlZE5vZGVzKS5yZW1vdmUoKGl0ZW06IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Tm9kZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldID09PSBub2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWROb2RlKG5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBwcm9kdWNlKHRoaXMuc2VsZWN0ZWROb2RlcykuYWRkKG5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZVNlbGVjdFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROb2RlQ2hpbGRyZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy50aHlHZXROb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN1YnNjcmliZSkge1xuICAgICAgICAgICAgcmVzdWx0LnBpcGUoKS5zdWJzY3JpYmUoKGRhdGE6IFRoeVRyZWVTZWxlY3ROb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZmxhdHRlbk5vZGVzKGRhdGEsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgWy4uLm5vZGUucGFyZW50VmFsdWVzLCBub2RlW3RoaXMudGh5UHJpbWFyeUtleV1dKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlck5vZGVzID0gbm9kZXMuZmlsdGVyKChpdGVtOiBUaHlUcmVlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmxhdHRlblRyZWVOb2Rlcy5maW5kKGhhc0l0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0l0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMgPSBbLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVzLCAuLi5vdGhlck5vZGVzXTtcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuID0gZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgREVGQVVMVF9JVEVNX1NJWkUgPSA0MDtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10cmVlLXNlbGVjdC1ub2RlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VsZWN0LW5vZGVzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgICAgICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICAgICAgQ2RrVmlydHVhbEZvck9mLFxuICAgICAgICBUaHlFbXB0eSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5RmxleGlibGVUZXh0XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0Tm9kZXMgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzczogc3RyaW5nO1xuXG4gICAgbm9kZUxpc3Q6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCB0cmVlTm9kZXModmFsdWU6IFRoeVRyZWVTZWxlY3ROb2RlW10pIHtcbiAgICAgICAgY29uc3QgdHJlZVNlbGVjdEhlaWdodCA9IHRoaXMuZGVmYXVsdEl0ZW1TaXplICogdmFsdWUubGVuZ3RoO1xuICAgICAgICAvLyDniLbnuqforr7nva7kuoZtYXgtaGVpZ2h0OjMwMCAmIHBhZGRpbmc6MTAgMDsg5pWF5q2k5aSE5pyA5aSa6K6+572uMjgw77yM5ZCm5YiZ5bCG5Ye6546w5rua5Yqo5p2hXG4gICAgICAgIHRoaXMudGh5VmlydHVhbEhlaWdodCA9IHRyZWVTZWxlY3RIZWlnaHQgPiAzMDAgPyAnMjgwcHgnIDogYCR7dHJlZVNlbGVjdEhlaWdodH1weGA7XG4gICAgICAgIHRoaXMubm9kZUxpc3QgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSB0aHlWaXJ0dWFsU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgcHJpbWFyeUtleSA9IHRoaXMucGFyZW50LnRoeVByaW1hcnlLZXk7XG5cbiAgICBwdWJsaWMgc2hvd0tleSA9IHRoaXMucGFyZW50LnRoeVNob3dLZXk7XG5cbiAgICBwdWJsaWMgaXNNdWx0aXBsZSA9IHRoaXMucGFyZW50LnRoeU11bHRpcGxlO1xuXG4gICAgcHVibGljIHZhbHVlSXNPYmplY3QgPSB0aGlzLnBhcmVudC52YWx1ZUlzT2JqZWN0O1xuXG4gICAgcHVibGljIHNlbGVjdGVkVmFsdWUgPSB0aGlzLnBhcmVudC5zZWxlY3RlZFZhbHVlO1xuXG4gICAgcHVibGljIGNoaWxkQ291bnRLZXkgPSB0aGlzLnBhcmVudC50aHlDaGlsZENvdW50S2V5O1xuXG4gICAgcHVibGljIHRyZWVOb2RlVGVtcGxhdGVSZWYgPSB0aGlzLnBhcmVudC50cmVlTm9kZVRlbXBsYXRlUmVmO1xuXG4gICAgcHVibGljIGRlZmF1bHRJdGVtU2l6ZSA9IERFRkFVTFRfSVRFTV9TSVpFO1xuXG4gICAgcHVibGljIHRoeVZpcnR1YWxIZWlnaHQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBUaHlUcmVlU2VsZWN0KSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY2xhc3MgPSB0aGlzLmlzTXVsdGlwbGUgPyAndGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duIHRoeS10cmVlLXNlbGVjdC1kcm9wZG93bi1tdWx0aXBsZScgOiAndGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duJztcbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzU2VsZWN0ZWQobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZXMgfHwgW10pLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy5wcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnByaW1hcnlLZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlICYmIHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZVt0aGlzLnByaW1hcnlLZXldID09PSBub2RlW3RoaXMucHJpbWFyeUtleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzSGlkZGVuKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlIaWRkZW5Ob2RlS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVt0aGlzLnBhcmVudC50aHlIaWRkZW5Ob2RlS2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUZuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUZuKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzRGlzYWJsZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5RGlzYWJsZU5vZGVLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlW3RoaXMucGFyZW50LnRoeURpc2FibGVOb2RlS2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5RGlzYWJsZU5vZGVGbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LnRoeURpc2FibGVOb2RlRm4obm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyZWVOb2RlSXNFeHBhbmQobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgbGV0IGlzU2VsZWN0ZWROb2RlUGFyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgaXNTZWxlY3RlZE5vZGVQYXJlbnQgPSAhISh0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVzIHx8IFtdKS5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnBhcmVudFZhbHVlcy5pbmRleE9mKG5vZGVbdGhpcy5wcmltYXJ5S2V5XSkgPiAtMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNTZWxlY3RlZE5vZGVQYXJlbnQgPSB0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVcbiAgICAgICAgICAgICAgICA/IHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZS5wYXJlbnRWYWx1ZXMuaW5kZXhPZihub2RlW3RoaXMucHJpbWFyeUtleV0pID4gLTFcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzRXhwYW5kID0gbm9kZS5leHBhbmQgfHwgKE9iamVjdC5rZXlzKG5vZGUpLmluZGV4T2YoJ2V4cGFuZCcpIDwgMCAmJiBpc1NlbGVjdGVkTm9kZVBhcmVudCk7XG4gICAgICAgIG5vZGUuZXhwYW5kID0gaXNFeHBhbmQ7XG4gICAgICAgIHJldHVybiBpc0V4cGFuZDtcbiAgICB9XG5cbiAgICBnZXROb2RlQ2hpbGRyZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmdldE5vZGVDaGlsZHJlbihub2RlKTtcbiAgICB9XG5cbiAgICBzZWxlY3RUcmVlTm9kZShldmVudDogRXZlbnQsIG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICghdGhpcy50cmVlTm9kZUlzRGlzYWJsZShub2RlKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2VsZWN0Tm9kZShub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5vZGVFeHBhbmRUb2dnbGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKG5vZGUpLmluZGV4T2YoJ2V4cGFuZCcpID4gLTEpIHtcbiAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gIW5vZGUuZXhwYW5kO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZU5vZGVJc0V4cGFuZChub2RlKSkge1xuICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmV4cGFuZCAmJiB0aGlzLnBhcmVudC50aHlBc3luY05vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Tm9kZUNoaWxkcmVuKG5vZGUpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2V0UG9zaXRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMucGFyZW50LnNldFBvc2l0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLnRoeVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFiVHJhY2tCeShpbmRleDogbnVtYmVyLCBpdGVtOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuIiwiPGRpdlxuICBjZGtPdmVybGF5T3JpZ2luXG4gIHRoeVNlbGVjdENvbnRyb2xcbiAgKGNsaWNrKT1cIm9wZW5TZWxlY3RQb3AoKVwiXG4gICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgW3RoeVBhbmVsT3BlbmVkXT1cImV4cGFuZFRyZWVTZWxlY3RPcHRpb25zXCJcbiAgW3RoeVNlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZFZhbHVlT2JqZWN0XCJcbiAgW3RoeUlzTXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICBbdGh5QWxsb3dDbGVhcl09XCJ0aHlBbGxvd0NsZWFyXCJcbiAgW3RoeVNpemVdPVwidGh5U2l6ZVwiXG4gIFt0aHlQbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtjdXN0b21EaXNwbGF5VGVtcGxhdGVdPVwiY3VzdG9tRGlzcGxheVRlbXBsYXRlXCJcbiAgW3RoeVNob3dTZWFyY2hdPVwidGh5U2hvd1NlYXJjaFwiXG4gIFt0aHlEaXNhYmxlZF09XCJ0aHlEaXNhYmxlXCJcbiAgKHRoeU9uQmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICh0aHlPbkNsZWFyKT1cImNsZWFyU2VsZWN0ZWRWYWx1ZSgkZXZlbnQpXCJcbiAgKHRoeU9uUmVtb3ZlKT1cInJlbW92ZU11bHRpcGxlU2VsZWN0ZWROb2RlKCRldmVudClcIlxuICAodGh5T25TZWFyY2gpPVwic2VhcmNoVmFsdWUoJGV2ZW50KVwiPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbURpc3BsYXlUZW1wbGF0ZSBsZXQtbm9kZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5UmVmOyBlbHNlIG5vbmVUZW1wbGF0ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vbmVUZW1wbGF0ZT5cbiAgICAgIHt7IG5vZGVbdGh5U2hvd0tleV0gfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwiZmFsc2VcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJwb3NpdGlvbnNcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoXT1cImNka0Nvbm5lY3RPdmVybGF5V2lkdGhcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnNcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT249XCIudGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiZXhwYW5kZWREcm9wZG93blBvc2l0aW9uc1wiXG4gIChkZXRhY2gpPVwiY2xvc2UoKVwiPlxuICA8dGh5LXRyZWUtc2VsZWN0LW5vZGVzXG4gICAgdGh5U3RvcFByb3BhZ2F0aW9uXG4gICAgW3RoeVZpcnR1YWxTY3JvbGxdPVwidGh5VmlydHVhbFNjcm9sbFwiXG4gICAgW3RyZWVOb2Rlc109XCJ0aHlWaXJ0dWFsU2Nyb2xsID8gdmlydHVhbFRyZWVOb2RlcyA6IHRyZWVOb2Rlc1wiXG4gICAgW0BzY2FsZVlNb3Rpb25dPVwiJ2VudGVyJ1wiPlxuICA8L3RoeS10cmVlLXNlbGVjdC1ub2Rlcz5cbjwvbmctdGVtcGxhdGU+XG4iLCI8ZGl2IGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW9wdGlvbnNcIiAqbmdJZj1cIm5vZGVMaXN0Py5sZW5ndGggPiAwOyBlbHNlIGVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgPGRpdiBjbGFzcz1cInRoeS10cmVlLXNlbGVjdC1ub2RlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aHlWaXJ0dWFsU2Nyb2xsXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGVMaXN0XCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJlZVNlbGVjdE5vZGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAjdmlld3BvcnQgKm5nSWY9XCJ0aHlWaXJ0dWFsU2Nyb2xsXCIgW2l0ZW1TaXplXT1cImRlZmF1bHRJdGVtU2l6ZVwiIFtzdHlsZS5oZWlnaHRdPVwidGh5VmlydHVhbEhlaWdodFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVMaXN0OyB0cmFja0J5OiB0YWJUcmFja0J5XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VtcHR5UGxhY2Vob2xkZXI+XG4gIDx0aHktZW1wdHkgY2xhc3M9XCJ0aHktc2VsZWN0LWVtcHR5LWNvbnRlbnRcIiB0aHlTaXplPVwic21cIiBbdGh5TWVzc2FnZV09XCJwYXJlbnQudGh5RW1wdHlPcHRpb25zVGV4dFwiPjwvdGh5LWVtcHR5PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmVlU2VsZWN0Tm9kZSBsZXQtbm9kZT5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJ0aHktb3B0aW9uLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHRyZWVOb2RlSXNTZWxlY3RlZChub2RlKSB9XCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0cmVlTm9kZUlzRGlzYWJsZShub2RlKVwiXG4gICAgICBbbmdTdHlsZV09XCJ7ICdwYWRkaW5nLWxlZnQucHgnOiAyMCAqIG5vZGUubGV2ZWwgKyBwYXJlbnQuaWNvbnMuZ2FwIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFRyZWVOb2RlKCRldmVudCwgbm9kZSlcIlxuICAgICAgKm5nSWY9XCIhdHJlZU5vZGVJc0hpZGRlbihub2RlKVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJ0aHktdHJlZS1zZWxlY3Qtb3B0aW9uLWljb25cIlxuICAgICAgICBbY2xhc3MuaW52aXNpYmxlXT1cIiEobm9kZS5jaGlsZHJlbj8ubGVuZ3RoID4gMCB8fCAobm9kZVtjaGlsZENvdW50S2V5XSAmJiBub2RlW2NoaWxkQ291bnRLZXldID4gMCkpXCJcbiAgICAgICAgKGNsaWNrKT1cIm5vZGVFeHBhbmRUb2dnbGUoJGV2ZW50LCBub2RlKVwiPlxuICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJub2RlLWV4cGFuZC1pY29uXCIgW3RoeUljb25OYW1lXT1cInRyZWVOb2RlSXNFeHBhbmQobm9kZSkgPyBwYXJlbnQuaWNvbnMuZXhwYW5kIDogcGFyZW50Lmljb25zLmNvbGxhcHNlXCI+PC90aHktaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW9wdGlvbi10ZXh0XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ0lmPVwidHJlZU5vZGVUZW1wbGF0ZVJlZjsgZWxzZSBkZWZhdWx0Tm9kZVRleHRcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVOb2RlVGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9kZVRleHQ+XG4gICAgICAgICAgPHNwYW4gIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwibm9kZVtzaG93S2V5XVwiPnt7IG5vZGVbc2hvd0tleV0gfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgICA8dGh5LWljb24gY2xhc3M9XCJjaGVja2VkLWljb25cIiAqbmdJZj1cImlzTXVsdGlwbGVcIiB0aHlJY29uTmFtZT1cImNoZWNrXCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aHlWaXJ0dWFsU2Nyb2xsICYmIHRyZWVOb2RlSXNFeHBhbmQobm9kZSkgJiYgbm9kZS5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGUuY2hpbGRyZW5cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
657
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC1ub2Rlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQixZQUFZLEVBQ1oseUNBQXlDLEVBQ3pDLGtCQUFrQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxSCxPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBMEIsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlHLE9BQU8s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QUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCw2QkFBNkI7UUFDN0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYSxFQUFFLElBQXVCO1FBQzdDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OEdBdkhRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLG1PRS9rQi9CLHdrRkFxREEsNENGMGdCUSxJQUFJLDZGQUNKLEtBQUssbUhBQ0wsZ0JBQWdCLG9KQUNoQix3QkFBd0IsaUpBQ3hCLHlCQUF5QixzSUFDekIsZUFBZSw2TEFDZixRQUFRLDhUQUNSLE9BQU8sb0ZBQ1AsT0FBTywyRUFDUCxPQUFPLHNNQUNQLGVBQWU7OzJGQU1WLGtCQUFrQjtrQkFyQjlCLFNBQVM7K0JBQ0ksdUJBQXVCLGNBRXJCLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsZ0JBQWdCO3dCQUNoQix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZixRQUFRO3dCQUNSLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGVBQWU7cUJBQ2xCLFFBQ0s7d0JBQ0YsaUJBQWlCLEVBQUUsSUFBSTtxQkFDMUI7K0VBR3FCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFJUCxTQUFTO3NCQUFyQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRVhQQU5ERURfRFJPUERPV05fUE9TSVRJT05TLFxuICAgIGdldEZsZXhpYmxlUG9zaXRpb25zLFxuICAgIHNjYWxlWU1vdGlvbixcbiAgICBUYWJJbmRleERpc2FibGVkQ29udHJvbFZhbHVlQWNjZXNzb3JNaXhpbixcbiAgICBUaHlDbGlja0Rpc3BhdGNoZXJcbn0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeUVtcHR5IH0gZnJvbSAnbmd4LXRldGh5cy9lbXB0eSc7XG5pbXBvcnQgeyBUaHlGbGV4aWJsZVRleHQgfSBmcm9tICduZ3gtdGV0aHlzL2ZsZXhpYmxlLXRleHQnO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlTZWxlY3RDb250cm9sLCBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZSB9IGZyb20gJ25neC10ZXRoeXMvdHJlZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGVsZW1lbnRNYXRjaENsb3Nlc3QsIGlzQXJyYXksIGlzT2JqZWN0LCBwcm9kdWNlLCB3YXJuRGVwcmVjYXRpb24gfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiwgQ29ubmVjdGlvblBvc2l0aW9uUGFpciwgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsIENka1ZpcnR1YWxGb3JPZiwgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciwgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRoeVRyZWVTZWxlY3ROb2RlLCBUaHlUcmVlU2VsZWN0VHlwZSB9IGZyb20gJy4vdHJlZS1zZWxlY3QuY2xhc3MnO1xuXG50eXBlIElucHV0U2l6ZSA9ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAnJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclRyZWVEYXRhKHRyZWVOb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSwgc2VhcmNoVGV4dDogc3RyaW5nLCBzZWFyY2hLZXk6IHN0cmluZyA9ICduYW1lJykge1xuICAgIGNvbnN0IGZpbHRlck5vZGVzID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlLCByZXN1bHQ6IFRoeVRyZWVTZWxlY3ROb2RlW10pID0+IHtcbiAgICAgICAgaWYgKG5vZGVbc2VhcmNoS2V5XSAmJiBub2RlW3NlYXJjaEtleV0uaW5kZXhPZihzZWFyY2hUZXh0KSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBub2RlLmNoaWxkcmVuLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IGZpbHRlck5vZGVzKGN1cnJlbnQsIHByZXZpb3VzKSwgW10gYXMgVGh5VHJlZVNlbGVjdE5vZGVbXSk7XG4gICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHsgLi4ubm9kZSwgY2hpbGRyZW46IG5vZGVzLCBleHBhbmQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgY29uc3QgdHJlZURhdGEgPSB0cmVlTm9kZXMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gZmlsdGVyTm9kZXMoY3VycmVudCwgcHJldmlvdXMpLCBbXSBhcyBUaHlUcmVlU2VsZWN0Tm9kZVtdKTtcbiAgICByZXR1cm4gdHJlZURhdGE7XG59XG5cbi8qKlxuICog5qCR6YCJ5oup57uE5Lu2XG4gKiBAbmFtZSB0aHktdHJlZS1zZWxlY3RcbiAqIEBvcmRlciAxMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10cmVlLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlUcmVlU2VsZWN0KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDZGtPdmVybGF5T3JpZ2luLFxuICAgICAgICBUaHlTZWxlY3RDb250cm9sLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICAgICAgICBmb3J3YXJkUmVmKCgpID0+IFRoeVRyZWVTZWxlY3ROb2RlcyksXG4gICAgICAgIFRoeVN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoJGV2ZW50KSdcbiAgICB9LFxuICAgIGFuaW1hdGlvbnM6IFtzY2FsZVlNb3Rpb25dXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRyZWVTZWxlY3QgZXh0ZW5kcyBUYWJJbmRleERpc2FibGVkQ29udHJvbFZhbHVlQWNjZXNzb3JNaXhpbiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktc2VsZWN0LWN1c3RvbScpIHRyZWVTZWxlY3RDbGFzcyA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1zZWxlY3QnKSBpc1RyZWVTZWxlY3QgPSB0cnVlO1xuXG4gICAgLy8g6I+c5Y2V5piv5ZCm5bGV5byAXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tZW51LWlzLW9wZW5lZCcpIGV4cGFuZFRyZWVTZWxlY3RPcHRpb25zID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1zZWxlY3QtY3VzdG9tLS1tdWx0aXBsZScpIGlzTXVsdGkgPSBmYWxzZTtcblxuICAgIHB1YmxpYyB0cmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW107XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWRWYWx1ZTogYW55O1xuXG4gICAgcHVibGljIHNlbGVjdGVkTm9kZTogVGh5VHJlZVNlbGVjdE5vZGU7XG5cbiAgICBwdWJsaWMgc2VsZWN0ZWROb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuXG4gICAgcHVibGljIGZsYXR0ZW5UcmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIHZpcnR1YWxUcmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIHB1YmxpYyBjZGtDb25uZWN0T3ZlcmxheVdpZHRoID0gMDtcblxuICAgIHB1YmxpYyBwb3NpdGlvbnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXTtcblxuICAgIHB1YmxpYyBleHBhbmRlZERyb3Bkb3duUG9zaXRpb25zID0gRVhQQU5ERURfRFJPUERPV05fUE9TSVRJT05TO1xuXG4gICAgcHVibGljIGljb25zOiB7IGV4cGFuZDogc3RyaW5nOyBjb2xsYXBzZTogc3RyaW5nOyBnYXA/OiBudW1iZXIgfSA9IHtcbiAgICAgICAgZXhwYW5kOiAnYW5nbGUtZG93bicsXG4gICAgICAgIGNvbGxhcHNlOiAnYW5nbGUtcmlnaHQnLFxuICAgICAgICBnYXA6IDE1XG4gICAgfTtcblxuICAgIHByaXZhdGUgaW5pdGlhbGxlZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgdmFsdWVJc09iamVjdCA9IGZhbHNlO1xuXG4gICAgb3JpZ2luVHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdO1xuXG4gICAgQENvbnRlbnRDaGlsZCgndGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5JylcbiAgICB0aHlUcmVlU2VsZWN0VHJpZ2dlckRpc3BsYXlSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAQ29udGVudENoaWxkKCd0cmVlTm9kZVRlbXBsYXRlJylcbiAgICB0cmVlTm9kZVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChDZGtPdmVybGF5T3JpZ2luLCB7IHN0YXRpYzogdHJ1ZSB9KSBjZGtPdmVybGF5T3JpZ2luOiBDZGtPdmVybGF5T3JpZ2luO1xuXG4gICAgQFZpZXdDaGlsZChDZGtDb25uZWN0ZWRPdmVybGF5LCB7IHN0YXRpYzogdHJ1ZSB9KSBjZGtDb25uZWN0ZWRPdmVybGF5OiBDZGtDb25uZWN0ZWRPdmVybGF5O1xuXG4gICAgQFZpZXdDaGlsZCgnY3VzdG9tRGlzcGxheVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgY3VzdG9tRGlzcGxheVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogdHJlZU5vZGVzIOaVsOaNrlxuICAgICAqIEB0eXBlIFRoeVRyZWVTZWxlY3ROb2RlW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlUcmVlTm9kZXModmFsdWU6IFRoeVRyZWVTZWxlY3ROb2RlW10pIHtcbiAgICAgICAgdGhpcy50cmVlTm9kZXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vcmlnaW5UcmVlTm9kZXMgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGxlZCkge1xuICAgICAgICAgICAgdGhpcy5mbGF0dGVuVHJlZU5vZGVzID0gdGhpcy5mbGF0dGVuTm9kZXModGhpcy50cmVlTm9kZXMsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgW10pO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZE5vZGVzKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRoeVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5byA5ZCv6Jma5ouf5rua5YqoXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5VmlydHVhbFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5qCR6IqC54K555qE5ZSv5LiA5qCH6K+GXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UHJpbWFyeUtleSA9ICdfaWQnO1xuXG4gICAgLyoqXG4gICAgICog5qCR6IqC54K555qE5pi+56S655qE5a2X5q61IGtleVxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNob3dLZXkgPSAnbmFtZSc7XG5cbiAgICBASW5wdXQoKSB0aHlDaGlsZENvdW50S2V5ID0gJ2NoaWxkQ291bnQnO1xuXG4gICAgLyoqXG4gICAgICog5Y2V6YCJ5pe277yM5piv5ZCm5pi+56S65riF6Zmk5oyJ6ZKu77yM5b2T5Li6IHRydWUg5pe277yM5pi+56S65riF6Zmk5oyJ6ZKuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBbGxvd0NsZWFyOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeU11bHRpcGxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbnpoHnlKjmoJHpgInmi6nlmajvvIzlvZPkuLogdHJ1ZSDnpoHnlKjmoJHpgInmi6nlmahcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5RGlzYWJsZSA9IGZhbHNlO1xuXG4gICAgZ2V0IHRoeURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlEaXNhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagkemAieaLqeahhum7mOiupOaWh+Wtl1xuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlaG9sZGVyID0gJ+ivt+mAieaLqeiKgueCuSc7XG5cbiAgICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaOp+WItuagkemAieaLqeeahOi+k+WFpeahhuWkp+Wwj1xuICAgICAqIEB0eXBlIHhzIHwgc20gfCBtZCB8IGRlZmF1bHQgfCBsZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IElucHV0U2l6ZTtcblxuICAgIC8qKlxuICAgICAqIOaUueWPmOepuumAiemhueeahOaDheWGteS4i+eahOaPkOekuuaWh+acrFxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUVtcHR5T3B0aW9uc1RleHQgPSAn5pqC5pe25rKh5pyJ5pWw5o2u5Y+v6YCJJztcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpumakOiXj+iKgueCuSjkuI3lj6/ov5vooYzku7vkvZXmk43kvZwp77yM5LyY5YWI57qn6auY5LqOIHRoeUhpZGRlbk5vZGVGblxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUhpZGRlbk5vZGVLZXkgPSAnaGlkZGVuJztcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpuemgeeUqOiKgueCuSjkuI3lj6/ov5vooYzku7vkvZXmk43kvZwp77yM5LyY5YWI57qn6auY5LqOIHRoeURpc2FibGVOb2RlRm5cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlEaXNhYmxlTm9kZUtleSA9ICdkaXNhYmxlZCc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblvILmraXliqDovb3oioLngrnnmoTlrZDoioLngrko5pi+56S65Yqg6L2954q25oCBKe+8jOW9k+S4uiB0cnVlIOaXtu+8jOW8guatpeiOt+WPllxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBc3luY05vZGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWxleekuuWFqOWQjVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlTaG93V2hvbGVOYW1lID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrmkJzntKJcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5U2hvd1NlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5Zu+5qCH57G75Z6L77yM5pSv5oyBIGRlZmF1bHQgfCBlc3BlY2lhbO+8jOW3suW6n+W8g1xuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5SWNvblR5cGUodHlwZTogVGh5VHJlZVNlbGVjdFR5cGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICAgICAgd2FybkRlcHJlY2F0aW9uKCdUaGlzIHBhcmFtZXRlciBoYXMgYmVlbiBkZXByZWNhdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmICh0eXBlID09PSAnZXNwZWNpYWwnKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmljb25zID0geyBleHBhbmQ6ICdtaW51cy1zcXVhcmUnLCBjb2xsYXBzZTogJ3BsdXMtc3F1YXJlJywgZ2FwOiAyMCB9O1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5pY29ucyA9IHsgZXhwYW5kOiAnY2FyZXQtcmlnaHQtZG93bicsIGNvbGxhcHNlOiAnY2FyZXQtcmlnaHQnLCBnYXA6IDE1IH07XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbpmpDol4/oioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKSzkvJjlhYjnuqfkvY7kuo4gdGh5SGlkZGVuTm9kZUtleeOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5oaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlIaWRkZW5Ob2RlRm46IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5oaWRkZW47XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbnpoHnlKjoioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKe+8jOS8mOWFiOe6p+S9juS6jiB0aHlEaXNhYmxlTm9kZUtleeOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5kaXNhYmxlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeURpc2FibGVOb2RlRm46IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gYm9vbGVhbiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gbm9kZS5kaXNhYmxlZDtcblxuICAgIC8qKlxuICAgICAqIOiOt+WPluiKgueCueeahOWtkOiKgueCue+8jOi/lOWbniBPYnNlcnZhYmxlPFRoeVRyZWVTZWxlY3ROb2RlPuOAglxuICAgICAqIEBkZWZhdWx0IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gT2JzZXJ2YWJsZTxUaHlUcmVlU2VsZWN0Tm9kZT4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG9mKFtdKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUdldE5vZGVDaGlsZHJlbjogKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBPYnNlcnZhYmxlPFRoeVRyZWVTZWxlY3ROb2RlPiA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gb2YoW10pO1xuXG4gICAgLyoqXG4gICAgICog5qCR6YCJ5oup57uE5Lu25bGV5byA5ZKM5oqY5Y+g54q25oCB5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUV4cGFuZFN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfZ2V0TmdNb2RlbFR5cGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlSXNPYmplY3QgPSAhdGhpcy5zZWxlY3RlZFZhbHVlWzBdIHx8IGlzT2JqZWN0KHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlSXNPYmplY3QgPSBpc09iamVjdCh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkRmxhdHRlblRyZWVOb2RlcygpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsVHJlZU5vZGVzID0gdGhpcy5nZXRGbGF0dGVuVHJlZU5vZGVzKHRoaXMudHJlZU5vZGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZsYXR0ZW5UcmVlTm9kZXMocm9vdFRyZWVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gdGhpcy50cmVlTm9kZXMpIHtcbiAgICAgICAgY29uc3QgZm9yRWFjaFRyZWUgPSAodHJlZTogVGh5VHJlZVNlbGVjdE5vZGVbXSwgZm46IGFueSwgcmVzdWx0OiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW10pID0+IHtcbiAgICAgICAgICAgIHRyZWUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBmbihpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoVHJlZShpdGVtLmNoaWxkcmVuLCBmbiwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmb3JFYWNoVHJlZShyb290VHJlZXMsIChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gISFub2RlLmV4cGFuZCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZ2V0TmdNb2RlbFR5cGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgdGh5Q2xpY2tEaXNwYXRjaGVyOiBUaHlDbGlja0Rpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGdldEZsZXhpYmxlUG9zaXRpb25zKCdib3R0b20nLCA0KTtcbiAgICAgICAgdGhpcy5pc011bHRpID0gdGhpcy50aHlNdWx0aXBsZTtcbiAgICAgICAgdGhpcy5mbGF0dGVuVHJlZU5vZGVzID0gdGhpcy5mbGF0dGVuTm9kZXModGhpcy50cmVlTm9kZXMsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgW10pO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsbGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2xpY2tEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld3BvcnRSdWxlclxuICAgICAgICAgICAgLmNoYW5nZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgIGlucHV0RWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIC8vIDEuIFRhYiDogZrnhKblkI7oh6rliqjogZrnhKbliLAgaW5wdXQg6L6T5YWl5qGG77yM5q2k5YiG5pSv5LiL55u05o6l6L+U5Zue77yM5peg6ZyA6Kem5Y+RIG9uVG91Y2hlZEZuXG4gICAgICAgIC8vIDIuIOaJk+W8gOmAieaLqeahhuWQjuWmguaenOeCueWHu+W8ueahhuWGheWvvOiHtCBpbnB1dCDlpLHnhKbvvIzml6DpnIDop6blj5Egb25Ub3VjaGVkRm5cbiAgICAgICAgaWYgKGVsZW1lbnRNYXRjaENsb3Nlc3QoJGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBbJ3RoeS10cmVlLXNlbGVjdCcsICd0aHktdHJlZS1zZWxlY3Qtbm9kZXMnXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZFZhbHVlT2JqZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgIH1cblxuICAgIHNlYXJjaFZhbHVlKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRyZWVOb2RlcyA9IGZpbHRlclRyZWVEYXRhKHRoaXMub3JpZ2luVHJlZU5vZGVzLCBzZWFyY2hUZXh0LnRyaW0oKSwgdGhpcy50aHlTaG93S2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UG9zaXRpb24oKSB7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLmNka0Nvbm5lY3RPdmVybGF5V2lkdGggPSB0aGlzLmNka092ZXJsYXlPcmlnaW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmxhdHRlbk5vZGVzKFxuICAgICAgICBub2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICByZXN1bHROb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICBwYXJlbnRQcmltYXJ5VmFsdWU6IHN0cmluZ1tdID0gW11cbiAgICApOiBUaHlUcmVlU2VsZWN0Tm9kZVtdIHtcbiAgICAgICAgcmVzdWx0Tm9kZXMgPSByZXN1bHROb2Rlcy5jb25jYXQobm9kZXMpO1xuICAgICAgICBsZXQgbm9kZXNMZWFmczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuICAgICAgICAobm9kZXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnBhcmVudFZhbHVlcyA9IHBhcmVudFByaW1hcnlWYWx1ZTtcbiAgICAgICAgICAgIGl0ZW0ubGV2ZWwgPSBpdGVtLnBhcmVudFZhbHVlcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUxlYWZzID0gdGhpcy5mbGF0dGVuTm9kZXMoaXRlbS5jaGlsZHJlbiwgcmVzdWx0Tm9kZXMsIFsuLi5wYXJlbnRQcmltYXJ5VmFsdWUsIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XV0pO1xuICAgICAgICAgICAgICAgIG5vZGVzTGVhZnMgPSBbLi4ubm9kZXNMZWFmcywgLi4ubm9kZUxlYWZzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbLi4ubm9kZXMsIC4uLm5vZGVzTGVhZnNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmRUcmVlTm9kZSh2YWx1ZTogc3RyaW5nKTogVGh5VHJlZVNlbGVjdE5vZGUge1xuICAgICAgICByZXR1cm4gKHRoaXMuZmxhdHRlblRyZWVOb2RlcyB8fCBbXSkuZmluZChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2VsZWN0ZWROb2RlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgLy8g5aSa6YCJ5pWw5o2u5Yid5aeL5YyWXG4gICAgICAgICAgICBpZiAodGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0ICYmIE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSkuaW5kZXhPZih0aGlzLnRoeVByaW1hcnlLZXkpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kVHJlZU5vZGUoaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRUcmVlTm9kZShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDljZXpgInmlbDmja7liJ3lp4vljJZcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkVmFsdWUpLmluZGV4T2YodGhpcy50aHlQcmltYXJ5S2V5KSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy50aHlQcmltYXJ5S2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblNlbGVjdFBvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5RGlzYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IHRoaXMuY2RrT3ZlcmxheU9yaWdpbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSAhdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucztcbiAgICAgICAgdGhpcy50aHlFeHBhbmRTdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zKTtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGVkVmFsdWUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGFuZ2VTZWxlY3RWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVJc09iamVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZVxuICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZE5vZGVzLm1hcChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSlcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWROb2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlTXVsdGlwbGVTZWxlY3RlZE5vZGUoZXZlbnQ6IHsgaXRlbTogVGh5VHJlZVNlbGVjdE5vZGU7ICRldmVudE9yaWdpbjogRXZlbnQgfSkge1xuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkTm9kZShldmVudC5pdGVtLCBldmVudC4kZXZlbnRPcmlnaW4pO1xuICAgIH1cblxuICAgIC8vIHRoeU11bHRpcGxlID0gdHJ1ZSDml7bvvIznp7vpmaTmlbDmja7ml7bosIPnlKhcbiAgICByZW1vdmVTZWxlY3RlZE5vZGUobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUsIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlEaXNhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHByb2R1Y2UodGhpcy5zZWxlY3RlZE5vZGVzKS5yZW1vdmUoKGl0ZW06IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Tm9kZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldID09PSBub2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWROb2RlKG5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBwcm9kdWNlKHRoaXMuc2VsZWN0ZWROb2RlcykuYWRkKG5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZVNlbGVjdFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROb2RlQ2hpbGRyZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy50aHlHZXROb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN1YnNjcmliZSkge1xuICAgICAgICAgICAgcmVzdWx0LnBpcGUoKS5zdWJzY3JpYmUoKGRhdGE6IFRoeVRyZWVTZWxlY3ROb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZmxhdHRlbk5vZGVzKGRhdGEsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgWy4uLm5vZGUucGFyZW50VmFsdWVzLCBub2RlW3RoaXMudGh5UHJpbWFyeUtleV1dKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlck5vZGVzID0gbm9kZXMuZmlsdGVyKChpdGVtOiBUaHlUcmVlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmxhdHRlblRyZWVOb2Rlcy5maW5kKGhhc0l0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0l0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMgPSBbLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVzLCAuLi5vdGhlck5vZGVzXTtcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuID0gZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgREVGQVVMVF9JVEVNX1NJWkUgPSA0MDtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10cmVlLXNlbGVjdC1ub2RlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VsZWN0LW5vZGVzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgICAgICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICAgICAgQ2RrVmlydHVhbEZvck9mLFxuICAgICAgICBUaHlFbXB0eSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5RmxleGlibGVUZXh0XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0Tm9kZXMgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzczogc3RyaW5nO1xuXG4gICAgbm9kZUxpc3Q6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCB0cmVlTm9kZXModmFsdWU6IFRoeVRyZWVTZWxlY3ROb2RlW10pIHtcbiAgICAgICAgY29uc3QgdHJlZVNlbGVjdEhlaWdodCA9IHRoaXMuZGVmYXVsdEl0ZW1TaXplICogdmFsdWUubGVuZ3RoO1xuICAgICAgICAvLyDniLbnuqforr7nva7kuoZtYXgtaGVpZ2h0OjMwMCAmIHBhZGRpbmc6MTAgMDsg5pWF5q2k5aSE5pyA5aSa6K6+572uMjgw77yM5ZCm5YiZ5bCG5Ye6546w5rua5Yqo5p2hXG4gICAgICAgIHRoaXMudGh5VmlydHVhbEhlaWdodCA9IHRyZWVTZWxlY3RIZWlnaHQgPiAzMDAgPyAnMjgwcHgnIDogYCR7dHJlZVNlbGVjdEhlaWdodH1weGA7XG4gICAgICAgIHRoaXMubm9kZUxpc3QgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSB0aHlWaXJ0dWFsU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgcHJpbWFyeUtleSA9IHRoaXMucGFyZW50LnRoeVByaW1hcnlLZXk7XG5cbiAgICBwdWJsaWMgc2hvd0tleSA9IHRoaXMucGFyZW50LnRoeVNob3dLZXk7XG5cbiAgICBwdWJsaWMgaXNNdWx0aXBsZSA9IHRoaXMucGFyZW50LnRoeU11bHRpcGxlO1xuXG4gICAgcHVibGljIHZhbHVlSXNPYmplY3QgPSB0aGlzLnBhcmVudC52YWx1ZUlzT2JqZWN0O1xuXG4gICAgcHVibGljIHNlbGVjdGVkVmFsdWUgPSB0aGlzLnBhcmVudC5zZWxlY3RlZFZhbHVlO1xuXG4gICAgcHVibGljIGNoaWxkQ291bnRLZXkgPSB0aGlzLnBhcmVudC50aHlDaGlsZENvdW50S2V5O1xuXG4gICAgcHVibGljIHRyZWVOb2RlVGVtcGxhdGVSZWYgPSB0aGlzLnBhcmVudC50cmVlTm9kZVRlbXBsYXRlUmVmO1xuXG4gICAgcHVibGljIGRlZmF1bHRJdGVtU2l6ZSA9IERFRkFVTFRfSVRFTV9TSVpFO1xuXG4gICAgcHVibGljIHRoeVZpcnR1YWxIZWlnaHQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBUaHlUcmVlU2VsZWN0KSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY2xhc3MgPSB0aGlzLmlzTXVsdGlwbGUgPyAndGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duIHRoeS10cmVlLXNlbGVjdC1kcm9wZG93bi1tdWx0aXBsZScgOiAndGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duJztcbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzU2VsZWN0ZWQobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZXMgfHwgW10pLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy5wcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnByaW1hcnlLZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlICYmIHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZVt0aGlzLnByaW1hcnlLZXldID09PSBub2RlW3RoaXMucHJpbWFyeUtleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzSGlkZGVuKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlIaWRkZW5Ob2RlS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVt0aGlzLnBhcmVudC50aHlIaWRkZW5Ob2RlS2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUZuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUZuKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzRGlzYWJsZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5RGlzYWJsZU5vZGVLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlW3RoaXMucGFyZW50LnRoeURpc2FibGVOb2RlS2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5RGlzYWJsZU5vZGVGbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LnRoeURpc2FibGVOb2RlRm4obm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyZWVOb2RlSXNFeHBhbmQobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgbGV0IGlzU2VsZWN0ZWROb2RlUGFyZW50ID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgaXNTZWxlY3RlZE5vZGVQYXJlbnQgPSAhISh0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVzIHx8IFtdKS5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnBhcmVudFZhbHVlcy5pbmRleE9mKG5vZGVbdGhpcy5wcmltYXJ5S2V5XSkgPiAtMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNTZWxlY3RlZE5vZGVQYXJlbnQgPSB0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVcbiAgICAgICAgICAgICAgICA/IHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZS5wYXJlbnRWYWx1ZXMuaW5kZXhPZihub2RlW3RoaXMucHJpbWFyeUtleV0pID4gLTFcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzRXhwYW5kID0gbm9kZS5leHBhbmQgfHwgKE9iamVjdC5rZXlzKG5vZGUpLmluZGV4T2YoJ2V4cGFuZCcpIDwgMCAmJiBpc1NlbGVjdGVkTm9kZVBhcmVudCk7XG4gICAgICAgIG5vZGUuZXhwYW5kID0gaXNFeHBhbmQ7XG4gICAgICAgIHJldHVybiBpc0V4cGFuZDtcbiAgICB9XG5cbiAgICBnZXROb2RlQ2hpbGRyZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmdldE5vZGVDaGlsZHJlbihub2RlKTtcbiAgICB9XG5cbiAgICBzZWxlY3RUcmVlTm9kZShldmVudDogRXZlbnQsIG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICghdGhpcy50cmVlTm9kZUlzRGlzYWJsZShub2RlKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2VsZWN0Tm9kZShub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5vZGVFeHBhbmRUb2dnbGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKG5vZGUpLmluZGV4T2YoJ2V4cGFuZCcpID4gLTEpIHtcbiAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gIW5vZGUuZXhwYW5kO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZU5vZGVJc0V4cGFuZChub2RlKSkge1xuICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmV4cGFuZCAmJiB0aGlzLnBhcmVudC50aHlBc3luY05vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Tm9kZUNoaWxkcmVuKG5vZGUpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2V0UG9zaXRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMucGFyZW50LnNldFBvc2l0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLnRoeVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFiVHJhY2tCeShpbmRleDogbnVtYmVyLCBpdGVtOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuIiwiPGRpdlxuICBjZGtPdmVybGF5T3JpZ2luXG4gIHRoeVNlbGVjdENvbnRyb2xcbiAgKGNsaWNrKT1cIm9wZW5TZWxlY3RQb3AoKVwiXG4gICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgW3RoeVBhbmVsT3BlbmVkXT1cImV4cGFuZFRyZWVTZWxlY3RPcHRpb25zXCJcbiAgW3RoeVNlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZFZhbHVlT2JqZWN0XCJcbiAgW3RoeUlzTXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICBbdGh5QWxsb3dDbGVhcl09XCJ0aHlBbGxvd0NsZWFyXCJcbiAgW3RoeVNpemVdPVwidGh5U2l6ZVwiXG4gIFt0aHlQbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtjdXN0b21EaXNwbGF5VGVtcGxhdGVdPVwiY3VzdG9tRGlzcGxheVRlbXBsYXRlXCJcbiAgW3RoeVNob3dTZWFyY2hdPVwidGh5U2hvd1NlYXJjaFwiXG4gIFt0aHlEaXNhYmxlZF09XCJ0aHlEaXNhYmxlXCJcbiAgKHRoeU9uQmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICh0aHlPbkNsZWFyKT1cImNsZWFyU2VsZWN0ZWRWYWx1ZSgkZXZlbnQpXCJcbiAgKHRoeU9uUmVtb3ZlKT1cInJlbW92ZU11bHRpcGxlU2VsZWN0ZWROb2RlKCRldmVudClcIlxuICAodGh5T25TZWFyY2gpPVwic2VhcmNoVmFsdWUoJGV2ZW50KVwiPlxuICA8bmctdGVtcGxhdGUgI2N1c3RvbURpc3BsYXlUZW1wbGF0ZSBsZXQtbm9kZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5UmVmOyBlbHNlIG5vbmVUZW1wbGF0ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vbmVUZW1wbGF0ZT5cbiAgICAgIHt7IG5vZGVbdGh5U2hvd0tleV0gfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwiZmFsc2VcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJwb3NpdGlvbnNcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoXT1cImNka0Nvbm5lY3RPdmVybGF5V2lkdGhcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnNcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT249XCIudGh5LXRyZWUtc2VsZWN0LWRyb3Bkb3duXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiZXhwYW5kZWREcm9wZG93blBvc2l0aW9uc1wiXG4gIChkZXRhY2gpPVwiY2xvc2UoKVwiPlxuICA8dGh5LXRyZWUtc2VsZWN0LW5vZGVzXG4gICAgdGh5U3RvcFByb3BhZ2F0aW9uXG4gICAgW3RoeVZpcnR1YWxTY3JvbGxdPVwidGh5VmlydHVhbFNjcm9sbFwiXG4gICAgW3RyZWVOb2Rlc109XCJ0aHlWaXJ0dWFsU2Nyb2xsID8gdmlydHVhbFRyZWVOb2RlcyA6IHRyZWVOb2Rlc1wiXG4gICAgW0BzY2FsZVlNb3Rpb25dPVwiJ2VudGVyJ1wiPlxuICA8L3RoeS10cmVlLXNlbGVjdC1ub2Rlcz5cbjwvbmctdGVtcGxhdGU+XG4iLCI8ZGl2IGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW9wdGlvbnNcIiAqbmdJZj1cIm5vZGVMaXN0Py5sZW5ndGggPiAwOyBlbHNlIGVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgPGRpdiBjbGFzcz1cInRoeS10cmVlLXNlbGVjdC1ub2RlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aHlWaXJ0dWFsU2Nyb2xsXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGVMaXN0XCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJlZVNlbGVjdE5vZGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAjdmlld3BvcnQgKm5nSWY9XCJ0aHlWaXJ0dWFsU2Nyb2xsXCIgW2l0ZW1TaXplXT1cImRlZmF1bHRJdGVtU2l6ZVwiIFtzdHlsZS5oZWlnaHRdPVwidGh5VmlydHVhbEhlaWdodFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVMaXN0OyB0cmFja0J5OiB0YWJUcmFja0J5XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VtcHR5UGxhY2Vob2xkZXI+XG4gIDx0aHktZW1wdHkgY2xhc3M9XCJ0aHktc2VsZWN0LWVtcHR5LWNvbnRlbnRcIiB0aHlTaXplPVwic21cIiBbdGh5TWVzc2FnZV09XCJwYXJlbnQudGh5RW1wdHlPcHRpb25zVGV4dFwiPjwvdGh5LWVtcHR5PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmVlU2VsZWN0Tm9kZSBsZXQtbm9kZT5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJ0aHktb3B0aW9uLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHRyZWVOb2RlSXNTZWxlY3RlZChub2RlKSB9XCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0cmVlTm9kZUlzRGlzYWJsZShub2RlKVwiXG4gICAgICBbbmdTdHlsZV09XCJ7ICdwYWRkaW5nLWxlZnQucHgnOiAyMCAqIG5vZGUubGV2ZWwgKyBwYXJlbnQuaWNvbnMuZ2FwIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFRyZWVOb2RlKCRldmVudCwgbm9kZSlcIlxuICAgICAgKm5nSWY9XCIhdHJlZU5vZGVJc0hpZGRlbihub2RlKVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJ0aHktdHJlZS1zZWxlY3Qtb3B0aW9uLWljb25cIlxuICAgICAgICBbY2xhc3MuaW52aXNpYmxlXT1cIiEobm9kZS5jaGlsZHJlbj8ubGVuZ3RoID4gMCB8fCAobm9kZVtjaGlsZENvdW50S2V5XSAmJiBub2RlW2NoaWxkQ291bnRLZXldID4gMCkpXCJcbiAgICAgICAgKGNsaWNrKT1cIm5vZGVFeHBhbmRUb2dnbGUoJGV2ZW50LCBub2RlKVwiPlxuICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJub2RlLWV4cGFuZC1pY29uXCIgW3RoeUljb25OYW1lXT1cInRyZWVOb2RlSXNFeHBhbmQobm9kZSkgPyBwYXJlbnQuaWNvbnMuZXhwYW5kIDogcGFyZW50Lmljb25zLmNvbGxhcHNlXCI+PC90aHktaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW9wdGlvbi10ZXh0XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ0lmPVwidHJlZU5vZGVUZW1wbGF0ZVJlZjsgZWxzZSBkZWZhdWx0Tm9kZVRleHRcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVOb2RlVGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9kZVRleHQ+XG4gICAgICAgICAgPHNwYW4gIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwibm9kZVtzaG93S2V5XVwiPnt7IG5vZGVbc2hvd0tleV0gfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgICA8dGh5LWljb24gY2xhc3M9XCJjaGVja2VkLWljb25cIiAqbmdJZj1cImlzTXVsdGlwbGVcIiB0aHlJY29uTmFtZT1cImNoZWNrXCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aHlWaXJ0dWFsU2Nyb2xsICYmIHRyZWVOb2RlSXNFeHBhbmQobm9kZSkgJiYgbm9kZS5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGUuY2hpbGRyZW5cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -12,28 +12,6 @@ import * as i0 from "@angular/core";
12
12
  * @order 10
13
13
  */
14
14
  export class ThyFileSelect extends FileSelectBaseDirective {
15
- /**
16
- * 文件是否多选
17
- * @default false
18
- */
19
- set thyMultiple(value) {
20
- this.multiple = value;
21
- if (this.multiple) {
22
- this.fileInput.nativeElement.setAttribute('multiple', '');
23
- }
24
- else {
25
- this.fileInput.nativeElement.removeAttribute('multiple');
26
- }
27
- }
28
- set thyAcceptFolder(value) {
29
- this.acceptFolder = value;
30
- if (this.acceptFolder) {
31
- this.fileInput.nativeElement.setAttribute('webkitdirectory', '');
32
- }
33
- else {
34
- this.fileInput.nativeElement.removeAttribute('webkitdirectory');
35
- }
36
- }
37
15
  /**
38
16
  * 指定文件后缀类型(MIME_Map),例如".xls,xlsx","[".doc",".docx"]"
39
17
  * @type Array<string> | string
@@ -62,6 +40,24 @@ export class ThyFileSelect extends FileSelectBaseDirective {
62
40
  this.fileInput.nativeElement.click();
63
41
  }));
64
42
  }
43
+ ngOnChanges(changes) {
44
+ if (changes.thyMultiple) {
45
+ if (changes.thyMultiple.currentValue) {
46
+ this.fileInput.nativeElement.setAttribute('multiple', '');
47
+ }
48
+ else {
49
+ this.fileInput.nativeElement.removeAttribute('multiple');
50
+ }
51
+ }
52
+ if (changes.thyAcceptFolder) {
53
+ if (changes.thyAcceptFolder.currentValue) {
54
+ this.fileInput.nativeElement.setAttribute('webkitdirectory', '');
55
+ }
56
+ else {
57
+ this.fileInput.nativeElement.removeAttribute('webkitdirectory');
58
+ }
59
+ }
60
+ }
65
61
  selectFile($event) {
66
62
  const files = this.fileInput.nativeElement.files;
67
63
  if (files && files.length > 0) {
@@ -73,7 +69,7 @@ export class ThyFileSelect extends FileSelectBaseDirective {
73
69
  this.destroy$.next();
74
70
  }
75
71
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyFileSelect, deps: [{ token: i0.ElementRef }, { token: THY_UPLOAD_DEFAULT_OPTIONS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyFileSelect, isStandalone: true, selector: "[thyFileSelect],thy-file-select", inputs: { thyMultiple: ["thyMultiple", "thyMultiple", coerceBooleanProperty], thyAcceptFolder: ["thyAcceptFolder", "thyAcceptFolder", coerceBooleanProperty], thyAcceptType: "thyAcceptType", thySizeThreshold: ["thySizeThreshold", "thySizeThreshold", numberAttribute] }, outputs: { thyOnFileSelect: "thyOnFileSelect" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<input\n style=\"width: 0; height: 0\"\n thyStopPropagation=\"true\"\n [hidden]=\"'true'\"\n #fileInput\n type=\"file\"\n (change)=\"selectFile($event)\"\n [attr.accept]=\"acceptType\"\n/>\n" }); }
72
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyFileSelect, isStandalone: true, selector: "[thyFileSelect],thy-file-select", inputs: { thyMultiple: ["thyMultiple", "thyMultiple", coerceBooleanProperty], thyAcceptFolder: ["thyAcceptFolder", "thyAcceptFolder", coerceBooleanProperty], thyAcceptType: "thyAcceptType", thySizeThreshold: ["thySizeThreshold", "thySizeThreshold", numberAttribute] }, outputs: { thyOnFileSelect: "thyOnFileSelect" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n<input\n style=\"width: 0; height: 0\"\n thyStopPropagation=\"true\"\n [hidden]=\"'true'\"\n #fileInput\n type=\"file\"\n (change)=\"selectFile($event)\"\n [attr.accept]=\"acceptType\"\n/>\n" }); }
77
73
  }
78
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyFileSelect, decorators: [{
79
75
  type: Component,
@@ -98,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
98
94
  type: Input,
99
95
  args: [{ transform: numberAttribute }]
100
96
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3VwbG9hZC9maWxlLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdXBsb2FkL2ZpbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUksT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFtQixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRXhEOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sYUFBYyxTQUFRLHVCQUF1QjtJQVl0RDs7O09BR0c7SUFDSCxJQUNJLFdBQVcsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7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ZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBOZ1pvbmUsIG51bWJlckF0dHJpYnV0ZSwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGaWxlU2VsZWN0QmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vZmlsZS1zZWxlY3QtYmFzZSc7XG5pbXBvcnQgeyBUSFlfVVBMT0FEX0RFRkFVTFRfT1BUSU9OUywgVGh5VXBsb2FkQ29uZmlnIH0gZnJvbSAnLi91cGxvYWQuY29uZmlnJztcbmltcG9ydCB7IG1pbWVUeXBlQ29udmVydCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuXG4vKipcbiAqIOaWh+S7tuS4iuS8oOe7hOS7tlxuICogQG5hbWUgdGh5LWZpbGUtc2VsZWN0LFt0aHlGaWxlU2VsZWN0XVxuICogQG9yZGVyIDEwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3RoeUZpbGVTZWxlY3RdLHRoeS1maWxlLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeUZpbGVTZWxlY3QgZXh0ZW5kcyBGaWxlU2VsZWN0QmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBtdWx0aXBsZTogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgYWNjZXB0Rm9sZGVyOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5paH5Lu26YCJ5oup5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uRmlsZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGZpbGVJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIOaWh+S7tuaYr+WQpuWkmumAiVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBzZXQgdGh5TXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5tdWx0aXBsZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ211bHRpcGxlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlBY2NlcHRGb2xkZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5hY2NlcHRGb2xkZXIgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuYWNjZXB0Rm9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnd2Via2l0ZGlyZWN0b3J5JywgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3dlYmtpdGRpcmVjdG9yeScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5oyH5a6a5paH5Lu25ZCO57yA57G75Z6L77yITUlNRV9NYXDvvInvvIzkvovlpoJcIi54bHMseGxzeFwi77yMXCJbXCIuZG9jXCIsXCIuZG9jeFwiXVwiXG4gICAgICogQHR5cGUgQXJyYXk8c3RyaW5nPiB8IHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUFjY2VwdFR5cGUodmFsdWU6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hY2NlcHRUeXBlID0gbWltZVR5cGVDb252ZXJ0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmlofku7bkuIrkvKDlpKflsI/pmZDliLbvvIzljZXkvY1ga2Jg77yMYDBg6KGo56S65rKh5pyJ5Lu75L2V6ZmQ5Yi2XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgICBzZXQgdGh5U2l6ZVRocmVzaG9sZCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2l6ZVRocmVzaG9sZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIEBJbmplY3QoVEhZX1VQTE9BRF9ERUZBVUxUX09QVElPTlMpIHB1YmxpYyBkZWZhdWx0Q29uZmlnOiBUaHlVcGxvYWRDb25maWcsIG5nWm9uZTogTmdab25lKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGRlZmF1bHRDb25maWcpO1xuXG4gICAgICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNlbGVjdEZpbGUoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXM7XG4gICAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbGVzKCRldmVudCwgQXJyYXkuZnJvbShmaWxlcyksIHRoaXMudGh5T25GaWxlU2VsZWN0KTtcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48aW5wdXRcbiAgc3R5bGU9XCJ3aWR0aDogMDsgaGVpZ2h0OiAwXCJcbiAgdGh5U3RvcFByb3BhZ2F0aW9uPVwidHJ1ZVwiXG4gIFtoaWRkZW5dPVwiJ3RydWUnXCJcbiAgI2ZpbGVJbnB1dFxuICB0eXBlPVwiZmlsZVwiXG4gIChjaGFuZ2UpPVwic2VsZWN0RmlsZSgkZXZlbnQpXCJcbiAgW2F0dHIuYWNjZXB0XT1cImFjY2VwdFR5cGVcIlxuLz5cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3VwbG9hZC9maWxlLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvdXBsb2FkL2ZpbGUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUdmLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFtQixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRXhEOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sYUFBYyxTQUFRLHVCQUF1QjtJQWdCdEQ7OztPQUdHO0lBQ0gsSUFDSSxhQUFhLENBQUMsS0FBNkI7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFJRCxZQUFtQixVQUFzQixFQUE2QyxhQUE4QixFQUFFLE1BQWM7UUFDaEksS0FBSyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMs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bnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZpbGVTZWxlY3RCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9maWxlLXNlbGVjdC1iYXNlJztcbmltcG9ydCB7IFRIWV9VUExPQURfREVGQVVMVF9PUFRJT05TLCBUaHlVcGxvYWRDb25maWcgfSBmcm9tICcuL3VwbG9hZC5jb25maWcnO1xuaW1wb3J0IHsgbWltZVR5cGVDb252ZXJ0IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbi8qKlxuICog5paH5Lu25LiK5Lyg57uE5Lu2XG4gKiBAbmFtZSB0aHktZmlsZS1zZWxlY3QsW3RoeUZpbGVTZWxlY3RdXG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbdGh5RmlsZVNlbGVjdF0sdGh5LWZpbGUtc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGh5RmlsZVNlbGVjdCBleHRlbmRzIEZpbGVTZWxlY3RCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIOaWh+S7tumAieaLqeS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPbkZpbGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiDmlofku7bmmK/lkKblpJrpgIlcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeU11bHRpcGxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QWNjZXB0Rm9sZGVyOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5oyH5a6a5paH5Lu25ZCO57yA57G75Z6L77yITUlNRV9NYXDvvInvvIzkvovlpoJcIi54bHMseGxzeFwi77yMXCJbXCIuZG9jXCIsXCIuZG9jeFwiXVwiXG4gICAgICogQHR5cGUgQXJyYXk8c3RyaW5nPiB8IHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUFjY2VwdFR5cGUodmFsdWU6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hY2NlcHRUeXBlID0gbWltZVR5cGVDb252ZXJ0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmlofku7bkuIrkvKDlpKflsI/pmZDliLbvvIzljZXkvY1ga2Jg77yMYDBg6KGo56S65rKh5pyJ5Lu75L2V6ZmQ5Yi2XG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgICBzZXQgdGh5U2l6ZVRocmVzaG9sZCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2l6ZVRocmVzaG9sZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIEBJbmplY3QoVEhZX1VQTE9BRF9ERUZBVUxUX09QVElPTlMpIHB1YmxpYyBkZWZhdWx0Q29uZmlnOiBUaHlVcGxvYWRDb25maWcsIG5nWm9uZTogTmdab25lKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGRlZmF1bHRDb25maWcpO1xuXG4gICAgICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLnRoeU11bHRpcGxlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICcnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ211bHRpcGxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy50aHlBY2NlcHRGb2xkZXIpIHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLnRoeUFjY2VwdEZvbGRlci5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnd2Via2l0ZGlyZWN0b3J5JywgJycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnd2Via2l0ZGlyZWN0b3J5Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RGaWxlKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzO1xuICAgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWxlcygkZXZlbnQsIEFycmF5LmZyb20oZmlsZXMpLCB0aGlzLnRoeU9uRmlsZVNlbGVjdCk7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPGlucHV0XG4gIHN0eWxlPVwid2lkdGg6IDA7IGhlaWdodDogMFwiXG4gIHRoeVN0b3BQcm9wYWdhdGlvbj1cInRydWVcIlxuICBbaGlkZGVuXT1cIid0cnVlJ1wiXG4gICNmaWxlSW5wdXRcbiAgdHlwZT1cImZpbGVcIlxuICAoY2hhbmdlKT1cInNlbGVjdEZpbGUoJGV2ZW50KVwiXG4gIFthdHRyLmFjY2VwdF09XCJhY2NlcHRUeXBlXCJcbi8+XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  import { Version } from '@angular/core';
2
- export const VERSION = new Version('17.0.13');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcxNy4wLjEzJyk7XG4iXX0=
2
+ export const VERSION = new Version('17.0.14');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcxNy4wLjE0Jyk7XG4iXX0=
@@ -1033,6 +1033,12 @@ class ThyAbstractOverlayConfig {
1033
1033
  * @description.en-us Whether the overlay should close when the user goes backwards/forwards in history.Note that this usually doesn't include clicking on links (unless the user is using the `HashLocationStrategy`).
1034
1034
  */
1035
1035
  this.closeOnNavigation = true;
1036
+ /**
1037
+ * 设置当提供的位置均不适合时是否可以将覆盖层推到屏幕上
1038
+ * @description.en-us Sets whether the overlay can be pushed on-screen if none of the provided positions fit
1039
+ * @default true
1040
+ */
1041
+ this.canPush = true;
1036
1042
  }
1037
1043
  }
1038
1044