ngx-vflow 0.11.0 → 0.13.0-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.
Files changed (44) hide show
  1. package/esm2022/lib/vflow/components/custom-node-base/custom-node-base.component.mjs +7 -3
  2. package/esm2022/lib/vflow/components/node/node.component.mjs +16 -13
  3. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +5 -2
  4. package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +14 -2
  5. package/esm2022/lib/vflow/directives/flow-size-controller.directive.mjs +18 -17
  6. package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +21 -4
  7. package/esm2022/lib/vflow/interfaces/component-node-event.interface.mjs +1 -1
  8. package/esm2022/lib/vflow/interfaces/node.interface.mjs +3 -3
  9. package/esm2022/lib/vflow/models/node.model.mjs +46 -7
  10. package/esm2022/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.mjs +19 -0
  11. package/esm2022/lib/vflow/public-components/custom-node/custom-node.component.mjs +19 -0
  12. package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +265 -0
  13. package/esm2022/lib/vflow/services/component-event-bus.service.mjs +1 -1
  14. package/esm2022/lib/vflow/services/draggable.service.mjs +2 -2
  15. package/esm2022/lib/vflow/services/node-accessor.service.mjs +16 -0
  16. package/esm2022/lib/vflow/services/node-changes.service.mjs +6 -2
  17. package/esm2022/lib/vflow/types/node-change.type.mjs +1 -1
  18. package/esm2022/lib/vflow/utils/resizable.mjs +3 -3
  19. package/esm2022/lib/vflow/vflow.module.mjs +9 -4
  20. package/esm2022/public-api.mjs +4 -3
  21. package/fesm2022/ngx-vflow.mjs +430 -77
  22. package/fesm2022/ngx-vflow.mjs.map +1 -1
  23. package/lib/vflow/components/node/node.component.d.ts +2 -0
  24. package/lib/vflow/components/vflow/vflow.component.d.ts +1 -1
  25. package/lib/vflow/directives/changes-controller.directive.d.ts +5 -2
  26. package/lib/vflow/directives/flow-size-controller.directive.d.ts +3 -2
  27. package/lib/vflow/directives/root-pointer.directive.d.ts +24 -6
  28. package/lib/vflow/directives/space-point-context.directive.d.ts +5 -0
  29. package/lib/vflow/interfaces/component-node-event.interface.d.ts +2 -2
  30. package/lib/vflow/interfaces/node.interface.d.ts +12 -2
  31. package/lib/vflow/models/edge.model.d.ts +1 -17
  32. package/lib/vflow/models/node.model.d.ts +13 -2
  33. package/lib/vflow/public-components/{custom-dynamic-node.component.d.ts → custom-dynamic-node/custom-dynamic-node.component.d.ts} +2 -2
  34. package/lib/vflow/public-components/{custom-node.component.d.ts → custom-node/custom-node.component.d.ts} +2 -2
  35. package/lib/vflow/public-components/resizable/resizable.component.d.ts +39 -0
  36. package/lib/vflow/services/node-accessor.service.d.ts +10 -0
  37. package/lib/vflow/services/node-changes.service.d.ts +8 -0
  38. package/lib/vflow/types/node-change.type.d.ts +8 -1
  39. package/lib/vflow/utils/resizable.d.ts +2 -1
  40. package/lib/vflow/vflow.module.d.ts +13 -12
  41. package/package.json +1 -1
  42. package/public-api.d.ts +3 -2
  43. package/esm2022/lib/vflow/public-components/custom-dynamic-node.component.mjs +0 -19
  44. package/esm2022/lib/vflow/public-components/custom-node.component.mjs +0 -19
@@ -0,0 +1,265 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, computed, ElementRef, inject, Input, ViewChild } from '@angular/core';
3
+ import { RootPointerDirective } from '../../directives/root-pointer.directive';
4
+ import { filter, tap } from 'rxjs';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import { ViewportService } from '../../services/viewport.service';
7
+ import { round } from '../../utils/round';
8
+ import { Microtask } from '../../decorators/microtask.decorator';
9
+ import { getNodesBounds } from '../../utils/nodes';
10
+ import { NodeAccessorService } from '../../services/node-accessor.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../../directives/pointer.directive";
13
+ export class ResizableComponent {
14
+ constructor() {
15
+ this.nodeAccessor = inject(NodeAccessorService);
16
+ this.rootPointer = inject(RootPointerDirective);
17
+ this.viewportService = inject(ViewportService);
18
+ this.hostRef = inject(ElementRef);
19
+ this.resizerColor = '#2e414c';
20
+ this.gap = 1.5;
21
+ this.lineGap = 3;
22
+ this.handleSize = 6;
23
+ this.resizeSide = null;
24
+ this.zoom = computed(() => this.viewportService.readableViewport().zoom ?? 0);
25
+ this.minWidth = 0;
26
+ this.minHeight = 0;
27
+ // TODO: allow reszie beside the flow
28
+ this.resizeOnGlobalMouseMove = this.rootPointer.pointerMovement$
29
+ .pipe(filter(() => this.resizeSide !== null), tap((event) => this.resize(event)), takeUntilDestroyed())
30
+ .subscribe();
31
+ this.endResizeOnGlobalMouseUp = this.rootPointer.documentPointerEnd$
32
+ .pipe(tap(() => this.endResize()), takeUntilDestroyed())
33
+ .subscribe();
34
+ }
35
+ set resizable(value) {
36
+ if (typeof value === 'boolean') {
37
+ this.model.resizable.set(value);
38
+ }
39
+ else {
40
+ this.model.resizable.set(true);
41
+ }
42
+ }
43
+ get model() {
44
+ return this.nodeAccessor.model();
45
+ }
46
+ ngOnInit() {
47
+ this.model.resizerTemplate.set(this.resizer);
48
+ }
49
+ ngAfterViewInit() {
50
+ this.minWidth = +getComputedStyle(this.hostRef.nativeElement).minWidth.replace('px', '') || 0;
51
+ this.minHeight = +getComputedStyle(this.hostRef.nativeElement).minHeight.replace('px', '') || 0;
52
+ }
53
+ startResize(side, event) {
54
+ event.stopPropagation();
55
+ this.resizeSide = side;
56
+ this.model.resizing.set(true);
57
+ }
58
+ resize({ movementX, movementY }) {
59
+ const offsetX = round(movementX / this.zoom());
60
+ const offsetY = round(movementY / this.zoom());
61
+ switch (this.resizeSide) {
62
+ case 'left':
63
+ let x = this.model.point().x + offsetX;
64
+ x = Math.max(x, this.getMinX());
65
+ x = Math.min(x, this.getMaxX());
66
+ // TODO this fixes increasing width when current node hits the parent
67
+ if (x === this.getMinX() || x === this.getMaxX()) {
68
+ return;
69
+ }
70
+ this.model.setPoint({ x, y: this.model.point().y }, false);
71
+ this.model.size.update(({ height, width }) => {
72
+ width -= offsetX;
73
+ width = Math.max(width, this.minWidth);
74
+ width = Math.min(width, this.getMaxWidth());
75
+ return { height, width: width };
76
+ });
77
+ return;
78
+ case 'right':
79
+ this.model.size.update(({ height, width }) => {
80
+ width += offsetX;
81
+ width = Math.max(width, this.minWidth);
82
+ width = Math.min(width, this.getMaxWidth());
83
+ const bounds = getNodesBounds(this.model.children());
84
+ width = Math.max(width, bounds.x + bounds.width);
85
+ return { height, width };
86
+ });
87
+ return;
88
+ case 'top':
89
+ let y = this.model.point().y + offsetY;
90
+ y = Math.max(y, this.getMinY());
91
+ y = Math.min(y, this.getMaxY());
92
+ if (y === this.getMinY() || y === this.getMaxY()) {
93
+ return;
94
+ }
95
+ this.model.setPoint({ x: this.model.point().x, y }, false);
96
+ this.model.size.update(({ height, width }) => {
97
+ height -= offsetY;
98
+ height = Math.max(height, this.minHeight);
99
+ height = Math.min(height, this.getMaxHeight());
100
+ return { width, height };
101
+ });
102
+ return;
103
+ case 'bottom':
104
+ this.model.size.update(({ height, width }) => {
105
+ height += offsetY;
106
+ height = Math.max(height, this.minHeight);
107
+ height = Math.min(height, this.getMaxHeight());
108
+ const bounds = getNodesBounds(this.model.children());
109
+ height = Math.max(height, bounds.y + bounds.height);
110
+ return { width, height };
111
+ });
112
+ return;
113
+ case 'top-left': {
114
+ let x = this.model.point().x + offsetX;
115
+ x = Math.max(x, this.getMinX());
116
+ x = Math.min(x, this.getMaxX());
117
+ let y = this.model.point().y + offsetY;
118
+ y = Math.max(y, this.getMinY());
119
+ y = Math.min(y, this.getMaxY());
120
+ if (x === this.getMinX() || y === this.getMinY() ||
121
+ x === this.getMaxX() || y === this.getMaxY()) {
122
+ return;
123
+ }
124
+ this.model.setPoint({ x, y }, false);
125
+ this.model.size.update(({ height, width }) => {
126
+ width -= offsetX;
127
+ width = Math.max(width, this.minWidth);
128
+ width = Math.min(width, this.getMaxWidth());
129
+ height -= offsetY;
130
+ height = Math.max(height, this.minHeight);
131
+ height = Math.min(height, this.getMaxHeight());
132
+ return { height, width };
133
+ });
134
+ return;
135
+ }
136
+ case 'top-right': {
137
+ let y = this.model.point().y + offsetY;
138
+ y = Math.max(y, this.getMinY());
139
+ y = Math.min(y, this.getMaxY());
140
+ if (y === this.getMinX() || y === this.getMaxY()) {
141
+ return;
142
+ }
143
+ this.model.setPoint({ x: this.model.point().x, y }, false);
144
+ this.model.size.update(({ height, width }) => {
145
+ const bounds = getNodesBounds(this.model.children());
146
+ width += offsetX;
147
+ width = Math.max(width, this.minWidth);
148
+ width = Math.min(width, this.getMaxWidth());
149
+ width = Math.max(width, bounds.x + bounds.width);
150
+ height -= offsetY;
151
+ height = Math.max(height, this.minHeight);
152
+ height = Math.min(height, this.getMaxHeight());
153
+ return { height, width };
154
+ });
155
+ return;
156
+ }
157
+ case 'bottom-left': {
158
+ let x = this.model.point().x + offsetX;
159
+ x = Math.max(x, this.getMinX());
160
+ x = Math.min(x, this.getMaxX());
161
+ if (x === this.getMinX() || x === this.getMaxX()) {
162
+ return;
163
+ }
164
+ this.model.setPoint({ x, y: this.model.point().y }, false);
165
+ this.model.size.update(({ height, width }) => {
166
+ width -= offsetX;
167
+ width = Math.max(width, this.minWidth);
168
+ width = Math.min(width, this.getMaxWidth());
169
+ height += offsetY;
170
+ height = Math.max(height, this.minHeight);
171
+ height = Math.min(height, this.getMaxHeight());
172
+ const bounds = getNodesBounds(this.model.children());
173
+ height = Math.max(height, bounds.y + bounds.height);
174
+ return { height, width };
175
+ });
176
+ return;
177
+ }
178
+ case 'bottom-right': {
179
+ this.model.size.update(({ height, width }) => {
180
+ const bounds = getNodesBounds(this.model.children());
181
+ width += offsetX;
182
+ width = Math.max(width, this.minWidth);
183
+ width = Math.min(width, this.getMaxWidth());
184
+ width = Math.max(width, bounds.x + bounds.width);
185
+ height += offsetY;
186
+ height = Math.max(height, this.minHeight);
187
+ height = Math.min(height, this.getMaxHeight());
188
+ height = Math.max(height, bounds.y + bounds.height);
189
+ return { height, width };
190
+ });
191
+ }
192
+ }
193
+ }
194
+ endResize() {
195
+ this.resizeSide = null;
196
+ this.model.resizing.set(false);
197
+ }
198
+ getMaxWidth() {
199
+ const parent = this.model.parent();
200
+ if (parent) {
201
+ return parent.size().width - this.model.point().x;
202
+ }
203
+ return Infinity;
204
+ }
205
+ getMaxHeight() {
206
+ const parent = this.model.parent();
207
+ if (parent) {
208
+ return parent.size().height - this.model.point().y;
209
+ }
210
+ return Infinity;
211
+ }
212
+ getMinX() {
213
+ const parent = this.model.parent();
214
+ if (parent) {
215
+ return 0;
216
+ }
217
+ return -Infinity;
218
+ }
219
+ getMinY() {
220
+ const parent = this.model.parent();
221
+ if (parent) {
222
+ return 0;
223
+ }
224
+ return -Infinity;
225
+ }
226
+ getMaxX() {
227
+ const x = this.model.point().x;
228
+ const width = this.model.size().width;
229
+ const children = this.model.children();
230
+ if (children) {
231
+ const bounds = getNodesBounds(children);
232
+ return x + (bounds.x + bounds.width) >= x + width ? x : (width - this.minWidth) + x;
233
+ }
234
+ return (width - this.minWidth) + x;
235
+ }
236
+ getMaxY() {
237
+ const y = this.model.point().y;
238
+ const height = this.model.size().height;
239
+ const children = this.model.children();
240
+ if (children) {
241
+ const bounds = getNodesBounds(children);
242
+ return y + (bounds.y + bounds.height) >= y + height ? y : (height - this.minHeight) + y;
243
+ }
244
+ return (height - this.minHeight) + y;
245
+ }
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResizableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResizableComponent, selector: "[resizable]", inputs: { resizable: "resizable", resizerColor: "resizerColor", gap: "gap" }, viewQueries: [{ propertyName: "resizer", first: true, predicate: ["resizer"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #resizer>\n <svg:g>\n <!-- top line -->\n <svg:line\n class=\"top\"\n [attr.x1]=\"lineGap\"\n [attr.y1]=\"-gap\"\n [attr.x2]=\"model.size().width - lineGap\"\n [attr.y2]=\"-gap\"\n [attr.stroke]=\"resizerColor\"\n stroke-width=\"2\"\n (pointerStart)=\"startResize('top', $event)\"\n />\n <!-- Left line -->\n <svg:line\n class=\"left\"\n [attr.x1]=\"-gap\"\n [attr.y1]=\"lineGap\"\n [attr.x2]=\"-gap\"\n [attr.y2]=\"model.size().height - lineGap\"\n [attr.stroke]=\"resizerColor\"\n stroke-width=\"2\"\n (pointerStart)=\"startResize('left', $event)\"\n />\n <!-- Bottom line -->\n <svg:line\n class=\"bottom\"\n [attr.x1]=\"lineGap\"\n [attr.y1]=\"model.size().height + gap\"\n [attr.x2]=\"model.size().width - lineGap\"\n [attr.y2]=\"model.size().height + gap\"\n [attr.stroke]=\"resizerColor\"\n stroke-width=\"2\"\n (pointerStart)=\"startResize('bottom', $event)\"\n />\n <!-- Right line -->\n <svg:line\n class=\"right\"\n [attr.x1]=\"model.size().width + gap\"\n [attr.y1]=\"lineGap\"\n [attr.x2]=\"model.size().width + gap\"\n [attr.y2]=\"model.size().height - lineGap\"\n [attr.stroke]=\"resizerColor\"\n stroke-width=\"2\"\n (pointerStart)=\"startResize('right', $event)\"\n />\n\n <!-- Top Left -->\n <svg:rect\n class=\"top-left\"\n [attr.x]=\"-(handleSize / 2) - gap\"\n [attr.y]=\"-(handleSize / 2) - gap\"\n [attr.width]=\"handleSize\"\n [attr.height]=\"handleSize\"\n [attr.fill]=\"resizerColor\"\n (pointerStart)=\"startResize('top-left', $event)\"\n />\n\n <!-- Top right -->\n <svg:rect\n class=\"top-right\"\n [attr.x]=\"model.size().width - (handleSize / 2) + gap\"\n [attr.y]=\"-(handleSize / 2) - gap\"\n [attr.width]=\"handleSize\"\n [attr.height]=\"handleSize\"\n [attr.fill]=\"resizerColor\"\n (pointerStart)=\"startResize('top-right', $event)\"\n />\n\n <!-- Bottom left -->\n <svg:rect\n class=\"bottom-left\"\n [attr.x]=\"-(handleSize / 2) - gap\"\n [attr.y]=\"model.size().height - (handleSize / 2) + gap\"\n [attr.width]=\"handleSize\"\n [attr.height]=\"handleSize\"\n [attr.fill]=\"resizerColor\"\n (pointerStart)=\"startResize('bottom-left', $event)\"\n />\n\n <!-- Bottom right -->\n <svg:rect\n class=\"bottom-right\"\n [attr.x]=\"model.size().width - (handleSize / 2) + gap\"\n [attr.y]=\"model.size().height - (handleSize / 2) + gap\"\n [attr.width]=\"handleSize\"\n [attr.height]=\"handleSize\"\n [attr.fill]=\"resizerColor\"\n (pointerStart)=\"startResize('bottom-right', $event)\"\n />\n </svg:g>\n</ng-template>\n\n<ng-content />\n", styles: [".top{cursor:n-resize}.left{cursor:w-resize}.right{cursor:e-resize}.bottom{cursor:s-resize}.top-left{cursor:nw-resize}.top-right{cursor:ne-resize}.bottom-left{cursor:sw-resize}.bottom-right{cursor:se-resize}\n"], dependencies: [{ kind: "directive", type: i1.PointerDirective, selector: "[pointerStart], [pointerEnd], [pointerOver], [pointerOut]", outputs: ["pointerOver", "pointerOut", "pointerStart", "pointerEnd"] }] }); }
248
+ }
249
+ __decorate([
250
+ Microtask
251
+ ], ResizableComponent.prototype, "ngAfterViewInit", null);
252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResizableComponent, decorators: [{
253
+ type: Component,
254
+ args: [{ selector: '[resizable]', template: "<ng-template #resizer>\n <svg:g>\n <!-- top line -->\n <svg:line\n class=\"top\"\n [attr.x1]=\"lineGap\"\n [attr.y1]=\"-gap\"\n [attr.x2]=\"model.size().width - lineGap\"\n [attr.y2]=\"-gap\"\n [attr.stroke]=\"resizerColor\"\n stroke-width=\"2\"\n (pointerStart)=\"startResize('top', $event)\"\n />\n <!-- Left line -->\n <svg:line\n class=\"left\"\n [attr.x1]=\"-gap\"\n [attr.y1]=\"lineGap\"\n [attr.x2]=\"-gap\"\n [attr.y2]=\"model.size().height - lineGap\"\n [attr.stroke]=\"resizerColor\"\n stroke-width=\"2\"\n (pointerStart)=\"startResize('left', $event)\"\n />\n <!-- Bottom line -->\n <svg:line\n class=\"bottom\"\n [attr.x1]=\"lineGap\"\n [attr.y1]=\"model.size().height + gap\"\n [attr.x2]=\"model.size().width - lineGap\"\n [attr.y2]=\"model.size().height + gap\"\n [attr.stroke]=\"resizerColor\"\n stroke-width=\"2\"\n (pointerStart)=\"startResize('bottom', $event)\"\n />\n <!-- Right line -->\n <svg:line\n class=\"right\"\n [attr.x1]=\"model.size().width + gap\"\n [attr.y1]=\"lineGap\"\n [attr.x2]=\"model.size().width + gap\"\n [attr.y2]=\"model.size().height - lineGap\"\n [attr.stroke]=\"resizerColor\"\n stroke-width=\"2\"\n (pointerStart)=\"startResize('right', $event)\"\n />\n\n <!-- Top Left -->\n <svg:rect\n class=\"top-left\"\n [attr.x]=\"-(handleSize / 2) - gap\"\n [attr.y]=\"-(handleSize / 2) - gap\"\n [attr.width]=\"handleSize\"\n [attr.height]=\"handleSize\"\n [attr.fill]=\"resizerColor\"\n (pointerStart)=\"startResize('top-left', $event)\"\n />\n\n <!-- Top right -->\n <svg:rect\n class=\"top-right\"\n [attr.x]=\"model.size().width - (handleSize / 2) + gap\"\n [attr.y]=\"-(handleSize / 2) - gap\"\n [attr.width]=\"handleSize\"\n [attr.height]=\"handleSize\"\n [attr.fill]=\"resizerColor\"\n (pointerStart)=\"startResize('top-right', $event)\"\n />\n\n <!-- Bottom left -->\n <svg:rect\n class=\"bottom-left\"\n [attr.x]=\"-(handleSize / 2) - gap\"\n [attr.y]=\"model.size().height - (handleSize / 2) + gap\"\n [attr.width]=\"handleSize\"\n [attr.height]=\"handleSize\"\n [attr.fill]=\"resizerColor\"\n (pointerStart)=\"startResize('bottom-left', $event)\"\n />\n\n <!-- Bottom right -->\n <svg:rect\n class=\"bottom-right\"\n [attr.x]=\"model.size().width - (handleSize / 2) + gap\"\n [attr.y]=\"model.size().height - (handleSize / 2) + gap\"\n [attr.width]=\"handleSize\"\n [attr.height]=\"handleSize\"\n [attr.fill]=\"resizerColor\"\n (pointerStart)=\"startResize('bottom-right', $event)\"\n />\n </svg:g>\n</ng-template>\n\n<ng-content />\n", styles: [".top{cursor:n-resize}.left{cursor:w-resize}.right{cursor:e-resize}.bottom{cursor:s-resize}.top-left{cursor:nw-resize}.top-right{cursor:ne-resize}.bottom-left{cursor:sw-resize}.bottom-right{cursor:se-resize}\n"] }]
255
+ }], propDecorators: { resizable: [{
256
+ type: Input
257
+ }], resizerColor: [{
258
+ type: Input
259
+ }], gap: [{
260
+ type: Input
261
+ }], resizer: [{
262
+ type: ViewChild,
263
+ args: ['resizer', { static: true }]
264
+ }], ngAfterViewInit: [] } });
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQVMzRSxNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBTVUsaUJBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUMxQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQzFDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQ3pDLFlBQU8sR0FBRyxNQUFNLENBQXNCLFVBQVUsQ0FBQyxDQUFBO1FBWWxELGlCQUFZLEdBQUcsU0FBUyxDQUFBO1FBR3hCLFFBQUcsR0FBRyxHQUFHLENBQUM7UUFTUCxZQUFPLEdBQUcsQ0FBQyxDQUFBO1FBQ1gsZUFBVSxHQUFHLENBQUMsQ0FBQTtRQUVoQixlQUFVLEdBQWdCLElBQUksQ0FBQTtRQUU5QixTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUE7UUFFeEUsYUFBUSxHQUFHLENBQUMsQ0FBQTtRQUNaLGNBQVMsR0FBRyxDQUFDLENBQUE7UUFFckIscUNBQXFDO1FBQzNCLDRCQUF1QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCO2FBQ2xFLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsRUFDdEMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ2xDLGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUE7UUFFSiw2QkFBd0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQjthQUN0RSxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUMzQixrQkFBa0IsRUFBRSxDQUNyQjthQUNBLFNBQVMsRUFBRSxDQUFBO0tBcVJmO0lBblVDLElBQ1csU0FBUyxDQUFDLEtBQW1CO1FBQ3RDLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNoQzthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQy9CO0lBQ0gsQ0FBQztJQVdELElBQWMsS0FBSztRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFHLENBQUE7SUFDbkMsQ0FBQztJQTRCTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBR00sZUFBZTtRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDN0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2pHLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBVSxFQUFFLEtBQVk7UUFDNUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBRXZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBNEM7UUFDakYsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBRTlDLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2QixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFBO2dCQUN0QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7Z0JBQy9CLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtnQkFFL0IscUVBQXFFO2dCQUNyRSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDaEQsT0FBTTtpQkFDUDtnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtnQkFFMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtvQkFDM0MsS0FBSyxJQUFJLE9BQU8sQ0FBQTtvQkFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDdEMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO29CQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQTtnQkFDakMsQ0FBQyxDQUFDLENBQUE7Z0JBRUYsT0FBTTtZQUNSLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO29CQUMzQyxLQUFLLElBQUksT0FBTyxDQUFBO29CQUNoQixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO29CQUN0QyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7b0JBRTNDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7b0JBQ3BELEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQTtnQkFDMUIsQ0FBQyxDQUFDLENBQUE7Z0JBRUYsT0FBTTtZQUNSLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUE7Z0JBQ3RDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO2dCQUUvQixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDaEQsT0FBTTtpQkFDUDtnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtnQkFFMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtvQkFDM0MsTUFBTSxJQUFJLE9BQU8sQ0FBQTtvQkFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDekMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO29CQUU5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFBO2dCQUMxQixDQUFDLENBQUMsQ0FBQTtnQkFFRixPQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7b0JBQzNDLE1BQU0sSUFBSSxPQUFPLENBQUE7b0JBQ2pCLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7b0JBQ3pDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtvQkFFOUMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtvQkFDcEQsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUVuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFBO2dCQUMxQixDQUFDLENBQUMsQ0FBQTtnQkFFRixPQUFNO1lBRVIsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUE7Z0JBQ3RDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO2dCQUUvQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUE7Z0JBQ3RDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO2dCQUUvQixJQUNFLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQzVDLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDNUM7b0JBQ0EsT0FBTTtpQkFDUDtnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtnQkFFcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtvQkFDM0MsS0FBSyxJQUFJLE9BQU8sQ0FBQTtvQkFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDdEMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO29CQUUzQyxNQUFNLElBQUksT0FBTyxDQUFBO29CQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO29CQUN6QyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7b0JBRTlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUE7Z0JBQzFCLENBQUMsQ0FBQyxDQUFBO2dCQUVGLE9BQU07YUFDUDtZQUVELEtBQUssV0FBVyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQTtnQkFDdEMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO2dCQUMvQixDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7Z0JBRS9CLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNoRCxPQUFNO2lCQUNQO2dCQUVELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUUxRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO29CQUMzQyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO29CQUVwRCxLQUFLLElBQUksT0FBTyxDQUFBO29CQUNoQixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO29CQUN0QyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7b0JBQzNDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFHaEQsTUFBTSxJQUFJLE9BQU8sQ0FBQTtvQkFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDekMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO29CQUU5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO2dCQUMxQixDQUFDLENBQUMsQ0FBQTtnQkFFRixPQUFNO2FBQ1A7WUFFRCxLQUFLLGFBQWEsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUE7Z0JBQ3RDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO2dCQUUvQixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDaEQsT0FBTTtpQkFDUDtnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtnQkFFMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtvQkFDM0MsS0FBSyxJQUFJLE9BQU8sQ0FBQTtvQkFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDdEMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO29CQUUzQyxNQUFNLElBQUksT0FBTyxDQUFBO29CQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO29CQUN6QyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7b0JBRTlDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7b0JBQ3BELE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFFbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQTtnQkFDMUIsQ0FBQyxDQUFDLENBQUE7Z0JBRUYsT0FBTTthQUNQO1lBRUQsS0FBSyxjQUFjLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtvQkFDM0MsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtvQkFFcEQsS0FBSyxJQUFJLE9BQU8sQ0FBQTtvQkFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDdEMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO29CQUMzQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7b0JBR2hELE1BQU0sSUFBSSxPQUFPLENBQUE7b0JBQ2pCLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7b0JBQ3pDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtvQkFDOUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO2dCQUMxQixDQUFDLENBQUMsQ0FBQTthQUNIO1NBQ0Y7SUFDSCxDQUFDO0lBRVMsU0FBUztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUVsQyxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUNsRDtRQUVELE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFbEMsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7U0FDbkQ7UUFFRCxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFbEMsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLENBQUMsQ0FBQTtTQUNUO1FBRUQsT0FBTyxDQUFDLFFBQVEsQ0FBQTtJQUNsQixDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFbEMsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLENBQUMsQ0FBQTtTQUNUO1FBRUQsT0FBTyxDQUFDLFFBQVEsQ0FBQTtJQUNsQixDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFBO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUE7UUFFdEMsSUFBSSxRQUFRLEVBQUU7WUFDWixNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7WUFFdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDcEY7UUFFRCxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUVPLE9BQU87UUFDYixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQTtRQUN2QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRXRDLElBQUksUUFBUSxFQUFFO1lBQ1osTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBRXZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3hGO1FBRUQsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7K0dBeFVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1QQ2pCL0IsMnlGQThGQTs7QURsQlM7SUFETixTQUFTO3lEQUlUOzRGQTlEVSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsYUFBYTs4QkFXWixTQUFTO3NCQURuQixLQUFLO2dCQVVDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlFLE9BQU87c0JBRGQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXNDL0IsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgY29tcHV0ZWQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tICcuLi8uLi91dGlscy9yb3VuZCc7XG5pbXBvcnQgeyBNaWNyb3Rhc2sgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL21pY3JvdGFzay5kZWNvcmF0b3InO1xuaW1wb3J0IHsgZ2V0Tm9kZXNCb3VuZHMgfSBmcm9tICcuLi8uLi91dGlscy9ub2Rlcyc7XG5pbXBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1hY2Nlc3Nvci5zZXJ2aWNlJztcblxudHlwZSBTaWRlID0gJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tyZXNpemFibGVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc2l6YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc2l6YWJsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgbm9kZUFjY2Vzc29yID0gaW5qZWN0KE5vZGVBY2Nlc3NvclNlcnZpY2UpXG4gIHByaXZhdGUgcm9vdFBvaW50ZXIgPSBpbmplY3QoUm9vdFBvaW50ZXJEaXJlY3RpdmUpXG4gIHByaXZhdGUgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSlcbiAgcHJpdmF0ZSBob3N0UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8RWxlbWVudD4+KEVsZW1lbnRSZWYpXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByZXNpemFibGUodmFsdWU6IGJvb2xlYW4gfCAnJykge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5tb2RlbC5yZXNpemFibGUuc2V0KHZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGVsLnJlc2l6YWJsZS5zZXQodHJ1ZSlcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVzaXplckNvbG9yID0gJyMyZTQxNGMnXG5cbiAgQElucHV0KClcbiAgcHVibGljIGdhcCA9IDEuNTtcblxuICBAVmlld0NoaWxkKCdyZXNpemVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSByZXNpemVyITogVGVtcGxhdGVSZWY8dW5rbm93bj5cblxuICBwcm90ZWN0ZWQgZ2V0IG1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGVBY2Nlc3Nvci5tb2RlbCgpIVxuICB9XG5cbiAgcHJvdGVjdGVkIGxpbmVHYXAgPSAzXG4gIHByb3RlY3RlZCBoYW5kbGVTaXplID0gNlxuXG4gIHByaXZhdGUgcmVzaXplU2lkZTogU2lkZSB8IG51bGwgPSBudWxsXG5cbiAgcHJpdmF0ZSB6b29tID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3cG9ydFNlcnZpY2UucmVhZGFibGVWaWV3cG9ydCgpLnpvb20gPz8gMClcblxuICBwcml2YXRlIG1pbldpZHRoID0gMFxuICBwcml2YXRlIG1pbkhlaWdodCA9IDBcblxuICAvLyBUT0RPOiBhbGxvdyByZXN6aWUgYmVzaWRlIHRoZSBmbG93XG4gIHByb3RlY3RlZCByZXNpemVPbkdsb2JhbE1vdXNlTW92ZSA9IHRoaXMucm9vdFBvaW50ZXIucG9pbnRlck1vdmVtZW50JFxuICAgIC5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMucmVzaXplU2lkZSAhPT0gbnVsbCksXG4gICAgICB0YXAoKGV2ZW50KSA9PiB0aGlzLnJlc2l6ZShldmVudCkpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG5cbiAgcHJvdGVjdGVkIGVuZFJlc2l6ZU9uR2xvYmFsTW91c2VVcCA9IHRoaXMucm9vdFBvaW50ZXIuZG9jdW1lbnRQb2ludGVyRW5kJFxuICAgIC5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuZW5kUmVzaXplKCkpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwucmVzaXplclRlbXBsYXRlLnNldCh0aGlzLnJlc2l6ZXIpXG4gIH1cblxuICBATWljcm90YXNrXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5taW5XaWR0aCA9ICtnZXRDb21wdXRlZFN0eWxlKHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50KS5taW5XaWR0aC5yZXBsYWNlKCdweCcsICcnKSB8fCAwXG4gICAgdGhpcy5taW5IZWlnaHQgPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmhvc3RSZWYubmF0aXZlRWxlbWVudCkubWluSGVpZ2h0LnJlcGxhY2UoJ3B4JywgJycpIHx8IDBcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGFydFJlc2l6ZShzaWRlOiBTaWRlLCBldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgdGhpcy5yZXNpemVTaWRlID0gc2lkZVxuICAgIHRoaXMubW9kZWwucmVzaXppbmcuc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2l6ZSh7IG1vdmVtZW50WCwgbW92ZW1lbnRZIH06IHsgbW92ZW1lbnRYOiBudW1iZXIsIG1vdmVtZW50WTogbnVtYmVyIH0pIHtcbiAgICBjb25zdCBvZmZzZXRYID0gcm91bmQobW92ZW1lbnRYIC8gdGhpcy56b29tKCkpXG4gICAgY29uc3Qgb2Zmc2V0WSA9IHJvdW5kKG1vdmVtZW50WSAvIHRoaXMuem9vbSgpKVxuXG4gICAgc3dpdGNoICh0aGlzLnJlc2l6ZVNpZGUpIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBsZXQgeCA9IHRoaXMubW9kZWwucG9pbnQoKS54ICsgb2Zmc2V0WFxuICAgICAgICB4ID0gTWF0aC5tYXgoeCwgdGhpcy5nZXRNaW5YKCkpXG4gICAgICAgIHggPSBNYXRoLm1pbih4LCB0aGlzLmdldE1heFgoKSlcblxuICAgICAgICAvLyBUT0RPIHRoaXMgZml4ZXMgaW5jcmVhc2luZyB3aWR0aCB3aGVuIGN1cnJlbnQgbm9kZSBoaXRzIHRoZSBwYXJlbnRcbiAgICAgICAgaWYgKHggPT09IHRoaXMuZ2V0TWluWCgpIHx8IHggPT09IHRoaXMuZ2V0TWF4WCgpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vZGVsLnNldFBvaW50KHsgeCwgeTogdGhpcy5tb2RlbC5wb2ludCgpLnkgfSwgZmFsc2UpXG5cbiAgICAgICAgdGhpcy5tb2RlbC5zaXplLnVwZGF0ZSgoeyBoZWlnaHQsIHdpZHRoIH0pID0+IHtcbiAgICAgICAgICB3aWR0aCAtPSBvZmZzZXRYXG4gICAgICAgICAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgdGhpcy5taW5XaWR0aClcbiAgICAgICAgICB3aWR0aCA9IE1hdGgubWluKHdpZHRoLCB0aGlzLmdldE1heFdpZHRoKCkpXG5cbiAgICAgICAgICByZXR1cm4geyBoZWlnaHQsIHdpZHRoOiB3aWR0aCB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHRoaXMubW9kZWwuc2l6ZS51cGRhdGUoKHsgaGVpZ2h0LCB3aWR0aCB9KSA9PiB7XG4gICAgICAgICAgd2lkdGggKz0gb2Zmc2V0WFxuICAgICAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIHRoaXMubWluV2lkdGgpXG4gICAgICAgICAgd2lkdGggPSBNYXRoLm1pbih3aWR0aCwgdGhpcy5nZXRNYXhXaWR0aCgpKVxuXG4gICAgICAgICAgY29uc3QgYm91bmRzID0gZ2V0Tm9kZXNCb3VuZHModGhpcy5tb2RlbC5jaGlsZHJlbigpKVxuICAgICAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIGJvdW5kcy54ICsgYm91bmRzLndpZHRoKVxuXG4gICAgICAgICAgcmV0dXJuIHsgaGVpZ2h0LCB3aWR0aCB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBsZXQgeSA9IHRoaXMubW9kZWwucG9pbnQoKS55ICsgb2Zmc2V0WVxuICAgICAgICB5ID0gTWF0aC5tYXgoeSwgdGhpcy5nZXRNaW5ZKCkpXG4gICAgICAgIHkgPSBNYXRoLm1pbih5LCB0aGlzLmdldE1heFkoKSlcblxuICAgICAgICBpZiAoeSA9PT0gdGhpcy5nZXRNaW5ZKCkgfHwgeSA9PT0gdGhpcy5nZXRNYXhZKCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubW9kZWwuc2V0UG9pbnQoeyB4OiB0aGlzLm1vZGVsLnBvaW50KCkueCwgeSB9LCBmYWxzZSlcblxuICAgICAgICB0aGlzLm1vZGVsLnNpemUudXBkYXRlKCh7IGhlaWdodCwgd2lkdGggfSkgPT4ge1xuICAgICAgICAgIGhlaWdodCAtPSBvZmZzZXRZXG4gICAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCB0aGlzLm1pbkhlaWdodClcbiAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1pbihoZWlnaHQsIHRoaXMuZ2V0TWF4SGVpZ2h0KCkpXG5cbiAgICAgICAgICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH1cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHRoaXMubW9kZWwuc2l6ZS51cGRhdGUoKHsgaGVpZ2h0LCB3aWR0aCB9KSA9PiB7XG4gICAgICAgICAgaGVpZ2h0ICs9IG9mZnNldFlcbiAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIHRoaXMubWluSGVpZ2h0KVxuICAgICAgICAgIGhlaWdodCA9IE1hdGgubWluKGhlaWdodCwgdGhpcy5nZXRNYXhIZWlnaHQoKSlcblxuICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IGdldE5vZGVzQm91bmRzKHRoaXMubW9kZWwuY2hpbGRyZW4oKSlcbiAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIGJvdW5kcy55ICsgYm91bmRzLmhlaWdodClcblxuICAgICAgICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVyblxuXG4gICAgICBjYXNlICd0b3AtbGVmdCc6IHtcbiAgICAgICAgbGV0IHggPSB0aGlzLm1vZGVsLnBvaW50KCkueCArIG9mZnNldFhcbiAgICAgICAgeCA9IE1hdGgubWF4KHgsIHRoaXMuZ2V0TWluWCgpKVxuICAgICAgICB4ID0gTWF0aC5taW4oeCwgdGhpcy5nZXRNYXhYKCkpXG5cbiAgICAgICAgbGV0IHkgPSB0aGlzLm1vZGVsLnBvaW50KCkueSArIG9mZnNldFlcbiAgICAgICAgeSA9IE1hdGgubWF4KHksIHRoaXMuZ2V0TWluWSgpKVxuICAgICAgICB5ID0gTWF0aC5taW4oeSwgdGhpcy5nZXRNYXhZKCkpXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHggPT09IHRoaXMuZ2V0TWluWCgpIHx8IHkgPT09IHRoaXMuZ2V0TWluWSgpIHx8XG4gICAgICAgICAgeCA9PT0gdGhpcy5nZXRNYXhYKCkgfHwgeSA9PT0gdGhpcy5nZXRNYXhZKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vZGVsLnNldFBvaW50KHsgeCwgeSB9LCBmYWxzZSlcblxuICAgICAgICB0aGlzLm1vZGVsLnNpemUudXBkYXRlKCh7IGhlaWdodCwgd2lkdGggfSkgPT4ge1xuICAgICAgICAgIHdpZHRoIC09IG9mZnNldFhcbiAgICAgICAgICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCB0aGlzLm1pbldpZHRoKVxuICAgICAgICAgIHdpZHRoID0gTWF0aC5taW4od2lkdGgsIHRoaXMuZ2V0TWF4V2lkdGgoKSlcblxuICAgICAgICAgIGhlaWdodCAtPSBvZmZzZXRZXG4gICAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCB0aGlzLm1pbkhlaWdodClcbiAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1pbihoZWlnaHQsIHRoaXMuZ2V0TWF4SGVpZ2h0KCkpXG5cbiAgICAgICAgICByZXR1cm4geyBoZWlnaHQsIHdpZHRoIH1cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY2FzZSAndG9wLXJpZ2h0Jzoge1xuICAgICAgICBsZXQgeSA9IHRoaXMubW9kZWwucG9pbnQoKS55ICsgb2Zmc2V0WVxuICAgICAgICB5ID0gTWF0aC5tYXgoeSwgdGhpcy5nZXRNaW5ZKCkpXG4gICAgICAgIHkgPSBNYXRoLm1pbih5LCB0aGlzLmdldE1heFkoKSlcblxuICAgICAgICBpZiAoeSA9PT0gdGhpcy5nZXRNaW5YKCkgfHwgeSA9PT0gdGhpcy5nZXRNYXhZKCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubW9kZWwuc2V0UG9pbnQoeyB4OiB0aGlzLm1vZGVsLnBvaW50KCkueCwgeSB9LCBmYWxzZSlcblxuICAgICAgICB0aGlzLm1vZGVsLnNpemUudXBkYXRlKCh7IGhlaWdodCwgd2lkdGggfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IGdldE5vZGVzQm91bmRzKHRoaXMubW9kZWwuY2hpbGRyZW4oKSlcblxuICAgICAgICAgIHdpZHRoICs9IG9mZnNldFhcbiAgICAgICAgICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCB0aGlzLm1pbldpZHRoKVxuICAgICAgICAgIHdpZHRoID0gTWF0aC5taW4od2lkdGgsIHRoaXMuZ2V0TWF4V2lkdGgoKSlcbiAgICAgICAgICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBib3VuZHMueCArIGJvdW5kcy53aWR0aClcblxuXG4gICAgICAgICAgaGVpZ2h0IC09IG9mZnNldFlcbiAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIHRoaXMubWluSGVpZ2h0KVxuICAgICAgICAgIGhlaWdodCA9IE1hdGgubWluKGhlaWdodCwgdGhpcy5nZXRNYXhIZWlnaHQoKSlcblxuICAgICAgICAgIHJldHVybiB7IGhlaWdodCwgd2lkdGggfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjYXNlICdib3R0b20tbGVmdCc6IHtcbiAgICAgICAgbGV0IHggPSB0aGlzLm1vZGVsLnBvaW50KCkueCArIG9mZnNldFhcbiAgICAgICAgeCA9IE1hdGgubWF4KHgsIHRoaXMuZ2V0TWluWCgpKVxuICAgICAgICB4ID0gTWF0aC5taW4oeCwgdGhpcy5nZXRNYXhYKCkpXG5cbiAgICAgICAgaWYgKHggPT09IHRoaXMuZ2V0TWluWCgpIHx8IHggPT09IHRoaXMuZ2V0TWF4WCgpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vZGVsLnNldFBvaW50KHsgeCwgeTogdGhpcy5tb2RlbC5wb2ludCgpLnkgfSwgZmFsc2UpXG5cbiAgICAgICAgdGhpcy5tb2RlbC5zaXplLnVwZGF0ZSgoeyBoZWlnaHQsIHdpZHRoIH0pID0+IHtcbiAgICAgICAgICB3aWR0aCAtPSBvZmZzZXRYXG4gICAgICAgICAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgdGhpcy5taW5XaWR0aClcbiAgICAgICAgICB3aWR0aCA9IE1hdGgubWluKHdpZHRoLCB0aGlzLmdldE1heFdpZHRoKCkpXG5cbiAgICAgICAgICBoZWlnaHQgKz0gb2Zmc2V0WVxuICAgICAgICAgIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgdGhpcy5taW5IZWlnaHQpXG4gICAgICAgICAgaGVpZ2h0ID0gTWF0aC5taW4oaGVpZ2h0LCB0aGlzLmdldE1heEhlaWdodCgpKVxuXG4gICAgICAgICAgY29uc3QgYm91bmRzID0gZ2V0Tm9kZXNCb3VuZHModGhpcy5tb2RlbC5jaGlsZHJlbigpKVxuICAgICAgICAgIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0KVxuXG4gICAgICAgICAgcmV0dXJuIHsgaGVpZ2h0LCB3aWR0aCB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2JvdHRvbS1yaWdodCc6IHtcbiAgICAgICAgdGhpcy5tb2RlbC5zaXplLnVwZGF0ZSgoeyBoZWlnaHQsIHdpZHRoIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBib3VuZHMgPSBnZXROb2Rlc0JvdW5kcyh0aGlzLm1vZGVsLmNoaWxkcmVuKCkpXG5cbiAgICAgICAgICB3aWR0aCArPSBvZmZzZXRYXG4gICAgICAgICAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgdGhpcy5taW5XaWR0aClcbiAgICAgICAgICB3aWR0aCA9IE1hdGgubWluKHdpZHRoLCB0aGlzLmdldE1heFdpZHRoKCkpXG4gICAgICAgICAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgYm91bmRzLnggKyBib3VuZHMud2lkdGgpXG5cblxuICAgICAgICAgIGhlaWdodCArPSBvZmZzZXRZXG4gICAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCB0aGlzLm1pbkhlaWdodClcbiAgICAgICAgICBoZWlnaHQgPSBNYXRoLm1pbihoZWlnaHQsIHRoaXMuZ2V0TWF4SGVpZ2h0KCkpXG4gICAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCBib3VuZHMueSArIGJvdW5kcy5oZWlnaHQpXG5cbiAgICAgICAgICByZXR1cm4geyBoZWlnaHQsIHdpZHRoIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5kUmVzaXplKCkge1xuICAgIHRoaXMucmVzaXplU2lkZSA9IG51bGxcbiAgICB0aGlzLm1vZGVsLnJlc2l6aW5nLnNldChmYWxzZSlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF4V2lkdGgoKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5tb2RlbC5wYXJlbnQoKVxuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcmV0dXJuIHBhcmVudC5zaXplKCkud2lkdGggLSB0aGlzLm1vZGVsLnBvaW50KCkueFxuICAgIH1cblxuICAgIHJldHVybiBJbmZpbml0eVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXhIZWlnaHQoKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5tb2RlbC5wYXJlbnQoKVxuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcmV0dXJuIHBhcmVudC5zaXplKCkuaGVpZ2h0IC0gdGhpcy5tb2RlbC5wb2ludCgpLnlcbiAgICB9XG5cbiAgICByZXR1cm4gSW5maW5pdHlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWluWCgpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm1vZGVsLnBhcmVudCgpXG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIHJldHVybiAtSW5maW5pdHlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWluWSgpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm1vZGVsLnBhcmVudCgpXG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIHJldHVybiAtSW5maW5pdHlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF4WCgpIHtcbiAgICBjb25zdCB4ID0gdGhpcy5tb2RlbC5wb2ludCgpLnhcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMubW9kZWwuc2l6ZSgpLndpZHRoXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLm1vZGVsLmNoaWxkcmVuKClcblxuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Tm9kZXNCb3VuZHMoY2hpbGRyZW4pXG5cbiAgICAgIHJldHVybiB4ICsgKGJvdW5kcy54ICsgYm91bmRzLndpZHRoKSA+PSB4ICsgd2lkdGggPyB4IDogKHdpZHRoIC0gdGhpcy5taW5XaWR0aCkgKyB4XG4gICAgfVxuXG4gICAgcmV0dXJuICh3aWR0aCAtIHRoaXMubWluV2lkdGgpICsgeFxuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXhZKCkge1xuICAgIGNvbnN0IHkgPSB0aGlzLm1vZGVsLnBvaW50KCkueVxuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMubW9kZWwuc2l6ZSgpLmhlaWdodFxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5tb2RlbC5jaGlsZHJlbigpXG5cbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IGJvdW5kcyA9IGdldE5vZGVzQm91bmRzKGNoaWxkcmVuKVxuXG4gICAgICByZXR1cm4geSArIChib3VuZHMueSArIGJvdW5kcy5oZWlnaHQpID49IHkgKyBoZWlnaHQgPyB5IDogKGhlaWdodCAtIHRoaXMubWluSGVpZ2h0KSArIHlcbiAgICB9XG5cbiAgICByZXR1cm4gKGhlaWdodCAtIHRoaXMubWluSGVpZ2h0KSArIHlcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNyZXNpemVyPlxuICA8c3ZnOmc+XG4gICAgPCEtLSB0b3AgbGluZSAtLT5cbiAgICA8c3ZnOmxpbmVcbiAgICAgIGNsYXNzPVwidG9wXCJcbiAgICAgIFthdHRyLngxXT1cImxpbmVHYXBcIlxuICAgICAgW2F0dHIueTFdPVwiLWdhcFwiXG4gICAgICBbYXR0ci54Ml09XCJtb2RlbC5zaXplKCkud2lkdGggLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkyXT1cIi1nYXBcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvclwiXG4gICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ3RvcCcsICRldmVudClcIlxuICAgIC8+XG4gICAgPCEtLSBMZWZ0IGxpbmUgLS0+XG4gICAgPHN2ZzpsaW5lXG4gICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgW2F0dHIueDFdPVwiLWdhcFwiXG4gICAgICBbYXR0ci55MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLngyXT1cIi1nYXBcIlxuICAgICAgW2F0dHIueTJdPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIGxpbmVHYXBcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvclwiXG4gICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ2xlZnQnLCAkZXZlbnQpXCJcbiAgICAvPlxuICAgIDwhLS0gQm90dG9tIGxpbmUgLS0+XG4gICAgPHN2ZzpsaW5lXG4gICAgICBjbGFzcz1cImJvdHRvbVwiXG4gICAgICBbYXR0ci54MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkxXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgKyBnYXBcIlxuICAgICAgW2F0dHIueDJdPVwibW9kZWwuc2l6ZSgpLndpZHRoIC0gbGluZUdhcFwiXG4gICAgICBbYXR0ci55Ml09XCJtb2RlbC5zaXplKCkuaGVpZ2h0ICsgZ2FwXCJcbiAgICAgIFthdHRyLnN0cm9rZV09XCJyZXNpemVyQ29sb3JcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCdib3R0b20nLCAkZXZlbnQpXCJcbiAgICAvPlxuICAgIDwhLS0gUmlnaHQgbGluZSAtLT5cbiAgICA8c3ZnOmxpbmVcbiAgICAgIGNsYXNzPVwicmlnaHRcIlxuICAgICAgW2F0dHIueDFdPVwibW9kZWwuc2l6ZSgpLndpZHRoICsgZ2FwXCJcbiAgICAgIFthdHRyLnkxXT1cImxpbmVHYXBcIlxuICAgICAgW2F0dHIueDJdPVwibW9kZWwuc2l6ZSgpLndpZHRoICsgZ2FwXCJcbiAgICAgIFthdHRyLnkyXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnN0cm9rZV09XCJyZXNpemVyQ29sb3JcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCdyaWdodCcsICRldmVudClcIlxuICAgIC8+XG5cbiAgICA8IS0tIFRvcCBMZWZ0IC0tPlxuICAgIDxzdmc6cmVjdFxuICAgICAgY2xhc3M9XCJ0b3AtbGVmdFwiXG4gICAgICBbYXR0ci54XT1cIi0oaGFuZGxlU2l6ZSAvIDIpIC0gZ2FwXCJcbiAgICAgIFthdHRyLnldPVwiLShoYW5kbGVTaXplIC8gMikgLSBnYXBcIlxuICAgICAgW2F0dHIud2lkdGhdPVwiaGFuZGxlU2l6ZVwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwiaGFuZGxlU2l6ZVwiXG4gICAgICBbYXR0ci5maWxsXT1cInJlc2l6ZXJDb2xvclwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCd0b3AtbGVmdCcsICRldmVudClcIlxuICAgIC8+XG5cbiAgICA8IS0tIFRvcCByaWdodCAtLT5cbiAgICA8c3ZnOnJlY3RcbiAgICAgIGNsYXNzPVwidG9wLXJpZ2h0XCJcbiAgICAgIFthdHRyLnhdPVwibW9kZWwuc2l6ZSgpLndpZHRoIC0gKGhhbmRsZVNpemUgLyAyKSArIGdhcFwiXG4gICAgICBbYXR0ci55XT1cIi0oaGFuZGxlU2l6ZSAvIDIpIC0gZ2FwXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3JcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgndG9wLXJpZ2h0JywgJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDwhLS0gQm90dG9tIGxlZnQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cImJvdHRvbS1sZWZ0XCJcbiAgICAgIFthdHRyLnhdPVwiLShoYW5kbGVTaXplIC8gMikgLSBnYXBcIlxuICAgICAgW2F0dHIueV09XCJtb2RlbC5zaXplKCkuaGVpZ2h0IC0gKGhhbmRsZVNpemUgLyAyKSArIGdhcFwiXG4gICAgICBbYXR0ci53aWR0aF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmZpbGxdPVwicmVzaXplckNvbG9yXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ2JvdHRvbS1sZWZ0JywgJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDwhLS0gQm90dG9tIHJpZ2h0IC0tPlxuICAgIDxzdmc6cmVjdFxuICAgICAgY2xhc3M9XCJib3R0b20tcmlnaHRcIlxuICAgICAgW2F0dHIueF09XCJtb2RlbC5zaXplKCkud2lkdGggLSAoaGFuZGxlU2l6ZSAvIDIpICsgZ2FwXCJcbiAgICAgIFthdHRyLnldPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIChoYW5kbGVTaXplIC8gMikgKyBnYXBcIlxuICAgICAgW2F0dHIud2lkdGhdPVwiaGFuZGxlU2l6ZVwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwiaGFuZGxlU2l6ZVwiXG4gICAgICBbYXR0ci5maWxsXT1cInJlc2l6ZXJDb2xvclwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCdib3R0b20tcmlnaHQnLCAkZXZlbnQpXCJcbiAgICAvPlxuICA8L3N2ZzpnPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRlbnQgLz5cbiJdfQ==
@@ -15,4 +15,4 @@ export class ComponentEventBusService {
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentEventBusService, decorators: [{
16
16
  type: Injectable
17
17
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWV2ZW50LWJ1cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3NlcnZpY2VzL2NvbXBvbmVudC1ldmVudC1idXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSy9CLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFVSxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUE7UUFFL0MsV0FBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUE7S0FLNUM7SUFIUSxTQUFTLENBQUMsS0FBNEI7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUIsQ0FBQzsrR0FQVSx3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFueUNvbXBvbmVudE5vZGVFdmVudCwgQ29tcG9uZW50Tm9kZUV2ZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21wb25lbnQtbm9kZS1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3VzdG9tTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1ub2RlLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRFdmVudEJ1c1NlcnZpY2Uge1xuICBwcml2YXRlIF9ldmVudCQgPSBuZXcgU3ViamVjdDxBbnlDb21wb25lbnROb2RlRXZlbnQ+KClcblxuICBwdWJsaWMgZXZlbnQkID0gdGhpcy5fZXZlbnQkLmFzT2JzZXJ2YWJsZSgpXG5cbiAgcHVibGljIHB1c2hFdmVudChldmVudDogQW55Q29tcG9uZW50Tm9kZUV2ZW50KSB7XG4gICAgdGhpcy5fZXZlbnQkLm5leHQoZXZlbnQpXG4gIH1cbn1cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWV2ZW50LWJ1cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3NlcnZpY2VzL2NvbXBvbmVudC1ldmVudC1idXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9CLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFVSxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUE7UUFFL0MsV0FBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUE7S0FLNUM7SUFIUSxTQUFTLENBQUMsS0FBNEI7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUIsQ0FBQzsrR0FQVSx3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFueUNvbXBvbmVudE5vZGVFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29tcG9uZW50LW5vZGUtZXZlbnQuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEV2ZW50QnVzU2VydmljZSB7XG4gIHByaXZhdGUgX2V2ZW50JCA9IG5ldyBTdWJqZWN0PEFueUNvbXBvbmVudE5vZGVFdmVudD4oKVxuXG4gIHB1YmxpYyBldmVudCQgPSB0aGlzLl9ldmVudCQuYXNPYnNlcnZhYmxlKClcblxuICBwdWJsaWMgcHVzaEV2ZW50KGV2ZW50OiBBbnlDb21wb25lbnROb2RlRXZlbnQpIHtcbiAgICB0aGlzLl9ldmVudCQubmV4dChldmVudClcbiAgfVxufVxuIl19
@@ -59,7 +59,7 @@ export class DraggableService {
59
59
  point.y = Math.min(parent.size().height - model.size().height, point.y);
60
60
  point.y = Math.max(0, point.y);
61
61
  }
62
- model.setPoint(point);
62
+ model.setPoint(point, true);
63
63
  });
64
64
  }
65
65
  /**
@@ -78,4 +78,4 @@ export class DraggableService {
78
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DraggableService, decorators: [{
79
79
  type: Injectable
80
80
  }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLdkMsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxPQUFnQixFQUFFLEtBQWdCO1FBQzlDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVqQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQUMsT0FBZ0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxPQUFnQjtRQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlLENBQUMsS0FBZ0I7UUFDdEMsSUFBSSxNQUFjLENBQUE7UUFDbEIsSUFBSSxNQUFjLENBQUE7UUFFbEIsT0FBTyxJQUFJLEVBQUU7YUFDVixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDbEMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUNwQyxDQUFDLENBQUM7YUFFRCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQy9CLElBQUksS0FBSyxHQUFHO2dCQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQzFCLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7YUFDM0IsQ0FBQTtZQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtZQUM3QixnQ0FBZ0M7WUFDaEMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3JFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUU5QixLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDdkUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDL0I7WUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNLLHFCQUFxQjtRQUMzQixPQUFPLElBQUksRUFBRTthQUNWLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDOUIsS0FBSyxDQUFDLFdBQXFCLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDaEQsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDOytHQS9FVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tICdkMy1zZWxlY3Rpb24nO1xuaW1wb3J0IHsgRDNEcmFnRXZlbnQsIGRyYWcgfSBmcm9tICdkMy1kcmFnJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSAnLi4vdXRpbHMvcm91bmQnO1xuXG50eXBlIERyYWdFdmVudCA9IEQzRHJhZ0V2ZW50PEVsZW1lbnQsIHVua25vd24sIHVua25vd24+XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEcmFnZ2FibGVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEVuYWJsZSBkcmFnZ2FibGUgYmVoYXZpb3IgZm9yIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IHRhcmdldCBlbGVtZW50IGZvciB0b2dnbGluZyBkcmFnZ2FibGVcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHdpdGggZGF0YSBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZW5hYmxlKGVsZW1lbnQ6IEVsZW1lbnQsIG1vZGVsOiBOb2RlTW9kZWwpIHtcbiAgICBjb25zdCBkM0VsZW1lbnQgPSBzZWxlY3QoZWxlbWVudClcblxuICAgIGQzRWxlbWVudC5jYWxsKHRoaXMuZ2V0RHJhZ0JlaGF2aW9yKG1vZGVsKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGRyYWdnYWJsZSBiZWhhdmlvciBmb3IgZWxlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgdGFyZ2V0IGVsZW1lbnQgZm9yIHRvZ2dsaW5nIGRyYWdnYWJsZVxuICAgKiBAcGFyYW0gbW9kZWwgbW9kZWwgd2l0aCBkYXRhIGZvciB0aGlzIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlKGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBjb25zdCBkM0VsZW1lbnQgPSBzZWxlY3QoZWxlbWVudClcblxuICAgIGQzRWxlbWVudC5jYWxsKHRoaXMuZ2V0SWdub3JlRHJhZ0JlaGF2aW9yKCkpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogbm90IHNodXJlIGlmIHRoaXMgd29yaywgbmVlZCB0byBjaGVja1xuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koZWxlbWVudDogRWxlbWVudCkge1xuICAgIHNlbGVjdChlbGVtZW50KS5vbignLmRyYWcnLCBudWxsKVxuICB9XG5cbiAgLyoqXG4gICAqIE5vZGUgZHJhZyBiZWhhdmlvci4gVXBkYXRlZCBub2RlJ3MgY29vcmRpbmF0ZSBhY2NvcmRpbmcgdG8gZHJhZ2dpbmdcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGdldERyYWdCZWhhdmlvcihtb2RlbDogTm9kZU1vZGVsKSB7XG4gICAgbGV0IGRlbHRhWDogbnVtYmVyXG4gICAgbGV0IGRlbHRhWTogbnVtYmVyXG5cbiAgICByZXR1cm4gZHJhZygpXG4gICAgICAub24oJ3N0YXJ0JywgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgZGVsdGFYID0gbW9kZWwucG9pbnQoKS54IC0gZXZlbnQueFxuICAgICAgICBkZWx0YVkgPSBtb2RlbC5wb2ludCgpLnkgLSBldmVudC55XG4gICAgICB9KVxuXG4gICAgICAub24oJ2RyYWcnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBsZXQgcG9pbnQgPSB7XG4gICAgICAgICAgeDogcm91bmQoZXZlbnQueCArIGRlbHRhWCksXG4gICAgICAgICAgeTogcm91bmQoZXZlbnQueSArIGRlbHRhWSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IG1vZGVsLnBhcmVudCgpXG4gICAgICAgIC8vIGtlZXAgbm9kZSBpbiBib3VuZHMgb2YgcGFyZW50XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICBwb2ludC54ID0gTWF0aC5taW4ocGFyZW50LnNpemUoKS53aWR0aCAtIG1vZGVsLnNpemUoKS53aWR0aCwgcG9pbnQueClcbiAgICAgICAgICBwb2ludC54ID0gTWF0aC5tYXgoMCwgcG9pbnQueClcblxuICAgICAgICAgIHBvaW50LnkgPSBNYXRoLm1pbihwYXJlbnQuc2l6ZSgpLmhlaWdodCAtIG1vZGVsLnNpemUoKS5oZWlnaHQsIHBvaW50LnkpXG4gICAgICAgICAgcG9pbnQueSA9IE1hdGgubWF4KDAsIHBvaW50LnkpXG4gICAgICAgIH1cblxuICAgICAgICBtb2RlbC5zZXRQb2ludChwb2ludClcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmeSBpZ25vcmluZyBkcmFnIGJlaGF2aW9yLiBJdCdzIHJlc3BvbnNpYmxlIGZvciBub3QgbW92aW5nIHRoZSBtYXAgd2hlbiB1c2VyIHRyaWVzIHRvIGRyYWcgbm9kZVxuICAgKiB3aXRoIGRpc2FibGVkIGRyYWcgYmVoYXZpb3JcbiAgICovXG4gIHByaXZhdGUgZ2V0SWdub3JlRHJhZ0JlaGF2aW9yKCkge1xuICAgIHJldHVybiBkcmFnKClcbiAgICAgIC5vbignZHJhZycsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIChldmVudC5zb3VyY2VFdmVudCBhcyBFdmVudCkuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIH0pXG4gIH1cbn1cbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLdkMsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxPQUFnQixFQUFFLEtBQWdCO1FBQzlDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVqQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQUMsT0FBZ0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxPQUFnQjtRQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlLENBQUMsS0FBZ0I7UUFDdEMsSUFBSSxNQUFjLENBQUE7UUFDbEIsSUFBSSxNQUFjLENBQUE7UUFFbEIsT0FBTyxJQUFJLEVBQUU7YUFDVixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDbEMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUNwQyxDQUFDLENBQUM7YUFFRCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQy9CLElBQUksS0FBSyxHQUFHO2dCQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQzFCLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7YUFDM0IsQ0FBQTtZQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtZQUM3QixnQ0FBZ0M7WUFDaEMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3JFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUU5QixLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDdkUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDL0I7WUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSyxxQkFBcUI7UUFDM0IsT0FBTyxJQUFJLEVBQUU7YUFDVixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBZ0IsRUFBRSxFQUFFO1lBQzlCLEtBQUssQ0FBQyxXQUFxQixDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQ2hELENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzsrR0EvRVUsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IEQzRHJhZ0V2ZW50LCBkcmFnIH0gZnJvbSAnZDMtZHJhZyc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gJy4uL3V0aWxzL3JvdW5kJztcblxudHlwZSBEcmFnRXZlbnQgPSBEM0RyYWdFdmVudDxFbGVtZW50LCB1bmtub3duLCB1bmtub3duPlxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlU2VydmljZSB7XG4gIC8qKlxuICAgKiBFbmFibGUgZHJhZ2dhYmxlIGJlaGF2aW9yIGZvciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCB0YXJnZXQgZWxlbWVudCBmb3IgdG9nZ2xpbmcgZHJhZ2dhYmxlXG4gICAqIEBwYXJhbSBtb2RlbCBtb2RlbCB3aXRoIGRhdGEgZm9yIHRoaXMgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGVuYWJsZShlbGVtZW50OiBFbGVtZW50LCBtb2RlbDogTm9kZU1vZGVsKSB7XG4gICAgY29uc3QgZDNFbGVtZW50ID0gc2VsZWN0KGVsZW1lbnQpXG5cbiAgICBkM0VsZW1lbnQuY2FsbCh0aGlzLmdldERyYWdCZWhhdmlvcihtb2RlbCkpXG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZSBkcmFnZ2FibGUgYmVoYXZpb3IgZm9yIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IHRhcmdldCBlbGVtZW50IGZvciB0b2dnbGluZyBkcmFnZ2FibGVcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHdpdGggZGF0YSBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZGlzYWJsZShlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgY29uc3QgZDNFbGVtZW50ID0gc2VsZWN0KGVsZW1lbnQpXG5cbiAgICBkM0VsZW1lbnQuY2FsbCh0aGlzLmdldElnbm9yZURyYWdCZWhhdmlvcigpKVxuICB9XG5cbiAgLyoqXG4gICAqIFRPRE86IG5vdCBzaHVyZSBpZiB0aGlzIHdvcmssIG5lZWQgdG8gY2hlY2tcbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBzZWxlY3QoZWxlbWVudCkub24oJy5kcmFnJywgbnVsbClcbiAgfVxuXG4gIC8qKlxuICAgKiBOb2RlIGRyYWcgYmVoYXZpb3IuIFVwZGF0ZWQgbm9kZSdzIGNvb3JkaW5hdGUgYWNjb3JkaW5nIHRvIGRyYWdnaW5nXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXREcmFnQmVoYXZpb3IobW9kZWw6IE5vZGVNb2RlbCkge1xuICAgIGxldCBkZWx0YVg6IG51bWJlclxuICAgIGxldCBkZWx0YVk6IG51bWJlclxuXG4gICAgcmV0dXJuIGRyYWcoKVxuICAgICAgLm9uKCdzdGFydCcsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIGRlbHRhWCA9IG1vZGVsLnBvaW50KCkueCAtIGV2ZW50LnhcbiAgICAgICAgZGVsdGFZID0gbW9kZWwucG9pbnQoKS55IC0gZXZlbnQueVxuICAgICAgfSlcblxuICAgICAgLm9uKCdkcmFnJywgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgbGV0IHBvaW50ID0ge1xuICAgICAgICAgIHg6IHJvdW5kKGV2ZW50LnggKyBkZWx0YVgpLFxuICAgICAgICAgIHk6IHJvdW5kKGV2ZW50LnkgKyBkZWx0YVkpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnQgPSBtb2RlbC5wYXJlbnQoKVxuICAgICAgICAvLyBrZWVwIG5vZGUgaW4gYm91bmRzIG9mIHBhcmVudFxuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgcG9pbnQueCA9IE1hdGgubWluKHBhcmVudC5zaXplKCkud2lkdGggLSBtb2RlbC5zaXplKCkud2lkdGgsIHBvaW50LngpXG4gICAgICAgICAgcG9pbnQueCA9IE1hdGgubWF4KDAsIHBvaW50LngpXG5cbiAgICAgICAgICBwb2ludC55ID0gTWF0aC5taW4ocGFyZW50LnNpemUoKS5oZWlnaHQgLSBtb2RlbC5zaXplKCkuaGVpZ2h0LCBwb2ludC55KVxuICAgICAgICAgIHBvaW50LnkgPSBNYXRoLm1heCgwLCBwb2ludC55KVxuICAgICAgICB9XG5cbiAgICAgICAgbW9kZWwuc2V0UG9pbnQocG9pbnQsIHRydWUpXG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgaWdub3JpbmcgZHJhZyBiZWhhdmlvci4gSXQncyByZXNwb25zaWJsZSBmb3Igbm90IG1vdmluZyB0aGUgbWFwIHdoZW4gdXNlciB0cmllcyB0byBkcmFnIG5vZGVcbiAgICogd2l0aCBkaXNhYmxlZCBkcmFnIGJlaGF2aW9yXG4gICAqL1xuICBwcml2YXRlIGdldElnbm9yZURyYWdCZWhhdmlvcigpIHtcbiAgICByZXR1cm4gZHJhZygpXG4gICAgICAub24oJ2RyYWcnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICAoZXZlbnQuc291cmNlRXZlbnQgYXMgRXZlbnQpLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICB9KVxuICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Service to fix cyclic dependency between node and resizable component
5
+ */
6
+ export class NodeAccessorService {
7
+ constructor() {
8
+ this.model = signal(null);
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeAccessorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeAccessorService }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeAccessorService, decorators: [{
14
+ type: Injectable
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1hY2Nlc3Nvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRVMsVUFBSyxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUE7S0FFOUM7K0dBSFksbUJBQW1CO21IQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIGZpeCBjeWNsaWMgZGVwZW5kZW5jeSBiZXR3ZWVuIG5vZGUgYW5kIHJlc2l6YWJsZSBjb21wb25lbnRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vZGVBY2Nlc3NvclNlcnZpY2Uge1xuICBwdWJsaWMgbW9kZWwgPSBzaWduYWw8Tm9kZU1vZGVsIHwgbnVsbD4obnVsbClcblxufVxuIl19
@@ -20,6 +20,10 @@ export class NodesChangeService {
20
20
  map(changedNode => [
21
21
  { type: 'position', id: changedNode.node.id, point: changedNode.point() }
22
22
  ]));
23
+ this.nodeSizeChange$ = toObservable(this.entitiesService.nodes)
24
+ .pipe(switchMap((nodes) => merge(...nodes.map(node => node.size$.pipe(skip(1), map(() => node))))), map(changedNode => [
25
+ { type: 'size', id: changedNode.node.id, size: changedNode.size() }
26
+ ]));
23
27
  this.nodeAddChange$ = toObservable(this.entitiesService.nodes)
24
28
  .pipe(pairwise(), map(([oldList, newList]) => newList.filter(node => !oldList.includes(node))), filter((nodes) => !!nodes.length), map((nodes) => nodes.map(node => ({ type: 'add', id: node.node.id }))));
25
29
  this.nodeRemoveChange$ = toObservable(this.entitiesService.nodes)
@@ -28,7 +32,7 @@ export class NodesChangeService {
28
32
  .pipe(switchMap((nodes) => merge(...nodes.map(node => node.selected$.pipe(distinctUntilChanged(), skip(1), map(() => node))))), map((changedNode) => [
29
33
  { type: 'select', id: changedNode.node.id, selected: changedNode.selected() }
30
34
  ]));
31
- this.changes$ = merge(this.nodesPositionChange$, this.nodeAddChange$, this.nodeRemoveChange$, this.nodeSelectedChange$).pipe(
35
+ this.changes$ = merge(this.nodesPositionChange$, this.nodeSizeChange$, this.nodeAddChange$, this.nodeRemoveChange$, this.nodeSelectedChange$).pipe(
32
36
  // this fixes a bug when on fire node event change,
33
37
  // you can't get valid list of detached edges
34
38
  observeOn(asyncScheduler, DELAY_FOR_SCHEDULER));
@@ -39,4 +43,4 @@ export class NodesChangeService {
39
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodesChangeService, decorators: [{
40
44
  type: Injectable
41
45
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvbm9kZS1jaGFuZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksR0FBRyxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBYyxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdsSSxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFBO0FBRzlCLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRTdDLHlCQUFvQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQzthQUN0RSxJQUFJO1FBQ0gsNkZBQTZGO1FBQzdGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xCLEtBQUssQ0FDSCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ2Qsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2hCLENBQ0YsQ0FDRixDQUNGO1FBQ0Qsa0VBQWtFO1FBQ2xF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K0dBNUVZLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGFzeW5jU2NoZWR1bGVyLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIG1lcmdlLCBvYnNlcnZlT24sIHBhaXJ3aXNlLCBza2lwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGVDaGFuZ2UgfSBmcm9tICcuLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcblxuLy8gdGhpcyBkZWxheSBmaXhlcyB0aGUgY2FzZXMgd2hlbiBjaGFuZ2UgdHJpZ2dlcmVkXG4vLyBidXQgdGhlIGZsb3cgbm90IHlldCBmeWxseSByZS1yZW5kZXJlZFxuY29uc3QgREVMQVlfRk9SX1NDSEVEVUxFUiA9IDI1XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb2Rlc0NoYW5nZVNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgZW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpXG5cbiAgcHJvdGVjdGVkIG5vZGVzUG9zaXRpb25DaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKVxuICAgIC5waXBlKFxuICAgICAgLy8gQ2hlY2sgZm9yIG5vZGVzIGxpc3QgY2hhbmdlIGFuZCB3YXRjaCBmb3Igc3BlY2lmaWMgbm9kZSBmcm9tIHRoaXMgbGlzdCBjaGFuZ2UgaXRzIHBvc2l0aW9uXG4gICAgICBzd2l0Y2hNYXAoKG5vZGVzKSA9PlxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAuLi5ub2Rlcy5tYXAobm9kZSA9PlxuICAgICAgICAgICAgbm9kZS5wb2ludCQucGlwZShcbiAgICAgICAgICAgICAgLy8gc2tpcCBpbml0aWFsIHBvc2l0aW9uIGZyb20gc2lnbmFsXG4gICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgIG1hcCgoKSA9PiBub2RlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIC8vIEZvciBub3cgaXQncyBhIHNpbmdsZSBub2RlLCBsYXRlciB0aGlzIGxpc3Qgd2lsbCBhbHNvIGJlIGZpbGxlZFxuICAgICAgLy8gd2l0aCBjaGlsZCBub2RlIHBvc2l0aW9uIGNoYW5nZXNcbiAgICAgIG1hcChjaGFuZ2VkTm9kZSA9PiBbXG4gICAgICAgIHsgdHlwZTogJ3Bvc2l0aW9uJywgaWQ6IGNoYW5nZWROb2RlLm5vZGUuaWQsIHBvaW50OiBjaGFuZ2VkTm9kZS5wb2ludCgpIH1cbiAgICAgIF0pXG4gICAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+XG5cbiAgcHJvdGVjdGVkIG5vZGVBZGRDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKVxuICAgIC5waXBlKFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIG1hcCgoW29sZExpc3QsIG5ld0xpc3RdKSA9PlxuICAgICAgICBuZXdMaXN0LmZpbHRlcihub2RlID0+ICFvbGRMaXN0LmluY2x1ZGVzKG5vZGUpKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigobm9kZXMpID0+ICEhbm9kZXMubGVuZ3RoKSxcbiAgICAgIG1hcCgobm9kZXMpID0+XG4gICAgICAgIG5vZGVzLm1hcChub2RlID0+ICh7IHR5cGU6ICdhZGQnLCBpZDogbm9kZS5ub2RlLmlkIH0pKVxuICAgICAgKVxuICAgICkgc2F0aXNmaWVzIE9ic2VydmFibGU8Tm9kZUNoYW5nZVtdPlxuXG4gIHByb3RlY3RlZCBub2RlUmVtb3ZlQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcylcbiAgICAucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKFtvbGRMaXN0LCBuZXdMaXN0XSkgPT5cbiAgICAgICAgb2xkTGlzdC5maWx0ZXIobm9kZSA9PiAhbmV3TGlzdC5pbmNsdWRlcyhub2RlKSlcbiAgICAgICksXG4gICAgICBmaWx0ZXIoKG5vZGVzKSA9PiAhIW5vZGVzLmxlbmd0aCksXG4gICAgICBtYXAoKG5vZGVzKSA9PlxuICAgICAgICBub2Rlcy5tYXAobm9kZSA9PiAoeyB0eXBlOiAncmVtb3ZlJywgaWQ6IG5vZGUubm9kZS5pZCB9KSlcbiAgICAgIClcbiAgICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT5cblxuICBwcm90ZWN0ZWQgbm9kZVNlbGVjdGVkQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcylcbiAgICAucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobm9kZXMpID0+XG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgIC4uLm5vZGVzLm1hcChub2RlID0+XG4gICAgICAgICAgICBub2RlLnNlbGVjdGVkJC5waXBlKFxuICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICBtYXAoKCkgPT4gbm9kZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgbWFwKChjaGFuZ2VkTm9kZSkgPT4gW1xuICAgICAgICB7IHR5cGU6ICdzZWxlY3QnLCBpZDogY2hhbmdlZE5vZGUubm9kZS5pZCwgc2VsZWN0ZWQ6IGNoYW5nZWROb2RlLnNlbGVjdGVkKCkgfVxuICAgICAgXSlcbiAgICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT5cblxuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlcyQ6IE9ic2VydmFibGU8Tm9kZUNoYW5nZVtdPiA9IG1lcmdlKFxuICAgIHRoaXMubm9kZXNQb3NpdGlvbkNoYW5nZSQsXG4gICAgdGhpcy5ub2RlQWRkQ2hhbmdlJCxcbiAgICB0aGlzLm5vZGVSZW1vdmVDaGFuZ2UkLFxuICAgIHRoaXMubm9kZVNlbGVjdGVkQ2hhbmdlJFxuICApLnBpcGUoXG4gICAgLy8gdGhpcyBmaXhlcyBhIGJ1ZyB3aGVuIG9uIGZpcmUgbm9kZSBldmVudCBjaGFuZ2UsXG4gICAgLy8geW91IGNhbid0IGdldCB2YWxpZCBsaXN0IG9mIGRldGFjaGVkIGVkZ2VzXG4gICAgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyLCBERUxBWV9GT1JfU0NIRURVTEVSKSxcbiAgKVxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvbm9kZS1jaGFuZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksR0FBRyxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBYyxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdsSSxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFBO0FBRzlCLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRTdDLHlCQUFvQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQzthQUN0RSxJQUFJO1FBQ0gsNkZBQTZGO1FBQzdGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xCLEtBQUssQ0FDSCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ2Qsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2hCLENBQ0YsQ0FDRixDQUNGO1FBQ0Qsa0VBQWtFO1FBQ2xF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QUMsRUFDUCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2hCLENBQ0YsQ0FDRixDQUNGLEVBQ0QsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNuQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUU7U0FDOUUsQ0FBQyxDQUNnQyxDQUFBO1FBRXRCLGFBQVEsR0FBNkIsS0FBSyxDQUN4RCxJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUN6QixDQUFDLElBQUk7UUFDSixtREFBbUQ7UUFDbkQsNkNBQTZDO1FBQzdDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FDL0MsQ0FBQTtLQUNGOytHQTlGWSxrQkFBa0I7bUhBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBhc3luY1NjaGVkdWxlciwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtZXJnZSwgb2JzZXJ2ZU9uLCBwYWlyd2lzZSwgc2tpcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb2RlQ2hhbmdlIH0gZnJvbSAnLi4vdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5cbi8vIHRoaXMgZGVsYXkgZml4ZXMgdGhlIGNhc2VzIHdoZW4gY2hhbmdlIHRyaWdnZXJlZFxuLy8gYnV0IHRoZSBmbG93IG5vdCB5ZXQgZnlsbHkgcmUtcmVuZGVyZWRcbmNvbnN0IERFTEFZX0ZPUl9TQ0hFRFVMRVIgPSAyNVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTm9kZXNDaGFuZ2VTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGVudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKVxuXG4gIHByb3RlY3RlZCBub2Rlc1Bvc2l0aW9uQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcylcbiAgICAucGlwZShcbiAgICAgIC8vIENoZWNrIGZvciBub2RlcyBsaXN0IGNoYW5nZSBhbmQgd2F0Y2ggZm9yIHNwZWNpZmljIG5vZGUgZnJvbSB0aGlzIGxpc3QgY2hhbmdlIGl0cyBwb3NpdGlvblxuICAgICAgc3dpdGNoTWFwKChub2RlcykgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgLi4ubm9kZXMubWFwKG5vZGUgPT5cbiAgICAgICAgICAgIG5vZGUucG9pbnQkLnBpcGUoXG4gICAgICAgICAgICAgIC8vIHNraXAgaW5pdGlhbCBwb3NpdGlvbiBmcm9tIHNpZ25hbFxuICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICBtYXAoKCkgPT4gbm9kZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICAvLyBGb3Igbm93IGl0J3MgYSBzaW5nbGUgbm9kZSwgbGF0ZXIgdGhpcyBsaXN0IHdpbGwgYWxzbyBiZSBmaWxsZWRcbiAgICAgIC8vIHdpdGggY2hpbGQgbm9kZSBwb3NpdGlvbiBjaGFuZ2VzXG4gICAgICBtYXAoY2hhbmdlZE5vZGUgPT4gW1xuICAgICAgICB7IHR5cGU6ICdwb3NpdGlvbicsIGlkOiBjaGFuZ2VkTm9kZS5ub2RlLmlkLCBwb2ludDogY2hhbmdlZE5vZGUucG9pbnQoKSB9XG4gICAgICBdKVxuICAgICkgc2F0aXNmaWVzIE9ic2VydmFibGU8Tm9kZUNoYW5nZVtdPlxuXG4gIHByb3RlY3RlZCBub2RlU2l6ZUNoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMpXG4gICAgLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKG5vZGVzKSA9PlxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAuLi5ub2Rlcy5tYXAobm9kZSA9PlxuICAgICAgICAgICAgbm9kZS5zaXplJC5waXBlKFxuICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICBtYXAoKCkgPT4gbm9kZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBtYXAoY2hhbmdlZE5vZGUgPT4gW1xuICAgICAgICB7IHR5cGU6ICdzaXplJywgaWQ6IGNoYW5nZWROb2RlLm5vZGUuaWQsIHNpemU6IGNoYW5nZWROb2RlLnNpemUoKSB9XG4gICAgICBdKVxuICAgICkgc2F0aXNmaWVzIE9ic2VydmFibGU8Tm9kZUNoYW5nZVtdPlxuXG4gIHByb3RlY3RlZCBub2RlQWRkQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcylcbiAgICAucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKFtvbGRMaXN0LCBuZXdMaXN0XSkgPT5cbiAgICAgICAgbmV3TGlzdC5maWx0ZXIobm9kZSA9PiAhb2xkTGlzdC5pbmNsdWRlcyhub2RlKSlcbiAgICAgICksXG4gICAgICBmaWx0ZXIoKG5vZGVzKSA9PiAhIW5vZGVzLmxlbmd0aCksXG4gICAgICBtYXAoKG5vZGVzKSA9PlxuICAgICAgICBub2Rlcy5tYXAobm9kZSA9PiAoeyB0eXBlOiAnYWRkJywgaWQ6IG5vZGUubm9kZS5pZCB9KSlcbiAgICAgIClcbiAgICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT5cblxuICBwcm90ZWN0ZWQgbm9kZVJlbW92ZUNoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMpXG4gICAgLnBpcGUoXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKChbb2xkTGlzdCwgbmV3TGlzdF0pID0+XG4gICAgICAgIG9sZExpc3QuZmlsdGVyKG5vZGUgPT4gIW5ld0xpc3QuaW5jbHVkZXMobm9kZSkpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChub2RlcykgPT4gISFub2Rlcy5sZW5ndGgpLFxuICAgICAgbWFwKChub2RlcykgPT5cbiAgICAgICAgbm9kZXMubWFwKG5vZGUgPT4gKHsgdHlwZTogJ3JlbW92ZScsIGlkOiBub2RlLm5vZGUuaWQgfSkpXG4gICAgICApXG4gICAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+XG5cbiAgcHJvdGVjdGVkIG5vZGVTZWxlY3RlZENoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMpXG4gICAgLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKG5vZGVzKSA9PlxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAuLi5ub2Rlcy5tYXAobm9kZSA9PlxuICAgICAgICAgICAgbm9kZS5zZWxlY3RlZCQucGlwZShcbiAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgbWFwKCgpID0+IG5vZGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIG1hcCgoY2hhbmdlZE5vZGUpID0+IFtcbiAgICAgICAgeyB0eXBlOiAnc2VsZWN0JywgaWQ6IGNoYW5nZWROb2RlLm5vZGUuaWQsIHNlbGVjdGVkOiBjaGFuZ2VkTm9kZS5zZWxlY3RlZCgpIH1cbiAgICAgIF0pXG4gICAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+XG5cbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZXMkOiBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT4gPSBtZXJnZShcbiAgICB0aGlzLm5vZGVzUG9zaXRpb25DaGFuZ2UkLFxuICAgIHRoaXMubm9kZVNpemVDaGFuZ2UkLFxuICAgIHRoaXMubm9kZUFkZENoYW5nZSQsXG4gICAgdGhpcy5ub2RlUmVtb3ZlQ2hhbmdlJCxcbiAgICB0aGlzLm5vZGVTZWxlY3RlZENoYW5nZSRcbiAgKS5waXBlKFxuICAgIC8vIHRoaXMgZml4ZXMgYSBidWcgd2hlbiBvbiBmaXJlIG5vZGUgZXZlbnQgY2hhbmdlLFxuICAgIC8vIHlvdSBjYW4ndCBnZXQgdmFsaWQgbGlzdCBvZiBkZXRhY2hlZCBlZGdlc1xuICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlciwgREVMQVlfRk9SX1NDSEVEVUxFUiksXG4gIClcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2UudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9ub2RlLWNoYW5nZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZVwiXG5cbmV4cG9ydCB0eXBlIE5vZGVDaGFuZ2UgPVxuICBOb2RlUG9zaXRpb25DaGFuZ2UgfFxuICBOb2RlQWRkQ2hhbmdlIHxcbiAgTm9kZVJlbW92ZUNoYW5nZSB8XG4gIE5vZGVTZWxlY3RlZENoYW5nZVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVQb3NpdGlvbkNoYW5nZSBleHRlbmRzIE5vZGVDaGFuZ2VTaGFyZWQge1xuICB0eXBlOiAncG9zaXRpb24nXG4gIHBvaW50OiBQb2ludFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVBZGRDaGFuZ2UgZXh0ZW5kcyBOb2RlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ2FkZCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlUmVtb3ZlQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdyZW1vdmUnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVNlbGVjdGVkQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdzZWxlY3QnXG4gIHNlbGVjdGVkOiBib29sZWFuXG59XG5cbmludGVyZmFjZSBOb2RlQ2hhbmdlU2hhcmVkIHtcbiAgaWQ6IHN0cmluZ1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2UudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9ub2RlLWNoYW5nZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZVwiXG5cbmV4cG9ydCB0eXBlIE5vZGVDaGFuZ2UgPVxuICBOb2RlUG9zaXRpb25DaGFuZ2UgfFxuICBOb2RlU2l6ZUNoYW5nZSB8XG4gIE5vZGVBZGRDaGFuZ2UgfFxuICBOb2RlUmVtb3ZlQ2hhbmdlIHxcbiAgTm9kZVNlbGVjdGVkQ2hhbmdlXG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVBvc2l0aW9uQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdwb3NpdGlvbidcbiAgcG9pbnQ6IFBvaW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVNpemVDaGFuZ2UgZXh0ZW5kcyBOb2RlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ3NpemUnXG4gIHNpemU6IHsgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVBZGRDaGFuZ2UgZXh0ZW5kcyBOb2RlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ2FkZCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlUmVtb3ZlQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdyZW1vdmUnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVNlbGVjdGVkQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdzZWxlY3QnXG4gIHNlbGVjdGVkOiBib29sZWFuXG59XG5cbmludGVyZmFjZSBOb2RlQ2hhbmdlU2hhcmVkIHtcbiAgaWQ6IHN0cmluZ1xufVxuIl19
@@ -1,11 +1,11 @@
1
1
  import { Observable } from "rxjs";
2
- export function resizable(elems) {
2
+ export function resizable(elems, zone) {
3
3
  return new Observable((subscriber) => {
4
4
  let ro = new ResizeObserver((entries) => {
5
- subscriber.next(entries);
5
+ zone.run(() => subscriber.next(entries));
6
6
  });
7
7
  elems.forEach(e => ro.observe(e));
8
8
  return () => ro.disconnect();
9
9
  });
10
10
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL3Jlc2l6YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBZ0I7SUFDeEMsT0FBTyxJQUFJLFVBQVUsQ0FBd0IsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUMxRCxJQUFJLEVBQUUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRWpDLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXphYmxlKGVsZW1zOiBFbGVtZW50W10pIHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFJlc2l6ZU9ic2VydmVyRW50cnlbXT4oKHN1YnNjcmliZXIpID0+IHtcbiAgICBsZXQgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIHN1YnNjcmliZXIubmV4dChlbnRyaWVzKVxuICAgIH0pO1xuXG4gICAgZWxlbXMuZm9yRWFjaChlID0+IHJvLm9ic2VydmUoZSkpXG5cbiAgICByZXR1cm4gKCkgPT4gcm8uZGlzY29ubmVjdCgpXG4gIH0pO1xufVxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL3Jlc2l6YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBZ0IsRUFBRSxJQUFZO0lBQ3RELE9BQU8sSUFBSSxVQUFVLENBQXdCLENBQUMsVUFBVSxFQUFFLEVBQUU7UUFDMUQsSUFBSSxFQUFFLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFakMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDOUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXphYmxlKGVsZW1zOiBFbGVtZW50W10sIHpvbmU6IE5nWm9uZSkge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPigoc3Vic2NyaWJlcikgPT4ge1xuICAgIGxldCBybyA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgem9uZS5ydW4oKCkgPT4gc3Vic2NyaWJlci5uZXh0KGVudHJpZXMpKVxuICAgIH0pO1xuXG4gICAgZWxlbXMuZm9yRWFjaChlID0+IHJvLm9ic2VydmUoZSkpXG5cbiAgICByZXR1cm4gKCkgPT4gcm8uZGlzY29ubmVjdCgpXG4gIH0pO1xufVxuIl19
@@ -18,6 +18,7 @@ import { PointerDirective } from './directives/pointer.directive';
18
18
  import { RootPointerDirective } from './directives/root-pointer.directive';
19
19
  import { BackgroundComponent } from './components/background/background.component';
20
20
  import { FlowSizeControllerDirective } from './directives/flow-size-controller.directive';
21
+ import { ResizableComponent } from './public-components/resizable/resizable.component';
21
22
  import * as i0 from "@angular/core";
22
23
  const components = [
23
24
  VflowComponent,
@@ -27,7 +28,8 @@ const components = [
27
28
  ConnectionComponent,
28
29
  HandleComponent,
29
30
  DefsComponent,
30
- BackgroundComponent
31
+ BackgroundComponent,
32
+ ResizableComponent,
31
33
  ];
32
34
  const directives = [
33
35
  SpacePointContextDirective,
@@ -38,7 +40,7 @@ const directives = [
38
40
  SelectableDirective,
39
41
  PointerDirective,
40
42
  RootPointerDirective,
41
- FlowSizeControllerDirective
43
+ FlowSizeControllerDirective,
42
44
  ];
43
45
  const templateDirectives = [
44
46
  NodeHtmlTemplateDirective,
@@ -57,7 +59,8 @@ export class VflowModule {
57
59
  ConnectionComponent,
58
60
  HandleComponent,
59
61
  DefsComponent,
60
- BackgroundComponent, SpacePointContextDirective,
62
+ BackgroundComponent,
63
+ ResizableComponent, SpacePointContextDirective,
61
64
  MapContextDirective,
62
65
  RootSvgReferenceDirective,
63
66
  RootSvgContextDirective,
@@ -72,6 +75,7 @@ export class VflowModule {
72
75
  ConnectionTemplateDirective,
73
76
  HandleTemplateDirective], imports: [CommonModule], exports: [VflowComponent,
74
77
  HandleComponent,
78
+ ResizableComponent,
75
79
  SelectableDirective, NodeHtmlTemplateDirective,
76
80
  GroupNodeTemplateDirective,
77
81
  EdgeLabelHtmlTemplateDirective,
@@ -87,10 +91,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
87
91
  exports: [
88
92
  VflowComponent,
89
93
  HandleComponent,
94
+ ResizableComponent,
90
95
  SelectableDirective,
91
96
  ...templateDirectives
92
97
  ],
93
98
  declarations: [...components, ...directives, ...templateDirectives],
94
99
  }]
95
100
  }] });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3ZmbG93Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyTixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUUxRixNQUFNLFVBQVUsR0FBRztJQUNqQixjQUFjO0lBQ2QsYUFBYTtJQUNiLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixhQUFhO0lBQ2IsbUJBQW1CO0NBQ3BCLENBQUE7QUFFRCxNQUFNLFVBQVUsR0FBRztJQUNqQiwwQkFBMEI7SUFDMUIsbUJBQW1CO0lBQ25CLHlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkIsNkJBQTZCO0lBQzdCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLDJCQUEyQjtDQUM1QixDQUFBO0FBRUQsTUFBTSxrQkFBa0IsR0FBRztJQUN6Qix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLDhCQUE4QjtJQUM5QixxQkFBcUI7SUFDckIsMkJBQTJCO0lBQzNCLHVCQUF1QjtDQUN4QixDQUFBO0FBWUQsTUFBTSxPQUFPLFdBQVc7K0dBQVgsV0FBVztnSEFBWCxXQUFXLGlCQXpDdEIsY0FBYztZQUNkLGFBQWE7WUFDYixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsYUFBYTtZQUNiLG1CQUFtQixFQUluQiwwQkFBMEI7WUFDMUIsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6Qix1QkFBdUI7WUFDdkIsNkJBQTZCO1lBQzdCLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLDJCQUEyQixFQUkzQix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLDhCQUE4QjtZQUM5QixxQkFBcUI7WUFDckIsMkJBQTJCO1lBQzNCLHVCQUF1QixhQUliLFlBQVksYUFFcEIsY0FBYztZQUNkLGVBQWU7WUFDZixtQkFBbUIsRUFickIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiw4QkFBOEI7WUFDOUIscUJBQXFCO1lBQ3JCLDJCQUEyQjtZQUMzQix1QkFBdUI7Z0hBYVosV0FBVyxZQVRaLFlBQVk7OzRGQVNYLFdBQVc7a0JBVnZCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsR0FBRyxrQkFBa0I7cUJBQ3RCO29CQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsa0JBQWtCLENBQUM7aUJBQ3BFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWZmxvd0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy92Zmxvdy92Zmxvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ub2RlL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1hcENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVkZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZWRnZS9lZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGdlTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZWRnZS1sYWJlbC9lZGdlLWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25uZWN0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZURpcmVjdGl2ZSwgRWRnZVRlbXBsYXRlRGlyZWN0aXZlLCBHcm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSwgSGFuZGxlVGVtcGxhdGVEaXJlY3RpdmUsIE5vZGVIdG1sVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbm5lY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29ubmVjdGlvbi9jb25uZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTcGFjZVBvaW50Q29udGV4dERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zcGFjZS1wb2ludC1jb250ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm9vdFN2Z0NvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcm9vdC1zdmctY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGVmc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kZWZzL2RlZnMuY29tcG9uZW50JztcbmltcG9ydCB7IEhhbmRsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIYW5kbGVTaXplQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9oYW5kbGUtc2l6ZS1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NlbGVjdGFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm9vdFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcm9vdC1wb2ludGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JhY2tncm91bmQvYmFja2dyb3VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxvd1NpemVDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Zsb3ctc2l6ZS1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IGNvbXBvbmVudHMgPSBbXG4gIFZmbG93Q29tcG9uZW50LFxuICBOb2RlQ29tcG9uZW50LFxuICBFZGdlQ29tcG9uZW50LFxuICBFZGdlTGFiZWxDb21wb25lbnQsXG4gIENvbm5lY3Rpb25Db21wb25lbnQsXG4gIEhhbmRsZUNvbXBvbmVudCxcbiAgRGVmc0NvbXBvbmVudCxcbiAgQmFja2dyb3VuZENvbXBvbmVudFxuXVxuXG5jb25zdCBkaXJlY3RpdmVzID0gW1xuICBTcGFjZVBvaW50Q29udGV4dERpcmVjdGl2ZSxcbiAgTWFwQ29udGV4dERpcmVjdGl2ZSxcbiAgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSxcbiAgUm9vdFN2Z0NvbnRleHREaXJlY3RpdmUsXG4gIEhhbmRsZVNpemVDb250cm9sbGVyRGlyZWN0aXZlLFxuICBTZWxlY3RhYmxlRGlyZWN0aXZlLFxuICBQb2ludGVyRGlyZWN0aXZlLFxuICBSb290UG9pbnRlckRpcmVjdGl2ZSxcbiAgRmxvd1NpemVDb250cm9sbGVyRGlyZWN0aXZlXG5dXG5cbmNvbnN0IHRlbXBsYXRlRGlyZWN0aXZlcyA9IFtcbiAgTm9kZUh0bWxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgR3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgRWRnZVRlbXBsYXRlRGlyZWN0aXZlLFxuICBDb25uZWN0aW9uVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEhhbmRsZVRlbXBsYXRlRGlyZWN0aXZlXG5dXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbXG4gICAgVmZsb3dDb21wb25lbnQsXG4gICAgSGFuZGxlQ29tcG9uZW50LFxuICAgIFNlbGVjdGFibGVEaXJlY3RpdmUsXG4gICAgLi4udGVtcGxhdGVEaXJlY3RpdmVzXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogWy4uLmNvbXBvbmVudHMsIC4uLmRpcmVjdGl2ZXMsIC4uLnRlbXBsYXRlRGlyZWN0aXZlc10sXG59KVxuZXhwb3J0IGNsYXNzIFZmbG93TW9kdWxlIHsgfVxuIl19
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3ZmbG93Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyTixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOztBQUV2RixNQUFNLFVBQVUsR0FBRztJQUNqQixjQUFjO0lBQ2QsYUFBYTtJQUNiLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGtCQUFrQjtDQUNuQixDQUFBO0FBRUQsTUFBTSxVQUFVLEdBQUc7SUFDakIsMEJBQTBCO0lBQzFCLG1CQUFtQjtJQUNuQix5QkFBeUI7SUFDekIsdUJBQXVCO0lBQ3ZCLDZCQUE2QjtJQUM3QixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQiwyQkFBMkI7Q0FDNUIsQ0FBQTtBQUVELE1BQU0sa0JBQWtCLEdBQUc7SUFDekIseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUMxQiw4QkFBOEI7SUFDOUIscUJBQXFCO0lBQ3JCLDJCQUEyQjtJQUMzQix1QkFBdUI7Q0FDeEIsQ0FBQTtBQWFELE1BQU0sT0FBTyxXQUFXOytHQUFYLFdBQVc7Z0hBQVgsV0FBVyxpQkEzQ3RCLGNBQWM7WUFDZCxhQUFhO1lBQ2IsYUFBYTtZQUNiLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsa0JBQWtCLEVBSWxCLDBCQUEwQjtZQUMxQixtQkFBbUI7WUFDbkIseUJBQXlCO1lBQ3pCLHVCQUF1QjtZQUN2Qiw2QkFBNkI7WUFDN0IsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsMkJBQTJCLEVBSTNCLHlCQUF5QjtZQUN6QiwwQkFBMEI7WUFDMUIsOEJBQThCO1lBQzlCLHFCQUFxQjtZQUNyQiwyQkFBMkI7WUFDM0IsdUJBQXVCLGFBSWIsWUFBWSxhQUVwQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixtQkFBbUIsRUFkckIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiw4QkFBOEI7WUFDOUIscUJBQXFCO1lBQ3JCLDJCQUEyQjtZQUMzQix1QkFBdUI7Z0hBY1osV0FBVyxZQVZaLFlBQVk7OzRGQVVYLFdBQVc7a0JBWHZCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixHQUFHLGtCQUFrQjtxQkFDdEI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQztpQkFDcEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZmbG93Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ZmbG93L3ZmbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25vZGUvbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFwQ29udGV4dERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9tYXAtY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWRnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lZGdlL2VkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEVkZ2VMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lZGdlLWxhYmVsL2VkZ2UtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IENvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSwgRWRnZUxhYmVsSHRtbFRlbXBsYXRlRGlyZWN0aXZlLCBFZGdlVGVtcGxhdGVEaXJlY3RpdmUsIEdyb3VwTm9kZVRlbXBsYXRlRGlyZWN0aXZlLCBIYW5kbGVUZW1wbGF0ZURpcmVjdGl2ZSwgTm9kZUh0bWxUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25uZWN0aW9uL2Nvbm5lY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NwYWNlLXBvaW50LWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcmVmZXJlbmNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSb290U3ZnQ29udGV4dERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9yb290LXN2Zy1jb250ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEZWZzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RlZnMvZGVmcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGFuZGxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hhbmRsZS9oYW5kbGUuY29tcG9uZW50JztcbmltcG9ydCB7IEhhbmRsZVNpemVDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2hhbmRsZS1zaXplLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNlbGVjdGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9pbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9wb2ludGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSb290UG9pbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9yb290LXBvaW50ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhY2tncm91bmRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYmFja2dyb3VuZC9iYWNrZ3JvdW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGbG93U2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmxvdy1zaXplLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJlc2l6YWJsZUNvbXBvbmVudCB9IGZyb20gJy4vcHVibGljLWNvbXBvbmVudHMvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuXG5jb25zdCBjb21wb25lbnRzID0gW1xuICBWZmxvd0NvbXBvbmVudCxcbiAgTm9kZUNvbXBvbmVudCxcbiAgRWRnZUNvbXBvbmVudCxcbiAgRWRnZUxhYmVsQ29tcG9uZW50LFxuICBDb25uZWN0aW9uQ29tcG9uZW50LFxuICBIYW5kbGVDb21wb25lbnQsXG4gIERlZnNDb21wb25lbnQsXG4gIEJhY2tncm91bmRDb21wb25lbnQsXG4gIFJlc2l6YWJsZUNvbXBvbmVudCxcbl1cblxuY29uc3QgZGlyZWN0aXZlcyA9IFtcbiAgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUsXG4gIE1hcENvbnRleHREaXJlY3RpdmUsXG4gIFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUsXG4gIFJvb3RTdmdDb250ZXh0RGlyZWN0aXZlLFxuICBIYW5kbGVTaXplQ29udHJvbGxlckRpcmVjdGl2ZSxcbiAgU2VsZWN0YWJsZURpcmVjdGl2ZSxcbiAgUG9pbnRlckRpcmVjdGl2ZSxcbiAgUm9vdFBvaW50ZXJEaXJlY3RpdmUsXG4gIEZsb3dTaXplQ29udHJvbGxlckRpcmVjdGl2ZSxcbl1cblxuY29uc3QgdGVtcGxhdGVEaXJlY3RpdmVzID0gW1xuICBOb2RlSHRtbFRlbXBsYXRlRGlyZWN0aXZlLFxuICBHcm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgRWRnZUxhYmVsSHRtbFRlbXBsYXRlRGlyZWN0aXZlLFxuICBFZGdlVGVtcGxhdGVEaXJlY3RpdmUsXG4gIENvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgSGFuZGxlVGVtcGxhdGVEaXJlY3RpdmVcbl1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBWZmxvd0NvbXBvbmVudCxcbiAgICBIYW5kbGVDb21wb25lbnQsXG4gICAgUmVzaXphYmxlQ29tcG9uZW50LFxuICAgIFNlbGVjdGFibGVEaXJlY3RpdmUsXG4gICAgLi4udGVtcGxhdGVEaXJlY3RpdmVzXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogWy4uLmNvbXBvbmVudHMsIC4uLmRpcmVjdGl2ZXMsIC4uLnRlbXBsYXRlRGlyZWN0aXZlc10sXG59KVxuZXhwb3J0IGNsYXNzIFZmbG93TW9kdWxlIHsgfVxuIl19