@skyux/ag-grid 7.0.0-beta.9 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/sky-ag-grid.css +4506 -29219
- package/documentation.json +1360 -575
- package/esm2020/index.mjs +7 -1
- package/esm2020/lib/modules/ag-grid/ag-grid-adapter.service.mjs +6 -5
- package/esm2020/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.mjs +132 -114
- package/esm2020/lib/modules/ag-grid/ag-grid-row-delete.component.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/ag-grid-row-delete.directive.mjs +131 -124
- package/esm2020/lib/modules/ag-grid/ag-grid-wrapper.component.mjs +140 -73
- package/esm2020/lib/modules/ag-grid/ag-grid.module.mjs +30 -8
- package/esm2020/lib/modules/ag-grid/ag-grid.service.mjs +310 -292
- package/esm2020/lib/modules/ag-grid/apply-lookup-properties-defaults.mjs +13 -9
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.mjs +30 -25
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.mjs +32 -28
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.mjs +63 -58
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.mjs +46 -40
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.mjs +33 -29
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.mjs +33 -29
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.mjs +8 -6
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.mjs +25 -21
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.mjs +31 -24
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.mjs +6 -5
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.mjs +38 -33
- package/esm2020/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.mjs +5 -5
- package/esm2020/lib/modules/ag-grid/header/header-group.component.mjs +95 -0
- package/esm2020/lib/modules/ag-grid/header/header.component.mjs +133 -0
- package/esm2020/lib/modules/ag-grid/types/autocomplete-properties.mjs +1 -1
- package/esm2020/lib/modules/ag-grid/types/cell-editor-utils.mjs +7 -2
- package/esm2020/lib/modules/ag-grid/types/header-group-info.mjs +16 -0
- package/esm2020/lib/modules/ag-grid/types/header-group-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/header-info.mjs +16 -0
- package/esm2020/lib/modules/ag-grid/types/header-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/lookup-properties.mjs +1 -1
- package/esm2020/lib/modules/ag-grid/types/validator-properties.mjs +1 -1
- package/esm2020/lib/modules/shared/sky-ag-grid-resources.module.mjs +11 -8
- package/fesm2015/skyux-ag-grid.mjs +2430 -1984
- package/fesm2015/skyux-ag-grid.mjs.map +1 -1
- package/fesm2020/skyux-ag-grid.mjs +2325 -1906
- package/fesm2020/skyux-ag-grid.mjs.map +1 -1
- package/index.d.ts +6 -0
- package/lib/modules/ag-grid/ag-grid-adapter.service.d.ts +1 -1
- package/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.d.ts +4 -22
- package/lib/modules/ag-grid/ag-grid-row-delete.component.d.ts +2 -2
- package/lib/modules/ag-grid/ag-grid-row-delete.directive.d.ts +5 -18
- package/lib/modules/ag-grid/ag-grid-wrapper.component.d.ts +10 -11
- package/lib/modules/ag-grid/ag-grid.module.d.ts +25 -20
- package/lib/modules/ag-grid/ag-grid.service.d.ts +3 -17
- package/lib/modules/ag-grid/apply-lookup-properties-defaults.d.ts +1 -23
- package/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.d.ts +3 -3
- package/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.d.ts +7 -8
- package/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.d.ts +5 -8
- package/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.d.ts +2 -6
- package/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.d.ts +8 -8
- package/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.d.ts +8 -8
- package/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.d.ts +1 -1
- package/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.d.ts +9 -10
- package/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.d.ts +2 -2
- package/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.d.ts +6 -8
- package/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.d.ts +3 -3
- package/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.d.ts +4 -7
- package/lib/modules/ag-grid/header/header-group.component.d.ts +22 -0
- package/lib/modules/ag-grid/header/header.component.d.ts +27 -0
- package/lib/modules/ag-grid/types/autocomplete-properties.d.ts +5 -4
- package/lib/modules/ag-grid/types/cell-editor-utils.d.ts +2 -1
- package/lib/modules/ag-grid/types/header-group-info.d.ts +18 -0
- package/lib/modules/ag-grid/types/header-group-params.d.ts +10 -0
- package/lib/modules/ag-grid/types/header-info.d.ts +18 -0
- package/lib/modules/ag-grid/types/header-params.d.ts +10 -0
- package/lib/modules/ag-grid/types/lookup-properties.d.ts +3 -3
- package/lib/modules/ag-grid/types/validator-properties.d.ts +2 -2
- package/package.json +17 -17
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, TemplateRef, ViewChild, ViewChildren, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "@skyux/layout";
|
|
@@ -8,8 +8,8 @@ import * as i2 from "@skyux/layout";
|
|
|
8
8
|
*/
|
|
9
9
|
export class SkyAgGridRowDeleteComponent {
|
|
10
10
|
}
|
|
11
|
-
SkyAgGridRowDeleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
12
|
-
SkyAgGridRowDeleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.
|
|
11
|
+
SkyAgGridRowDeleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyAgGridRowDeleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
SkyAgGridRowDeleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyAgGridRowDeleteComponent, selector: "ng-component", viewQueries: [{ propertyName: "inlineDeleteTemplateRef", first: true, predicate: ["inlineDeleteTemplateRef"], descendants: true, read: TemplateRef }, { propertyName: "inlineDeleteRefs", predicate: ["inlineDeleteRef"], descendants: true }], ngImport: i0, template: `
|
|
13
13
|
<ng-template
|
|
14
14
|
let-row
|
|
15
15
|
let-tableWidth="tableWidth()"
|
|
@@ -36,7 +36,7 @@ SkyAgGridRowDeleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.
|
|
|
36
36
|
</div>
|
|
37
37
|
</ng-template>
|
|
38
38
|
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.λ8, selector: "sky-inline-delete", inputs: ["pending"], outputs: ["cancelTriggered", "deleteTriggered"] }] });
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyAgGridRowDeleteComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{
|
|
42
42
|
template: `
|
|
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
74
74
|
type: ViewChild,
|
|
75
75
|
args: ['inlineDeleteTemplateRef', { read: TemplateRef }]
|
|
76
76
|
}] } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yb3ctZGVsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2FnLWdyaWQtcm93LWRlbGV0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFHVCxXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQzs7OztBQUV2Qjs7O0dBR0c7QUE4QkgsTUFBTSxPQUFPLDJCQUEyQjs7eUhBQTNCLDJCQUEyQjs2R0FBM0IsMkJBQTJCLG1LQUdRLFdBQVcsc0hBL0IvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQ7NEZBRVUsMkJBQTJCO2tCQTdCdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJUO2lCQUNGOzhCQUdRLGdCQUFnQjtzQkFEdEIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBR3hCLHVCQUF1QjtzQkFEN0IsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIHJlbmRlcmluZyB0aGUgaW5saW5lIGRlbGV0ZSB0ZW1wbGF0ZSBpbiB0aGUgb3ZlcmxheS5cbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIGxldC1yb3dcbiAgICAgIGxldC10YWJsZVdpZHRoPVwidGFibGVXaWR0aCgpXCJcbiAgICAgIGxldC1nZXRSb3dEZWxldGVJdGVtPVwiZ2V0Um93RGVsZXRlSXRlbVwiXG4gICAgICBsZXQtY2FuY2VsUm93RGVsZXRlPVwiY2FuY2VsUm93RGVsZXRlXCJcbiAgICAgIGxldC1jb25maXJtUm93RGVsZXRlPVwiY29uZmlybVJvd0RlbGV0ZVwiXG4gICAgICAjaW5saW5lRGVsZXRlVGVtcGxhdGVSZWZcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2t5LWFnLWdyaWQtcm93LWRlbGV0ZVwiXG4gICAgICAgIFtpZF09XCIncm93LWRlbGV0ZS1yZWYtJyArIHJvdy5pZFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBoZWlnaHQ6IHJvdy5yb3dIZWlnaHQgKyAncHgnLFxuICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgIHdpZHRoOiB0YWJsZVdpZHRoICsgJ3B4J1xuICAgICAgICB9XCJcbiAgICAgICAgI2lubGluZURlbGV0ZVJlZlxuICAgICAgPlxuICAgICAgICA8c2t5LWlubGluZS1kZWxldGVcbiAgICAgICAgICBbcGVuZGluZ109XCJnZXRSb3dEZWxldGVJdGVtKHJvdykucGVuZGluZ1wiXG4gICAgICAgICAgKGNhbmNlbFRyaWdnZXJlZCk9XCJjYW5jZWxSb3dEZWxldGUocm93KVwiXG4gICAgICAgICAgKGRlbGV0ZVRyaWdnZXJlZCk9XCJjb25maXJtUm93RGVsZXRlKHJvdylcIlxuICAgICAgICA+PC9za3ktaW5saW5lLWRlbGV0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZFJvd0RlbGV0ZUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGRyZW4oJ2lubGluZURlbGV0ZVJlZicpXG4gIHB1YmxpYyBpbmxpbmVEZWxldGVSZWZzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4gfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ2lubGluZURlbGV0ZVRlbXBsYXRlUmVmJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgaW5saW5lRGVsZXRlVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
var _SkyAgGridRowDeleteDirective_instances, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, _SkyAgGridRowDeleteDirective_ngUnsubscribe, _SkyAgGridRowDeleteDirective_rowDeleteComponent, _SkyAgGridRowDeleteDirective_rowDeleteContents, _SkyAgGridRowDeleteDirective_rowDeleteIdsInternal, _SkyAgGridRowDeleteDirective_affixService, _SkyAgGridRowDeleteDirective_changeDetector, _SkyAgGridRowDeleteDirective_elementRef, _SkyAgGridRowDeleteDirective_overlayService, _SkyAgGridRowDeleteDirective_viewContainerRef, _SkyAgGridRowDeleteDirective_affixToRow, _SkyAgGridRowDeleteDirective_destroyRowDelete, _SkyAgGridRowDeleteDirective_updateRowDeleteStates;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { ContentChild, Directive, EventEmitter, Input, Output, } from '@angular/core';
|
|
4
|
+
import { SkyAffixAutoFitContext, } from '@skyux/core';
|
|
3
5
|
import { AgGridAngular } from 'ag-grid-angular';
|
|
4
6
|
import { Subject } from 'rxjs';
|
|
5
7
|
import { takeUntil } from 'rxjs/operators';
|
|
@@ -8,11 +10,7 @@ import * as i0 from "@angular/core";
|
|
|
8
10
|
import * as i1 from "@skyux/core";
|
|
9
11
|
export class SkyAgGridRowDeleteDirective {
|
|
10
12
|
constructor(affixService, changeDetector, elementRef, overlayService, viewContainerRef) {
|
|
11
|
-
this
|
|
12
|
-
this.changeDetector = changeDetector;
|
|
13
|
-
this.elementRef = elementRef;
|
|
14
|
-
this.overlayService = overlayService;
|
|
15
|
-
this.viewContainerRef = viewContainerRef;
|
|
13
|
+
_SkyAgGridRowDeleteDirective_instances.add(this);
|
|
16
14
|
/**
|
|
17
15
|
* Emits a `SkyAgGridRowDeleteCancelArgs` object when a row's inline delete is cancelled.
|
|
18
16
|
*/
|
|
@@ -25,48 +23,61 @@ export class SkyAgGridRowDeleteDirective {
|
|
|
25
23
|
* Emits when the list of ids of the data in the rows where inline deletes are shown changes.
|
|
26
24
|
*/
|
|
27
25
|
this.rowDeleteIdsChange = new EventEmitter();
|
|
28
|
-
this
|
|
29
|
-
this
|
|
30
|
-
this
|
|
26
|
+
_SkyAgGridRowDeleteDirective_rowDeleteConfigs.set(this, []);
|
|
27
|
+
_SkyAgGridRowDeleteDirective_ngUnsubscribe.set(this, new Subject());
|
|
28
|
+
_SkyAgGridRowDeleteDirective_rowDeleteComponent.set(this, void 0);
|
|
29
|
+
_SkyAgGridRowDeleteDirective_rowDeleteContents.set(this, {});
|
|
30
|
+
_SkyAgGridRowDeleteDirective_rowDeleteIdsInternal.set(this, void 0);
|
|
31
|
+
_SkyAgGridRowDeleteDirective_affixService.set(this, void 0);
|
|
32
|
+
_SkyAgGridRowDeleteDirective_changeDetector.set(this, void 0);
|
|
33
|
+
_SkyAgGridRowDeleteDirective_elementRef.set(this, void 0);
|
|
34
|
+
_SkyAgGridRowDeleteDirective_overlayService.set(this, void 0);
|
|
35
|
+
_SkyAgGridRowDeleteDirective_viewContainerRef.set(this, void 0);
|
|
36
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_affixService, affixService, "f");
|
|
37
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_changeDetector, changeDetector, "f");
|
|
38
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_elementRef, elementRef, "f");
|
|
39
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_overlayService, overlayService, "f");
|
|
40
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_viewContainerRef, viewContainerRef, "f");
|
|
31
41
|
}
|
|
32
42
|
/**
|
|
33
43
|
* Specifies the ids of the data in the rows on which inline delete's should be shown.
|
|
34
44
|
*/
|
|
35
45
|
set rowDeleteIds(value) {
|
|
36
|
-
this
|
|
46
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_rowDeleteIdsInternal, value, "f");
|
|
37
47
|
if (!value) {
|
|
38
|
-
for (const config of this
|
|
39
|
-
this.
|
|
48
|
+
for (const config of __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f")) {
|
|
49
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_destroyRowDelete).call(this, config.id);
|
|
40
50
|
}
|
|
41
|
-
this.
|
|
51
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_changeDetector, "f").markForCheck();
|
|
42
52
|
return;
|
|
43
53
|
}
|
|
44
54
|
for (const id of value) {
|
|
45
|
-
const existingConfig = this.
|
|
55
|
+
const existingConfig = __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f").find((config) => config.id === id);
|
|
46
56
|
if (existingConfig) {
|
|
47
57
|
existingConfig.pending = false;
|
|
48
58
|
}
|
|
49
|
-
else {
|
|
50
|
-
this.
|
|
59
|
+
else if (__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteComponent, "f") && this.agGrid) {
|
|
60
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f").push({
|
|
51
61
|
id: id,
|
|
52
62
|
pending: false,
|
|
53
63
|
});
|
|
54
|
-
const overlay = this.
|
|
64
|
+
const overlay = __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_overlayService, "f").create({
|
|
55
65
|
enableScroll: true,
|
|
56
66
|
showBackdrop: false,
|
|
57
67
|
closeOnNavigation: true,
|
|
58
68
|
enableClose: false,
|
|
59
69
|
enablePointerEvents: true,
|
|
60
70
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
if (__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteComponent, "f").inlineDeleteTemplateRef) {
|
|
72
|
+
overlay.attachTemplate(__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteComponent, "f").inlineDeleteTemplateRef, {
|
|
73
|
+
$implicit: this.agGrid.api.getRowNode(id),
|
|
74
|
+
tableWidth: () => __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_elementRef, "f").nativeElement.querySelector('.sky-ag-grid')
|
|
75
|
+
.offsetWidth,
|
|
76
|
+
getRowDeleteItem: (row) => this.getRowDeleteItem(row),
|
|
77
|
+
cancelRowDelete: (row) => this.cancelRowDelete(row),
|
|
78
|
+
confirmRowDelete: (row) => this.confirmRowDelete(row),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
70
81
|
/**
|
|
71
82
|
* We are manually setting the z-index here because overlays will always be on top of
|
|
72
83
|
* the omnibar. This manual setting is 2 less than the omnibar's z-index of 1000 and one less than
|
|
@@ -75,132 +86,128 @@ export class SkyAgGridRowDeleteDirective {
|
|
|
75
86
|
*/
|
|
76
87
|
overlay.componentRef.instance.zIndex = '998';
|
|
77
88
|
setTimeout(() => {
|
|
78
|
-
const inlineDeleteRef = this
|
|
79
|
-
|
|
80
|
-
.find((elRef) =>
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
this.affixToRow(affixer, id);
|
|
85
|
-
this.rowDeleteContents[id] = {
|
|
89
|
+
const inlineDeleteRef = __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteComponent, "f")?.inlineDeleteRefs
|
|
90
|
+
?.toArray()
|
|
91
|
+
.find((elRef) => elRef.nativeElement.id === 'row-delete-ref-' + id);
|
|
92
|
+
const affixer = __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_affixService, "f").createAffixer(inlineDeleteRef);
|
|
93
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_affixToRow).call(this, affixer, id);
|
|
94
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteContents, "f")[id] = {
|
|
86
95
|
affixer: affixer,
|
|
87
96
|
overlay: overlay,
|
|
88
97
|
};
|
|
89
98
|
});
|
|
90
99
|
}
|
|
91
100
|
}
|
|
92
|
-
for (const config of this
|
|
101
|
+
for (const config of __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f")) {
|
|
93
102
|
if (value.indexOf(config.id) < 0) {
|
|
94
|
-
this.
|
|
103
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_destroyRowDelete).call(this, config.id);
|
|
95
104
|
}
|
|
96
105
|
}
|
|
97
|
-
this.
|
|
106
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_changeDetector, "f").markForCheck();
|
|
98
107
|
}
|
|
99
108
|
get rowDeleteIds() {
|
|
100
|
-
return this
|
|
101
|
-
}
|
|
102
|
-
get tableWidth() {
|
|
103
|
-
return this.elementRef.nativeElement.querySelectorAll('.sky-ag-grid')[0]
|
|
104
|
-
.offsetWidth;
|
|
109
|
+
return __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteIdsInternal, "f");
|
|
105
110
|
}
|
|
106
111
|
ngAfterContentInit() {
|
|
107
|
-
this
|
|
108
|
-
this.agGrid
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
.subscribe(() => {
|
|
126
|
-
this.updateRowDeleteStates();
|
|
127
|
-
});
|
|
112
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_rowDeleteComponent, __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_viewContainerRef, "f").createComponent(SkyAgGridRowDeleteComponent).instance, "f");
|
|
113
|
+
if (this.agGrid) {
|
|
114
|
+
this.agGrid.rowDataUpdated
|
|
115
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_ngUnsubscribe, "f")))
|
|
116
|
+
.subscribe(() => {
|
|
117
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_updateRowDeleteStates).call(this);
|
|
118
|
+
});
|
|
119
|
+
this.agGrid.sortChanged
|
|
120
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_ngUnsubscribe, "f")))
|
|
121
|
+
.subscribe(() => {
|
|
122
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_updateRowDeleteStates).call(this);
|
|
123
|
+
});
|
|
124
|
+
this.agGrid.filterChanged
|
|
125
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_ngUnsubscribe, "f")))
|
|
126
|
+
.subscribe(() => {
|
|
127
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_updateRowDeleteStates).call(this);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
128
130
|
}
|
|
129
131
|
ngOnDestroy() {
|
|
130
|
-
this.
|
|
131
|
-
this.
|
|
132
|
-
Object.keys(this
|
|
133
|
-
this.
|
|
132
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_ngUnsubscribe, "f").next();
|
|
133
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_ngUnsubscribe, "f").complete();
|
|
134
|
+
Object.keys(__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteContents, "f")).forEach((id) => {
|
|
135
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_destroyRowDelete).call(this, id);
|
|
134
136
|
});
|
|
135
137
|
}
|
|
136
138
|
cancelRowDelete(row) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
139
|
+
if (row.id) {
|
|
140
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f").filter((config) => config.id !== row.id), "f");
|
|
141
|
+
this.rowDeleteCancel.emit({ id: row.id });
|
|
142
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_destroyRowDelete).call(this, row.id);
|
|
143
|
+
}
|
|
140
144
|
}
|
|
141
145
|
confirmRowDelete(row) {
|
|
142
|
-
|
|
143
|
-
|
|
146
|
+
if (row.id) {
|
|
147
|
+
const rowConfig = __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f").find((config) => config.id === row.id);
|
|
148
|
+
if (rowConfig) {
|
|
149
|
+
rowConfig.pending = true;
|
|
150
|
+
this.rowDeleteConfirm.emit({ id: row.id });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
144
153
|
}
|
|
145
154
|
getRowDeleteItem(row) {
|
|
146
|
-
return this.
|
|
155
|
+
return __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f").find((rowDelete) => rowDelete.id === row.id);
|
|
147
156
|
}
|
|
148
|
-
|
|
149
|
-
|
|
157
|
+
}
|
|
158
|
+
_SkyAgGridRowDeleteDirective_rowDeleteConfigs = new WeakMap(), _SkyAgGridRowDeleteDirective_ngUnsubscribe = new WeakMap(), _SkyAgGridRowDeleteDirective_rowDeleteComponent = new WeakMap(), _SkyAgGridRowDeleteDirective_rowDeleteContents = new WeakMap(), _SkyAgGridRowDeleteDirective_rowDeleteIdsInternal = new WeakMap(), _SkyAgGridRowDeleteDirective_affixService = new WeakMap(), _SkyAgGridRowDeleteDirective_changeDetector = new WeakMap(), _SkyAgGridRowDeleteDirective_elementRef = new WeakMap(), _SkyAgGridRowDeleteDirective_overlayService = new WeakMap(), _SkyAgGridRowDeleteDirective_viewContainerRef = new WeakMap(), _SkyAgGridRowDeleteDirective_instances = new WeakSet(), _SkyAgGridRowDeleteDirective_affixToRow = function _SkyAgGridRowDeleteDirective_affixToRow(affixer, id) {
|
|
159
|
+
let rowElement = __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_elementRef, "f").nativeElement.querySelector(`
|
|
150
160
|
[row-id="${id}"] div[aria-colindex="1"],
|
|
151
161
|
.ag-row.sky-ag-grid-row-${id} div[aria-colindex="1"]
|
|
152
162
|
`);
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
+
// This covers cases where AG Grid places the column index on an inner element (such as with the `enableCellTextSelection` option)
|
|
164
|
+
// This appears to have been fixed by AG Grid in version 24 and so it is not testable after that version.
|
|
165
|
+
/* istanbul ignore if */
|
|
166
|
+
if (!rowElement) {
|
|
167
|
+
const columns = __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_elementRef, "f").nativeElement.querySelectorAll('[row-id="' + id + '"] > div');
|
|
168
|
+
for (let i = 0; i < columns.length; i++) {
|
|
169
|
+
if (columns[i].querySelector('[aria-colindex="1"]')) {
|
|
170
|
+
rowElement = columns[i];
|
|
171
|
+
break;
|
|
163
172
|
}
|
|
164
173
|
}
|
|
165
|
-
affixer.affixTo(rowElement, {
|
|
166
|
-
autoFitContext: SkyAffixAutoFitContext.Viewport,
|
|
167
|
-
isSticky: true,
|
|
168
|
-
placement: 'above',
|
|
169
|
-
verticalAlignment: 'top',
|
|
170
|
-
horizontalAlignment: 'left',
|
|
171
|
-
enableAutoFit: false,
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
destroyRowDelete(id) {
|
|
175
|
-
const rowDeleteContents = this.rowDeleteContents[id];
|
|
176
|
-
/* sanity check */
|
|
177
|
-
/* istanbul ignore else */
|
|
178
|
-
if (rowDeleteContents) {
|
|
179
|
-
rowDeleteContents.affixer.destroy();
|
|
180
|
-
this.overlayService.close(rowDeleteContents.overlay);
|
|
181
|
-
delete this.rowDeleteContents[id];
|
|
182
|
-
this.rowDeleteConfigs = this.rowDeleteConfigs.filter((config) => config.id !== id);
|
|
183
|
-
this._rowDeleteIds = this.rowDeleteIds?.filter((arrayId) => arrayId !== id);
|
|
184
|
-
this.rowDeleteIdsChange.emit(this._rowDeleteIds);
|
|
185
|
-
}
|
|
186
174
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
175
|
+
affixer.affixTo(rowElement, {
|
|
176
|
+
autoFitContext: SkyAffixAutoFitContext.Viewport,
|
|
177
|
+
isSticky: true,
|
|
178
|
+
placement: 'above',
|
|
179
|
+
verticalAlignment: 'top',
|
|
180
|
+
horizontalAlignment: 'left',
|
|
181
|
+
enableAutoFit: false,
|
|
182
|
+
});
|
|
183
|
+
}, _SkyAgGridRowDeleteDirective_destroyRowDelete = function _SkyAgGridRowDeleteDirective_destroyRowDelete(id) {
|
|
184
|
+
const rowDeleteContents = __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteContents, "f")[id];
|
|
185
|
+
/* sanity check */
|
|
186
|
+
/* istanbul ignore else */
|
|
187
|
+
if (rowDeleteContents) {
|
|
188
|
+
rowDeleteContents.affixer.destroy();
|
|
189
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_overlayService, "f").close(rowDeleteContents.overlay);
|
|
190
|
+
delete __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteContents, "f")[id];
|
|
191
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f").filter((config) => config.id !== id), "f");
|
|
192
|
+
__classPrivateFieldSet(this, _SkyAgGridRowDeleteDirective_rowDeleteIdsInternal, this.rowDeleteIds?.filter((arrayId) => arrayId !== id), "f");
|
|
193
|
+
this.rowDeleteIdsChange.emit(__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteIdsInternal, "f"));
|
|
199
194
|
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
195
|
+
}, _SkyAgGridRowDeleteDirective_updateRowDeleteStates = function _SkyAgGridRowDeleteDirective_updateRowDeleteStates() {
|
|
196
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteConfigs, "f").forEach((config) => {
|
|
197
|
+
if (!this.agGrid?.api.getRowNode(config.id)) {
|
|
198
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_destroyRowDelete).call(this, config.id);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
// We must reaffix things when the data changes because the rows rerender and the previous element that the delete was affixed
|
|
202
|
+
// to is destroyed.
|
|
203
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_instances, "m", _SkyAgGridRowDeleteDirective_affixToRow).call(this, __classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_rowDeleteContents, "f")[config.id].affixer, config.id);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
__classPrivateFieldGet(this, _SkyAgGridRowDeleteDirective_changeDetector, "f").markForCheck();
|
|
207
|
+
};
|
|
208
|
+
SkyAgGridRowDeleteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyAgGridRowDeleteDirective, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyOverlayService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
209
|
+
SkyAgGridRowDeleteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.11", type: SkyAgGridRowDeleteDirective, selector: "[skyAgGridRowDelete]", inputs: { rowDeleteIds: "rowDeleteIds" }, outputs: { rowDeleteCancel: "rowDeleteCancel", rowDeleteConfirm: "rowDeleteConfirm", rowDeleteIdsChange: "rowDeleteIdsChange" }, queries: [{ propertyName: "agGrid", first: true, predicate: AgGridAngular, descendants: true }], ngImport: i0 });
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyAgGridRowDeleteDirective, decorators: [{
|
|
204
211
|
type: Directive,
|
|
205
212
|
args: [{
|
|
206
213
|
selector: '[skyAgGridRowDelete]',
|
|
@@ -217,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
217
224
|
type: ContentChild,
|
|
218
225
|
args: [AgGridAngular]
|
|
219
226
|
}] } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yb3ctZGVsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2FnLWdyaWQtcm93LWRlbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixlQUFlLEVBRWYsaUJBQWlCLEdBQ2xCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBUzdFLE1BQU0sT0FBTywyQkFBMkI7SUE4SHRDLFlBQ1UsWUFBNkIsRUFDN0IsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsY0FBaUMsRUFDakMsZ0JBQWtDO1FBSmxDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZDNUM7O1dBRUc7UUFFSSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBRTFFOztXQUVHO1FBRUkscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWlDLENBQUM7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QyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLDhIQUE4SDtnQkFDOUgsbUJBQW1CO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN2RTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzt3SEE3UFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsMlFBcUh4QixhQUFhOzJGQXJIaEIsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzhOQVFLLFlBQVk7c0JBRGYsS0FBSztnQkEwRkMsZUFBZTtzQkFEckIsTUFBTTtnQkFPQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0Esa0JBQWtCO3NCQUR4QixNQUFNO2dCQVdBLE1BQU07c0JBRFosWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreUFmZml4ZXIsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXJvdy1kZWxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3MgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jYW5jZWwtYXJncyc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRSb3dEZWxldGVDb25maWcgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb25maWcnO1xuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3MgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb25maXJtLWFyZ3MnO1xuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29udGVudHMgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb250ZW50cyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZ0dyaWRSb3dEZWxldGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkUm93RGVsZXRlRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGlkcyBvZiB0aGUgZGF0YSBpbiB0aGUgcm93cyBvbiB3aGljaCBpbmxpbmUgZGVsZXRlJ3Mgc2hvdWxkIGJlIHNob3duLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHJvd0RlbGV0ZUlkcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9yb3dEZWxldGVJZHMgPSB2YWx1ZTtcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIHRoaXMucm93RGVsZXRlQ29uZmlncykge1xuICAgICAgICB0aGlzLmRlc3Ryb3lSb3dEZWxldGUoY29uZmlnLmlkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaWQgb2YgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbmQoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCA9PT0gaWRcbiAgICAgICk7XG4gICAgICBpZiAoZXhpc3RpbmdDb25maWcpIHtcbiAgICAgICAgZXhpc3RpbmdDb25maWcucGVuZGluZyA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb3dEZWxldGVDb25maWdzLnB1c2goe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBwZW5kaW5nOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICAgICAgc2hvd0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgICBlbmFibGVDbG9zZTogZmFsc2UsXG4gICAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZShcbiAgICAgICAgICB0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudC5pbmxpbmVEZWxldGVUZW1wbGF0ZVJlZixcbiAgICAgICAgICB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGlkKSxcbiAgICAgICAgICAgIHRhYmxlV2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFibGVXaWR0aDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSb3dEZWxldGVJdGVtOiAocm93OiBSb3dOb2RlKSA9PiB0aGlzLmdldFJvd0RlbGV0ZUl0ZW0ocm93KSxcbiAgICAgICAgICAgIGNhbmNlbFJvd0RlbGV0ZTogKHJvdzogUm93Tm9kZSkgPT4gdGhpcy5jYW5jZWxSb3dEZWxldGUocm93KSxcbiAgICAgICAgICAgIGNvbmZpcm1Sb3dEZWxldGU6IChyb3c6IFJvd05vZGUpID0+IHRoaXMuY29uZmlybVJvd0RlbGV0ZShyb3cpLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2UgYXJlIG1hbnVhbGx5IHNldHRpbmcgdGhlIHotaW5kZXggaGVyZSBiZWNhdXNlIG92ZXJsYXlzIHdpbGwgYWx3YXlzIGJlIG9uIHRvcCBvZlxuICAgICAgICAgKiB0aGUgb21uaWJhci4gVGhpcyBtYW51YWwgc2V0dGluZyBpcyAyIGxlc3MgdGhhbiB0aGUgb21uaWJhcidzIHotaW5kZXggb2YgMTAwMCBhbmQgb25lIGxlc3MgdGhhblxuICAgICAgICAgKiB0aGUgaGVhZGVyIHJvdydzIHZpZXdrZWVwZXIgd2hpY2ggaXMgOTk5LiBXZSBkaXNjdXNzZWQgY2hhbmdpbmcgdGhlIG92ZXJsYXkgc2VydmljZSB0byBhbGxvdyBmb3IgdGhpc1xuICAgICAgICAgKiBidXQgZGVjaWRlZCBhZ2FpbnN0IHRoYXQgY2hhbmdlIGF0IHRoaXMgdGltZSBkdWUgdG8gaXRzIG5pY2hlIG5hdHVyZS5cbiAgICAgICAgICovXG4gICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9ICc5OTgnO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlubGluZURlbGV0ZVJlZiA9IHRoaXMucm93RGVsZXRlQ29tcG9uZW50LmlubGluZURlbGV0ZVJlZnNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5maW5kKChlbFJlZikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZWxSZWYubmF0aXZlRWxlbWVudC5pZCA9PT0gJ3Jvdy1kZWxldGUtcmVmLScgKyBpZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLmFmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKGlubGluZURlbGV0ZVJlZik7XG5cbiAgICAgICAgICB0aGlzLmFmZml4VG9Sb3coYWZmaXhlciwgaWQpO1xuXG4gICAgICAgICAgdGhpcy5yb3dEZWxldGVDb250ZW50c1tpZF0gPSB7XG4gICAgICAgICAgICBhZmZpeGVyOiBhZmZpeGVyLFxuICAgICAgICAgICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MpIHtcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKGNvbmZpZy5pZCkgPCAwKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShjb25maWcuaWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93RGVsZXRlSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcm93RGVsZXRlSWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgYFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3NgIG9iamVjdCB3aGVuIGEgcm93J3MgaW5saW5lIGRlbGV0ZSBpcyBjYW5jZWxsZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QWdHcmlkUm93RGVsZXRlQ2FuY2VsQXJncz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYSBgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3NgIG9iamVjdCB3aGVuIGEgcm93J3MgaW5saW5lIGRlbGV0ZSBpcyBjb25maXJtZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNvbmZpcm0gPSBuZXcgRXZlbnRFbWl0dGVyPFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpcm1BcmdzPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBsaXN0IG9mIGlkcyBvZiB0aGUgZGF0YSBpbiB0aGUgcm93cyB3aGVyZSBpbmxpbmUgZGVsZXRlcyBhcmUgc2hvd24gY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcm93RGVsZXRlSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBwdWJsaWMgcm93RGVsZXRlQ29uZmlnczogU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnW10gPSBbXTtcblxuICBwdWJsaWMgZ2V0IHRhYmxlV2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5za3ktYWctZ3JpZCcpWzBdXG4gICAgICAub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBAQ29udGVudENoaWxkKEFnR3JpZEFuZ3VsYXIpXG4gIHB1YmxpYyBhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXI7XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByb3dEZWxldGVDb21wb25lbnQ6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbXBvbmVudDtcbiAgcHJpdmF0ZSByb3dEZWxldGVDb250ZW50czogeyBbaWQ6IHN0cmluZ106IFNreUFnR3JpZFJvd0RlbGV0ZUNvbnRlbnRzIH0gPSB7fTtcblxuICBwcml2YXRlIF9yb3dEZWxldGVJZHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICBTa3lBZ0dyaWRSb3dEZWxldGVDb21wb25lbnRcbiAgICApLmluc3RhbmNlO1xuXG4gICAgdGhpcy5hZ0dyaWQucm93RGF0YUNoYW5nZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUm93RGVsZXRlU3RhdGVzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWdHcmlkLnJvd0RhdGFVcGRhdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd0RlbGV0ZVN0YXRlcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFnR3JpZC5zb3J0Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZ0dyaWQuZmlsdGVyQ2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzKS5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxSb3dEZWxldGUocm93OiBSb3dOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzID0gdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbHRlcihcbiAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCAhPT0gcm93LmlkXG4gICAgKTtcbiAgICB0aGlzLnJvd0RlbGV0ZUNhbmNlbC5lbWl0KHsgaWQ6IHJvdy5pZCB9KTtcblxuICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShyb3cuaWQpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpcm1Sb3dEZWxldGUocm93OiBSb3dOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbmQoKGNvbmZpZykgPT4gY29uZmlnLmlkID09PSByb3cuaWQpLnBlbmRpbmcgPSB0cnVlO1xuICAgIHRoaXMucm93RGVsZXRlQ29uZmlybS5lbWl0KHsgaWQ6IHJvdy5pZCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEZWxldGVJdGVtKHJvdzogUm93Tm9kZSk6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMucm93RGVsZXRlQ29uZmlncy5maW5kKChyb3dEZWxldGUpID0+IHJvd0RlbGV0ZS5pZCA9PT0gcm93LmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYWZmaXhUb1JvdyhhZmZpeGVyOiBTa3lBZmZpeGVyLCBpZDogc3RyaW5nKSB7XG4gICAgbGV0IHJvd0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgXG4gICAgICBbcm93LWlkPVwiJHtpZH1cIl0gZGl2W2FyaWEtY29saW5kZXg9XCIxXCJdLFxuICAgICAgLmFnLXJvdy5za3ktYWctZ3JpZC1yb3ctJHtpZH0gZGl2W2FyaWEtY29saW5kZXg9XCIxXCJdXG4gICAgYCk7XG5cbiAgICAvLyBUaGlzIGNvdmVycyBjYXNlcyB3aGVyZSBBRyBHcmlkIHBsYWNlcyB0aGUgY29sdW1uIGluZGV4IG9uIGFuIGlubmVyIGVsZW1lbnQgKHN1Y2ggYXMgd2l0aCB0aGUgYGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uYCBvcHRpb24pXG4gICAgLy8gVGhpcyBhcHBlYXJzIHRvIGhhdmUgYmVlbiBmaXhlZCBieSBBRyBHcmlkIGluIHZlcnNpb24gMjQgYW5kIHNvIGl0IGlzIG5vdCB0ZXN0YWJsZSBhZnRlciB0aGF0IHZlcnNpb24uXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFyb3dFbGVtZW50KSB7XG4gICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ1tyb3ctaWQ9XCInICsgaWQgKyAnXCJdID4gZGl2J1xuICAgICAgKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjb2x1bW5zW2ldLnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLWNvbGluZGV4PVwiMVwiXScpKSB7XG4gICAgICAgICAgcm93RWxlbWVudCA9IGNvbHVtbnNbaV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhZmZpeGVyLmFmZml4VG8ocm93RWxlbWVudCwge1xuICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgIHBsYWNlbWVudDogJ2Fib3ZlJyxcbiAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAndG9wJyxcbiAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgIGVuYWJsZUF1dG9GaXQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95Um93RGVsZXRlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByb3dEZWxldGVDb250ZW50cyA9IHRoaXMucm93RGVsZXRlQ29udGVudHNbaWRdO1xuXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocm93RGVsZXRlQ29udGVudHMpIHtcbiAgICAgIHJvd0RlbGV0ZUNvbnRlbnRzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZShyb3dEZWxldGVDb250ZW50cy5vdmVybGF5KTtcbiAgICAgIGRlbGV0ZSB0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzW2lkXTtcbiAgICAgIHRoaXMucm93RGVsZXRlQ29uZmlncyA9IHRoaXMucm93RGVsZXRlQ29uZmlncy5maWx0ZXIoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICB0aGlzLl9yb3dEZWxldGVJZHMgPSB0aGlzLnJvd0RlbGV0ZUlkcz8uZmlsdGVyKFxuICAgICAgICAoYXJyYXlJZCkgPT4gYXJyYXlJZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICB0aGlzLnJvd0RlbGV0ZUlkc0NoYW5nZS5lbWl0KHRoaXMuX3Jvd0RlbGV0ZUlkcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzLmZvckVhY2goKGNvbmZpZzogU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGNvbmZpZy5pZCkpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGNvbmZpZy5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBtdXN0IHJlYWZmaXggdGhpbmdzIHdoZW4gdGhlIGRhdGEgY2hhbmdlcyBiZWNhdXNlIHRoZSByb3dzIHJlcmVuZGVyIGFuZCB0aGUgcHJldmlvdXMgZWxlbWVudCB0aGF0IHRoZSBkZWxldGUgd2FzIGFmZml4ZWRcbiAgICAgICAgLy8gdG8gaXMgZGVzdHJveWVkLlxuICAgICAgICB0aGlzLmFmZml4VG9Sb3codGhpcy5yb3dEZWxldGVDb250ZW50c1tjb25maWcuaWRdLmFmZml4ZXIsIGNvbmZpZy5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yb3ctZGVsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2FnLWdyaWQtcm93LWRlbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsc0JBQXNCLEdBSXZCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBUzdFLE1BQU0sT0FBTywyQkFBMkI7SUFnSXRDLFlBQ0UsWUFBNkIsRUFDN0IsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsY0FBaUMsRUFDakMsZ0JBQWtDOztRQXZDcEM7O1dBRUc7UUFFSSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBRTFFOztXQUVHO1FBRUkscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWlDLENBQUM7UUFFNUU7O1dBRUc7UUFFSSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXpELHdEQUFnRCxFQUFFLEVBQUM7UUFLbkQscURBQWlCLElBQUksT0FBTyxFQUFRLEVBQUM7UUFDckMsa0VBQTZEO1FBQzdELHlEQUFtRSxFQUFFLEVBQUM7UUFFdEUsb0VBQTRDO1FBQzVDLDREQUErQjtRQUMvQiw4REFBbUM7UUFDbkMsMERBQXdCO1FBQ3hC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S0FBSyxFQUFFLENBQzVCLE1BQUEsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSx5REFBc0IsQ0FBQyxDQUFDO0tBQzFEO0FBQ0gsQ0FBQztJQUdDLHVCQUFBLElBQUkscURBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZ0MsRUFBRSxFQUFFO1FBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzNDLHVCQUFBLElBQUksNkZBQWtCLE1BQXRCLElBQUksRUFBbUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDTCw4SEFBOEg7WUFDOUgsbUJBQW1CO1lBQ25CLHVCQUFBLElBQUksdUZBQVksTUFBaEIsSUFBSSxFQUFhLHVCQUFBLElBQUksc0RBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILHVCQUFBLElBQUksbURBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDdEMsQ0FBQzt5SEEzUVUsMkJBQTJCOzZHQUEzQiwyQkFBMkIsMlFBa0h4QixhQUFhOzRGQWxIaEIsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzhOQVFZLFlBQVk7c0JBRHRCLEtBQUs7Z0JBNEZDLGVBQWU7c0JBRHJCLE1BQU07Z0JBT0EsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQU9BLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFNQSxNQUFNO3NCQURaLFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lPdmVybGF5U2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IFJvd05vZGUgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUFnR3JpZFJvd0RlbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vYWctZ3JpZC1yb3ctZGVsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRSb3dEZWxldGVDYW5jZWxBcmdzIH0gZnJvbSAnLi90eXBlcy9hZy1ncmlkLXJvdy1kZWxldGUtY2FuY2VsLWFyZ3MnO1xuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnIH0gZnJvbSAnLi90eXBlcy9hZy1ncmlkLXJvdy1kZWxldGUtY29uZmlnJztcbmltcG9ydCB7IFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpcm1BcmdzIH0gZnJvbSAnLi90eXBlcy9hZy1ncmlkLXJvdy1kZWxldGUtY29uZmlybS1hcmdzJztcbmltcG9ydCB7IFNreUFnR3JpZFJvd0RlbGV0ZUNvbnRlbnRzIH0gZnJvbSAnLi90eXBlcy9hZy1ncmlkLXJvdy1kZWxldGUtY29udGVudHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5QWdHcmlkUm93RGVsZXRlXScsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZFJvd0RlbGV0ZURpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBpZHMgb2YgdGhlIGRhdGEgaW4gdGhlIHJvd3Mgb24gd2hpY2ggaW5saW5lIGRlbGV0ZSdzIHNob3VsZCBiZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcm93RGVsZXRlSWRzKHZhbHVlOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI3Jvd0RlbGV0ZUlkc0ludGVybmFsID0gdmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiB0aGlzLiNyb3dEZWxldGVDb25maWdzKSB7XG4gICAgICAgIHRoaXMuI2Rlc3Ryb3lSb3dEZWxldGUoY29uZmlnLmlkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIHZhbHVlKSB7XG4gICAgICBjb25zdCBleGlzdGluZ0NvbmZpZyA9IHRoaXMuI3Jvd0RlbGV0ZUNvbmZpZ3MuZmluZChcbiAgICAgICAgKGNvbmZpZykgPT4gY29uZmlnLmlkID09PSBpZFxuICAgICAgKTtcbiAgICAgIGlmIChleGlzdGluZ0NvbmZpZykge1xuICAgICAgICBleGlzdGluZ0NvbmZpZy5wZW5kaW5nID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuI3Jvd0RlbGV0ZUNvbXBvbmVudCAmJiB0aGlzLmFnR3JpZCkge1xuICAgICAgICB0aGlzLiNyb3dEZWxldGVDb25maWdzLnB1c2goe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBwZW5kaW5nOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgICAgZW5hYmxlU2Nyb2xsOiB0cnVlLFxuICAgICAgICAgIHNob3dCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLiNyb3dEZWxldGVDb21wb25lbnQuaW5saW5lRGVsZXRlVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKFxuICAgICAgICAgICAgdGhpcy4jcm93RGVsZXRlQ29tcG9uZW50LmlubGluZURlbGV0ZVRlbXBsYXRlUmVmLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGlkKSxcbiAgICAgICAgICAgICAgdGFibGVXaWR0aDogKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNreS1hZy1ncmlkJylcbiAgICAgICAgICAgICAgICAgIC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgZ2V0Um93RGVsZXRlSXRlbTogKHJvdzogUm93Tm9kZSkgPT4gdGhpcy5nZXRSb3dEZWxldGVJdGVtKHJvdyksXG4gICAgICAgICAgICAgIGNhbmNlbFJvd0RlbGV0ZTogKHJvdzogUm93Tm9kZSkgPT4gdGhpcy5jYW5jZWxSb3dEZWxldGUocm93KSxcbiAgICAgICAgICAgICAgY29uZmlybVJvd0RlbGV0ZTogKHJvdzogUm93Tm9kZSkgPT4gdGhpcy5jb25maXJtUm93RGVsZXRlKHJvdyksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZSBhcmUgbWFudWFsbHkgc2V0dGluZyB0aGUgei1pbmRleCBoZXJlIGJlY2F1c2Ugb3ZlcmxheXMgd2lsbCBhbHdheXMgYmUgb24gdG9wIG9mXG4gICAgICAgICAqIHRoZSBvbW5pYmFyLiBUaGlzIG1hbnVhbCBzZXR0aW5nIGlzIDIgbGVzcyB0aGFuIHRoZSBvbW5pYmFyJ3Mgei1pbmRleCBvZiAxMDAwIGFuZCBvbmUgbGVzcyB0aGFuXG4gICAgICAgICAqIHRoZSBoZWFkZXIgcm93J3Mgdmlld2tlZXBlciB3aGljaCBpcyA5OTkuIFdlIGRpc2N1c3NlZCBjaGFuZ2luZyB0aGUgb3ZlcmxheSBzZXJ2aWNlIHRvIGFsbG93IGZvciB0aGlzXG4gICAgICAgICAqIGJ1dCBkZWNpZGVkIGFnYWluc3QgdGhhdCBjaGFuZ2UgYXQgdGhpcyB0aW1lIGR1ZSB0byBpdHMgbmljaGUgbmF0dXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgb3ZlcmxheS5jb21wb25lbnRSZWYuaW5zdGFuY2UuekluZGV4ID0gJzk5OCc7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5saW5lRGVsZXRlUmVmID0gdGhpcy4jcm93RGVsZXRlQ29tcG9uZW50Py5pbmxpbmVEZWxldGVSZWZzXG4gICAgICAgICAgICA/LnRvQXJyYXkoKVxuICAgICAgICAgICAgLmZpbmQoXG4gICAgICAgICAgICAgIChlbFJlZikgPT4gZWxSZWYubmF0aXZlRWxlbWVudC5pZCA9PT0gJ3Jvdy1kZWxldGUtcmVmLScgKyBpZFxuICAgICAgICAgICAgKSBhcyBFbGVtZW50UmVmO1xuICAgICAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLiNhZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcihpbmxpbmVEZWxldGVSZWYpO1xuXG4gICAgICAgICAgdGhpcy4jYWZmaXhUb1JvdyhhZmZpeGVyLCBpZCk7XG5cbiAgICAgICAgICB0aGlzLiNyb3dEZWxldGVDb250ZW50c1tpZF0gPSB7XG4gICAgICAgICAgICBhZmZpeGVyOiBhZmZpeGVyLFxuICAgICAgICAgICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiB0aGlzLiNyb3dEZWxldGVDb25maWdzKSB7XG4gICAgICBpZiAodmFsdWUuaW5kZXhPZihjb25maWcuaWQpIDwgMCkge1xuICAgICAgICB0aGlzLiNkZXN0cm95Um93RGVsZXRlKGNvbmZpZy5pZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93RGVsZXRlSWRzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jcm93RGVsZXRlSWRzSW50ZXJuYWw7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYSBgU2t5QWdHcmlkUm93RGVsZXRlQ2FuY2VsQXJnc2Agb2JqZWN0IHdoZW4gYSByb3cncyBpbmxpbmUgZGVsZXRlIGlzIGNhbmNlbGxlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcm93RGVsZXRlQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lBZ0dyaWRSb3dEZWxldGVDYW5jZWxBcmdzPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBhIGBTa3lBZ0dyaWRSb3dEZWxldGVDb25maXJtQXJnc2Agb2JqZWN0IHdoZW4gYSByb3cncyBpbmxpbmUgZGVsZXRlIGlzIGNvbmZpcm1lZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcm93RGVsZXRlQ29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGxpc3Qgb2YgaWRzIG9mIHRoZSBkYXRhIGluIHRoZSByb3dzIHdoZXJlIGlubGluZSBkZWxldGVzIGFyZSBzaG93biBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByb3dEZWxldGVJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gICNyb3dEZWxldGVDb25maWdzOiBTa3lBZ0dyaWRSb3dEZWxldGVDb25maWdbXSA9IFtdO1xuXG4gIEBDb250ZW50Q2hpbGQoQWdHcmlkQW5ndWxhcilcbiAgcHVibGljIGFnR3JpZDogQWdHcmlkQW5ndWxhciB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNyb3dEZWxldGVDb21wb25lbnQ6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgI3Jvd0RlbGV0ZUNvbnRlbnRzOiB7IFtpZDogc3RyaW5nXTogU2t5QWdHcmlkUm93RGVsZXRlQ29udGVudHMgfSA9IHt9O1xuXG4gICNyb3dEZWxldGVJZHNJbnRlcm5hbDogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICNhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2U7XG4gICN2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHRoaXMuI2FmZml4U2VydmljZSA9IGFmZml4U2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI292ZXJsYXlTZXJ2aWNlID0gb3ZlcmxheVNlcnZpY2U7XG4gICAgdGhpcy4jdmlld0NvbnRhaW5lclJlZiA9IHZpZXdDb250YWluZXJSZWY7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3Jvd0RlbGV0ZUNvbXBvbmVudCA9IHRoaXMuI3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgU2t5QWdHcmlkUm93RGVsZXRlQ29tcG9uZW50XG4gICAgKS5pbnN0YW5jZTtcblxuICAgIGlmICh0aGlzLmFnR3JpZCkge1xuICAgICAgdGhpcy5hZ0dyaWQucm93RGF0YVVwZGF0ZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYWdHcmlkLnNvcnRDaGFuZ2VkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlUm93RGVsZXRlU3RhdGVzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLmFnR3JpZC5maWx0ZXJDaGFuZ2VkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlUm93RGVsZXRlU3RhdGVzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLiNyb3dEZWxldGVDb250ZW50cykuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgIHRoaXMuI2Rlc3Ryb3lSb3dEZWxldGUoaWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbFJvd0RlbGV0ZShyb3c6IFJvd05vZGUpOiB2b2lkIHtcbiAgICBpZiAocm93LmlkKSB7XG4gICAgICB0aGlzLiNyb3dEZWxldGVDb25maWdzID0gdGhpcy4jcm93RGVsZXRlQ29uZmlncy5maWx0ZXIoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCAhPT0gcm93LmlkXG4gICAgICApO1xuICAgICAgdGhpcy5yb3dEZWxldGVDYW5jZWwuZW1pdCh7IGlkOiByb3cuaWQgfSk7XG5cbiAgICAgIHRoaXMuI2Rlc3Ryb3lSb3dEZWxldGUocm93LmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY29uZmlybVJvd0RlbGV0ZShyb3c6IFJvd05vZGUpOiB2b2lkIHtcbiAgICBpZiAocm93LmlkKSB7XG4gICAgICBjb25zdCByb3dDb25maWcgPSB0aGlzLiNyb3dEZWxldGVDb25maWdzLmZpbmQoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCA9PT0gcm93LmlkXG4gICAgICApO1xuXG4gICAgICBpZiAocm93Q29uZmlnKSB7XG4gICAgICAgIHJvd0NvbmZpZy5wZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yb3dEZWxldGVDb25maXJtLmVtaXQoeyBpZDogcm93LmlkIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEZWxldGVJdGVtKHJvdzogUm93Tm9kZSk6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI3Jvd0RlbGV0ZUNvbmZpZ3MuZmluZCgocm93RGVsZXRlKSA9PiByb3dEZWxldGUuaWQgPT09IHJvdy5pZCk7XG4gIH1cblxuICAjYWZmaXhUb1JvdyhhZmZpeGVyOiBTa3lBZmZpeGVyLCBpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHJvd0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFxuICAgICAgW3Jvdy1pZD1cIiR7aWR9XCJdIGRpdlthcmlhLWNvbGluZGV4PVwiMVwiXSxcbiAgICAgIC5hZy1yb3cuc2t5LWFnLWdyaWQtcm93LSR7aWR9IGRpdlthcmlhLWNvbGluZGV4PVwiMVwiXVxuICAgIGApO1xuXG4gICAgLy8gVGhpcyBjb3ZlcnMgY2FzZXMgd2hlcmUgQUcgR3JpZCBwbGFjZXMgdGhlIGNvbHVtbiBpbmRleCBvbiBhbiBpbm5lciBlbGVtZW50IChzdWNoIGFzIHdpdGggdGhlIGBlbmFibGVDZWxsVGV4dFNlbGVjdGlvbmAgb3B0aW9uKVxuICAgIC8vIFRoaXMgYXBwZWFycyB0byBoYXZlIGJlZW4gZml4ZWQgYnkgQUcgR3JpZCBpbiB2ZXJzaW9uIDI0IGFuZCBzbyBpdCBpcyBub3QgdGVzdGFibGUgYWZ0ZXIgdGhhdCB2ZXJzaW9uLlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghcm93RWxlbWVudCkge1xuICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAnW3Jvdy1pZD1cIicgKyBpZCArICdcIl0gPiBkaXYnXG4gICAgICApO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGNvbHVtbnNbaV0ucXVlcnlTZWxlY3RvcignW2FyaWEtY29saW5kZXg9XCIxXCJdJykpIHtcbiAgICAgICAgICByb3dFbGVtZW50ID0gY29sdW1uc1tpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGFmZml4ZXIuYWZmaXhUbyhyb3dFbGVtZW50LCB7XG4gICAgICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5WaWV3cG9ydCxcbiAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgcGxhY2VtZW50OiAnYWJvdmUnLFxuICAgICAgdmVydGljYWxBbGlnbm1lbnQ6ICd0b3AnLFxuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2xlZnQnLFxuICAgICAgZW5hYmxlQXV0b0ZpdDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICAjZGVzdHJveVJvd0RlbGV0ZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgcm93RGVsZXRlQ29udGVudHMgPSB0aGlzLiNyb3dEZWxldGVDb250ZW50c1tpZF07XG5cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChyb3dEZWxldGVDb250ZW50cykge1xuICAgICAgcm93RGVsZXRlQ29udGVudHMuYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNvdmVybGF5U2VydmljZS5jbG9zZShyb3dEZWxldGVDb250ZW50cy5vdmVybGF5KTtcbiAgICAgIGRlbGV0ZSB0aGlzLiNyb3dEZWxldGVDb250ZW50c1tpZF07XG4gICAgICB0aGlzLiNyb3dEZWxldGVDb25maWdzID0gdGhpcy4jcm93RGVsZXRlQ29uZmlncy5maWx0ZXIoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICB0aGlzLiNyb3dEZWxldGVJZHNJbnRlcm5hbCA9IHRoaXMucm93RGVsZXRlSWRzPy5maWx0ZXIoXG4gICAgICAgIChhcnJheUlkKSA9PiBhcnJheUlkICE9PSBpZFxuICAgICAgKTtcbiAgICAgIHRoaXMucm93RGVsZXRlSWRzQ2hhbmdlLmVtaXQodGhpcy4jcm93RGVsZXRlSWRzSW50ZXJuYWwpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy4jcm93RGVsZXRlQ29uZmlncy5mb3JFYWNoKChjb25maWc6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpZykgPT4ge1xuICAgICAgaWYgKCF0aGlzLmFnR3JpZD8uYXBpLmdldFJvd05vZGUoY29uZmlnLmlkKSkge1xuICAgICAgICB0aGlzLiNkZXN0cm95Um93RGVsZXRlKGNvbmZpZy5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBtdXN0IHJlYWZmaXggdGhpbmdzIHdoZW4gdGhlIGRhdGEgY2hhbmdlcyBiZWNhdXNlIHRoZSByb3dzIHJlcmVuZGVyIGFuZCB0aGUgcHJldmlvdXMgZWxlbWVudCB0aGF0IHRoZSBkZWxldGUgd2FzIGFmZml4ZWRcbiAgICAgICAgLy8gdG8gaXMgZGVzdHJveWVkLlxuICAgICAgICB0aGlzLiNhZmZpeFRvUm93KHRoaXMuI3Jvd0RlbGV0ZUNvbnRlbnRzW2NvbmZpZy5pZF0uYWZmaXhlciwgY29uZmlnLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
|