@veloceapps/sdk 6.0.0-40 → 6.0.0-42

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veloceapps/sdk",
3
- "version": "6.0.0-40",
3
+ "version": "6.0.0-42",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/animations": "^12.2.0",
@@ -1,32 +0,0 @@
1
- import { OnDestroy } from '@angular/core';
2
- import { ElementComponent } from '../components/element.component';
3
- import { PluginComponent } from '../components/plugin.component';
4
- import * as i0 from "@angular/core";
5
- export declare class ElementHoverPlugin implements PluginComponent, OnDestroy {
6
- host: ElementComponent;
7
- private readonly hoverClassName;
8
- private readonly color;
9
- private el;
10
- private metadata;
11
- private document;
12
- private runtimeEditorService;
13
- private overlayEl?;
14
- private highlighted;
15
- private destroyed$;
16
- private mouseOverListenerBound;
17
- private mouseLeaveListenerBound;
18
- constructor(host: ElementComponent);
19
- ngOnDestroy(): void;
20
- private attachListeners;
21
- private detachListeners;
22
- private mouseOverListener;
23
- private mouseLeaveListener;
24
- private addHighlight;
25
- private removeHighlight;
26
- private createContainer;
27
- private addRemoveButton;
28
- private addElementName;
29
- private deleteRemoveButton;
30
- static ɵfac: i0.ɵɵFactoryDeclaration<ElementHoverPlugin, never>;
31
- static ɵdir: i0.ɵɵDirectiveDeclaration<ElementHoverPlugin, never, never, {}, {}, never>;
32
- }
@@ -1,157 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Directive, ElementRef } from '@angular/core';
3
- import { merge } from 'lodash';
4
- import { Subject, takeUntil } from 'rxjs';
5
- import { ELEMENT_METADATA } from '../injection-tokens';
6
- import { RuntimeEditorService } from '../modules/runtime/services/runtime-editor.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../components/element.component";
9
- export class ElementHoverPlugin {
10
- constructor(host) {
11
- this.host = host;
12
- this.hoverClassName = 'element-hover';
13
- this.color = 'red';
14
- this.highlighted = false;
15
- this.destroyed$ = new Subject();
16
- this.el = this.host.injector.get(ElementRef);
17
- this.metadata = this.host.injector.get(ELEMENT_METADATA);
18
- this.document = this.host.injector.get(DOCUMENT);
19
- this.runtimeEditorService = this.host.injector.get(RuntimeEditorService);
20
- this.mouseOverListenerBound = this.mouseOverListener.bind(this);
21
- this.mouseLeaveListenerBound = this.mouseLeaveListener.bind(this);
22
- this.runtimeEditorService.editorMode$.pipe(takeUntil(this.destroyed$)).subscribe(editorMode => {
23
- if (editorMode) {
24
- this.attachListeners();
25
- }
26
- else {
27
- this.detachListeners();
28
- }
29
- });
30
- }
31
- ngOnDestroy() {
32
- this.destroyed$.next();
33
- this.destroyed$.complete();
34
- this.detachListeners();
35
- }
36
- attachListeners() {
37
- this.el.nativeElement.addEventListener('mouseover', this.mouseOverListenerBound);
38
- this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListenerBound);
39
- }
40
- detachListeners() {
41
- this.el.nativeElement.removeEventListener('mouseover', this.mouseOverListenerBound);
42
- this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListenerBound);
43
- }
44
- mouseOverListener(e) {
45
- const path = e.composedPath();
46
- const innerPath = path.slice(0, path.indexOf(this.el.nativeElement));
47
- const hasChildHovered = innerPath.some(target => {
48
- const t = target;
49
- return t.tagName === 'VL-ELEMENT' && t.classList.contains(this.hoverClassName);
50
- });
51
- if (hasChildHovered) {
52
- this.removeHighlight();
53
- }
54
- else {
55
- this.addHighlight();
56
- }
57
- }
58
- mouseLeaveListener() {
59
- this.removeHighlight();
60
- }
61
- addHighlight() {
62
- if (this.highlighted) {
63
- return;
64
- }
65
- this.highlighted = true;
66
- this.el.nativeElement.classList.add(this.hoverClassName);
67
- const overlay = this.createContainer();
68
- this.addRemoveButton(overlay);
69
- this.addElementName(overlay);
70
- this.el.nativeElement.appendChild(overlay);
71
- this.overlayEl = overlay;
72
- }
73
- removeHighlight() {
74
- if (!this.highlighted) {
75
- return;
76
- }
77
- this.highlighted = false;
78
- this.el.nativeElement.style.boxShadow = '';
79
- this.el.nativeElement.classList.remove(this.hoverClassName);
80
- this.deleteRemoveButton();
81
- }
82
- createContainer() {
83
- const hostRect = this.el.nativeElement.getBoundingClientRect();
84
- const div = this.document.createElement('div');
85
- merge(div.style, {
86
- position: 'fixed',
87
- display: 'block',
88
- pointerEvents: 'none',
89
- left: '0',
90
- top: '0',
91
- fontSize: '10px',
92
- lineHeight: `12px`,
93
- fontWeight: '400',
94
- color: '#fff',
95
- width: `${hostRect.width}px`,
96
- height: `${hostRect.height}px`,
97
- transform: `translate(${hostRect.left}px, ${hostRect.top}px)`,
98
- boxSizing: 'border-box',
99
- boxShadow: `inset 0 0 0 1px ${this.color}`,
100
- });
101
- return div;
102
- }
103
- addRemoveButton(container) {
104
- if (this.metadata.type === 'LAYOUT_REGION') {
105
- return;
106
- }
107
- const buttonEl = this.document.createElement('div');
108
- const buttonSize = 12;
109
- merge(buttonEl.style, {
110
- bottom: '100%',
111
- right: '0',
112
- width: `${buttonSize}px`,
113
- height: `${buttonSize}px`,
114
- padding: '1px',
115
- textAlign: 'center',
116
- backgroundColor: this.color,
117
- position: 'absolute',
118
- cursor: 'pointer',
119
- display: 'block',
120
- pointerEvents: 'all',
121
- });
122
- buttonEl.innerHTML = '&#10005;';
123
- buttonEl.addEventListener('click', () => {
124
- if (this.metadata.path) {
125
- this.runtimeEditorService.elementDeleted$.next({ path: this.metadata.path });
126
- }
127
- });
128
- container.appendChild(buttonEl);
129
- }
130
- addElementName(container) {
131
- const nameEl = this.document.createElement('div');
132
- merge(nameEl.style, {
133
- bottom: '100%',
134
- left: '0',
135
- height: `12px`,
136
- backgroundColor: this.color,
137
- position: 'absolute',
138
- padding: '1px 2px',
139
- display: 'block',
140
- pointerEvents: 'all',
141
- });
142
- nameEl.innerHTML = this.metadata.name;
143
- container.appendChild(nameEl);
144
- }
145
- deleteRemoveButton() {
146
- if (this.overlayEl) {
147
- this.el.nativeElement.removeChild(this.overlayEl);
148
- this.overlayEl = undefined;
149
- }
150
- }
151
- }
152
- ElementHoverPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHoverPlugin, deps: [{ token: i1.ElementComponent }], target: i0.ɵɵFactoryTarget.Directive });
153
- ElementHoverPlugin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: ElementHoverPlugin, ngImport: i0 });
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHoverPlugin, decorators: [{
155
- type: Directive
156
- }], ctorParameters: function () { return [{ type: i1.ElementComponent }]; } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1ob3Zlci5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvcGx1Z2lucy9lbGVtZW50LWhvdmVyLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7O0FBSTFGLE1BQU0sT0FBTyxrQkFBa0I7SUFlN0IsWUFBbUIsSUFBc0I7UUFBdEIsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFkeEIsbUJBQWMsR0FBRyxlQUFlLENBQUM7UUFDakMsVUFBSyxHQUFHLEtBQUssQ0FBQztRQU92QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU12QyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJ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UUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUFzQjtRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBdUI7WUFDdkMsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsR0FBRztZQUNULE1BQU0sRUFBRSxNQUFNO1lBQ2QsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQzNCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFdEMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQzs7Z0hBM0tVLGtCQUFrQjtvR0FBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBRDlCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbHVnaW5Db21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3BsdWdpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRUxFTUVOVF9NRVRBREFUQSB9IGZyb20gJy4uL2luamVjdGlvbi10b2tlbnMnO1xuaW1wb3J0IHsgUnVudGltZUVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvcnVudGltZS1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi90eXBlcyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEVsZW1lbnRIb3ZlclBsdWdpbiBpbXBsZW1lbnRzIFBsdWdpbkNvbXBvbmVudCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBob3ZlckNsYXNzTmFtZSA9ICdlbGVtZW50LWhvdmVyJztcbiAgcHJpdmF0ZSByZWFkb25seSBjb2xvciA9ICdyZWQnO1xuXG4gIHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIG1ldGFkYXRhOiBFbGVtZW50TWV0YWRhdGE7XG4gIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuICBwcml2YXRlIHJ1bnRpbWVFZGl0b3JTZXJ2aWNlOiBSdW50aW1lRWRpdG9yU2VydmljZTtcbiAgcHJpdmF0ZSBvdmVybGF5RWw/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBoaWdobGlnaHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgbW91c2VPdmVyTGlzdGVuZXJCb3VuZDogKGU6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIHByaXZhdGUgbW91c2VMZWF2ZUxpc3RlbmVyQm91bmQ6IChlOiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBob3N0OiBFbGVtZW50Q29tcG9uZW50KSB7XG4gICAgdGhpcy5lbCA9IHRoaXMuaG9zdC5pbmplY3Rvci5nZXQoRWxlbWVudFJlZik7XG4gICAgdGhpcy5tZXRhZGF0YSA9IHRoaXMuaG9zdC5pbmplY3Rvci5nZXQoRUxFTUVOVF9NRVRBREFUQSk7XG4gICAgdGhpcy5kb2N1bWVudCA9IHRoaXMuaG9zdC5pbmplY3Rvci5nZXQoRE9DVU1FTlQpO1xuICAgIHRoaXMucnVudGltZUVkaXRvclNlcnZpY2UgPSB0aGlzLmhvc3QuaW5qZWN0b3IuZ2V0KFJ1bnRpbWVFZGl0b3JTZXJ2aWNlKTtcblxuICAgIHRoaXMubW91c2VPdmVyTGlzdGVuZXJCb3VuZCA9IHRoaXMubW91c2VPdmVyTGlzdGVuZXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLm1vdXNlTGVhdmVMaXN0ZW5lckJvdW5kID0gdGhpcy5tb3VzZUxlYXZlTGlzdGVuZXIuYmluZCh0aGlzKTtcblxuICAgIHRoaXMucnVudGltZUVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGVkaXRvck1vZGUgPT4ge1xuICAgICAgaWYgKGVkaXRvck1vZGUpIHtcbiAgICAgICAgdGhpcy5hdHRhY2hMaXN0ZW5lcnMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGV0YWNoTGlzdGVuZXJzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB0aGlzLmRldGFjaExpc3RlbmVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHRoaXMubW91c2VPdmVyTGlzdGVuZXJCb3VuZCk7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLm1vdXNlTGVhdmVMaXN0ZW5lckJvdW5kKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCB0aGlzLm1vdXNlT3Zlckxpc3RlbmVyQm91bmQpO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5tb3VzZUxlYXZlTGlzdGVuZXJCb3VuZCk7XG4gIH1cblxuICBwcml2YXRlIG1vdXNlT3Zlckxpc3RlbmVyKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwYXRoID0gZS5jb21wb3NlZFBhdGgoKTtcbiAgICBjb25zdCBpbm5lclBhdGggPSBwYXRoLnNsaWNlKDAsIHBhdGguaW5kZXhPZih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpKTtcbiAgICBjb25zdCBoYXNDaGlsZEhvdmVyZWQgPSBpbm5lclBhdGguc29tZSh0YXJnZXQgPT4ge1xuICAgICAgY29uc3QgdCA9IHRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIHJldHVybiB0LnRhZ05hbWUgPT09ICdWTC1FTEVNRU5UJyAmJiB0LmNsYXNzTGlzdC5jb250YWlucyh0aGlzLmhvdmVyQ2xhc3NOYW1lKTtcbiAgICB9KTtcblxuICAgIGlmIChoYXNDaGlsZEhvdmVyZWQpIHtcbiAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkSGlnaGxpZ2h0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3VzZUxlYXZlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSGlnaGxpZ2h0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oaWdobGlnaHRlZCA9IHRydWU7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5ob3ZlckNsYXNzTmFtZSk7XG5cbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5jcmVhdGVDb250YWluZXIoKTtcbiAgICB0aGlzLmFkZFJlbW92ZUJ1dHRvbihvdmVybGF5KTtcbiAgICB0aGlzLmFkZEVsZW1lbnROYW1lKG92ZXJsYXkpO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChvdmVybGF5KTtcbiAgICB0aGlzLm92ZXJsYXlFbCA9IG92ZXJsYXk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUhpZ2hsaWdodCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhpZ2hsaWdodGVkID0gZmFsc2U7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmJveFNoYWRvdyA9ICcnO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuaG92ZXJDbGFzc05hbWUpO1xuICAgIHRoaXMuZGVsZXRlUmVtb3ZlQnV0dG9uKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIG1lcmdlKGRpdi5zdHlsZSwgPENTU1N0eWxlRGVjbGFyYXRpb24+e1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICBmb250U2l6ZTogJzEwcHgnLFxuICAgICAgbGluZUhlaWdodDogYDEycHhgLFxuICAgICAgZm9udFdlaWdodDogJzQwMCcsXG4gICAgICBjb2xvcjogJyNmZmYnLFxuICAgICAgd2lkdGg6IGAke2hvc3RSZWN0LndpZHRofXB4YCxcbiAgICAgIGhlaWdodDogYCR7aG9zdFJlY3QuaGVpZ2h0fXB4YCxcbiAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZSgke2hvc3RSZWN0LmxlZnR9cHgsICR7aG9zdFJlY3QudG9wfXB4KWAsXG4gICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgIGJveFNoYWRvdzogYGluc2V0IDAgMCAwIDFweCAke3RoaXMuY29sb3J9YCxcbiAgICB9KTtcblxuICAgIHJldHVybiBkaXY7XG4gIH1cblxuICBwcml2YXRlIGFkZFJlbW92ZUJ1dHRvbihjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWV0YWRhdGEudHlwZSA9PT0gJ0xBWU9VVF9SRUdJT04nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnV0dG9uRWwgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnN0IGJ1dHRvblNpemUgPSAxMjtcbiAgICBtZXJnZShidXR0b25FbC5zdHlsZSwgPENTU1N0eWxlRGVjbGFyYXRpb24+e1xuICAgICAgYm90dG9tOiAnMTAwJScsXG4gICAgICByaWdodDogJzAnLFxuICAgICAgd2lkdGg6IGAke2J1dHRvblNpemV9cHhgLFxuICAgICAgaGVpZ2h0OiBgJHtidXR0b25TaXplfXB4YCxcbiAgICAgIHBhZGRpbmc6ICcxcHgnLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5jb2xvcixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgcG9pbnRlckV2ZW50czogJ2FsbCcsXG4gICAgfSk7XG4gICAgYnV0dG9uRWwuaW5uZXJIVE1MID0gJyYjMTAwMDU7JztcbiAgICBidXR0b25FbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLm1ldGFkYXRhLnBhdGgpIHtcbiAgICAgICAgdGhpcy5ydW50aW1lRWRpdG9yU2VydmljZS5lbGVtZW50RGVsZXRlZCQubmV4dCh7IHBhdGg6IHRoaXMubWV0YWRhdGEucGF0aCB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChidXR0b25FbCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEVsZW1lbnROYW1lKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lRWwgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lcmdlKG5hbWVFbC5zdHlsZSwgPENTU1N0eWxlRGVjbGFyYXRpb24+e1xuICAgICAgYm90dG9tOiAnMTAwJScsXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICBoZWlnaHQ6IGAxMnB4YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5jb2xvcixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgcGFkZGluZzogJzFweCAycHgnLFxuICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgIHBvaW50ZXJFdmVudHM6ICdhbGwnLFxuICAgIH0pO1xuXG4gICAgbmFtZUVsLmlubmVySFRNTCA9IHRoaXMubWV0YWRhdGEubmFtZTtcblxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChuYW1lRWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVSZW1vdmVCdXR0b24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheUVsKSB7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5vdmVybGF5RWwpO1xuICAgICAgdGhpcy5vdmVybGF5RWwgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=