@posiwise/shared-components 0.0.32 → 0.0.34

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.
@@ -0,0 +1,309 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { NumberPickerService } from '@posiwise/common-services';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@posiwise/common-services";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "primeng/tooltip";
7
+ import * as i4 from "@angular/common";
8
+ export class NumberPickerComponent {
9
+ constructor(numberPickerService) {
10
+ this.numberPickerService = numberPickerService;
11
+ this.eventHolder = null;
12
+ this.countInterval = null;
13
+ this.isInputFocused = false;
14
+ this.size = 'md';
15
+ this.customClass = {};
16
+ this.mouseWheel = false;
17
+ this.arrowKeys = true;
18
+ this.inputReadOnly = false;
19
+ this.showUpButton = true;
20
+ this.showDownButton = true;
21
+ this.valueChange = new EventEmitter();
22
+ this.minReached = new EventEmitter();
23
+ this.maxReached = new EventEmitter();
24
+ this.pickStarted = new EventEmitter();
25
+ this.pickStoped = new EventEmitter();
26
+ this.pickUpStarted = new EventEmitter();
27
+ this.pickUpStoped = new EventEmitter();
28
+ this.pickDownStarted = new EventEmitter();
29
+ this.pickDownStoped = new EventEmitter();
30
+ }
31
+ ngOnInit() {
32
+ this.initPicker();
33
+ }
34
+ isHorizontal() {
35
+ return this.buttonsOrientation !== 'v' && this.buttonsOrientation !== 'vertical';
36
+ }
37
+ onFocus(event) {
38
+ event.preventDefault();
39
+ event.stopPropagation();
40
+ this.isInputFocused = true;
41
+ }
42
+ onBlur(event) {
43
+ event.preventDefault();
44
+ event.stopPropagation();
45
+ this.isInputFocused = false;
46
+ }
47
+ onMouseWheel(event) {
48
+ console.log(event, 'abc');
49
+ if (this.isInputFocused) {
50
+ event.preventDefault();
51
+ let wheelUp = null;
52
+ let delta = null;
53
+ if (event.deltaY) {
54
+ delta = event.deltaY / 60;
55
+ }
56
+ if (event.detail) {
57
+ delta = -event.detail / 2;
58
+ }
59
+ if (delta !== null) {
60
+ wheelUp = delta > 0;
61
+ }
62
+ this.afterMouseWheels(wheelUp, event);
63
+ event.stopPropagation();
64
+ }
65
+ }
66
+ afterMouseWheels(wheelUp, event) {
67
+ this.onPickStarted(wheelUp);
68
+ if (wheelUp) {
69
+ this.onIncrease(event);
70
+ }
71
+ else {
72
+ this.onDecrease(event);
73
+ }
74
+ this.onPickStoped(wheelUp);
75
+ }
76
+ onValueChange(_event) {
77
+ if (this.value > this.max) {
78
+ this.value = this.max;
79
+ }
80
+ else if (this.value < this.min) {
81
+ this.value = this.min;
82
+ }
83
+ if (this.parseVal(this.value) === 0 || this.parseVal(this.value)) {
84
+ this.valueChange.emit(this.value);
85
+ }
86
+ }
87
+ onDecrease(event) {
88
+ event.preventDefault();
89
+ if (this.canDecrease()) {
90
+ this.value = this.round(this.value > this.min ? (this.value -= this.step) : this.value);
91
+ this.valueChange.emit(this.value);
92
+ }
93
+ else {
94
+ this.minReached.emit(true);
95
+ }
96
+ event.stopPropagation();
97
+ }
98
+ onIncrease(event) {
99
+ event.preventDefault();
100
+ if (this.canIncrease()) {
101
+ this.value = this.round(this.value < this.max ? (this.value += this.step) : this.value);
102
+ this.valueChange.emit(this.value);
103
+ }
104
+ else {
105
+ this.maxReached.emit(true);
106
+ }
107
+ event.stopPropagation();
108
+ }
109
+ onMouseDown(event, increase = true) {
110
+ this.afterMouseDown(increase, event);
111
+ }
112
+ isArrowUpDown(keyCode) {
113
+ return keyCode === 38 || keyCode === 40;
114
+ }
115
+ isArowUp(keyCode) {
116
+ return keyCode === 38;
117
+ }
118
+ loopPick(increase, event) {
119
+ this.onPickStarted(increase);
120
+ this.eventHolder = setTimeout(() => {
121
+ this.countInterval = setInterval(() => {
122
+ if (increase) {
123
+ this.onIncrease(event);
124
+ }
125
+ else {
126
+ this.onDecrease(event);
127
+ }
128
+ }, this.pickTimer);
129
+ }, this.pickStartAfter);
130
+ }
131
+ onMouseUp(event, increase = true) {
132
+ this.afterMouseUp(increase, event);
133
+ }
134
+ onKeyDown(event) {
135
+ if (this.isArrowUpDown(event.keyCode)) {
136
+ event.preventDefault();
137
+ if (!this.eventHolder) {
138
+ this.loopPick(this.isArowUp(event.keyCode), event);
139
+ }
140
+ }
141
+ event.stopPropagation();
142
+ }
143
+ onKeyUp(event) {
144
+ if (this.isArrowUpDown(event.keyCode)) {
145
+ event.preventDefault();
146
+ this.afterPick(this.isArowUp(event.keyCode));
147
+ }
148
+ event.stopPropagation();
149
+ }
150
+ afterMouseDown(up, event) {
151
+ event.preventDefault();
152
+ if (this.isLeftClick(event.which)) {
153
+ this.loopPick(up, event);
154
+ }
155
+ event.stopPropagation();
156
+ }
157
+ afterMouseUp(up, event) {
158
+ event.preventDefault();
159
+ this.afterPick(up);
160
+ event.stopPropagation();
161
+ }
162
+ afterPick(up) {
163
+ this.onPickStoped(up);
164
+ this.clearTimers();
165
+ }
166
+ clearTimers() {
167
+ clearTimeout(this.eventHolder);
168
+ clearInterval(this.countInterval);
169
+ this.eventHolder = null;
170
+ this.countInterval = null;
171
+ }
172
+ afterArrowKeysPressed(up, event, start) {
173
+ if (start) {
174
+ this.loopPick(up, event);
175
+ }
176
+ else {
177
+ this.afterPick(up);
178
+ }
179
+ }
180
+ parseVal(value) {
181
+ if (typeof value === 'number') {
182
+ return value;
183
+ }
184
+ return Number.parseFloat(value);
185
+ }
186
+ getPrecision(step) {
187
+ return /^\d*$/.exec(String(step))[0].length;
188
+ }
189
+ round(value) {
190
+ // eslint-disable-next-line no-restricted-properties
191
+ return Math.round(value * 10 ** this.precision) / 10 ** this.precision;
192
+ }
193
+ canIncrease() {
194
+ const canIncrease = this.value <= this.max - this.step;
195
+ if (!canIncrease) {
196
+ this.value = this.max;
197
+ }
198
+ return canIncrease;
199
+ }
200
+ canDecrease() {
201
+ const canDecrease = this.value >= this.min + this.step;
202
+ if (!canDecrease) {
203
+ this.value = this.min;
204
+ }
205
+ return canDecrease;
206
+ }
207
+ onPickStarted(increase) {
208
+ if (increase) {
209
+ if (this.canIncrease()) {
210
+ this.pickStarted.emit(true);
211
+ this.pickUpStarted.emit(true);
212
+ }
213
+ }
214
+ else if (this.canDecrease()) {
215
+ this.pickStarted.emit(true);
216
+ this.pickDownStarted.emit(true);
217
+ }
218
+ }
219
+ onPickStoped(increase) {
220
+ if (increase) {
221
+ if (this.canIncrease()) {
222
+ this.pickUpStoped.emit(true);
223
+ this.pickStoped.emit(true);
224
+ }
225
+ }
226
+ else if (this.canDecrease()) {
227
+ this.pickDownStoped.emit(true);
228
+ this.pickStoped.emit(true);
229
+ }
230
+ }
231
+ isLeftClick(witch) {
232
+ return witch === 1;
233
+ }
234
+ initPicker() {
235
+ this.min = this.parseVal(this.min) || this.numberPickerService.min;
236
+ this.max = this.parseVal(this.max) || this.numberPickerService.max;
237
+ this.step = this.parseVal(this.step) || this.numberPickerService.step;
238
+ this.value = this.parseVal(this.value) || this.numberPickerService.value;
239
+ this.pickStartAfter =
240
+ this.parseVal(this.pickStartAfter) || this.numberPickerService.pickStartAfter;
241
+ this.pickTimer = this.parseVal(this.pickTimer) || this.numberPickerService.pickTimer;
242
+ this.precision = this.getPrecision(this.step) || this.numberPickerService.precision;
243
+ this.value = this.round(this.value);
244
+ this.placeholder = this.placeholder !== undefined ? this.placeholder : '';
245
+ }
246
+ }
247
+ NumberPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NumberPickerComponent, deps: [{ token: i1.NumberPickerService }], target: i0.ɵɵFactoryTarget.Component });
248
+ NumberPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NumberPickerComponent, selector: "pw-number-picker", inputs: { min: "min", showTooltip: "showTooltip", tooltipText: "tooltipText", max: "max", step: "step", value: "value", pickStartAfter: "pickStartAfter", pickTimer: "pickTimer", prefix: "prefix", postfix: "postfix", placeholder: "placeholder", buttonsOrientation: "buttonsOrientation", size: "size", customClass: "customClass", mouseWheel: "mouseWheel", arrowKeys: "arrowKeys", inputReadOnly: "inputReadOnly", showUpButton: "showUpButton", showDownButton: "showDownButton" }, outputs: { valueChange: "valueChange", minReached: "minReached", maxReached: "maxReached", pickStarted: "pickStarted", pickStoped: "pickStoped", pickUpStarted: "pickUpStarted", pickUpStoped: "pickUpStoped", pickDownStarted: "pickDownStarted", pickDownStoped: "pickDownStoped" }, ngImport: i0, template: "<div class=\"input-group mb-3 input-{{ size }} {{ customClass.container }}\">\n <!-- Horizontal decrease button orientation -->\n <span *ngIf=\"isHorizontal() && showDownButton\"\n class=\"input-group-text decrease {{ customClass.down }}\"\n (click)=\"onDecrease($event)\"\n (mouseup)=\"onMouseUp($event, false)\"\n (mousedown)=\"onMouseDown($event, false)\">-</span>\n <!-- Input prefix -->\n <span *ngIf=\"prefix\"\n class=\"input-group-text {{ customClass.prefix }}\">{{ prefix }}\n </span>\n <input type=\"number\"\n class=\"form-control\"\n name=\"input-spin-val\"\n [(ngModel)]=\"value\"\n [readOnly]=\"inputReadOnly\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (wheel)=\"mouseWheel && onMouseWheel($event)\"\n (keyup)=\"arrowKeys && onKeyUp($event)\"\n (keydown)=\"arrowKeys && onKeyDown($event)\"\n (keydown.arrowup)=\"arrowKeys && onIncrease($event)\"\n (keydown.arrowdown)=\"arrowKeys && onDecrease($event)\"\n (change)=\"onValueChange($event)\"\n [placeholder]=\"placeholder\" />\n <!-- Input postfix -->\n\n <span *ngIf=\"postfix\"\n class=\"input-group-text {{ customClass.postfix }}\"\n [style.borderLeft]=\"'0'\">{{postfix}}\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTooltip && tooltipText\"\n [pTooltip]=\"tooltipText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </span>\n\n <!-- Horizontal increase button orientation -->\n <span *ngIf=\"isHorizontal() && showUpButton\"\n class=\"input-group-text increase {{ customClass.up }}\"\n [style.borderLeft]=\"!postfix ? '0' : ''\"\n (click)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n <!-- Vertical buttons orientation -->\n <span *ngIf=\"!isHorizontal()\"\n class=\"input-group-text vertical p-0\">\n <span *ngIf=\"showUpButton\"\n class=\"{{ customClass.up }}\"\n (click)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n <span *ngIf=\"showDownButton\"\n class=\"{{ customClass.down }}\"\n (click)=\"onDecrease($event)\"\n (mouseup)=\"onMouseUp($event, false)\"\n (mousedown)=\"onMouseDown($event, false)\">-</span>\n </span>\n</div>\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.increase:hover,.decrease:hover{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer;background-color:#d8d8d8}.increase{border-top-right-radius:3px!important;border-bottom-right-radius:3px!important}.vertical{display:flex;justify-content:center;flex-direction:column;text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer}.vertical span{line-height:15px}.input-md .vertical span,.input-sm .vertical span{padding:2px 10px}.input-lg .vertical span{padding:4px 10px}.input-xlg .vertical span{padding:7px 10px}.input-md,.input-medium{height:45px}.input-lg,.input-large{height:50px}.input-xlg,.input-xlarge{height:75px}.input-md input,.input-medium input,.input-md span,.input-medium span{font-size:22px}.input-lg input,.input-large input,.input-lg span,.input-large span{font-size:25px}.input-xlg input,.input-xlarge input,.input-xlg span,.input-xlarge span{font-size:38px}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NumberPickerComponent, decorators: [{
250
+ type: Component,
251
+ args: [{ selector: 'pw-number-picker', template: "<div class=\"input-group mb-3 input-{{ size }} {{ customClass.container }}\">\n <!-- Horizontal decrease button orientation -->\n <span *ngIf=\"isHorizontal() && showDownButton\"\n class=\"input-group-text decrease {{ customClass.down }}\"\n (click)=\"onDecrease($event)\"\n (mouseup)=\"onMouseUp($event, false)\"\n (mousedown)=\"onMouseDown($event, false)\">-</span>\n <!-- Input prefix -->\n <span *ngIf=\"prefix\"\n class=\"input-group-text {{ customClass.prefix }}\">{{ prefix }}\n </span>\n <input type=\"number\"\n class=\"form-control\"\n name=\"input-spin-val\"\n [(ngModel)]=\"value\"\n [readOnly]=\"inputReadOnly\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (wheel)=\"mouseWheel && onMouseWheel($event)\"\n (keyup)=\"arrowKeys && onKeyUp($event)\"\n (keydown)=\"arrowKeys && onKeyDown($event)\"\n (keydown.arrowup)=\"arrowKeys && onIncrease($event)\"\n (keydown.arrowdown)=\"arrowKeys && onDecrease($event)\"\n (change)=\"onValueChange($event)\"\n [placeholder]=\"placeholder\" />\n <!-- Input postfix -->\n\n <span *ngIf=\"postfix\"\n class=\"input-group-text {{ customClass.postfix }}\"\n [style.borderLeft]=\"'0'\">{{postfix}}\n <span class=\"tooltip-wrap ms-1\"\n *ngIf=\"showTooltip && tooltipText\"\n [pTooltip]=\"tooltipText\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"tooltipPosition || 'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </span>\n\n <!-- Horizontal increase button orientation -->\n <span *ngIf=\"isHorizontal() && showUpButton\"\n class=\"input-group-text increase {{ customClass.up }}\"\n [style.borderLeft]=\"!postfix ? '0' : ''\"\n (click)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n <!-- Vertical buttons orientation -->\n <span *ngIf=\"!isHorizontal()\"\n class=\"input-group-text vertical p-0\">\n <span *ngIf=\"showUpButton\"\n class=\"{{ customClass.up }}\"\n (click)=\"onIncrease($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mousedown)=\"onMouseDown($event)\">+</span>\n <span *ngIf=\"showDownButton\"\n class=\"{{ customClass.down }}\"\n (click)=\"onDecrease($event)\"\n (mouseup)=\"onMouseUp($event, false)\"\n (mousedown)=\"onMouseDown($event, false)\">-</span>\n </span>\n</div>\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.increase:hover,.decrease:hover{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer;background-color:#d8d8d8}.increase{border-top-right-radius:3px!important;border-bottom-right-radius:3px!important}.vertical{display:flex;justify-content:center;flex-direction:column;text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer}.vertical span{line-height:15px}.input-md .vertical span,.input-sm .vertical span{padding:2px 10px}.input-lg .vertical span{padding:4px 10px}.input-xlg .vertical span{padding:7px 10px}.input-md,.input-medium{height:45px}.input-lg,.input-large{height:50px}.input-xlg,.input-xlarge{height:75px}.input-md input,.input-medium input,.input-md span,.input-medium span{font-size:22px}.input-lg input,.input-large input,.input-lg span,.input-large span{font-size:25px}.input-xlg input,.input-xlarge input,.input-xlg span,.input-xlarge span{font-size:38px}\n"] }]
252
+ }], ctorParameters: function () { return [{ type: i1.NumberPickerService }]; }, propDecorators: { min: [{
253
+ type: Input
254
+ }], showTooltip: [{
255
+ type: Input
256
+ }], tooltipText: [{
257
+ type: Input
258
+ }], max: [{
259
+ type: Input
260
+ }], step: [{
261
+ type: Input
262
+ }], value: [{
263
+ type: Input
264
+ }], pickStartAfter: [{
265
+ type: Input
266
+ }], pickTimer: [{
267
+ type: Input
268
+ }], prefix: [{
269
+ type: Input
270
+ }], postfix: [{
271
+ type: Input
272
+ }], placeholder: [{
273
+ type: Input
274
+ }], buttonsOrientation: [{
275
+ type: Input
276
+ }], size: [{
277
+ type: Input
278
+ }], customClass: [{
279
+ type: Input
280
+ }], mouseWheel: [{
281
+ type: Input
282
+ }], arrowKeys: [{
283
+ type: Input
284
+ }], inputReadOnly: [{
285
+ type: Input
286
+ }], showUpButton: [{
287
+ type: Input
288
+ }], showDownButton: [{
289
+ type: Input
290
+ }], valueChange: [{
291
+ type: Output
292
+ }], minReached: [{
293
+ type: Output
294
+ }], maxReached: [{
295
+ type: Output
296
+ }], pickStarted: [{
297
+ type: Output
298
+ }], pickStoped: [{
299
+ type: Output
300
+ }], pickUpStarted: [{
301
+ type: Output
302
+ }], pickUpStoped: [{
303
+ type: Output
304
+ }], pickDownStarted: [{
305
+ type: Output
306
+ }], pickDownStoped: [{
307
+ type: Output
308
+ }] } });
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvbnVtYmVyLXBpY2tlci9udW1iZXItcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9udW1iZXItcGlja2VyL251bWJlci1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBT2hFLE1BQU0sT0FBTyxxQkFBcUI7SUFpRTlCLFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBOURwRCxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQTBCdEIsU0FBSSxHQUFhLElBQUksQ0FBQztRQUV0QixnQkFBVyxHQUFrQixFQUFFLENBQUM7UUFFaEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRXJCLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkQsZUFBVSxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELGVBQVUsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV2RCxnQkFBVyxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFD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SUFDOUUsQ0FBQzs7a0hBblRRLHFCQUFxQjtzR0FBckIscUJBQXFCLDJ5QkNWbEMsMDFFQTZEQTsyRkRuRGEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGtCQUFrQjswR0FhbkIsR0FBRztzQkFBWCxLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEN1c3RvbUNsYXNzZXMsIGJ1dHRvbnNPcmllbnRhdGlvblR5cGUsIHNpemVUeXBlIH0gZnJvbSAnLi9udW1iZXItcGlja2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBOdW1iZXJQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctbnVtYmVyLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL251bWJlci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL251bWJlci1waWNrZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcHJlY2lzaW9uOiBudW1iZXI7XG5cbiAgICBwcml2YXRlIGV2ZW50SG9sZGVyID0gbnVsbDtcblxuICAgIHByaXZhdGUgY291bnRJbnRlcnZhbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIGlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBtaW46IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHNob3dUb29sdGlwOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdG9vbHRpcFRleHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgc3RlcDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdmFsdWU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHBpY2tTdGFydEFmdGVyOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBwaWNrVGltZXI6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHByZWZpeDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcG9zdGZpeDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGJ1dHRvbnNPcmllbnRhdGlvbjogYnV0dG9uc09yaWVudGF0aW9uVHlwZTtcblxuICAgIEBJbnB1dCgpIHNpemU6IHNpemVUeXBlID0gJ21kJztcblxuICAgIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBDdXN0b21DbGFzc2VzID0ge307XG5cbiAgICBASW5wdXQoKSBtb3VzZVdoZWVsID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhcnJvd0tleXMgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgaW5wdXRSZWFkT25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2hvd1VwQnV0dG9uID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dEb3duQnV0dG9uID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgbWluUmVhY2hlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG1heFJlYWNoZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBwaWNrU3RhcnRlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHBpY2tTdG9wZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBwaWNrVXBTdGFydGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgcGlja1VwU3RvcGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgcGlja0Rvd25TdGFydGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgcGlja0Rvd25TdG9wZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbnVtYmVyUGlja2VyU2VydmljZTogTnVtYmVyUGlja2VyU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRQaWNrZXIoKTtcbiAgICB9XG5cbiAgICBpc0hvcml6b250YWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1dHRvbnNPcmllbnRhdGlvbiAhPT0gJ3YnICYmIHRoaXMuYnV0dG9uc09yaWVudGF0aW9uICE9PSAndmVydGljYWwnO1xuICAgIH1cblxuICAgIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uQmx1cihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk1vdXNlV2hlZWwoZXZlbnQ6IFdoZWVsRXZlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQsICdhYmMnKTtcbiAgICAgICAgaWYgKHRoaXMuaXNJbnB1dEZvY3VzZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBsZXQgd2hlZWxVcCA9IG51bGw7XG4gICAgICAgICAgICBsZXQgZGVsdGEgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQuZGVsdGFZKSB7XG4gICAgICAgICAgICAgICAgZGVsdGEgPSBldmVudC5kZWx0YVkgLyA2MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwpIHtcbiAgICAgICAgICAgICAgICBkZWx0YSA9IC1ldmVudC5kZXRhaWwgLyAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlbHRhICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgd2hlZWxVcCA9IGRlbHRhID4gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5hZnRlck1vdXNlV2hlZWxzKHdoZWVsVXAsIGV2ZW50KTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZnRlck1vdXNlV2hlZWxzKHdoZWVsVXA6IGFueSwgZXZlbnQ6IFdoZWVsRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vblBpY2tTdGFydGVkKHdoZWVsVXApO1xuICAgICAgICBpZiAod2hlZWxVcCkge1xuICAgICAgICAgICAgdGhpcy5vbkluY3JlYXNlKGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25EZWNyZWFzZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblBpY2tTdG9wZWQod2hlZWxVcCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZShfZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1heDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJzZVZhbCh0aGlzLnZhbHVlKSA9PT0gMCB8fCB0aGlzLnBhcnNlVmFsKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRlY3JlYXNlKGV2ZW50OiBNb3VzZUV2ZW50IHwgV2hlZWxFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuY2FuRGVjcmVhc2UoKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucm91bmQodGhpcy52YWx1ZSA+IHRoaXMubWluID8gKHRoaXMudmFsdWUgLT0gdGhpcy5zdGVwKSA6IHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5taW5SZWFjaGVkLmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgb25JbmNyZWFzZShldmVudDogTW91c2VFdmVudCB8IFdoZWVsRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLmNhbkluY3JlYXNlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnJvdW5kKHRoaXMudmFsdWUgPCB0aGlzLm1heCA/ICh0aGlzLnZhbHVlICs9IHRoaXMuc3RlcCkgOiB0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWF4UmVhY2hlZC5lbWl0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmNyZWFzZSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5hZnRlck1vdXNlRG93bihpbmNyZWFzZSwgZXZlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBcnJvd1VwRG93bihrZXlDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGtleUNvZGUgPT09IDM4IHx8IGtleUNvZGUgPT09IDQwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBcm93VXAoa2V5Q29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBrZXlDb2RlID09PSAzODtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvb3BQaWNrKGluY3JlYXNlOiBib29sZWFuLCBldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vblBpY2tTdGFydGVkKGluY3JlYXNlKTtcbiAgICAgICAgdGhpcy5ldmVudEhvbGRlciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb3VudEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpbmNyZWFzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uSW5jcmVhc2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWNyZWFzZShldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5waWNrVGltZXIpO1xuICAgICAgICB9LCB0aGlzLnBpY2tTdGFydEFmdGVyKTtcbiAgICB9XG5cbiAgICBvbk1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQsIGluY3JlYXNlID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmFmdGVyTW91c2VVcChpbmNyZWFzZSwgZXZlbnQpO1xuICAgIH1cblxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0Fycm93VXBEb3duKGV2ZW50LmtleUNvZGUpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmV2ZW50SG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb29wUGljayh0aGlzLmlzQXJvd1VwKGV2ZW50LmtleUNvZGUpLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0Fycm93VXBEb3duKGV2ZW50LmtleUNvZGUpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5hZnRlclBpY2sodGhpcy5pc0Fyb3dVcChldmVudC5rZXlDb2RlKSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZnRlck1vdXNlRG93bih1cDogYm9vbGVhbiwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNMZWZ0Q2xpY2soZXZlbnQud2hpY2gpKSB7XG4gICAgICAgICAgICB0aGlzLmxvb3BQaWNrKHVwLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZnRlck1vdXNlVXAodXA6IGJvb2xlYW4sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuYWZ0ZXJQaWNrKHVwKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZnRlclBpY2sodXA6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5vblBpY2tTdG9wZWQodXApO1xuICAgICAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclRpbWVycygpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXZlbnRIb2xkZXIpO1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuY291bnRJbnRlcnZhbCk7XG4gICAgICAgIHRoaXMuZXZlbnRIb2xkZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmNvdW50SW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWZ0ZXJBcnJvd0tleXNQcmVzc2VkKHVwOiBib29sZWFuLCBldmVudDogS2V5Ym9hcmRFdmVudCwgc3RhcnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgICAgICB0aGlzLmxvb3BQaWNrKHVwLCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFmdGVyUGljayh1cCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlVmFsKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOdW1iZXIucGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQcmVjaXNpb24oc3RlcDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIC9eXFxkKiQvLmV4ZWMoU3RyaW5nKHN0ZXApKVswXS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByb3VuZCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtcHJvcGVydGllc1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIDEwICoqIHRoaXMucHJlY2lzaW9uKSAvIDEwICoqIHRoaXMucHJlY2lzaW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuSW5jcmVhc2UoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNhbkluY3JlYXNlID0gdGhpcy52YWx1ZSA8PSB0aGlzLm1heCAtIHRoaXMuc3RlcDtcbiAgICAgICAgaWYgKCFjYW5JbmNyZWFzZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbkluY3JlYXNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuRGVjcmVhc2UoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNhbkRlY3JlYXNlID0gdGhpcy52YWx1ZSA+PSB0aGlzLm1pbiArIHRoaXMuc3RlcDtcbiAgICAgICAgaWYgKCFjYW5EZWNyZWFzZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbkRlY3JlYXNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25QaWNrU3RhcnRlZChpbmNyZWFzZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoaW5jcmVhc2UpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhbkluY3JlYXNlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpY2tTdGFydGVkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5waWNrVXBTdGFydGVkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYW5EZWNyZWFzZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnBpY2tTdGFydGVkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnBpY2tEb3duU3RhcnRlZC5lbWl0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblBpY2tTdG9wZWQoaW5jcmVhc2U6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGluY3JlYXNlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jYW5JbmNyZWFzZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5waWNrVXBTdG9wZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBpY2tTdG9wZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNhbkRlY3JlYXNlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucGlja0Rvd25TdG9wZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMucGlja1N0b3BlZC5lbWl0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0xlZnRDbGljayh3aXRjaDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB3aXRjaCA9PT0gMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRQaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWluID0gdGhpcy5wYXJzZVZhbCh0aGlzLm1pbikgfHwgdGhpcy5udW1iZXJQaWNrZXJTZXJ2aWNlLm1pbjtcbiAgICAgICAgdGhpcy5tYXggPSB0aGlzLnBhcnNlVmFsKHRoaXMubWF4KSB8fCB0aGlzLm51bWJlclBpY2tlclNlcnZpY2UubWF4O1xuICAgICAgICB0aGlzLnN0ZXAgPSB0aGlzLnBhcnNlVmFsKHRoaXMuc3RlcCkgfHwgdGhpcy5udW1iZXJQaWNrZXJTZXJ2aWNlLnN0ZXA7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnBhcnNlVmFsKHRoaXMudmFsdWUpIHx8IHRoaXMubnVtYmVyUGlja2VyU2VydmljZS52YWx1ZTtcbiAgICAgICAgdGhpcy5waWNrU3RhcnRBZnRlciA9XG4gICAgICAgICAgICB0aGlzLnBhcnNlVmFsKHRoaXMucGlja1N0YXJ0QWZ0ZXIpIHx8IHRoaXMubnVtYmVyUGlja2VyU2VydmljZS5waWNrU3RhcnRBZnRlcjtcbiAgICAgICAgdGhpcy5waWNrVGltZXIgPSB0aGlzLnBhcnNlVmFsKHRoaXMucGlja1RpbWVyKSB8fCB0aGlzLm51bWJlclBpY2tlclNlcnZpY2UucGlja1RpbWVyO1xuICAgICAgICB0aGlzLnByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHRoaXMuc3RlcCkgfHwgdGhpcy5udW1iZXJQaWNrZXJTZXJ2aWNlLnByZWNpc2lvbjtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucm91bmQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyICE9PSB1bmRlZmluZWQgPyB0aGlzLnBsYWNlaG9sZGVyIDogJyc7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG1iLTMgaW5wdXQte3sgc2l6ZSB9fSB7eyBjdXN0b21DbGFzcy5jb250YWluZXIgfX1cIj5cbiAgPCEtLSBIb3Jpem9udGFsIGRlY3JlYXNlIGJ1dHRvbiBvcmllbnRhdGlvbiAtLT5cbiAgPHNwYW4gKm5nSWY9XCJpc0hvcml6b250YWwoKSAmJiBzaG93RG93bkJ1dHRvblwiXG4gICAgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0IGRlY3JlYXNlIHt7IGN1c3RvbUNsYXNzLmRvd24gfX1cIlxuICAgIChjbGljayk9XCJvbkRlY3JlYXNlKCRldmVudClcIlxuICAgIChtb3VzZXVwKT1cIm9uTW91c2VVcCgkZXZlbnQsIGZhbHNlKVwiXG4gICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsIGZhbHNlKVwiPi08L3NwYW4+XG4gIDwhLS0gSW5wdXQgcHJlZml4IC0tPlxuICA8c3BhbiAqbmdJZj1cInByZWZpeFwiXG4gICAgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0IHt7IGN1c3RvbUNsYXNzLnByZWZpeCB9fVwiPnt7IHByZWZpeCB9fVxuICA8L3NwYW4+XG4gIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgbmFtZT1cImlucHV0LXNwaW4tdmFsXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbcmVhZE9ubHldPVwiaW5wdXRSZWFkT25seVwiXG4gICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICh3aGVlbCk9XCJtb3VzZVdoZWVsICYmIG9uTW91c2VXaGVlbCgkZXZlbnQpXCJcbiAgICAoa2V5dXApPVwiYXJyb3dLZXlzICYmIG9uS2V5VXAoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwiYXJyb3dLZXlzICYmIG9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAoa2V5ZG93bi5hcnJvd3VwKT1cImFycm93S2V5cyAmJiBvbkluY3JlYXNlKCRldmVudClcIlxuICAgIChrZXlkb3duLmFycm93ZG93bik9XCJhcnJvd0tleXMgJiYgb25EZWNyZWFzZSgkZXZlbnQpXCJcbiAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgLz5cbiAgPCEtLSBJbnB1dCBwb3N0Zml4IC0tPlxuXG4gIDxzcGFuICpuZ0lmPVwicG9zdGZpeFwiXG4gICAgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0IHt7IGN1c3RvbUNsYXNzLnBvc3RmaXggfX1cIlxuICAgIFtzdHlsZS5ib3JkZXJMZWZ0XT1cIicwJ1wiPnt7cG9zdGZpeH19XG4gICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXAgbXMtMVwiXG4gICAgICAqbmdJZj1cInNob3dUb29sdGlwICYmIHRvb2x0aXBUZXh0XCJcbiAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uIHx8ICd0b3AnXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cblxuICA8IS0tIEhvcml6b250YWwgaW5jcmVhc2UgYnV0dG9uIG9yaWVudGF0aW9uIC0tPlxuICA8c3BhbiAqbmdJZj1cImlzSG9yaXpvbnRhbCgpICYmIHNob3dVcEJ1dHRvblwiXG4gICAgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0IGluY3JlYXNlIHt7IGN1c3RvbUNsYXNzLnVwIH19XCJcbiAgICBbc3R5bGUuYm9yZGVyTGVmdF09XCIhcG9zdGZpeCA/ICcwJyA6ICcnXCJcbiAgICAoY2xpY2spPVwib25JbmNyZWFzZSgkZXZlbnQpXCJcbiAgICAobW91c2V1cCk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCI+Kzwvc3Bhbj5cbiAgPCEtLSBWZXJ0aWNhbCBidXR0b25zIG9yaWVudGF0aW9uIC0tPlxuICA8c3BhbiAqbmdJZj1cIiFpc0hvcml6b250YWwoKVwiXG4gICAgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0IHZlcnRpY2FsIHAtMFwiPlxuICAgIDxzcGFuICpuZ0lmPVwic2hvd1VwQnV0dG9uXCJcbiAgICAgIGNsYXNzPVwie3sgY3VzdG9tQ2xhc3MudXAgfX1cIlxuICAgICAgKGNsaWNrKT1cIm9uSW5jcmVhc2UoJGV2ZW50KVwiXG4gICAgICAobW91c2V1cCk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIj4rPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwic2hvd0Rvd25CdXR0b25cIlxuICAgICAgY2xhc3M9XCJ7eyBjdXN0b21DbGFzcy5kb3duIH19XCJcbiAgICAgIChjbGljayk9XCJvbkRlY3JlYXNlKCRldmVudClcIlxuICAgICAgKG1vdXNldXApPVwib25Nb3VzZVVwKCRldmVudCwgZmFsc2UpXCJcbiAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LCBmYWxzZSlcIj4tPC9zcGFuPlxuICA8L3NwYW4+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXBpY2tlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvbnVtYmVyLXBpY2tlci9udW1iZXItcGlja2VyLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgYnV0dG9uc09yaWVudGF0aW9uVHlwZSA9ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgfCAnaCcgfCAndic7XG5leHBvcnQgdHlwZSBzaXplVHlwZSA9ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICdzbWFsbCcgfCAneGxhcmdlJyB8ICdtZCcgfCAnbGcnIHwgJ3NtJyB8ICd4bGcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUNsYXNzZXMge1xuICAgIGNvbnRhaW5lcj86IHN0cmluZzsgLy8gY3VzdG9tIGNsYXNzIGZvciB0aGUgY29tcG9uZW50IGNvbnRhaW5lclxuICAgIHVwPzogc3RyaW5nOyAvLyBjdXN0b20gY2xhc3MgZm9yIHRoZSB1cHdhcmRzIGJ1dHRvbnNcbiAgICBkb3duPzogc3RyaW5nOyAvLyBjdXN0b20gY2xhc3MgZm9yIHRoZSBkb3dud2FyZHMgYnV0dG9uc1xuICAgIHBvc3RmaXg/OiBzdHJpbmc7IC8vIGN1c3RvbSBjbGFzcyBmb3IgdGhlIHRleHQgYWZ0ZXIgdGhlIGlucHV0XG4gICAgcHJlZml4Pzogc3RyaW5nOyAvLyBjdXN0b20gY2xhc3MgZm9yIHRoZSB0ZXh0IGJlZm9yZSB0aGUgaW5wdXRcbiAgICBzdWNjZXNzPzogc3RyaW5nOyAvLyBUT0RPOlxuICAgIGVycm9yPzogc3RyaW5nOyAvLyBUT0RPOlxufVxuIl19
@@ -2,9 +2,11 @@ import { CommonModule } from '@angular/common';
2
2
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
3
3
  import { ImageCropperModule } from 'ngx-image-cropper';
4
4
  import { TabMenuModule } from 'primeng/tabmenu';
5
+ import { MultiSelectModule } from 'primeng/multiselect';
5
6
  import { ProgressSpinnerModule } from 'primeng/progressspinner';
6
7
  import { TableModule } from 'primeng/table';
7
8
  import { AutoCompleteModule } from 'primeng/autocomplete';
9
+ import { UiSwitchModule } from 'ngx-ui-switch';
8
10
  import { NgModule } from '@angular/core';
9
11
  import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
10
12
  import { DirectivesModule } from '@posiwise/directives';
@@ -32,9 +34,10 @@ import { ComingSoonComponent } from './coming-soon/coming-soon.component';
32
34
  import { NoDataComponent } from './no-data/no-data.component';
33
35
  import { EntityGroupComponent } from './label-management/entity-group/entity-group.component';
34
36
  import { GroupsComponent } from './label-management/groups/groups.component';
35
- import { GroupDefinitionComponent } from "./label-management/group-definition/group-definition.component";
37
+ import { GroupDefinitionComponent } from './label-management/group-definition/group-definition.component';
38
+ import { NumberPickerComponent } from './number-picker/number-picker.component';
36
39
  import * as i0 from "@angular/core";
37
- const primeNgModules = [TabMenuModule, ProgressSpinnerModule, TableModule, AutoCompleteModule];
40
+ const primeNgModules = [MultiSelectModule, TabMenuModule, ProgressSpinnerModule, TableModule, AutoCompleteModule];
38
41
  export class SharedComponentsModule {
39
42
  }
40
43
  SharedComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -59,20 +62,22 @@ SharedComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
59
62
  NoDataComponent,
60
63
  EntityGroupComponent,
61
64
  GroupsComponent,
62
- GroupDefinitionComponent], imports: [FormsModule,
65
+ GroupDefinitionComponent,
66
+ NumberPickerComponent], imports: [FormsModule,
63
67
  ReactiveFormsModule,
64
68
  DirectivesModule,
65
69
  CoreTranslocoModule,
66
- ImageCropperModule, TabMenuModule, ProgressSpinnerModule, TableModule, AutoCompleteModule, PipesModule,
70
+ ImageCropperModule, MultiSelectModule, TabMenuModule, ProgressSpinnerModule, TableModule, AutoCompleteModule, PipesModule,
67
71
  CommonModule,
68
72
  SharedPublicComponentsModule,
69
- NgbModule], exports: [AbTestContainerComponent,
73
+ NgbModule,
74
+ UiSwitchModule], exports: [AbTestContainerComponent,
70
75
  AbAlternativeComponent,
71
76
  PasswordValidationComponent,
72
77
  CustomUploaderComponent,
73
78
  ProfileImageCropperComponent,
74
79
  ImageCropperModule,
75
- PwTabsComponent, TabMenuModule, ProgressSpinnerModule, TableModule, AutoCompleteModule, PermissionTreeComponent,
80
+ PwTabsComponent, MultiSelectModule, TabMenuModule, ProgressSpinnerModule, TableModule, AutoCompleteModule, PermissionTreeComponent,
76
81
  InputContainerComponent,
77
82
  FieldErrorDisplayComponent,
78
83
  PrivacyAndTosComponent,
@@ -87,7 +92,8 @@ SharedComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
87
92
  NoDataComponent,
88
93
  EntityGroupComponent,
89
94
  GroupsComponent,
90
- GroupDefinitionComponent] });
95
+ GroupDefinitionComponent,
96
+ NumberPickerComponent] });
91
97
  SharedComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, imports: [FormsModule,
92
98
  ReactiveFormsModule,
93
99
  DirectivesModule,
@@ -97,7 +103,8 @@ SharedComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
97
103
  PipesModule,
98
104
  CommonModule,
99
105
  SharedPublicComponentsModule,
100
- NgbModule, ImageCropperModule, TabMenuModule, ProgressSpinnerModule, TableModule, AutoCompleteModule] });
106
+ NgbModule,
107
+ UiSwitchModule, ImageCropperModule, MultiSelectModule, TabMenuModule, ProgressSpinnerModule, TableModule, AutoCompleteModule] });
101
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, decorators: [{
102
109
  type: NgModule,
103
110
  args: [{
@@ -123,7 +130,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
123
130
  NoDataComponent,
124
131
  EntityGroupComponent,
125
132
  GroupsComponent,
126
- GroupDefinitionComponent
133
+ GroupDefinitionComponent,
134
+ NumberPickerComponent
127
135
  ],
128
136
  imports: [
129
137
  FormsModule,
@@ -135,7 +143,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
135
143
  PipesModule,
136
144
  CommonModule,
137
145
  SharedPublicComponentsModule,
138
- NgbModule
146
+ NgbModule,
147
+ UiSwitchModule
139
148
  ],
140
149
  exports: [
141
150
  AbTestContainerComponent,
@@ -161,8 +170,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
161
170
  NoDataComponent,
162
171
  EntityGroupComponent,
163
172
  GroupsComponent,
164
- GroupDefinitionComponent
173
+ GroupDefinitionComponent,
174
+ NumberPickerComponent
165
175
  ]
166
176
  }]
167
177
  }] });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWNvbXBvbmVudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC1jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFP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d0JBQ25CLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLHdCQUF3QjtxQkFDM0I7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XG5cbmltcG9ydCB7IFRhYk1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYm1lbnUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wcm9ncmVzc3NwaW5uZXInO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcblxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IERpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tICdAcG9zaXdpc2UvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDb3JlVHJhbnNsb2NvTW9kdWxlIH0gZnJvbSAnQHBvc2l3aXNlL2NvcmUtdHJhbnNsb2NvJztcbmltcG9ydCB7IFNoYXJlZFB1YmxpY0NvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLXB1YmxpYy1jb21wb25lbnRzJztcbmltcG9ydCB7IFBpcGVzTW9kdWxlIH0gZnJvbSAnQHBvc2l3aXNlL3BpcGVzJztcblxuaW1wb3J0IHsgQWJUZXN0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9hYi10ZXN0L2FiLXRlc3QtY29udGFpbmVyL2FiLXRlc3QtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYkFsdGVybmF0aXZlQ29tcG9uZW50IH0gZnJvbSAnLi9hYi10ZXN0L2FiLWFsdGVybmF0aXZlL2FiLWFsdGVybmF0aXZlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXNzd29yZFZhbGlkYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3Bhc3N3b3JkLXZhbGlkYXRpb24vcGFzc3dvcmQtdmFsaWRhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS11cGxvYWRlci9jdXN0b20tdXBsb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2ZpbGVJbWFnZUNyb3BwZXJDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLWNyb3BwZXIvaW1hZ2UtY3JvcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHdUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi9wdy10YWJzL3B3LXRhYnMuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUGVybWlzc2lvblRyZWVDb21wb25lbnQgfSBmcm9tICcuL3Blcm1pc3Npb24tdHJlZS9wZXJtaXNzaW9uLXRyZWUuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1jb250YWluZXIvaW5wdXQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZEVycm9yRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcml2YWN5QW5kVG9zQ29tcG9uZW50IH0gZnJvbSAnLi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcml2YWN5UG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi9wcml2YWN5LXBvbGljeS9wcml2YWN5LXBvbGljeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVybXNDb25kaXRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90ZXJtcy1jb25kaXRpb25zL3Rlcm1zLWNvbmRpdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFNwbGFzaENvbXBvbmVudCB9IGZyb20gJy4vc3BsYXNoL3NwbGFzaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAtbG9hZGVyL2FwcC1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdlb1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9nZW8tdGVtcGxhdGUvZ2VvLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRoZXRpY2F0b3IvYXV0aGV0aWNhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDbGVhcmJpdEljb25Db21wb25lbnQgfSBmcm9tICcuL2NsZWFyYml0LWljb24vY2xlYXJiaXQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29taW5nU29vbkNvbXBvbmVudCB9IGZyb20gJy4vY29taW5nLXNvb24vY29taW5nLXNvb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5vRGF0YUNvbXBvbmVudCB9IGZyb20gJy4vbm8tZGF0YS9uby1kYXRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbnRpdHlHcm91cENvbXBvbmVudCB9IGZyb20gJy4vbGFiZWwtbWFuYWdlbWVudC9lbnRpdHktZ3JvdXAvZW50aXR5LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcm91cHNDb21wb25lbnQgfSBmcm9tICcuL2xhYmVsLW1hbmFnZW1lbnQvZ3JvdXBzL2dyb3Vwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JvdXBEZWZpbml0aW9uQ29tcG9uZW50IH0gZnJvbSBcIi4vbGFiZWwtbWFuYWdlbWVudC9ncm91cC1kZWZpbml0aW9uL2dyb3VwLWRlZmluaXRpb24uY29tcG9uZW50XCI7XG5cbmNvbnN0IHByaW1lTmdNb2R1bGVzID0gW1RhYk1lbnVNb2R1bGUsIFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgVGFibGVNb2R1bGUsIEF1dG9Db21wbGV0ZU1vZHVsZV07XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEFiVGVzdENvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgQWJBbHRlcm5hdGl2ZUNvbXBvbmVudCxcbiAgICAgICAgUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50LFxuICAgICAgICBDdXN0b21VcGxvYWRlckNvbXBvbmVudCxcbiAgICAgICAgUHJvZmlsZUltYWdlQ3JvcHBlckNvbXBvbmVudCxcbiAgICAgICAgUHdUYWJzQ29tcG9uZW50LFxuICAgICAgICBQZXJtaXNzaW9uVHJlZUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIEZpZWxkRXJyb3JEaXNwbGF5Q29tcG9uZW50LFxuICAgICAgICBQcml2YWN5QW5kVG9zQ29tcG9uZW50LFxuICAgICAgICBQcml2YWN5UG9saWN5Q29tcG9uZW50LFxuICAgICAgICBUZXJtc0NvbmRpdGlvbnNDb21wb25lbnQsXG4gICAgICAgIFNwbGFzaENvbXBvbmVudCxcbiAgICAgICAgQXBwTG9hZGVyQ29tcG9uZW50LFxuICAgICAgICBHZW9UZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQXV0aGVudGljYXRvckNvbXBvbmVudCxcbiAgICAgICAgQ2xlYXJiaXRJY29uQ29tcG9uZW50LFxuICAgICAgICBDb21pbmdTb29uQ29tcG9uZW50LFxuICAgICAgICBOb0RhdGFDb21wb25lbnQsXG4gICAgICAgIEVudGl0eUdyb3VwQ29tcG9uZW50LFxuICAgICAgICBHcm91cHNDb21wb25lbnQsXG4gICAgICAgIEdyb3VwRGVmaW5pdGlvbkNvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRGlyZWN0aXZlc01vZHVsZSxcbiAgICAgICAgQ29yZVRyYW5zbG9jb01vZHVsZSxcbiAgICAgICAgSW1hZ2VDcm9wcGVyTW9kdWxlLFxuICAgICAgICBwcmltZU5nTW9kdWxlcyxcbiAgICAgICAgUGlwZXNNb2R1bGUsXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgU2hhcmVkUHVibGljQ29tcG9uZW50c01vZHVsZSxcbiAgICAgICAgTmdiTW9kdWxlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEFiVGVzdENvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgQWJBbHRlcm5hdGl2ZUNvbXBvbmVudCxcbiAgICAgICAgUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50LFxuICAgICAgICBDdXN0b21VcGxvYWRlckNvbXBvbmVudCxcbiAgICAgICAgUHJvZmlsZUltYWdlQ3JvcHBlckNvbXBvbmVudCxcbiAgICAgICAgSW1hZ2VDcm9wcGVyTW9kdWxlLFxuICAgICAgICBQd1RhYnNDb21wb25lbnQsXG4gICAgICAgIHByaW1lTmdNb2R1bGVzLFxuICAgICAgICBQZXJtaXNzaW9uVHJlZUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIEZpZWxkRXJyb3JEaXNwbGF5Q29tcG9uZW50LFxuICAgICAgICBQcml2YWN5QW5kVG9zQ29tcG9uZW50LFxuICAgICAgICBQcml2YWN5UG9saWN5Q29tcG9uZW50LFxuICAgICAgICBUZXJtc0NvbmRpdGlvbnNDb21wb25lbnQsXG4gICAgICAgIFNwbGFzaENvbXBvbmVudCxcbiAgICAgICAgQXBwTG9hZGVyQ29tcG9uZW50LFxuICAgICAgICBHZW9UZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQXV0aGVudGljYXRvckNvbXBvbmVudCxcbiAgICAgICAgQ2xlYXJiaXRJY29uQ29tcG9uZW50LFxuICAgICAgICBDb21pbmdTb29uQ29tcG9uZW50LFxuICAgICAgICBOb0RhdGFDb21wb25lbnQsXG4gICAgICAgIEVudGl0eUdyb3VwQ29tcG9uZW50LFxuICAgICAgICBHcm91cHNDb21wb25lbnQsXG4gICAgICAgIEdyb3VwRGVmaW5pdGlvbkNvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkQ29tcG9uZW50c01vZHVsZSB7fVxuIl19
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWNvbXBvbmVudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC1jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ25HLE9BQU8sRUFB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LHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixxQkFBcUI7cUJBQ3hCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVyTW9kdWxlIH0gZnJvbSAnbmd4LWltYWdlLWNyb3BwZXInO1xuXG5pbXBvcnQgeyBUYWJNZW51TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJtZW51JztcbmltcG9ydCB7IE11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgVWlTd2l0Y2hNb2R1bGUgfSBmcm9tICduZ3gtdWktc3dpdGNoJztcblxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IERpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tICdAcG9zaXdpc2UvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDb3JlVHJhbnNsb2NvTW9kdWxlIH0gZnJvbSAnQHBvc2l3aXNlL2NvcmUtdHJhbnNsb2NvJztcbmltcG9ydCB7IFNoYXJlZFB1YmxpY0NvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLXB1YmxpYy1jb21wb25lbnRzJztcbmltcG9ydCB7IFBpcGVzTW9kdWxlIH0gZnJvbSAnQHBvc2l3aXNlL3BpcGVzJztcblxuaW1wb3J0IHsgQWJUZXN0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9hYi10ZXN0L2FiLXRlc3QtY29udGFpbmVyL2FiLXRlc3QtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYkFsdGVybmF0aXZlQ29tcG9uZW50IH0gZnJvbSAnLi9hYi10ZXN0L2FiLWFsdGVybmF0aXZlL2FiLWFsdGVybmF0aXZlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXNzd29yZFZhbGlkYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3Bhc3N3b3JkLXZhbGlkYXRpb24vcGFzc3dvcmQtdmFsaWRhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS11cGxvYWRlci9jdXN0b20tdXBsb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2ZpbGVJbWFnZUNyb3BwZXJDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLWNyb3BwZXIvaW1hZ2UtY3JvcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHdUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi9wdy10YWJzL3B3LXRhYnMuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUGVybWlzc2lvblRyZWVDb21wb25lbnQgfSBmcm9tICcuL3Blcm1pc3Npb24tdHJlZS9wZXJtaXNzaW9uLXRyZWUuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1jb250YWluZXIvaW5wdXQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZEVycm9yRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcml2YWN5QW5kVG9zQ29tcG9uZW50IH0gZnJvbSAnLi9wcml2YWN5LWFuZC10b3MvcHJpdmFjeS1hbmQtdG9zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcml2YWN5UG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi9wcml2YWN5LXBvbGljeS9wcml2YWN5LXBvbGljeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVybXNDb25kaXRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90ZXJtcy1jb25kaXRpb25zL3Rlcm1zLWNvbmRpdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFNwbGFzaENvbXBvbmVudCB9IGZyb20gJy4vc3BsYXNoL3NwbGFzaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAtbG9hZGVyL2FwcC1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdlb1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9nZW8tdGVtcGxhdGUvZ2VvLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRoZXRpY2F0b3IvYXV0aGV0aWNhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDbGVhcmJpdEljb25Db21wb25lbnQgfSBmcm9tICcuL2NsZWFyYml0LWljb24vY2xlYXJiaXQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29taW5nU29vbkNvbXBvbmVudCB9IGZyb20gJy4vY29taW5nLXNvb24vY29taW5nLXNvb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5vRGF0YUNvbXBvbmVudCB9IGZyb20gJy4vbm8tZGF0YS9uby1kYXRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbnRpdHlHcm91cENvbXBvbmVudCB9IGZyb20gJy4vbGFiZWwtbWFuYWdlbWVudC9lbnRpdHktZ3JvdXAvZW50aXR5LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcm91cHNDb21wb25lbnQgfSBmcm9tICcuL2xhYmVsLW1hbmFnZW1lbnQvZ3JvdXBzL2dyb3Vwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JvdXBEZWZpbml0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9sYWJlbC1tYW5hZ2VtZW50L2dyb3VwLWRlZmluaXRpb24vZ3JvdXAtZGVmaW5pdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTnVtYmVyUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9udW1iZXItcGlja2VyL251bWJlci1waWNrZXIuY29tcG9uZW50JztcblxuY29uc3QgcHJpbWVOZ01vZHVsZXMgPSBbTXVsdGlTZWxlY3RNb2R1bGUsIFRhYk1lbnVNb2R1bGUsIFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgVGFibGVNb2R1bGUsIEF1dG9Db21wbGV0ZU1vZHVsZV07XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEFiVGVzdENvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgQWJBbHRlcm5hdGl2ZUNvbXBvbmVudCxcbiAgICAgICAgUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50LFxuICAgICAgICBDdXN0b21VcGxvYWRlckNvbXBvbmVudCxcbiAgICAgICAgUHJvZmlsZUltYWdlQ3JvcHBlckNvbXBvbmVudCxcbiAgICAgICAgUHdUYWJzQ29tcG9uZW50LFxuICAgICAgICBQZXJtaXNzaW9uVHJlZUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIEZpZWxkRXJyb3JEaXNwbGF5Q29tcG9uZW50LFxuICAgICAgICBQcml2YWN5QW5kVG9zQ29tcG9uZW50LFxuICAgICAgICBQcml2YWN5UG9saWN5Q29tcG9uZW50LFxuICAgICAgICBUZXJtc0NvbmRpdGlvbnNDb21wb25lbnQsXG4gICAgICAgIFNwbGFzaENvbXBvbmVudCxcbiAgICAgICAgQXBwTG9hZGVyQ29tcG9uZW50LFxuICAgICAgICBHZW9UZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQXV0aGVudGljYXRvckNvbXBvbmVudCxcbiAgICAgICAgQ2xlYXJiaXRJY29uQ29tcG9uZW50LFxuICAgICAgICBDb21pbmdTb29uQ29tcG9uZW50LFxuICAgICAgICBOb0RhdGFDb21wb25lbnQsXG4gICAgICAgIEVudGl0eUdyb3VwQ29tcG9uZW50LFxuICAgICAgICBHcm91cHNDb21wb25lbnQsXG4gICAgICAgIEdyb3VwRGVmaW5pdGlvbkNvbXBvbmVudCxcbiAgICAgICAgTnVtYmVyUGlja2VyQ29tcG9uZW50XG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBEaXJlY3RpdmVzTW9kdWxlLFxuICAgICAgICBDb3JlVHJhbnNsb2NvTW9kdWxlLFxuICAgICAgICBJbWFnZUNyb3BwZXJNb2R1bGUsXG4gICAgICAgIHByaW1lTmdNb2R1bGVzLFxuICAgICAgICBQaXBlc01vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBTaGFyZWRQdWJsaWNDb21wb25lbnRzTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG4gICAgICAgIFVpU3dpdGNoTW9kdWxlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEFiVGVzdENvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgQWJBbHRlcm5hdGl2ZUNvbXBvbmVudCxcbiAgICAgICAgUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50LFxuICAgICAgICBDdXN0b21VcGxvYWRlckNvbXBvbmVudCxcbiAgICAgICAgUHJvZmlsZUltYWdlQ3JvcHBlckNvbXBvbmVudCxcbiAgICAgICAgSW1hZ2VDcm9wcGVyTW9kdWxlLFxuICAgICAgICBQd1RhYnNDb21wb25lbnQsXG4gICAgICAgIHByaW1lTmdNb2R1bGVzLFxuICAgICAgICBQZXJtaXNzaW9uVHJlZUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIEZpZWxkRXJyb3JEaXNwbGF5Q29tcG9uZW50LFxuICAgICAgICBQcml2YWN5QW5kVG9zQ29tcG9uZW50LFxuICAgICAgICBQcml2YWN5UG9saWN5Q29tcG9uZW50LFxuICAgICAgICBUZXJtc0NvbmRpdGlvbnNDb21wb25lbnQsXG4gICAgICAgIFNwbGFzaENvbXBvbmVudCxcbiAgICAgICAgQXBwTG9hZGVyQ29tcG9uZW50LFxuICAgICAgICBHZW9UZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQXV0aGVudGljYXRvckNvbXBvbmVudCxcbiAgICAgICAgQ2xlYXJiaXRJY29uQ29tcG9uZW50LFxuICAgICAgICBDb21pbmdTb29uQ29tcG9uZW50LFxuICAgICAgICBOb0RhdGFDb21wb25lbnQsXG4gICAgICAgIEVudGl0eUdyb3VwQ29tcG9uZW50LFxuICAgICAgICBHcm91cHNDb21wb25lbnQsXG4gICAgICAgIEdyb3VwRGVmaW5pdGlvbkNvbXBvbmVudCxcbiAgICAgICAgTnVtYmVyUGlja2VyQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRDb21wb25lbnRzTW9kdWxlIHt9XG4iXX0=