ngx-tethys 17.0.13 → 17.0.15
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/CHANGELOG.md +35 -0
- package/core/overlay/abstract-overlay.config.d.ts +6 -0
- package/esm2022/core/overlay/abstract-overlay.config.mjs +7 -1
- package/esm2022/date-picker/lib/date/date-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/decade/decade-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/month/month-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/year/year-header.component.mjs +4 -4
- package/esm2022/input-number/input-number.component.mjs +2 -2
- package/esm2022/menu/item/action/menu-item-action.component.mjs +15 -6
- package/esm2022/popover/popover.service.mjs +2 -1
- package/esm2022/property/property-item.component.mjs +3 -3
- package/esm2022/tree-select/tree-select.component.mjs +10 -8
- package/esm2022/upload/file-select.component.mjs +20 -24
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-core.mjs +6 -0
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +9 -9
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +12 -3
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +1 -0
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +2 -2
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +4 -1
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +19 -23
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/menu/item/action/menu-item-action.component.d.ts +7 -2
- package/menu/styles/menu.scss +8 -0
- package/package.json +1 -1
- package/property/styles/properties.scss +2 -0
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/shared/option/styles/select-dropdown.scss +1 -0
- package/slider/slider.scss +12 -20
- package/styles/modules/tables.scss +20 -0
- package/styles/variables.scss +1 -1
- package/table/styles/skeleton.scss +5 -0
- package/upload/file-select.component.d.ts +5 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ThyPopover } from 'ngx-tethys/popover';
|
|
1
|
+
import { ThyPopover, ThyPopoverConfig } from 'ngx-tethys/popover';
|
|
3
2
|
import { coerceBooleanProperty } from 'ngx-tethys/util';
|
|
3
|
+
import { Component, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "ngx-tethys/popover";
|
|
6
6
|
/**
|
|
@@ -28,10 +28,17 @@ export class ThyMenuItemAction {
|
|
|
28
28
|
event.stopPropagation();
|
|
29
29
|
}
|
|
30
30
|
if (this._actionMenu) {
|
|
31
|
-
|
|
31
|
+
const activeClass = 'action-active';
|
|
32
|
+
const wrapDOM = event.target.closest('.thy-menu-item');
|
|
33
|
+
wrapDOM?.classList.add(activeClass);
|
|
34
|
+
const popoverRef = this.popover.open(this._actionMenu, Object.assign({
|
|
32
35
|
origin: event.currentTarget,
|
|
33
36
|
insideClosable: true,
|
|
34
|
-
placement: '
|
|
37
|
+
placement: 'bottomLeft',
|
|
38
|
+
originActiveClass: 'active'
|
|
39
|
+
}, this.thyPopoverOptions));
|
|
40
|
+
popoverRef?.afterClosed().subscribe(() => {
|
|
41
|
+
wrapDOM?.classList.remove(activeClass);
|
|
35
42
|
});
|
|
36
43
|
}
|
|
37
44
|
});
|
|
@@ -51,7 +58,7 @@ export class ThyMenuItemAction {
|
|
|
51
58
|
this.removeClickListenerFn?.();
|
|
52
59
|
}
|
|
53
60
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyMenuItemAction, deps: [{ token: i1.ThyPopover }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyMenuItemAction, isStandalone: true, selector: "thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]", inputs: { thyActionMenu: "thyActionMenu", thyStopPropagation: ["thyStopPropagation", "thyStopPropagation", coerceBooleanProperty] }, host: { classAttribute: "thy-menu-item-action" }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
|
|
61
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyMenuItemAction, isStandalone: true, selector: "thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]", inputs: { thyActionMenu: "thyActionMenu", thyStopPropagation: ["thyStopPropagation", "thyStopPropagation", coerceBooleanProperty], thyPopoverOptions: "thyPopoverOptions" }, host: { classAttribute: "thy-menu-item-action" }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
|
|
55
62
|
}
|
|
56
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyMenuItemAction, decorators: [{
|
|
57
64
|
type: Component,
|
|
@@ -63,5 +70,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
63
70
|
}], thyStopPropagation: [{
|
|
64
71
|
type: Input,
|
|
65
72
|
args: [{ transform: coerceBooleanProperty }]
|
|
73
|
+
}], thyPopoverOptions: [{
|
|
74
|
+
type: Input
|
|
66
75
|
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWVudS9pdGVtL2FjdGlvbi9tZW51LWl0ZW0tYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tZW51L2l0ZW0vYWN0aW9uL21lbnUtaXRlbS1hY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7OztBQUVoRzs7OztHQUlHO0FBU0gsTUFBTSxPQUFPLGlCQUFpQjtJQUsxQjs7T0FFRztJQUNILElBQ0ksYUFBYSxDQUFDLEtBQTRDO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQWFPLGNBQWM7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQzlGLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQztnQkFDcEMsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3hFLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDaEMsSUFBSSxDQUFDLFdBQVcsRUFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FDVDtvQkFDSSxNQUFNLEVBQUUsS0FBSyxDQUFDLGFBQTRCO29CQUMxQyxjQUFjLEVBQUUsSUFBSTtvQkFDcEIsU0FBUyxFQUFFLFlBQVk7b0JBQ3ZCLGlCQUFpQixFQUFFLFFBQVE7aUJBQzlCLEVBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUN6QixDQUNKLENBQUM7Z0JBQ0YsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ3JDLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFJRCxZQUFvQixPQUFtQixFQUFVLFFBQW1CLEVBQVUsVUFBc0I7UUFBaEYsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBNURwRyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQWVwQjs7V0FFRztRQUMwQyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUF3Qy9ELDBCQUFxQixHQUF3QixJQUFJLENBQUM7SUFFNkMsQ0FBQztJQUV4RyxXQUFXO1FBQ1AsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzhHQWpFUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4TUFtQk4scUJBQXFCLHVIQ3RDN0MsNkJBQ0E7OzJGRGtCYSxpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0ksaUVBQWlFLFFBRXJFO3dCQUNGLEtBQUssRUFBRSxzQkFBc0I7cUJBQ2hDLGNBQ1csSUFBSTtnSUFXWixhQUFhO3NCQURoQixLQUFLO2dCQVd1QyxrQkFBa0I7c0JBQTlELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBTWxDLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJDb25maWcgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcblxuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICog6I+c5Y2V6aG55pON5L2c57uE5Lu2XG4gKiBAbmFtZSB0aHktbWVudS1pdGVtLWFjdGlvbixbdGh5LW1lbnUtaXRlbS1hY3Rpb25dLFt0aHlNZW51SXRlbUFjdGlvbl1cbiAqIEBvcmRlciAyNVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1tZW51LWl0ZW0tYWN0aW9uLFt0aHktbWVudS1pdGVtLWFjdGlvbl0sW3RoeU1lbnVJdGVtQWN0aW9uXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUtaXRlbS1hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktbWVudS1pdGVtLWFjdGlvbidcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGh5TWVudUl0ZW1BY3Rpb24gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIF9ib3VuZEV2ZW50ID0gZmFsc2U7XG5cbiAgICBfYWN0aW9uTWVudTogQ29tcG9uZW50VHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBBY3Rpb24g6I+c5Y2VXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5QWN0aW9uTWVudSh2YWx1ZTogQ29tcG9uZW50VHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLl9hY3Rpb25NZW51ID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9hY3Rpb25NZW51KSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRDbGlja0V2ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbpmLvmraLkuovku7blhpLms6FcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlTdG9wUHJvcGFnYXRpb24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5by55Ye65qGG55qE5Y+C5pWwXG4gICAgICogQGRlZmF1bHQgeyBwbGFjZW1lbnQ6IFwiYm90dG9tTGVmdFwiLCBpbnNpZGVDbG9zYWJsZTogdHJ1ZSB9XG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UG9wb3Zlck9wdGlvbnM6IFRoeVBvcG92ZXJDb25maWc7XG5cbiAgICBwcml2YXRlIGJpbmRDbGlja0V2ZW50KCkge1xuICAgICAgICBpZiAodGhpcy5fYm91bmRFdmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2JvdW5kRXZlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXJGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCBldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aHlTdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9hY3Rpb25NZW51KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlQ2xhc3MgPSAnYWN0aW9uLWFjdGl2ZSc7XG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcERPTSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy50aHktbWVudS1pdGVtJyk7XG4gICAgICAgICAgICAgICAgd3JhcERPTT8uY2xhc3NMaXN0LmFkZChhY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoaXMucG9wb3Zlci5vcGVuKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hY3Rpb25NZW51LFxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjogZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5BY3RpdmVDbGFzczogJ2FjdGl2ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoeVBvcG92ZXJPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHBvcG92ZXJSZWY/LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgd3JhcERPTT8uY2xhc3NMaXN0LnJlbW92ZShhY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlQ2xpY2tMaXN0ZW5lckZuOiBWb2lkRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9wb3ZlcjogVGh5UG9wb3ZlciwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyRm4/LigpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
@@ -28,6 +28,7 @@ export class ThyPopover extends ThyAbstractOverlayService {
|
|
|
28
28
|
const positionStrategy = new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);
|
|
29
29
|
const positions = getFlexiblePositions(config.placement, config.offset, 'thy-popover');
|
|
30
30
|
positionStrategy.withPositions(positions);
|
|
31
|
+
positionStrategy.withPush(config.canPush);
|
|
31
32
|
positionStrategy.withGrowAfterOpen(true);
|
|
32
33
|
positionStrategy.withTransformOriginOn('.thy-popover-container');
|
|
33
34
|
positionStrategy.positionChanges.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(change => {
|
|
@@ -209,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
209
210
|
type: Inject,
|
|
210
211
|
args: [DOCUMENT]
|
|
211
212
|
}] }, { type: i2.Platform }, { type: i1.OverlayContainer }] });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BvcG92ZXIvcG9wb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsb0JBQW9CLEVBQXlCLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckksT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUNILGlDQUFpQyxFQUVqQyxPQUFPLEVBRVAsZ0JBQWdCLEVBSWhCLGFBQWEsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFFbkksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLGdDQUFnQyxFQUNoQywyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBR2xFOzs7R0FHRztBQUVILE1BQU0sT0FBTyxVQUFXLFNBQVEseUJBQWdFO0lBV3BGLHFCQUFxQixDQUFRLE1BQStCO1FBQ2hFLE1BQU0sTUFBTSxHQUE0QyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3RILGdGQUFnRjtRQUNoRixNQUFNLGdCQUFnQixHQUFHLElBQUksaUNBQWlDLENBQzFELE1BQU0sRUFDTixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUN6QixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZGLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2pFLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyRixJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuRCw2REFBNkQ7Z0JBQzdELDhDQUE4QztnQkFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBd0I7UUFDaEQsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGtCQUFrQixDQUFRLE1BQStCO1FBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUMvRSxhQUFhLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDbEQsYUFBYSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVTLHNCQUFzQixDQUFDLE9BQW1CLEVBQUUsTUFBNkI7UUFDL0UsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1FBQzNGLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDN0IsTUFBTSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUTtZQUNyQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDL0QsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQXNCLGVBQWUsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRVMsd0JBQXdCLENBQzlCLFVBQXNCLEVBQ3RCLGlCQUFzQyxFQUN0QyxNQUF3QjtRQUV4QixPQUFPLElBQUkscUJBQXFCLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFUyxjQUFjLENBQUksTUFBd0IsRUFBRSxVQUE0QixFQUFFLGdCQUFxQztRQUNySCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFFM0YsTUFBTSxlQUFlLEdBQXFCO1lBQ3RDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTtZQUM1RDtnQkFDSSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsUUFBUSxFQUFFLFVBQVU7YUFDdkI7U0FDSixDQUFDO1FBRUYsSUFBSSxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUF3QixjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hHLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixRQUFRLEVBQUU7b0JBQ04sS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTO29CQUN2QixNQUFNLEVBQUUsRUFBRSxFQUFFO2lCQUNmO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRU8sMkJBQTJCLENBQUMsTUFBd0I7UUFDeEQsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixhQUFhLENBQWMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUN0RyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDhCQUE4QixDQUFDLE1BQXdCO1FBQzNELElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsYUFBYSxDQUFjLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDekcsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUNJLE9BQWdCLEVBQ2hCLFFBQWtCLEVBR2xCLGFBQStCLEVBRS9CLGNBQTRDLEVBQ3BDLE1BQWMsRUFDZCxjQUE2QixFQUNDLFNBQWMsRUFDNUMsU0FBbUIsRUFDbkIsaUJBQW1DO1FBRTNDLEtBQUssQ0FDRCw2QkFBNkIsRUFDN0IsT0FBTyxFQUNQLFFBQVEsRUFDUjtZQUNJLEdBQUcsZ0NBQWdDO1lBQ25DLEdBQUcsYUFBYTtTQUNuQixFQUNELGNBQWMsQ0FDakIsQ0FBQztRQWZNLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUNDLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDNUMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBdkg5QixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEMsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBTWpDLENBQUM7SUEySEosQ0FBQztJQUVPLGtCQUFrQixDQUFDLE1BQW1CO1FBQzFDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzNDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ2pCLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3pCLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ2pCLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQ0Esc0JBQXFELEVBQ3JELE1BQWdDO1FBRWhDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsYUFBYTtRQUNiLGdHQUFnRztRQUNoRywrREFBK0Q7UUFDL0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQWEsc0JBQXNCLEVBQUUsTUFBTSxDQUFxQyxDQUFDO1FBQ3BILE1BQU0sR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBQzdDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLE1BQU07WUFDTixVQUFVO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLEVBQVU7UUFDckIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFtQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNiLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLE9BQW9CO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUV6RCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFJLE1BQVUsRUFBRSxLQUFlO1FBQ2hDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs4R0E5TlEsVUFBVSxpRUFnSFAsMEJBQTBCLDZCQUUxQiwyQkFBMkIsZ0VBSWYsUUFBUTtrSEF0SHZCLFVBQVU7OzJGQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQWdIRixRQUFROzswQkFDUixNQUFNOzJCQUFDLDBCQUEwQjs7MEJBRWpDLE1BQU07MkJBQUMsMkJBQTJCOzswQkFJbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZU9yVGVtcGxhdGVSZWYsIGdldEZsZXhpYmxlUG9zaXRpb25zLCBUaHlBYnN0cmFjdE92ZXJsYXlSZWYsIFRoeUFic3RyYWN0T3ZlcmxheVNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgRnVuY3Rpb25Qcm9wLCBpc0Z1bmN0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgY29lcmNlQXJyYXksIGNvZXJjZUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheUNvbmZpZyxcbiAgICBPdmVybGF5Q29udGFpbmVyLFxuICAgIE92ZXJsYXlSZWYsXG4gICAgUG9zaXRpb25TdHJhdGVneSxcbiAgICBTY3JvbGxTdHJhdGVneSxcbiAgICBWaWV3cG9ydFJ1bGVyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBTdGF0aWNQcm92aWRlciwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGh5UG9wb3ZlckNvbnRhaW5lciB9IGZyb20gJy4vcG9wb3Zlci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUludGVybmFsUG9wb3ZlclJlZiwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJy4vcG9wb3Zlci1yZWYnO1xuaW1wb3J0IHtcbiAgICBUSFlfUE9QT1ZFUl9ERUZBVUxUX0NPTkZJRyxcbiAgICBUSFlfUE9QT1ZFUl9ERUZBVUxUX0NPTkZJR19WQUxVRSxcbiAgICBUSFlfUE9QT1ZFUl9TQ1JPTExfU1RSQVRFR1ksXG4gICAgVGh5UG9wb3ZlckNvbmZpZ1xufSBmcm9tICcuL3BvcG92ZXIuY29uZmlnJztcbmltcG9ydCB7IHBvcG92ZXJBYnN0cmFjdE92ZXJsYXlPcHRpb25zIH0gZnJvbSAnLi9wb3BvdmVyLm9wdGlvbnMnO1xuaW1wb3J0IHsgU2FmZUFueSB9IGZyb20gJ25neC10ZXRoeXMvdHlwZXMnO1xuXG4vKipcbiAqIEBwdWJsaWNcbiAqIEBvcmRlciAxMFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGh5UG9wb3ZlciBleHRlbmRzIFRoeUFic3RyYWN0T3ZlcmxheVNlcnZpY2U8VGh5UG9wb3ZlckNvbmZpZywgVGh5UG9wb3ZlckNvbnRhaW5lcj4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSBvcmlnaW5JbnN0YW5jZXNNYXAgPSBuZXcgTWFwPFxuICAgICAgICBFbGVtZW50UmVmIHwgSFRNTEVsZW1lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZztcbiAgICAgICAgICAgIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55LCBhbnk+O1xuICAgICAgICB9XG4gICAgPigpO1xuXG4gICAgcHJpdmF0ZSBidWlsZFBvc2l0aW9uU3RyYXRlZ3k8VERhdGE+KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZzxURGF0YT4pOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4gPSBjb25maWcub3JpZ2luUG9zaXRpb24gPyBjb25maWcub3JpZ2luUG9zaXRpb24gOiBjb25maWcub3JpZ2luO1xuICAgICAgICAvLyBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pO1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneShcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdwb3J0UnVsZXIsXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudCxcbiAgICAgICAgICAgIHRoaXMuX3BsYXRmb3JtLFxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheUNvbnRhaW5lclxuICAgICAgICApO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBnZXRGbGV4aWJsZVBvc2l0aW9ucyhjb25maWcucGxhY2VtZW50LCBjb25maWcub2Zmc2V0LCAndGh5LXBvcG92ZXInKTtcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneS53aXRoUG9zaXRpb25zKHBvc2l0aW9ucyk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aEdyb3dBZnRlck9wZW4odHJ1ZSk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcudGh5LXBvcG92ZXItY29udGFpbmVyJyk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2Uuc2Nyb2xsYWJsZVZpZXdQcm9wZXJ0aWVzLmlzT3ZlcmxheUNsaXBwZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBBZnRlciBwb3NpdGlvbiBjaGFuZ2VzIG9jY3VyIGFuZCB0aGUgb3ZlcmxheSBpcyBjbGlwcGVkIGJ5XG4gICAgICAgICAgICAgICAgLy8gYSBwYXJlbnQgc2Nyb2xsYWJsZSB0aGVuIGNsb3NlIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFNjcm9sbFN0cmF0ZWd5KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZyk6IFNjcm9sbFN0cmF0ZWd5IHtcbiAgICAgICAgaWYgKGNvbmZpZy5zY3JvbGxTdHJhdGVneSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5zY3JvbGxTdHJhdGVneTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcm9sbFN0cmF0ZWd5ICYmIGlzRnVuY3Rpb24odGhpcy5zY3JvbGxTdHJhdGVneSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcm9sbFN0cmF0ZWd5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGJ1aWxkT3ZlcmxheUNvbmZpZzxURGF0YT4oY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnPFREYXRhPik6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5idWlsZFBvc2l0aW9uU3RyYXRlZ3koY29uZmlnKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuYnVpbGRCYXNlT3ZlcmxheUNvbmZpZyhjb25maWcsICd0aHktcG9wb3Zlci1wYW5lbCcpO1xuICAgICAgICBvdmVybGF5Q29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICBvdmVybGF5Q29uZmlnLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5idWlsZFNjcm9sbFN0cmF0ZWd5KGNvbmZpZyk7XG4gICAgICAgIHJldHVybiBvdmVybGF5Q29uZmlnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhdHRhY2hPdmVybGF5Q29udGFpbmVyKG92ZXJsYXk6IE92ZXJsYXlSZWYsIGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZzxhbnk+KTogVGh5UG9wb3ZlckNvbnRhaW5lciB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmplY3RvciA9IGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcGFyZW50OiB1c2VySW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVGh5UG9wb3ZlckNvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChUaHlQb3BvdmVyQ29udGFpbmVyLCBjb25maWcudmlld0NvbnRhaW5lclJlZiwgaW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBvdmVybGF5LmF0dGFjaDxUaHlQb3BvdmVyQ29udGFpbmVyPihjb250YWluZXJQb3J0YWwpO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBYnN0cmFjdE92ZXJsYXlSZWY8VCwgVFJlc3VsdCA9IHVua25vd24+KFxuICAgICAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBjb250YWluZXJJbnN0YW5jZTogVGh5UG9wb3ZlckNvbnRhaW5lcixcbiAgICAgICAgY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnXG4gICAgKTogVGh5QWJzdHJhY3RPdmVybGF5UmVmPFQsIFRoeVBvcG92ZXJDb250YWluZXIsIFRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaHlJbnRlcm5hbFBvcG92ZXJSZWYob3ZlcmxheVJlZiwgY29udGFpbmVySW5zdGFuY2UsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUluamVjdG9yPFQ+KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZywgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUPiwgcG9wb3ZlckNvbnRhaW5lcjogVGh5UG9wb3ZlckNvbnRhaW5lcik6IEluamVjdG9yIHtcbiAgICAgICAgY29uc3QgdXNlckluamVjdG9yID0gY29uZmlnICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yO1xuXG4gICAgICAgIGNvbnN0IGluamVjdGlvblRva2VuczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICAgICAgICAgIHsgcHJvdmlkZTogVGh5UG9wb3ZlckNvbnRhaW5lciwgdXNlVmFsdWU6IHBvcG92ZXJDb250YWluZXIgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBUaHlQb3BvdmVyUmVmLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBwb3BvdmVyUmVmXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKGNvbmZpZy5kaXJlY3Rpb24gJiYgKCF1c2VySW5qZWN0b3IgfHwgIXVzZXJJbmplY3Rvci5nZXQ8RGlyZWN0aW9uYWxpdHkgfCBudWxsPihEaXJlY3Rpb25hbGl0eSwgbnVsbCkpKSB7XG4gICAgICAgICAgICBpbmplY3Rpb25Ub2tlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbmZpZy5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZTogb2YoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7IHBhcmVudDogdXNlckluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsIHByb3ZpZGVyczogaW5qZWN0aW9uVG9rZW5zIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3JpZ2luRWxlbWVudEFkZEFjdGl2ZUNsYXNzKGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLm9yaWdpbkFjdGl2ZUNsYXNzKSB7XG4gICAgICAgICAgICBjb2VyY2VFbGVtZW50PEhUTUxFbGVtZW50Pihjb25maWcub3JpZ2luKS5jbGFzc0xpc3QuYWRkKC4uLmNvZXJjZUFycmF5KGNvbmZpZy5vcmlnaW5BY3RpdmVDbGFzcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcmlnaW5FbGVtZW50UmVtb3ZlQWN0aXZlQ2xhc3MoY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcub3JpZ2luQWN0aXZlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNvZXJjZUVsZW1lbnQ8SFRNTEVsZW1lbnQ+KGNvbmZpZy5vcmlnaW4pLmNsYXNzTGlzdC5yZW1vdmUoLi4uY29lcmNlQXJyYXkoY29uZmlnLm9yaWdpbkFjdGl2ZUNsYXNzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHKVxuICAgICAgICBkZWZhdWx0Q29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnLFxuICAgICAgICBASW5qZWN0KFRIWV9QT1BPVkVSX1NDUk9MTF9TVFJBVEVHWSlcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IEZ1bmN0aW9uUHJvcDxTY3JvbGxTdHJhdGVneT4sXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgICAgIHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheUNvbnRhaW5lcjogT3ZlcmxheUNvbnRhaW5lclxuICAgICkge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIHBvcG92ZXJBYnN0cmFjdE92ZXJsYXlPcHRpb25zLFxuICAgICAgICAgICAgb3ZlcmxheSxcbiAgICAgICAgICAgIGluamVjdG9yLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLlRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHX1ZBTFVFLFxuICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5zdXJlQ2xvc2VDbG9zZXN0KG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGNsb3NlQW5kRW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3JpZ2luSW5zdGFuY2VzTWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5jb25maWcubWFudWFsQ2xvc3VyZSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNsb3NlQW5kRW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICBjbG9zZUFuZEVuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbHVlLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjbG9zZUFuZEVuZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmiZPlvIDmgqzmta7lsYJcbiAgICAgKi9cbiAgICBvcGVuPFQsIFREYXRhID0gdW5rbm93biwgVFJlc3VsdCA9IHVua25vd24+KFxuICAgICAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlT3JUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgY29uZmlnPzogVGh5UG9wb3ZlckNvbmZpZzxURGF0YT5cbiAgICApOiBUaHlQb3BvdmVyUmVmPFQsIFRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoY29uZmlnLm9yaWdpbik7XG4gICAgICAgIC8vIOm7mOiupOWFs+mXreS5i+WJjeeahOW8ueWHuuahhlxuICAgICAgICAvLyAxLiDlvZPkuYvliY3nmoQgUG9wb3ZlciDorr7nva4gbWFudWFsQ2xvc3VyZSDkuLogdHJ1ZSDml7YsIOW8ueWHuuWFtuS7liBQb3BvdmVyIOaXtuS4jeiHquWKqOWFs+mXrSBtYW51YWxDbG9zdXJlIOS4uiB0cnVlIOeahCBQb3BvdmVyXG4gICAgICAgIC8vIDIuIOW9k+WJjeeahCBPcmlnaW4g5a+55bqU55qEIFBvcG92ZXIg5bey57uP5by55Ye677yM5LiN566hIG1hbnVhbENsb3N1cmUg6K6+572u5Li65L2V77yM55u05o6l5YWz6Zet5bm26L+U5ZueXG4gICAgICAgIGlmICh0aGlzLmVuc3VyZUNsb3NlQ2xvc2VzdChvcmlnaW5FbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoaXMub3Blbk92ZXJsYXk8VCwgVFJlc3VsdD4oY29tcG9uZW50T3JUZW1wbGF0ZVJlZiwgY29uZmlnKSBhcyBUaHlQb3BvdmVyUmVmPFQsIFRSZXN1bHQsIFREYXRhPjtcbiAgICAgICAgY29uZmlnID0gcG9wb3ZlclJlZi5jb250YWluZXJJbnN0YW5jZS5jb25maWc7XG4gICAgICAgIHBvcG92ZXJSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5FbGVtZW50UmVtb3ZlQWN0aXZlQ2xhc3MoY29uZmlnKTtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luSW5zdGFuY2VzTWFwLmRlbGV0ZShvcmlnaW5FbGVtZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5FbGVtZW50QWRkQWN0aXZlQ2xhc3MoY29uZmlnKTtcbiAgICAgICAgdGhpcy5vcmlnaW5JbnN0YW5jZXNNYXAuc2V0KG9yaWdpbkVsZW1lbnQsIHtcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIHBvcG92ZXJSZWZcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBvcG92ZXJSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uSWTojrflj5bmiZPlvIDnmoTmgqzmta7lsYJcbiAgICAgKi9cbiAgICBnZXRQb3BvdmVyQnlJZChpZDogc3RyaW5nKTogVGh5UG9wb3ZlclJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWJzdHJhY3RPdmVybGF5QnlJZChpZCkgYXMgVGh5UG9wb3ZlclJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluW3sue7j+aJk+W8gOeahOaCrOa1ruWxglxuICAgICAqL1xuICAgIGdldE9wZW5lZFBvcG92ZXJzKCk6IFRoeVBvcG92ZXJSZWY8U2FmZUFueT5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFic3RyYWN0T3ZlcmxheXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24uZW4tdXMgRmluZHMgdGhlIGNsb3Nlc3QgVGh5UG9wb3ZlclJlZiB0byBhbiBlbGVtZW50IGJ5IGxvb2tpbmcgYXQgdGhlIERPTS5cbiAgICAgKiBAZGVzY3JpcHRpb24g6YCa6L+HIERvbSDlhYPntKDmn6Xmib7mnIDov5HlvLnlh7rnmoTmgqzmta7lsYJcbiAgICAgKi9cbiAgICBnZXRDbG9zZXN0UG9wb3ZlcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IFRoeVBvcG92ZXJSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdCgnLnRoeS1wb3BvdmVyLWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQb3BvdmVyQnlJZChwYXJlbnQuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWFs+mXreaCrOa1ruWxglxuICAgICAqL1xuICAgIGNsb3NlPFQ+KHJlc3VsdD86IFQsIGZvcmNlPzogYm9vbGVhbikge1xuICAgICAgICBzdXBlci5jbG9zZShyZXN1bHQsIGZvcmNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kaXNwb3NlKCk7XG4gICAgfVxufVxuIl19
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BvcG92ZXIvcG9wb3Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsb0JBQW9CLEVBQXlCLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckksT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUNILGlDQUFpQyxFQUVqQyxPQUFPLEVBRVAsZ0JBQWdCLEVBSWhCLGFBQWEsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFFbkksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLGdDQUFnQyxFQUNoQywyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ25CLE1BQU0sa0JBQWtCLENB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VTs7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVTs7MEJBaUhGLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsMEJBQTBCOzswQkFFakMsTUFBTTsyQkFBQywyQkFBMkI7OzBCQUlsQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlT3JUZW1wbGF0ZVJlZiwgZ2V0RmxleGlibGVQb3NpdGlvbnMsIFRoeUFic3RyYWN0T3ZlcmxheVJlZiwgVGh5QWJzdHJhY3RPdmVybGF5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBGdW5jdGlvblByb3AsIGlzRnVuY3Rpb24gfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSwgY29lcmNlRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4sXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5Q29uZmlnLFxuICAgIE92ZXJsYXlDb250YWluZXIsXG4gICAgT3ZlcmxheVJlZixcbiAgICBQb3NpdGlvblN0cmF0ZWd5LFxuICAgIFNjcm9sbFN0cmF0ZWd5LFxuICAgIFZpZXdwb3J0UnVsZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBOZ1pvbmUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFN0YXRpY1Byb3ZpZGVyLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUaHlQb3BvdmVyQ29udGFpbmVyIH0gZnJvbSAnLi9wb3BvdmVyLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5SW50ZXJuYWxQb3BvdmVyUmVmLCBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnLi9wb3BvdmVyLXJlZic7XG5pbXBvcnQge1xuICAgIFRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHLFxuICAgIFRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHX1ZBTFVFLFxuICAgIFRIWV9QT1BPVkVSX1NDUk9MTF9TVFJBVEVHWSxcbiAgICBUaHlQb3BvdmVyQ29uZmlnXG59IGZyb20gJy4vcG9wb3Zlci5jb25maWcnO1xuaW1wb3J0IHsgcG9wb3ZlckFic3RyYWN0T3ZlcmxheU9wdGlvbnMgfSBmcm9tICcuL3BvcG92ZXIub3B0aW9ucyc7XG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnbmd4LXRldGh5cy90eXBlcyc7XG5cbi8qKlxuICogQHB1YmxpY1xuICogQG9yZGVyIDEwXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUaHlQb3BvdmVyIGV4dGVuZHMgVGh5QWJzdHJhY3RPdmVybGF5U2VydmljZTxUaHlQb3BvdmVyQ29uZmlnLCBUaHlQb3BvdmVyQ29udGFpbmVyPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcml2YXRlIG9yaWdpbkluc3RhbmNlc01hcCA9IG5ldyBNYXA8XG4gICAgICAgIEVsZW1lbnRSZWYgfCBIVE1MRWxlbWVudCxcbiAgICAgICAge1xuICAgICAgICAgICAgY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnO1xuICAgICAgICAgICAgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnksIGFueT47XG4gICAgICAgIH1cbiAgICA+KCk7XG5cbiAgICBwcml2YXRlIGJ1aWxkUG9zaXRpb25TdHJhdGVneTxURGF0YT4oY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnPFREYXRhPik6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBvcmlnaW46IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneU9yaWdpbiA9IGNvbmZpZy5vcmlnaW5Qb3NpdGlvbiA/IGNvbmZpZy5vcmlnaW5Qb3NpdGlvbiA6IGNvbmZpZy5vcmlnaW47XG4gICAgICAgIC8vIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbik7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSBuZXcgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KFxuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgdGhpcy5fdmlld3BvcnRSdWxlcixcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50LFxuICAgICAgICAgICAgdGhpcy5fcGxhdGZvcm0sXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5Q29udGFpbmVyXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGdldEZsZXhpYmxlUG9zaXRpb25zKGNvbmZpZy5wbGFjZW1lbnQsIGNvbmZpZy5vZmZzZXQsICd0aHktcG9wb3ZlcicpO1xuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneS53aXRoUHVzaChjb25maWcuY2FuUHVzaCk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aEdyb3dBZnRlck9wZW4odHJ1ZSk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcudGh5LXBvcG92ZXItY29udGFpbmVyJyk7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2Uuc2Nyb2xsYWJsZVZpZXdQcm9wZXJ0aWVzLmlzT3ZlcmxheUNsaXBwZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBBZnRlciBwb3NpdGlvbiBjaGFuZ2VzIG9jY3VyIGFuZCB0aGUgb3ZlcmxheSBpcyBjbGlwcGVkIGJ5XG4gICAgICAgICAgICAgICAgLy8gYSBwYXJlbnQgc2Nyb2xsYWJsZSB0aGVuIGNsb3NlIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFNjcm9sbFN0cmF0ZWd5KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZyk6IFNjcm9sbFN0cmF0ZWd5IHtcbiAgICAgICAgaWYgKGNvbmZpZy5zY3JvbGxTdHJhdGVneSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5zY3JvbGxTdHJhdGVneTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcm9sbFN0cmF0ZWd5ICYmIGlzRnVuY3Rpb24odGhpcy5zY3JvbGxTdHJhdGVneSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcm9sbFN0cmF0ZWd5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGJ1aWxkT3ZlcmxheUNvbmZpZzxURGF0YT4oY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnPFREYXRhPik6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5idWlsZFBvc2l0aW9uU3RyYXRlZ3koY29uZmlnKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuYnVpbGRCYXNlT3ZlcmxheUNvbmZpZyhjb25maWcsICd0aHktcG9wb3Zlci1wYW5lbCcpO1xuICAgICAgICBvdmVybGF5Q29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICBvdmVybGF5Q29uZmlnLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5idWlsZFNjcm9sbFN0cmF0ZWd5KGNvbmZpZyk7XG4gICAgICAgIHJldHVybiBvdmVybGF5Q29uZmlnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhdHRhY2hPdmVybGF5Q29udGFpbmVyKG92ZXJsYXk6IE92ZXJsYXlSZWYsIGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZzxhbnk+KTogVGh5UG9wb3ZlckNvbnRhaW5lciB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmplY3RvciA9IGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcGFyZW50OiB1c2VySW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVGh5UG9wb3ZlckNvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChUaHlQb3BvdmVyQ29udGFpbmVyLCBjb25maWcudmlld0NvbnRhaW5lclJlZiwgaW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBvdmVybGF5LmF0dGFjaDxUaHlQb3BvdmVyQ29udGFpbmVyPihjb250YWluZXJQb3J0YWwpO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBYnN0cmFjdE92ZXJsYXlSZWY8VCwgVFJlc3VsdCA9IHVua25vd24+KFxuICAgICAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBjb250YWluZXJJbnN0YW5jZTogVGh5UG9wb3ZlckNvbnRhaW5lcixcbiAgICAgICAgY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnXG4gICAgKTogVGh5QWJzdHJhY3RPdmVybGF5UmVmPFQsIFRoeVBvcG92ZXJDb250YWluZXIsIFRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaHlJbnRlcm5hbFBvcG92ZXJSZWYob3ZlcmxheVJlZiwgY29udGFpbmVySW5zdGFuY2UsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUluamVjdG9yPFQ+KGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZywgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUPiwgcG9wb3ZlckNvbnRhaW5lcjogVGh5UG9wb3ZlckNvbnRhaW5lcik6IEluamVjdG9yIHtcbiAgICAgICAgY29uc3QgdXNlckluamVjdG9yID0gY29uZmlnICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yO1xuXG4gICAgICAgIGNvbnN0IGluamVjdGlvblRva2VuczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICAgICAgICAgIHsgcHJvdmlkZTogVGh5UG9wb3ZlckNvbnRhaW5lciwgdXNlVmFsdWU6IHBvcG92ZXJDb250YWluZXIgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBUaHlQb3BvdmVyUmVmLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBwb3BvdmVyUmVmXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKGNvbmZpZy5kaXJlY3Rpb24gJiYgKCF1c2VySW5qZWN0b3IgfHwgIXVzZXJJbmplY3Rvci5nZXQ8RGlyZWN0aW9uYWxpdHkgfCBudWxsPihEaXJlY3Rpb25hbGl0eSwgbnVsbCkpKSB7XG4gICAgICAgICAgICBpbmplY3Rpb25Ub2tlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbmZpZy5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZTogb2YoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7IHBhcmVudDogdXNlckluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsIHByb3ZpZGVyczogaW5qZWN0aW9uVG9rZW5zIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3JpZ2luRWxlbWVudEFkZEFjdGl2ZUNsYXNzKGNvbmZpZzogVGh5UG9wb3ZlckNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLm9yaWdpbkFjdGl2ZUNsYXNzKSB7XG4gICAgICAgICAgICBjb2VyY2VFbGVtZW50PEhUTUxFbGVtZW50Pihjb25maWcub3JpZ2luKS5jbGFzc0xpc3QuYWRkKC4uLmNvZXJjZUFycmF5KGNvbmZpZy5vcmlnaW5BY3RpdmVDbGFzcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcmlnaW5FbGVtZW50UmVtb3ZlQWN0aXZlQ2xhc3MoY29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcub3JpZ2luQWN0aXZlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNvZXJjZUVsZW1lbnQ8SFRNTEVsZW1lbnQ+KGNvbmZpZy5vcmlnaW4pLmNsYXNzTGlzdC5yZW1vdmUoLi4uY29lcmNlQXJyYXkoY29uZmlnLm9yaWdpbkFjdGl2ZUNsYXNzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHKVxuICAgICAgICBkZWZhdWx0Q29uZmlnOiBUaHlQb3BvdmVyQ29uZmlnLFxuICAgICAgICBASW5qZWN0KFRIWV9QT1BPVkVSX1NDUk9MTF9TVFJBVEVHWSlcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IEZ1bmN0aW9uUHJvcDxTY3JvbGxTdHJhdGVneT4sXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgICAgIHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheUNvbnRhaW5lcjogT3ZlcmxheUNvbnRhaW5lclxuICAgICkge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIHBvcG92ZXJBYnN0cmFjdE92ZXJsYXlPcHRpb25zLFxuICAgICAgICAgICAgb3ZlcmxheSxcbiAgICAgICAgICAgIGluamVjdG9yLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLlRIWV9QT1BPVkVSX0RFRkFVTFRfQ09ORklHX1ZBTFVFLFxuICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5zdXJlQ2xvc2VDbG9zZXN0KG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGNsb3NlQW5kRW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3JpZ2luSW5zdGFuY2VzTWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5jb25maWcubWFudWFsQ2xvc3VyZSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNsb3NlQW5kRW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICBjbG9zZUFuZEVuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbHVlLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjbG9zZUFuZEVuZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmiZPlvIDmgqzmta7lsYJcbiAgICAgKi9cbiAgICBvcGVuPFQsIFREYXRhID0gdW5rbm93biwgVFJlc3VsdCA9IHVua25vd24+KFxuICAgICAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlT3JUZW1wbGF0ZVJlZjxUPixcbiAgICAgICAgY29uZmlnPzogVGh5UG9wb3ZlckNvbmZpZzxURGF0YT5cbiAgICApOiBUaHlQb3BvdmVyUmVmPFQsIFRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoY29uZmlnLm9yaWdpbik7XG4gICAgICAgIC8vIOm7mOiupOWFs+mXreS5i+WJjeeahOW8ueWHuuahhlxuICAgICAgICAvLyAxLiDlvZPkuYvliY3nmoQgUG9wb3ZlciDorr7nva4gbWFudWFsQ2xvc3VyZSDkuLogdHJ1ZSDml7YsIOW8ueWHuuWFtuS7liBQb3BvdmVyIOaXtuS4jeiHquWKqOWFs+mXrSBtYW51YWxDbG9zdXJlIOS4uiB0cnVlIOeahCBQb3BvdmVyXG4gICAgICAgIC8vIDIuIOW9k+WJjeeahCBPcmlnaW4g5a+55bqU55qEIFBvcG92ZXIg5bey57uP5by55Ye677yM5LiN566hIG1hbnVhbENsb3N1cmUg6K6+572u5Li65L2V77yM55u05o6l5YWz6Zet5bm26L+U5ZueXG4gICAgICAgIGlmICh0aGlzLmVuc3VyZUNsb3NlQ2xvc2VzdChvcmlnaW5FbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoaXMub3Blbk92ZXJsYXk8VCwgVFJlc3VsdD4oY29tcG9uZW50T3JUZW1wbGF0ZVJlZiwgY29uZmlnKSBhcyBUaHlQb3BvdmVyUmVmPFQsIFRSZXN1bHQsIFREYXRhPjtcbiAgICAgICAgY29uZmlnID0gcG9wb3ZlclJlZi5jb250YWluZXJJbnN0YW5jZS5jb25maWc7XG4gICAgICAgIHBvcG92ZXJSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5FbGVtZW50UmVtb3ZlQWN0aXZlQ2xhc3MoY29uZmlnKTtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luSW5zdGFuY2VzTWFwLmRlbGV0ZShvcmlnaW5FbGVtZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5FbGVtZW50QWRkQWN0aXZlQ2xhc3MoY29uZmlnKTtcbiAgICAgICAgdGhpcy5vcmlnaW5JbnN0YW5jZXNNYXAuc2V0KG9yaWdpbkVsZW1lbnQsIHtcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIHBvcG92ZXJSZWZcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBvcG92ZXJSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uSWTojrflj5bmiZPlvIDnmoTmgqzmta7lsYJcbiAgICAgKi9cbiAgICBnZXRQb3BvdmVyQnlJZChpZDogc3RyaW5nKTogVGh5UG9wb3ZlclJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWJzdHJhY3RPdmVybGF5QnlJZChpZCkgYXMgVGh5UG9wb3ZlclJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluW3sue7j+aJk+W8gOeahOaCrOa1ruWxglxuICAgICAqL1xuICAgIGdldE9wZW5lZFBvcG92ZXJzKCk6IFRoeVBvcG92ZXJSZWY8U2FmZUFueT5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFic3RyYWN0T3ZlcmxheXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24uZW4tdXMgRmluZHMgdGhlIGNsb3Nlc3QgVGh5UG9wb3ZlclJlZiB0byBhbiBlbGVtZW50IGJ5IGxvb2tpbmcgYXQgdGhlIERPTS5cbiAgICAgKiBAZGVzY3JpcHRpb24g6YCa6L+HIERvbSDlhYPntKDmn6Xmib7mnIDov5HlvLnlh7rnmoTmgqzmta7lsYJcbiAgICAgKi9cbiAgICBnZXRDbG9zZXN0UG9wb3ZlcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IFRoeVBvcG92ZXJSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdCgnLnRoeS1wb3BvdmVyLWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQb3BvdmVyQnlJZChwYXJlbnQuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWFs+mXreaCrOa1ruWxglxuICAgICAqL1xuICAgIGNsb3NlPFQ+KHJlc3VsdD86IFQsIGZvcmNlPzogYm9vbGVhbikge1xuICAgICAgICBzdXBlci5jbG9zZShyZXN1bHQsIGZvcmNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kaXNwb3NlKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -135,7 +135,7 @@ export class ThyPropertyItem {
|
|
|
135
135
|
this.eventDestroy$.complete();
|
|
136
136
|
}
|
|
137
137
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyPropertyItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ThyClickDispatcher }, { token: i0.NgZone }, { token: i2.OverlayOutsideClickDispatcher }, { token: i3.ThyProperties }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
138
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyPropertyItem, isStandalone: true, selector: "thy-property-item", inputs: { thyLabelText: "thyLabelText", thyEditable: ["thyEditable", "thyEditable", coerceBooleanProperty], thySpan: ["thySpan", "thySpan", numberAttribute], thyOperationTrigger: "thyOperationTrigger" }, outputs: { thyEditingChange: "thyEditingChange" }, host: { properties: { "class.thy-property-item-operational": "!!operation", "class.thy-property-item-operational-hover": "thyOperationTrigger === 'hover'", "style.grid-column": "this.gridColumn" }, classAttribute: "thy-property-item" }, queries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true, static: true }, { propertyName: "operation", first: true, predicate: ["operation"], descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "itemContent", first: true, predicate: ["item"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n <span *ngIf=\"thyLabelText\" thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n <ng-container *ngIf=\"label\">\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n </ng-container>\n</div>\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n <ng-template *ngIf=\"content\" [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n <div class=\"thy-property-item-content-editor\" *ngIf=\"thyEditable\">\n <ng-template *ngIf=\"editor\" [ngTemplateOutlet]=\"editor\"></ng-template>\n </div>\n </div>\n <div class=\"thy-property-item-operation\" *ngIf=\"operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
138
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyPropertyItem, isStandalone: true, selector: "thy-property-item", inputs: { thyLabelText: "thyLabelText", thyEditable: ["thyEditable", "thyEditable", coerceBooleanProperty], thySpan: ["thySpan", "thySpan", numberAttribute], thyOperationTrigger: "thyOperationTrigger" }, outputs: { thyEditingChange: "thyEditingChange" }, host: { properties: { "class.thy-property-item-operational": "!!operation", "class.thy-property-item-operational-hover": "thyOperationTrigger === 'hover'", "style.grid-column": "this.gridColumn" }, classAttribute: "thy-property-item" }, queries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true, static: true }, { propertyName: "operation", first: true, predicate: ["operation"], descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "itemContent", first: true, predicate: ["item"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n <span *ngIf=\"thyLabelText\" thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n <ng-container *ngIf=\"label\">\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n </ng-container>\n <div class=\"thy-property-item-operation\" *ngIf=\"operation && isVertical\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n</div>\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n <ng-template *ngIf=\"content\" [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n <div class=\"thy-property-item-content-editor\" *ngIf=\"thyEditable\">\n <ng-template *ngIf=\"editor\" [ngTemplateOutlet]=\"editor\"></ng-template>\n </div>\n </div>\n <div class=\"thy-property-item-operation\" *ngIf=\"operation && !isVertical\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
139
139
|
}
|
|
140
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyPropertyItem, decorators: [{
|
|
141
141
|
type: Component,
|
|
@@ -143,7 +143,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
143
143
|
class: 'thy-property-item',
|
|
144
144
|
'[class.thy-property-item-operational]': '!!operation',
|
|
145
145
|
'[class.thy-property-item-operational-hover]': "thyOperationTrigger === 'hover'"
|
|
146
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, ThyFlexibleText, NgTemplateOutlet], template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n <span *ngIf=\"thyLabelText\" thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n <ng-container *ngIf=\"label\">\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n </ng-container>\n</div>\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n <ng-template *ngIf=\"content\" [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n <div class=\"thy-property-item-content-editor\" *ngIf=\"thyEditable\">\n <ng-template *ngIf=\"editor\" [ngTemplateOutlet]=\"editor\"></ng-template>\n </div>\n </div>\n <div class=\"thy-property-item-operation\" *ngIf=\"operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n</div>\n" }]
|
|
146
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, ThyFlexibleText, NgTemplateOutlet], template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n <span *ngIf=\"thyLabelText\" thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n <ng-container *ngIf=\"label\">\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n </ng-container>\n <div class=\"thy-property-item-operation\" *ngIf=\"operation && isVertical\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n</div>\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n <ng-template *ngIf=\"content\" [ngTemplateOutlet]=\"content\"></ng-template>\n </div>\n <div class=\"thy-property-item-content-editor\" *ngIf=\"thyEditable\">\n <ng-template *ngIf=\"editor\" [ngTemplateOutlet]=\"editor\"></ng-template>\n </div>\n </div>\n <div class=\"thy-property-item-operation\" *ngIf=\"operation && !isVertical\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n</div>\n" }]
|
|
147
147
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ThyClickDispatcher }, { type: i0.NgZone }, { type: i2.OverlayOutsideClickDispatcher }, { type: i3.ThyProperties }], propDecorators: { thyLabelText: [{
|
|
148
148
|
type: Input
|
|
149
149
|
}], thyEditable: [{
|
|
@@ -175,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
175
175
|
type: HostBinding,
|
|
176
176
|
args: ['style.grid-column']
|
|
177
177
|
}] } });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydHktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydHktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSw2QkFBNkIsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUlmLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFJeEQ7OztHQUdHO0FBYUgsTUFBTSxPQUFPLGVBQWU7SUFxRXhCLElBQ0ksVUFBVTtRQUNWLE9BQU8sUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFP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Q0FNckIsZUFBZSw4NEJDbkV2QyxrakNBMEJBLDRDRG9CYyxJQUFJLDZGQUFFLGVBQWUsbU9BQUUsZ0JBQWdCOzsyRkFFeEMsZUFBZTtrQkFaM0IsU0FBUzsrQkFDSSxtQkFBbUIsUUFFdkI7d0JBQ0YsS0FBSyxFQUFFLG1CQUFtQjt3QkFDMUIsdUNBQXVDLEVBQUUsYUFBYTt3QkFDdEQsNkNBQTZDLEVBQUUsaUNBQWlDO3FCQUNuRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDO29OQVF6QyxZQUFZO3NCQUFwQixLQUFLO2dCQU91QyxXQUFXO3NCQUF2RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQU1KLE9BQU87c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQU01QixtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU1rQyxLQUFLO3NCQUE3QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTUcsTUFBTTtzQkFBL0MsWUFBWTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU1LLFNBQVM7c0JBQXJELFlBQVk7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLSyxPQUFPO3NCQUF0RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLVCxXQUFXO3NCQUEvQyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBZS9CLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaHlDbGlja0Rpc3BhdGNoZXIgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgVGh5RmxleGlibGVUZXh0IH0gZnJvbSAnbmd4LXRldGh5cy9mbGV4aWJsZS10ZXh0JztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIGZpbHRlciwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlciwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUaHlQcm9wZXJ0aWVzIH0gZnJvbSAnLi9wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuXG5leHBvcnQgdHlwZSBUaHlQcm9wZXJ0eUl0ZW1PcGVyYXRpb25UcmlnZ2VyID0gJ2hvdmVyJyB8ICdhbHdheXMnO1xuXG4vKipcbiAqIOWxnuaAp+e7hOS7tlxuICogQG5hbWUgdGh5LXByb3BlcnR5LWl0ZW1cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktcHJvcGVydHktaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktcHJvcGVydHktaXRlbScsXG4gICAgICAgICdbY2xhc3MudGh5LXByb3BlcnR5LWl0ZW0tb3BlcmF0aW9uYWxdJzogJyEhb3BlcmF0aW9uJyxcbiAgICAgICAgJ1tjbGFzcy50aHktcHJvcGVydHktaXRlbS1vcGVyYXRpb25hbC1ob3Zlcl0nOiBcInRoeU9wZXJhdGlvblRyaWdnZXIgPT09ICdob3ZlcidcIlxuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGh5RmxleGlibGVUZXh0LCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQcm9wZXJ0eUl0ZW0gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiDlsZ7mgKflkI3np7BcbiAgICAgKiBAdHlwZSBzdGluZ1xuICAgICAqIEBkZWZhdWx0IHRoeUxhYmVsVGV4dFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUxhYmVsVGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5bGe5oCn5piv5ZCm5piv5Y+v57yW6L6R55qEXG4gICAgICogQHR5cGUgc3RpbmdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUVkaXRhYmxlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u6Leo5YiX55qE5pWw6YePXG4gICAgICogQHR5cGUgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGh5U3BhbjogbnVtYmVyID0gMTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWxnuaAp+aTjeS9nOeOsOWunuinpuWPkeaWueW8j++8jOm7mOiupCBhbHdheXMg5LiA55u05pi+56S6XG4gICAgICogQHR5cGUgJ2hvdmVyJyB8ICdhbHdheXMnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5T3BlcmF0aW9uVHJpZ2dlcjogVGh5UHJvcGVydHlJdGVtT3BlcmF0aW9uVHJpZ2dlciA9ICdhbHdheXMnO1xuXG4gICAgQE91dHB1dCgpIHRoeUVkaXRpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIOWxnuaAp+WQjeensOiHquWumuS5ieaooeadv1xuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbGFiZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBsYWJlbCE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICog5bGe5oCn5YaF5a6557yW6L6R5qih5p2/77yM5Y+q5pyJ5ZyoIHRoeUVkaXRhYmxlIOS4uiB0cnVlIOaXtueUn+aViFxuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IHRydWUgfSkgZWRpdG9yITogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiDmk43kvZzljLrmqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ29wZXJhdGlvbicsIHsgc3RhdGljOiB0cnVlIH0pIG9wZXJhdGlvbiE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdjb250ZW50VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50ITogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2l0ZW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBpdGVtQ29udGVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBlZGl0aW5nOiBib29sZWFuO1xuXG4gICAgY2hhbmdlcyQgPSBuZXcgU3ViamVjdDxTaW1wbGVDaGFuZ2VzPigpO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcml2YXRlIGV2ZW50RGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSBvcmlnaW5PdmVybGF5czogT3ZlcmxheVJlZltdID0gW107XG5cbiAgICBwcml2YXRlIGNsaWNrRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZ3JpZC1jb2x1bW4nKVxuICAgIGdldCBncmlkQ29sdW1uKCkge1xuICAgICAgICByZXR1cm4gYHNwYW4gJHtNYXRoLm1pbih0aGlzLnRoeVNwYW4sIHRoaXMucGFyZW50LnRoeUNvbHVtbil9YDtcbiAgICB9XG5cbiAgICBpc1ZlcnRpY2FsID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGNsaWNrRGlzcGF0Y2hlcjogVGh5Q2xpY2tEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyOiBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBwYXJlbnQ6IFRoeVByb3BlcnRpZXNcbiAgICApIHtcbiAgICAgICAgdGhpcy5vcmlnaW5PdmVybGF5cyA9IFsuLi50aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLl9hdHRhY2hlZE92ZXJsYXlzXSBhcyBPdmVybGF5UmVmW107XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlQ2xpY2soKTtcbiAgICAgICAgdGhpcy5wYXJlbnQubGF5b3V0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGxheW91dCA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzVmVydGljYWwgPSBsYXlvdXQgPT09ICd2ZXJ0aWNhbCc7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50aHlFZGl0YWJsZSAmJiBjaGFuZ2VzLnRoeUVkaXRhYmxlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVDbGljaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuZXZlbnREZXN0cm95JC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmV2ZW50RGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRFZGl0aW5nKGVkaXRpbmc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuZWRpdGluZyAhPT0gISFlZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlFZGl0aW5nQ2hhbmdlLmVtaXQoZWRpdGluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmcgPSBlZGl0aW5nO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2Ugc2V0RWRpdGluZyhlZGl0aW5nOiBib29sZWFuKVxuICAgICAqL1xuICAgIHNldEtlZXBFZGl0aW5nKGtlZXA6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRFZGl0aW5nKGtlZXApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzT3ZlcmxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIuX2F0dGFjaGVkT3ZlcmxheXMubGVuZ3RoID4gdGhpcy5vcmlnaW5PdmVybGF5cy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5RWRpdGFibGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGlja0V2ZW50U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbGlja0V2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMuaXRlbUNvbnRlbnQubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZXZlbnREZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRWRpdG9yQmx1ckV2ZW50KHRoaXMuaXRlbUNvbnRlbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZU92ZXJsYXlEZXRhY2goKSB7XG4gICAgICAgIGNvbnN0IG9wZW5lZE92ZXJsYXlzID0gdGhpcy5vdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5fYXR0YWNoZWRPdmVybGF5cy5zbGljZSh0aGlzLm9yaWdpbk92ZXJsYXlzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlzRGV0YWNobWVudHMkID0gb3BlbmVkT3ZlcmxheXMubWFwKG92ZXJsYXkgPT4gb3ZlcmxheS5kZXRhY2htZW50cygpKTtcbiAgICAgICAgaWYgKG92ZXJsYXlzRGV0YWNobWVudHMkLmxlbmd0aCkge1xuICAgICAgICAgICAgY29tYmluZUxhdGVzdChvdmVybGF5c0RldGFjaG1lbnRzJClcbiAgICAgICAgICAgICAgICAucGlwZShkZWxheSg1MCksIHRha2UoMSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlRG9jdW1lbnRDbGljayhlZGl0b3JFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aGlzLmNsaWNrRGlzcGF0Y2hlclxuICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhZWRpdG9yRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVkaXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kRWRpdG9yQmx1ckV2ZW50KGVkaXRvckVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRpbWVyKDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmliZU92ZXJsYXlEZXRhY2goKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVEb2N1bWVudENsaWNrKGVkaXRvckVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgICAgICB0aGlzLmV2ZW50RGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmV2ZW50RGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJ0aHktcHJvcGVydHktaXRlbS1sYWJlbFwiPlxuICA8c3BhbiAqbmdJZj1cInRoeUxhYmVsVGV4dFwiIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwidGh5TGFiZWxUZXh0XCI+e3sgdGh5TGFiZWxUZXh0IH19PC9zcGFuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxcIj5cbiAgICA8c3Bhbj4gPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT48L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0td3JhcHBlclwiPlxuICA8ZGl2XG4gICAgI2l0ZW1cbiAgICBjbGFzcz1cInRoeS1wcm9wZXJ0eS1pdGVtLWNvbnRlbnRcIlxuICAgIFtjbGFzcy50aHktcHJvcGVydHktaXRlbS1jb250ZW50LWVkaXRhYmxlXT1cInRoeUVkaXRhYmxlXCJcbiAgICBbY2xhc3MudGh5LXByb3BlcnR5LWl0ZW0tY29udGVudC1lZGl0aW5nXT1cImVkaXRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tY29udGVudC10ZXh0XCI+XG4gICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRoeS1wcm9wZXJ0eS1pdGVtLWNvbnRlbnQtZWRpdG9yXCIgKm5nSWY9XCJ0aHlFZGl0YWJsZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiZWRpdG9yXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0aHktcHJvcGVydHktaXRlbS1vcGVyYXRpb25cIiAqbmdJZj1cIm9wZXJhdGlvblwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJvcGVyYXRpb25cIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydHktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvcHJvcGVydHkvcHJvcGVydHktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSw2QkFBNkIsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUlmLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFJeEQ7OztHQUdHO0FBYUgsTUFBTSxPQUFPLGVBQWU7SUFxRXhCLElBQ0ksVUFBVTtRQUNWLE9BQU8sUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFP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Q0FNckIsZUFBZSw4NEJDbkV2Qyw4dENBNkJBLDRDRGlCYyxJQUFJLDZGQUFFLGVBQWUsbU9BQUUsZ0JBQWdCOzsyRkFFeEMsZUFBZTtrQkFaM0IsU0FBUzsrQkFDSSxtQkFBbUIsUUFFdkI7d0JBQ0YsS0FBSyxFQUFFLG1CQUFtQjt3QkFDMUIsdUNBQXVDLEVBQUUsYUFBYTt3QkFDdEQsNkNBQTZDLEVBQUUsaUNBQWlDO3FCQUNuRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDO29OQVF6QyxZQUFZO3NCQUFwQixLQUFLO2dCQU91QyxXQUFXO3NCQUF2RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQU1KLE9BQU87c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQU01QixtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU1rQyxLQUFLO3NCQUE3QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTUcsTUFBTTtzQkFBL0MsWUFBWTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU1LLFNBQVM7c0JBQXJELFlBQVk7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLSyxPQUFPO3NCQUF0RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLVCxXQUFXO3NCQUEvQyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBZS9CLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaHlDbGlja0Rpc3BhdGNoZXIgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgVGh5RmxleGlibGVUZXh0IH0gZnJvbSAnbmd4LXRldGh5cy9mbGV4aWJsZS10ZXh0JztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIGZpbHRlciwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlciwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUaHlQcm9wZXJ0aWVzIH0gZnJvbSAnLi9wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuXG5leHBvcnQgdHlwZSBUaHlQcm9wZXJ0eUl0ZW1PcGVyYXRpb25UcmlnZ2VyID0gJ2hvdmVyJyB8ICdhbHdheXMnO1xuXG4vKipcbiAqIOWxnuaAp+e7hOS7tlxuICogQG5hbWUgdGh5LXByb3BlcnR5LWl0ZW1cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktcHJvcGVydHktaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktcHJvcGVydHktaXRlbScsXG4gICAgICAgICdbY2xhc3MudGh5LXByb3BlcnR5LWl0ZW0tb3BlcmF0aW9uYWxdJzogJyEhb3BlcmF0aW9uJyxcbiAgICAgICAgJ1tjbGFzcy50aHktcHJvcGVydHktaXRlbS1vcGVyYXRpb25hbC1ob3Zlcl0nOiBcInRoeU9wZXJhdGlvblRyaWdnZXIgPT09ICdob3ZlcidcIlxuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGh5RmxleGlibGVUZXh0LCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlQcm9wZXJ0eUl0ZW0gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiDlsZ7mgKflkI3np7BcbiAgICAgKiBAdHlwZSBzdGluZ1xuICAgICAqIEBkZWZhdWx0IHRoeUxhYmVsVGV4dFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUxhYmVsVGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5bGe5oCn5piv5ZCm5piv5Y+v57yW6L6R55qEXG4gICAgICogQHR5cGUgc3RpbmdcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUVkaXRhYmxlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u6Leo5YiX55qE5pWw6YePXG4gICAgICogQHR5cGUgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGh5U3BhbjogbnVtYmVyID0gMTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWxnuaAp+aTjeS9nOeOsOWunuinpuWPkeaWueW8j++8jOm7mOiupCBhbHdheXMg5LiA55u05pi+56S6XG4gICAgICogQHR5cGUgJ2hvdmVyJyB8ICdhbHdheXMnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5T3BlcmF0aW9uVHJpZ2dlcjogVGh5UHJvcGVydHlJdGVtT3BlcmF0aW9uVHJpZ2dlciA9ICdhbHdheXMnO1xuXG4gICAgQE91dHB1dCgpIHRoeUVkaXRpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIOWxnuaAp+WQjeensOiHquWumuS5ieaooeadv1xuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbGFiZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBsYWJlbCE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICog5bGe5oCn5YaF5a6557yW6L6R5qih5p2/77yM5Y+q5pyJ5ZyoIHRoeUVkaXRhYmxlIOS4uiB0cnVlIOaXtueUn+aViFxuICAgICAqIEB0eXBlIFRlbXBsYXRlUmVmXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IHRydWUgfSkgZWRpdG9yITogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiDmk43kvZzljLrmqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ29wZXJhdGlvbicsIHsgc3RhdGljOiB0cnVlIH0pIG9wZXJhdGlvbiE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdjb250ZW50VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50ITogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2l0ZW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBpdGVtQ29udGVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBlZGl0aW5nOiBib29sZWFuO1xuXG4gICAgY2hhbmdlcyQgPSBuZXcgU3ViamVjdDxTaW1wbGVDaGFuZ2VzPigpO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcml2YXRlIGV2ZW50RGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSBvcmlnaW5PdmVybGF5czogT3ZlcmxheVJlZltdID0gW107XG5cbiAgICBwcml2YXRlIGNsaWNrRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZ3JpZC1jb2x1bW4nKVxuICAgIGdldCBncmlkQ29sdW1uKCkge1xuICAgICAgICByZXR1cm4gYHNwYW4gJHtNYXRoLm1pbih0aGlzLnRoeVNwYW4sIHRoaXMucGFyZW50LnRoeUNvbHVtbil9YDtcbiAgICB9XG5cbiAgICBpc1ZlcnRpY2FsID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGNsaWNrRGlzcGF0Y2hlcjogVGh5Q2xpY2tEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyOiBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBwYXJlbnQ6IFRoeVByb3BlcnRpZXNcbiAgICApIHtcbiAgICAgICAgdGhpcy5vcmlnaW5PdmVybGF5cyA9IFsuLi50aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLl9hdHRhY2hlZE92ZXJsYXlzXSBhcyBPdmVybGF5UmVmW107XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlQ2xpY2soKTtcbiAgICAgICAgdGhpcy5wYXJlbnQubGF5b3V0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGxheW91dCA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzVmVydGljYWwgPSBsYXlvdXQgPT09ICd2ZXJ0aWNhbCc7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50aHlFZGl0YWJsZSAmJiBjaGFuZ2VzLnRoeUVkaXRhYmxlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVDbGljaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuZXZlbnREZXN0cm95JC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmV2ZW50RGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tFdmVudFN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRFZGl0aW5nKGVkaXRpbmc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuZWRpdGluZyAhPT0gISFlZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlFZGl0aW5nQ2hhbmdlLmVtaXQoZWRpdGluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmcgPSBlZGl0aW5nO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2Ugc2V0RWRpdGluZyhlZGl0aW5nOiBib29sZWFuKVxuICAgICAqL1xuICAgIHNldEtlZXBFZGl0aW5nKGtlZXA6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRFZGl0aW5nKGtlZXApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzT3ZlcmxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIuX2F0dGFjaGVkT3ZlcmxheXMubGVuZ3RoID4gdGhpcy5vcmlnaW5PdmVybGF5cy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5RWRpdGFibGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGlja0V2ZW50U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbGlja0V2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMuaXRlbUNvbnRlbnQubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZXZlbnREZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRWRpdG9yQmx1ckV2ZW50KHRoaXMuaXRlbUNvbnRlbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZU92ZXJsYXlEZXRhY2goKSB7XG4gICAgICAgIGNvbnN0IG9wZW5lZE92ZXJsYXlzID0gdGhpcy5vdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5fYXR0YWNoZWRPdmVybGF5cy5zbGljZSh0aGlzLm9yaWdpbk92ZXJsYXlzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlzRGV0YWNobWVudHMkID0gb3BlbmVkT3ZlcmxheXMubWFwKG92ZXJsYXkgPT4gb3ZlcmxheS5kZXRhY2htZW50cygpKTtcbiAgICAgICAgaWYgKG92ZXJsYXlzRGV0YWNobWVudHMkLmxlbmd0aCkge1xuICAgICAgICAgICAgY29tYmluZUxhdGVzdChvdmVybGF5c0RldGFjaG1lbnRzJClcbiAgICAgICAgICAgICAgICAucGlwZShkZWxheSg1MCksIHRha2UoMSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlRG9jdW1lbnRDbGljayhlZGl0b3JFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aGlzLmNsaWNrRGlzcGF0Y2hlclxuICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhZWRpdG9yRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVkaXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kRWRpdG9yQmx1ckV2ZW50KGVkaXRvckVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRpbWVyKDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmliZU92ZXJsYXlEZXRhY2goKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVEb2N1bWVudENsaWNrKGVkaXRvckVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgICAgICB0aGlzLmV2ZW50RGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmV2ZW50RGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJ0aHktcHJvcGVydHktaXRlbS1sYWJlbFwiPlxuICA8c3BhbiAqbmdJZj1cInRoeUxhYmVsVGV4dFwiIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwidGh5TGFiZWxUZXh0XCI+e3sgdGh5TGFiZWxUZXh0IH19PC9zcGFuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxcIj5cbiAgICA8c3Bhbj4gPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT48L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tb3BlcmF0aW9uXCIgKm5nSWY9XCJvcGVyYXRpb24gJiYgaXNWZXJ0aWNhbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJvcGVyYXRpb25cIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInRoeS1wcm9wZXJ0eS1pdGVtLXdyYXBwZXJcIj5cbiAgPGRpdlxuICAgICNpdGVtXG4gICAgY2xhc3M9XCJ0aHktcHJvcGVydHktaXRlbS1jb250ZW50XCJcbiAgICBbY2xhc3MudGh5LXByb3BlcnR5LWl0ZW0tY29udGVudC1lZGl0YWJsZV09XCJ0aHlFZGl0YWJsZVwiXG4gICAgW2NsYXNzLnRoeS1wcm9wZXJ0eS1pdGVtLWNvbnRlbnQtZWRpdGluZ109XCJlZGl0aW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cInRoeS1wcm9wZXJ0eS1pdGVtLWNvbnRlbnQtdGV4dFwiPlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktcHJvcGVydHktaXRlbS1jb250ZW50LWVkaXRvclwiICpuZ0lmPVwidGh5RWRpdGFibGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImVkaXRvclwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkaXRvclwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidGh5LXByb3BlcnR5LWl0ZW0tb3BlcmF0aW9uXCIgKm5nSWY9XCJvcGVyYXRpb24gJiYgIWlzVmVydGljYWxcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwib3BlcmF0aW9uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|