ngx-vflow 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/vflow/components/node/node.component.mjs +24 -54
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +5 -11
- package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +55 -1
- package/esm2022/lib/vflow/directives/connection-controller.directive.mjs +37 -47
- package/esm2022/lib/vflow/directives/node-handles-controller.directive.mjs +33 -0
- package/esm2022/lib/vflow/directives/node-resize-controller.directive.mjs +35 -0
- package/esm2022/lib/vflow/directives/selectable.directive.mjs +2 -2
- package/esm2022/lib/vflow/models/handle.model.mjs +33 -33
- package/esm2022/lib/vflow/models/node.model.mjs +30 -67
- package/esm2022/lib/vflow/public-components/handle/handle.component.mjs +3 -3
- package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +4 -3
- package/esm2022/lib/vflow/services/draggable.service.mjs +2 -2
- package/esm2022/lib/vflow/services/flow-status.service.mjs +1 -15
- package/esm2022/lib/vflow/services/handle.service.mjs +1 -1
- package/esm2022/lib/vflow/testing-utils/component-mocks/handle-mock.component.mjs +22 -0
- package/esm2022/lib/vflow/testing-utils/component-mocks/minimap-mock.component.mjs +22 -0
- package/esm2022/lib/vflow/testing-utils/component-mocks/node-toolbar-mock.component.mjs +19 -0
- package/esm2022/lib/vflow/testing-utils/component-mocks/resizable-mock.component.mjs +21 -0
- package/esm2022/lib/vflow/testing-utils/component-mocks/vflow-mock.component.mjs +251 -0
- package/esm2022/lib/vflow/testing-utils/directive-mocks/connection-controller-mock.directive.mjs +15 -0
- package/esm2022/lib/vflow/testing-utils/directive-mocks/drag-handle-mock.directive.mjs +11 -0
- package/esm2022/lib/vflow/testing-utils/directive-mocks/selectable-mock.directive.mjs +14 -0
- package/esm2022/lib/vflow/testing-utils/directive-mocks/template-mock.directive.mjs +87 -0
- package/esm2022/lib/vflow/testing-utils/provide-custom-node-mocks.mjs +9 -8
- package/esm2022/lib/vflow/testing-utils/vflow-mocks.mjs +26 -0
- package/esm2022/lib/vflow/vflow.mjs +3 -1
- package/esm2022/public-api.mjs +11 -1
- package/fesm2022/ngx-vflow.mjs +857 -378
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/node/node.component.d.ts +6 -12
- package/lib/vflow/components/vflow/vflow.component.d.ts +4 -5
- package/lib/vflow/directives/changes-controller.directive.d.ts +54 -0
- package/lib/vflow/directives/connection-controller.directive.d.ts +4 -5
- package/lib/vflow/directives/node-handles-controller.directive.d.ts +11 -0
- package/lib/vflow/directives/node-resize-controller.directive.d.ts +11 -0
- package/lib/vflow/models/handle.model.d.ts +8 -23
- package/lib/vflow/models/node.model.d.ts +17 -13
- package/lib/vflow/services/flow-status.service.d.ts +0 -6
- package/lib/vflow/services/handle.service.d.ts +1 -1
- package/lib/vflow/testing-utils/component-mocks/handle-mock.component.d.ts +11 -0
- package/lib/vflow/testing-utils/component-mocks/minimap-mock.component.d.ts +10 -0
- package/lib/vflow/testing-utils/component-mocks/node-toolbar-mock.component.d.ts +7 -0
- package/lib/vflow/testing-utils/component-mocks/resizable-mock.component.d.ts +8 -0
- package/lib/vflow/testing-utils/component-mocks/vflow-mock.component.d.ts +48 -0
- package/lib/vflow/testing-utils/directive-mocks/connection-controller-mock.directive.d.ts +7 -0
- package/lib/vflow/testing-utils/directive-mocks/drag-handle-mock.directive.d.ts +5 -0
- package/lib/vflow/testing-utils/directive-mocks/selectable-mock.directive.d.ts +5 -0
- package/lib/vflow/testing-utils/directive-mocks/template-mock.directive.d.ts +32 -0
- package/lib/vflow/testing-utils/vflow-mocks.d.ts +10 -0
- package/lib/vflow/vflow.d.ts +2 -1
- package/package.json +1 -1
- package/public-api.d.ts +10 -0
|
@@ -14,26 +14,43 @@ export class HandleModel {
|
|
|
14
14
|
width: 10 + 2 * this.strokeWidth,
|
|
15
15
|
height: 10 + 2 * this.strokeWidth,
|
|
16
16
|
});
|
|
17
|
-
this.
|
|
17
|
+
this.pointAbsolute = computed(() => {
|
|
18
|
+
return {
|
|
19
|
+
x: this.parentNode.globalPoint().x + this.hostOffset().x + this.sizeOffset().x,
|
|
20
|
+
y: this.parentNode.globalPoint().y + this.hostOffset().y + this.sizeOffset().y,
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
this.state = signal('idle');
|
|
24
|
+
this.updateHostSizeAndPosition$ = new Subject();
|
|
25
|
+
this.hostSize = toSignal(this.updateHostSizeAndPosition$.pipe(map(() => this.getHostSize())), {
|
|
26
|
+
initialValue: { width: 0, height: 0 },
|
|
27
|
+
});
|
|
28
|
+
this.hostPosition = toSignal(this.updateHostSizeAndPosition$.pipe(map(() => ({
|
|
29
|
+
x: this.hostReference instanceof HTMLElement ? this.hostReference.offsetLeft : 0, // for now just 0 for group nodes
|
|
30
|
+
y: this.hostReference instanceof HTMLElement ? this.hostReference.offsetTop : 0, // for now just 0 for group nodes
|
|
31
|
+
}))), {
|
|
32
|
+
initialValue: { x: 0, y: 0 },
|
|
33
|
+
});
|
|
34
|
+
this.hostOffset = computed(() => {
|
|
18
35
|
switch (this.rawHandle.position) {
|
|
19
36
|
case 'left':
|
|
20
37
|
return {
|
|
21
38
|
x: 0,
|
|
22
|
-
y: this.
|
|
39
|
+
y: this.hostPosition().y + this.hostSize().height / 2,
|
|
23
40
|
};
|
|
24
41
|
case 'right':
|
|
25
42
|
return {
|
|
26
43
|
x: this.parentNode.size().width,
|
|
27
|
-
y: this.
|
|
44
|
+
y: this.hostPosition().y + this.hostSize().height / 2,
|
|
28
45
|
};
|
|
29
46
|
case 'top':
|
|
30
47
|
return {
|
|
31
|
-
x: this.
|
|
48
|
+
x: this.hostPosition().x + this.hostSize().width / 2,
|
|
32
49
|
y: 0,
|
|
33
50
|
};
|
|
34
51
|
case 'bottom':
|
|
35
52
|
return {
|
|
36
|
-
x: this.
|
|
53
|
+
x: this.hostPosition().x + this.hostSize().width / 2,
|
|
37
54
|
y: this.parentNode.size().height,
|
|
38
55
|
};
|
|
39
56
|
}
|
|
@@ -50,47 +67,30 @@ export class HandleModel {
|
|
|
50
67
|
return { x: 0, y: this.size().height / 2 };
|
|
51
68
|
}
|
|
52
69
|
});
|
|
53
|
-
this.
|
|
54
|
-
return {
|
|
55
|
-
x: this.parentNode.globalPoint().x + this.offset().x + this.sizeOffset().x,
|
|
56
|
-
y: this.parentNode.globalPoint().y + this.offset().y + this.sizeOffset().y,
|
|
57
|
-
};
|
|
58
|
-
});
|
|
59
|
-
this.state = signal('idle');
|
|
60
|
-
this.updateParentSizeAndPosition$ = new Subject();
|
|
61
|
-
this.parentSize = toSignal(this.updateParentSizeAndPosition$.pipe(map(() => this.getParentSize())), {
|
|
62
|
-
initialValue: { width: 0, height: 0 },
|
|
63
|
-
});
|
|
64
|
-
this.parentPosition = toSignal(this.updateParentSizeAndPosition$.pipe(map(() => ({
|
|
65
|
-
x: this.parentReference instanceof HTMLElement ? this.parentReference.offsetLeft : 0, // for now just 0 for group nodes
|
|
66
|
-
y: this.parentReference instanceof HTMLElement ? this.parentReference.offsetTop : 0, // for now just 0 for group nodes
|
|
67
|
-
}))), {
|
|
68
|
-
initialValue: { x: 0, y: 0 },
|
|
69
|
-
});
|
|
70
|
-
this.parentReference = this.rawHandle.parentReference;
|
|
70
|
+
this.hostReference = this.rawHandle.hostReference;
|
|
71
71
|
this.template = this.rawHandle.template;
|
|
72
72
|
this.templateContext = {
|
|
73
73
|
$implicit: {
|
|
74
|
-
point: this.
|
|
74
|
+
point: this.hostOffset,
|
|
75
75
|
state: this.state,
|
|
76
76
|
node: this.parentNode.node,
|
|
77
77
|
},
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
|
|
81
|
-
this.
|
|
80
|
+
updateHost() {
|
|
81
|
+
this.updateHostSizeAndPosition$.next();
|
|
82
82
|
}
|
|
83
|
-
|
|
84
|
-
if (this.
|
|
83
|
+
getHostSize() {
|
|
84
|
+
if (this.hostReference instanceof HTMLElement) {
|
|
85
85
|
return {
|
|
86
|
-
width: this.
|
|
87
|
-
height: this.
|
|
86
|
+
width: this.hostReference.offsetWidth,
|
|
87
|
+
height: this.hostReference.offsetHeight,
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
-
else if (this.
|
|
91
|
-
return this.
|
|
90
|
+
else if (this.hostReference instanceof SVGGraphicsElement) {
|
|
91
|
+
return this.hostReference.getBBox();
|
|
92
92
|
}
|
|
93
93
|
return { width: 0, height: 0 };
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBeUZ0QixZQUNTLFNBQXFCLEVBQ3JCLFVBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQTFGZCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQzs7O1dBR0c7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ2hDLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1NBQ2xDLENBQUMsQ0FBQztRQUVJLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxPQUFPO2dCQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzth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LE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlSGFuZGxlIH0gZnJvbSAnLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi9ub2RlLm1vZGVsJztcbmltcG9ydCB7IFN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCB0eXBlIEhhbmRsZVN0YXRlID0gJ3ZhbGlkJyB8ICdpbnZhbGlkJyB8ICdpZGxlJztcblxuZXhwb3J0IGNsYXNzIEhhbmRsZU1vZGVsIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0cm9rZVdpZHRoID0gMjtcblxuICAvKipcbiAgICogUHJlLWNvbXB1dGVkIHNpemUgZm9yIGRlZmF1bHQgaGFuZGxlLCBjaGFuZ2VkIGR5bmFtaWNhbGx5XG4gICAqIGZvciBjdXN0b20gaGFuZGxlc1xuICAgKi9cbiAgcHVibGljIHNpemUgPSBzaWduYWwoe1xuICAgIHdpZHRoOiAxMCArIDIgKiB0aGlzLnN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogMTAgKyAyICogdGhpcy5zdHJva2VXaWR0aCxcbiAgfSk7XG5cbiAgcHVibGljIHBvaW50QWJzb2x1dGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHRoaXMucGFyZW50Tm9kZS5nbG9iYWxQb2ludCgpLnggKyB0aGlzLmhvc3RPZmZzZXQoKS54ICsgdGhpcy5zaXplT2Zmc2V0KCkueCxcbiAgICAgIHk6IHRoaXMucGFyZW50Tm9kZS5nbG9iYWxQb2ludCgpLnkgKyB0aGlzLmhvc3RPZmZzZXQoKS55ICsgdGhpcy5zaXplT2Zmc2V0KCkueSxcbiAgICB9O1xuICB9KTtcblxuICBwdWJsaWMgc3RhdGUgPSBzaWduYWw8SGFuZGxlU3RhdGU+KCdpZGxlJyk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVIb3N0U2l6ZUFuZFBvc2l0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBob3N0U2l6ZSA9IHRvU2lnbmFsKHRoaXMudXBkYXRlSG9zdFNpemVBbmRQb3NpdGlvbiQucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRIb3N0U2l6ZSgpKSksIHtcbiAgICBpbml0aWFsVmFsdWU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9LFxuICB9KTtcblxuICBwcml2YXRlIGhvc3RQb3NpdGlvbiA9IHRvU2lnbmFsKFxuICAgIHRoaXMudXBkYXRlSG9zdFNpemVBbmRQb3NpdGlvbiQucGlwZShcbiAgICAgIG1hcCgoKSA9PiAoe1xuICAgICAgICB4OiB0aGlzLmhvc3RSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IHRoaXMuaG9zdFJlZmVyZW5jZS5vZmZzZXRMZWZ0IDogMCwgLy8gZm9yIG5vdyBqdXN0IDAgZm9yIGdyb3VwIG5vZGVzXG4gICAgICAgIHk6IHRoaXMuaG9zdFJlZmVyZW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gdGhpcy5ob3N0UmVmZXJlbmNlLm9mZnNldFRvcCA6IDAsIC8vIGZvciBub3cganVzdCAwIGZvciBncm91cCBub2Rlc1xuICAgICAgfSkpLFxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiB7IHg6IDAsIHk6IDAgfSxcbiAgICB9LFxuICApO1xuXG4gIHB1YmxpYyBob3N0T2Zmc2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5yYXdIYW5kbGUucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogdGhpcy5ob3N0UG9zaXRpb24oKS55ICsgdGhpcy5ob3N0U2l6ZSgpLmhlaWdodCAvIDIsXG4gICAgICAgIH07XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogdGhpcy5wYXJlbnROb2RlLnNpemUoKS53aWR0aCxcbiAgICAgICAgICB5OiB0aGlzLmhvc3RQb3NpdGlvbigpLnkgKyB0aGlzLmhvc3RTaXplKCkuaGVpZ2h0IC8gMixcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogdGhpcy5ob3N0UG9zaXRpb24oKS54ICsgdGhpcy5ob3N0U2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLmhvc3RQb3NpdGlvbigpLnggKyB0aGlzLmhvc3RTaXplKCkud2lkdGggLyAyLFxuICAgICAgICAgIHk6IHRoaXMucGFyZW50Tm9kZS5zaXplKCkuaGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgcHJpdmF0ZSBzaXplT2Zmc2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5yYXdIYW5kbGUucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiAtKHRoaXMuc2l6ZSgpLndpZHRoIC8gMiksIHk6IDAgfTtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHsgeDogdGhpcy5zaXplKCkud2lkdGggLyAyLCB5OiAwIH07XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiAtKHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIpIH07XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiB0aGlzLnNpemUoKS5oZWlnaHQgLyAyIH07XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgaG9zdFJlZmVyZW5jZSA9IHRoaXMucmF3SGFuZGxlLmhvc3RSZWZlcmVuY2UhO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZSA9IHRoaXMucmF3SGFuZGxlLnRlbXBsYXRlO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZUNvbnRleHQgPSB7XG4gICAgJGltcGxpY2l0OiB7XG4gICAgICBwb2ludDogdGhpcy5ob3N0T2Zmc2V0LFxuICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICBub2RlOiB0aGlzLnBhcmVudE5vZGUubm9kZSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByYXdIYW5kbGU6IE5vZGVIYW5kbGUsXG4gICAgcHVibGljIHBhcmVudE5vZGU6IE5vZGVNb2RlbCxcbiAgKSB7fVxuXG4gIHB1YmxpYyB1cGRhdGVIb3N0KCkge1xuICAgIHRoaXMudXBkYXRlSG9zdFNpemVBbmRQb3NpdGlvbiQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIb3N0U2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgIGlmICh0aGlzLmhvc3RSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHRoaXMuaG9zdFJlZmVyZW5jZS5vZmZzZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmhvc3RSZWZlcmVuY2Uub2Zmc2V0SGVpZ2h0LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaG9zdFJlZmVyZW5jZSBpbnN0YW5jZW9mIFNWR0dyYXBoaWNzRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuaG9zdFJlZmVyZW5jZS5nZXRCQm94KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
import { computed,
|
|
1
|
+
import { computed, inject, signal } from '@angular/core';
|
|
2
2
|
import { isComponentDynamicNode, isComponentStaticNode, isDynamicNode, } from '../interfaces/node.interface';
|
|
3
3
|
import { isDefined } from '../utils/is-defined';
|
|
4
|
-
import { toObservable
|
|
5
|
-
import { FlowSettingsService } from '../services/flow-settings.service';
|
|
6
|
-
import { animationFrameScheduler, merge, observeOn, Subject } from 'rxjs';
|
|
4
|
+
import { toObservable } from '@angular/core/rxjs-interop';
|
|
7
5
|
import { FlowEntitiesService } from '../services/flow-entities.service';
|
|
8
|
-
// TODO bad naming around points
|
|
9
6
|
export class NodeModel {
|
|
10
7
|
static { this.defaultWidth = 100; }
|
|
11
8
|
static { this.defaultHeight = 50; }
|
|
12
9
|
static { this.defaultColor = '#1b262c'; }
|
|
13
10
|
constructor(node) {
|
|
14
11
|
this.node = node;
|
|
15
|
-
this.flowSettingsService = inject(FlowSettingsService);
|
|
16
12
|
this.entitiesService = inject(FlowEntitiesService);
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
13
|
+
this.point = this.createInternalPointSignal();
|
|
14
|
+
this.point$ = toObservable(this.point);
|
|
15
|
+
this.width = this.createWidthSignal(NodeModel.defaultWidth);
|
|
16
|
+
this.width$ = toObservable(this.width);
|
|
17
|
+
this.height = this.createHeightSignal(NodeModel.defaultHeight);
|
|
18
|
+
this.height$ = toObservable(this.height);
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated use width or height signals
|
|
21
|
+
*/
|
|
22
|
+
this.size = computed(() => ({ width: this.width(), height: this.height() }));
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated use width$ or height$
|
|
25
|
+
*/
|
|
25
26
|
this.size$ = toObservable(this.size);
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
27
|
+
this.styleWidth = computed(() => `${this.width()}px`);
|
|
28
|
+
this.styleHeight = computed(() => `${this.height()}px`);
|
|
28
29
|
this.renderOrder = signal(0);
|
|
29
30
|
this.selected = signal(false);
|
|
30
31
|
this.selected$ = toObservable(this.selected);
|
|
@@ -94,56 +95,8 @@ export class NodeModel {
|
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
|
-
setPoint(point
|
|
98
|
-
|
|
99
|
-
this.internalPoint.set(point);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
this.notThrottledPoint$.next(point);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* TODO find the way to implement this better
|
|
107
|
-
*/
|
|
108
|
-
linkDefaultNodeSizeWithModelSize() {
|
|
109
|
-
const node = this.node;
|
|
110
|
-
switch (node.type) {
|
|
111
|
-
case 'default':
|
|
112
|
-
case 'default-group':
|
|
113
|
-
case 'template-group': {
|
|
114
|
-
if (isDynamicNode(node)) {
|
|
115
|
-
effect(() => {
|
|
116
|
-
this.size.set({
|
|
117
|
-
width: node.width?.() ?? NodeModel.defaultWidth,
|
|
118
|
-
height: node.height?.() ?? NodeModel.defaultHeight,
|
|
119
|
-
});
|
|
120
|
-
}, { allowSignalWrites: true });
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
this.size.set({
|
|
124
|
-
width: node.width ?? NodeModel.defaultWidth,
|
|
125
|
-
height: node.height ?? NodeModel.defaultHeight,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if (node.type === 'html-template' || this.isComponentType) {
|
|
131
|
-
if (isDynamicNode(node)) {
|
|
132
|
-
effect(() => {
|
|
133
|
-
if (node.width && node.height) {
|
|
134
|
-
this.size.set({
|
|
135
|
-
width: node.width(),
|
|
136
|
-
height: node.height(),
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
}, { allowSignalWrites: true });
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
if (node.width && node.height) {
|
|
143
|
-
this.size.set({ width: node.width, height: node.height });
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
98
|
+
setPoint(point) {
|
|
99
|
+
this.point.set(point);
|
|
147
100
|
}
|
|
148
101
|
createTextSignal() {
|
|
149
102
|
const node = this.node;
|
|
@@ -160,5 +113,15 @@ export class NodeModel {
|
|
|
160
113
|
createInternalPointSignal() {
|
|
161
114
|
return isDynamicNode(this.node) ? this.node.point : signal({ x: this.node.point.x, y: this.node.point.y });
|
|
162
115
|
}
|
|
116
|
+
createWidthSignal(defaultValue) {
|
|
117
|
+
return isDynamicNode(this.node)
|
|
118
|
+
? (this.node.width ?? signal(defaultValue))
|
|
119
|
+
: signal(this.node.width ?? defaultValue);
|
|
120
|
+
}
|
|
121
|
+
createHeightSignal(defaultValue) {
|
|
122
|
+
return isDynamicNode(this.node)
|
|
123
|
+
? (this.node.height ?? signal(defaultValue))
|
|
124
|
+
: signal(this.node.height ?? defaultValue);
|
|
125
|
+
}
|
|
163
126
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBR0wsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixhQUFhLEdBQ2QsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsZ0NBQWdDO0FBQ2hDLE1BQU0sT0FBTyxTQUFTO2FBQ0wsaUJBQVksR0FBRyxHQUFHLEFBQU4sQ0FBTzthQUNuQixrQkFBYSxHQUFHLEVBQUUsQUFBTCxDQUFNO2FBQ25CLGlCQUFZLEdBQUcsU0FBUyxBQUFaLENBQWE7SUErRXhDLFlBQW1CLElBQThCO1FBQTlCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBN0V6Qyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsRCxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTlDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFakQsb0JBQWUsR0FBRyxZQUFZLENBQUMs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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBUZW1wbGF0ZVJlZiwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIER5bmFtaWNOb2RlLFxuICBOb2RlLFxuICBpc0NvbXBvbmVudER5bmFtaWNOb2RlLFxuICBpc0NvbXBvbmVudFN0YXRpY05vZGUsXG4gIGlzRHluYW1pY05vZGUsXG59IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvaXMtZGVmaW5lZCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuL2hhbmRsZS5tb2RlbCc7XG5pbXBvcnQgeyBGbG93RW50aXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mbG93LWVudGl0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgbWVyZ2UsIG9ic2VydmVPbiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcblxuLy8gVE9ETyBiYWQgbmFtaW5nIGFyb3VuZCBwb2ludHNcbmV4cG9ydCBjbGFzcyBOb2RlTW9kZWw8VCA9IHVua25vd24+IGltcGxlbWVudHMgRmxvd0VudGl0eSB7XG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRXaWR0aCA9IDEwMDtcbiAgcHJpdmF0ZSBzdGF0aWMgZGVmYXVsdEhlaWdodCA9IDUwO1xuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0Q29sb3IgPSAnIzFiMjYyYyc7XG5cbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuICBwcml2YXRlIGVudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcblxuICBwcml2YXRlIGludGVybmFsUG9pbnQgPSB0aGlzLmNyZWF0ZUludGVybmFsUG9pbnRTaWduYWwoKTtcblxuICBwcml2YXRlIHRocm90dGxlZFBvaW50JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmludGVybmFsUG9pbnQpLnBpcGUob2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSk7XG5cbiAgcHJpdmF0ZSBub3RUaHJvdHRsZWRQb2ludCQgPSBuZXcgU3ViamVjdDxQb2ludD4oKTtcblxuICBwdWJsaWMgcG9pbnQgPSB0b1NpZ25hbChtZXJnZSh0aGlzLnRocm90dGxlZFBvaW50JCwgdGhpcy5ub3RUaHJvdHRsZWRQb2ludCQpLCB7XG4gICAgaW5pdGlhbFZhbHVlOiB0aGlzLmludGVybmFsUG9pbnQoKSxcbiAgfSk7XG5cbiAgcHVibGljIHBvaW50JCA9IHRoaXMudGhyb3R0bGVkUG9pbnQkO1xuXG4gIHB1YmxpYyBzaXplID0gc2lnbmFsKHsgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcbiAgcHVibGljIHNpemUkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2l6ZSk7XG5cbiAgcHVibGljIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaXplKCkud2lkdGgpO1xuICBwdWJsaWMgaGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaXplKCkuaGVpZ2h0KTtcblxuICBwdWJsaWMgcmVuZGVyT3JkZXIgPSBzaWduYWwoMCk7XG5cbiAgcHVibGljIHNlbGVjdGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHNlbGVjdGVkJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNlbGVjdGVkKTtcblxuICBwdWJsaWMgZ2xvYmFsUG9pbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMucGFyZW50KCk7XG4gICAgbGV0IHggPSB0aGlzLnBvaW50KCkueDtcbiAgICBsZXQgeSA9IHRoaXMucG9pbnQoKS55O1xuXG4gICAgd2hpbGUgKHBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgeCArPSBwYXJlbnQucG9pbnQoKS54O1xuICAgICAgeSArPSBwYXJlbnQucG9pbnQoKS55O1xuXG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgeCwgeSB9O1xuICB9KTtcblxuICBwdWJsaWMgcG9pbnRUcmFuc2Zvcm0gPSBjb21wdXRlZCgoKSA9PiBgdHJhbnNsYXRlKCR7dGhpcy5nbG9iYWxQb2ludCgpLnh9LCAke3RoaXMuZ2xvYmFsUG9pbnQoKS55fSlgKTtcblxuICBwdWJsaWMgaGFuZGxlcyA9IHNpZ25hbDxIYW5kbGVNb2RlbFtdPihbXSk7XG5cbiAgcHVibGljIGhhbmRsZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMuaGFuZGxlcyk7XG5cbiAgcHVibGljIGRyYWdnYWJsZSA9IHNpZ25hbCh0cnVlKTtcblxuICBwdWJsaWMgZHJhZ0hhbmRsZXNDb3VudCA9IHNpZ25hbCgwKTtcblxuICAvLyBkaXNhYmxlZCBmb3IgY29uZmlndXJhdGlvbiBmb3Igbm93XG4gIHB1YmxpYyByZWFkb25seSBtYWduZXRSYWRpdXMgPSAyMDtcblxuICAvLyBUT0RPOiBub3Qgc3VyZSBpZiB3ZSBuZWVkIHRvIHN0YXRpY2FsbHkgc3RvcmUgaXRcbiAgcHVibGljIGlzQ29tcG9uZW50VHlwZSA9IGlzQ29tcG9uZW50U3RhdGljTm9kZSh0aGlzLm5vZGUgYXMgTm9kZSkgfHwgaXNDb21wb25lbnREeW5hbWljTm9kZSh0aGlzLm5vZGUgYXMgRHluYW1pY05vZGUpO1xuXG4gIC8vIERlZmF1bHQgbm9kZSBzcGVjaWZpYyB0aGluZ1xuICBwdWJsaWMgdGV4dCA9IHRoaXMuY3JlYXRlVGV4dFNpZ25hbCgpO1xuXG4gIC8vIENvbXBvbmVudCBub2RlIHNwZWNpZmljIHRoaW5nXG4gIHB1YmxpYyBjb21wb25lbnRUeXBlSW5wdXRzID0ge1xuICAgIG5vZGU6IHRoaXMubm9kZSxcbiAgfTtcblxuICBwdWJsaWMgcGFyZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKS5maW5kKChuKSA9PiBuLm5vZGUuaWQgPT09IHRoaXMucGFyZW50SWQoKSkgPz8gbnVsbCk7XG5cbiAgcHVibGljIGNoaWxkcmVuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKS5maWx0ZXIoKG4pID0+IG4ucGFyZW50SWQoKSA9PT0gdGhpcy5ub2RlLmlkKSk7XG5cbiAgcHVibGljIGNvbG9yID0gc2lnbmFsKE5vZGVNb2RlbC5kZWZhdWx0Q29sb3IpO1xuXG4gIHB1YmxpYyByZXNpemFibGUgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVzaXppbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVzaXplclRlbXBsYXRlID0gc2lnbmFsPFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSBwYXJlbnRJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbm9kZTogTm9kZTxUPiB8IER5bmFtaWNOb2RlPFQ+KSB7XG4gICAgaWYgKGlzRGVmaW5lZChub2RlLmRyYWdnYWJsZSkpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHRoaXMuZHJhZ2dhYmxlID0gbm9kZS5kcmFnZ2FibGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRyYWdnYWJsZS5zZXQobm9kZS5kcmFnZ2FibGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc0RlZmluZWQobm9kZS5wYXJlbnRJZCkpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHRoaXMucGFyZW50SWQgPSBub2RlLnBhcmVudElkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJlbnRJZC5zZXQobm9kZS5wYXJlbnRJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlZmF1bHQtZ3JvdXAnICYmIG5vZGUuY29sb3IpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHRoaXMuY29sb3IgPSBub2RlLmNvbG9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2xvci5zZXQobm9kZS5jb2xvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlZmF1bHQtZ3JvdXAnICYmIG5vZGUucmVzaXphYmxlKSB7XG4gICAgICBpZiAoaXNEeW5hbWljTm9kZShub2RlKSkge1xuICAgICAgICB0aGlzLnJlc2l6YWJsZSA9IG5vZGUucmVzaXphYmxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNpemFibGUuc2V0KG5vZGUucmVzaXphYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0UG9pbnQocG9pbnQ6IFBvaW50LCB0aHJvdHRsZTogYm9vbGVhbikge1xuICAgIGlmICh0aHJvdHRsZSkge1xuICAgICAgdGhpcy5pbnRlcm5hbFBvaW50LnNldChwb2ludCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90VGhyb3R0bGVkUG9pbnQkLm5leHQocG9pbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPIGZpbmQgdGhlIHdheSB0byBpbXBsZW1lbnQgdGhpcyBiZXR0ZXJcbiAgICovXG4gIHB1YmxpYyBsaW5rRGVmYXVsdE5vZGVTaXplV2l0aE1vZGVsU2l6ZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlO1xuXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgY2FzZSAnZGVmYXVsdC1ncm91cCc6XG4gICAgICBjYXNlICd0ZW1wbGF0ZS1ncm91cCc6IHtcbiAgICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2l6ZS5zZXQoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiBub2RlLndpZHRoPy4oKSA/PyBOb2RlTW9kZWwuZGVmYXVsdFdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogbm9kZS5oZWlnaHQ/LigpID8/IE5vZGVNb2RlbC5kZWZhdWx0SGVpZ2h0LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNpemUuc2V0KHtcbiAgICAgICAgICAgIHdpZHRoOiBub2RlLndpZHRoID8/IE5vZGVNb2RlbC5kZWZhdWx0V2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IG5vZGUuaGVpZ2h0ID8/IE5vZGVNb2RlbC5kZWZhdWx0SGVpZ2h0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2h0bWwtdGVtcGxhdGUnIHx8IHRoaXMuaXNDb21wb25lbnRUeXBlKSB7XG4gICAgICBpZiAoaXNEeW5hbWljTm9kZShub2RlKSkge1xuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUud2lkdGggJiYgbm9kZS5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgdGhpcy5zaXplLnNldCh7XG4gICAgICAgICAgICAgICAgd2lkdGg6IG5vZGUud2lkdGgoKSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IG5vZGUuaGVpZ2h0KCksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5vZGUud2lkdGggJiYgbm9kZS5oZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLnNpemUuc2V0KHsgd2lkdGg6IG5vZGUud2lkdGgsIGhlaWdodDogbm9kZS5oZWlnaHQgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRleHRTaWduYWwoKTogU2lnbmFsPHN0cmluZz4ge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGU7XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnZGVmYXVsdCcpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBub2RlLnRleHQgPz8gc2lnbmFsKCcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzaWduYWwobm9kZS50ZXh0ID8/ICcnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmFsKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW50ZXJuYWxQb2ludFNpZ25hbCgpIHtcbiAgICByZXR1cm4gaXNEeW5hbWljTm9kZSh0aGlzLm5vZGUpID8gdGhpcy5ub2RlLnBvaW50IDogc2lnbmFsKHsgeDogdGhpcy5ub2RlLnBvaW50LngsIHk6IHRoaXMubm9kZS5wb2ludC55IH0pO1xuICB9XG59XG4iXX0=
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGFBQWEsR0FDZCxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsTUFBTSxPQUFPLFNBQVM7YUFDTCxpQkFBWSxHQUFHLEdBQUcsQUFBTixDQUFPO2FBQ25CLGtCQUFhLEdBQUcsRUFBRSxBQUFMLENBQU07YUFDbkIsaUJBQVksR0FBRyxTQUFTLEFBQVosQ0FBYTtJQWdGeEMsWUFBbUIsSUFBOEI7UUFBOUIsU0FBSSxHQUFKLElBQUksQ0FBMEI7UUE5RXpDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0MsVUFBSyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3pDLFdBQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLFVBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELFdBQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLFdBQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxD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QUVPLHlCQUF5QjtRQUMvQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxZQUFvQjtRQUM1QyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxZQUFvQjtRQUM3QyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIFRlbXBsYXRlUmVmLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIER5bmFtaWNOb2RlLFxuICBOb2RlLFxuICBpc0NvbXBvbmVudER5bmFtaWNOb2RlLFxuICBpc0NvbXBvbmVudFN0YXRpY05vZGUsXG4gIGlzRHluYW1pY05vZGUsXG59IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvaXMtZGVmaW5lZCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4vaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgTm9kZU1vZGVsPFQgPSB1bmtub3duPiBpbXBsZW1lbnRzIEZsb3dFbnRpdHkge1xuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0V2lkdGggPSAxMDA7XG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRIZWlnaHQgPSA1MDtcbiAgcHJpdmF0ZSBzdGF0aWMgZGVmYXVsdENvbG9yID0gJyMxYjI2MmMnO1xuXG4gIHByaXZhdGUgZW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuXG4gIHB1YmxpYyBwb2ludCA9IHRoaXMuY3JlYXRlSW50ZXJuYWxQb2ludFNpZ25hbCgpO1xuICBwdWJsaWMgcG9pbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMucG9pbnQpO1xuXG4gIHB1YmxpYyB3aWR0aCA9IHRoaXMuY3JlYXRlV2lkdGhTaWduYWwoTm9kZU1vZGVsLmRlZmF1bHRXaWR0aCk7XG4gIHB1YmxpYyB3aWR0aCQgPSB0b09ic2VydmFibGUodGhpcy53aWR0aCk7XG5cbiAgcHVibGljIGhlaWdodCA9IHRoaXMuY3JlYXRlSGVpZ2h0U2lnbmFsKE5vZGVNb2RlbC5kZWZhdWx0SGVpZ2h0KTtcbiAgcHVibGljIGhlaWdodCQgPSB0b09ic2VydmFibGUodGhpcy5oZWlnaHQpO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2lkdGggb3IgaGVpZ2h0IHNpZ25hbHNcbiAgICovXG4gIHB1YmxpYyBzaXplID0gY29tcHV0ZWQoKCkgPT4gKHsgd2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpIH0pKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB3aWR0aCQgb3IgaGVpZ2h0JFxuICAgKi9cbiAgcHVibGljIHNpemUkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2l6ZSk7XG5cbiAgcHVibGljIHN0eWxlV2lkdGggPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLndpZHRoKCl9cHhgKTtcbiAgcHVibGljIHN0eWxlSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gYCR7dGhpcy5oZWlnaHQoKX1weGApO1xuXG4gIHB1YmxpYyByZW5kZXJPcmRlciA9IHNpZ25hbCgwKTtcblxuICBwdWJsaWMgc2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgc2VsZWN0ZWQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VsZWN0ZWQpO1xuXG4gIHB1YmxpYyBnbG9iYWxQb2ludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5wYXJlbnQoKTtcbiAgICBsZXQgeCA9IHRoaXMucG9pbnQoKS54O1xuICAgIGxldCB5ID0gdGhpcy5wb2ludCgpLnk7XG5cbiAgICB3aGlsZSAocGFyZW50ICE9PSBudWxsKSB7XG4gICAgICB4ICs9IHBhcmVudC5wb2ludCgpLng7XG4gICAgICB5ICs9IHBhcmVudC5wb2ludCgpLnk7XG5cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB4LCB5IH07XG4gIH0pO1xuXG4gIHB1YmxpYyBwb2ludFRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+IGB0cmFuc2xhdGUoJHt0aGlzLmdsb2JhbFBvaW50KCkueH0sICR7dGhpcy5nbG9iYWxQb2ludCgpLnl9KWApO1xuXG4gIHB1YmxpYyBoYW5kbGVzID0gc2lnbmFsPEhhbmRsZU1vZGVsW10+KFtdKTtcbiAgcHVibGljIGhhbmRsZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMuaGFuZGxlcyk7XG5cbiAgcHVibGljIGRyYWdnYWJsZSA9IHNpZ25hbCh0cnVlKTtcblxuICBwdWJsaWMgZHJhZ0hhbmRsZXNDb3VudCA9IHNpZ25hbCgwKTtcblxuICAvLyBkaXNhYmxlZCBmb3IgY29uZmlndXJhdGlvbiBmb3Igbm93XG4gIHB1YmxpYyByZWFkb25seSBtYWduZXRSYWRpdXMgPSAyMDtcblxuICAvLyBUT0RPOiBub3Qgc3VyZSBpZiB3ZSBuZWVkIHRvIHN0YXRpY2FsbHkgc3RvcmUgaXRcbiAgcHVibGljIGlzQ29tcG9uZW50VHlwZSA9IGlzQ29tcG9uZW50U3RhdGljTm9kZSh0aGlzLm5vZGUgYXMgTm9kZSkgfHwgaXNDb21wb25lbnREeW5hbWljTm9kZSh0aGlzLm5vZGUgYXMgRHluYW1pY05vZGUpO1xuXG4gIC8vIERlZmF1bHQgbm9kZSBzcGVjaWZpYyB0aGluZ1xuICBwdWJsaWMgdGV4dCA9IHRoaXMuY3JlYXRlVGV4dFNpZ25hbCgpO1xuXG4gIC8vIENvbXBvbmVudCBub2RlIHNwZWNpZmljIHRoaW5nXG4gIHB1YmxpYyBjb21wb25lbnRUeXBlSW5wdXRzID0ge1xuICAgIG5vZGU6IHRoaXMubm9kZSxcbiAgfTtcblxuICBwdWJsaWMgcGFyZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKS5maW5kKChuKSA9PiBuLm5vZGUuaWQgPT09IHRoaXMucGFyZW50SWQoKSkgPz8gbnVsbCk7XG5cbiAgcHVibGljIGNoaWxkcmVuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKS5maWx0ZXIoKG4pID0+IG4ucGFyZW50SWQoKSA9PT0gdGhpcy5ub2RlLmlkKSk7XG5cbiAgcHVibGljIGNvbG9yID0gc2lnbmFsKE5vZGVNb2RlbC5kZWZhdWx0Q29sb3IpO1xuXG4gIHB1YmxpYyByZXNpemFibGUgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVzaXppbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgcmVzaXplclRlbXBsYXRlID0gc2lnbmFsPFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSBwYXJlbnRJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbm9kZTogTm9kZTxUPiB8IER5bmFtaWNOb2RlPFQ+KSB7XG4gICAgaWYgKGlzRGVmaW5lZChub2RlLmRyYWdnYWJsZSkpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHRoaXMuZHJhZ2dhYmxlID0gbm9kZS5kcmFnZ2FibGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRyYWdnYWJsZS5zZXQobm9kZS5kcmFnZ2FibGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc0RlZmluZWQobm9kZS5wYXJlbnRJZCkpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHRoaXMucGFyZW50SWQgPSBub2RlLnBhcmVudElkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJlbnRJZC5zZXQobm9kZS5wYXJlbnRJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlZmF1bHQtZ3JvdXAnICYmIG5vZGUuY29sb3IpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHRoaXMuY29sb3IgPSBub2RlLmNvbG9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2xvci5zZXQobm9kZS5jb2xvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlZmF1bHQtZ3JvdXAnICYmIG5vZGUucmVzaXphYmxlKSB7XG4gICAgICBpZiAoaXNEeW5hbWljTm9kZShub2RlKSkge1xuICAgICAgICB0aGlzLnJlc2l6YWJsZSA9IG5vZGUucmVzaXphYmxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNpemFibGUuc2V0KG5vZGUucmVzaXphYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0UG9pbnQocG9pbnQ6IFBvaW50KSB7XG4gICAgdGhpcy5wb2ludC5zZXQocG9pbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUZXh0U2lnbmFsKCk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlO1xuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICBpZiAoaXNEeW5hbWljTm9kZShub2RlKSkge1xuICAgICAgICByZXR1cm4gbm9kZS50ZXh0ID8/IHNpZ25hbCgnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc2lnbmFsKG5vZGUudGV4dCA/PyAnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hbCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUludGVybmFsUG9pbnRTaWduYWwoKSB7XG4gICAgcmV0dXJuIGlzRHluYW1pY05vZGUodGhpcy5ub2RlKSA/IHRoaXMubm9kZS5wb2ludCA6IHNpZ25hbCh7IHg6IHRoaXMubm9kZS5wb2ludC54LCB5OiB0aGlzLm5vZGUucG9pbnQueSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlV2lkdGhTaWduYWwoZGVmYXVsdFZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gaXNEeW5hbWljTm9kZSh0aGlzLm5vZGUpXG4gICAgICA/ICh0aGlzLm5vZGUud2lkdGggPz8gc2lnbmFsKGRlZmF1bHRWYWx1ZSkpXG4gICAgICA6IHNpZ25hbCh0aGlzLm5vZGUud2lkdGggPz8gZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSGVpZ2h0U2lnbmFsKGRlZmF1bHRWYWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGlzRHluYW1pY05vZGUodGhpcy5ub2RlKVxuICAgICAgPyAodGhpcy5ub2RlLmhlaWdodCA/PyBzaWduYWwoZGVmYXVsdFZhbHVlKSlcbiAgICAgIDogc2lnbmFsKHRoaXMubm9kZS5oZWlnaHQgPz8gZGVmYXVsdFZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -31,11 +31,11 @@ export class HandleComponent {
|
|
|
31
31
|
position: this.position(),
|
|
32
32
|
type: this.type(),
|
|
33
33
|
id: this.id(),
|
|
34
|
-
|
|
34
|
+
hostReference: this.element.parentElement,
|
|
35
35
|
template: this.template(),
|
|
36
36
|
}, node);
|
|
37
37
|
this.handleService.createHandle(this.model);
|
|
38
|
-
requestAnimationFrame(() => this.model.
|
|
38
|
+
requestAnimationFrame(() => this.model.updateHost());
|
|
39
39
|
this.destroyRef.onDestroy(() => this.handleService.destroyHandle(this.model));
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
49
49
|
type: Component,
|
|
50
50
|
args: [{ standalone: true, selector: 'handle', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
|
|
51
51
|
}], propDecorators: { ngOnInit: [] } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFHUixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixNQUFNLHFEQUFxRCxDQUFDOztBQVFyRyxNQUFNLE9BQU8sZUFBZTtJQU41QjtRQU9TLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ3BFLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEM7O1dBRUc7UUFDSSxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBWSxDQUFDO1FBRTdDOztXQUVHO1FBQ0ksU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFFcEQ7O1dBRUc7UUFDSSxPQUFFLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFFckIsYUFBUSxHQUFHLEtBQUssRUFBb0IsQ0FBQztLQTJCN0M7SUF0QlEsUUFBUTtRQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFdkMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQzFCO2dCQUNFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDakIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ2IsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYztnQkFDMUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7YUFDMUIsRUFDRCxJQUFJLENBQ0wsQ0FBQztZQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFFckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQztJQUNILENBQUM7K0dBL0NVLGVBQWU7bUdBQWYsZUFBZSxrakJDdEI1QixFQUFBOztBRGdEUztJQUROLGdCQUFnQjsrQ0FzQmhCOzRGQS9DVSxlQUFlO2tCQU4zQixTQUFTO2lDQUNJLElBQUksWUFDTixRQUFRLG1CQUVELHVCQUF1QixDQUFDLE1BQU07OEJBNEJ4QyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0b3IsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9wb3NpdGlvbi50eXBlJztcbmltcG9ydCB7IEhhbmRsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oYW5kbGUuc2VydmljZSc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9oYW5kbGUubW9kZWwnO1xuaW1wb3J0IHsgSW5qZWN0aW9uQ29udGV4dCwgV2l0aEluamVjdG9yIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9ydW4taW4taW5qZWN0aW9uLWNvbnRleHQuZGVjb3JhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaGFuZGxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hhbmRsZS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBIYW5kbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFdpdGhJbmplY3RvciB7XG4gIHB1YmxpYyBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgaGFuZGxlU2VydmljZSA9IGluamVjdChIYW5kbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgLyoqXG4gICAqIEF0IHdoYXQgc2lkZSBvZiBub2RlIHRoaXMgY29tcG9uZW50IHNob3VsZCBiZSBwbGFjZWRcbiAgICovXG4gIHB1YmxpYyBwb3NpdGlvbiA9IGlucHV0LnJlcXVpcmVkPFBvc2l0aW9uPigpO1xuXG4gIC8qKlxuICAgKiBTb3VyY2Ugb3IgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgdHlwZSA9IGlucHV0LnJlcXVpcmVkPCdzb3VyY2UnIHwgJ3RhcmdldCc+KCk7XG5cbiAgLyoqXG4gICAqIFNob3VsZCBiZSB1c2VkIGlmIG5vZGUgaGFzIG1vcmUgdGhhbiBvbmUgc291cmNlL3RhcmdldFxuICAgKi9cbiAgcHVibGljIGlkID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG5cbiAgcHVibGljIG1vZGVsITogSGFuZGxlTW9kZWw7XG5cbiAgQEluamVjdGlvbkNvbnRleHRcbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmhhbmRsZVNlcnZpY2Uubm9kZSgpO1xuXG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHRoaXMubW9kZWwgPSBuZXcgSGFuZGxlTW9kZWwoXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbigpLFxuICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSgpLFxuICAgICAgICAgIGlkOiB0aGlzLmlkKCksXG4gICAgICAgICAgaG9zdFJlZmVyZW5jZTogdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQhLFxuICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnRlbXBsYXRlKCksXG4gICAgICAgIH0sXG4gICAgICAgIG5vZGUsXG4gICAgICApO1xuXG4gICAgICB0aGlzLmhhbmRsZVNlcnZpY2UuY3JlYXRlSGFuZGxlKHRoaXMubW9kZWwpO1xuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5tb2RlbC51cGRhdGVIb3N0KCkpO1xuXG4gICAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMuaGFuZGxlU2VydmljZS5kZXN0cm95SGFuZGxlKHRoaXMubW9kZWwpKTtcbiAgICB9XG4gIH1cbn1cbiIsIiJdfQ==
|
|
@@ -67,8 +67,9 @@ export class ResizableComponent {
|
|
|
67
67
|
return;
|
|
68
68
|
const offset = calcOffset(event.movementX, event.movementY, this.zoom());
|
|
69
69
|
const { x, y, width, height } = constrainRect(applyResize(this.resizeSide, this.model, offset), this.model, this.resizeSide, this.minWidth, this.minHeight);
|
|
70
|
-
this.model.setPoint({ x, y }
|
|
71
|
-
this.model.
|
|
70
|
+
this.model.setPoint({ x, y });
|
|
71
|
+
this.model.width.set(width);
|
|
72
|
+
this.model.height.set(height);
|
|
72
73
|
}
|
|
73
74
|
endResize() {
|
|
74
75
|
this.resizeSide = null;
|
|
@@ -215,4 +216,4 @@ function constrainRect(rect, model, side, minWidth, minHeight) {
|
|
|
215
216
|
height,
|
|
216
217
|
};
|
|
217
218
|
}
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUdOLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLHVCQUF1QixHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFJM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBWXRFLE1BQU0sT0FBTyxr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LE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxDQUFDO1FBQ0QsQ0FBQztRQUNELEtBQUs7UUFDTCxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIGlucHV0LFxuICB2aWV3Q2hpbGQsXG4gIGVmZmVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tICcuLi8uLi91dGlscy9yb3VuZCc7XG5pbXBvcnQgeyBNaWNyb3Rhc2sgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL21pY3JvdGFzay5kZWNvcmF0b3InO1xuaW1wb3J0IHsgZ2V0Tm9kZXNCb3VuZHMgfSBmcm9tICcuLi8uLi91dGlscy9ub2Rlcyc7XG5pbXBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1hY2Nlc3Nvci5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlY3QnO1xuaW1wb3J0IHsgUG9pbnRlckV2ZW50IH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yb290LXBvaW50ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zcGFjZS1wb2ludC1jb250ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9wb2ludGVyLmRpcmVjdGl2ZSc7XG5cbnR5cGUgU2lkZSA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3RvcC1yaWdodCcgfCAndG9wLWxlZnQnIHwgJ2JvdHRvbS1yaWdodCcgfCAnYm90dG9tLWxlZnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbcmVzaXphYmxlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXNpemFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXNpemFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1BvaW50ZXJEaXJlY3RpdmVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSBub2RlQWNjZXNzb3IgPSBpbmplY3QoTm9kZUFjY2Vzc29yU2VydmljZSk7XG4gIHByaXZhdGUgcm9vdFBvaW50ZXIgPSBpbmplY3QoUm9vdFBvaW50ZXJEaXJlY3RpdmUpO1xuICBwcml2YXRlIHZpZXdwb3J0U2VydmljZSA9IGluamVjdChWaWV3cG9ydFNlcnZpY2UpO1xuICBwcml2YXRlIHNwYWNlUG9pbnRDb250ZXh0ID0gaW5qZWN0KFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlKTtcbiAgcHJpdmF0ZSBob3N0UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8RWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHB1YmxpYyByZXNpemFibGUgPSBpbnB1dDxib29sZWFuIHwgJyc+KCk7XG5cbiAgcHVibGljIHJlc2l6ZXJDb2xvciA9IGlucHV0KCcjMmU0MTRjJyk7XG5cbiAgcHVibGljIGdhcCA9IGlucHV0KDEuNSk7XG5cbiAgcHJpdmF0ZSByZXNpemVyID0gdmlld0NoaWxkLnJlcXVpcmVkPFRlbXBsYXRlUmVmPHVua25vd24+PigncmVzaXplcicpO1xuXG4gIHByb3RlY3RlZCBnZXQgbW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZUFjY2Vzc29yLm1vZGVsKCkhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxpbmVHYXAgPSAzO1xuICBwcm90ZWN0ZWQgaGFuZGxlU2l6ZSA9IDY7XG5cbiAgcHJpdmF0ZSByZXNpemVTaWRlOiBTaWRlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSB6b29tID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3cG9ydFNlcnZpY2UucmVhZGFibGVWaWV3cG9ydCgpLnpvb20gPz8gMCk7XG5cbiAgcHJpdmF0ZSBtaW5XaWR0aCA9IDA7XG4gIHByaXZhdGUgbWluSGVpZ2h0ID0gMDtcblxuICAvLyBUT0RPOiBhbGxvdyByZXN6aWUgYmVzaWRlIHRoZSBmbG93XG4gIHByb3RlY3RlZCByZXNpemVPbkdsb2JhbE1vdXNlTW92ZSA9IHRoaXMucm9vdFBvaW50ZXIucG9pbnRlck1vdmVtZW50JFxuICAgIC5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMucmVzaXplU2lkZSAhPT0gbnVsbCksXG4gICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5tb3ZlbWVudFggIT09IDAgfHwgZXZlbnQubW92ZW1lbnRZICE9PSAwKSxcbiAgICAgIHRhcCgoZXZlbnQpID0+IHRoaXMucmVzaXplKGV2ZW50KSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIHByb3RlY3RlZCBlbmRSZXNpemVPbkdsb2JhbE1vdXNlVXAgPSB0aGlzLnJvb3RQb2ludGVyLmRvY3VtZW50UG9pbnRlckVuZCRcbiAgICAucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmVuZFJlc2l6ZSgpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgIClcbiAgICAuc3Vic2NyaWJlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXNpemFibGUgPSB0aGlzLnJlc2l6YWJsZSgpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzaXphYmxlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsLnJlc2l6YWJsZS5zZXQocmVzaXphYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1vZGVsLnJlc2l6YWJsZS5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsLnJlc2l6ZXJUZW1wbGF0ZS5zZXQodGhpcy5yZXNpemVyKCkpO1xuICB9XG5cbiAgQE1pY3JvdGFza1xuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMubWluV2lkdGggPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmhvc3RSZWYubmF0aXZlRWxlbWVudCkubWluV2lkdGgucmVwbGFjZSgncHgnLCAnJykgfHwgMDtcbiAgICB0aGlzLm1pbkhlaWdodCA9ICtnZXRDb21wdXRlZFN0eWxlKHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50KS5taW5IZWlnaHQucmVwbGFjZSgncHgnLCAnJykgfHwgMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGFydFJlc2l6ZShzaWRlOiBTaWRlLCBldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlc2l6ZVNpZGUgPSBzaWRlO1xuICAgIHRoaXMubW9kZWwucmVzaXppbmcuc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2l6ZShldmVudDogUG9pbnRlckV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnJlc2l6ZVNpZGUpIHJldHVybjtcbiAgICBpZiAodGhpcy5pc1Jlc2l6ZUNvbnN0cmFpbmVkKGV2ZW50KSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2Zmc2V0ID0gY2FsY09mZnNldChldmVudC5tb3ZlbWVudFgsIGV2ZW50Lm1vdmVtZW50WSwgdGhpcy56b29tKCkpO1xuICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gY29uc3RyYWluUmVjdChcbiAgICAgIGFwcGx5UmVzaXplKHRoaXMucmVzaXplU2lkZSwgdGhpcy5tb2RlbCwgb2Zmc2V0KSxcbiAgICAgIHRoaXMubW9kZWwsXG4gICAgICB0aGlzLnJlc2l6ZVNpZGUsXG4gICAgICB0aGlzLm1pbldpZHRoLFxuICAgICAgdGhpcy5taW5IZWlnaHQsXG4gICAgKTtcblxuICAgIHRoaXMubW9kZWwuc2V0UG9pbnQoeyB4LCB5IH0sIGZhbHNlKTtcbiAgICB0aGlzLm1vZGVsLnNpemUuc2V0KHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbmRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVTaWRlID0gbnVsbDtcbiAgICB0aGlzLm1vZGVsLnJlc2l6aW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzaXplQ29uc3RyYWluZWQoeyB4LCB5LCBtb3ZlbWVudFgsIG1vdmVtZW50WSB9OiBQb2ludGVyRXZlbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBmbG93UG9pbnQgPSB0aGlzLnNwYWNlUG9pbnRDb250ZXh0LmRvY3VtZW50UG9pbnRUb0Zsb3dQb2ludCh7IHgsIHkgfSk7XG5cbiAgICBpZiAodGhpcy5yZXNpemVTaWRlPy5pbmNsdWRlcygncmlnaHQnKSkge1xuICAgICAgaWYgKG1vdmVtZW50WCA+IDAgJiYgZmxvd1BvaW50LnggPCB0aGlzLm1vZGVsLnBvaW50KCkueCArIHRoaXMubW9kZWwuc2l6ZSgpLndpZHRoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobW92ZW1lbnRYIDwgMCAmJiBmbG93UG9pbnQueCA+IHRoaXMubW9kZWwucG9pbnQoKS54ICsgdGhpcy5tb2RlbC5zaXplKCkud2lkdGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzaXplU2lkZT8uaW5jbHVkZXMoJ2xlZnQnKSkge1xuICAgICAgaWYgKG1vdmVtZW50WCA8IDAgJiYgZmxvd1BvaW50LnggPiB0aGlzLm1vZGVsLnBvaW50KCkueCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vdmVtZW50WCA+IDAgJiYgZmxvd1BvaW50LnggPCB0aGlzLm1vZGVsLnBvaW50KCkueCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNpemVTaWRlPy5pbmNsdWRlcygnYm90dG9tJykpIHtcbiAgICAgIGlmIChtb3ZlbWVudFkgPiAwICYmIGZsb3dQb2ludC55IDwgdGhpcy5tb2RlbC5wb2ludCgpLnkgKyB0aGlzLm1vZGVsLnNpemUoKS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb3ZlbWVudFkgPCAwICYmIGZsb3dQb2ludC55ID4gdGhpcy5tb2RlbC5wb2ludCgpLnkgKyB0aGlzLm1vZGVsLnNpemUoKS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzaXplU2lkZT8uaW5jbHVkZXMoJ3RvcCcpKSB7XG4gICAgICBpZiAobW92ZW1lbnRZIDwgMCAmJiBmbG93UG9pbnQueSA+IHRoaXMubW9kZWwucG9pbnQoKS55KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobW92ZW1lbnRZID4gMCAmJiBmbG93UG9pbnQueSA8IHRoaXMubW9kZWwucG9pbnQoKS55KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjT2Zmc2V0KG1vdmVtZW50WDogbnVtYmVyLCBtb3ZlbWVudFk6IG51bWJlciwgem9vbTogbnVtYmVyKSB7XG4gIHJldHVybiB7XG4gICAgb2Zmc2V0WDogcm91bmQobW92ZW1lbnRYIC8gem9vbSksXG4gICAgb2Zmc2V0WTogcm91bmQobW92ZW1lbnRZIC8gem9vbSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGFwcGx5UmVzaXplKHNpZGU6IFNpZGUsIG1vZGVsOiBOb2RlTW9kZWwsIG9mZnNldDogeyBvZmZzZXRYOiBudW1iZXI7IG9mZnNldFk6IG51bWJlciB9KTogUmVjdCB7XG4gIGNvbnN0IHsgb2Zmc2V0WCwgb2Zmc2V0WSB9ID0gb2Zmc2V0O1xuICBjb25zdCB7IHgsIHkgfSA9IG1vZGVsLnBvaW50KCk7XG4gIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gbW9kZWwuc2l6ZSgpO1xuXG4gIC8vIEhhbmRsZSBlYWNoIGNhc2Ugb2YgcmVzaXppbmcgKHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodCwgY29ybmVycylcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICByZXR1cm4geyB4OiB4ICsgb2Zmc2V0WCwgeSwgd2lkdGg6IHdpZHRoIC0gb2Zmc2V0WCwgaGVpZ2h0IH07XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIHsgeCwgeSwgd2lkdGg6IHdpZHRoICsgb2Zmc2V0WCwgaGVpZ2h0IH07XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHJldHVybiB7IHgsIHk6IHkgKyBvZmZzZXRZLCB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQgLSBvZmZzZXRZIH07XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIHJldHVybiB7IHgsIHksIHdpZHRoLCBoZWlnaHQ6IGhlaWdodCArIG9mZnNldFkgfTtcbiAgICBjYXNlICd0b3AtbGVmdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgb2Zmc2V0WCxcbiAgICAgICAgeTogeSArIG9mZnNldFksXG4gICAgICAgIHdpZHRoOiB3aWR0aCAtIG9mZnNldFgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0IC0gb2Zmc2V0WSxcbiAgICAgIH07XG4gICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHgsXG4gICAgICAgIHk6IHkgKyBvZmZzZXRZLFxuICAgICAgICB3aWR0aDogd2lkdGggKyBvZmZzZXRYLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCAtIG9mZnNldFksXG4gICAgICB9O1xuICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBvZmZzZXRYLFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aDogd2lkdGggLSBvZmZzZXRYLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCArIG9mZnNldFksXG4gICAgICB9O1xuICAgIGNhc2UgJ2JvdHRvbS1yaWdodCc6XG4gICAgICByZXR1cm4geyB4LCB5LCB3aWR0aDogd2lkdGggKyBvZmZzZXRYLCBoZWlnaHQ6IGhlaWdodCArIG9mZnNldFkgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25zdHJhaW5SZWN0KHJlY3Q6IFJlY3QsIG1vZGVsOiBOb2RlTW9kZWwsIHNpZGU6IFNpZGUsIG1pbldpZHRoOiBudW1iZXIsIG1pbkhlaWdodDogbnVtYmVyKSB7XG4gIGxldCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IHJlY3Q7XG5cbiAgLy8gMS4gUHJldmVudCBuZWdhdGl2ZSBkaW1lbnNpb25zXG4gIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIDApO1xuICBoZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIDApO1xuXG4gIC8vIDIuIEFwcGx5IG1pbmltdW0gc2l6ZSBjb25zdHJhaW50c1xuICB3aWR0aCA9IE1hdGgubWF4KG1pbldpZHRoLCB3aWR0aCk7XG4gIGhlaWdodCA9IE1hdGgubWF4KG1pbkhlaWdodCwgaGVpZ2h0KTtcblxuICAvLyBBcHBseSBsZWZ0L3RvcCBjb25zdHJhaW50cyBiYXNlZCBvbiBtaW5pbXVtIHNpemVcbiAgeCA9IE1hdGgubWluKHgsIG1vZGVsLnBvaW50KCkueCArIG1vZGVsLnNpemUoKS53aWR0aCAtIG1pbldpZHRoKTtcbiAgeSA9IE1hdGgubWluKHksIG1vZGVsLnBvaW50KCkueSArIG1vZGVsLnNpemUoKS5oZWlnaHQgLSBtaW5IZWlnaHQpO1xuXG4gIGNvbnN0IHBhcmVudCA9IG1vZGVsLnBhcmVudCgpO1xuICAvLyAzLiBBcHBseSBtYXhpbXVtIHNpemUgY29uc3RyYWludHMgYmFzZWQgb24gcGFyZW50IHNpemUgKGlmIGV4aXN0cylcbiAgaWYgKHBhcmVudCkge1xuICAgIHggPSBNYXRoLm1heCh4LCAwKTsgLy8gTGVmdCBib3VuZGFyeSBvZiB0aGUgcGFyZW50XG4gICAgeSA9IE1hdGgubWF4KHksIDApOyAvLyBUb3AgYm91bmRhcnkgb2YgdGhlIHBhcmVudFxuXG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHdpZHRoID0gbW9kZWwucG9pbnQoKS54ICsgbW9kZWwuc2l6ZSgpLndpZHRoO1xuICAgIH1cblxuICAgIGlmICh5ID09PSAwKSB7XG4gICAgICBoZWlnaHQgPSBtb2RlbC5wb2ludCgpLnkgKyBtb2RlbC5zaXplKCkuaGVpZ2h0O1xuICAgIH1cblxuICAgIHdpZHRoID0gTWF0aC5taW4od2lkdGgsIHBhcmVudC5zaXplKCkud2lkdGggLSBtb2RlbC5wb2ludCgpLngpO1xuICAgIGhlaWdodCA9IE1hdGgubWluKGhlaWdodCwgcGFyZW50LnNpemUoKS5oZWlnaHQgLSBtb2RlbC5wb2ludCgpLnkpO1xuICB9XG5cbiAgY29uc3QgYm91bmRzID0gZ2V0Tm9kZXNCb3VuZHMobW9kZWwuY2hpbGRyZW4oKSk7XG4gIC8vIDQuIEFwcGx5IGNoaWxkIG5vZGUgY29uc3RyYWludHMgKGlmIGNoaWxkcmVuIGV4aXN0KVxuICBpZiAoYm91bmRzKSB7XG4gICAgaWYgKHNpZGUuaW5jbHVkZXMoJ2xlZnQnKSkge1xuICAgICAgeCA9IE1hdGgubWluKHgsIG1vZGVsLnBvaW50KCkueCArIG1vZGVsLnNpemUoKS53aWR0aCAtIChib3VuZHMueCArIGJvdW5kcy53aWR0aCkpO1xuICAgICAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgYm91bmRzLnggKyBib3VuZHMud2lkdGgpO1xuICAgIH1cblxuICAgIGlmIChzaWRlLmluY2x1ZGVzKCdyaWdodCcpKSB7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBib3VuZHMueCArIGJvdW5kcy53aWR0aCk7XG4gICAgfVxuXG4gICAgaWYgKHNpZGUuaW5jbHVkZXMoJ2JvdHRvbScpKSB7XG4gICAgICBoZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKHNpZGUuaW5jbHVkZXMoJ3RvcCcpKSB7XG4gICAgICB5ID0gTWF0aC5taW4oeSwgbW9kZWwucG9pbnQoKS55ICsgbW9kZWwuc2l6ZSgpLmhlaWdodCAtIChib3VuZHMueSArIGJvdW5kcy5oZWlnaHQpKTtcbiAgICAgIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gIH07XG59XG4iLCI8bmctdGVtcGxhdGUgI3Jlc2l6ZXI+XG4gIDxzdmc6Zz5cbiAgICA8IS0tIHRvcCBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJ0b3BcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkxXT1cIi1nYXAoKVwiXG4gICAgICBbYXR0ci54Ml09XCJtb2RlbC5zaXplKCkud2lkdGggLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkyXT1cIi1nYXAoKVwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgndG9wJywgJGV2ZW50KVwiIC8+XG4gICAgPCEtLSBMZWZ0IGxpbmUgLS0+XG4gICAgPHN2ZzpsaW5lXG4gICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCItZ2FwKClcIlxuICAgICAgW2F0dHIueTFdPVwibGluZUdhcFwiXG4gICAgICBbYXR0ci54Ml09XCItZ2FwKClcIlxuICAgICAgW2F0dHIueTJdPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIGxpbmVHYXBcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ2xlZnQnLCAkZXZlbnQpXCIgLz5cbiAgICA8IS0tIEJvdHRvbSBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJib3R0b21cIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkxXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgKyBnYXAoKVwiXG4gICAgICBbYXR0ci54Ml09XCJtb2RlbC5zaXplKCkud2lkdGggLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkyXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgKyBnYXAoKVwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgnYm90dG9tJywgJGV2ZW50KVwiIC8+XG4gICAgPCEtLSBSaWdodCBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJyaWdodFwiXG4gICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgIFthdHRyLngxXT1cIm1vZGVsLnNpemUoKS53aWR0aCArIGdhcCgpXCJcbiAgICAgIFthdHRyLnkxXT1cImxpbmVHYXBcIlxuICAgICAgW2F0dHIueDJdPVwibW9kZWwuc2l6ZSgpLndpZHRoICsgZ2FwKClcIlxuICAgICAgW2F0dHIueTJdPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIGxpbmVHYXBcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ3JpZ2h0JywgJGV2ZW50KVwiIC8+XG5cbiAgICA8IS0tIFRvcCBMZWZ0IC0tPlxuICAgIDxzdmc6cmVjdFxuICAgICAgY2xhc3M9XCJ0b3AtbGVmdFwiXG4gICAgICBbYXR0ci54XT1cIi0oaGFuZGxlU2l6ZSAvIDIpIC0gZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCItKGhhbmRsZVNpemUgLyAyKSAtIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCd0b3AtbGVmdCcsICRldmVudClcIiAvPlxuXG4gICAgPCEtLSBUb3AgcmlnaHQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cInRvcC1yaWdodFwiXG4gICAgICBbYXR0ci54XT1cIm1vZGVsLnNpemUoKS53aWR0aCAtIGhhbmRsZVNpemUgLyAyICsgZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCItKGhhbmRsZVNpemUgLyAyKSAtIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCd0b3AtcmlnaHQnLCAkZXZlbnQpXCIgLz5cblxuICAgIDwhLS0gQm90dG9tIGxlZnQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cImJvdHRvbS1sZWZ0XCJcbiAgICAgIFthdHRyLnhdPVwiLShoYW5kbGVTaXplIC8gMikgLSBnYXAoKVwiXG4gICAgICBbYXR0ci55XT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgLSBoYW5kbGVTaXplIC8gMiArIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCdib3R0b20tbGVmdCcsICRldmVudClcIiAvPlxuXG4gICAgPCEtLSBCb3R0b20gcmlnaHQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cImJvdHRvbS1yaWdodFwiXG4gICAgICBbYXR0ci54XT1cIm1vZGVsLnNpemUoKS53aWR0aCAtIGhhbmRsZVNpemUgLyAyICsgZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCJtb2RlbC5zaXplKCkuaGVpZ2h0IC0gaGFuZGxlU2l6ZSAvIDIgKyBnYXAoKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmZpbGxdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgnYm90dG9tLXJpZ2h0JywgJGV2ZW50KVwiIC8+XG4gIDwvc3ZnOmc+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGVudCAvPlxuIl19
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUdOLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLHVCQUF1QixHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFJM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBWXRFLE1BQU0sT0FBTyxrQkFBa0I7SUFlN0IsSUFBYyxLQUFLO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUcsQ0FBQztJQUNwQyxDQUFDO0lBNkJEO1FBN0NRLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsZ0JBQVcsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN2RCxZQUFPLEdBQUcsTUFBTSxDQUFzQixVQUFVLENBQUMsQ0FBQztRQUVuRCxjQUFTLEdBQUcsS0FBSyxFQUFnQixDQUFDO1FBRWxDLGlCQUFZLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWhDLFFBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEIsWUFBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQXVCLFNBQVMsQ0FBQyxDQUFDO1FBTTVELFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLGVBQVUsR0FBZ0IsSUFBSSxDQUFDO1FBRS9CLFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6RSxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUV0QixxQ0FBcUM7UUFDM0IsNEJBQXVCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7YUFDbEUsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxFQUN0QyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQ2pFLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNsQyxrQkFBa0IsRUFBRSxDQUNyQjthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRUwsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUI7YUFDdEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFDM0Isa0JBQWtCLEVBQUUsQ0FDckI7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUdiLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbkMsSUFBSSxPQUFPLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUdNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRVMsV0FBVyxDQUFDLElBQVUsRUFBRSxLQUFZO1FBQzVDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVTLE1BQU0sQ0FBQyxLQUFtQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBQzdCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFNUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUMzQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUNoRCxJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsU0FBUyxDQUNmLENBQUM7UUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVTLFNBQVM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBZ0I7UUFDdEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xGLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xGLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLFNBQVMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuRixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuRixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBaEpVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDBrQkNyQy9CLDJ5RkFzRkEsMFFEcERZLGdCQUFnQjs7QUFxRW5CO0lBRE4sU0FBUzt5REFJVDs0RkFyRVUsa0JBQWtCO2tCQVI5QixTQUFTO2lDQUNJLElBQUksWUFDTixhQUFhLFdBR2QsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFDVix1QkFBdUIsQ0FBQyxNQUFNO3dEQW9FeEMsZUFBZTtBQWlGeEIsU0FBUyxVQUFVLENBQUMsU0FBaUIsRUFBRSxTQUFpQixFQUFFLElBQVk7SUFDcEUsT0FBTztRQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNoQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7S0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFVLEVBQUUsS0FBZ0IsRUFBRSxNQUE0QztJQUM3RixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNwQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUV2QyxtRUFBbUU7SUFDbkUsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssTUFBTTtZQUNULE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDL0QsS0FBSyxPQUFPO1lBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEQsS0FBSyxLQUFLO1lBQ1IsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNoRSxLQUFLLFFBQVE7WUFDWCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNuRCxLQUFLLFVBQVU7WUFDYixPQUFPO2dCQUNMLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTztnQkFDZCxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU87Z0JBQ2QsS0FBSyxFQUFFLEtBQUssR0FBRyxPQUFPO2dCQUN0QixNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU87YUFDekIsQ0FBQztRQUNKLEtBQUssV0FBVztZQUNkLE9BQU87Z0JBQ0wsQ0FBQztnQkFDRCxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU87Z0JBQ2QsS0FBSyxFQUFFLEtBQUssR0FBRyxPQUFPO2dCQUN0QixNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU87YUFDekIsQ0FBQztRQUNKLEtBQUssYUFBYTtZQUNoQixPQUFPO2dCQUNMLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTztnQkFDZCxDQUFDO2dCQUNELEtBQUssRUFBRSxLQUFLLEdBQUcsT0FBTztnQkFDdEIsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPO2FBQ3pCLENBQUM7UUFDSixLQUFLLGNBQWM7WUFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQVUsRUFBRSxLQUFnQixFQUFFLElBQVUsRUFBRSxRQUFnQixFQUFFLFNBQWlCO0lBQ2xHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbkMsaUNBQWlDO0lBQ2pDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFN0Isb0NBQW9DO0lBQ3BDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFckMsbURBQW1EO0lBQ25ELENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDakUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUVuRSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUIscUVBQXFFO0lBQ3JFLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7UUFDbEQsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO1FBRWpELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ1osS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pELENBQUM7UUFFRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDaEQsc0RBQXNEO0lBQ3RELElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxQixDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNwRixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsQ0FBQztRQUNELENBQUM7UUFDRCxLQUFLO1FBQ0wsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBpbnB1dCxcbiAgdmlld0NoaWxkLFxuICBlZmZlY3QsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yb290LXBvaW50ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSAnLi4vLi4vdXRpbHMvcm91bmQnO1xuaW1wb3J0IHsgTWljcm90YXNrIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9taWNyb3Rhc2suZGVjb3JhdG9yJztcbmltcG9ydCB7IGdldE5vZGVzQm91bmRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9kZXMnO1xuaW1wb3J0IHsgTm9kZUFjY2Vzc29yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBSZWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZWN0JztcbmltcG9ydCB7IFBvaW50ZXJFdmVudCB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcm9vdC1wb2ludGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTcGFjZVBvaW50Q29udGV4dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc3BhY2UtcG9pbnQtY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9pbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcG9pbnRlci5kaXJlY3RpdmUnO1xuXG50eXBlIFNpZGUgPSAndG9wJyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ3RvcC1sZWZ0JyB8ICdib3R0b20tcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3Jlc2l6YWJsZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzaXphYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzaXphYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtQb2ludGVyRGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgbm9kZUFjY2Vzc29yID0gaW5qZWN0KE5vZGVBY2Nlc3NvclNlcnZpY2UpO1xuICBwcml2YXRlIHJvb3RQb2ludGVyID0gaW5qZWN0KFJvb3RQb2ludGVyRGlyZWN0aXZlKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzcGFjZVBvaW50Q29udGV4dCA9IGluamVjdChTcGFjZVBvaW50Q29udGV4dERpcmVjdGl2ZSk7XG4gIHByaXZhdGUgaG9zdFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICBwdWJsaWMgcmVzaXphYmxlID0gaW5wdXQ8Ym9vbGVhbiB8ICcnPigpO1xuXG4gIHB1YmxpYyByZXNpemVyQ29sb3IgPSBpbnB1dCgnIzJlNDE0YycpO1xuXG4gIHB1YmxpYyBnYXAgPSBpbnB1dCgxLjUpO1xuXG4gIHByaXZhdGUgcmVzaXplciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ3Jlc2l6ZXInKTtcblxuICBwcm90ZWN0ZWQgZ2V0IG1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGVBY2Nlc3Nvci5tb2RlbCgpITtcbiAgfVxuXG4gIHByb3RlY3RlZCBsaW5lR2FwID0gMztcbiAgcHJvdGVjdGVkIGhhbmRsZVNpemUgPSA2O1xuXG4gIHByaXZhdGUgcmVzaXplU2lkZTogU2lkZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgem9vbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQoKS56b29tID8/IDApO1xuXG4gIHByaXZhdGUgbWluV2lkdGggPSAwO1xuICBwcml2YXRlIG1pbkhlaWdodCA9IDA7XG5cbiAgLy8gVE9ETzogYWxsb3cgcmVzemllIGJlc2lkZSB0aGUgZmxvd1xuICBwcm90ZWN0ZWQgcmVzaXplT25HbG9iYWxNb3VzZU1vdmUgPSB0aGlzLnJvb3RQb2ludGVyLnBvaW50ZXJNb3ZlbWVudCRcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnJlc2l6ZVNpZGUgIT09IG51bGwpLFxuICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQubW92ZW1lbnRYICE9PSAwIHx8IGV2ZW50Lm1vdmVtZW50WSAhPT0gMCksXG4gICAgICB0YXAoKGV2ZW50KSA9PiB0aGlzLnJlc2l6ZShldmVudCkpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBwcm90ZWN0ZWQgZW5kUmVzaXplT25HbG9iYWxNb3VzZVVwID0gdGhpcy5yb290UG9pbnRlci5kb2N1bWVudFBvaW50ZXJFbmQkXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5lbmRSZXNpemUoKSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzaXphYmxlID0gdGhpcy5yZXNpemFibGUoKTtcblxuICAgICAgICBpZiAodHlwZW9mIHJlc2l6YWJsZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbC5yZXNpemFibGUuc2V0KHJlc2l6YWJsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tb2RlbC5yZXNpemFibGUuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5yZXNpemVyVGVtcGxhdGUuc2V0KHRoaXMucmVzaXplcigpKTtcbiAgfVxuXG4gIEBNaWNyb3Rhc2tcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm1pbldpZHRoID0gK2dldENvbXB1dGVkU3R5bGUodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQpLm1pbldpZHRoLnJlcGxhY2UoJ3B4JywgJycpIHx8IDA7XG4gICAgdGhpcy5taW5IZWlnaHQgPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmhvc3RSZWYubmF0aXZlRWxlbWVudCkubWluSGVpZ2h0LnJlcGxhY2UoJ3B4JywgJycpIHx8IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhcnRSZXNpemUoc2lkZTogU2lkZSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNpemVTaWRlID0gc2lkZTtcbiAgICB0aGlzLm1vZGVsLnJlc2l6aW5nLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNpemUoZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICghdGhpcy5yZXNpemVTaWRlKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaXNSZXNpemVDb25zdHJhaW5lZChldmVudCkpIHJldHVybjtcblxuICAgIGNvbnN0IG9mZnNldCA9IGNhbGNPZmZzZXQoZXZlbnQubW92ZW1lbnRYLCBldmVudC5tb3ZlbWVudFksIHRoaXMuem9vbSgpKTtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGNvbnN0cmFpblJlY3QoXG4gICAgICBhcHBseVJlc2l6ZSh0aGlzLnJlc2l6ZVNpZGUsIHRoaXMubW9kZWwsIG9mZnNldCksXG4gICAgICB0aGlzLm1vZGVsLFxuICAgICAgdGhpcy5yZXNpemVTaWRlLFxuICAgICAgdGhpcy5taW5XaWR0aCxcbiAgICAgIHRoaXMubWluSGVpZ2h0LFxuICAgICk7XG5cbiAgICB0aGlzLm1vZGVsLnNldFBvaW50KHsgeCwgeSB9KTtcbiAgICB0aGlzLm1vZGVsLndpZHRoLnNldCh3aWR0aCk7XG4gICAgdGhpcy5tb2RlbC5oZWlnaHQuc2V0KGhlaWdodCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5kUmVzaXplKCkge1xuICAgIHRoaXMucmVzaXplU2lkZSA9IG51bGw7XG4gICAgdGhpcy5tb2RlbC5yZXNpemluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc2l6ZUNvbnN0cmFpbmVkKHsgeCwgeSwgbW92ZW1lbnRYLCBtb3ZlbWVudFkgfTogUG9pbnRlckV2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmxvd1BvaW50ID0gdGhpcy5zcGFjZVBvaW50Q29udGV4dC5kb2N1bWVudFBvaW50VG9GbG93UG9pbnQoeyB4LCB5IH0pO1xuXG4gICAgaWYgKHRoaXMucmVzaXplU2lkZT8uaW5jbHVkZXMoJ3JpZ2h0JykpIHtcbiAgICAgIGlmIChtb3ZlbWVudFggPiAwICYmIGZsb3dQb2ludC54IDwgdGhpcy5tb2RlbC5wb2ludCgpLnggKyB0aGlzLm1vZGVsLnNpemUoKS53aWR0aCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vdmVtZW50WCA8IDAgJiYgZmxvd1BvaW50LnggPiB0aGlzLm1vZGVsLnBvaW50KCkueCArIHRoaXMubW9kZWwuc2l6ZSgpLndpZHRoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2l6ZVNpZGU/LmluY2x1ZGVzKCdsZWZ0JykpIHtcbiAgICAgIGlmIChtb3ZlbWVudFggPCAwICYmIGZsb3dQb2ludC54ID4gdGhpcy5tb2RlbC5wb2ludCgpLngpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb3ZlbWVudFggPiAwICYmIGZsb3dQb2ludC54IDwgdGhpcy5tb2RlbC5wb2ludCgpLngpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzaXplU2lkZT8uaW5jbHVkZXMoJ2JvdHRvbScpKSB7XG4gICAgICBpZiAobW92ZW1lbnRZID4gMCAmJiBmbG93UG9pbnQueSA8IHRoaXMubW9kZWwucG9pbnQoKS55ICsgdGhpcy5tb2RlbC5zaXplKCkuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobW92ZW1lbnRZIDwgMCAmJiBmbG93UG9pbnQueSA+IHRoaXMubW9kZWwucG9pbnQoKS55ICsgdGhpcy5tb2RlbC5zaXplKCkuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2l6ZVNpZGU/LmluY2x1ZGVzKCd0b3AnKSkge1xuICAgICAgaWYgKG1vdmVtZW50WSA8IDAgJiYgZmxvd1BvaW50LnkgPiB0aGlzLm1vZGVsLnBvaW50KCkueSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vdmVtZW50WSA+IDAgJiYgZmxvd1BvaW50LnkgPCB0aGlzLm1vZGVsLnBvaW50KCkueSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY09mZnNldChtb3ZlbWVudFg6IG51bWJlciwgbW92ZW1lbnRZOiBudW1iZXIsIHpvb206IG51bWJlcikge1xuICByZXR1cm4ge1xuICAgIG9mZnNldFg6IHJvdW5kKG1vdmVtZW50WCAvIHpvb20pLFxuICAgIG9mZnNldFk6IHJvdW5kKG1vdmVtZW50WSAvIHpvb20pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBhcHBseVJlc2l6ZShzaWRlOiBTaWRlLCBtb2RlbDogTm9kZU1vZGVsLCBvZmZzZXQ6IHsgb2Zmc2V0WDogbnVtYmVyOyBvZmZzZXRZOiBudW1iZXIgfSk6IFJlY3Qge1xuICBjb25zdCB7IG9mZnNldFgsIG9mZnNldFkgfSA9IG9mZnNldDtcbiAgY29uc3QgeyB4LCB5IH0gPSBtb2RlbC5wb2ludCgpO1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IG1vZGVsLnNpemUoKTtcblxuICAvLyBIYW5kbGUgZWFjaCBjYXNlIG9mIHJlc2l6aW5nICh0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQsIGNvcm5lcnMpXG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgcmV0dXJuIHsgeDogeCArIG9mZnNldFgsIHksIHdpZHRoOiB3aWR0aCAtIG9mZnNldFgsIGhlaWdodCB9O1xuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiB7IHgsIHksIHdpZHRoOiB3aWR0aCArIG9mZnNldFgsIGhlaWdodCB9O1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICByZXR1cm4geyB4LCB5OiB5ICsgb2Zmc2V0WSwgd2lkdGgsIGhlaWdodDogaGVpZ2h0IC0gb2Zmc2V0WSB9O1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICByZXR1cm4geyB4LCB5LCB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQgKyBvZmZzZXRZIH07XG4gICAgY2FzZSAndG9wLWxlZnQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCArIG9mZnNldFgsXG4gICAgICAgIHk6IHkgKyBvZmZzZXRZLFxuICAgICAgICB3aWR0aDogd2lkdGggLSBvZmZzZXRYLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCAtIG9mZnNldFksXG4gICAgICB9O1xuICAgIGNhc2UgJ3RvcC1yaWdodCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4LFxuICAgICAgICB5OiB5ICsgb2Zmc2V0WSxcbiAgICAgICAgd2lkdGg6IHdpZHRoICsgb2Zmc2V0WCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLSBvZmZzZXRZLFxuICAgICAgfTtcbiAgICBjYXNlICdib3R0b20tbGVmdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgb2Zmc2V0WCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoIC0gb2Zmc2V0WCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgKyBvZmZzZXRZLFxuICAgICAgfTtcbiAgICBjYXNlICdib3R0b20tcmlnaHQnOlxuICAgICAgcmV0dXJuIHsgeCwgeSwgd2lkdGg6IHdpZHRoICsgb2Zmc2V0WCwgaGVpZ2h0OiBoZWlnaHQgKyBvZmZzZXRZIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uc3RyYWluUmVjdChyZWN0OiBSZWN0LCBtb2RlbDogTm9kZU1vZGVsLCBzaWRlOiBTaWRlLCBtaW5XaWR0aDogbnVtYmVyLCBtaW5IZWlnaHQ6IG51bWJlcikge1xuICBsZXQgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0O1xuXG4gIC8vIDEuIFByZXZlbnQgbmVnYXRpdmUgZGltZW5zaW9uc1xuICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCAwKTtcbiAgaGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCAwKTtcblxuICAvLyAyLiBBcHBseSBtaW5pbXVtIHNpemUgY29uc3RyYWludHNcbiAgd2lkdGggPSBNYXRoLm1heChtaW5XaWR0aCwgd2lkdGgpO1xuICBoZWlnaHQgPSBNYXRoLm1heChtaW5IZWlnaHQsIGhlaWdodCk7XG5cbiAgLy8gQXBwbHkgbGVmdC90b3AgY29uc3RyYWludHMgYmFzZWQgb24gbWluaW11bSBzaXplXG4gIHggPSBNYXRoLm1pbih4LCBtb2RlbC5wb2ludCgpLnggKyBtb2RlbC5zaXplKCkud2lkdGggLSBtaW5XaWR0aCk7XG4gIHkgPSBNYXRoLm1pbih5LCBtb2RlbC5wb2ludCgpLnkgKyBtb2RlbC5zaXplKCkuaGVpZ2h0IC0gbWluSGVpZ2h0KTtcblxuICBjb25zdCBwYXJlbnQgPSBtb2RlbC5wYXJlbnQoKTtcbiAgLy8gMy4gQXBwbHkgbWF4aW11bSBzaXplIGNvbnN0cmFpbnRzIGJhc2VkIG9uIHBhcmVudCBzaXplIChpZiBleGlzdHMpXG4gIGlmIChwYXJlbnQpIHtcbiAgICB4ID0gTWF0aC5tYXgoeCwgMCk7IC8vIExlZnQgYm91bmRhcnkgb2YgdGhlIHBhcmVudFxuICAgIHkgPSBNYXRoLm1heCh5LCAwKTsgLy8gVG9wIGJvdW5kYXJ5IG9mIHRoZSBwYXJlbnRcblxuICAgIGlmICh4ID09PSAwKSB7XG4gICAgICB3aWR0aCA9IG1vZGVsLnBvaW50KCkueCArIG1vZGVsLnNpemUoKS53aWR0aDtcbiAgICB9XG5cbiAgICBpZiAoeSA9PT0gMCkge1xuICAgICAgaGVpZ2h0ID0gbW9kZWwucG9pbnQoKS55ICsgbW9kZWwuc2l6ZSgpLmhlaWdodDtcbiAgICB9XG5cbiAgICB3aWR0aCA9IE1hdGgubWluKHdpZHRoLCBwYXJlbnQuc2l6ZSgpLndpZHRoIC0gbW9kZWwucG9pbnQoKS54KTtcbiAgICBoZWlnaHQgPSBNYXRoLm1pbihoZWlnaHQsIHBhcmVudC5zaXplKCkuaGVpZ2h0IC0gbW9kZWwucG9pbnQoKS55KTtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kcyA9IGdldE5vZGVzQm91bmRzKG1vZGVsLmNoaWxkcmVuKCkpO1xuICAvLyA0LiBBcHBseSBjaGlsZCBub2RlIGNvbnN0cmFpbnRzIChpZiBjaGlsZHJlbiBleGlzdClcbiAgaWYgKGJvdW5kcykge1xuICAgIGlmIChzaWRlLmluY2x1ZGVzKCdsZWZ0JykpIHtcbiAgICAgIHggPSBNYXRoLm1pbih4LCBtb2RlbC5wb2ludCgpLnggKyBtb2RlbC5zaXplKCkud2lkdGggLSAoYm91bmRzLnggKyBib3VuZHMud2lkdGgpKTtcbiAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIGJvdW5kcy54ICsgYm91bmRzLndpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAoc2lkZS5pbmNsdWRlcygncmlnaHQnKSkge1xuICAgICAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgYm91bmRzLnggKyBib3VuZHMud2lkdGgpO1xuICAgIH1cblxuICAgIGlmIChzaWRlLmluY2x1ZGVzKCdib3R0b20nKSkge1xuICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCBib3VuZHMueSArIGJvdW5kcy5oZWlnaHQpO1xuICAgIH1cblxuICAgIGlmIChzaWRlLmluY2x1ZGVzKCd0b3AnKSkge1xuICAgICAgeSA9IE1hdGgubWluKHksIG1vZGVsLnBvaW50KCkueSArIG1vZGVsLnNpemUoKS5oZWlnaHQgLSAoYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0KSk7XG4gICAgICBoZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICB9O1xufVxuIiwiPG5nLXRlbXBsYXRlICNyZXNpemVyPlxuICA8c3ZnOmc+XG4gICAgPCEtLSB0b3AgbGluZSAtLT5cbiAgICA8c3ZnOmxpbmVcbiAgICAgIGNsYXNzPVwidG9wXCJcbiAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgW2F0dHIueDFdPVwibGluZUdhcFwiXG4gICAgICBbYXR0ci55MV09XCItZ2FwKClcIlxuICAgICAgW2F0dHIueDJdPVwibW9kZWwuc2l6ZSgpLndpZHRoIC0gbGluZUdhcFwiXG4gICAgICBbYXR0ci55Ml09XCItZ2FwKClcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ3RvcCcsICRldmVudClcIiAvPlxuICAgIDwhLS0gTGVmdCBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgW2F0dHIueDFdPVwiLWdhcCgpXCJcbiAgICAgIFthdHRyLnkxXT1cImxpbmVHYXBcIlxuICAgICAgW2F0dHIueDJdPVwiLWdhcCgpXCJcbiAgICAgIFthdHRyLnkyXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnN0cm9rZV09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCdsZWZ0JywgJGV2ZW50KVwiIC8+XG4gICAgPCEtLSBCb3R0b20gbGluZSAtLT5cbiAgICA8c3ZnOmxpbmVcbiAgICAgIGNsYXNzPVwiYm90dG9tXCJcbiAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgW2F0dHIueDFdPVwibGluZUdhcFwiXG4gICAgICBbYXR0ci55MV09XCJtb2RlbC5zaXplKCkuaGVpZ2h0ICsgZ2FwKClcIlxuICAgICAgW2F0dHIueDJdPVwibW9kZWwuc2l6ZSgpLndpZHRoIC0gbGluZUdhcFwiXG4gICAgICBbYXR0ci55Ml09XCJtb2RlbC5zaXplKCkuaGVpZ2h0ICsgZ2FwKClcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ2JvdHRvbScsICRldmVudClcIiAvPlxuICAgIDwhLS0gUmlnaHQgbGluZSAtLT5cbiAgICA8c3ZnOmxpbmVcbiAgICAgIGNsYXNzPVwicmlnaHRcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCJtb2RlbC5zaXplKCkud2lkdGggKyBnYXAoKVwiXG4gICAgICBbYXR0ci55MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLngyXT1cIm1vZGVsLnNpemUoKS53aWR0aCArIGdhcCgpXCJcbiAgICAgIFthdHRyLnkyXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnN0cm9rZV09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCdyaWdodCcsICRldmVudClcIiAvPlxuXG4gICAgPCEtLSBUb3AgTGVmdCAtLT5cbiAgICA8c3ZnOnJlY3RcbiAgICAgIGNsYXNzPVwidG9wLWxlZnRcIlxuICAgICAgW2F0dHIueF09XCItKGhhbmRsZVNpemUgLyAyKSAtIGdhcCgpXCJcbiAgICAgIFthdHRyLnldPVwiLShoYW5kbGVTaXplIC8gMikgLSBnYXAoKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmZpbGxdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgndG9wLWxlZnQnLCAkZXZlbnQpXCIgLz5cblxuICAgIDwhLS0gVG9wIHJpZ2h0IC0tPlxuICAgIDxzdmc6cmVjdFxuICAgICAgY2xhc3M9XCJ0b3AtcmlnaHRcIlxuICAgICAgW2F0dHIueF09XCJtb2RlbC5zaXplKCkud2lkdGggLSBoYW5kbGVTaXplIC8gMiArIGdhcCgpXCJcbiAgICAgIFthdHRyLnldPVwiLShoYW5kbGVTaXplIC8gMikgLSBnYXAoKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmZpbGxdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgndG9wLXJpZ2h0JywgJGV2ZW50KVwiIC8+XG5cbiAgICA8IS0tIEJvdHRvbSBsZWZ0IC0tPlxuICAgIDxzdmc6cmVjdFxuICAgICAgY2xhc3M9XCJib3R0b20tbGVmdFwiXG4gICAgICBbYXR0ci54XT1cIi0oaGFuZGxlU2l6ZSAvIDIpIC0gZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCJtb2RlbC5zaXplKCkuaGVpZ2h0IC0gaGFuZGxlU2l6ZSAvIDIgKyBnYXAoKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmZpbGxdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgnYm90dG9tLWxlZnQnLCAkZXZlbnQpXCIgLz5cblxuICAgIDwhLS0gQm90dG9tIHJpZ2h0IC0tPlxuICAgIDxzdmc6cmVjdFxuICAgICAgY2xhc3M9XCJib3R0b20tcmlnaHRcIlxuICAgICAgW2F0dHIueF09XCJtb2RlbC5zaXplKCkud2lkdGggLSBoYW5kbGVTaXplIC8gMiArIGdhcCgpXCJcbiAgICAgIFthdHRyLnldPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIGhhbmRsZVNpemUgLyAyICsgZ2FwKClcIlxuICAgICAgW2F0dHIud2lkdGhdPVwiaGFuZGxlU2l6ZVwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwiaGFuZGxlU2l6ZVwiXG4gICAgICBbYXR0ci5maWxsXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ2JvdHRvbS1yaWdodCcsICRldmVudClcIiAvPlxuICA8L3N2ZzpnPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRlbnQgLz5cbiJdfQ==
|
|
@@ -93,6 +93,6 @@ function moveNode(model, point) {
|
|
|
93
93
|
point.y = Math.min(parent.size().height - model.size().height, point.y);
|
|
94
94
|
point.y = Math.max(0, point.y);
|
|
95
95
|
}
|
|
96
|
-
model.setPoint(point
|
|
96
|
+
model.setPoint(point);
|
|
97
97
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNOUQsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVVLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FrRnZEO0lBaEZDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQWdCLEVBQUUsS0FBZ0I7UUFDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGVBQWUsQ0FB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TSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgeyBEM0RyYWdFdmVudCwgZHJhZyB9IGZyb20gJ2QzLWRyYWcnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tICcuLi91dGlscy9yb3VuZCc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5cbnR5cGUgRHJhZ0V2ZW50ID0gRDNEcmFnRXZlbnQ8RWxlbWVudCwgdW5rbm93biwgdW5rbm93bj47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEcmFnZ2FibGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBkcmFnZ2FibGUgYmVoYXZpb3IgZm9yIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IHRhcmdldCBlbGVtZW50IGZvciB0b2dnbGluZyBkcmFnZ2FibGVcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHdpdGggZGF0YSBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZW5hYmxlKGVsZW1lbnQ6IEVsZW1lbnQsIG1vZGVsOiBOb2RlTW9kZWwpIHtcbiAgICBzZWxlY3QoZWxlbWVudCkuY2FsbCh0aGlzLmdldERyYWdCZWhhdmlvcihtb2RlbCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgZHJhZ2dhYmxlIGJlaGF2aW9yIGZvciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCB0YXJnZXQgZWxlbWVudCBmb3IgdG9nZ2xpbmcgZHJhZ2dhYmxlXG4gICAqIEBwYXJhbSBtb2RlbCBtb2RlbCB3aXRoIGRhdGEgZm9yIHRoaXMgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGRpc2FibGUoZWxlbWVudDogRWxlbWVudCkge1xuICAgIHNlbGVjdChlbGVtZW50KS5jYWxsKGRyYWcoKS5vbignZHJhZycsIG51bGwpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPOiBub3Qgc2h1cmUgaWYgdGhpcyB3b3JrLCBuZWVkIHRvIGNoZWNrXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZGVzdHJveShlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgc2VsZWN0KGVsZW1lbnQpLm9uKCcuZHJhZycsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vZGUgZHJhZyBiZWhhdmlvci4gVXBkYXRlZCBub2RlJ3MgY29vcmRpbmF0ZSBhY2NvcmRpbmcgdG8gZHJhZ2dpbmdcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGdldERyYWdCZWhhdmlvcihtb2RlbDogTm9kZU1vZGVsKSB7XG4gICAgbGV0IGRyYWdOb2RlczogTm9kZU1vZGVsW10gPSBbXTtcbiAgICBsZXQgaW5pdGlhbFBvc2l0aW9uczogUG9pbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZmlsdGVyQ29uZGl0aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgLy8gaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGRyYWcgaGFuZGxlLCB3ZSBzaG91bGQgY2hlY2sgaWYgd2UgYXJlIGRyYWdnaW5nIGl0XG4gICAgICBpZiAobW9kZWwuZHJhZ0hhbmRsZXNDb3VudCgpKSB7XG4gICAgICAgIHJldHVybiAhIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnLnZmbG93LWRyYWctaGFuZGxlJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICByZXR1cm4gZHJhZygpXG4gICAgICAuZmlsdGVyKGZpbHRlckNvbmRpdGlvbilcbiAgICAgIC5vbignc3RhcnQnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBkcmFnTm9kZXMgPSB0aGlzLmdldERyYWdOb2Rlcyhtb2RlbCk7XG5cbiAgICAgICAgaW5pdGlhbFBvc2l0aW9ucyA9IGRyYWdOb2Rlcy5tYXAoKG5vZGUpID0+ICh7XG4gICAgICAgICAgeDogbm9kZS5wb2ludCgpLnggLSBldmVudC54LFxuICAgICAgICAgIHk6IG5vZGUucG9pbnQoKS55IC0gZXZlbnQueSxcbiAgICAgICAgfSkpO1xuICAgICAgfSlcblxuICAgICAgLm9uKCdkcmFnJywgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgZHJhZ05vZGVzLmZvckVhY2goKG1vZGVsLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBvaW50ID0ge1xuICAgICAgICAgICAgeDogcm91bmQoZXZlbnQueCArIGluaXRpYWxQb3NpdGlvbnNbaW5kZXhdLngpLFxuICAgICAgICAgICAgeTogcm91bmQoZXZlbnQueSArIGluaXRpYWxQb3NpdGlvbnNbaW5kZXhdLnkpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBtb3ZlTm9kZShtb2RlbCwgcG9pbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnTm9kZXMobW9kZWw6IE5vZGVNb2RlbCkge1xuICAgIHJldHVybiBtb2RlbC5zZWxlY3RlZCgpXG4gICAgICA/IHRoaXMuZW50aXRpZXNTZXJ2aWNlXG4gICAgICAgICAgLm5vZGVzKClcbiAgICAgICAgICAvLyBzZWxlY3RlZCBkcmFnZ2FibGUgbm9kZXMgKHdpdGggY3VycmVudCBub2RlKVxuICAgICAgICAgIC5maWx0ZXIoKG5vZGUpID0+IG5vZGUuc2VsZWN0ZWQoKSAmJiBub2RlLmRyYWdnYWJsZSgpKVxuICAgICAgOiAvLyB3ZSBvbmx5IGNhbiBtb3ZlIGN1cnJlbnQgbm9kZSBpZiBpdCdzIG5vdCBzZWxlY3RlZFxuICAgICAgICBbbW9kZWxdO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1vdmVOb2RlKG1vZGVsOiBOb2RlTW9kZWwsIHBvaW50OiBQb2ludCkge1xuICBjb25zdCBwYXJlbnQgPSBtb2RlbC5wYXJlbnQoKTtcbiAgLy8ga2VlcCBub2RlIGluIGJvdW5kcyBvZiBwYXJlbnRcbiAgaWYgKHBhcmVudCkge1xuICAgIHBvaW50LnggPSBNYXRoLm1pbihwYXJlbnQuc2l6ZSgpLndpZHRoIC0gbW9kZWwuc2l6ZSgpLndpZHRoLCBwb2ludC54KTtcbiAgICBwb2ludC54ID0gTWF0aC5tYXgoMCwgcG9pbnQueCk7XG5cbiAgICBwb2ludC55ID0gTWF0aC5taW4ocGFyZW50LnNpemUoKS5oZWlnaHQgLSBtb2RlbC5zaXplKCkuaGVpZ2h0LCBwb2ludC55KTtcbiAgICBwb2ludC55ID0gTWF0aC5tYXgoMCwgcG9pbnQueSk7XG4gIH1cblxuICBtb2RlbC5zZXRQb2ludChwb2ludCk7XG59XG4iXX0=
|
|
@@ -22,18 +22,4 @@ export class FlowStatusService {
|
|
|
22
22
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowStatusService, decorators: [{
|
|
23
23
|
type: Injectable
|
|
24
24
|
}] });
|
|
25
|
-
|
|
26
|
-
* Batch status changes together to call them one after another
|
|
27
|
-
*
|
|
28
|
-
* @param changes list of set[FlowStatus.state]Status() calls
|
|
29
|
-
*/
|
|
30
|
-
export function batchStatusChanges(...changes) {
|
|
31
|
-
if (changes.length) {
|
|
32
|
-
const [firstChange, ...restChanges] = changes;
|
|
33
|
-
// first change is sync
|
|
34
|
-
firstChange();
|
|
35
|
-
// without timer, subscribed effects/comuted signals only get latest value
|
|
36
|
-
restChanges.forEach((change) => setTimeout(() => change()));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0dXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWtDbkQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVrQixXQUFNLEdBQUcsTUFBTSxDQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQTRCL0U7SUExQlEsYUFBYTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLE1BQWlCLEVBQUUsWUFBeUI7UUFDMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sNkJBQTZCLENBQ2xDLEtBQWMsRUFDZCxNQUFpQixFQUNqQixNQUFpQixFQUNqQixZQUF5QixFQUN6QixZQUF5QjtRQUV6QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFTSxzQkFBc0IsQ0FDM0IsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsWUFBeUIsRUFDekIsWUFBeUI7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7K0dBNUJVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOztBQWdDWDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQUcsT0FBdUI7SUFDM0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUM5Qyx1QkFBdUI7UUFDdkIsV0FBVyxFQUFFLENBQUM7UUFDZCwwRUFBMEU7UUFDMUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IENvbm5lY3Rpb25JbnRlcm5hbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi5pbnRlcm5hbC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNJZGxlIHtcbiAgc3RhdGU6ICdpZGxlJztcbiAgcGF5bG9hZDogbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzQ29ubmVjdGlvblN0YXJ0IHtcbiAgc3RhdGU6ICdjb25uZWN0aW9uLXN0YXJ0JztcbiAgcGF5bG9hZDogT21pdDxDb25uZWN0aW9uSW50ZXJuYWwsICd0YXJnZXQnIHwgJ3RhcmdldEhhbmRsZSc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNDb25uZWN0aW9uVmFsaWRhdGlvbiB7XG4gIHN0YXRlOiAnY29ubmVjdGlvbi12YWxpZGF0aW9uJztcbiAgcGF5bG9hZDogQ29ubmVjdGlvbkludGVybmFsICYge1xuICAgIHZhbGlkOiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNDb25uZWN0aW9uRW5kIHtcbiAgc3RhdGU6ICdjb25uZWN0aW9uLWVuZCc7XG4gIHBheWxvYWQ6IENvbm5lY3Rpb25JbnRlcm5hbDtcbn1cblxuZXhwb3J0IHR5cGUgRmxvd1N0YXR1cyA9XG4gIHwgRmxvd1N0YXR1c0lkbGVcbiAgfCBGbG93U3RhdHVzQ29ubmVjdGlvblN0YXJ0XG4gIHwgRmxvd1N0YXR1c0Nvbm5lY3Rpb25WYWxpZGF0aW9uXG4gIHwgRmxvd1N0YXR1c0Nvbm5lY3Rpb25FbmQ7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93U3RhdHVzU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSBzaWduYWw8Rmxvd1N0YXR1cz4oeyBzdGF0ZTogJ2lkbGUnLCBwYXlsb2FkOiBudWxsIH0pO1xuXG4gIHB1YmxpYyBzZXRJZGxlU3RhdHVzKCkge1xuICAgIHRoaXMuc3RhdHVzLnNldCh7IHN0YXRlOiAnaWRsZScsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29ubmVjdGlvblN0YXJ0U3RhdHVzKHNvdXJjZTogTm9kZU1vZGVsLCBzb3VyY2VIYW5kbGU6IEhhbmRsZU1vZGVsKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHsgc3RhdGU6ICdjb25uZWN0aW9uLXN0YXJ0JywgcGF5bG9hZDogeyBzb3VyY2UsIHNvdXJjZUhhbmRsZSB9IH0pO1xuICB9XG5cbiAgcHVibGljIHNldENvbm5lY3Rpb25WYWxpZGF0aW9uU3RhdHVzKFxuICAgIHZhbGlkOiBib29sZWFuLFxuICAgIHNvdXJjZTogTm9kZU1vZGVsLFxuICAgIHRhcmdldDogTm9kZU1vZGVsLFxuICAgIHNvdXJjZUhhbmRsZTogSGFuZGxlTW9kZWwsXG4gICAgdGFyZ2V0SGFuZGxlOiBIYW5kbGVNb2RlbCxcbiAgKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHsgc3RhdGU6ICdjb25uZWN0aW9uLXZhbGlkYXRpb24nLCBwYXlsb2FkOiB7IHNvdXJjZSwgdGFyZ2V0LCBzb3VyY2VIYW5kbGUsIHRhcmdldEhhbmRsZSwgdmFsaWQgfSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25uZWN0aW9uRW5kU3RhdHVzKFxuICAgIHNvdXJjZTogTm9kZU1vZGVsLFxuICAgIHRhcmdldDogTm9kZU1vZGVsLFxuICAgIHNvdXJjZUhhbmRsZTogSGFuZGxlTW9kZWwsXG4gICAgdGFyZ2V0SGFuZGxlOiBIYW5kbGVNb2RlbCxcbiAgKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHsgc3RhdGU6ICdjb25uZWN0aW9uLWVuZCcsIHBheWxvYWQ6IHsgc291cmNlLCB0YXJnZXQsIHNvdXJjZUhhbmRsZSwgdGFyZ2V0SGFuZGxlIH0gfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXRjaCBzdGF0dXMgY2hhbmdlcyB0b2dldGhlciB0byBjYWxsIHRoZW0gb25lIGFmdGVyIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0gY2hhbmdlcyBsaXN0IG9mIHNldFtGbG93U3RhdHVzLnN0YXRlXVN0YXR1cygpIGNhbGxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXRjaFN0YXR1c0NoYW5nZXMoLi4uY2hhbmdlczogKCgpID0+IHZvaWQpW10pIHtcbiAgaWYgKGNoYW5nZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgW2ZpcnN0Q2hhbmdlLCAuLi5yZXN0Q2hhbmdlc10gPSBjaGFuZ2VzO1xuICAgIC8vIGZpcnN0IGNoYW5nZSBpcyBzeW5jXG4gICAgZmlyc3RDaGFuZ2UoKTtcbiAgICAvLyB3aXRob3V0IHRpbWVyLCBzdWJzY3JpYmVkIGVmZmVjdHMvY29tdXRlZCBzaWduYWxzIG9ubHkgZ2V0IGxhdGVzdCB2YWx1ZVxuICAgIHJlc3RDaGFuZ2VzLmZvckVhY2goKGNoYW5nZSkgPT4gc2V0VGltZW91dCgoKSA9PiBjaGFuZ2UoKSkpO1xuICB9XG59XG4iXX0=
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0dXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWtDbkQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVrQixXQUFNLEdBQUcsTUFBTSxDQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQTRCL0U7SUExQlEsYUFBYTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLE1BQWlCLEVBQUUsWUFBeUI7UUFDMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sNkJBQTZCLENBQ2xDLEtBQWMsRUFDZCxNQUFpQixFQUNqQixNQUFpQixFQUNqQixZQUF5QixFQUN6QixZQUF5QjtRQUV6QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFTSxzQkFBc0IsQ0FDM0IsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsWUFBeUIsRUFDekIsWUFBeUI7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7K0dBNUJVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9oYW5kbGUubW9kZWwnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkludGVybmFsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25uZWN0aW9uLmludGVybmFsLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N0YXR1c0lkbGUge1xuICBzdGF0ZTogJ2lkbGUnO1xuICBwYXlsb2FkOiBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNDb25uZWN0aW9uU3RhcnQge1xuICBzdGF0ZTogJ2Nvbm5lY3Rpb24tc3RhcnQnO1xuICBwYXlsb2FkOiBPbWl0PENvbm5lY3Rpb25JbnRlcm5hbCwgJ3RhcmdldCcgfCAndGFyZ2V0SGFuZGxlJz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N0YXR1c0Nvbm5lY3Rpb25WYWxpZGF0aW9uIHtcbiAgc3RhdGU6ICdjb25uZWN0aW9uLXZhbGlkYXRpb24nO1xuICBwYXlsb2FkOiBDb25uZWN0aW9uSW50ZXJuYWwgJiB7XG4gICAgdmFsaWQ6IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N0YXR1c0Nvbm5lY3Rpb25FbmQge1xuICBzdGF0ZTogJ2Nvbm5lY3Rpb24tZW5kJztcbiAgcGF5bG9hZDogQ29ubmVjdGlvbkludGVybmFsO1xufVxuXG5leHBvcnQgdHlwZSBGbG93U3RhdHVzID1cbiAgfCBGbG93U3RhdHVzSWRsZVxuICB8IEZsb3dTdGF0dXNDb25uZWN0aW9uU3RhcnRcbiAgfCBGbG93U3RhdHVzQ29ubmVjdGlvblZhbGlkYXRpb25cbiAgfCBGbG93U3RhdHVzQ29ubmVjdGlvbkVuZDtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTdGF0dXNTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IHNpZ25hbDxGbG93U3RhdHVzPih7IHN0YXRlOiAnaWRsZScsIHBheWxvYWQ6IG51bGwgfSk7XG5cbiAgcHVibGljIHNldElkbGVTdGF0dXMoKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHsgc3RhdGU6ICdpZGxlJywgcGF5bG9hZDogbnVsbCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25uZWN0aW9uU3RhcnRTdGF0dXMoc291cmNlOiBOb2RlTW9kZWwsIHNvdXJjZUhhbmRsZTogSGFuZGxlTW9kZWwpIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ2Nvbm5lY3Rpb24tc3RhcnQnLCBwYXlsb2FkOiB7IHNvdXJjZSwgc291cmNlSGFuZGxlIH0gfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29ubmVjdGlvblZhbGlkYXRpb25TdGF0dXMoXG4gICAgdmFsaWQ6IGJvb2xlYW4sXG4gICAgc291cmNlOiBOb2RlTW9kZWwsXG4gICAgdGFyZ2V0OiBOb2RlTW9kZWwsXG4gICAgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCxcbiAgICB0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICApIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ2Nvbm5lY3Rpb24tdmFsaWRhdGlvbicsIHBheWxvYWQ6IHsgc291cmNlLCB0YXJnZXQsIHNvdXJjZUhhbmRsZSwgdGFyZ2V0SGFuZGxlLCB2YWxpZCB9IH0pO1xuICB9XG5cbiAgcHVibGljIHNldENvbm5lY3Rpb25FbmRTdGF0dXMoXG4gICAgc291cmNlOiBOb2RlTW9kZWwsXG4gICAgdGFyZ2V0OiBOb2RlTW9kZWwsXG4gICAgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCxcbiAgICB0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICApIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ2Nvbm5lY3Rpb24tZW5kJywgcGF5bG9hZDogeyBzb3VyY2UsIHRhcmdldCwgc291cmNlSGFuZGxlLCB0YXJnZXRIYW5kbGUgfSB9KTtcbiAgfVxufVxuIl19
|