@morozeckiy/dd-lib 0.7.36 → 0.7.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/directives/fixed-position.directive.mjs +4 -3
- package/esm2022/lib/lib-select/lib-select.component.mjs +2 -5
- package/fesm2022/morozeckiy-dd-lib.mjs +4 -6
- package/fesm2022/morozeckiy-dd-lib.mjs.map +1 -1
- package/lib/core/services/validators.service.d.ts +2 -2
- package/morozeckiy-dd-lib-0.7.38.tgz +0 -0
- package/package.json +1 -1
- package/morozeckiy-dd-lib-0.7.36.tgz +0 -0
|
@@ -12,10 +12,11 @@ export class FixedPositionDirective {
|
|
|
12
12
|
ngAfterViewInit() {
|
|
13
13
|
// id scroll-container надо задать обертке, которая имеет скролл и где будет скролящийся блок
|
|
14
14
|
const scrollContainer = document.getElementById('scroll-container');
|
|
15
|
-
console.log(scrollContainer);
|
|
16
15
|
if (scrollContainer) {
|
|
17
16
|
// Подписываемся на событие scroll чужеродного контейнера типа модалки и прочего узкого контента
|
|
18
|
-
this.scrollListener = this.renderer.listen(scrollContainer, 'scroll', () =>
|
|
17
|
+
this.scrollListener = this.renderer.listen(scrollContainer, 'scroll', () => {
|
|
18
|
+
return this.onScroll();
|
|
19
|
+
});
|
|
19
20
|
}
|
|
20
21
|
this.parentElement = this.el.nativeElement;
|
|
21
22
|
this.child1 = this.parentElement.querySelector(`[data-child="${this.childName1}"]`);
|
|
@@ -85,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
85
86
|
type: HostListener,
|
|
86
87
|
args: ['window:scroll']
|
|
87
88
|
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvY29yZS9kaXJlY3RpdmVzL2ZpeGVkLXBvc2l0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7O0FBTXZCLE1BQU0sT0FBTyxzQkFBc0I7SUFRakMsWUFBb0IsRUFBYyxFQUFVLFFBQW1CO1FBQTNDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBUC9DLGVBQVUsR0FBRyxPQUFPLENBQUE7UUFDcEIsZUFBVSxHQUFHLE1BQU0sQ0FBQTtRQUUzQixXQUFNLEdBQXVCLElBQUksQ0FBQztRQUNsQyxXQUFNLEdBQXVCLElBQUksQ0FBQztJQUd3QixDQUFDO0lBRW5FLGVBQWU7UUFDYiw2RkFBNkY7UUFDM0YsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RFLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsZ0dBQWdHO1lBQ2hHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ3hDLGVBQWUsRUFDZixRQUFRLEVBQ1IsR0FBRyxFQUFFO2dCQUNILE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQ3hCLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFFM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDcEYsSUFB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LFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkF5Q0MsUUFBUTtzQkFEZCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIFJlbmRlcmVyMlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZGRGaXhlZFBvc2l0aW9uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRml4ZWRQb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgcHVibGljIGNoaWxkTmFtZTEgPSAnaW5wdXQnXHJcbiAgQElucHV0KCkgcHVibGljIGNoaWxkTmFtZTIgPSAnbGlzdCdcclxuICBwcml2YXRlIHBhcmVudEVsZW1lbnQhOiBIVE1MRWxlbWVudDtcclxuICBwcml2YXRlIGNoaWxkMTogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGNoaWxkMjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHNjcm9sbExpc3RlbmVyITogKCkgPT4gdm9pZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAvLyBpZCBzY3JvbGwtY29udGFpbmVyINC90LDQtNC+INC30LDQtNCw0YLRjCDQvtCx0LXRgNGC0LrQtSwg0LrQvtGC0L7RgNCw0Y8g0LjQvNC10LXRgiDRgdC60YDQvtC70Lsg0Lgg0LPQtNC1INCx0YPQtNC10YIg0YHQutGA0L7Qu9GP0YnQuNC50YHRjyDQsdC70L7QulxyXG4gICAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsLWNvbnRhaW5lcicpO1xyXG4gICAgaWYgKHNjcm9sbENvbnRhaW5lcikge1xyXG4gICAgICAvLyDQn9C+0LTQv9C40YHRi9Cy0LDQtdC80YHRjyDQvdCwINGB0L7QsdGL0YLQuNC1IHNjcm9sbCDRh9GD0LbQtdGA0L7QtNC90L7Qs9C+INC60L7QvdGC0LXQudC90LXRgNCwINGC0LjQv9CwINC80L7QtNCw0LvQutC4INC4INC/0YDQvtGH0LXQs9C+INGD0LfQutC+0LPQviDQutC+0L3RgtC10L3RgtCwXHJcbiAgICAgIHRoaXMuc2Nyb2xsTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcclxuICAgICAgICBzY3JvbGxDb250YWluZXIsXHJcbiAgICAgICAgJ3Njcm9sbCcsXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMub25TY3JvbGwoKVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMucGFyZW50RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmNoaWxkMSA9IHRoaXMucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1jaGlsZD1cIiR7dGhpcy5jaGlsZE5hbWUxfVwiXWApO1xyXG4gICAgdGhpcy5jaGlsZDIgPSB0aGlzLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEtY2hpbGQ9XCIke3RoaXMuY2hpbGROYW1lMn1cIl1gKTtcclxuXHJcbiAgICBpZiAodGhpcy5jaGlsZDIpIHtcclxuICAgICAgdGhpcy51cGRhdGVDaGlsZDJQb3NpdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgaWYgKCF0aGlzLmNoaWxkMikge1xyXG4gICAgICB0aGlzLmNoaWxkMiA9IHRoaXMucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1jaGlsZD1cIiR7dGhpcy5jaGlsZE5hbWUyfVwiXWApO1xyXG4gICAgICBpZiAodGhpcy5jaGlsZDIpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkMlBvc2l0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxyXG4gIHB1YmxpYyBvblNjcm9sbCgpIHtcclxuICAgIGlmICh0aGlzLmNoaWxkMikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkMlBvc2l0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNoaWxkMlBvc2l0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuY2hpbGQxICYmIHRoaXMuY2hpbGQyKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkMVJlY3QgPSB0aGlzLmNoaWxkMS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5jaGlsZDIsICd3aWR0aCcsIGAke2NoaWxkMVJlY3Qud2lkdGh9cHhgKTtcclxuICAgICAgLy8g0JLRi9GH0LjRgdC70Y/QtdC8LCDQs9C00LUg0YDQsNGB0L/QvtC70L7QttC40YLRjCDRgNC10LHQtdC90LrQsC0yXHJcbiAgICAgIGNvbnN0IHNob3VsZFBvc2l0aW9uQWJvdmUgPSB0aGlzLnNob3VsZFBvc2l0aW9uQWJvdmUoY2hpbGQxUmVjdCk7XHJcblxyXG4gICAgICBpZiAoc2hvdWxkUG9zaXRpb25BYm92ZSkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5jaGlsZDIsICd0b3AnLCBgJHtjaGlsZDFSZWN0LnRvcCAtIHRoaXMuY2hpbGQyLm9mZnNldEhlaWdodH1weGApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vINCg0LDRgdC/0L7Qu9Cw0LPQsNC10Lwg0YDQtdCx0LXQvdC60LAtMiDRgdC90LjQt9GDINGA0LXQsdC10L3QutCwLTFcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY2hpbGQyLCAndG9wJywgYCR7Y2hpbGQxUmVjdC5ib3R0b219cHhgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNoaWxkMiwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5jaGlsZDIsICdsZWZ0JywgYCR7Y2hpbGQxUmVjdC5sZWZ0fXB4YCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3VsZFBvc2l0aW9uQWJvdmUoY2hpbGQxUmVjdDogRE9NUmVjdCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmNoaWxkMikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIC8vINCS0YvRh9C40YHQu9GP0LXQvCwg0LHRg9C00LXRgiDQu9C4INGA0LXQsdC10L3QvtC6LTIg0LLQuNC00LXQvSwg0LXRgdC70Lgg0LXQs9C+INGA0LDRgdC/0L7Qu9C+0LbQuNGC0Ywg0YHQvdC40LfRg1xyXG4gICAgY29uc3Qgc3BhY2VCZWxvdyA9IHdpbmRvdy5pbm5lckhlaWdodCAtIGNoaWxkMVJlY3QuYm90dG9tO1xyXG4gICAgY29uc3QgY2hpbGQySGVpZ2h0ID0gdGhpcy5jaGlsZDIub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgIHJldHVybiBzcGFjZUJlbG93IDwgY2hpbGQySGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyDQntGC0L/QuNGB0YvQstCw0LXQvNGB0Y8g0L7RgiDRgdC+0LHRi9GC0LjRjyDQv9GA0Lgg0YPQvdC40YfRgtC+0LbQtdC90LjQuCDQtNC40YDQtdC60YLQuNCy0YtcclxuICAgIGlmICh0aGlzLnNjcm9sbExpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsTGlzdGVuZXIoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -65,10 +65,7 @@ export class LibSelectComponent extends LibCommonInputTextComponent {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
ngOnChanges(changes) {
|
|
68
|
-
if (!changes['data']
|
|
69
|
-
console.log(changes['data'].previousValue);
|
|
70
|
-
console.log(changes['data'].currentValue);
|
|
71
|
-
console.log(this.writtenValue);
|
|
68
|
+
if (!changes?.['data']?.previousValue && changes?.['data']?.currentValue && this.writtenValue) {
|
|
72
69
|
this.writeValue(this.writtenValue);
|
|
73
70
|
}
|
|
74
71
|
}
|
|
@@ -384,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
384
381
|
type: HostListener,
|
|
385
382
|
args: ['window:scroll']
|
|
386
383
|
}] } });
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9saWItc2VsZWN0L2xpYi1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXNlbGVjdC9saWItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLElBQUksRUFDSixZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBSUwsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsZUFBZSxFQUFFLHNCQUFzQixFQUN2QyxhQUFhLEVBQ2IsUUFBUSxFQUNSLGdCQUFnQixFQUVoQixpQkFBaUIsRUFDbEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFDLGVBQWUsRUFB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QUFROzswQkFBSSxJQUFJOzswQkFBSSxRQUFRO3lDQXhDK0IsUUFBUTtzQkFBckUsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ2dCLGFBQWE7c0JBQWpGLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUN4QyxJQUFJO3NCQUF2QixLQUFLO2dCQVNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNtQixXQUFXO3NCQUFuQyxLQUFLO2dCQUNXLFlBQVk7c0JBQTVCLE1BQU07Z0JBQ1UsYUFBYTtzQkFBN0IsTUFBTTtnQkF3QkEsY0FBYztzQkFGcEIsWUFBWTt1QkFBQyxlQUFlOztzQkFDNUIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCwgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgc2lnbmFsLCBTaW1wbGVDaGFuZ2VzLFxyXG4gIFNraXBTZWxmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBXcml0YWJsZVNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtKc29uUGlwZSwgTmdPcHRpbWl6ZWRJbWFnZSwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgQ29udHJvbENvbnRhaW5lcixcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3Jtc01vZHVsZSxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtMaWJDb21tb25JbnB1dFRleHRDb21wb25lbnR9IGZyb20gJy4uL2NvbW1vbi9saWItY29tbW9uLWlucHV0LXRleHQnO1xyXG5pbXBvcnQge0xpYkNhcmRDb21wb25lbnR9IGZyb20gJy4uL2xpYi1jYXJkL2xpYi1jYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TGliTG9hZGVyQ29tcG9uZW50fSBmcm9tICcuLi9saWItbG9hZGVyL2xpYi1sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtMaWJTdmdJY29uQ29tcG9uZW50fSBmcm9tIFwiLi4vbGliLXN2Zy1pY29uL2xpYi1zdmctaWNvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtcclxuICBDbGlja091dHNpZGVEaXJlY3RpdmUsXHJcbiAgRGVzdHJveVNlcnZpY2UsXHJcbiAgRHJvcERvd25Qb3NpdGlvbkRpcmVjdGl2ZSxcclxuICBGaWx0ZXJCeUtleVBpcGUsIEZpeGVkUG9zaXRpb25EaXJlY3RpdmUsXHJcbiAgSGlnaGxpZ2h0UGlwZSxcclxuICBTYWZlUGlwZSxcclxuICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gIFRUb29sVGlwUG9zaXRpb25zLFxyXG4gIFZhbGlkYXRvcnNTZXJ2aWNlXHJcbn0gZnJvbSBcIi4uL2NvcmVcIjtcclxuaW1wb3J0IHtTY3JvbGxpbmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtMaXN0S2V5Ym9hcmROYXZpZ2F0aW9uRGlyZWN0aXZlfSBmcm9tIFwiLi4vY29yZVwiO1xyXG5pbXBvcnQge1NlbGVjdGFibGVJdGVtRGlyZWN0aXZlfSBmcm9tIFwiLi4vY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZC1saWItc2VsZWN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nT3B0aW1pemVkSW1hZ2UsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBIaWdobGlnaHRQaXBlLFxyXG4gICAgTGliQ2FyZENvbXBvbmVudCxcclxuICAgIFNhZmVQaXBlLFxyXG4gICAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxyXG4gICAgTGliTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQnlLZXlQaXBlLFxyXG4gICAgTGliU3ZnSWNvbkNvbXBvbmVudCxcclxuICAgIFNjcm9sbGluZ01vZHVsZSxcclxuICAgIEpzb25QaXBlLFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICAgIE5nU3R5bGUsXHJcbiAgICBEcm9wRG93blBvc2l0aW9uRGlyZWN0aXZlLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIExpc3RLZXlib2FyZE5hdmlnYXRpb25EaXJlY3RpdmUsXHJcbiAgICBTZWxlY3RhYmxlSXRlbURpcmVjdGl2ZSxcclxuICAgIEZpeGVkUG9zaXRpb25EaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9saWItc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbGliLXNlbGVjdC5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBEZXN0cm95U2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpYlNlbGVjdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliU2VsZWN0Q29tcG9uZW50PFQ+XHJcbiAgZXh0ZW5kcyBMaWJDb21tb25JbnB1dFRleHRDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlc1xyXG57XHJcbiAgcHVibGljIHN0YXRpYyBpZENvdW50ZXIgPSAxO1xyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdCcsIHtyZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWV9KSBwdWJsaWMgc2VsZWN0RWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXRFbCcsIHtyZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWV9KSBwdWJsaWMgc2VhcmNoSW5wdXRFbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGRhdGEoZDogYW55IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9kYXRhLnNldChkKTtcclxuICAgIHRoaXMuc3RyaW5nQXJyYXkuc2V0KHR5cGVvZiBkPy5bMF0gPT09ICdzdHJpbmcnKTtcclxuICAgIGlmICghZD8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaXNTaG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aXJ0dWFsU2Nyb2xsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcFBvc2l0aW9uPzogVFRvb2xUaXBQb3NpdGlvbnMgPSAndG9wJztcclxuICBASW5wdXQoKSBwdWJsaWMgaGlnaGxpZ2h0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0SWQ6IHN0cmluZyAgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcHVibGljIGl0ZW1TaXplID0gNDA7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBrZXlUaXRsZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBrZXlEZXNjID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGtleVZhbHVlID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIG92ZXJyaWRlIHBsYWNlaG9sZGVyID0gJ9CS0YvQsdC10YDQuNGC0LUg0LjQtyDRgdC/0LjRgdC60LAnO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ZWRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgcHVibGljIGNoZWNrZWRJdGVtOiBhbnk7XHJcbiAgLy8gVE9ETzog0L3QsNC00L4g0YHQtNC10LvQsNGC0Ywg0YLQuNC/0LjQt9Cw0YbQuNGOINC4INC60L7QvdGB0YLRgNGD0LrRgtC+0YAg0L/RgNC40L3QvNCw0LnRjtGJ0LjQuSDQvtCx0YrQtdC60YIg0YTQvtGA0LzQsNGC0LjRgNGD0Y7RidC40Lkg0LLQviDQstC90YPRgtGA0LXQvdC90LjQuSDQuCDQvtGC0LTQsNGO0YnQuNC5INC+0LHRgNCw0YLQvdC+INGH0YLQviDQvdGD0LbQvdC+XHJcbiAgcHVibGljIF9kYXRhOiBXcml0YWJsZVNpZ25hbDx1bmRlZmluZWQgfCBhbnlbXT4gPSBzaWduYWwoW10pO1xyXG4gIHB1YmxpYyBjaGVja2VkSXRlbXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIGlucHV0VmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgbXVsdGlDb3VudFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHNob3dNdWx0aUNvdW50VmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGlzU2hvd25MaXN0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBpbml0V3JpdGVWYWx1ZSA9IHRydWU7XHJcbiAgcHVibGljIHN0cmluZ0FycmF5OiBXcml0YWJsZVNpZ25hbDwgYm9vbGVhbiB8IHVuZGVmaW5lZD4gPSBzaWduYWwoZmFsc2UpO1xyXG4gIHB1YmxpYyB3cml0dGVuVmFsdWU6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGVzdHJveWVkJDpEZXN0cm95U2VydmljZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjaGFuZ2VEZXRlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcpXHJcbiAgcHVibGljIG9uV2luZG93U2Nyb2xsKCkge1xyXG4gICAgaWYgKHRoaXMuaXNTaG93bkxpc3QpIHtcclxuICAgICAgdGhpcy51cGRhdGVEcm9wZG93blBvc2l0aW9uKHRoaXMuZWwsIHRoaXMuX2RhdGEoKSEsIHRoaXMuaXRlbVNpemUsIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93TXVsdGlDb3VudFZhbHVlID0gdGhpcy5tdWx0aTtcclxuICAgIGlmICghdGhpcy5zZWxlY3RJZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdElkID0gJ2RkLXNlbGVjdC0nICsgTGliU2VsZWN0Q29tcG9uZW50LmlkQ291bnRlcisrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29udHJvbCA9XHJcbiAgICAgIHRoaXMuY29udHJvbENvbnRhaW5lciAmJiB0aGlzLmZvcm1Db250cm9sTmFtZVxyXG4gICAgICAgID8gdGhpcy5jb250cm9sQ29udGFpbmVyPy5jb250cm9sPy5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICB0aGlzLmNoYW5nZVZhbHVlU3ViKHRoaXMuY29udHJvbClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblxyXG4gICAgaWYgKCFjaGFuZ2VzWydkYXRhJ10ucHJldmlvdXNWYWx1ZSAmJiBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlICYmIHRoaXMud3JpdHRlblZhbHVlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGNoYW5nZXNbJ2RhdGEnXS5wcmV2aW91c1ZhbHVlKVxyXG4gICAgICBjb25zb2xlLmxvZyhjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlKVxyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLndyaXR0ZW5WYWx1ZSlcclxuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMud3JpdHRlblZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsZWFyKGNoZWNrZWRJdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgdGhpcy5jbGVhcmVkLmVtaXQoKTtcclxuICAgdGhpcy5zZWxlY3RJdGVtKGNoZWNrZWRJdGVtLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VWYWx1ZVN1Yihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcclxuICAgIGNvbnRyb2wudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgICAgdGhpcy5pbml0V3JpdGVWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHZhbClcclxuICAgICAgICB0aGlzLmVycm9yVGV4dCA9IFZhbGlkYXRvcnNTZXJ2aWNlLmdldEVycm9yVGV4dCh0aGlzLmNvbnRyb2w/LmVycm9ycylcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gICAgc3VwZXIucmVnaXN0ZXJPbkNoYW5nZShmbilcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgICBzdXBlci5yZWdpc3Rlck9uVG91Y2hlZChmbilcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWFyY2hJbnB1dCgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2hvd25MaXN0ID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLmlucHV0VmFsdWU7XHJcblxyXG4gICAgLy8g0LzQtdC90Y/QtdC8INC/0L7Qt9C40YbQuNGOINC00YDQvtC/0LTQsNGD0L3QsCDRgtC6INGB0L/QuNGB0L7QuiDQsdGD0LTQtdGCINC80LXQvdGP0YLRjNGB0Y9cclxuICAgIGlmICh0aGlzLmlzU2hvd25MaXN0ICYmIHRoaXMuc2VhcmNoVmFsdWUpIHtcclxuICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gbmV3IEZpbHRlckJ5S2V5UGlwZSgpLnRyYW5zZm9ybSh0aGlzLl9kYXRhLmJpbmQodGhpcykoKSwgdGhpcy5maWx0ZXJMaXN0LmJpbmQodGhpcykpXHJcbiAgICAgIHRoaXMudXBkYXRlRHJvcGRvd25Qb3NpdGlvbih0aGlzLmVsLCBmaWx0ZXJlZERhdGEhLCB0aGlzLml0ZW1TaXplLCAzMDApO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU2hvd25MaXN0ICYmICF0aGlzLnNlYXJjaFZhbHVlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRHJvcGRvd25Qb3NpdGlvbih0aGlzLmVsLCB0aGlzLl9kYXRhKCkhLCB0aGlzLml0ZW1TaXplLCAzMDApO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgb3ZlcnJpZGUgaGFuZGxlSW5wdXQoZTogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNTaG93bkxpc3QgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5zZWFyY2hWYWx1ZSA9IHRoaXMuaW5wdXRWYWx1ZTtcclxuICAgIHN1cGVyLmhhbmRsZUlucHV0KGUpXHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlIG5vdGlmeUZvY3VzRXZlbnQoZTogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMuaXNTaG93bkxpc3QgPSAhdGhpcy5pc1Nob3duTGlzdDtcclxuICAgICAgaWYgKHRoaXMuaXNTaG93bkxpc3QpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy51cGRhdGVEcm9wZG93blBvc2l0aW9uKHRoaXMuZWwsIHRoaXMuX2RhdGEoKSEsIHRoaXMuaXRlbVNpemUsIDMwMCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmV0Y2hNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5mZXRjaEV2ZW50LmVtaXQoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzdXBlci5ub3RpZnlGb2N1c0V2ZW50KGUpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgdGhpcy53cml0dGVuVmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoICYmIHRoaXMuX2RhdGEoKT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5tdWx0aUNvdW50VmFsdWUgPSBg0JLRi9Cx0YDQsNC90L4gKCR7dmFsdWUubGVuZ3RofSlgXHJcbiAgICAgICAgaWYgKHRoaXMua2V5VmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tlZEl0ZW1zID0gdGhpcy5fZGF0YSgpPy5maWx0ZXIoKGY6IGFueSkgPT4gdmFsdWUuaW5jbHVkZXMoZlt0aGlzLmtleVZhbHVlXSkpIHx8IFtdXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLnN0cmluZ0FycmF5KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VkSXRlbXMgPSB0aGlzLl9kYXRhKCk/LmZpbHRlcigoZjogYW55KSA9PiB2YWx1ZS5pbmNsdWRlcyhmKSkgfHwgW11cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0ckFyciA9IHZhbHVlLm1hcChKU09OLnN0cmluZ2lmeSlcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VkSXRlbXMgPSB0aGlzLl9kYXRhKCk/LmZpbHRlcigoZjogYW55KSA9PiBzdHJBcnIuaW5jbHVkZXMoSlNPTi5zdHJpbmdpZnkoZikpKSB8fCBbXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgIHRoaXMubXVsdGlDb3VudFZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmluaXRXcml0ZVZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQodGhpcy5jaGVja2VkSXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy5zdHJpbmdBcnJheSgpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCEhdGhpcy5rZXlWYWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBmVmFsID0gdGhpcy5fZGF0YSgpPy5maW5kKChmOiBhbnkpID0+IGY/Llt0aGlzLmtleVZhbHVlXSA9PT0gdmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZlZhbD8uW3RoaXMua2V5VmFsdWVdO1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmtleVRpdGxlID8gZlZhbD8uW3RoaXMua2V5VGl0bGVdIDogZlZhbDtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VkSXRlbSA9IGZWYWw7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBmVmFsID0gdGhpcy5fZGF0YSgpPy5maW5kKChmOiBhbnkpID0+IEpTT04uc3RyaW5naWZ5KGYpID09PSBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZlZhbDtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5rZXlUaXRsZSA/IGZWYWw/Llt0aGlzLmtleVRpdGxlXSA6IGZWYWw7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBmVmFsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5pbml0V3JpdGVWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQodGhpcy5jaGVja2VkSXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRXcml0ZVZhbHVlID0gZmFsc2U7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0SXRlbShpdGVtOiBhbnksIGNsZWFyZWQ/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCBpdGVtLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubXVsdGkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RNdWx0aUl0ZW0oaXRlbSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KGNsZWFyZWQgPyB1bmRlZmluZWQgOiBpdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0U2luZ2xlSXRlbShpdGVtKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChjbGVhcmVkID8gdW5kZWZpbmVkIDogaXRlbSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmlsdGVyTGlzdChpdGVtOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuc3RyaW5nQXJyYXkoKSkge1xyXG4gICAgICByZXR1cm4gaXRlbS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpdGVtW3RoaXMua2V5VGl0bGUhXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlKF92YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdFNpbmdsZUl0ZW0oaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGlmICghdGhpcy5jaGVja2VkSXRlbSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBpdGVtO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodW5kZWZpbmVkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCEhdGhpcy5rZXlWYWx1ZSAmJiAoIXRoaXMuY2hlY2tlZEl0ZW0gfHwgaXRlbVt0aGlzLmtleVZhbHVlXSAhPT0gdGhpcy5jaGVja2VkSXRlbT8uW3RoaXMua2V5VmFsdWVdKSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBpdGVtO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuY2hlY2tlZEl0ZW1bdGhpcy5rZXlUaXRsZSFdO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBpdGVtW3RoaXMua2V5VmFsdWVdO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmtleVZhbHVlICYmICghdGhpcy5jaGVja2VkSXRlbSB8fCBKU09OLnN0cmluZ2lmeShpdGVtKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5jaGVja2VkSXRlbSkpKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbSA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5jaGVja2VkSXRlbVt0aGlzLmtleVRpdGxlIV07XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodW5kZWZpbmVkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuaXNTaG93bkxpc3QgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0TXVsdGlJdGVtKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU2VsZWN0ZWQoaXRlbSkpIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtcyA9IHRoaXMuY2hlY2tlZEl0ZW1zLmZpbHRlcihmID0+IGZbdGhpcy5rZXlWYWx1ZSFdICE9PSBpdGVtW3RoaXMua2V5VmFsdWUhXSB8fCBmICE9PSBpdGVtKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW1zLnB1c2goaXRlbSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWVzID0gIHRoaXMua2V5VmFsdWUgPyB0aGlzLmNoZWNrZWRJdGVtcy5tYXAobSA9PiBtW3RoaXMua2V5VmFsdWVdKSA6IHRoaXMuY2hlY2tlZEl0ZW1zO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodmFsdWVzKTtcclxuICAgIGNvbnN0IHNlbGVjdEwgPSB0aGlzLmNoZWNrZWRJdGVtcy5sZW5ndGg7XHJcbiAgICBpZiAoc2VsZWN0TCkge1xyXG4gICAgICB0aGlzLm11bHRpQ291bnRWYWx1ZSA9IGDQktGL0LHRgNCw0L3QviAoJHtzZWxlY3RMfSlgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tdWx0aUNvdW50VmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgIGlmICh0aGlzLmtleVZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZEl0ZW1zLmZpbmQoZiA9PiBmW3RoaXMua2V5VmFsdWUhXSA9PT0gaXRlbVt0aGlzLmtleVZhbHVlIV0gfHwgZiA9PT0gaXRlbSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkSXRlbXMuZmluZChmID0+IEpTT04uc3RyaW5naWZ5KGYpID09PSBKU09OLnN0cmluZ2lmeShpdGVtKSB8fCBmID09PSBpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5zdHJpbmdBcnJheSgpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZEl0ZW0gPT09IGl0ZW1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5rZXlWYWx1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZEl0ZW0/Llt0aGlzLmtleVZhbHVlXSA9PT0gaXRlbVt0aGlzLmtleVZhbHVlXSB8fCB0aGlzLmNoZWNrZWRJdGVtID09PSBpdGVtXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmNoZWNrZWRJdGVtKSA9PT0gSlNPTi5zdHJpbmdpZnkoaXRlbSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSBoYW5kbGVCbHVyKCk6IHZvaWQge1xyXG4gICAgc3VwZXIuaGFuZGxlQmx1cigpO1xyXG5cclxuICAgIHRoaXMuc2hvd011bHRpQ291bnRWYWx1ZSA9IHRoaXMubXVsdGlcclxuICAgIHRoaXMuZXJyb3JUZXh0ID0gVmFsaWRhdG9yc1NlcnZpY2UuZ2V0RXJyb3JUZXh0KHRoaXMuY29udHJvbD8uZXJyb3JzKVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlIGhhbmRsZUZvY3VzKCk6IHZvaWQge1xyXG4gICAgc3VwZXIuaGFuZGxlRm9jdXMoKTtcclxuICAgIC8vIHRoaXMuc2hvd011bHRpQ291bnRWYWx1ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibGliLXNlbGVjdFwiIGlkPVwibGliLXNlbGVjdC17eyBzZWxlY3RJZCB9fVwiIGRkRml4ZWRQb3NpdGlvbj5cclxuICBAaWYgKGxhYmVsKSB7XHJcbiAgICA8bGFiZWwgW2Zvcl09XCJpZFwiIGNsYXNzPVwibGliLXNlbGVjdF9fdGl0bGVcIj5cclxuICAgICAge3sgbGFiZWwgfX1cclxuICAgICAgQGlmIChyZXF1aXJlZCkge1xyXG4gICAgICAgIDxkZC1saWItc3ZnLWljb24gaWNvbj1cImVycm9yX2hpbnRcIj48L2RkLWxpYi1zdmctaWNvbj5cclxuICAgICAgfVxyXG4gICAgPC9sYWJlbD5cclxuICB9XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwb3MtcmVsYXRpdmVcIiBkYXRhLWNoaWxkPVwiaW5wdXRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2tcIlxyXG4gICAgICAgICBbc3R5bGUucmlnaHRdPVwibXVsdGlDb3VudFZhbHVlID8gJzEyNXB4JyA6IG11bHRpID8gJzQwcHgnIDogJzMwcHgnXCJcclxuICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiKGlzU2hvd25MaXN0KSA/ICdmbGV4JyA6ICdub25lJ1wiPlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2gtYmxvY2tfX2lucHV0XCIgICNzZWFyY2hJbnB1dEVsIFthdHRyLm5hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxyXG4gICAgICAgICAgICAgKGlucHV0KT1cInNlYXJjaElucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgKGJsdXIpPVwiaGFuZGxlQmx1cigpXCJcclxuICAgICAgICAgICAgIChmb2N1cyk9XCJoYW5kbGVGb2N1cygpXCJcclxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiB0eXBlPVwidGV4dFwiID5cclxuICAgICAgICA8ZGQtbGliLXN2Zy1pY29uXHJcbiAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJzZWFyY2hWYWx1ZSA/ICdibG9jaycgOiAnbm9uZSdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjdXBcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNlYXJjaFZhbHVlPScnXCJcclxuICAgICAgICAgIGlkPVwiY2hldnJvbi17eyBzZWxlY3RJZCB9fVwiIGljb249XCJjbGVhclwiPjwvZGQtbGliLXN2Zy1pY29uPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmICghdGhpcy5fZGF0YSgpPy5sZW5ndGggfHwgIXRoaXMuX2RhdGEoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1sb2FkZXJcIj5cclxuICAgICAgICA8ZGQtbGliLWxvYWRlcj48L2RkLWxpYi1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPGlucHV0XHJcbiAgICAgICNzZWxlY3RcclxuICAgICAgKGNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoKVwiXHJcbiAgICAgIChjbGljayk9XCJub3RpZnlGb2N1c0V2ZW50KCRldmVudClcIlxyXG4gICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgIChmb2N1cyk9XCJoYW5kbGVGb2N1cygpXCJcclxuICAgICAgW2F0dHIuaWRdPVwic2VsZWN0SWRcIlxyXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCIobXVsdGlDb3VudFZhbHVlIHx8IHNlYXJjaFZhbHVlKSA/ICcnIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgICBbYXR0ci50YWJJbmRleF09XCJ0YWJJbmRleFwiXHJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCIoc2VhcmNoVmFsdWUgJiYgaXNTaG93bkxpc3QpID8gJ3RyYW5zcGFyZW50JyA6ICdpbmhlcml0J1wiXHJcbiAgICAgIFthdHRyLnR5cGVdPVwiJ3RleHQnXCJcclxuICAgICAgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiXHJcbiAgICAgIFtjbGFzcy5pbnZhbGlkXT1cInNob3dFcnJvclwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtyZWFkT25seV09XCJ0cnVlXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcclxuICAgICAgW3RpdGxlXT1cImlucHV0VmFsdWUgfHwgJydcIlxyXG4gICAgICBjbGFzcz1cInRleHQtc2VsZWN0IHNlbGVjdC1ibG9ja1wiIC8+XHJcbiAgICBAaWYgKG11bHRpQ291bnRWYWx1ZSkge1xyXG4gICAgICA8c3BhbiBjbGFzcz1cIm11bHRpLWNvdW50IHRleHQtcGxhaW4gc21hbGxcIj57e211bHRpQ291bnRWYWx1ZX19PC9zcGFuPlxyXG4gICAgfVxyXG4gICAgPCEtLSAgICAoYmx1cik9XCJub3RpZnlGb2N1c0V2ZW50KCRldmVudClcIi0tPlxyXG4gICAgQGlmICghY2hlY2tlZEl0ZW0pIHtcclxuICAgICAgPGRkLWxpYi1zdmctaWNvblxyXG4gICAgICAgIChjbGljayk9XCJub3RpZnlGb2N1c0V2ZW50KCRldmVudClcIlxyXG4gICAgICAgIFtjbGFzcy5ibGFjay1zdmddPVwiaXNTaG93bkxpc3RcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW2NsYXNzLmdyYXktc3ZnXT1cIiFpc1Nob3duTGlzdFwiXHJcbiAgICAgICAgW2NsYXNzLnVwXT1cImlzU2hvd25MaXN0XCJcclxuICAgICAgICBpZD1cImNoZXZyb24te3sgc2VsZWN0SWQgfX1cIiBjbGFzcz1cImNoZXZyb25cIiBpY29uPVwiZG93bl9jaGV2cm9uXCI+PC9kZC1saWItc3ZnLWljb24+XHJcblxyXG4gICAgfSBAZWxzZSBpZiAoY2xlYXJhYmxlICYmICFzZWFyY2hWYWx1ZSkge1xyXG4gICAgICA8ZGQtbGliLXN2Zy1pY29uXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoY2hlY2tlZEl0ZW0pXCJcclxuICAgICAgICBjbGFzcz1cImNsZWFyXCJcclxuICAgICAgICBpZD1cImNoZXZyb24te3sgc2VsZWN0SWQgfX1cIiBpY29uPVwiY2xlYXJcIj48L2RkLWxpYi1zdmctaWNvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbiAgQGlmIChlcnJvclRleHRzLmxlbmd0aCAmJiBzaG93RXJyb3IpIHtcclxuICAgIEBmb3IgKGVycm9yIG9mIGVycm9yVGV4dHM7IHRyYWNrIGVycm9yKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsaWItc2VsZWN0X19lcnJvclwiPnt7IGVycm9yIH19PC9kaXY+XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBpZiAoZXJyb3JUZXh0ICYmIHNob3dTZWxmRXJyb3IgJiYgc2hvd0Vycm9yKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibGliLXNlbGVjdF9fZXJyb3JcIj57eyBlcnJvclRleHQgfX08L2Rpdj5cclxuICB9XHJcbiAgQGlmIChpc1Nob3duTGlzdCkge1xyXG4gIDxkaXZcclxuICAgIGlkPVwiZHJvcGRvd25cIlxyXG4gICAgZGF0YS1jaGlsZD1cImxpc3RcIlxyXG4gICAgW25nU3R5bGVdPVwiZHJvcGRvd25TdHlsZVwiXHJcbiAgICAoZGRDbGlja091dHNpZGUpPVwibm90aWZ5Rm9jdXNFdmVudCgkZXZlbnQpO2Z1bGxCbHVyLmVtaXQoJGV2ZW50KVwiXHJcbiAgICBbZWxlbWVudHNdPVwiWydsaWItc2VsZWN0LScgKyBzZWxlY3RJZCwgJ2NoZXZyb24nICsgc2VsZWN0SWRdXCJcclxuICAgIGRkTGlzdEtleWJvYXJkTmF2aWdhdGlvblxyXG4gICAgY2xhc3M9XCJzZWxlY3QtbGlzdC13cmFwcGVyXCI+XHJcbiAgICBAaWYgKF9kYXRhKCk/Lmxlbmd0aCkge1xyXG4gICAgICBAaWYgKHZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiIFtzdHlsZS5oZWlnaHRdPVwiKF9kYXRhKCk/Lmxlbmd0aCB8fCAwKSAqIGl0ZW1TaXplICsgJ3B4J1wiPlxyXG4gICAgICAgICAgPGRpdiAqY2RrVmlydHVhbEZvcj1cImxldCBpdGVtIG9mIF9kYXRhKCkgfCBmaWx0ZXJCeUtleTogZmlsdGVyTGlzdC5iaW5kKHRoaXMpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93SXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICBAZm9yIChpdGVtIG9mIF9kYXRhKCkgfCBmaWx0ZXJCeUtleTogZmlsdGVyTGlzdC5iaW5kKHRoaXMpOyB0cmFjayBpdGVtKSB7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd0l0ZW1cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtbG9hZGVyXCI+XHJcbiAgICAgIDxkZC1saWItbG9hZGVyPjwvZGQtbGliLWxvYWRlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3Jvd0l0ZW0gbGV0LWl0ZW09aXRlbT5cclxuICA8ZGl2IGRkU2VsZWN0YWJsZUl0ZW0gW2RkVG9vbHRpcF09XCJpdGVtLnRvb2x0aXAgPyBpdGVtLnRvb2x0aXAgOiAnJ1wiIFtwb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxyXG4gICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJzZWxlY3RJdGVtKGl0ZW0pXCJcclxuICAgICAgIFtjbGFzcy5zLWl0ZW0tYWN0aXZlXT1cImNoZWNrU2VsZWN0ZWQoaXRlbSkgJiYgIWl0ZW0uZGlzYWJsZWRcIlxyXG4gICAgICAgW2NsYXNzLnMtaXRlbS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcclxuICAgICAgIGNsYXNzPVwic2VsZWN0LWRhdGFcIj5cclxuICAgIEBpZiAoc3RyaW5nQXJyYXkoKSkge1xyXG4gICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaXRlbSB8IGhpZ2hsaWdodDogKGhpZ2hsaWdodCA/IHNlYXJjaFZhbHVlIDogJycpIHwgc2FmZTogJ2h0bWwnXCJcclxuICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1kYXRhX190aXRsZVwiPjwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChrZXlUaXRsZSAmJiAhc3RyaW5nQXJyYXkoKSkge1xyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgW2lubmVySFRNTF09XCJpdGVtW2tleVRpdGxlIV0gfCBoaWdobGlnaHQ6IChoaWdobGlnaHQgPyBzZWFyY2hWYWx1ZSA6ICcnKSB8IHNhZmU6ICdodG1sJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3QtZGF0YV9fdGl0bGVcIj48L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoa2V5RGVzYyAmJiAhc3RyaW5nQXJyYXkoKSkge1xyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgW2lubmVySFRNTF09XCJpdGVtW2tleURlc2MhXSB8IGhpZ2hsaWdodDogKGhpZ2hsaWdodCA/IHNlYXJjaFZhbHVlIDogJycpIHwgc2FmZTogJ2h0bWwnXCJcclxuICAgICAgICBbdGl0bGVdPVwiaXRlbVtrZXlEZXNjXVwiXHJcbiAgICAgICAgY2xhc3M9XCJzZWxlY3QtZGF0YV9fZGVzY1wiPjwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChjaGVja1NlbGVjdGVkKGl0ZW0pKSB7XHJcbiAgICAgIDxkZC1saWItc3ZnLWljb25cclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShjaGVja2VkSXRlbSlcIlxyXG4gICAgICAgIGNsYXNzPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgaWQ9XCJjaGV2cm9uLXt7IHNlbGVjdElkIH19XCIgaWNvbj1cImNoZWNrX2dyZWVuXCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZC1saWIvc3JjL2xpYi9saWItc2VsZWN0L2xpYi1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGQtbGliL3NyYy9saWIvbGliLXNlbGVjdC9saWItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLElBQUksRUFDSixZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBSUwsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsZUFBZSxFQUFFLHNCQUFzQixFQUN2QyxhQUFhLEVBQ2IsUUFBUSxFQUNSLGdCQUFnQixFQUVoQixpQkFBaUIsRUFDbEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFDLGVBQWUsRUFB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LEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDeEMsSUFBSTtzQkFBdkIsS0FBSztnQkFTVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDbUIsV0FBVztzQkFBbkMsS0FBSztnQkFDVyxZQUFZO3NCQUE1QixNQUFNO2dCQUNVLGFBQWE7c0JBQTdCLE1BQU07Z0JBd0JBLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZUFBZTs7c0JBQzVCLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSG9zdCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIHNpZ25hbCwgU2ltcGxlQ2hhbmdlcyxcclxuICBTa2lwU2VsZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgV3JpdGFibGVTaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SnNvblBpcGUsIE5nT3B0aW1pemVkSW1hZ2UsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xDb250YWluZXIsXHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7TGliQ29tbW9uSW5wdXRUZXh0Q29tcG9uZW50fSBmcm9tICcuLi9jb21tb24vbGliLWNvbW1vbi1pbnB1dC10ZXh0JztcclxuaW1wb3J0IHtMaWJDYXJkQ29tcG9uZW50fSBmcm9tICcuLi9saWItY2FyZC9saWItY2FyZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0xpYkxvYWRlckNvbXBvbmVudH0gZnJvbSAnLi4vbGliLWxvYWRlci9saWItbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TGliU3ZnSWNvbkNvbXBvbmVudH0gZnJvbSBcIi4uL2xpYi1zdmctaWNvbi9saWItc3ZnLWljb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxyXG4gIERlc3Ryb3lTZXJ2aWNlLFxyXG4gIERyb3BEb3duUG9zaXRpb25EaXJlY3RpdmUsXHJcbiAgRmlsdGVyQnlLZXlQaXBlLCBGaXhlZFBvc2l0aW9uRGlyZWN0aXZlLFxyXG4gIEhpZ2hsaWdodFBpcGUsXHJcbiAgU2FmZVBpcGUsXHJcbiAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICBUVG9vbFRpcFBvc2l0aW9ucyxcclxuICBWYWxpZGF0b3JzU2VydmljZVxyXG59IGZyb20gXCIuLi9jb3JlXCI7XHJcbmltcG9ydCB7U2Nyb2xsaW5nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xyXG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7TGlzdEtleWJvYXJkTmF2aWdhdGlvbkRpcmVjdGl2ZX0gZnJvbSBcIi4uL2NvcmVcIjtcclxuaW1wb3J0IHtTZWxlY3RhYmxlSXRlbURpcmVjdGl2ZX0gZnJvbSBcIi4uL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGQtbGliLXNlbGVjdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ09wdGltaXplZEltYWdlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgSGlnaGxpZ2h0UGlwZSxcclxuICAgIExpYkNhcmRDb21wb25lbnQsXHJcbiAgICBTYWZlUGlwZSxcclxuICAgIENsaWNrT3V0c2lkZURpcmVjdGl2ZSxcclxuICAgIExpYkxvYWRlckNvbXBvbmVudCxcclxuICAgIEZpbHRlckJ5S2V5UGlwZSxcclxuICAgIExpYlN2Z0ljb25Db21wb25lbnQsXHJcbiAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBKc29uUGlwZSxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgICBOZ1N0eWxlLFxyXG4gICAgRHJvcERvd25Qb3NpdGlvbkRpcmVjdGl2ZSxcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBMaXN0S2V5Ym9hcmROYXZpZ2F0aW9uRGlyZWN0aXZlLFxyXG4gICAgU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmUsXHJcbiAgICBGaXhlZFBvc2l0aW9uRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGliLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2xpYi1zZWxlY3QuY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgRGVzdHJveVNlcnZpY2UsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaWJTZWxlY3RDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpYlNlbGVjdENvbXBvbmVudDxUPlxyXG4gIGV4dGVuZHMgTGliQ29tbW9uSW5wdXRUZXh0Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXNcclxue1xyXG4gIHB1YmxpYyBzdGF0aWMgaWRDb3VudGVyID0gMTtcclxuICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7cmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlfSkgcHVibGljIHNlbGVjdEVsOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0RWwnLCB7cmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlfSkgcHVibGljIHNlYXJjaElucHV0RWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcHVibGljIHNldCBkYXRhKGQ6IGFueSB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fZGF0YS5zZXQoZCk7XHJcbiAgICB0aGlzLnN0cmluZ0FycmF5LnNldCh0eXBlb2YgZD8uWzBdID09PSAnc3RyaW5nJyk7XHJcbiAgICBpZiAoIWQ/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmlzU2hvd25MaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBASW5wdXQoKSBwdWJsaWMgdmlydHVhbFNjcm9sbDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwdWJsaWMgbXVsdGk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBQb3NpdGlvbj86IFRUb29sVGlwUG9zaXRpb25zID0gJ3RvcCc7XHJcbiAgQElucHV0KCkgcHVibGljIGhpZ2hsaWdodCA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdElkOiBzdHJpbmcgIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtU2l6ZSA9IDQwO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMga2V5VGl0bGUgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMga2V5RGVzYyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBrZXlWYWx1ZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvdmVycmlkZSBwbGFjZWhvbGRlciA9ICfQktGL0LHQtdGA0LjRgtC1INC40Lcg0YHQv9C40YHQutCwJztcclxuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ZWRJdGVtcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIHB1YmxpYyBjaGVja2VkSXRlbTogYW55O1xyXG4gIC8vIFRPRE86INC90LDQtNC+INGB0LTQtdC70LDRgtGMINGC0LjQv9C40LfQsNGG0LjRjiDQuCDQutC+0L3RgdGC0YDRg9C60YLQvtGAINC/0YDQuNC90LzQsNC50Y7RidC40Lkg0L7QsdGK0LXQutGCINGE0L7RgNC80LDRgtC40YDRg9GO0YnQuNC5INCy0L4g0LLQvdGD0YLRgNC10L3QvdC40Lkg0Lgg0L7RgtC00LDRjtGJ0LjQuSDQvtCx0YDQsNGC0L3QviDRh9GC0L4g0L3Rg9C20L3QvlxyXG4gIHB1YmxpYyBfZGF0YTogV3JpdGFibGVTaWduYWw8dW5kZWZpbmVkIHwgYW55W10+ID0gc2lnbmFsKFtdKTtcclxuICBwdWJsaWMgY2hlY2tlZEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBpbnB1dFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIG11bHRpQ291bnRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzaG93TXVsdGlDb3VudFZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzZWFyY2hWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBpc1Nob3duTGlzdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgaW5pdFdyaXRlVmFsdWUgPSB0cnVlO1xyXG4gIHB1YmxpYyBzdHJpbmdBcnJheTogV3JpdGFibGVTaWduYWw8IGJvb2xlYW4gfCB1bmRlZmluZWQ+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBwdWJsaWMgd3JpdHRlblZhbHVlOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRlc3Ryb3llZCQ6RGVzdHJveVNlcnZpY2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICkge1xyXG4gICAgc3VwZXIoY2hhbmdlRGV0ZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxyXG4gIHB1YmxpYyBvbldpbmRvd1Njcm9sbCgpIHtcclxuICAgIGlmICh0aGlzLmlzU2hvd25MaXN0KSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRHJvcGRvd25Qb3NpdGlvbih0aGlzLmVsLCB0aGlzLl9kYXRhKCkhLCB0aGlzLml0ZW1TaXplLCAzMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd011bHRpQ291bnRWYWx1ZSA9IHRoaXMubXVsdGk7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0SWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RJZCA9ICdkZC1zZWxlY3QtJyArIExpYlNlbGVjdENvbXBvbmVudC5pZENvdW50ZXIrKztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbnRyb2wgPVxyXG4gICAgICB0aGlzLmNvbnRyb2xDb250YWluZXIgJiYgdGhpcy5mb3JtQ29udHJvbE5hbWVcclxuICAgICAgICA/IHRoaXMuY29udHJvbENvbnRhaW5lcj8uY29udHJvbD8uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VWYWx1ZVN1Yih0aGlzLmNvbnRyb2wpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKCFjaGFuZ2VzPy5bJ2RhdGEnXT8ucHJldmlvdXNWYWx1ZSAmJiBjaGFuZ2VzPy5bJ2RhdGEnXT8uY3VycmVudFZhbHVlICYmIHRoaXMud3JpdHRlblZhbHVlKSB7XHJcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLndyaXR0ZW5WYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbGVhcihjaGVja2VkSXRlbTogYW55KTogdm9pZCB7XHJcbiAgIHRoaXMuY2xlYXJlZC5lbWl0KCk7XHJcbiAgIHRoaXMuc2VsZWN0SXRlbShjaGVja2VkSXRlbSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlVmFsdWVTdWIoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XHJcbiAgICBjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcclxuICAgICAgLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdFdyaXRlVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh2YWwpXHJcbiAgICAgICAgdGhpcy5lcnJvclRleHQgPSBWYWxpZGF0b3JzU2VydmljZS5nZXRFcnJvclRleHQodGhpcy5jb250cm9sPy5lcnJvcnMpXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICAgIHN1cGVyLnJlZ2lzdGVyT25DaGFuZ2UoZm4pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gICAgc3VwZXIucmVnaXN0ZXJPblRvdWNoZWQoZm4pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VhcmNoSW5wdXQoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1Nob3duTGlzdCA9IHRydWU7XHJcbiAgICAvLyB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlO1xyXG5cclxuICAgIC8vINC80LXQvdGP0LXQvCDQv9C+0LfQuNGG0LjRjiDQtNGA0L7Qv9C00LDRg9C90LAg0YLQuiDRgdC/0LjRgdC+0Log0LHRg9C00LXRgiDQvNC10L3Rj9GC0YzRgdGPXHJcbiAgICBpZiAodGhpcy5pc1Nob3duTGlzdCAmJiB0aGlzLnNlYXJjaFZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IG5ldyBGaWx0ZXJCeUtleVBpcGUoKS50cmFuc2Zvcm0odGhpcy5fZGF0YS5iaW5kKHRoaXMpKCksIHRoaXMuZmlsdGVyTGlzdC5iaW5kKHRoaXMpKVxyXG4gICAgICB0aGlzLnVwZGF0ZURyb3Bkb3duUG9zaXRpb24odGhpcy5lbCwgZmlsdGVyZWREYXRhISwgdGhpcy5pdGVtU2l6ZSwgMzAwKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc1Nob3duTGlzdCAmJiAhdGhpcy5zZWFyY2hWYWx1ZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURyb3Bkb3duUG9zaXRpb24odGhpcy5lbCwgdGhpcy5fZGF0YSgpISwgdGhpcy5pdGVtU2l6ZSwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIG92ZXJyaWRlIGhhbmRsZUlucHV0KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2hvd25MaXN0ID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLmlucHV0VmFsdWU7XHJcbiAgICBzdXBlci5oYW5kbGVJbnB1dChlKVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSBub3RpZnlGb2N1c0V2ZW50KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmlzU2hvd25MaXN0ID0gIXRoaXMuaXNTaG93bkxpc3Q7XHJcbiAgICAgIGlmICh0aGlzLmlzU2hvd25MaXN0KSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWw/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMudXBkYXRlRHJvcGRvd25Qb3NpdGlvbih0aGlzLmVsLCB0aGlzLl9kYXRhKCkhLCB0aGlzLml0ZW1TaXplLCAzMDApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZldGNoTW9kZSkge1xyXG4gICAgICAgIHRoaXMuZmV0Y2hFdmVudC5lbWl0KClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3VwZXIubm90aWZ5Rm9jdXNFdmVudChlKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIHRoaXMud3JpdHRlblZhbHVlID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5tdWx0aSkge1xyXG4gICAgICBpZiAodmFsdWU/Lmxlbmd0aCAmJiB0aGlzLl9kYXRhKCk/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubXVsdGlDb3VudFZhbHVlID0gYNCS0YvQsdGA0LDQvdC+ICgke3ZhbHVlLmxlbmd0aH0pYFxyXG4gICAgICAgIGlmICh0aGlzLmtleVZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrZWRJdGVtcyA9IHRoaXMuX2RhdGEoKT8uZmlsdGVyKChmOiBhbnkpID0+IHZhbHVlLmluY2x1ZGVzKGZbdGhpcy5rZXlWYWx1ZV0pKSB8fCBbXVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zdHJpbmdBcnJheSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZEl0ZW1zID0gdGhpcy5fZGF0YSgpPy5maWx0ZXIoKGY6IGFueSkgPT4gdmFsdWUuaW5jbHVkZXMoZikpIHx8IFtdXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBzdHJBcnIgPSB2YWx1ZS5tYXAoSlNPTi5zdHJpbmdpZnkpXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZEl0ZW1zID0gdGhpcy5fZGF0YSgpPy5maWx0ZXIoKGY6IGFueSkgPT4gc3RyQXJyLmluY2x1ZGVzKEpTT04uc3RyaW5naWZ5KGYpKSkgfHwgW11cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbXMgPSBbXTtcclxuICAgICAgICB0aGlzLm11bHRpQ291bnRWYWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5pbml0V3JpdGVWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KHRoaXMuY2hlY2tlZEl0ZW1zKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RyaW5nQXJyYXkoKSkge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghIXRoaXMua2V5VmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZlZhbCA9IHRoaXMuX2RhdGEoKT8uZmluZCgoZjogYW55KSA9PiBmPy5bdGhpcy5rZXlWYWx1ZV0gPT09IHZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGZWYWw/Llt0aGlzLmtleVZhbHVlXTtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5rZXlUaXRsZSA/IGZWYWw/Llt0aGlzLmtleVRpdGxlXSA6IGZWYWw7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBmVmFsO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZlZhbCA9IHRoaXMuX2RhdGEoKT8uZmluZCgoZjogYW55KSA9PiBKU09OLnN0cmluZ2lmeShmKSA9PT0gSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGZWYWw7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMua2V5VGl0bGUgPyBmVmFsPy5bdGhpcy5rZXlUaXRsZV0gOiBmVmFsO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWRJdGVtID0gZlZhbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaW5pdFdyaXRlVmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHRoaXMuY2hlY2tlZEl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0V3JpdGVWYWx1ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbTogYW55LCBjbGVhcmVkPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgaXRlbS5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0TXVsdGlJdGVtKGl0ZW0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChjbGVhcmVkID8gdW5kZWZpbmVkIDogaXRlbSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdFNpbmdsZUl0ZW0oaXRlbSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoY2xlYXJlZCA/IHVuZGVmaW5lZCA6IGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlckxpc3QoaXRlbTogYW55KTogYW55IHtcclxuICAgIGlmICh0aGlzLnN0cmluZ0FycmF5KCkpIHtcclxuICAgICAgcmV0dXJuIGl0ZW0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXRlbVt0aGlzLmtleVRpdGxlIV0/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hWYWx1ZT8udG9Mb3dlckNhc2UoKSB8fCAnJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZShfdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RTaW5nbGVJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xyXG4gICAgICBpZiAoIXRoaXMuY2hlY2tlZEl0ZW0pIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtID0gaXRlbTtcclxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghIXRoaXMua2V5VmFsdWUgJiYgKCF0aGlzLmNoZWNrZWRJdGVtIHx8IGl0ZW1bdGhpcy5rZXlWYWx1ZV0gIT09IHRoaXMuY2hlY2tlZEl0ZW0/Llt0aGlzLmtleVZhbHVlXSkpIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtID0gaXRlbTtcclxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmNoZWNrZWRJdGVtW3RoaXMua2V5VGl0bGUhXTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gaXRlbVt0aGlzLmtleVZhbHVlXTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5rZXlWYWx1ZSAmJiAoIXRoaXMuY2hlY2tlZEl0ZW0gfHwgSlNPTi5zdHJpbmdpZnkoaXRlbSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuY2hlY2tlZEl0ZW0pKSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBpdGVtO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuY2hlY2tlZEl0ZW1bdGhpcy5rZXlUaXRsZSFdO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZEl0ZW0gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmlzU2hvd25MaXN0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdE11bHRpSXRlbShpdGVtOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1NlbGVjdGVkKGl0ZW0pKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkSXRlbXMgPSB0aGlzLmNoZWNrZWRJdGVtcy5maWx0ZXIoZiA9PiBmW3RoaXMua2V5VmFsdWUhXSAhPT0gaXRlbVt0aGlzLmtleVZhbHVlIV0gfHwgZiAhPT0gaXRlbSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWRJdGVtcy5wdXNoKGl0ZW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlcyA9ICB0aGlzLmtleVZhbHVlID8gdGhpcy5jaGVja2VkSXRlbXMubWFwKG0gPT4gbVt0aGlzLmtleVZhbHVlXSkgOiB0aGlzLmNoZWNrZWRJdGVtcztcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHZhbHVlcyk7XHJcbiAgICBjb25zdCBzZWxlY3RMID0gdGhpcy5jaGVja2VkSXRlbXMubGVuZ3RoO1xyXG4gICAgaWYgKHNlbGVjdEwpIHtcclxuICAgICAgdGhpcy5tdWx0aUNvdW50VmFsdWUgPSBg0JLRi9Cx0YDQsNC90L4gKCR7c2VsZWN0TH0pYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubXVsdGlDb3VudFZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5tdWx0aSkge1xyXG4gICAgICBpZiAodGhpcy5rZXlWYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRJdGVtcy5maW5kKGYgPT4gZlt0aGlzLmtleVZhbHVlIV0gPT09IGl0ZW1bdGhpcy5rZXlWYWx1ZSFdIHx8IGYgPT09IGl0ZW0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZEl0ZW1zLmZpbmQoZiA9PiBKU09OLnN0cmluZ2lmeShmKSA9PT0gSlNPTi5zdHJpbmdpZnkoaXRlbSkgfHwgZiA9PT0gaXRlbSlcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc3RyaW5nQXJyYXkoKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRJdGVtID09PSBpdGVtXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMua2V5VmFsdWUpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRJdGVtPy5bdGhpcy5rZXlWYWx1ZV0gPT09IGl0ZW1bdGhpcy5rZXlWYWx1ZV0gfHwgdGhpcy5jaGVja2VkSXRlbSA9PT0gaXRlbVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5jaGVja2VkSXRlbSkgPT09IEpTT04uc3RyaW5naWZ5KGl0ZW0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgaGFuZGxlQmx1cigpOiB2b2lkIHtcclxuICAgIHN1cGVyLmhhbmRsZUJsdXIoKTtcclxuXHJcbiAgICB0aGlzLnNob3dNdWx0aUNvdW50VmFsdWUgPSB0aGlzLm11bHRpXHJcbiAgICB0aGlzLmVycm9yVGV4dCA9IFZhbGlkYXRvcnNTZXJ2aWNlLmdldEVycm9yVGV4dCh0aGlzLmNvbnRyb2w/LmVycm9ycylcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSBoYW5kbGVGb2N1cygpOiB2b2lkIHtcclxuICAgIHN1cGVyLmhhbmRsZUZvY3VzKCk7XHJcbiAgICAvLyB0aGlzLnNob3dNdWx0aUNvdW50VmFsdWUgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxpYi1zZWxlY3RcIiBpZD1cImxpYi1zZWxlY3Qte3sgc2VsZWN0SWQgfX1cIiBkZEZpeGVkUG9zaXRpb24+XHJcbiAgQGlmIChsYWJlbCkge1xyXG4gICAgPGxhYmVsIFtmb3JdPVwiaWRcIiBjbGFzcz1cImxpYi1zZWxlY3RfX3RpdGxlXCI+XHJcbiAgICAgIHt7IGxhYmVsIH19XHJcbiAgICAgIEBpZiAocmVxdWlyZWQpIHtcclxuICAgICAgICA8ZGQtbGliLXN2Zy1pY29uIGljb249XCJlcnJvcl9oaW50XCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgICAgIH1cclxuICAgIDwvbGFiZWw+XHJcbiAgfVxyXG5cclxuICA8ZGl2IGNsYXNzPVwicG9zLXJlbGF0aXZlXCIgZGF0YS1jaGlsZD1cImlucHV0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrXCJcclxuICAgICAgICAgW3N0eWxlLnJpZ2h0XT1cIm11bHRpQ291bnRWYWx1ZSA/ICcxMjVweCcgOiBtdWx0aSA/ICc0MHB4JyA6ICczMHB4J1wiXHJcbiAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIihpc1Nob3duTGlzdCkgPyAnZmxleCcgOiAnbm9uZSdcIj5cclxuICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWJsb2NrX19pbnB1dFwiICAjc2VhcmNoSW5wdXRFbCBbYXR0ci5uYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcclxuICAgICAgICAgICAgIChpbnB1dCk9XCJzZWFyY2hJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgdHlwZT1cInRleHRcIiA+XHJcbiAgICAgICAgPGRkLWxpYi1zdmctaWNvblxyXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwic2VhcmNoVmFsdWUgPyAnYmxvY2snIDogJ25vbmUnXCJcclxuICAgICAgICAgIGNsYXNzPVwiY3VwXCJcclxuICAgICAgICAgIChjbGljayk9XCJzZWFyY2hWYWx1ZT0nJ1wiXHJcbiAgICAgICAgICBpZD1cImNoZXZyb24te3sgc2VsZWN0SWQgfX1cIiBpY29uPVwiY2xlYXJcIj48L2RkLWxpYi1zdmctaWNvbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoIXRoaXMuX2RhdGEoKT8ubGVuZ3RoIHx8ICF0aGlzLl9kYXRhKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGEtbG9hZGVyXCI+XHJcbiAgICAgICAgPGRkLWxpYi1sb2FkZXI+PC9kZC1saWItbG9hZGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxpbnB1dFxyXG4gICAgICAjc2VsZWN0XHJcbiAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKClcIlxyXG4gICAgICAoY2xpY2spPVwibm90aWZ5Rm9jdXNFdmVudCgkZXZlbnQpXCJcclxuICAgICAgKGlucHV0KT1cImhhbmRsZUlucHV0KCRldmVudClcIlxyXG4gICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxyXG4gICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoKVwiXHJcbiAgICAgIFthdHRyLmlkXT1cInNlbGVjdElkXCJcclxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiKG11bHRpQ291bnRWYWx1ZSB8fCBzZWFyY2hWYWx1ZSkgPyAnJyA6IHBsYWNlaG9sZGVyXCJcclxuICAgICAgW2F0dHIudGFiSW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgICBbc3R5bGUuY29sb3JdPVwiKHNlYXJjaFZhbHVlICYmIGlzU2hvd25MaXN0KSA/ICd0cmFuc3BhcmVudCcgOiAnaW5oZXJpdCdcIlxyXG4gICAgICBbYXR0ci50eXBlXT1cIid0ZXh0J1wiXHJcbiAgICAgIFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWRcIlxyXG4gICAgICBbY2xhc3MuaW52YWxpZF09XCJzaG93RXJyb3JcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXHJcbiAgICAgIFt0aXRsZV09XCJpbnB1dFZhbHVlIHx8ICcnXCJcclxuICAgICAgY2xhc3M9XCJ0ZXh0LXNlbGVjdCBzZWxlY3QtYmxvY2tcIiAvPlxyXG4gICAgQGlmIChtdWx0aUNvdW50VmFsdWUpIHtcclxuICAgICAgPHNwYW4gY2xhc3M9XCJtdWx0aS1jb3VudCB0ZXh0LXBsYWluIHNtYWxsXCI+e3ttdWx0aUNvdW50VmFsdWV9fTwvc3Bhbj5cclxuICAgIH1cclxuICAgIDwhLS0gICAgKGJsdXIpPVwibm90aWZ5Rm9jdXNFdmVudCgkZXZlbnQpXCItLT5cclxuICAgIEBpZiAoIWNoZWNrZWRJdGVtKSB7XHJcbiAgICAgIDxkZC1saWItc3ZnLWljb25cclxuICAgICAgICAoY2xpY2spPVwibm90aWZ5Rm9jdXNFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICBbY2xhc3MuYmxhY2stc3ZnXT1cImlzU2hvd25MaXN0XCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtjbGFzcy5ncmF5LXN2Z109XCIhaXNTaG93bkxpc3RcIlxyXG4gICAgICAgIFtjbGFzcy51cF09XCJpc1Nob3duTGlzdFwiXHJcbiAgICAgICAgaWQ9XCJjaGV2cm9uLXt7IHNlbGVjdElkIH19XCIgY2xhc3M9XCJjaGV2cm9uXCIgaWNvbj1cImRvd25fY2hldnJvblwiPjwvZGQtbGliLXN2Zy1pY29uPlxyXG5cclxuICAgIH0gQGVsc2UgaWYgKGNsZWFyYWJsZSAmJiAhc2VhcmNoVmFsdWUpIHtcclxuICAgICAgPGRkLWxpYi1zdmctaWNvblxyXG4gICAgICAgIChjbGljayk9XCJvbkNsZWFyKGNoZWNrZWRJdGVtKVwiXHJcbiAgICAgICAgY2xhc3M9XCJjbGVhclwiXHJcbiAgICAgICAgaWQ9XCJjaGV2cm9uLXt7IHNlbGVjdElkIH19XCIgaWNvbj1cImNsZWFyXCI+PC9kZC1saWItc3ZnLWljb24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIEBpZiAoZXJyb3JUZXh0cy5sZW5ndGggJiYgc2hvd0Vycm9yKSB7XHJcbiAgICBAZm9yIChlcnJvciBvZiBlcnJvclRleHRzOyB0cmFjayBlcnJvcikge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibGliLXNlbGVjdF9fZXJyb3JcIj57eyBlcnJvciB9fTwvZGl2PlxyXG4gICAgfVxyXG4gIH1cclxuICBAaWYgKGVycm9yVGV4dCAmJiBzaG93U2VsZkVycm9yICYmIHNob3dFcnJvcikge1xyXG4gICAgPGRpdiBjbGFzcz1cImxpYi1zZWxlY3RfX2Vycm9yXCI+e3sgZXJyb3JUZXh0IH19PC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoaXNTaG93bkxpc3QpIHtcclxuICA8ZGl2XHJcbiAgICBpZD1cImRyb3Bkb3duXCJcclxuICAgIGRhdGEtY2hpbGQ9XCJsaXN0XCJcclxuICAgIFtuZ1N0eWxlXT1cImRyb3Bkb3duU3R5bGVcIlxyXG4gICAgKGRkQ2xpY2tPdXRzaWRlKT1cIm5vdGlmeUZvY3VzRXZlbnQoJGV2ZW50KTtmdWxsQmx1ci5lbWl0KCRldmVudClcIlxyXG4gICAgW2VsZW1lbnRzXT1cIlsnbGliLXNlbGVjdC0nICsgc2VsZWN0SWQsICdjaGV2cm9uJyArIHNlbGVjdElkXVwiXHJcbiAgICBkZExpc3RLZXlib2FyZE5hdmlnYXRpb25cclxuICAgIGNsYXNzPVwic2VsZWN0LWxpc3Qtd3JhcHBlclwiPlxyXG4gICAgQGlmIChfZGF0YSgpPy5sZW5ndGgpIHtcclxuICAgICAgQGlmICh2aXJ0dWFsU2Nyb2xsKSB7XHJcbiAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBbaXRlbVNpemVdPVwiaXRlbVNpemVcIiBbc3R5bGUuaGVpZ2h0XT1cIihfZGF0YSgpPy5sZW5ndGggfHwgMCkgKiBpdGVtU2l6ZSArICdweCdcIj5cclxuICAgICAgICAgIDxkaXYgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBfZGF0YSgpIHwgZmlsdGVyQnlLZXk6IGZpbHRlckxpc3QuYmluZCh0aGlzKVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd0l0ZW1cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgQGZvciAoaXRlbSBvZiBfZGF0YSgpIHwgZmlsdGVyQnlLZXk6IGZpbHRlckxpc3QuYmluZCh0aGlzKTsgdHJhY2sgaXRlbSkge1xyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWxvYWRlclwiPlxyXG4gICAgICA8ZGQtbGliLWxvYWRlcj48L2RkLWxpYi1sb2FkZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNyb3dJdGVtIGxldC1pdGVtPWl0ZW0+XHJcbiAgPGRpdiBkZFNlbGVjdGFibGVJdGVtIFtkZFRvb2x0aXBdPVwiaXRlbS50b29sdGlwID8gaXRlbS50b29sdGlwIDogJydcIiBbcG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCJcclxuICAgICAgIChpdGVtU2VsZWN0ZWQpPVwic2VsZWN0SXRlbShpdGVtKVwiXHJcbiAgICAgICBbY2xhc3Mucy1pdGVtLWFjdGl2ZV09XCJjaGVja1NlbGVjdGVkKGl0ZW0pICYmICFpdGVtLmRpc2FibGVkXCJcclxuICAgICAgIFtjbGFzcy5zLWl0ZW0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXHJcbiAgICAgICBjbGFzcz1cInNlbGVjdC1kYXRhXCI+XHJcbiAgICBAaWYgKHN0cmluZ0FycmF5KCkpIHtcclxuICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cIml0ZW0gfCBoaWdobGlnaHQ6IChoaWdobGlnaHQgPyBzZWFyY2hWYWx1ZSA6ICcnKSB8IHNhZmU6ICdodG1sJ1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtZGF0YV9fdGl0bGVcIj48L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoa2V5VGl0bGUgJiYgIXN0cmluZ0FycmF5KCkpIHtcclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbVtrZXlUaXRsZSFdIHwgaGlnaGxpZ2h0OiAoaGlnaGxpZ2h0ID8gc2VhcmNoVmFsdWUgOiAnJykgfCBzYWZlOiAnaHRtbCdcIlxyXG4gICAgICAgIGNsYXNzPVwic2VsZWN0LWRhdGFfX3RpdGxlXCI+PC9kaXY+XHJcbiAgICB9XHJcbiAgICBAaWYgKGtleURlc2MgJiYgIXN0cmluZ0FycmF5KCkpIHtcclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaXRlbVtrZXlEZXNjIV0gfCBoaWdobGlnaHQ6IChoaWdobGlnaHQgPyBzZWFyY2hWYWx1ZSA6ICcnKSB8IHNhZmU6ICdodG1sJ1wiXHJcbiAgICAgICAgW3RpdGxlXT1cIml0ZW1ba2V5RGVzY11cIlxyXG4gICAgICAgIGNsYXNzPVwic2VsZWN0LWRhdGFfX2Rlc2NcIj48L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoY2hlY2tTZWxlY3RlZChpdGVtKSkge1xyXG4gICAgICA8ZGQtbGliLXN2Zy1pY29uXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oY2hlY2tlZEl0ZW0pXCJcclxuICAgICAgICBjbGFzcz1cImNoZWNrZWRcIlxyXG4gICAgICAgIGlkPVwiY2hldnJvbi17eyBzZWxlY3RJZCB9fVwiIGljb249XCJjaGVja19ncmVlblwiPjwvZGQtbGliLXN2Zy1pY29uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -1303,10 +1303,11 @@ class FixedPositionDirective {
|
|
|
1303
1303
|
ngAfterViewInit() {
|
|
1304
1304
|
// id scroll-container надо задать обертке, которая имеет скролл и где будет скролящийся блок
|
|
1305
1305
|
const scrollContainer = document.getElementById('scroll-container');
|
|
1306
|
-
console.log(scrollContainer);
|
|
1307
1306
|
if (scrollContainer) {
|
|
1308
1307
|
// Подписываемся на событие scroll чужеродного контейнера типа модалки и прочего узкого контента
|
|
1309
|
-
this.scrollListener = this.renderer.listen(scrollContainer, 'scroll', () =>
|
|
1308
|
+
this.scrollListener = this.renderer.listen(scrollContainer, 'scroll', () => {
|
|
1309
|
+
return this.onScroll();
|
|
1310
|
+
});
|
|
1310
1311
|
}
|
|
1311
1312
|
this.parentElement = this.el.nativeElement;
|
|
1312
1313
|
this.child1 = this.parentElement.querySelector(`[data-child="${this.childName1}"]`);
|
|
@@ -3248,10 +3249,7 @@ class LibSelectComponent extends LibCommonInputTextComponent {
|
|
|
3248
3249
|
}
|
|
3249
3250
|
}
|
|
3250
3251
|
ngOnChanges(changes) {
|
|
3251
|
-
if (!changes['data']
|
|
3252
|
-
console.log(changes['data'].previousValue);
|
|
3253
|
-
console.log(changes['data'].currentValue);
|
|
3254
|
-
console.log(this.writtenValue);
|
|
3252
|
+
if (!changes?.['data']?.previousValue && changes?.['data']?.currentValue && this.writtenValue) {
|
|
3255
3253
|
this.writeValue(this.writtenValue);
|
|
3256
3254
|
}
|
|
3257
3255
|
}
|