@rivet-health/design-system 26.4.0 → 26.5.1
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/esm2020/lib/input/radio/radio.component.mjs +2 -2
- package/esm2020/lib/navigation/views/state.mjs +2 -1
- package/esm2020/lib/navigation/views/views/views.component.mjs +3 -3
- package/fesm2015/rivet-health-design-system.mjs +6 -5
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +5 -4
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/navigation/views/state.d.ts +1 -0
- package/package.json +1 -1
|
@@ -14,10 +14,10 @@ export class RadioComponent {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
RadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
-
RadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RadioComponent, selector: "riv-radio", inputs: { name: "name", identifier: "identifier", value: "value", checked: "checked", size: "size", title: "title", subtitle: "subtitle", disabled: "disabled", required: "required" }, outputs: { checkedChange: "checkedChange" }, queries: [{ propertyName: "labelTemplate", first: true, predicate: ["label"], descendants: true }], viewQueries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }], ngImport: i0, template: "<label\n #label\n class=\"wrapper\"\n [ngClass]=\"size\"\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isRadioOnly()\"\n>\n <input\n #input\n type=\"radio\"\n [id]=\"identifier\"\n [name]=\"name\"\n [value]=\"value\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"checkedChange.emit(!!input.checked)\"\n />\n <ng-container *ngIf=\"labelTemplate; else defaultLabel\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: { checked }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultLabel>\n <div *ngIf=\"title\" class=\"label\">\n <span class=\"title\">{{ title }}</span>\n <span *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</span>\n </div>\n </ng-template>\n</label>\n", styles: [":host{display:inline-flex}.wrapper{flex-grow:1;display:inline-flex;gap:var(--size-small);align-items:flex-start;max-width:100%}.wrapper.has-content{padding:var(--size-xsmall);border-radius:var(--border-radius-xsmall);transition:background-color var(--short-transition)}.wrapper.has-content:hover:not(.disabled){cursor:pointer;background-color:var(--surface-light-2)}.wrapper.has-content:active:not(.disabled){background-color:var(--surface-light-3)}.wrapper.medium{--outer-size: calc(var(--base-grid-size) * 4);--inner-size: calc(var(--base-grid-size) * 2.5)}.wrapper.large{--outer-size: calc(var(--base-grid-size) * 5);--inner-size: calc(var(--base-grid-size) * 3)}input{margin:0;width:var(--outer-size);height:var(--outer-size);position:relative;cursor:pointer;flex-shrink:0;appearance:none}input:before{content:\"\";position:absolute;inset:0;border-radius:100%;background-color:var(--surface-light-0);border:var(--border-width) solid var(--border-light)}input:checked:after{content:\"\";width:var(--inner-size);height:var(--inner-size);border-radius:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--brand)}input:disabled{cursor:default}input:disabled:after{background-color:var(--black-20)}input:disabled:checked:after,input:disabled:indeterminate:after{background-color:var(--black-40)}.label{display:flex;flex-direction:column;gap:var(--size-xsmall)}.title{color:var(--type-light-high-contrast)}.wrapper.medium .title{font:var(--input-medium)}.wrapper.large .title{font:var(--input-large);line-height:var(--type-3-line-height-1)}.subtitle{color:var(--type-light-low-contrast);font:var(--input-small)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17
|
+
RadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RadioComponent, selector: "riv-radio", inputs: { name: "name", identifier: "identifier", value: "value", checked: "checked", size: "size", title: "title", subtitle: "subtitle", disabled: "disabled", required: "required" }, outputs: { checkedChange: "checkedChange" }, queries: [{ propertyName: "labelTemplate", first: true, predicate: ["label"], descendants: true }], viewQueries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }], ngImport: i0, template: "<label\n #label\n class=\"wrapper\"\n [ngClass]=\"size\"\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isRadioOnly()\"\n>\n <input\n #input\n type=\"radio\"\n [id]=\"identifier\"\n [name]=\"name\"\n [value]=\"value\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"checkedChange.emit(!!input.checked)\"\n />\n <ng-container *ngIf=\"labelTemplate; else defaultLabel\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: { checked }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultLabel>\n <div *ngIf=\"title\" class=\"label\">\n <span class=\"title\">{{ title }}</span>\n <span *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</span>\n </div>\n </ng-template>\n</label>\n", styles: [":host{display:inline-flex}.wrapper{flex-grow:1;display:inline-flex;gap:var(--size-small);align-items:flex-start;max-width:100%}.wrapper.has-content{padding:var(--size-xsmall);border-radius:var(--border-radius-xsmall);transition:background-color var(--short-transition)}.wrapper.has-content:hover:not(.disabled){cursor:pointer;background-color:var(--surface-light-2)}.wrapper.has-content:active:not(.disabled){background-color:var(--surface-light-3)}.wrapper.medium{--outer-size: calc(var(--base-grid-size) * 4);--inner-size: calc(var(--base-grid-size) * 2.5)}.wrapper.large{--outer-size: calc(var(--base-grid-size) * 5);--inner-size: calc(var(--base-grid-size) * 3)}input{margin:0;width:var(--outer-size);height:var(--outer-size);position:relative;cursor:pointer;flex-shrink:0;appearance:none}input:before{content:\"\";position:absolute;inset:0;border-radius:100%;background-color:var(--surface-light-0);border:var(--border-width) solid var(--border-light)}input:disabled:before{background-color:var(--black-10)}input:checked:after{content:\"\";width:var(--inner-size);height:var(--inner-size);border-radius:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--brand)}input:disabled{cursor:default}input:disabled:after{background-color:var(--black-20)}input:disabled:checked:after,input:disabled:indeterminate:after{background-color:var(--black-40)}.label{display:flex;flex-direction:column;gap:var(--size-xsmall)}.title{color:var(--type-light-high-contrast)}.wrapper.medium .title{font:var(--input-medium)}.wrapper.large .title{font:var(--input-large);line-height:var(--type-3-line-height-1)}.wrapper.disabled .title{color:var(--type-light-disabled)}.subtitle{color:var(--type-light-low-contrast);font:var(--input-small)}.wrapper.disabled .subtitle{color:var(--type-light-disabled)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
18
18
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RadioComponent, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
|
-
args: [{ selector: 'riv-radio', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n #label\n class=\"wrapper\"\n [ngClass]=\"size\"\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isRadioOnly()\"\n>\n <input\n #input\n type=\"radio\"\n [id]=\"identifier\"\n [name]=\"name\"\n [value]=\"value\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"checkedChange.emit(!!input.checked)\"\n />\n <ng-container *ngIf=\"labelTemplate; else defaultLabel\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: { checked }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultLabel>\n <div *ngIf=\"title\" class=\"label\">\n <span class=\"title\">{{ title }}</span>\n <span *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</span>\n </div>\n </ng-template>\n</label>\n", styles: [":host{display:inline-flex}.wrapper{flex-grow:1;display:inline-flex;gap:var(--size-small);align-items:flex-start;max-width:100%}.wrapper.has-content{padding:var(--size-xsmall);border-radius:var(--border-radius-xsmall);transition:background-color var(--short-transition)}.wrapper.has-content:hover:not(.disabled){cursor:pointer;background-color:var(--surface-light-2)}.wrapper.has-content:active:not(.disabled){background-color:var(--surface-light-3)}.wrapper.medium{--outer-size: calc(var(--base-grid-size) * 4);--inner-size: calc(var(--base-grid-size) * 2.5)}.wrapper.large{--outer-size: calc(var(--base-grid-size) * 5);--inner-size: calc(var(--base-grid-size) * 3)}input{margin:0;width:var(--outer-size);height:var(--outer-size);position:relative;cursor:pointer;flex-shrink:0;appearance:none}input:before{content:\"\";position:absolute;inset:0;border-radius:100%;background-color:var(--surface-light-0);border:var(--border-width) solid var(--border-light)}input:checked:after{content:\"\";width:var(--inner-size);height:var(--inner-size);border-radius:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--brand)}input:disabled{cursor:default}input:disabled:after{background-color:var(--black-20)}input:disabled:checked:after,input:disabled:indeterminate:after{background-color:var(--black-40)}.label{display:flex;flex-direction:column;gap:var(--size-xsmall)}.title{color:var(--type-light-high-contrast)}.wrapper.medium .title{font:var(--input-medium)}.wrapper.large .title{font:var(--input-large);line-height:var(--type-3-line-height-1)}.subtitle{color:var(--type-light-low-contrast);font:var(--input-small)}\n"] }]
|
|
20
|
+
args: [{ selector: 'riv-radio', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n #label\n class=\"wrapper\"\n [ngClass]=\"size\"\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isRadioOnly()\"\n>\n <input\n #input\n type=\"radio\"\n [id]=\"identifier\"\n [name]=\"name\"\n [value]=\"value\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"checkedChange.emit(!!input.checked)\"\n />\n <ng-container *ngIf=\"labelTemplate; else defaultLabel\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: { checked }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultLabel>\n <div *ngIf=\"title\" class=\"label\">\n <span class=\"title\">{{ title }}</span>\n <span *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</span>\n </div>\n </ng-template>\n</label>\n", styles: [":host{display:inline-flex}.wrapper{flex-grow:1;display:inline-flex;gap:var(--size-small);align-items:flex-start;max-width:100%}.wrapper.has-content{padding:var(--size-xsmall);border-radius:var(--border-radius-xsmall);transition:background-color var(--short-transition)}.wrapper.has-content:hover:not(.disabled){cursor:pointer;background-color:var(--surface-light-2)}.wrapper.has-content:active:not(.disabled){background-color:var(--surface-light-3)}.wrapper.medium{--outer-size: calc(var(--base-grid-size) * 4);--inner-size: calc(var(--base-grid-size) * 2.5)}.wrapper.large{--outer-size: calc(var(--base-grid-size) * 5);--inner-size: calc(var(--base-grid-size) * 3)}input{margin:0;width:var(--outer-size);height:var(--outer-size);position:relative;cursor:pointer;flex-shrink:0;appearance:none}input:before{content:\"\";position:absolute;inset:0;border-radius:100%;background-color:var(--surface-light-0);border:var(--border-width) solid var(--border-light)}input:disabled:before{background-color:var(--black-10)}input:checked:after{content:\"\";width:var(--inner-size);height:var(--inner-size);border-radius:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--brand)}input:disabled{cursor:default}input:disabled:after{background-color:var(--black-20)}input:disabled:checked:after,input:disabled:indeterminate:after{background-color:var(--black-40)}.label{display:flex;flex-direction:column;gap:var(--size-xsmall)}.title{color:var(--type-light-high-contrast)}.wrapper.medium .title{font:var(--input-medium)}.wrapper.large .title{font:var(--input-large);line-height:var(--type-3-line-height-1)}.wrapper.disabled .title{color:var(--type-light-disabled)}.subtitle{color:var(--type-light-low-contrast);font:var(--input-small)}.wrapper.disabled .subtitle{color:var(--type-light-disabled)}\n"] }]
|
|
21
21
|
}], propDecorators: { name: [{
|
|
22
22
|
type: Input
|
|
23
23
|
}], identifier: [{
|
|
@@ -53,6 +53,7 @@ export var RivViews;
|
|
|
53
53
|
allViews,
|
|
54
54
|
displayedViews,
|
|
55
55
|
enabledViews,
|
|
56
|
+
allEnabledViews,
|
|
56
57
|
all: {
|
|
57
58
|
...s.all,
|
|
58
59
|
privateOpen: searchingAllViews || s.all.privateOpen,
|
|
@@ -372,4 +373,4 @@ export var RivViews;
|
|
|
372
373
|
}
|
|
373
374
|
RivViews.isSharedView = isSharedView;
|
|
374
375
|
})(RivViews || (RivViews = {}));
|
|
375
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hELE9BQU8sRUFDTCxXQUFXLEVBRVgsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxNQUFNLENBQUM7QUFLZCxNQUFNLEtBQVcsUUFBUSxDQStxQnhCO0FBL3FCRCxXQUFpQixRQUFRO0lBQ1Ysd0JBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFVLENBQUM7SUFHM0QscUJBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFVLENBQUM7SUE2SXRFLFNBQWdCLGFBQWEsQ0FBb0MsRUFDL0QsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLFFBQVEsRUFDUixPQUFPLEVBQ1AsZUFBZSxHQUNVO1FBQ3pCLE1BQU0sWUFBWSxHQUFvQjtZQUNwQyxLQUFLLEVBQUUsRUFBRTtZQUNULFlBQVksRUFBRSxJQUFJO1lBQ2xCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixRQUFRLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLEtBQUs7YUFDbEI7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2dCQUNo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QkFBZ0I7Z0JBQ25CLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxPQUFPO2lCQUNuQyxDQUFDO1lBRUosS0FBSyxpQkFBaUI7Z0JBQ3BCLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxPQUFPO2lCQUNwQyxDQUFDO1NBQ0w7SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNmLGVBQWU7SUFDZixlQUFlO0lBRWYsU0FBZ0Isa0JBQWtCLENBQUMsVUFBMEI7UUFDM0QsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBVGUsMkJBQWtCLHFCQVNqQyxDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQUMsVUFBMEI7UUFDakUsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8scUJBQXFCLENBQUM7WUFDL0IsS0FBSyxRQUFRO2dCQUNYLE9BQU8sbUNBQW1DLENBQUM7WUFDN0MsS0FBSyxRQUFRO2dCQUNYLE9BQU8scUJBQXFCLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBVGUsaUNBQXdCLDJCQVN2QyxDQUFBO0lBRUQsU0FBZ0IsWUFBWSxDQUMxQixJQUFxQjtRQUVyQixPQUFPLElBQUksRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFKZSxxQkFBWSxlQUkzQixDQUFBO0FBQ0gsQ0FBQyxFQS9xQmdCLFFBQVEsS0FBUixRQUFRLFFBK3FCeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRnVzZSwgeyBGdXNlUmVzdWx0LCBJRnVzZU9wdGlvbnMgfSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBkZWZhdWx0c0RlZXAsIHNvcnRCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBjb25uZWN0YWJsZSxcbiAgQ29ubmVjdGFibGUsXG4gIGZyb20sXG4gIG1hcCxcbiAgbWVyZ2VTY2FuLFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICd1dGlsaXR5LXR5cGVzJztcbmltcG9ydCB7IFJpdlNlbGVjdCB9IGZyb20gJy4uLy4uL2lucHV0L3NlbGVjdC9zdGF0ZSc7XG5pbXBvcnQgeyBIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi92aXN1YWxpemF0aW9uL2hpZ2hsaWdodC9oaWdobGlnaHQuY29tcG9uZW50JztcblxuZXhwb3J0IG5hbWVzcGFjZSBSaXZWaWV3cyB7XG4gIGV4cG9ydCBjb25zdCBWaWV3UGVybWlzc2lvbnMgPSBbJ3ByaXZhdGUnLCAncHVibGljJywgJ3NoYXJlZCddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBWaWV3UGVybWlzc2lvbiA9ICh0eXBlb2YgVmlld1Blcm1pc3Npb25zKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBNZW51Q29udGV4dHMgPSBbJ3RhYicsICdhbGwtdmlld3MnLCAnb3ZlcmZsb3cnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgTWVudUNvbnRleHQgPSAodHlwZW9mIE1lbnVDb250ZXh0cylbbnVtYmVyXTtcblxuICBleHBvcnQgdHlwZSBVc2VyID0gUml2U2VsZWN0LkJhc2VPcHRpb247XG5cbiAgZXhwb3J0IHR5cGUgVmlldzxVIGV4dGVuZHMgVXNlcj4gPSB7XG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlZmF1bHQ6IGJvb2xlYW47XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgfSAmIChcbiAgICB8IHtcbiAgICAgICAgcGVybWlzc2lvbjogJ3ByaXZhdGUnIHwgJ3B1YmxpYyc7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBlcm1pc3Npb246ICdzaGFyZWQnO1xuICAgICAgICBzaGFyZWRVc2VyczogVVtdO1xuICAgICAgfVxuICApO1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxWaWV3PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSBWICYge1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBzeXN0ZW06IGJvb2xlYW47XG4gICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzPzogSGlnaGxpZ2h0Q29tcG9uZW50LkhpZ2hsaWdodEluZGljZXNbXTtcbiAgfTtcblxuICAvLy8vLy8vLy8vL1xuICAvLyBTdGF0ZSAvL1xuICAvLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIENvcmVTdGF0ZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIHZpZXdzOiBWW107XG4gICAgYWN0aXZlVmlld0lkOiBWWydpZCddIHwgbnVsbDtcbiAgICBkZWZhdWx0Vmlld0lkOiBWWydpZCddIHwgbnVsbDtcbiAgICBjb250YWluZXJXaWR0aDogbnVtYmVyO1xuICAgIGVkaXRpbmdWaWV3Q29udGV4dDoge1xuICAgICAgaWQ6IFZbJ2lkJ107XG4gICAgICBhdXRvUmVuYW1lOiBib29sZWFuO1xuICAgICAgbWVudUNvbnRleHQ6IE1lbnVDb250ZXh0O1xuICAgIH0gfCBudWxsO1xuICAgIGRlbGV0aW5nVmlld0NvbnRleHQ6IHsgaWQ6IFZbJ2lkJ107IG1lbnVDb250ZXh0OiBNZW51Q29udGV4dCB9IHwgbnVsbDtcbiAgICBvdmVyZmxvdzoge1xuICAgICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgICBwaWNrZXJPcGVuOiBib29sZWFuO1xuICAgIH07XG4gICAgYWxsOiB7XG4gICAgICBzZWFyY2g6IHN0cmluZztcbiAgICAgIHByaXZhdGVPcGVuOiBib29sZWFuO1xuICAgICAgc2hhcmVkT3BlbjogYm9vbGVhbjtcbiAgICAgIHB1YmxpY09wZW46IGJvb2xlYW47XG4gICAgfTtcbiAgICB1c2VyU291cmNlOiBVc2VyU291cmNlPFU+O1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxTdGF0ZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gQ29yZVN0YXRlPFUsIFY+ICYge1xuICAgIGFsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGRpc3BsYXllZFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGVuYWJsZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICBhbGw6IHtcbiAgICAgIHByaXZhdGVWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICAgIHByaXZhdGVFbXB0eVN0YXRlTWVzc2FnZTogc3RyaW5nO1xuICAgICAgc2hhcmVkVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgICBzaGFyZWRFbXB0eVN0YXRlTWVzc2FnZTogc3RyaW5nO1xuICAgICAgcHVibGljVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgICBwdWJsaWNFbXB0eVN0YXRlTWVzc2FnZTogc3RyaW5nO1xuICAgIH07XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vL1xuICAvLyBBY3Rpb25zIC8vXG4gIC8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBBY3Rpb248VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9XG4gICAgfCB7IHR5cGU6ICdsb2FkJyB9XG4gICAgfCB7IHR5cGU6ICdzZXRBY3RpdmVWaWV3JzsgaWQ6IFZbJ2lkJ10gfVxuICAgIHwgeyB0eXBlOiAnc2V0RW5hYmxlZCc7IGlkOiBWWydpZCddOyBlbmFibGVkOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJzsgd2lkdGg6IG51bWJlciB9XG4gICAgfCB7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nOyBvcGVuOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3NldEFsbFZpZXdzU2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3VwZGF0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2RlbGV0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2R1cGxpY2F0ZVZpZXcnOyB2aWV3OiBWOyBtZW51Q29udGV4dDogTWVudUNvbnRleHQgfVxuICAgIHwgeyB0eXBlOiAnY29weUxpbmtUb1ZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ3NldEVkaXRpbmdWaWV3JzsgY29udGV4dDogQ29yZVN0YXRlPFUsIFY+WydlZGl0aW5nVmlld0NvbnRleHQnXSB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZXREZWxldGluZ1ZpZXcnO1xuICAgICAgICBjb250ZXh0OiBDb3JlU3RhdGU8VSwgVj5bJ2RlbGV0aW5nVmlld0NvbnRleHQnXTtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3ZpZXdPcmRlckNoYW5nZSc7XG4gICAgICAgIHByZXZpb3VzRW5hYmxlZEluZGV4OiBudW1iZXI7XG4gICAgICAgIG5ld0VuYWJsZWRJbmRleDogbnVtYmVyO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NUb2dnbGUnOyBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbjsgb3BlbjogYm9vbGVhbiB9O1xuXG4gIC8vLy8vLy8vLy8vL1xuICAvLyBTb3VyY2UgLy9cbiAgLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgU291cmNlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSAoKSA9PlxuICAgIHwgVltdXG4gICAgfCBQcm9taXNlPFZbXT47XG4gIGV4cG9ydCB0eXBlIFNhdmU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3czogVltdLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBleHBvcnQgdHlwZSBEdXBsaWNhdGU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3VG9EdXBsaWNhdGU6IFYsXG4gICkgPT4gViB8IFByb21pc2U8Vj47XG4gIGV4cG9ydCB0eXBlIFVzZXJTb3VyY2U8VSBleHRlbmRzIFVzZXI+ID0gKCkgPT4gVVtdIHwgUHJvbWlzZTxVW10+O1xuICBleHBvcnQgdHlwZSBDb3B5TGluazxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIHZpZXc6IFYsXG4gICkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIGV4cG9ydCB0eXBlIFNldEFjdGl2ZVZpZXdJZDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIGlkOiBWWydpZCddLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gTWFuYWdlciAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlcjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFUsIFY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGluaXRpYWxTdGF0ZT86IERlZXBQYXJ0aWFsPENvcmVTdGF0ZTxVLCBWPj47XG4gICAgZnVzZU9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Vj47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgQ3JlYXRlTWFuYWdlcklucHV0PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgc291cmNlOiBTb3VyY2U8VSwgVj47XG4gICAgc2F2ZTogU2F2ZTxVLCBWPjtcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxVLCBWPjtcbiAgICB1c2VyU291cmNlOiBVc2VyU291cmNlPFU+O1xuICAgIGNvcHlMaW5rOiBDb3B5TGluazxVLCBWPjtcbiAgICBzZXRBY3RpdmVWaWV3SWQ6IFNldEFjdGl2ZVZpZXdJZDxVLCBWPjtcbiAgICBvcHRpb25zPzogTWFuYWdlck9wdGlvbnM8VSwgVj47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+Pih7XG4gICAgc291cmNlLFxuICAgIHNhdmUsXG4gICAgZHVwbGljYXRlLFxuICAgIHVzZXJTb3VyY2UsXG4gICAgY29weUxpbmssXG4gICAgb3B0aW9ucyxcbiAgICBzZXRBY3RpdmVWaWV3SWQsXG4gIH06IENyZWF0ZU1hbmFnZXJJbnB1dDxVLCBWPik6IE1hbmFnZXI8VSwgVj4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFUsIFY+ID0ge1xuICAgICAgdmlld3M6IFtdLFxuICAgICAgYWN0aXZlVmlld0lkOiBudWxsLFxuICAgICAgZGVmYXVsdFZpZXdJZDogbnVsbCxcbiAgICAgIGNvbnRhaW5lcldpZHRoOiAwLFxuICAgICAgZWRpdGluZ1ZpZXdDb250ZXh0OiBudWxsLFxuICAgICAgZGVsZXRpbmdWaWV3Q29udGV4dDogbnVsbCxcbiAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHBpY2tlck9wZW46IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFsbDoge1xuICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICBwcml2YXRlT3BlbjogdHJ1ZSxcbiAgICAgICAgc2hhcmVkT3BlbjogdHJ1ZSxcbiAgICAgICAgcHVibGljT3BlbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB1c2VyU291cmNlLFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxVLCBWPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxVLCBWPj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIGNvbnN0IGNvcmVTdGF0ZTogT2JzZXJ2YWJsZTxDb3JlU3RhdGU8VSwgVj4+ID0gYWN0aW9ucy5waXBlKFxuICAgICAgbWVyZ2VTY2FuKFxuICAgICAgICAoc3RhdGUsIGFjdGlvbikgPT5cbiAgICAgICAgICBmcm9tKFxuICAgICAgICAgICAgcmVkdWNlKFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgIGRlYm91bmNlKHNhdmUsIDIwMCksXG4gICAgICAgICAgICAgIGR1cGxpY2F0ZSxcbiAgICAgICAgICAgICAgY29weUxpbmssXG4gICAgICAgICAgICAgIHNldEFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICAgIHN0YXJ0V2l0aChkZWZhdWx0ZWRJbml0aWFsU3RhdGUpLFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PiA9IGNvbm5lY3RhYmxlKFxuICAgICAgY29yZVN0YXRlLnBpcGUoXG4gICAgICAgIG1hcChzID0+IHtcbiAgICAgICAgICAvLyBJZiBmb3Igc29tZSByZWFzb24gdGhlIGFjdGl2ZSB2aWV3IGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCwgd2UnbGxcbiAgICAgICAgICAvLyBkZWZhdWx0IHRvIG1ha2luZyB0aGUgZmlyc3QgdmlldyBhY3RpdmUgaW5zdGVhZC5cbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3OiBWIHwgdW5kZWZpbmVkID0gcy52aWV3cy5maW5kKFxuICAgICAgICAgICAgdmlldyA9PiB2aWV3LmVuYWJsZWQgJiYgdmlldy5pZCA9PT0gcy5hY3RpdmVWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGFsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdID0gcy52aWV3cy5tYXAoKHZpZXcsIGkpID0+ICh7XG4gICAgICAgICAgICAuLi52aWV3LFxuICAgICAgICAgICAgZW5hYmxlZDogdmlldy5lbmFibGVkIHx8IGkgPT09IDAsXG4gICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZVZpZXcgPyBhY3RpdmVWaWV3LmlkID09PSB2aWV3LmlkIDogaSA9PT0gMCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHZpZXcuaWQgPT09IHMuZGVmYXVsdFZpZXdJZCxcbiAgICAgICAgICAgIHN5c3RlbTogaSA9PT0gMCxcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBjb25zdCBhbGxFbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3MoYWxsVmlld3MpO1xuXG4gICAgICAgICAgY29uc3QgZGlzcGxheWVkVmlld3MgPSBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3cyhcbiAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4KHMpLFxuICAgICAgICAgICAgcy5hY3RpdmVWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IHMub3ZlcmZsb3cuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKFxuICAgICAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgICAgICBzLm92ZXJmbG93LnNlYXJjaCxcbiAgICAgICAgICAgICAgICBvcHRpb25zPy5mdXNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBhbGxFbmFibGVkVmlld3M7XG5cbiAgICAgICAgICBjb25zdCBhbGxWaWV3c0ZpbHRlcmVkID0gcy5hbGwuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKGFsbFZpZXdzLCBzLmFsbC5zZWFyY2gsIG9wdGlvbnM/LmZ1c2VPcHRpb25zKVxuICAgICAgICAgICAgOiBhbGxWaWV3cztcblxuICAgICAgICAgIGNvbnN0IHNlYXJjaGluZ0FsbFZpZXdzID0gISFzLmFsbC5zZWFyY2g7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIGFsbFZpZXdzLFxuICAgICAgICAgICAgZGlzcGxheWVkVmlld3MsXG4gICAgICAgICAgICBlbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgICAgLi4ucy5hbGwsXG4gICAgICAgICAgICAgIHByaXZhdGVPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgICAgcHJpdmF0ZVZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHJpdmF0ZScpLFxuICAgICAgICAgICAgICBwcml2YXRlRW1wdHlTdGF0ZU1lc3NhZ2U6IGdldEVtcHR5U3RhdGVNZXNzYWdlKHMsICdwcml2YXRlJyksXG4gICAgICAgICAgICAgIHNoYXJlZE9wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICAgIHNoYXJlZFZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAnc2hhcmVkJyksXG4gICAgICAgICAgICAgIHNoYXJlZEVtcHR5U3RhdGVNZXNzYWdlOiBnZXRFbXB0eVN0YXRlTWVzc2FnZShzLCAnc2hhcmVkJyksXG4gICAgICAgICAgICAgIHB1YmxpY09wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnB1YmxpY09wZW4sXG4gICAgICAgICAgICAgIHB1YmxpY1ZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHVibGljJyksXG4gICAgICAgICAgICAgIHB1YmxpY0VtcHR5U3RhdGVNZXNzYWdlOiBnZXRFbXB0eVN0YXRlTWVzc2FnZShzLCAncHVibGljJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdG9yOiAoKSA9PiBuZXcgUmVwbGF5U3ViamVjdCgxKSxcbiAgICAgICAgcmVzZXRPbkRpc2Nvbm5lY3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuICAgIHN0YXRlLmNvbm5lY3QoKTtcblxuICAgIC8vIExvYWQgdGhlIHZpZXdzIGltbWVkaWF0ZWx5XG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgcmVkdWNlciAod2l0aCBoZWxwZXJzKSAvL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4odmlld3M6IFZbXSk6IFZbXTtcbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICk6IEZ1bGxWaWV3PFUsIFY+W10ge1xuICAgIHJldHVybiB2aWV3cy5maWx0ZXIoKHYsIGkpID0+IHYuZW5hYmxlZCB8fCBpID09PSAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGVzIGFuIGluZGV4IGluIHRoZSBlbmFibGVkIHZpZXdzIGxpc3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXhcbiAgICogaW4gdGhlIGZ1bGwgdmlld3MgbGlzdC4gVGhpcyBpcyB1c2VkIHRvIHJlc29sdmUgVUkgaW5kaWNlcyAod2hpY2ggb25seVxuICAgKiBzaG93IGVuYWJsZWQgdmlld3MpIHRvIHN0YXRlLnZpZXdzIGluZGljZXMgKHdoaWNoIGluY2x1ZGVzIGFsbCB2aWV3cykuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBFbmFibGVkSW5kZXhUb1ZpZXdJbmRleDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBWW10sXG4gICAgZW5hYmxlZEluZGV4OiBudW1iZXIsXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gZ2V0RW5hYmxlZFZpZXdzKHZpZXdzKTtcblxuICAgIGNvbnN0IHRhcmdldFZpZXcgPSBlbmFibGVkVmlld3NbZW5hYmxlZEluZGV4XTtcbiAgICBpZiAoIXRhcmdldFZpZXcpIHJldHVybiBlbmFibGVkSW5kZXg7XG5cbiAgICBjb25zdCB2aWV3SW5kZXggPSB2aWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSB0YXJnZXRWaWV3LmlkKTtcbiAgICByZXR1cm4gdmlld0luZGV4ID09PSAtMSA/IGVuYWJsZWRJbmRleCA6IHZpZXdJbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxVLCBWPixcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3Moc3RhdGUudmlld3MpO1xuXG4gICAgLy8gVGFicyBoYXZlIGEgbWluaW11bSB3aWR0aCBvZiA5MnB4LlxuICAgIGNvbnN0IHBvc3NpYmxlU2xvdENvdW50ID0gTWF0aC5mbG9vcihzdGF0ZS5jb250YWluZXJXaWR0aCAvIDkyKTtcblxuICAgIC8vIFRoZSBcImFsbCB2aWV3c1wiIHNpZGViYXIgdHJpZ2dlciB0YWtlcyB1cCBvbmUgc2xvdC5cbiAgICBjb25zdCBhdmFpbGFibGVTbG90Q291bnQgPSBwb3NzaWJsZVNsb3RDb3VudCAtIDE7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdGFicywgdGhlIFwiTiBtb3JlXCIgdHJpZ2dlciB0YWtlcyB1cCBvbmUgc2xvdCBhcyB3ZWxsLlxuICAgIC8vIEJ1dCB3ZSB3YW50IHRvIGF2b2lkIHRoZSBcIjEgbW9yZVwiIGNhc2UsIHNvIHdlIG9ubHkgdXNlIGEgc2xvdCBmb3IgXCJOIG1vcmVcIiBpZiBOICE9IDEuXG4gICAgaWYgKGF2YWlsYWJsZVNsb3RDb3VudCA+PSBlbmFibGVkVmlld3MubGVuZ3RoKSByZXR1cm4gZW5hYmxlZFZpZXdzLmxlbmd0aDtcbiAgICBlbHNlIHJldHVybiBhdmFpbGFibGVTbG90Q291bnQgLSAxOyAvLyB0aGUgXCJOIG1vcmVcIiB1c2VzIHVwIGEgc2xvdC5cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGN1bGF0ZURpc3BsYXllZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgZnVsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICAgIG92ZXJmbG93Vmlld0luZGV4OiBudW1iZXIsXG4gICAgYWN0aXZlVmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ2FjdGl2ZVZpZXdJZCddLFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRWaWV3cyA9IGZ1bGxWaWV3cy5zbGljZSgwLCBvdmVyZmxvd1ZpZXdJbmRleCk7XG5cbiAgICBjb25zdCBhY3RpdmVWaWV3SW5EaXNwbGF5ID0gZGlzcGxheWVkVmlld3Muc29tZShcbiAgICAgIHZpZXcgPT4gdmlldy5pZCA9PT0gYWN0aXZlVmlld0lkLFxuICAgICk7XG5cbiAgICBpZiAoIWFjdGl2ZVZpZXdJbkRpc3BsYXkgJiYgYWN0aXZlVmlld0lkICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gZnVsbFZpZXdzLmZpbmQodmlldyA9PiB2aWV3LmlkID09PSBhY3RpdmVWaWV3SWQpO1xuICAgICAgaWYgKGFjdGl2ZVZpZXcgJiYgZGlzcGxheWVkVmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gWy4uLmRpc3BsYXllZFZpZXdzLnNsaWNlKDAsIC0xKSwgYWN0aXZlVmlld107XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3BsYXllZFZpZXdzO1xuICB9XG5cbiAgZnVuY3Rpb24gdmlld3NCeVBlcm1pc3Npb248VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogRnVsbFZpZXc8VSwgVj5bXSxcbiAgICBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbixcbiAgKTogRnVsbFZpZXc8VSwgVj5bXSB7XG4gICAgcmV0dXJuIHNvcnRCeShcbiAgICAgIHZpZXdzLmZpbHRlcih2aWV3ID0+IHZpZXcucGVybWlzc2lvbiA9PT0gcGVybWlzc2lvbiksXG4gICAgICBbdiA9PiAhdi5zeXN0ZW0sICd0aXRsZSddLFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBzZWFyY2hWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IElGdXNlT3B0aW9uczxWPixcbiAgKTogRnVsbFZpZXc8VSwgVj5bXSB7XG4gICAgY29uc3QgZnVzZSA9IG5ldyBGdXNlKHZpZXdzLCB7XG4gICAgICB0aHJlc2hvbGQ6IDAuMixcbiAgICAgIGtleXM6IFsndGl0bGUnXSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1hdGNoZWRPcHRpb25zOiBGdXNlUmVzdWx0PEZ1bGxWaWV3PFUsIFY+PltdID0gZnVzZS5zZWFyY2gocXVlcnkpO1xuXG4gICAgcmV0dXJuIG1hdGNoZWRPcHRpb25zLm1hcChyZXN1bHQgPT4gKHtcbiAgICAgIC4uLnJlc3VsdC5pdGVtLFxuICAgICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzOiBbXG4gICAgICAgIC4uLihyZXN1bHQubWF0Y2hlcz8uZmluZChtYXRjaCA9PiBtYXRjaC5rZXkgPT09ICd0aXRsZScpPy5pbmRpY2VzID8/XG4gICAgICAgICAgW10pLFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROZXh0QmVzdEFjdGl2ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICApOiBWWydpZCddIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3Moc3RhdGUudmlld3MpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPSBlbmFibGVkVmlld3MuZmluZEluZGV4KFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgKTtcblxuICAgIGlmIChjdXJyZW50QWN0aXZlVmlld0luZGV4ID09PSAtMSkgcmV0dXJuIGVuYWJsZWRWaWV3c1swXS5pZDtcbiAgICByZXR1cm4gKFxuICAgICAgZW5hYmxlZFZpZXdzW2N1cnJlbnRBY3RpdmVWaWV3SW5kZXggKyAxXT8uaWQgPz9cbiAgICAgIGVuYWJsZWRWaWV3c1tjdXJyZW50QWN0aXZlVmlld0luZGV4IC0gMV0/LmlkID8/XG4gICAgICBlbmFibGVkVmlld3NbMF0uaWRcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVsZXRlVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgaWQ6IFZbJ2lkJ10sXG4gICk6IENvcmVTdGF0ZTxVLCBWPiB7XG4gICAgY29uc3QgYWN0aXZlVmlld0lkID1cbiAgICAgIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgPyBnZXROZXh0QmVzdEFjdGl2ZVZpZXcoc3RhdGUpXG4gICAgICAgIDogc3RhdGUuYWN0aXZlVmlld0lkO1xuICAgIGNvbnN0IHZpZXdzID0gc3RhdGUudmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5pZCAhPT0gaWQpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzLFxuICAgICAgYWN0aXZlVmlld0lkLFxuICAgICAgZGVsZXRpbmdWaWV3Q29udGV4dDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0RW5hYmxlZDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgaWQ6IFZbJ2lkJ10sXG4gICAgZW5hYmxlZDogYm9vbGVhbixcbiAgKTogQ29yZVN0YXRlPFUsIFY+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB2aWV3czogc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgdmlldy5pZCA9PT0gaWQgPyB7IC4uLnZpZXcsIGVuYWJsZWQgfSA6IHZpZXcsXG4gICAgICApLFxuICAgICAgYWN0aXZlVmlld0lkOlxuICAgICAgICAhZW5hYmxlZCAmJiBzdGF0ZS5hY3RpdmVWaWV3SWQgPT09IGlkXG4gICAgICAgICAgPyBnZXROZXh0QmVzdEFjdGl2ZVZpZXcoc3RhdGUpXG4gICAgICAgICAgOiBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpdGhEdXBsaWNhdGVWaWV3PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IFZbXSxcbiAgICBkdXBsaWNhdGVkVmlldzogVixcbiAgICBuZXdWaWV3OiBWLFxuICApOiBWW10ge1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gdmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gZHVwbGljYXRlZFZpZXcuaWQpO1xuICAgIGlmIChzb3VyY2VJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBbbmV3VmlldywgLi4udmlld3NdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi52aWV3cy5zbGljZSgwLCBzb3VyY2VJbmRleCArIDEpLFxuICAgICAgICBuZXdWaWV3LFxuICAgICAgICAuLi52aWV3cy5zbGljZShzb3VyY2VJbmRleCArIDEpLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRFbXB0eVN0YXRlTWVzc2FnZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgcGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHN0YXRlLmFsbC5zZWFyY2gpXG4gICAgICByZXR1cm4gYE5vICR7cGVybWlzc2lvbn0gdmlld3MgbWF0Y2hpbmcgXCIke3N0YXRlLmFsbC5zZWFyY2h9XCJgO1xuICAgIGVsc2UgcmV0dXJuIGBObyAke3Blcm1pc3Npb259IHZpZXdzYDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZpZXdPcmRlckNoYW5nZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgICBuZXdFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgKTogeyBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+OyBzaG91bGRTYXZlOiBib29sZWFuIH0ge1xuICAgIGlmIChwcmV2aW91c0VuYWJsZWRJbmRleCA9PT0gMCB8fCBuZXdFbmFibGVkSW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHN0YXRlLCBzaG91bGRTYXZlOiBmYWxzZSB9OyAvLyBLZWVwIHN5c3RlbSB2aWV3IChpbmRleCAwKSBpbiBwbGFjZVxuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFByZXZpb3VzSW5kZXggPSBtYXBFbmFibGVkSW5kZXhUb1ZpZXdJbmRleChcbiAgICAgIHN0YXRlLnZpZXdzLFxuICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXgsXG4gICAgKTtcbiAgICBjb25zdCBhY3R1YWxOZXdJbmRleCA9IG1hcEVuYWJsZWRJbmRleFRvVmlld0luZGV4KFxuICAgICAgc3RhdGUudmlld3MsXG4gICAgICBuZXdFbmFibGVkSW5kZXgsXG4gICAgKTtcblxuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS52aWV3c1thY3R1YWxQcmV2aW91c0luZGV4XTtcbiAgICBjb25zdCB3aXRob3V0SXRlbSA9IHN0YXRlLnZpZXdzLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gYWN0dWFsUHJldmlvdXNJbmRleCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHZpZXdzOiBbXG4gICAgICAgICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoMCwgYWN0dWFsTmV3SW5kZXgpLFxuICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoYWN0dWFsTmV3SW5kZXgpLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHNob3VsZFNhdmU6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZHVjZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgYWN0aW9uOiBBY3Rpb248VSwgVj4sXG4gICAgc291cmNlOiBTb3VyY2U8VSwgVj4sXG4gICAgc2F2ZTogU2F2ZTxVLCBWPixcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxVLCBWPixcbiAgICBjb3B5TGluazogQ29weUxpbms8VSwgVj4sXG4gICAgc2V0QWN0aXZlVmlld0lkOiBTZXRBY3RpdmVWaWV3SWQ8VSwgVj4sXG4gICk6IFByb21pc2U8Q29yZVN0YXRlPFUsIFY+PiB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSAnbG9hZCc6XG4gICAgICAgIGNvbnN0IHZpZXdzID0gYXdhaXQgc291cmNlKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgZGVmYXVsdFZpZXdJZDogdmlld3MuZmluZCh2ID0+IHYuZGVmYXVsdCk/LmlkID8/IG51bGwsXG4gICAgICAgICAgdmlld3MsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEFjdGl2ZVZpZXcnOiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBzdGF0ZS52aWV3cy5maW5kKHYgPT4gdi5pZCA9PT0gYWN0aW9uLmlkKTtcbiAgICAgICAgY29uc3Qgdmlld3MgPVxuICAgICAgICAgIGFjdGl2ZVZpZXcgJiYgIWFjdGl2ZVZpZXcuZW5hYmxlZFxuICAgICAgICAgICAgPyBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgICAgIHZpZXcuaWQgPT09IGFjdGlvbi5pZCA/IHsgLi4udmlldywgZW5hYmxlZDogdHJ1ZSB9IDogdmlldyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBzdGF0ZS52aWV3cztcbiAgICAgICAgLy8gSWYgZW5hYmxpbmcgdGhlIHZpZXcgY2hhbmdlZCB0aGUgdmlld3MsIHdlIG5lZWQgdG8gc2F2ZS5cbiAgICAgICAgaWYgKHZpZXdzICE9PSBzdGF0ZS52aWV3cykge1xuICAgICAgICAgIHNhdmUodmlld3MpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vdGlmeSB0aGUgY2FsbGVyIHRoYXQgdGhlIGFjdGl2ZSB2aWV3IGhhcyBjaGFuZ2VkXG4gICAgICAgIHNldEFjdGl2ZVZpZXdJZChhY3Rpb24uaWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aW9uLmlkLFxuICAgICAgICAgIHZpZXdzLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vdmVyZmxvdyxcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0RW5hYmxlZCc6IHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBzZXRFbmFibGVkKHN0YXRlLCBhY3Rpb24uaWQsIGFjdGlvbi5lbmFibGVkKTtcbiAgICAgICAgc2F2ZShuZXdTdGF0ZS52aWV3cyk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0Q29udGFpbmVyV2lkdGgnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBhY3Rpb24ud2lkdGgsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93UGlja2VyT3Blbic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgcGlja2VyT3BlbjogYWN0aW9uLm9wZW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiBhY3Rpb24ucXVlcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5xdWVyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd1cGRhdGVWaWV3Jzoge1xuICAgICAgICBjb25zdCB2aWV3cyA9IHN0YXRlLnZpZXdzLm1hcCh2aWV3ID0+XG4gICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWRcbiAgICAgICAgICAgID8gYWN0aW9uLnZpZXdcbiAgICAgICAgICAgIDogLy8gaWYgdGhlIGVkaXRlZCBhY3Rpb24gaXMgZGVmYXVsdCwgcmVzZXQgYW55IG90aGVyIGRlZmF1bHQgdGhhdCB3YXMgc2V0XG4gICAgICAgICAgICBhY3Rpb24udmlldy5kZWZhdWx0ICYmIHZpZXcuZGVmYXVsdFxuICAgICAgICAgICAgPyB7IC4uLnZpZXcsIGRlZmF1bHQ6IGZhbHNlIH1cbiAgICAgICAgICAgIDogdmlldyxcbiAgICAgICAgKTtcbiAgICAgICAgc2F2ZSh2aWV3cyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IHZpZXdzLFxuICAgICAgICAgIGRlZmF1bHRWaWV3SWQ6IHZpZXdzLmZpbmQodiA9PiB2LmRlZmF1bHQpPy5pZCA/PyBudWxsLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkZWxldGVWaWV3Jzoge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IGRlbGV0ZVZpZXcoc3RhdGUsIGFjdGlvbi52aWV3LmlkKTtcbiAgICAgICAgc2F2ZShuZXdTdGF0ZS52aWV3cyk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZHVwbGljYXRlVmlldyc6IHtcbiAgICAgICAgY29uc3QgbmV3VmlldyA9IGF3YWl0IGR1cGxpY2F0ZSh7IC4uLmFjdGlvbi52aWV3LCBkZWZhdWx0OiBmYWxzZSB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB2aWV3czogd2l0aER1cGxpY2F0ZVZpZXcoc3RhdGUudmlld3MsIGFjdGlvbi52aWV3LCBuZXdWaWV3KSxcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQ6IHtcbiAgICAgICAgICAgIGlkOiBuZXdWaWV3LmlkLFxuICAgICAgICAgICAgYXV0b1JlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lbnVDb250ZXh0OiBhY3Rpb24ubWVudUNvbnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY3RpdmVWaWV3SWQ6IG5ld1ZpZXcuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NvcHlMaW5rVG9WaWV3JzpcbiAgICAgICAgYXdhaXQgY29weUxpbmsoYWN0aW9uLnZpZXcpO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNhc2UgJ3ZpZXdPcmRlckNoYW5nZSc6IHtcbiAgICAgICAgY29uc3QgeyBzdGF0ZTogbmV3U3RhdGUsIHNob3VsZFNhdmUgfSA9IHZpZXdPcmRlckNoYW5nZShcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBhY3Rpb24ucHJldmlvdXNFbmFibGVkSW5kZXgsXG4gICAgICAgICAgYWN0aW9uLm5ld0VuYWJsZWRJbmRleCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHNob3VsZFNhdmUpIHtcbiAgICAgICAgICBzYXZlKG5ld1N0YXRlLnZpZXdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3NldEFsbFZpZXdzVG9nZ2xlJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmFsbCxcbiAgICAgICAgICAgIHByaXZhdGVPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3ByaXZhdGUnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnByaXZhdGVPcGVuLFxuICAgICAgICAgICAgc2hhcmVkT3BlbjpcbiAgICAgICAgICAgICAgYWN0aW9uLnBlcm1pc3Npb24gPT09ICdzaGFyZWQnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICBwdWJsaWNPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3B1YmxpYydcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwucHVibGljT3BlbixcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRFZGl0aW5nVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgZWRpdGluZ1ZpZXdDb250ZXh0OiBhY3Rpb24uY29udGV4dCxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0RGVsZXRpbmdWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBhY3Rpb24uY29udGV4dCxcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLy8vLy8vLy8vLy8vLy9cbiAgLy8gVXRpbGl0aWVzIC8vXG4gIC8vLy8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uVGl0bGUocGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocGVybWlzc2lvbikge1xuICAgICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICAgIHJldHVybiAnUHJpdmF0ZSc7XG4gICAgICBjYXNlICdzaGFyZWQnOlxuICAgICAgICByZXR1cm4gJ1NoYXJlZCc7XG4gICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICByZXR1cm4gJ1B1YmxpYyc7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbihwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7XG4gICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgcmV0dXJuICdPbmx5IHZpc2libGUgdG8geW91JztcbiAgICAgIGNhc2UgJ3NoYXJlZCc6XG4gICAgICAgIHJldHVybiAnT25seSB2aXNpYmxlIHRvIHRob3NlIHdpdGggYWNjZXNzJztcbiAgICAgIGNhc2UgJ3B1YmxpYyc6XG4gICAgICAgIHJldHVybiAnVmlzaWJsZSB0byBldmVyeW9uZSc7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzU2hhcmVkVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXc/OiBGdWxsVmlldzxVLCBWPixcbiAgKTogdmlldyBpcyBGdWxsVmlldzxVLCBWPiAmIHsgcGVybWlzc2lvbjogJ3NoYXJlZCc7IHNoYXJlZFVzZXJzOiBVW10gfSB7XG4gICAgcmV0dXJuIHZpZXc/LnBlcm1pc3Npb24gPT09ICdzaGFyZWQnO1xuICB9XG59XG4iXX0=
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hELE9BQU8sRUFDTCxXQUFXLEVBRVgsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxNQUFNLENBQUM7QUFLZCxNQUFNLEtBQVcsUUFBUSxDQWlyQnhCO0FBanJCRCxXQUFpQixRQUFRO0lBQ1Ysd0JBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFVLENBQUM7SUFHM0QscUJBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFVLENBQUM7SUE4SXRFLFNBQWdCLGFBQWEsQ0FBb0MsRUFDL0QsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLFFBQVEsRUFDUixPQUFPLEVBQ1AsZUFBZSxHQUNVO1FBQ3pCLE1BQU0sWUFBWSxHQUFvQjtZQUNwQyxLQUFLLEVBQUUsRUFBRTtZQUNULFlBQVksRUFBRSxJQUFJO1lBQ2xCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixRQUFRLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLEtBQUs7YUFDbEI7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2dCQUNo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WUFFSixLQUFLLGdCQUFnQjtnQkFDbkIsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1Isa0JBQWtCLEVBQUUsTUFBTSxDQUFDLE9BQU87aUJBQ25DLENBQUM7WUFFSixLQUFLLGlCQUFpQjtnQkFDcEIsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLE9BQU87aUJBQ3BDLENBQUM7U0FDTDtJQUNILENBQUM7SUFFRCxlQUFlO0lBQ2YsZUFBZTtJQUNmLGVBQWU7SUFFZixTQUFnQixrQkFBa0IsQ0FBQyxVQUEwQjtRQUMzRCxRQUFRLFVBQVUsRUFBRTtZQUNsQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFUZSwyQkFBa0IscUJBU2pDLENBQUE7SUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxVQUEwQjtRQUNqRSxRQUFRLFVBQVUsRUFBRTtZQUNsQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxxQkFBcUIsQ0FBQztZQUMvQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxtQ0FBbUMsQ0FBQztZQUM3QyxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxxQkFBcUIsQ0FBQztTQUNoQztJQUNILENBQUM7SUFUZSxpQ0FBd0IsMkJBU3ZDLENBQUE7SUFFRCxTQUFnQixZQUFZLENBQzFCLElBQXFCO1FBRXJCLE9BQU8sSUFBSSxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUplLHFCQUFZLGVBSTNCLENBQUE7QUFDSCxDQUFDLEVBanJCZ0IsUUFBUSxLQUFSLFFBQVEsUUFpckJ4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGdXNlLCB7IEZ1c2VSZXN1bHQsIElGdXNlT3B0aW9ucyB9IGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgZGVib3VuY2UsIGRlZmF1bHRzRGVlcCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGNvbm5lY3RhYmxlLFxuICBDb25uZWN0YWJsZSxcbiAgZnJvbSxcbiAgbWFwLFxuICBtZXJnZVNjYW4sXG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWVwUGFydGlhbCB9IGZyb20gJ3V0aWxpdHktdHlwZXMnO1xuaW1wb3J0IHsgUml2U2VsZWN0IH0gZnJvbSAnLi4vLi4vaW5wdXQvc2VsZWN0L3N0YXRlJztcbmltcG9ydCB7IEhpZ2hsaWdodENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Zpc3VhbGl6YXRpb24vaGlnaGxpZ2h0L2hpZ2hsaWdodC5jb21wb25lbnQnO1xuXG5leHBvcnQgbmFtZXNwYWNlIFJpdlZpZXdzIHtcbiAgZXhwb3J0IGNvbnN0IFZpZXdQZXJtaXNzaW9ucyA9IFsncHJpdmF0ZScsICdwdWJsaWMnLCAnc2hhcmVkJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFZpZXdQZXJtaXNzaW9uID0gKHR5cGVvZiBWaWV3UGVybWlzc2lvbnMpW251bWJlcl07XG5cbiAgZXhwb3J0IGNvbnN0IE1lbnVDb250ZXh0cyA9IFsndGFiJywgJ2FsbC12aWV3cycsICdvdmVyZmxvdyddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBNZW51Q29udGV4dCA9ICh0eXBlb2YgTWVudUNvbnRleHRzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCB0eXBlIFVzZXIgPSBSaXZTZWxlY3QuQmFzZU9wdGlvbjtcblxuICBleHBvcnQgdHlwZSBWaWV3PFUgZXh0ZW5kcyBVc2VyPiA9IHtcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZGVmYXVsdDogYm9vbGVhbjtcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICB9ICYgKFxuICAgIHwge1xuICAgICAgICBwZXJtaXNzaW9uOiAncHJpdmF0ZScgfCAncHVibGljJztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGVybWlzc2lvbjogJ3NoYXJlZCc7XG4gICAgICAgIHNoYXJlZFVzZXJzOiBVW107XG4gICAgICB9XG4gICk7XG5cbiAgZXhwb3J0IHR5cGUgRnVsbFZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IFYgJiB7XG4gICAgYWN0aXZlOiBib29sZWFuO1xuICAgIHN5c3RlbTogYm9vbGVhbjtcbiAgICB0aXRsZUhpZ2hsaWdodEluZGljZXM/OiBIaWdobGlnaHRDb21wb25lbnQuSGlnaGxpZ2h0SW5kaWNlc1tdO1xuICB9O1xuXG4gIC8vLy8vLy8vLy8vXG4gIC8vIFN0YXRlIC8vXG4gIC8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgQ29yZVN0YXRlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgdmlld3M6IFZbXTtcbiAgICBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIGRlZmF1bHRWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gICAgZWRpdGluZ1ZpZXdDb250ZXh0OiB7XG4gICAgICBpZDogVlsnaWQnXTtcbiAgICAgIGF1dG9SZW5hbWU6IGJvb2xlYW47XG4gICAgICBtZW51Q29udGV4dDogTWVudUNvbnRleHQ7XG4gICAgfSB8IG51bGw7XG4gICAgZGVsZXRpbmdWaWV3Q29udGV4dDogeyBpZDogVlsnaWQnXTsgbWVudUNvbnRleHQ6IE1lbnVDb250ZXh0IH0gfCBudWxsO1xuICAgIG92ZXJmbG93OiB7XG4gICAgICBzZWFyY2g6IHN0cmluZztcbiAgICAgIHBpY2tlck9wZW46IGJvb2xlYW47XG4gICAgfTtcbiAgICBhbGw6IHtcbiAgICAgIHNlYXJjaDogc3RyaW5nO1xuICAgICAgcHJpdmF0ZU9wZW46IGJvb2xlYW47XG4gICAgICBzaGFyZWRPcGVuOiBib29sZWFuO1xuICAgICAgcHVibGljT3BlbjogYm9vbGVhbjtcbiAgICB9O1xuICAgIHVzZXJTb3VyY2U6IFVzZXJTb3VyY2U8VT47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgRnVsbFN0YXRlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSBDb3JlU3RhdGU8VSwgVj4gJiB7XG4gICAgYWxsVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgZGlzcGxheWVkVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgZW5hYmxlZFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGFsbEVuYWJsZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICBhbGw6IHtcbiAgICAgIHByaXZhdGVWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICAgIHByaXZhdGVFbXB0eVN0YXRlTWVzc2FnZTogc3RyaW5nO1xuICAgICAgc2hhcmVkVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgICBzaGFyZWRFbXB0eVN0YXRlTWVzc2FnZTogc3RyaW5nO1xuICAgICAgcHVibGljVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgICBwdWJsaWNFbXB0eVN0YXRlTWVzc2FnZTogc3RyaW5nO1xuICAgIH07XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vL1xuICAvLyBBY3Rpb25zIC8vXG4gIC8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBBY3Rpb248VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9XG4gICAgfCB7IHR5cGU6ICdsb2FkJyB9XG4gICAgfCB7IHR5cGU6ICdzZXRBY3RpdmVWaWV3JzsgaWQ6IFZbJ2lkJ10gfVxuICAgIHwgeyB0eXBlOiAnc2V0RW5hYmxlZCc7IGlkOiBWWydpZCddOyBlbmFibGVkOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJzsgd2lkdGg6IG51bWJlciB9XG4gICAgfCB7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nOyBvcGVuOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3NldEFsbFZpZXdzU2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3VwZGF0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2RlbGV0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2R1cGxpY2F0ZVZpZXcnOyB2aWV3OiBWOyBtZW51Q29udGV4dDogTWVudUNvbnRleHQgfVxuICAgIHwgeyB0eXBlOiAnY29weUxpbmtUb1ZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ3NldEVkaXRpbmdWaWV3JzsgY29udGV4dDogQ29yZVN0YXRlPFUsIFY+WydlZGl0aW5nVmlld0NvbnRleHQnXSB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZXREZWxldGluZ1ZpZXcnO1xuICAgICAgICBjb250ZXh0OiBDb3JlU3RhdGU8VSwgVj5bJ2RlbGV0aW5nVmlld0NvbnRleHQnXTtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3ZpZXdPcmRlckNoYW5nZSc7XG4gICAgICAgIHByZXZpb3VzRW5hYmxlZEluZGV4OiBudW1iZXI7XG4gICAgICAgIG5ld0VuYWJsZWRJbmRleDogbnVtYmVyO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NUb2dnbGUnOyBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbjsgb3BlbjogYm9vbGVhbiB9O1xuXG4gIC8vLy8vLy8vLy8vL1xuICAvLyBTb3VyY2UgLy9cbiAgLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgU291cmNlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSAoKSA9PlxuICAgIHwgVltdXG4gICAgfCBQcm9taXNlPFZbXT47XG4gIGV4cG9ydCB0eXBlIFNhdmU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3czogVltdLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBleHBvcnQgdHlwZSBEdXBsaWNhdGU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3VG9EdXBsaWNhdGU6IFYsXG4gICkgPT4gViB8IFByb21pc2U8Vj47XG4gIGV4cG9ydCB0eXBlIFVzZXJTb3VyY2U8VSBleHRlbmRzIFVzZXI+ID0gKCkgPT4gVVtdIHwgUHJvbWlzZTxVW10+O1xuICBleHBvcnQgdHlwZSBDb3B5TGluazxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIHZpZXc6IFYsXG4gICkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIGV4cG9ydCB0eXBlIFNldEFjdGl2ZVZpZXdJZDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIGlkOiBWWydpZCddLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gTWFuYWdlciAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlcjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFUsIFY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGluaXRpYWxTdGF0ZT86IERlZXBQYXJ0aWFsPENvcmVTdGF0ZTxVLCBWPj47XG4gICAgZnVzZU9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Vj47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgQ3JlYXRlTWFuYWdlcklucHV0PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgc291cmNlOiBTb3VyY2U8VSwgVj47XG4gICAgc2F2ZTogU2F2ZTxVLCBWPjtcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxVLCBWPjtcbiAgICB1c2VyU291cmNlOiBVc2VyU291cmNlPFU+O1xuICAgIGNvcHlMaW5rOiBDb3B5TGluazxVLCBWPjtcbiAgICBzZXRBY3RpdmVWaWV3SWQ6IFNldEFjdGl2ZVZpZXdJZDxVLCBWPjtcbiAgICBvcHRpb25zPzogTWFuYWdlck9wdGlvbnM8VSwgVj47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+Pih7XG4gICAgc291cmNlLFxuICAgIHNhdmUsXG4gICAgZHVwbGljYXRlLFxuICAgIHVzZXJTb3VyY2UsXG4gICAgY29weUxpbmssXG4gICAgb3B0aW9ucyxcbiAgICBzZXRBY3RpdmVWaWV3SWQsXG4gIH06IENyZWF0ZU1hbmFnZXJJbnB1dDxVLCBWPik6IE1hbmFnZXI8VSwgVj4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFUsIFY+ID0ge1xuICAgICAgdmlld3M6IFtdLFxuICAgICAgYWN0aXZlVmlld0lkOiBudWxsLFxuICAgICAgZGVmYXVsdFZpZXdJZDogbnVsbCxcbiAgICAgIGNvbnRhaW5lcldpZHRoOiAwLFxuICAgICAgZWRpdGluZ1ZpZXdDb250ZXh0OiBudWxsLFxuICAgICAgZGVsZXRpbmdWaWV3Q29udGV4dDogbnVsbCxcbiAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHBpY2tlck9wZW46IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFsbDoge1xuICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICBwcml2YXRlT3BlbjogdHJ1ZSxcbiAgICAgICAgc2hhcmVkT3BlbjogdHJ1ZSxcbiAgICAgICAgcHVibGljT3BlbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB1c2VyU291cmNlLFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxVLCBWPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxVLCBWPj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIGNvbnN0IGNvcmVTdGF0ZTogT2JzZXJ2YWJsZTxDb3JlU3RhdGU8VSwgVj4+ID0gYWN0aW9ucy5waXBlKFxuICAgICAgbWVyZ2VTY2FuKFxuICAgICAgICAoc3RhdGUsIGFjdGlvbikgPT5cbiAgICAgICAgICBmcm9tKFxuICAgICAgICAgICAgcmVkdWNlKFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgIGRlYm91bmNlKHNhdmUsIDIwMCksXG4gICAgICAgICAgICAgIGR1cGxpY2F0ZSxcbiAgICAgICAgICAgICAgY29weUxpbmssXG4gICAgICAgICAgICAgIHNldEFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICAgIHN0YXJ0V2l0aChkZWZhdWx0ZWRJbml0aWFsU3RhdGUpLFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PiA9IGNvbm5lY3RhYmxlKFxuICAgICAgY29yZVN0YXRlLnBpcGUoXG4gICAgICAgIG1hcChzID0+IHtcbiAgICAgICAgICAvLyBJZiBmb3Igc29tZSByZWFzb24gdGhlIGFjdGl2ZSB2aWV3IGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCwgd2UnbGxcbiAgICAgICAgICAvLyBkZWZhdWx0IHRvIG1ha2luZyB0aGUgZmlyc3QgdmlldyBhY3RpdmUgaW5zdGVhZC5cbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3OiBWIHwgdW5kZWZpbmVkID0gcy52aWV3cy5maW5kKFxuICAgICAgICAgICAgdmlldyA9PiB2aWV3LmVuYWJsZWQgJiYgdmlldy5pZCA9PT0gcy5hY3RpdmVWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGFsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdID0gcy52aWV3cy5tYXAoKHZpZXcsIGkpID0+ICh7XG4gICAgICAgICAgICAuLi52aWV3LFxuICAgICAgICAgICAgZW5hYmxlZDogdmlldy5lbmFibGVkIHx8IGkgPT09IDAsXG4gICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZVZpZXcgPyBhY3RpdmVWaWV3LmlkID09PSB2aWV3LmlkIDogaSA9PT0gMCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHZpZXcuaWQgPT09IHMuZGVmYXVsdFZpZXdJZCxcbiAgICAgICAgICAgIHN5c3RlbTogaSA9PT0gMCxcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBjb25zdCBhbGxFbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3MoYWxsVmlld3MpO1xuXG4gICAgICAgICAgY29uc3QgZGlzcGxheWVkVmlld3MgPSBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3cyhcbiAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4KHMpLFxuICAgICAgICAgICAgcy5hY3RpdmVWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IHMub3ZlcmZsb3cuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKFxuICAgICAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgICAgICBzLm92ZXJmbG93LnNlYXJjaCxcbiAgICAgICAgICAgICAgICBvcHRpb25zPy5mdXNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBhbGxFbmFibGVkVmlld3M7XG5cbiAgICAgICAgICBjb25zdCBhbGxWaWV3c0ZpbHRlcmVkID0gcy5hbGwuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKGFsbFZpZXdzLCBzLmFsbC5zZWFyY2gsIG9wdGlvbnM/LmZ1c2VPcHRpb25zKVxuICAgICAgICAgICAgOiBhbGxWaWV3cztcblxuICAgICAgICAgIGNvbnN0IHNlYXJjaGluZ0FsbFZpZXdzID0gISFzLmFsbC5zZWFyY2g7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIGFsbFZpZXdzLFxuICAgICAgICAgICAgZGlzcGxheWVkVmlld3MsXG4gICAgICAgICAgICBlbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGxFbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgICAgLi4ucy5hbGwsXG4gICAgICAgICAgICAgIHByaXZhdGVPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgICAgcHJpdmF0ZVZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHJpdmF0ZScpLFxuICAgICAgICAgICAgICBwcml2YXRlRW1wdHlTdGF0ZU1lc3NhZ2U6IGdldEVtcHR5U3RhdGVNZXNzYWdlKHMsICdwcml2YXRlJyksXG4gICAgICAgICAgICAgIHNoYXJlZE9wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICAgIHNoYXJlZFZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAnc2hhcmVkJyksXG4gICAgICAgICAgICAgIHNoYXJlZEVtcHR5U3RhdGVNZXNzYWdlOiBnZXRFbXB0eVN0YXRlTWVzc2FnZShzLCAnc2hhcmVkJyksXG4gICAgICAgICAgICAgIHB1YmxpY09wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnB1YmxpY09wZW4sXG4gICAgICAgICAgICAgIHB1YmxpY1ZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHVibGljJyksXG4gICAgICAgICAgICAgIHB1YmxpY0VtcHR5U3RhdGVNZXNzYWdlOiBnZXRFbXB0eVN0YXRlTWVzc2FnZShzLCAncHVibGljJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdG9yOiAoKSA9PiBuZXcgUmVwbGF5U3ViamVjdCgxKSxcbiAgICAgICAgcmVzZXRPbkRpc2Nvbm5lY3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuICAgIHN0YXRlLmNvbm5lY3QoKTtcblxuICAgIC8vIExvYWQgdGhlIHZpZXdzIGltbWVkaWF0ZWx5XG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgcmVkdWNlciAod2l0aCBoZWxwZXJzKSAvL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4odmlld3M6IFZbXSk6IFZbXTtcbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICk6IEZ1bGxWaWV3PFUsIFY+W10ge1xuICAgIHJldHVybiB2aWV3cy5maWx0ZXIoKHYsIGkpID0+IHYuZW5hYmxlZCB8fCBpID09PSAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGVzIGFuIGluZGV4IGluIHRoZSBlbmFibGVkIHZpZXdzIGxpc3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXhcbiAgICogaW4gdGhlIGZ1bGwgdmlld3MgbGlzdC4gVGhpcyBpcyB1c2VkIHRvIHJlc29sdmUgVUkgaW5kaWNlcyAod2hpY2ggb25seVxuICAgKiBzaG93IGVuYWJsZWQgdmlld3MpIHRvIHN0YXRlLnZpZXdzIGluZGljZXMgKHdoaWNoIGluY2x1ZGVzIGFsbCB2aWV3cykuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBFbmFibGVkSW5kZXhUb1ZpZXdJbmRleDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBWW10sXG4gICAgZW5hYmxlZEluZGV4OiBudW1iZXIsXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gZ2V0RW5hYmxlZFZpZXdzKHZpZXdzKTtcblxuICAgIGNvbnN0IHRhcmdldFZpZXcgPSBlbmFibGVkVmlld3NbZW5hYmxlZEluZGV4XTtcbiAgICBpZiAoIXRhcmdldFZpZXcpIHJldHVybiBlbmFibGVkSW5kZXg7XG5cbiAgICBjb25zdCB2aWV3SW5kZXggPSB2aWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSB0YXJnZXRWaWV3LmlkKTtcbiAgICByZXR1cm4gdmlld0luZGV4ID09PSAtMSA/IGVuYWJsZWRJbmRleCA6IHZpZXdJbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxVLCBWPixcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3Moc3RhdGUudmlld3MpO1xuXG4gICAgLy8gVGFicyBoYXZlIGEgbWluaW11bSB3aWR0aCBvZiA5MnB4LlxuICAgIGNvbnN0IHBvc3NpYmxlU2xvdENvdW50ID0gTWF0aC5mbG9vcihzdGF0ZS5jb250YWluZXJXaWR0aCAvIDkyKTtcblxuICAgIC8vIFRoZSBcImFsbCB2aWV3c1wiIHNpZGViYXIgdHJpZ2dlciB0YWtlcyB1cCBvbmUgc2xvdC5cbiAgICBjb25zdCBhdmFpbGFibGVTbG90Q291bnQgPSBwb3NzaWJsZVNsb3RDb3VudCAtIDE7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdGFicywgdGhlIFwiTiBtb3JlXCIgdHJpZ2dlciB0YWtlcyB1cCBvbmUgc2xvdCBhcyB3ZWxsLlxuICAgIC8vIEJ1dCB3ZSB3YW50IHRvIGF2b2lkIHRoZSBcIjEgbW9yZVwiIGNhc2UsIHNvIHdlIG9ubHkgdXNlIGEgc2xvdCBmb3IgXCJOIG1vcmVcIiBpZiBOICE9IDEuXG4gICAgaWYgKGF2YWlsYWJsZVNsb3RDb3VudCA+PSBlbmFibGVkVmlld3MubGVuZ3RoKSByZXR1cm4gZW5hYmxlZFZpZXdzLmxlbmd0aDtcbiAgICBlbHNlIHJldHVybiBhdmFpbGFibGVTbG90Q291bnQgLSAxOyAvLyB0aGUgXCJOIG1vcmVcIiB1c2VzIHVwIGEgc2xvdC5cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGN1bGF0ZURpc3BsYXllZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgZnVsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICAgIG92ZXJmbG93Vmlld0luZGV4OiBudW1iZXIsXG4gICAgYWN0aXZlVmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ2FjdGl2ZVZpZXdJZCddLFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRWaWV3cyA9IGZ1bGxWaWV3cy5zbGljZSgwLCBvdmVyZmxvd1ZpZXdJbmRleCk7XG5cbiAgICBjb25zdCBhY3RpdmVWaWV3SW5EaXNwbGF5ID0gZGlzcGxheWVkVmlld3Muc29tZShcbiAgICAgIHZpZXcgPT4gdmlldy5pZCA9PT0gYWN0aXZlVmlld0lkLFxuICAgICk7XG5cbiAgICBpZiAoIWFjdGl2ZVZpZXdJbkRpc3BsYXkgJiYgYWN0aXZlVmlld0lkICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gZnVsbFZpZXdzLmZpbmQodmlldyA9PiB2aWV3LmlkID09PSBhY3RpdmVWaWV3SWQpO1xuICAgICAgaWYgKGFjdGl2ZVZpZXcgJiYgZGlzcGxheWVkVmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gWy4uLmRpc3BsYXllZFZpZXdzLnNsaWNlKDAsIC0xKSwgYWN0aXZlVmlld107XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3BsYXllZFZpZXdzO1xuICB9XG5cbiAgZnVuY3Rpb24gdmlld3NCeVBlcm1pc3Npb248VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogRnVsbFZpZXc8VSwgVj5bXSxcbiAgICBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbixcbiAgKTogRnVsbFZpZXc8VSwgVj5bXSB7XG4gICAgcmV0dXJuIHNvcnRCeShcbiAgICAgIHZpZXdzLmZpbHRlcih2aWV3ID0+IHZpZXcucGVybWlzc2lvbiA9PT0gcGVybWlzc2lvbiksXG4gICAgICBbdiA9PiAhdi5zeXN0ZW0sICd0aXRsZSddLFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBzZWFyY2hWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IElGdXNlT3B0aW9uczxWPixcbiAgKTogRnVsbFZpZXc8VSwgVj5bXSB7XG4gICAgY29uc3QgZnVzZSA9IG5ldyBGdXNlKHZpZXdzLCB7XG4gICAgICB0aHJlc2hvbGQ6IDAuMixcbiAgICAgIGtleXM6IFsndGl0bGUnXSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1hdGNoZWRPcHRpb25zOiBGdXNlUmVzdWx0PEZ1bGxWaWV3PFUsIFY+PltdID0gZnVzZS5zZWFyY2gocXVlcnkpO1xuXG4gICAgcmV0dXJuIG1hdGNoZWRPcHRpb25zLm1hcChyZXN1bHQgPT4gKHtcbiAgICAgIC4uLnJlc3VsdC5pdGVtLFxuICAgICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzOiBbXG4gICAgICAgIC4uLihyZXN1bHQubWF0Y2hlcz8uZmluZChtYXRjaCA9PiBtYXRjaC5rZXkgPT09ICd0aXRsZScpPy5pbmRpY2VzID8/XG4gICAgICAgICAgW10pLFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROZXh0QmVzdEFjdGl2ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICApOiBWWydpZCddIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3Moc3RhdGUudmlld3MpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPSBlbmFibGVkVmlld3MuZmluZEluZGV4KFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgKTtcblxuICAgIGlmIChjdXJyZW50QWN0aXZlVmlld0luZGV4ID09PSAtMSkgcmV0dXJuIGVuYWJsZWRWaWV3c1swXS5pZDtcbiAgICByZXR1cm4gKFxuICAgICAgZW5hYmxlZFZpZXdzW2N1cnJlbnRBY3RpdmVWaWV3SW5kZXggKyAxXT8uaWQgPz9cbiAgICAgIGVuYWJsZWRWaWV3c1tjdXJyZW50QWN0aXZlVmlld0luZGV4IC0gMV0/LmlkID8/XG4gICAgICBlbmFibGVkVmlld3NbMF0uaWRcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVsZXRlVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgaWQ6IFZbJ2lkJ10sXG4gICk6IENvcmVTdGF0ZTxVLCBWPiB7XG4gICAgY29uc3QgYWN0aXZlVmlld0lkID1cbiAgICAgIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgPyBnZXROZXh0QmVzdEFjdGl2ZVZpZXcoc3RhdGUpXG4gICAgICAgIDogc3RhdGUuYWN0aXZlVmlld0lkO1xuICAgIGNvbnN0IHZpZXdzID0gc3RhdGUudmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5pZCAhPT0gaWQpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzLFxuICAgICAgYWN0aXZlVmlld0lkLFxuICAgICAgZGVsZXRpbmdWaWV3Q29udGV4dDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0RW5hYmxlZDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgaWQ6IFZbJ2lkJ10sXG4gICAgZW5hYmxlZDogYm9vbGVhbixcbiAgKTogQ29yZVN0YXRlPFUsIFY+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB2aWV3czogc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgdmlldy5pZCA9PT0gaWQgPyB7IC4uLnZpZXcsIGVuYWJsZWQgfSA6IHZpZXcsXG4gICAgICApLFxuICAgICAgYWN0aXZlVmlld0lkOlxuICAgICAgICAhZW5hYmxlZCAmJiBzdGF0ZS5hY3RpdmVWaWV3SWQgPT09IGlkXG4gICAgICAgICAgPyBnZXROZXh0QmVzdEFjdGl2ZVZpZXcoc3RhdGUpXG4gICAgICAgICAgOiBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpdGhEdXBsaWNhdGVWaWV3PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IFZbXSxcbiAgICBkdXBsaWNhdGVkVmlldzogVixcbiAgICBuZXdWaWV3OiBWLFxuICApOiBWW10ge1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gdmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gZHVwbGljYXRlZFZpZXcuaWQpO1xuICAgIGlmIChzb3VyY2VJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBbbmV3VmlldywgLi4udmlld3NdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi52aWV3cy5zbGljZSgwLCBzb3VyY2VJbmRleCArIDEpLFxuICAgICAgICBuZXdWaWV3LFxuICAgICAgICAuLi52aWV3cy5zbGljZShzb3VyY2VJbmRleCArIDEpLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRFbXB0eVN0YXRlTWVzc2FnZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgcGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHN0YXRlLmFsbC5zZWFyY2gpXG4gICAgICByZXR1cm4gYE5vICR7cGVybWlzc2lvbn0gdmlld3MgbWF0Y2hpbmcgXCIke3N0YXRlLmFsbC5zZWFyY2h9XCJgO1xuICAgIGVsc2UgcmV0dXJuIGBObyAke3Blcm1pc3Npb259IHZpZXdzYDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZpZXdPcmRlckNoYW5nZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgICBuZXdFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgKTogeyBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+OyBzaG91bGRTYXZlOiBib29sZWFuIH0ge1xuICAgIGlmIChwcmV2aW91c0VuYWJsZWRJbmRleCA9PT0gMCB8fCBuZXdFbmFibGVkSW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHN0YXRlLCBzaG91bGRTYXZlOiBmYWxzZSB9OyAvLyBLZWVwIHN5c3RlbSB2aWV3IChpbmRleCAwKSBpbiBwbGFjZVxuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFByZXZpb3VzSW5kZXggPSBtYXBFbmFibGVkSW5kZXhUb1ZpZXdJbmRleChcbiAgICAgIHN0YXRlLnZpZXdzLFxuICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXgsXG4gICAgKTtcbiAgICBjb25zdCBhY3R1YWxOZXdJbmRleCA9IG1hcEVuYWJsZWRJbmRleFRvVmlld0luZGV4KFxuICAgICAgc3RhdGUudmlld3MsXG4gICAgICBuZXdFbmFibGVkSW5kZXgsXG4gICAgKTtcblxuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS52aWV3c1thY3R1YWxQcmV2aW91c0luZGV4XTtcbiAgICBjb25zdCB3aXRob3V0SXRlbSA9IHN0YXRlLnZpZXdzLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gYWN0dWFsUHJldmlvdXNJbmRleCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHZpZXdzOiBbXG4gICAgICAgICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoMCwgYWN0dWFsTmV3SW5kZXgpLFxuICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoYWN0dWFsTmV3SW5kZXgpLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHNob3VsZFNhdmU6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZHVjZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgYWN0aW9uOiBBY3Rpb248VSwgVj4sXG4gICAgc291cmNlOiBTb3VyY2U8VSwgVj4sXG4gICAgc2F2ZTogU2F2ZTxVLCBWPixcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxVLCBWPixcbiAgICBjb3B5TGluazogQ29weUxpbms8VSwgVj4sXG4gICAgc2V0QWN0aXZlVmlld0lkOiBTZXRBY3RpdmVWaWV3SWQ8VSwgVj4sXG4gICk6IFByb21pc2U8Q29yZVN0YXRlPFUsIFY+PiB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSAnbG9hZCc6XG4gICAgICAgIGNvbnN0IHZpZXdzID0gYXdhaXQgc291cmNlKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgZGVmYXVsdFZpZXdJZDogdmlld3MuZmluZCh2ID0+IHYuZGVmYXVsdCk/LmlkID8/IG51bGwsXG4gICAgICAgICAgdmlld3MsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEFjdGl2ZVZpZXcnOiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBzdGF0ZS52aWV3cy5maW5kKHYgPT4gdi5pZCA9PT0gYWN0aW9uLmlkKTtcbiAgICAgICAgY29uc3Qgdmlld3MgPVxuICAgICAgICAgIGFjdGl2ZVZpZXcgJiYgIWFjdGl2ZVZpZXcuZW5hYmxlZFxuICAgICAgICAgICAgPyBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgICAgIHZpZXcuaWQgPT09IGFjdGlvbi5pZCA/IHsgLi4udmlldywgZW5hYmxlZDogdHJ1ZSB9IDogdmlldyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBzdGF0ZS52aWV3cztcbiAgICAgICAgLy8gSWYgZW5hYmxpbmcgdGhlIHZpZXcgY2hhbmdlZCB0aGUgdmlld3MsIHdlIG5lZWQgdG8gc2F2ZS5cbiAgICAgICAgaWYgKHZpZXdzICE9PSBzdGF0ZS52aWV3cykge1xuICAgICAgICAgIHNhdmUodmlld3MpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vdGlmeSB0aGUgY2FsbGVyIHRoYXQgdGhlIGFjdGl2ZSB2aWV3IGhhcyBjaGFuZ2VkXG4gICAgICAgIHNldEFjdGl2ZVZpZXdJZChhY3Rpb24uaWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aW9uLmlkLFxuICAgICAgICAgIHZpZXdzLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vdmVyZmxvdyxcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0RW5hYmxlZCc6IHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBzZXRFbmFibGVkKHN0YXRlLCBhY3Rpb24uaWQsIGFjdGlvbi5lbmFibGVkKTtcbiAgICAgICAgc2F2ZShuZXdTdGF0ZS52aWV3cyk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0Q29udGFpbmVyV2lkdGgnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBhY3Rpb24ud2lkdGgsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93UGlja2VyT3Blbic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgcGlja2VyT3BlbjogYWN0aW9uLm9wZW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiBhY3Rpb24ucXVlcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5xdWVyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd1cGRhdGVWaWV3Jzoge1xuICAgICAgICBjb25zdCB2aWV3cyA9IHN0YXRlLnZpZXdzLm1hcCh2aWV3ID0+XG4gICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWRcbiAgICAgICAgICAgID8gYWN0aW9uLnZpZXdcbiAgICAgICAgICAgIDogLy8gaWYgdGhlIGVkaXRlZCBhY3Rpb24gaXMgZGVmYXVsdCwgcmVzZXQgYW55IG90aGVyIGRlZmF1bHQgdGhhdCB3YXMgc2V0XG4gICAgICAgICAgICBhY3Rpb24udmlldy5kZWZhdWx0ICYmIHZpZXcuZGVmYXVsdFxuICAgICAgICAgICAgPyB7IC4uLnZpZXcsIGRlZmF1bHQ6IGZhbHNlIH1cbiAgICAgICAgICAgIDogdmlldyxcbiAgICAgICAgKTtcbiAgICAgICAgc2F2ZSh2aWV3cyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IHZpZXdzLFxuICAgICAgICAgIGRlZmF1bHRWaWV3SWQ6IHZpZXdzLmZpbmQodiA9PiB2LmRlZmF1bHQpPy5pZCA/PyBudWxsLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkZWxldGVWaWV3Jzoge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IGRlbGV0ZVZpZXcoc3RhdGUsIGFjdGlvbi52aWV3LmlkKTtcbiAgICAgICAgc2F2ZShuZXdTdGF0ZS52aWV3cyk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZHVwbGljYXRlVmlldyc6IHtcbiAgICAgICAgY29uc3QgbmV3VmlldyA9IGF3YWl0IGR1cGxpY2F0ZSh7IC4uLmFjdGlvbi52aWV3LCBkZWZhdWx0OiBmYWxzZSB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB2aWV3czogd2l0aER1cGxpY2F0ZVZpZXcoc3RhdGUudmlld3MsIGFjdGlvbi52aWV3LCBuZXdWaWV3KSxcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQ6IHtcbiAgICAgICAgICAgIGlkOiBuZXdWaWV3LmlkLFxuICAgICAgICAgICAgYXV0b1JlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lbnVDb250ZXh0OiBhY3Rpb24ubWVudUNvbnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY3RpdmVWaWV3SWQ6IG5ld1ZpZXcuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NvcHlMaW5rVG9WaWV3JzpcbiAgICAgICAgYXdhaXQgY29weUxpbmsoYWN0aW9uLnZpZXcpO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNhc2UgJ3ZpZXdPcmRlckNoYW5nZSc6IHtcbiAgICAgICAgY29uc3QgeyBzdGF0ZTogbmV3U3RhdGUsIHNob3VsZFNhdmUgfSA9IHZpZXdPcmRlckNoYW5nZShcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBhY3Rpb24ucHJldmlvdXNFbmFibGVkSW5kZXgsXG4gICAgICAgICAgYWN0aW9uLm5ld0VuYWJsZWRJbmRleCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHNob3VsZFNhdmUpIHtcbiAgICAgICAgICBzYXZlKG5ld1N0YXRlLnZpZXdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3NldEFsbFZpZXdzVG9nZ2xlJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmFsbCxcbiAgICAgICAgICAgIHByaXZhdGVPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3ByaXZhdGUnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnByaXZhdGVPcGVuLFxuICAgICAgICAgICAgc2hhcmVkT3BlbjpcbiAgICAgICAgICAgICAgYWN0aW9uLnBlcm1pc3Npb24gPT09ICdzaGFyZWQnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICBwdWJsaWNPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3B1YmxpYydcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwucHVibGljT3BlbixcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRFZGl0aW5nVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgZWRpdGluZ1ZpZXdDb250ZXh0OiBhY3Rpb24uY29udGV4dCxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0RGVsZXRpbmdWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBhY3Rpb24uY29udGV4dCxcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLy8vLy8vLy8vLy8vLy9cbiAgLy8gVXRpbGl0aWVzIC8vXG4gIC8vLy8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uVGl0bGUocGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocGVybWlzc2lvbikge1xuICAgICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICAgIHJldHVybiAnUHJpdmF0ZSc7XG4gICAgICBjYXNlICdzaGFyZWQnOlxuICAgICAgICByZXR1cm4gJ1NoYXJlZCc7XG4gICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICByZXR1cm4gJ1B1YmxpYyc7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbihwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7XG4gICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgcmV0dXJuICdPbmx5IHZpc2libGUgdG8geW91JztcbiAgICAgIGNhc2UgJ3NoYXJlZCc6XG4gICAgICAgIHJldHVybiAnT25seSB2aXNpYmxlIHRvIHRob3NlIHdpdGggYWNjZXNzJztcbiAgICAgIGNhc2UgJ3B1YmxpYyc6XG4gICAgICAgIHJldHVybiAnVmlzaWJsZSB0byBldmVyeW9uZSc7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzU2hhcmVkVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXc/OiBGdWxsVmlldzxVLCBWPixcbiAgKTogdmlldyBpcyBGdWxsVmlldzxVLCBWPiAmIHsgcGVybWlzc2lvbjogJ3NoYXJlZCc7IHNoYXJlZFVzZXJzOiBVW10gfSB7XG4gICAgcmV0dXJuIHZpZXc/LnBlcm1pc3Npb24gPT09ICdzaGFyZWQnO1xuICB9XG59XG4iXX0=
|
|
@@ -50,10 +50,10 @@ export class ViewsComponent {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
ViewsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
ViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ViewsComponent, selector: "riv-views", inputs: { manager: "manager", sideSheetTopOffset: "sideSheetTopOffset" }, viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: ["overflowTrigger"], descendants: true, read: ElementRef }, { propertyName: "activeTab", first: true, predicate: ["activeTab"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div\n #activeTab\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"menu-wrapper\" rivTruncate>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.enabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"i > 0\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child){margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.menu-wrapper{display:inline-flex}.active-menu,.menu-trigger{color:var(--type-light-link-hover);max-width:100%;cursor:pointer}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AllViewsModalComponent, selector: "riv-all-views-modal", inputs: ["manager", "topOffset"], outputs: ["close"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i8.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "directive", type: i9.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i10.ToastComponent, selector: "riv-toast", inputs: ["variant", "icon"], outputs: ["close"] }, { kind: "component", type: i11.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i12.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "component", type: i13.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i14.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
53
|
+
ViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ViewsComponent, selector: "riv-views", inputs: { manager: "manager", sideSheetTopOffset: "sideSheetTopOffset" }, viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: ["overflowTrigger"], descendants: true, read: ElementRef }, { propertyName: "activeTab", first: true, predicate: ["activeTab"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div\n #activeTab\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"menu-wrapper\" rivTruncate>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"i > 0\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child){margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.menu-wrapper{display:inline-flex}.active-menu,.menu-trigger{color:var(--type-light-link-hover);max-width:100%;cursor:pointer}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AllViewsModalComponent, selector: "riv-all-views-modal", inputs: ["manager", "topOffset"], outputs: ["close"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i8.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "directive", type: i9.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i10.ToastComponent, selector: "riv-toast", inputs: ["variant", "icon"], outputs: ["close"] }, { kind: "component", type: i11.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i12.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "component", type: i13.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i14.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
54
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewsComponent, decorators: [{
|
|
55
55
|
type: Component,
|
|
56
|
-
args: [{ selector: 'riv-views', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div\n #activeTab\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"menu-wrapper\" rivTruncate>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.
|
|
56
|
+
args: [{ selector: 'riv-views', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div\n #activeTab\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"menu-wrapper\" rivTruncate>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"i > 0\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child){margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.menu-wrapper{display:inline-flex}.active-menu,.menu-trigger{color:var(--type-light-link-hover);max-width:100%;cursor:pointer}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}\n"] }]
|
|
57
57
|
}], propDecorators: { manager: [{
|
|
58
58
|
type: Input
|
|
59
59
|
}], sideSheetTopOffset: [{
|
|
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
65
65
|
type: ViewChild,
|
|
66
66
|
args: ['activeTab', { read: ElementRef }]
|
|
67
67
|
}] } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbmF2aWdhdGlvbi92aWV3cy92aWV3cy92aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXdzL3ZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTL0QsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFhRSx1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUFReEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFckMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFrQixJQUFJLENBQUM7UUF3QjFDLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVlsQyxjQUFTLEdBQTZDLENBQ3BELENBQVMsRUFDVCxDQUEwQixFQUMxQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNYO0lBdENDLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7O1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFhO1FBQ2hCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUU7WUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDMUMsZUFBZSxFQUFFLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFJRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FDOUIsSUFBSSxDQUFDLE9BQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN4QixNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsRUFDL0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNoQixFQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN4QyxDQUFDO0lBQ0osQ0FBQzs7MkdBcERVLGNBQWM7K0ZBQWQsY0FBYywwTkFTYSxVQUFVLGlHQUdoQixVQUFVLDZCQzlCNUMsdS9NQXdNQTsyRkR0TGEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU07OEJBTS9DLE9BQU87c0JBRE4sS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJbEQsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdmlld3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3cy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3c0NvbXBvbmVudDxVIGV4dGVuZHMgUml2Vmlld3MuVXNlciwgViBleHRlbmRzIFJpdlZpZXdzLlZpZXc8VT4+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZWaWV3cy5NYW5hZ2VyPFUsIFY+O1xuXG4gIEBJbnB1dCgpXG4gIHNpZGVTaGVldFRvcE9mZnNldDogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdvdmVyZmxvd1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgb3ZlcmZsb3dUcmlnZ2VyPzogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdhY3RpdmVUYWInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgYWN0aXZlVGFiPzogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgc2hvd0FsbFZpZXdzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZHJhZ2dlZFRhYkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgZHJhZ2dlZE92ZXJUYWJJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgZHJhZ1N0YXJ0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPiAwKSB0aGlzLmRyYWdnZWRUYWJJbmRleCA9IGluZGV4O1xuICB9XG5cbiAgZHJhZ092ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCA+IDApIHRoaXMuZHJhZ2dlZE92ZXJUYWJJbmRleCA9IGluZGV4O1xuICAgIGVsc2UgdGhpcy5kcmFnZ2VkT3ZlclRhYkluZGV4ID0gbnVsbDtcbiAgfVxuXG4gIGRyb3AoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYWdnZWRUYWJJbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoe1xuICAgICAgICB0eXBlOiAndmlld09yZGVyQ2hhbmdlJyxcbiAgICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IHRoaXMuZHJhZ2dlZFRhYkluZGV4LFxuICAgICAgICBuZXdFbmFibGVkSW5kZXg6IGluZGV4LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kcmFnZ2VkVGFiSW5kZXggPSBudWxsO1xuICAgIHRoaXMuZHJhZ2dlZE92ZXJUYWJJbmRleCA9IG51bGw7XG4gIH1cblxuICB0b2FzdENsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHNob3dMaW5rQ29waWVkVG9hc3Q/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNob3dMaW5rQ29waWVkVG9hc3QgPSBtZXJnZShcbiAgICAgIHRoaXMubWFuYWdlciEuYWN0aW9ucy5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgdHlwZSB9KSA9PiB0eXBlID09PSAnY29weUxpbmtUb1ZpZXcnKSxcbiAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudG9hc3RDbG9zZWQucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICApO1xuICB9XG5cbiAgdHJhY2tCeUlkOiBUcmFja0J5RnVuY3Rpb248Uml2Vmlld3MuRnVsbFZpZXc8VSwgVj4+ID0gKFxuICAgIF86IG51bWJlcixcbiAgICB2OiBSaXZWaWV3cy5GdWxsVmlldzxVLCBWPixcbiAgKSA9PiB2LmlkO1xufVxuIiwiPGRpdlxuICAocml2Q2xpZW50U2l6ZSk9XCJcbiAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJywgd2lkdGg6ICRldmVudC53aWR0aCB9KVxuICBcIlxuICBjbGFzcz1cImNvbnRhaW5lclwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYW5hZ2VyPy5zdGF0ZSB8IGFzeW5jOyBsZXQgc1wiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIHMuZGlzcGxheWVkVmlld3M7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcuYWN0aXZlOyBlbHNlIGluYWN0aXZlVGFiXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjYWN0aXZlVGFiXG4gICAgICAgICAgY2xhc3M9XCJ0YWIgYWN0aXZlXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dpbmddPVwiZHJhZ2dlZFRhYkluZGV4ID09PSBpXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWxlZnRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA+IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItcmlnaHRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA8IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cImkgPiAwXCJcbiAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydChpKVwiXG4gICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgKGRyYWdvdmVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBkcmFnT3ZlcihpKVwiXG4gICAgICAgICAgKGRyb3ApPVwiZHJvcChpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwidGFiLXJlb3JkZXJcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS13cmFwcGVyXCIgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICA8cml2LXZpZXctbWVudVxuICAgICAgICAgICAgICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgICAgIFttZW51Q29udGV4dF09XCIndGFiJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlLW1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW51LXRyaWdnZXJcIiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcml2LXZpZXctbWVudT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW5hY3RpdmVUYWI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInRhYlwiXG4gICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgW2NsYXNzLmRyYWdnZWQtb3Zlci1sZWZ0XT1cIlxuICAgICAgICAgICAgZHJhZ2dlZE92ZXJUYWJJbmRleCA9PT0gaSAmJlxuICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPiBpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLXJpZ2h0XT1cIlxuICAgICAgICAgICAgZHJhZ2dlZE92ZXJUYWJJbmRleCA9PT0gaSAmJlxuICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiaSA+IDBcIlxuICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoaSlcIlxuICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSlcIlxuICAgICAgICAgIChkcm9wKT1cImRyb3AoaSlcIlxuICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0QWN0aXZlVmlldycsIGlkOiB2aWV3LmlkIH0pXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWItcmVvcmRlclwiXG4gICAgICAgICAgICBbbmFtZV09XCInUmVvcmRlcidcIlxuICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgIDxzcGFuIHJpdlRydW5jYXRlPlxuICAgICAgICAgICAge3sgdmlldy50aXRsZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwicy5lbmFibGVkVmlld3MubGVuZ3RoIC0gcy5kaXNwbGF5ZWRWaWV3cy5sZW5ndGg7IGxldCBjb3VudFwiXG4gICAgICBjbGFzcz1cInRhYiBvdmVyZmxvd1wiXG4gICAgICByaXZUcnVuY2F0ZVxuICAgICAgI292ZXJmbG93VHJpZ2dlclxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsIG9wZW46IHRydWUgfSlcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgY291bnQgfCByaXZOdW1iZXIgfX0gbW9yZVxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzLm92ZXJmbG93LnBpY2tlck9wZW5cIj5cbiAgICAgIDxyaXYtY2FsbG91dFxuICAgICAgICAqcml2LW92ZXJsYXlcbiAgICAgICAgW2FuY2hvcl09XCJvdmVyZmxvd1RyaWdnZXI/Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICBbaXNNb2RhbF09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dDYXJldF09XCJmYWxzZVwiXG4gICAgICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAgICAgW3ByZWZlcnJlZFBvc2l0aW9uXT1cIidib3R0b20tbGVmdCdcIlxuICAgICAgICAoY2xvc2UpPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nLCBvcGVuOiBmYWxzZSB9KVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctY2FsbG91dFwiPlxuICAgICAgICAgIDxyaXYtc2VhcmNoXG4gICAgICAgICAgICBbdmFsdWVdPVwicy5vdmVyZmxvdy5zZWFyY2hcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeScsXG4gICAgICAgICAgICAgICAgcXVlcnk6ICRldmVudFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9yaXYtc2VhcmNoPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy12aWV3LWxpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZpZXcgb2Ygcy5lbmFibGVkVmlld3M7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJmbG93LXZpZXdcIlxuICAgICAgICAgICAgICBbY2xhc3Muc3lzdGVtXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItdG9wXT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPiBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItYm90dG9tXT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGkpXCJcbiAgICAgICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSlcIlxuICAgICAgICAgICAgICAoZHJvcCk9XCJkcm9wKGkpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0QWN0aXZlVmlldycsIGlkOiB2aWV3LmlkIH0pO1xuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsXG4gICAgICAgICAgICAgICAgICBvcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaSA+IDBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmZsb3ctcmVvcmRlclwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctdGl0bGVcIiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwidmlldy50aXRsZUhpZ2hsaWdodEluZGljZXMgPz8gW11cIlxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwidmlldy50aXRsZVwiXG4gICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxyaXYtdmlldy1tZW51XG4gICAgICAgICAgICAgICAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gICAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgICAgICAgW21lbnVDb250ZXh0XT1cIidvdmVyZmxvdydcIlxuICAgICAgICAgICAgICA+PC9yaXYtdmlldy1tZW51PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8cml2LXplcm8tc3RhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcy5lbmFibGVkVmlld3MubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwiJ05vIG1hdGNoaW5nIHZpZXdzLidcIlxuICAgICAgICAgICAgPjwvcml2LXplcm8tc3RhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9yaXYtY2FsbG91dD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxsLXZpZXdzLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgcml2QnV0dG9uXG4gICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgIChjbGljayk9XCJzaG93QWxsVmlld3MgPSB0cnVlXCJcbiAgICAgID5cbiAgICAgICAgQWxsIHZpZXdzXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPHJpdi1hbGwtdmlld3MtbW9kYWxcbiAgKm5nSWY9XCJzaG93QWxsVmlld3NcIlxuICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgW3RvcE9mZnNldF09XCJzaWRlU2hlZXRUb3BPZmZzZXRcIlxuICAoY2xvc2UpPVwic2hvd0FsbFZpZXdzID0gZmFsc2VcIlxuPjwvcml2LWFsbC12aWV3cy1tb2RhbD5cblxuPHJpdi10b2FzdCAqbmdJZj1cInNob3dMaW5rQ29waWVkVG9hc3QgfCBhc3luY1wiIChjbG9zZSk9XCJ0b2FzdENsb3NlZC5uZXh0KClcIj5cbiAgTGluayB0byB2aWV3IGNvcGllZCB0byBjbGlwYm9hcmRcbjwvcml2LXRvYXN0PlxuIl19
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbmF2aWdhdGlvbi92aWV3cy92aWV3cy92aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXdzL3ZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTL0QsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFhRSx1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUFReEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFckMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFrQixJQUFJLENBQUM7UUF3QjFDLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVlsQyxjQUFTLEdBQTZDLENBQ3BELENBQVMsRUFDVCxDQUEwQixFQUMxQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNYO0lBdENDLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7O1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFhO1FBQ2hCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUU7WUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDMUMsZUFBZSxFQUFFLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFJRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FDOUIsSUFBSSxDQUFDLE9BQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN4QixNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsRUFDL0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNoQixFQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN4QyxDQUFDO0lBQ0osQ0FBQzs7MkdBcERVLGNBQWM7K0ZBQWQsY0FBYywwTkFTYSxVQUFVLGlHQUdoQixVQUFVLDZCQzlCNUMsMC9NQXdNQTsyRkR0TGEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU07OEJBTS9DLE9BQU87c0JBRE4sS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJbEQsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdmlld3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3cy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3c0NvbXBvbmVudDxVIGV4dGVuZHMgUml2Vmlld3MuVXNlciwgViBleHRlbmRzIFJpdlZpZXdzLlZpZXc8VT4+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZWaWV3cy5NYW5hZ2VyPFUsIFY+O1xuXG4gIEBJbnB1dCgpXG4gIHNpZGVTaGVldFRvcE9mZnNldDogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdvdmVyZmxvd1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgb3ZlcmZsb3dUcmlnZ2VyPzogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdhY3RpdmVUYWInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgYWN0aXZlVGFiPzogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgc2hvd0FsbFZpZXdzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZHJhZ2dlZFRhYkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgZHJhZ2dlZE92ZXJUYWJJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgZHJhZ1N0YXJ0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPiAwKSB0aGlzLmRyYWdnZWRUYWJJbmRleCA9IGluZGV4O1xuICB9XG5cbiAgZHJhZ092ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCA+IDApIHRoaXMuZHJhZ2dlZE92ZXJUYWJJbmRleCA9IGluZGV4O1xuICAgIGVsc2UgdGhpcy5kcmFnZ2VkT3ZlclRhYkluZGV4ID0gbnVsbDtcbiAgfVxuXG4gIGRyb3AoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYWdnZWRUYWJJbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoe1xuICAgICAgICB0eXBlOiAndmlld09yZGVyQ2hhbmdlJyxcbiAgICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IHRoaXMuZHJhZ2dlZFRhYkluZGV4LFxuICAgICAgICBuZXdFbmFibGVkSW5kZXg6IGluZGV4LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kcmFnZ2VkVGFiSW5kZXggPSBudWxsO1xuICAgIHRoaXMuZHJhZ2dlZE92ZXJUYWJJbmRleCA9IG51bGw7XG4gIH1cblxuICB0b2FzdENsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHNob3dMaW5rQ29waWVkVG9hc3Q/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNob3dMaW5rQ29waWVkVG9hc3QgPSBtZXJnZShcbiAgICAgIHRoaXMubWFuYWdlciEuYWN0aW9ucy5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgdHlwZSB9KSA9PiB0eXBlID09PSAnY29weUxpbmtUb1ZpZXcnKSxcbiAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudG9hc3RDbG9zZWQucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICApO1xuICB9XG5cbiAgdHJhY2tCeUlkOiBUcmFja0J5RnVuY3Rpb248Uml2Vmlld3MuRnVsbFZpZXc8VSwgVj4+ID0gKFxuICAgIF86IG51bWJlcixcbiAgICB2OiBSaXZWaWV3cy5GdWxsVmlldzxVLCBWPixcbiAgKSA9PiB2LmlkO1xufVxuIiwiPGRpdlxuICAocml2Q2xpZW50U2l6ZSk9XCJcbiAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJywgd2lkdGg6ICRldmVudC53aWR0aCB9KVxuICBcIlxuICBjbGFzcz1cImNvbnRhaW5lclwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYW5hZ2VyPy5zdGF0ZSB8IGFzeW5jOyBsZXQgc1wiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIHMuZGlzcGxheWVkVmlld3M7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcuYWN0aXZlOyBlbHNlIGluYWN0aXZlVGFiXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjYWN0aXZlVGFiXG4gICAgICAgICAgY2xhc3M9XCJ0YWIgYWN0aXZlXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dpbmddPVwiZHJhZ2dlZFRhYkluZGV4ID09PSBpXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWxlZnRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA+IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItcmlnaHRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA8IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cImkgPiAwXCJcbiAgICAgICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydChpKVwiXG4gICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgKGRyYWdvdmVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBkcmFnT3ZlcihpKVwiXG4gICAgICAgICAgKGRyb3ApPVwiZHJvcChpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwidGFiLXJlb3JkZXJcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS13cmFwcGVyXCIgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICA8cml2LXZpZXctbWVudVxuICAgICAgICAgICAgICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgICAgIFttZW51Q29udGV4dF09XCIndGFiJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlLW1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW51LXRyaWdnZXJcIiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcml2LXZpZXctbWVudT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW5hY3RpdmVUYWI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInRhYlwiXG4gICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgW2NsYXNzLmRyYWdnZWQtb3Zlci1sZWZ0XT1cIlxuICAgICAgICAgICAgZHJhZ2dlZE92ZXJUYWJJbmRleCA9PT0gaSAmJlxuICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPiBpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLXJpZ2h0XT1cIlxuICAgICAgICAgICAgZHJhZ2dlZE92ZXJUYWJJbmRleCA9PT0gaSAmJlxuICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiaSA+IDBcIlxuICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoaSlcIlxuICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSlcIlxuICAgICAgICAgIChkcm9wKT1cImRyb3AoaSlcIlxuICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0QWN0aXZlVmlldycsIGlkOiB2aWV3LmlkIH0pXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWItcmVvcmRlclwiXG4gICAgICAgICAgICBbbmFtZV09XCInUmVvcmRlcidcIlxuICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgIDxzcGFuIHJpdlRydW5jYXRlPlxuICAgICAgICAgICAge3sgdmlldy50aXRsZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwicy5hbGxFbmFibGVkVmlld3MubGVuZ3RoIC0gcy5kaXNwbGF5ZWRWaWV3cy5sZW5ndGg7IGxldCBjb3VudFwiXG4gICAgICBjbGFzcz1cInRhYiBvdmVyZmxvd1wiXG4gICAgICByaXZUcnVuY2F0ZVxuICAgICAgI292ZXJmbG93VHJpZ2dlclxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsIG9wZW46IHRydWUgfSlcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgY291bnQgfCByaXZOdW1iZXIgfX0gbW9yZVxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzLm92ZXJmbG93LnBpY2tlck9wZW5cIj5cbiAgICAgIDxyaXYtY2FsbG91dFxuICAgICAgICAqcml2LW92ZXJsYXlcbiAgICAgICAgW2FuY2hvcl09XCJvdmVyZmxvd1RyaWdnZXI/Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICBbaXNNb2RhbF09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dDYXJldF09XCJmYWxzZVwiXG4gICAgICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAgICAgW3ByZWZlcnJlZFBvc2l0aW9uXT1cIidib3R0b20tbGVmdCdcIlxuICAgICAgICAoY2xvc2UpPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nLCBvcGVuOiBmYWxzZSB9KVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctY2FsbG91dFwiPlxuICAgICAgICAgIDxyaXYtc2VhcmNoXG4gICAgICAgICAgICBbdmFsdWVdPVwicy5vdmVyZmxvdy5zZWFyY2hcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeScsXG4gICAgICAgICAgICAgICAgcXVlcnk6ICRldmVudFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9yaXYtc2VhcmNoPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy12aWV3LWxpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZpZXcgb2Ygcy5lbmFibGVkVmlld3M7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJmbG93LXZpZXdcIlxuICAgICAgICAgICAgICBbY2xhc3Muc3lzdGVtXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItdG9wXT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPiBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItYm90dG9tXT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCJpID4gMFwiXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGkpXCJcbiAgICAgICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSlcIlxuICAgICAgICAgICAgICAoZHJvcCk9XCJkcm9wKGkpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0QWN0aXZlVmlldycsIGlkOiB2aWV3LmlkIH0pO1xuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsXG4gICAgICAgICAgICAgICAgICBvcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaSA+IDBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmZsb3ctcmVvcmRlclwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctdGl0bGVcIiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwidmlldy50aXRsZUhpZ2hsaWdodEluZGljZXMgPz8gW11cIlxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwidmlldy50aXRsZVwiXG4gICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxyaXYtdmlldy1tZW51XG4gICAgICAgICAgICAgICAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gICAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgICAgICAgW21lbnVDb250ZXh0XT1cIidvdmVyZmxvdydcIlxuICAgICAgICAgICAgICA+PC9yaXYtdmlldy1tZW51PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8cml2LXplcm8tc3RhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcy5lbmFibGVkVmlld3MubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwiJ05vIG1hdGNoaW5nIHZpZXdzLidcIlxuICAgICAgICAgICAgPjwvcml2LXplcm8tc3RhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9yaXYtY2FsbG91dD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxsLXZpZXdzLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgcml2QnV0dG9uXG4gICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgIChjbGljayk9XCJzaG93QWxsVmlld3MgPSB0cnVlXCJcbiAgICAgID5cbiAgICAgICAgQWxsIHZpZXdzXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPHJpdi1hbGwtdmlld3MtbW9kYWxcbiAgKm5nSWY9XCJzaG93QWxsVmlld3NcIlxuICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgW3RvcE9mZnNldF09XCJzaWRlU2hlZXRUb3BPZmZzZXRcIlxuICAoY2xvc2UpPVwic2hvd0FsbFZpZXdzID0gZmFsc2VcIlxuPjwvcml2LWFsbC12aWV3cy1tb2RhbD5cblxuPHJpdi10b2FzdCAqbmdJZj1cInNob3dMaW5rQ29waWVkVG9hc3QgfCBhc3luY1wiIChjbG9zZSk9XCJ0b2FzdENsb3NlZC5uZXh0KClcIj5cbiAgTGluayB0byB2aWV3IGNvcGllZCB0byBjbGlwYm9hcmRcbjwvcml2LXRvYXN0PlxuIl19
|