@acorex/components 18.7.2 → 18.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. package/color-palette/lib/color-palette-picker.component.d.ts +3 -3
  2. package/color-palette/lib/color-palette.module.d.ts +4 -3
  3. package/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.d.ts +1 -0
  4. package/conversation/lib/conversation.module.d.ts +2 -2
  5. package/esm2022/color-palette/lib/color-palette-picker.component.mjs +13 -10
  6. package/esm2022/color-palette/lib/color-palette.component.mjs +2 -2
  7. package/esm2022/color-palette/lib/color-palette.module.mjs +5 -2
  8. package/esm2022/conversation/lib/conversation-messages/conversation-message-audio/conversation-message-audio.component.mjs +12 -9
  9. package/esm2022/conversation/lib/conversation.module.mjs +5 -5
  10. package/esm2022/range-slider/index.mjs +3 -1
  11. package/esm2022/range-slider/lib/range-slider.class.mjs +3 -0
  12. package/esm2022/range-slider/lib/range-slider.component.mjs +429 -6
  13. package/esm2022/range-slider/lib/range-slider.module.mjs +3 -2
  14. package/fesm2022/acorex-components-color-palette.mjs +18 -12
  15. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  16. package/fesm2022/acorex-components-conversation.mjs +21 -17
  17. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  18. package/fesm2022/acorex-components-range-slider.mjs +434 -8
  19. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  20. package/package.json +36 -36
  21. package/range-slider/index.d.ts +2 -0
  22. package/range-slider/lib/range-slider.class.d.ts +8 -0
  23. package/range-slider/lib/range-slider.component.d.ts +98 -2
  24. package/range-slider/lib/range-slider.module.d.ts +1 -1
@@ -1,15 +1,438 @@
1
- import { Component } from '@angular/core';
1
+ import { AXValuableComponent, MXValueComponent, } from '@acorex/components/common';
2
+ import { ChangeDetectionStrategy, Component, HostBinding, NgZone, ViewEncapsulation, computed, effect, forwardRef, inject, input, model, output, } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { classes } from 'polytype';
2
5
  import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
3
7
  /**
4
8
  * @category
5
9
  * Range slider for selecting a range of values.
6
10
  */
7
- export class AXRangeSliderComponent {
11
+ export class AXRangeSliderComponent extends classes((MXValueComponent)) {
12
+ //protected AXTooltip = computed(() => {});
13
+ constructor() {
14
+ super();
15
+ this.zone = inject(NgZone);
16
+ //outputs
17
+ this.onStart = output();
18
+ //inputs
19
+ this.orientation = input('horizontal');
20
+ this.color = input('primary');
21
+ this.values = model(this.value);
22
+ this.mode = input('single');
23
+ this.min = input(0);
24
+ this.max = input(100);
25
+ this.step = input(1);
26
+ this.snap = input(1);
27
+ this.tooltipMode = input('end');
28
+ this.snapMode = input('start');
29
+ this.hasSnap = input(false);
30
+ this.hasLable = input(this.hasSnap());
31
+ this.hasTooltip = input(false);
32
+ //computed
33
+ this.height = 0.25;
34
+ this.range = computed(() => this.max() - this.min());
35
+ this.isHorizontal = computed(() => this.orientation() === 'horizontal');
36
+ this.isDual = computed(() => this.mode() === 'dual');
37
+ this.calculateSnapBar = computed(() => {
38
+ if (this.hasSnap()) {
39
+ let array = [];
40
+ for (let i = this.min(); i < this.max(); i += this.snap()) {
41
+ array.push(i);
42
+ }
43
+ array = [...array, this.max()];
44
+ if (array[0] < 0) {
45
+ array = array.map((i) => i + -array[0]).sort((a, b) => a - b);
46
+ }
47
+ if (array[0] > 0) {
48
+ array = array.map((i) => i - array[0]).sort((a, b) => a - b);
49
+ }
50
+ return array;
51
+ }
52
+ else {
53
+ return undefined;
54
+ }
55
+ });
56
+ this.calculatePos = computed(() => {
57
+ if (this.isDual() && this.values()) {
58
+ return [
59
+ ((this.values()[0] - this.min()) / this.range()) * 100,
60
+ ((this.values()[1] - this.min()) / this.range()) * 100,
61
+ ];
62
+ }
63
+ else {
64
+ return ((this.values() - this.min()) / this.range()) * 100;
65
+ }
66
+ });
67
+ this.choosenHandler = undefined;
68
+ this.sliderElement = null;
69
+ this.AXRangeSliderHighlight = computed(() => this.isHorizontal()
70
+ ? {
71
+ left: this.isDual() ? this.calculatePos()[0] + '%' : this.min() + '%',
72
+ width: this.isDual()
73
+ ? this.calculatePos()[1] - this.calculatePos()[0] + '%'
74
+ : this.calculatePos() + '%',
75
+ }
76
+ : {
77
+ height: this.isDual()
78
+ ? this.calculatePos()[1] - this.calculatePos()[0] + '%'
79
+ : this.calculatePos() + '%',
80
+ top: this.mode() === 'dual' ? this.calculatePos()[0] + '%' : this.min() + '%',
81
+ });
82
+ this.AXRangeSliderHandler1 = computed(() => this.isHorizontal()
83
+ ? {
84
+ left: this.isDual() ? this.calculatePos()[0] + '%' : this.calculatePos() + '%',
85
+ }
86
+ : {
87
+ top: this.isDual() ? this.calculatePos()[0] + '%' : this.calculatePos() + '%',
88
+ });
89
+ this.AXRangeSliderHandler2 = computed(() => this.isHorizontal()
90
+ ? {
91
+ left: this.calculatePos()[1] + '%',
92
+ }
93
+ : {
94
+ top: this.calculatePos()[1] + '%',
95
+ });
96
+ this.AXRangeSliderStep = computed(() => {
97
+ if (this.isHorizontal()) {
98
+ switch (this.snapMode()) {
99
+ case 'both':
100
+ return { top: '0', height: 8 * this.height + 'rem' };
101
+ case 'start':
102
+ return { top: 4 * this.height + 'rem', height: 4 * this.height + 'rem' };
103
+ case 'end':
104
+ return { top: -2 * this.height + 'rem', height: 4 * this.height + 'rem' };
105
+ }
106
+ }
107
+ else {
108
+ switch (this.snapMode()) {
109
+ case 'both':
110
+ return { top: '0', width: 8 * this.height + 'rem' };
111
+ case 'start':
112
+ return { left: 4 * this.height + 'rem', width: 4 * this.height + 'rem' };
113
+ case 'end':
114
+ return { left: -2 * this.height + 'rem', width: 4 * this.height + 'rem' };
115
+ }
116
+ }
117
+ });
118
+ this.AXRangeLabel = computed(() => {
119
+ if (this.isHorizontal()) {
120
+ switch (this.snapMode()) {
121
+ case 'both':
122
+ return { top: 6 * this.height + 'rem' };
123
+ case 'start':
124
+ return { top: 4 * this.height + 'rem' };
125
+ case 'end':
126
+ return { top: -6 * this.height + 'rem' };
127
+ }
128
+ }
129
+ else {
130
+ switch (this.snapMode()) {
131
+ case 'both':
132
+ return { left: 8 * this.height + 'rem' };
133
+ case 'start':
134
+ return { left: 4 * this.height + 'rem' };
135
+ case 'end':
136
+ return { left: -8 * this.height + 'rem' };
137
+ }
138
+ }
139
+ });
140
+ effect(() => {
141
+ this.fixInitializeValues();
142
+ this.fixChangingMode();
143
+ }, { allowSignalWrites: true });
144
+ }
145
+ ngOnInit() {
146
+ super.ngOnInit();
147
+ this.initializeValues();
148
+ }
149
+ handleOnStart(event, circle) {
150
+ this.zone.runOutsideAngular(() => {
151
+ if (this.disabled)
152
+ return;
153
+ event.preventDefault();
154
+ this.sliderElement = event.target.closest('ax-range-slider');
155
+ if (this.sliderElement) {
156
+ this.choosenHandler = circle;
157
+ const moveListener = (moveEvent) => this.onMove(moveEvent, circle);
158
+ const endListener = () => this.onEnd(moveListener, endListener);
159
+ window.addEventListener('mousemove', moveListener);
160
+ window.addEventListener('mouseup', endListener);
161
+ window.addEventListener('touchmove', moveListener, { passive: true });
162
+ window.addEventListener('touchend', endListener);
163
+ }
164
+ });
165
+ }
166
+ onclickBar(event) {
167
+ this.sliderElement = event.target.closest('ax-range-slider');
168
+ this.zone.runOutsideAngular(() => {
169
+ if (!this.sliderElement || this.disabled)
170
+ return;
171
+ const clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;
172
+ const sliderRect = this.sliderElement.getBoundingClientRect();
173
+ const clickPosition = ((clientX - sliderRect.left) / sliderRect.width) * 100;
174
+ let newValue = Math.round(this.min() + (clickPosition / 100) * (this.max() - this.min()));
175
+ newValue = this.calculateStep(newValue);
176
+ if (this.isDual()) {
177
+ if (clickPosition < this.calculatePos()[0]) {
178
+ this.values.set([newValue, this.values()[1]]);
179
+ this.commitValue(this.values());
180
+ }
181
+ else if (clickPosition > this.calculatePos()[1]) {
182
+ this.values.set([this.values()[0], newValue]);
183
+ this.commitValue(this.values());
184
+ }
185
+ }
186
+ else {
187
+ if (clickPosition > this.calculatePos()) {
188
+ this.values.set(newValue);
189
+ this.commitValue(this.values());
190
+ }
191
+ }
192
+ this.onStart.emit({
193
+ component: this,
194
+ htmlElement: event.target,
195
+ isUserInteraction: event.isTrusted,
196
+ data: this.values(),
197
+ });
198
+ });
199
+ }
200
+ onMove(event, circle) {
201
+ if (!this.sliderElement || this.readonly)
202
+ return;
203
+ const sliderRect = this.sliderElement.getBoundingClientRect();
204
+ let newValue;
205
+ if (this.isHorizontal()) {
206
+ const clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;
207
+ let newLeft = ((clientX - sliderRect.left) / sliderRect.width) * 100;
208
+ newLeft = Math.max(0, Math.min(newLeft, 100));
209
+ newValue = Math.round(this.min() + (newLeft / 100) * (this.max() - this.min()));
210
+ }
211
+ else {
212
+ const clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;
213
+ let newLeft = ((clientY - sliderRect.top) / sliderRect.height) * 100;
214
+ newLeft = Math.max(0, Math.min(newLeft, 100));
215
+ newValue = Math.round(this.min() + (newLeft / 100) * (this.max() - this.min()));
216
+ }
217
+ if (!this.readonly) {
218
+ if (this.isDual()) {
219
+ if (circle === 'first') {
220
+ newValue = Math.max(this.min(), Math.min(newValue, this.values()[1] - this.step()));
221
+ if (this.step() !== 1)
222
+ newValue = this.calculateStep(newValue);
223
+ if (this.values()[0] !== newValue) {
224
+ this.values.set([newValue, this.values()[1]]);
225
+ this.commitValue(this.values());
226
+ }
227
+ }
228
+ else {
229
+ newValue = Math.min(this.max(), Math.max(newValue, this.values()[0] + this.step()));
230
+ if (this.step() !== 1)
231
+ newValue = this.calculateStep(newValue);
232
+ if (this.values()[1] !== newValue) {
233
+ this.values.set([this.values()[0], newValue]);
234
+ this.commitValue(this.values());
235
+ }
236
+ }
237
+ }
238
+ else {
239
+ newValue = Math.max(this.min(), newValue);
240
+ if (this.step() !== 1)
241
+ newValue = this.calculateStep(newValue);
242
+ if (this.values() !== newValue) {
243
+ this.values.set(newValue);
244
+ this.commitValue(newValue);
245
+ }
246
+ }
247
+ }
248
+ }
249
+ onWheel(event) {
250
+ this.zone.runOutsideAngular(() => {
251
+ event.preventDefault();
252
+ if ((this.choosenHandler && this.mode() === 'single') || this.readonly)
253
+ return;
254
+ let newValue;
255
+ if (this.isDual()) {
256
+ if (event.deltaY < 0) {
257
+ if (this.choosenHandler === 'first') {
258
+ newValue = this.calculateStep(this.values()[0] + this.step());
259
+ if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) &&
260
+ this.values()[0] !== newValue) {
261
+ this.values.update((old) => [this.calculateStep(old[0] + this.step()), old[1]]);
262
+ }
263
+ }
264
+ else {
265
+ newValue = this.calculateStep(this.values()[1] + this.step());
266
+ if (newValue <= this.max() && this.values()[1] !== newValue) {
267
+ this.values.update((old) => [old[0], this.calculateStep(old[1] + this.step())]);
268
+ }
269
+ }
270
+ }
271
+ else {
272
+ if (this.choosenHandler === 'first') {
273
+ newValue = this.calculateStep(this.values()[0] - this.step());
274
+ if (this.checkValues(newValue, this.choosenHandler, this.values()[1]) &&
275
+ this.values() !== newValue) {
276
+ this.values.update((old) => [this.calculateStep(old[0] - this.step()), old[1]]);
277
+ }
278
+ }
279
+ else {
280
+ newValue = this.calculateStep(this.values()[1] - this.step());
281
+ if (this.checkValues(newValue, this.choosenHandler, this.values()[0]) &&
282
+ this.values()[1] !== newValue) {
283
+ this.values.update((old) => [old[0], this.calculateStep(old[1] - this.step())]);
284
+ }
285
+ }
286
+ }
287
+ }
288
+ else {
289
+ if (event.deltaY < 0) {
290
+ if (this.checkValue(this.calculateStep(this.values() + this.step()))) {
291
+ this.values.update((old) => this.calculateStep(old + this.step()));
292
+ }
293
+ }
294
+ else {
295
+ if (this.checkValue(this.calculateStep(this.values() - this.step()))) {
296
+ this.values.update((old) => this.calculateStep(old - this.step()));
297
+ }
298
+ }
299
+ }
300
+ });
301
+ }
302
+ onEnd(moveListener, endListener) {
303
+ window.removeEventListener('mousemove', moveListener);
304
+ window.removeEventListener('mouseup', endListener);
305
+ window.removeEventListener('touchmove', moveListener);
306
+ window.removeEventListener('touchend', endListener);
307
+ this.sliderElement = null;
308
+ }
309
+ initializeValues() {
310
+ this.fixInitializeUndefined();
311
+ this.fixInitializeValues();
312
+ this.fixInitializeStep();
313
+ }
314
+ fixInitializeUndefined() {
315
+ if (typeof this.values() === 'undefined') {
316
+ if (this.isDual()) {
317
+ this.values.set([this.min(), this.max()]);
318
+ }
319
+ else {
320
+ this.values.set(this.min());
321
+ }
322
+ this.commitValue(this.values());
323
+ }
324
+ }
325
+ fixInitializeValues() {
326
+ //swap value
327
+ if (this.isDual() && this.values()[0] > this.values()[1]) {
328
+ this.values.set([this.values()[1], this.values()[0]]);
329
+ this.commitValue(this.values());
330
+ }
331
+ //not in range
332
+ if (typeof this.values() === 'number' && !this.checkValue(this.values())) {
333
+ this.values.set(this.min());
334
+ this.commitValue(this.values());
335
+ }
336
+ else if (typeof this.values() !== 'number' &&
337
+ !this.checkValues(this.values()[0], 'first', this.values()[1])) {
338
+ this.values.set([this.min(), this.max()]);
339
+ this.commitValue(this.values());
340
+ }
341
+ }
342
+ fixInitializeStep() {
343
+ if (this.step() !== 1) {
344
+ if (this.isDual()) {
345
+ this.values.update((old) => [this.calculateStep(old[0]), this.calculateStep(old[1])]);
346
+ this.commitValue(this.values());
347
+ if (this.values()[0] === this.values()[1]) {
348
+ this.values.update((old) => [this.calculateStep(old[0]), this.calculateStep(old[1]) + this.step()]);
349
+ this.commitValue(this.values());
350
+ }
351
+ }
352
+ else {
353
+ this.values.update((old) => this.calculateStep(old));
354
+ this.commitValue(this.values());
355
+ }
356
+ }
357
+ }
358
+ fixChangingMode() {
359
+ if (typeof this.values() === 'number' && this.isDual()) {
360
+ this.values.set([this.min(), this.max()]);
361
+ this.commitValue(this.values());
362
+ }
363
+ else if (typeof this.values() !== 'number' && !this.isDual()) {
364
+ this.values.set(this.min());
365
+ this.commitValue(this.values());
366
+ }
367
+ }
368
+ calculateStep(x) {
369
+ const roundedValue = Math.round(x / this.step()) * this.step();
370
+ if (roundedValue > this.max())
371
+ return this.max();
372
+ else if (roundedValue < this.min())
373
+ return this.min();
374
+ //else if (x >= this.min() && x < this.min() - (this.min() % this.step())) return this.min();
375
+ else if (x <= this.max() && x > this.max() - (this.max() % this.step()))
376
+ return this.max();
377
+ else
378
+ return roundedValue;
379
+ }
380
+ checkValue(x) {
381
+ if (x >= this.min() && x <= this.max())
382
+ return true;
383
+ else
384
+ return false;
385
+ }
386
+ checkValues(value1, y, value2) {
387
+ if (value1 >= this.min() && value1 <= this.max()) {
388
+ if (y === 'first') {
389
+ if (value1 < value2 && value2 <= this.max())
390
+ return true;
391
+ else
392
+ return false;
393
+ }
394
+ else {
395
+ if (value1 > value2 && value2 >= this.min())
396
+ return true;
397
+ else
398
+ return false;
399
+ }
400
+ }
401
+ else
402
+ return false;
403
+ }
404
+ getPercantage(value) {
405
+ return (value / this.range()) * 100;
406
+ }
407
+ get __hostClass() {
408
+ return [
409
+ `ax-${this.color()}-solid`,
410
+ `${this.disabled ? 'ax-state-disabled' : ''}`,
411
+ `${this.readonly ? 'ax-state-readonly' : ''}`,
412
+ ];
413
+ }
8
414
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXRangeSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXRangeSliderComponent, selector: "ax-range-slider", ngImport: i0, template: "<p>test</p>", styles: [""] }); }
415
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXRangeSliderComponent, selector: "ax-range-slider", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, snap: { classPropertyName: "snap", publicName: "snap", isSignal: true, isRequired: false, transformFunction: null }, tooltipMode: { classPropertyName: "tooltipMode", publicName: "tooltipMode", isSignal: true, isRequired: false, transformFunction: null }, snapMode: { classPropertyName: "snapMode", publicName: "snapMode", isSignal: true, isRequired: false, transformFunction: null }, hasSnap: { classPropertyName: "hasSnap", publicName: "hasSnap", isSignal: true, isRequired: false, transformFunction: null }, hasLable: { classPropertyName: "hasLable", publicName: "hasLable", isSignal: true, isRequired: false, transformFunction: null }, hasTooltip: { classPropertyName: "hasTooltip", publicName: "hasTooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onStart: "onStart", values: "valuesChange" }, host: { properties: { "class": "this.__hostClass" } }, providers: [
416
+ { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },
417
+ {
418
+ provide: NG_VALUE_ACCESSOR,
419
+ useExisting: forwardRef(() => AXRangeSliderComponent),
420
+ multi: true,
421
+ },
422
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-range-slider\" (wheel)=\"onWheel($event)\" [class]=\"'ax-orientation-' + orientation()\">\n <div class=\"ax-range-slider-bar\" (mousedown)=\"onclickBar($event)\" (touchstart)=\"onclickBar($event)\"></div>\n <div class=\"ax-range-slider-highlight\" [ngStyle]=\"AXRangeSliderHighlight()\"></div>\n\n <div\n class=\"ax-range-slider-handler\"\n [ngStyle]=\"AXRangeSliderHandler1()\"\n (mousedown)=\"handleOnStart($event, 'first')\"\n (touchstart)=\"handleOnStart($event, 'first')\"\n >\n @if (hasTooltip()) {\n <div class=\"ax-range-slider-tooltip\">{{ isDual() ? values()[0] : values() }}</div>\n }\n </div>\n\n @if (isDual()) {\n <div\n class=\"ax-range-slider-handler\"\n [ngStyle]=\"AXRangeSliderHandler2()\"\n (mousedown)=\"handleOnStart($event, 'second')\"\n (touchstart)=\"handleOnStart($event, 'second')\"\n >\n @if (hasTooltip()) {\n <div class=\"ax-range-slider-tooltip\">{{ values()[1] }}</div>\n }\n </div>\n }\n @if (hasSnap()) {\n <div class=\"ax-range-slider-step\" [ngStyle]=\"AXRangeSliderStep()\">\n @for (item of calculateSnapBar(); track $index) {\n <div\n class=\"ax-range-slider-steps\"\n [ngStyle]=\"\n isHorizontal() ? { left: getPercantage(item) + '%' } : { top: getPercantage(item) + '%' }\n \"\n >\n @if (hasLable()) {\n <div class=\"ax-range-slider-label\" [ngStyle]=\"AXRangeLabel()\">\n {{ item + min() }}\n </div>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: [":root{--ax-range-slider-base-thickness: .25rem}ax-range-slider{display:flex;align-items:center;justify-content:center;font-size:small}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-range-slider-base-thickness) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-range-slider-base-thickness);transform:translateY(-50%);z-index:20;border-radius:9999rem;background-color:rgb(var(--ax-range-slider-bg));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-range-slider-base-thickness) * 3 / 2);transform:translateY(-50%);z-index:20;border-radius:9999rem;background-color:rgb(var(--ax-range-slider-fg))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:calc(var(--ax-range-slider-base-thickness) * 6);height:calc(var(--ax-range-slider-base-thickness) * 6);z-index:20;background-color:rgb(var(--ax-range-slider-fg));border-radius:50%;cursor:pointer;transform:translate(-50%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover{box-shadow:var(--tw-ring-inset) 0 0 0 calc(.6rem + var(--tw-ring-offset-width)) rgba(var(--ax-range-slider-fg),.25)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:var(--tw-ring-inset) 0 0 0 calc(.6rem + var(--tw-ring-offset-width)) rgba(var(--ax-range-slider-fg),.25)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-range-slider-base-thickness) * 2.8);top:calc(var(--ax-range-slider-base-thickness) * -2);background-color:rgb(var(--ax-range-slider-fg));color:rgb(var(--ax-range-tooltip-text));padding:5px 10px;border-radius:3px;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\"\";position:absolute;top:calc(var(--ax-range-slider-base-thickness) * 7);left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgb(var(--ax-range-slider-fg)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:10}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-range-slider-base-thickness) / 2) solid rgb(var(--ax-color-border-default));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-range-slider-base-thickness) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-range-slider-base-thickness) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-range-slider-base-thickness);height:100.1%;transform:translate(-50%);z-index:20;border-radius:9999rem;background-color:rgb(var(--ax-range-slider-bg));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-range-slider-base-thickness) * 3 / 2);transform:translate(-50%);z-index:20;border-radius:9999rem;background-color:rgb(var(--ax-range-slider-fg))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-range-slider-base-thickness) * 6);height:calc(var(--ax-range-slider-base-thickness) * 6);z-index:20;background-color:rgb(var(--ax-range-slider-fg));border-radius:50%;cursor:pointer;transform:translate(-50%,-50%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-range-slider-fg),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-range-slider-base-thickness) * 8.5);left:calc(var(--ax-range-slider-base-thickness) * -8);background-color:rgb(var(--ax-range-slider-fg));color:rgb(var(--ax-range-tooltip-text));padding:5px 10px;border-radius:3px;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\"\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgb(var(--ax-range-slider-fg))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:10}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-range-slider-base-thickness) / 2) solid rgb(var(--ax-color-border-default))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-range-slider-base-thickness) * -3)}ax-range-slider.ax-primary-solid{--ax-range-slider-bg: var(--ax-color-primary-200);--ax-range-slider-fg: var(--ax-color-primary-500);--ax-range-tooltip-text: var(--ax-color-primary-fore)}ax-range-slider.ax-secondary-solid{--ax-range-slider-bg: var(--ax-color-secondary-200);--ax-range-slider-fg: var(--ax-color-secondary-500);--ax-range-tooltip-text: var(--ax-color-secondary-fore)}ax-range-slider.ax-success-solid{--ax-range-slider-bg: var(--ax-color-success-200);--ax-range-slider-fg: var(--ax-color-success-500);--ax-range-tooltip-text: var(--ax-color-success-fore)}ax-range-slider.ax-warning-solid{--ax-range-slider-bg: var(--ax-color-warning-200);--ax-range-slider-fg: var(--ax-color-warning-500);--ax-range-tooltip-text: var(--ax-color-warning-fore)}ax-range-slider.ax-danger-solid{--ax-range-slider-bg: var(--ax-color-danger-200);--ax-range-slider-fg: var(--ax-color-danger-500);--ax-range-tooltip-text: var(--ax-color-danger-fore)}ax-range-slider.ax-info-solid{--ax-range-slider-bg: var(--ax-color-info-200);--ax-range-slider-fg: var(--ax-color-info-500);--ax-range-tooltip-text: var(--ax-color-info-fore)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}ax-range-slider.ax-state-readonly{opacity:.75}.ax-dark ax-range-slider.ax-primary-solid{--ax-range-slider-bg: var(--ax-color-primary-700);--ax-range-slider-fg: var(--ax-color-primary-200);--ax-range-tooltip-text: var(--ax-color-primary-fore-tint)}.ax-dark ax-range-slider.ax-secondary-solid{--ax-range-slider-bg: var(--ax-color-secondary-700);--ax-range-slider-fg: var(--ax-color-secondary-200);--ax-range-tooltip-text: var(--ax-color-secondary-fore-tint)}.ax-dark ax-range-slider.ax-success-solid{--ax-range-slider-bg: var(--ax-color-success-700);--ax-range-slider-fg: var(--ax-color-success-200);--ax-range-tooltip-text: var(--ax-color-success-fore-tint)}.ax-dark ax-range-slider.ax-warning-solid{--ax-range-slider-bg: var(--ax-color-warning-700);--ax-range-slider-fg: var(--ax-color-warning-200);--ax-range-tooltip-text: var(--ax-color-warning-fore-tint)}.ax-dark ax-range-slider.ax-danger-solid{--ax-range-slider-bg: var(--ax-color-danger-700);--ax-range-slider-fg: var(--ax-color-danger-200);--ax-range-tooltip-text: var(--ax-color-danger-fore-tint)}.ax-dark ax-range-slider.ax-info-solid{--ax-range-slider-bg: var(--ax-color-info-700);--ax-range-slider-fg: var(--ax-color-info-200);--ax-range-tooltip-text: var(--ax-color-info-fore-tint)}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10
423
  }
11
424
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXRangeSliderComponent, decorators: [{
12
425
  type: Component,
13
- args: [{ selector: 'ax-range-slider', template: "<p>test</p>" }]
14
- }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3JhbmdlLXNsaWRlci9zcmMvbGliL3JhbmdlLXNsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQzs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sc0JBQXNCOzhHQUF0QixzQkFBc0I7a0dBQXRCLHNCQUFzQix1RENYbkMsYUFBVzs7MkZEV0Usc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBjYXRlZ29yeVxuICogUmFuZ2Ugc2xpZGVyIGZvciBzZWxlY3RpbmcgYSByYW5nZSBvZiB2YWx1ZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXJhbmdlLXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYW5nZS1zbGlkZXIuY29tcG9uZW50LnNhc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSYW5nZVNsaWRlckNvbXBvbmVudCB7fVxuIiwiPHA+dGVzdDwvcD4iXX0=
426
+ args: [{ selector: 'ax-range-slider', inputs: ['disabled', 'readonly'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
427
+ { provide: AXValuableComponent, useExisting: AXRangeSliderComponent },
428
+ {
429
+ provide: NG_VALUE_ACCESSOR,
430
+ useExisting: forwardRef(() => AXRangeSliderComponent),
431
+ multi: true,
432
+ },
433
+ ], template: "<div class=\"ax-range-slider\" (wheel)=\"onWheel($event)\" [class]=\"'ax-orientation-' + orientation()\">\n <div class=\"ax-range-slider-bar\" (mousedown)=\"onclickBar($event)\" (touchstart)=\"onclickBar($event)\"></div>\n <div class=\"ax-range-slider-highlight\" [ngStyle]=\"AXRangeSliderHighlight()\"></div>\n\n <div\n class=\"ax-range-slider-handler\"\n [ngStyle]=\"AXRangeSliderHandler1()\"\n (mousedown)=\"handleOnStart($event, 'first')\"\n (touchstart)=\"handleOnStart($event, 'first')\"\n >\n @if (hasTooltip()) {\n <div class=\"ax-range-slider-tooltip\">{{ isDual() ? values()[0] : values() }}</div>\n }\n </div>\n\n @if (isDual()) {\n <div\n class=\"ax-range-slider-handler\"\n [ngStyle]=\"AXRangeSliderHandler2()\"\n (mousedown)=\"handleOnStart($event, 'second')\"\n (touchstart)=\"handleOnStart($event, 'second')\"\n >\n @if (hasTooltip()) {\n <div class=\"ax-range-slider-tooltip\">{{ values()[1] }}</div>\n }\n </div>\n }\n @if (hasSnap()) {\n <div class=\"ax-range-slider-step\" [ngStyle]=\"AXRangeSliderStep()\">\n @for (item of calculateSnapBar(); track $index) {\n <div\n class=\"ax-range-slider-steps\"\n [ngStyle]=\"\n isHorizontal() ? { left: getPercantage(item) + '%' } : { top: getPercantage(item) + '%' }\n \"\n >\n @if (hasLable()) {\n <div class=\"ax-range-slider-label\" [ngStyle]=\"AXRangeLabel()\">\n {{ item + min() }}\n </div>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: [":root{--ax-range-slider-base-thickness: .25rem}ax-range-slider{display:flex;align-items:center;justify-content:center;font-size:small}ax-range-slider .ax-range-slider.ax-orientation-horizontal{position:relative;width:100%;height:calc(var(--ax-range-slider-base-thickness) * 4)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-bar{position:absolute;top:50%;left:0;width:100.1%;height:var(--ax-range-slider-base-thickness);transform:translateY(-50%);z-index:20;border-radius:9999rem;background-color:rgb(var(--ax-range-slider-bg));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-highlight{position:absolute;top:50%;height:calc(var(--ax-range-slider-base-thickness) * 3 / 2);transform:translateY(-50%);z-index:20;border-radius:9999rem;background-color:rgb(var(--ax-range-slider-fg))}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler{position:absolute;top:50%;width:calc(var(--ax-range-slider-base-thickness) * 6);height:calc(var(--ax-range-slider-base-thickness) * 6);z-index:20;background-color:rgb(var(--ax-range-slider-fg));border-radius:50%;cursor:pointer;transform:translate(-50%,-50%);transition:box-shadow .1s linear}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:hover{box-shadow:var(--tw-ring-inset) 0 0 0 calc(.6rem + var(--tw-ring-offset-width)) rgba(var(--ax-range-slider-fg),.25)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-handler:active{box-shadow:var(--tw-ring-inset) 0 0 0 calc(.6rem + var(--tw-ring-offset-width)) rgba(var(--ax-range-slider-fg),.25)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip{position:absolute;left:calc(var(--ax-range-slider-base-thickness) * 2.8);top:calc(var(--ax-range-slider-base-thickness) * -2);background-color:rgb(var(--ax-range-slider-fg));color:rgb(var(--ax-range-tooltip-text));padding:5px 10px;border-radius:3px;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-tooltip:after{content:\"\";position:absolute;top:calc(var(--ax-range-slider-base-thickness) * 7);left:50%;transform:translate(-50%);border-width:.5rem;border-style:solid;border-color:rgb(var(--ax-range-slider-fg)) transparent transparent transparent}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step{position:absolute;display:flex;flex-direction:row;width:100%;z-index:10}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps{position:absolute;border-left:calc(var(--ax-range-slider-base-thickness) / 2) solid rgb(var(--ax-color-border-default));height:50%}ax-range-slider .ax-range-slider.ax-orientation-horizontal .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:relative;text-align:center;top:calc(var(--ax-range-slider-base-thickness) * 2);left:-50%}ax-range-slider .ax-range-slider.ax-orientation-vertical{position:relative;width:calc(var(--ax-range-slider-base-thickness) * 4);height:100%}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-bar{position:absolute;top:0;left:50%;width:var(--ax-range-slider-base-thickness);height:100.1%;transform:translate(-50%);z-index:20;border-radius:9999rem;background-color:rgb(var(--ax-range-slider-bg));cursor:pointer}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-highlight{position:absolute;left:50%;width:calc(var(--ax-range-slider-base-thickness) * 3 / 2);transform:translate(-50%);z-index:20;border-radius:9999rem;background-color:rgb(var(--ax-range-slider-fg))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler{position:absolute;left:50%;width:calc(var(--ax-range-slider-base-thickness) * 6);height:calc(var(--ax-range-slider-base-thickness) * 6);z-index:20;background-color:rgb(var(--ax-range-slider-fg));border-radius:50%;cursor:pointer;transform:translate(-50%,-50%);transition:background-color .2s ease}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-handler:active{border:1px solid transparent;box-shadow:var(--tw-ring-inset) 0 0 0 calc(.5rem + var(--tw-ring-offset-width)) rgba(var(--ax-range-slider-fg),.25)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip{position:absolute;top:calc(var(--ax-range-slider-base-thickness) * 8.5);left:calc(var(--ax-range-slider-base-thickness) * -8);background-color:rgb(var(--ax-range-slider-fg));color:rgb(var(--ax-range-tooltip-text));padding:5px 10px;border-radius:3px;white-space:nowrap;transform:translate(-50%,-125%)}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-tooltip:after{content:\"\";position:absolute;top:50%;left:97%;transform:translateY(-50%);border-width:.5rem;border-style:solid;border-color:transparent transparent transparent rgb(var(--ax-range-slider-fg))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step{position:absolute;display:flex;flex-direction:column;height:100%;z-index:10}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps{position:absolute;width:50%;border-top:calc(var(--ax-range-slider-base-thickness) / 2) solid rgb(var(--ax-color-border-default))}ax-range-slider .ax-range-slider.ax-orientation-vertical .ax-range-slider-step .ax-range-slider-steps .ax-range-slider-label{position:absolute;left:150%;top:calc(var(--ax-range-slider-base-thickness) * -3)}ax-range-slider.ax-primary-solid{--ax-range-slider-bg: var(--ax-color-primary-200);--ax-range-slider-fg: var(--ax-color-primary-500);--ax-range-tooltip-text: var(--ax-color-primary-fore)}ax-range-slider.ax-secondary-solid{--ax-range-slider-bg: var(--ax-color-secondary-200);--ax-range-slider-fg: var(--ax-color-secondary-500);--ax-range-tooltip-text: var(--ax-color-secondary-fore)}ax-range-slider.ax-success-solid{--ax-range-slider-bg: var(--ax-color-success-200);--ax-range-slider-fg: var(--ax-color-success-500);--ax-range-tooltip-text: var(--ax-color-success-fore)}ax-range-slider.ax-warning-solid{--ax-range-slider-bg: var(--ax-color-warning-200);--ax-range-slider-fg: var(--ax-color-warning-500);--ax-range-tooltip-text: var(--ax-color-warning-fore)}ax-range-slider.ax-danger-solid{--ax-range-slider-bg: var(--ax-color-danger-200);--ax-range-slider-fg: var(--ax-color-danger-500);--ax-range-tooltip-text: var(--ax-color-danger-fore)}ax-range-slider.ax-info-solid{--ax-range-slider-bg: var(--ax-color-info-200);--ax-range-slider-fg: var(--ax-color-info-500);--ax-range-tooltip-text: var(--ax-color-info-fore)}ax-range-slider.ax-state-disabled{opacity:.5;cursor:not-allowed}ax-range-slider.ax-state-readonly{opacity:.75}.ax-dark ax-range-slider.ax-primary-solid{--ax-range-slider-bg: var(--ax-color-primary-700);--ax-range-slider-fg: var(--ax-color-primary-200);--ax-range-tooltip-text: var(--ax-color-primary-fore-tint)}.ax-dark ax-range-slider.ax-secondary-solid{--ax-range-slider-bg: var(--ax-color-secondary-700);--ax-range-slider-fg: var(--ax-color-secondary-200);--ax-range-tooltip-text: var(--ax-color-secondary-fore-tint)}.ax-dark ax-range-slider.ax-success-solid{--ax-range-slider-bg: var(--ax-color-success-700);--ax-range-slider-fg: var(--ax-color-success-200);--ax-range-tooltip-text: var(--ax-color-success-fore-tint)}.ax-dark ax-range-slider.ax-warning-solid{--ax-range-slider-bg: var(--ax-color-warning-700);--ax-range-slider-fg: var(--ax-color-warning-200);--ax-range-tooltip-text: var(--ax-color-warning-fore-tint)}.ax-dark ax-range-slider.ax-danger-solid{--ax-range-slider-bg: var(--ax-color-danger-700);--ax-range-slider-fg: var(--ax-color-danger-200);--ax-range-tooltip-text: var(--ax-color-danger-fore-tint)}.ax-dark ax-range-slider.ax-info-solid{--ax-range-slider-bg: var(--ax-color-info-700);--ax-range-slider-fg: var(--ax-color-info-200);--ax-range-tooltip-text: var(--ax-color-info-fore-tint)}\n"] }]
434
+ }], ctorParameters: () => [], propDecorators: { __hostClass: [{
435
+ type: HostBinding,
436
+ args: ['class']
437
+ }] } });
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3JhbmdlLXNsaWRlci9zcmMvbGliL3JhbmdlLXNsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFTbkM7OztHQUdHO0FBaUJILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxPQUFPLENBQUMsQ0FBQSxnQkFBb0MsQ0FBQSxDQUFDO0lBb0l2RiwyQ0FBMkM7SUFDM0M7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQXJJRixTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLFNBQVM7UUFDVCxZQUFPLEdBQUcsTUFBTSxFQUFxQixDQUFDO1FBQ3RDLFFBQVE7UUFDUixnQkFBVyxHQUFHLEtBQUssQ0FBZ0IsWUFBWSxDQUFDLENBQUM7UUFDakQsVUFBSyxHQUFHLEtBQUssQ0FBbUIsU0FBUyxDQUFDLENBQUM7UUFDM0MsV0FBTSxHQUFHLEtBQUssQ0FBcUIsSUFBSSxDQUFDLEtB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cGUsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIE1YVmFsdWVDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIE5nWm9uZSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuaW1wb3J0IHtcbiAgQVhSYW5nZVNsaWRlck1vZGUsXG4gIEFYUmFuZ2VTbGlkZXJTbmFwTW9kZSxcbiAgQVhSYW5nZVNsaWRlclRvb2x0aXBNb2RlLFxuICBBWFJhbmdlU2xpZGVyVmFsdWUsXG4gIEFYUmFuZ2VTdGFydEV2ZW50LFxufSBmcm9tICcuL3JhbmdlLXNsaWRlci5jbGFzcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5XG4gKiBSYW5nZSBzbGlkZXIgZm9yIHNlbGVjdGluZyBhIHJhbmdlIG9mIHZhbHVlcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcmFuZ2Utc2xpZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhbmdlLXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhbmdlLXNsaWRlci5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUmFuZ2VTbGlkZXJDb21wb25lbnQgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYUmFuZ2VTbGlkZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSYW5nZVNsaWRlckNvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxBWFJhbmdlU2xpZGVyVmFsdWU+KSB7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAvL291dHB1dHNcbiAgb25TdGFydCA9IG91dHB1dDxBWFJhbmdlU3RhcnRFdmVudD4oKTtcbiAgLy9pbnB1dHNcbiAgb3JpZW50YXRpb24gPSBpbnB1dDxBWE9yaWVudGF0aW9uPignaG9yaXpvbnRhbCcpO1xuICBjb2xvciA9IGlucHV0PEFYU3R5bGVDb2xvclR5cGU+KCdwcmltYXJ5Jyk7XG4gIHZhbHVlcyA9IG1vZGVsPEFYUmFuZ2VTbGlkZXJWYWx1ZT4odGhpcy52YWx1ZSk7XG4gIG1vZGUgPSBpbnB1dDxBWFJhbmdlU2xpZGVyTW9kZT4oJ3NpbmdsZScpO1xuICBtaW4gPSBpbnB1dDxudW1iZXI+KDApO1xuICBtYXggPSBpbnB1dDxudW1iZXI+KDEwMCk7XG4gIHN0ZXAgPSBpbnB1dDxudW1iZXI+KDEpO1xuICBzbmFwID0gaW5wdXQ8bnVtYmVyPigxKTtcbiAgdG9vbHRpcE1vZGUgPSBpbnB1dDxBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGU+KCdlbmQnKTtcbiAgc25hcE1vZGUgPSBpbnB1dDxBWFJhbmdlU2xpZGVyU25hcE1vZGU+KCdzdGFydCcpO1xuICBoYXNTbmFwID0gaW5wdXQoZmFsc2UpO1xuICBoYXNMYWJsZSA9IGlucHV0KHRoaXMuaGFzU25hcCgpKTtcbiAgaGFzVG9vbHRpcCA9IGlucHV0KGZhbHNlKTtcbiAgLy9jb21wdXRlZFxuICBoZWlnaHQgPSAwLjI1O1xuICByYW5nZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWF4KCkgLSB0aGlzLm1pbigpKTtcbiAgaXNIb3Jpem9udGFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcmllbnRhdGlvbigpID09PSAnaG9yaXpvbnRhbCcpO1xuICBpc0R1YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnKTtcblxuICBjYWxjdWxhdGVTbmFwQmFyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmhhc1NuYXAoKSkge1xuICAgICAgbGV0IGFycmF5ID0gW107XG4gICAgICBmb3IgKGxldCBpID0gdGhpcy5taW4oKTsgaSA8IHRoaXMubWF4KCk7IGkgKz0gdGhpcy5zbmFwKCkpIHtcbiAgICAgICAgYXJyYXkucHVzaChpKTtcbiAgICAgIH1cbiAgICAgIGFycmF5ID0gWy4uLmFycmF5LCB0aGlzLm1heCgpXTtcbiAgICAgIGlmIChhcnJheVswXSA8IDApIHtcbiAgICAgICAgYXJyYXkgPSBhcnJheS5tYXAoKGkpID0+IGkgKyAtYXJyYXlbMF0pLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgIH1cbiAgICAgIGlmIChhcnJheVswXSA+IDApIHtcbiAgICAgICAgYXJyYXkgPSBhcnJheS5tYXAoKGkpID0+IGkgLSBhcnJheVswXSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSk7XG4gIGNhbGN1bGF0ZVBvcyA9IGNvbXB1dGVkPEFYUmFuZ2VTbGlkZXJWYWx1ZT4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpICYmIHRoaXMudmFsdWVzKCkpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgICgodGhpcy52YWx1ZXMoKVswXSAtIHRoaXMubWluKCkpIC8gdGhpcy5yYW5nZSgpKSAqIDEwMCxcbiAgICAgICAgKCh0aGlzLnZhbHVlcygpWzFdIC0gdGhpcy5taW4oKSkgLyB0aGlzLnJhbmdlKCkpICogMTAwLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICgoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSAtIHRoaXMubWluKCkpIC8gdGhpcy5yYW5nZSgpKSAqIDEwMDtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgY2hvb3NlbkhhbmRsZXI6ICdmaXJzdCcgfCAnc2Vjb25kJyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHNsaWRlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIEFYUmFuZ2VTbGlkZXJIaWdobGlnaHQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNIb3Jpem9udGFsKClcbiAgICAgID8ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuaXNEdWFsKCkgPyB0aGlzLmNhbGN1bGF0ZVBvcygpWzBdICsgJyUnIDogdGhpcy5taW4oKSArICclJyxcbiAgICAgICAgICB3aWR0aDogdGhpcy5pc0R1YWwoKVxuICAgICAgICAgICAgPyB0aGlzLmNhbGN1bGF0ZVBvcygpWzFdIC0gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJ1xuICAgICAgICAgICAgOiB0aGlzLmNhbGN1bGF0ZVBvcygpICsgJyUnLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMuaXNEdWFsKClcbiAgICAgICAgICAgID8gdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSAtIHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJSdcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVQb3MoKSArICclJyxcbiAgICAgICAgICB0b3A6IHRoaXMubW9kZSgpID09PSAnZHVhbCcgPyB0aGlzLmNhbGN1bGF0ZVBvcygpWzBdICsgJyUnIDogdGhpcy5taW4oKSArICclJyxcbiAgICAgICAgfSxcbiAgKTtcbiAgcHJvdGVjdGVkIEFYUmFuZ2VTbGlkZXJIYW5kbGVyMSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0hvcml6b250YWwoKVxuICAgICAgPyB7XG4gICAgICAgICAgbGVmdDogdGhpcy5pc0R1YWwoKSA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJScgOiB0aGlzLmNhbGN1bGF0ZVBvcygpICsgJyUnLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICB0b3A6IHRoaXMuaXNEdWFsKCkgPyB0aGlzLmNhbGN1bGF0ZVBvcygpWzBdICsgJyUnIDogdGhpcy5jYWxjdWxhdGVQb3MoKSArICclJyxcbiAgICAgICAgfSxcbiAgKTtcbiAgcHJvdGVjdGVkIEFYUmFuZ2VTbGlkZXJIYW5kbGVyMiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0hvcml6b250YWwoKVxuICAgICAgPyB7XG4gICAgICAgICAgbGVmdDogdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSArICclJyxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgdG9wOiB0aGlzLmNhbGN1bGF0ZVBvcygpWzFdICsgJyUnLFxuICAgICAgICB9LFxuICApO1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlclN0ZXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogJzAnLCBoZWlnaHQ6IDggKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nLCBoZWlnaHQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAtMiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIGhlaWdodDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh0aGlzLnNuYXBNb2RlKCkpIHtcbiAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAnMCcsIHdpZHRoOiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIHdpZHRoOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IC0yICogdGhpcy5oZWlnaHQgKyAncmVtJywgd2lkdGg6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcHJvdGVjdGVkIEFYUmFuZ2VMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pc0hvcml6b250YWwoKSkge1xuICAgICAgc3dpdGNoICh0aGlzLnNuYXBNb2RlKCkpIHtcbiAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiA2ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogLTYgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IDggKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IC04ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIC8vcHJvdGVjdGVkIEFYVG9vbHRpcCA9IGNvbXB1dGVkKCgpID0+IHt9KTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgICAgICB0aGlzLmZpeENoYW5naW5nTW9kZSgpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplVmFsdWVzKCk7XG4gIH1cblxuICBoYW5kbGVPblN0YXJ0KGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNsaWRlckVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCdheC1yYW5nZS1zbGlkZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICh0aGlzLnNsaWRlckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VuSGFuZGxlciA9IGNpcmNsZTtcbiAgICAgICAgY29uc3QgbW92ZUxpc3RlbmVyID0gKG1vdmVFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHRoaXMub25Nb3ZlKG1vdmVFdmVudCwgY2lyY2xlKTtcbiAgICAgICAgY29uc3QgZW5kTGlzdGVuZXIgPSAoKSA9PiB0aGlzLm9uRW5kKG1vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXIpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlbmRMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBtb3ZlTGlzdGVuZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZW5kTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG9uY2xpY2tCYXIoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnYXgtcmFuZ2Utc2xpZGVyJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zbGlkZXJFbGVtZW50IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIGNvbnN0IGNsaWVudFggPSBldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgPyBldmVudC5jbGllbnRYIDogKGV2ZW50IGFzIFRvdWNoRXZlbnQpLnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgIGNvbnN0IHNsaWRlclJlY3QgPSB0aGlzLnNsaWRlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjbGlja1Bvc2l0aW9uID0gKChjbGllbnRYIC0gc2xpZGVyUmVjdC5sZWZ0KSAvIHNsaWRlclJlY3Qud2lkdGgpICogMTAwO1xuICAgICAgbGV0IG5ld1ZhbHVlID0gTWF0aC5yb3VuZCh0aGlzLm1pbigpICsgKGNsaWNrUG9zaXRpb24gLyAxMDApICogKHRoaXMubWF4KCkgLSB0aGlzLm1pbigpKSk7XG4gICAgICBuZXdWYWx1ZSA9IHRoaXMuY2FsY3VsYXRlU3RlcChuZXdWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICBpZiAoY2xpY2tQb3NpdGlvbiA8IHRoaXMuY2FsY3VsYXRlUG9zKClbMF0pIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW25ld1ZhbHVlLCB0aGlzLnZhbHVlcygpWzFdXSk7XG4gICAgICAgICAgdGhpcy5jb21taXRWYWx1ZSh0aGlzLnZhbHVlcygpKTtcbiAgICAgICAgfSBlbHNlIGlmIChjbGlja1Bvc2l0aW9uID4gdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgbmV3VmFsdWVdKTtcbiAgICAgICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY2xpY2tQb3NpdGlvbiA+ICh0aGlzLmNhbGN1bGF0ZVBvcygpIGFzIG51bWJlcikpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQobmV3VmFsdWUpO1xuICAgICAgICAgIHRoaXMuY29tbWl0VmFsdWUodGhpcy52YWx1ZXMoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMub25TdGFydC5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICBodG1sRWxlbWVudDogZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZXZlbnQuaXNUcnVzdGVkLFxuICAgICAgICBkYXRhOiB0aGlzLnZhbHVlcygpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgb25Nb3ZlKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2xpZGVyRWxlbWVudCB8fCB0aGlzLnJlYWRvbmx5KSByZXR1cm47XG4gICAgY29uc3Qgc2xpZGVyUmVjdCA9IHRoaXMuc2xpZGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBsZXQgbmV3VmFsdWU6IG51bWJlcjtcbiAgICBpZiAodGhpcy5pc0hvcml6b250YWwoKSkge1xuICAgICAgY29uc3QgY2xpZW50WCA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFggOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgbGV0IG5ld0xlZnQgPSAoKGNsaWVudFggLSBzbGlkZXJSZWN0LmxlZnQpIC8gc2xpZGVyUmVjdC53aWR0aCkgKiAxMDA7XG4gICAgICBuZXdMZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obmV3TGVmdCwgMTAwKSk7XG4gICAgICBuZXdWYWx1ZSA9IE1hdGgucm91bmQodGhpcy5taW4oKSArIChuZXdMZWZ0IC8gMTAwKSAqICh0aGlzLm1heCgpIC0gdGhpcy5taW4oKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbGllbnRZID0gZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50ID8gZXZlbnQuY2xpZW50WSA6IChldmVudCBhcyBUb3VjaEV2ZW50KS50b3VjaGVzWzBdLmNsaWVudFk7XG4gICAgICBsZXQgbmV3TGVmdCA9ICgoY2xpZW50WSAtIHNsaWRlclJlY3QudG9wKSAvIHNsaWRlclJlY3QuaGVpZ2h0KSAqIDEwMDtcbiAgICAgIG5ld0xlZnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihuZXdMZWZ0LCAxMDApKTtcbiAgICAgIG5ld1ZhbHVlID0gTWF0aC5yb3VuZCh0aGlzLm1pbigpICsgKG5ld0xlZnQgLyAxMDApICogKHRoaXMubWF4KCkgLSB0aGlzLm1pbigpKSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgICAgaWYgKGNpcmNsZSA9PT0gJ2ZpcnN0Jykge1xuICAgICAgICAgIG5ld1ZhbHVlID0gTWF0aC5tYXgodGhpcy5taW4oKSwgTWF0aC5taW4obmV3VmFsdWUsIHRoaXMudmFsdWVzKClbMV0gLSB0aGlzLnN0ZXAoKSkpO1xuICAgICAgICAgIGlmICh0aGlzLnN0ZXAoKSAhPT0gMSkgbmV3VmFsdWUgPSB0aGlzLmNhbGN1bGF0ZVN0ZXAobmV3VmFsdWUpO1xuICAgICAgICAgIGlmICh0aGlzLnZhbHVlcygpWzBdICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KFtuZXdWYWx1ZSwgdGhpcy52YWx1ZXMoKVsxXV0pO1xuICAgICAgICAgICAgdGhpcy5jb21taXRWYWx1ZSh0aGlzLnZhbHVlcygpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBNYXRoLm1pbih0aGlzLm1heCgpLCBNYXRoLm1heChuZXdWYWx1ZSwgdGhpcy52YWx1ZXMoKVswXSArIHRoaXMuc3RlcCgpKSk7XG4gICAgICAgICAgaWYgKHRoaXMuc3RlcCgpICE9PSAxKSBuZXdWYWx1ZSA9IHRoaXMuY2FsY3VsYXRlU3RlcChuZXdWYWx1ZSk7XG4gICAgICAgICAgaWYgKHRoaXMudmFsdWVzKClbMV0gIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMF0sIG5ld1ZhbHVlXSk7XG4gICAgICAgICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBNYXRoLm1heCh0aGlzLm1pbigpLCBuZXdWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXAoKSAhPT0gMSkgbmV3VmFsdWUgPSB0aGlzLmNhbGN1bGF0ZVN0ZXAobmV3VmFsdWUpO1xuICAgICAgICBpZiAodGhpcy52YWx1ZXMoKSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQobmV3VmFsdWUpO1xuICAgICAgICAgIHRoaXMuY29tbWl0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIG9uV2hlZWwoZXZlbnQ6IFdoZWVsRXZlbnQpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmICgodGhpcy5jaG9vc2VuSGFuZGxlciAmJiB0aGlzLm1vZGUoKSA9PT0gJ3NpbmdsZScpIHx8IHRoaXMucmVhZG9ubHkpIHJldHVybjtcbiAgICAgIGxldCBuZXdWYWx1ZTtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIGlmIChldmVudC5kZWx0YVkgPCAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hvb3NlbkhhbmRsZXIgPT09ICdmaXJzdCcpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5jYWxjdWxhdGVTdGVwKCh0aGlzLnZhbHVlcygpWzBdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tWYWx1ZXMobmV3VmFsdWUsIHRoaXMuY2hvb3NlbkhhbmRsZXIsIHRoaXMudmFsdWVzKClbMV0pICYmXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzKClbMF0gIT09IG5ld1ZhbHVlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLmNhbGN1bGF0ZVN0ZXAoKG9sZFswXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpLCBvbGRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLmNhbGN1bGF0ZVN0ZXAoKHRoaXMudmFsdWVzKClbMV0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA8PSB0aGlzLm1heCgpICYmIHRoaXMudmFsdWVzKClbMV0gIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbb2xkWzBdLCB0aGlzLmNhbGN1bGF0ZVN0ZXAoKG9sZFsxXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmNob29zZW5IYW5kbGVyID09PSAnZmlyc3QnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuY2FsY3VsYXRlU3RlcCgodGhpcy52YWx1ZXMoKVswXSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzFdKSAmJlxuICAgICAgICAgICAgICB0aGlzLnZhbHVlcygpICE9PSBuZXdWYWx1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbdGhpcy5jYWxjdWxhdGVTdGVwKChvbGRbMF0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSwgb2xkWzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5jYWxjdWxhdGVTdGVwKCh0aGlzLnZhbHVlcygpWzFdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tWYWx1ZXMobmV3VmFsdWUsIHRoaXMuY2hvb3NlbkhhbmRsZXIsIHRoaXMudmFsdWVzKClbMF0pICYmXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzKClbMV0gIT09IG5ld1ZhbHVlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFtvbGRbMF0sIHRoaXMuY2FsY3VsYXRlU3RlcCgob2xkWzFdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChldmVudC5kZWx0YVkgPCAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZSh0aGlzLmNhbGN1bGF0ZVN0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLmNhbGN1bGF0ZVN0ZXAoKG9sZCBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZSh0aGlzLmNhbGN1bGF0ZVN0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLmNhbGN1bGF0ZVN0ZXAoKG9sZCBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBvbkVuZChtb3ZlTGlzdGVuZXI6IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQsIGVuZExpc3RlbmVyOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdmVMaXN0ZW5lcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlbmRMaXN0ZW5lcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG1vdmVMaXN0ZW5lcik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZW5kTGlzdGVuZXIpO1xuICAgIHRoaXMuc2xpZGVyRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBpbml0aWFsaXplVmFsdWVzKCkge1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVVuZGVmaW5lZCgpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVN0ZXAoKTtcbiAgfVxuICBmaXhJbml0aWFsaXplVW5kZWZpbmVkKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy5taW4oKSwgdGhpcy5tYXgoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgICAgfVxuICAgICAgdGhpcy5jb21taXRWYWx1ZSh0aGlzLnZhbHVlcygpKTtcbiAgICB9XG4gIH1cbiAgZml4SW5pdGlhbGl6ZVZhbHVlcygpIHtcbiAgICAvL3N3YXAgdmFsdWVcbiAgICBpZiAodGhpcy5pc0R1YWwoKSAmJiB0aGlzLnZhbHVlcygpWzBdID4gdGhpcy52YWx1ZXMoKVsxXSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLnZhbHVlcygpWzFdLCB0aGlzLnZhbHVlcygpWzBdXSk7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpO1xuICAgIH1cbiAgICAvL25vdCBpbiByYW5nZVxuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ251bWJlcicgJiYgIXRoaXMuY2hlY2tWYWx1ZSh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikpIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldCh0aGlzLm1pbigpKTtcbiAgICAgIHRoaXMuY29tbWl0VmFsdWUodGhpcy52YWx1ZXMoKSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiB0aGlzLnZhbHVlcygpICE9PSAnbnVtYmVyJyAmJlxuICAgICAgIXRoaXMuY2hlY2tWYWx1ZXModGhpcy52YWx1ZXMoKVswXSwgJ2ZpcnN0JywgdGhpcy52YWx1ZXMoKVsxXSlcbiAgICApIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy5taW4oKSwgdGhpcy5tYXgoKV0pO1xuICAgICAgdGhpcy5jb21taXRWYWx1ZSh0aGlzLnZhbHVlcygpKTtcbiAgICB9XG4gIH1cbiAgZml4SW5pdGlhbGl6ZVN0ZXAoKSB7XG4gICAgaWYgKHRoaXMuc3RlcCgpICE9PSAxKSB7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMuY2FsY3VsYXRlU3RlcChvbGRbMF0pLCB0aGlzLmNhbGN1bGF0ZVN0ZXAob2xkWzFdKV0pO1xuICAgICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpO1xuICAgICAgICBpZiAodGhpcy52YWx1ZXMoKVswXSA9PT0gdGhpcy52YWx1ZXMoKVsxXSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbdGhpcy5jYWxjdWxhdGVTdGVwKG9sZFswXSksIHRoaXMuY2FsY3VsYXRlU3RlcChvbGRbMV0pICsgdGhpcy5zdGVwKCldKTtcbiAgICAgICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gdGhpcy5jYWxjdWxhdGVTdGVwKG9sZCBhcyBudW1iZXIpKTtcbiAgICAgICAgdGhpcy5jb21taXRWYWx1ZSh0aGlzLnZhbHVlcygpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZml4Q2hhbmdpbmdNb2RlKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ251bWJlcicgJiYgdGhpcy5pc0R1YWwoKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLm1pbigpLCB0aGlzLm1heCgpXSk7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWVzKCkgIT09ICdudW1iZXInICYmICF0aGlzLmlzRHVhbCgpKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQodGhpcy5taW4oKSk7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpO1xuICAgIH1cbiAgfVxuICBjYWxjdWxhdGVTdGVwKHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgcm91bmRlZFZhbHVlID0gTWF0aC5yb3VuZCh4IC8gdGhpcy5zdGVwKCkpICogdGhpcy5zdGVwKCk7XG4gICAgaWYgKHJvdW5kZWRWYWx1ZSA+IHRoaXMubWF4KCkpIHJldHVybiB0aGlzLm1heCgpO1xuICAgIGVsc2UgaWYgKHJvdW5kZWRWYWx1ZSA8IHRoaXMubWluKCkpIHJldHVybiB0aGlzLm1pbigpO1xuICAgIC8vZWxzZSBpZiAoeCA+PSB0aGlzLm1pbigpICYmIHggPCB0aGlzLm1pbigpIC0gKHRoaXMubWluKCkgJSB0aGlzLnN0ZXAoKSkpIHJldHVybiB0aGlzLm1pbigpO1xuICAgIGVsc2UgaWYgKHggPD0gdGhpcy5tYXgoKSAmJiB4ID4gdGhpcy5tYXgoKSAtICh0aGlzLm1heCgpICUgdGhpcy5zdGVwKCkpKSByZXR1cm4gdGhpcy5tYXgoKTtcbiAgICBlbHNlIHJldHVybiByb3VuZGVkVmFsdWU7XG4gIH1cbiAgY2hlY2tWYWx1ZSh4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoeCA+PSB0aGlzLm1pbigpICYmIHggPD0gdGhpcy5tYXgoKSkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY2hlY2tWYWx1ZXModmFsdWUxOiBudW1iZXIsIHk6ICdmaXJzdCcgfCAnc2Vjb25kJywgdmFsdWUyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUxID49IHRoaXMubWluKCkgJiYgdmFsdWUxIDw9IHRoaXMubWF4KCkpIHtcbiAgICAgIGlmICh5ID09PSAnZmlyc3QnKSB7XG4gICAgICAgIGlmICh2YWx1ZTEgPCB2YWx1ZTIgJiYgdmFsdWUyIDw9IHRoaXMubWF4KCkpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWx1ZTEgPiB2YWx1ZTIgJiYgdmFsdWUyID49IHRoaXMubWluKCkpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGdldFBlcmNhbnRhZ2UodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuICh2YWx1ZSAvIHRoaXMucmFuZ2UoKSkgKiAxMDA7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICBgYXgtJHt0aGlzLmNvbG9yKCl9LXNvbGlkYCxcbiAgICAgIGAke3RoaXMuZGlzYWJsZWQgPyAnYXgtc3RhdGUtZGlzYWJsZWQnIDogJyd9YCxcbiAgICAgIGAke3RoaXMucmVhZG9ubHkgPyAnYXgtc3RhdGUtcmVhZG9ubHknIDogJyd9YCxcbiAgICBdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyXCIgKHdoZWVsKT1cIm9uV2hlZWwoJGV2ZW50KVwiIFtjbGFzc109XCInYXgtb3JpZW50YXRpb24tJyArIG9yaWVudGF0aW9uKClcIj5cbiAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1iYXJcIiAobW91c2Vkb3duKT1cIm9uY2xpY2tCYXIoJGV2ZW50KVwiICh0b3VjaHN0YXJ0KT1cIm9uY2xpY2tCYXIoJGV2ZW50KVwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWhpZ2hsaWdodFwiIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIaWdobGlnaHQoKVwiPjwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1oYW5kbGVyXCJcbiAgICBbbmdTdHlsZV09XCJBWFJhbmdlU2xpZGVySGFuZGxlcjEoKVwiXG4gICAgKG1vdXNlZG93bik9XCJoYW5kbGVPblN0YXJ0KCRldmVudCwgJ2ZpcnN0JylcIlxuICAgICh0b3VjaHN0YXJ0KT1cImhhbmRsZU9uU3RhcnQoJGV2ZW50LCAnZmlyc3QnKVwiXG4gID5cbiAgICBAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci10b29sdGlwXCI+e3sgaXNEdWFsKCkgPyB2YWx1ZXMoKVswXSA6IHZhbHVlcygpIH19PC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGlzRHVhbCgpKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItaGFuZGxlclwiXG4gICAgICBbbmdTdHlsZV09XCJBWFJhbmdlU2xpZGVySGFuZGxlcjIoKVwiXG4gICAgICAobW91c2Vkb3duKT1cImhhbmRsZU9uU3RhcnQoJGV2ZW50LCAnc2Vjb25kJylcIlxuICAgICAgKHRvdWNoc3RhcnQpPVwiaGFuZGxlT25TdGFydCgkZXZlbnQsICdzZWNvbmQnKVwiXG4gICAgPlxuICAgICAgQGlmIChoYXNUb29sdGlwKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci10b29sdGlwXCI+e3sgdmFsdWVzKClbMV0gfX08L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKGhhc1NuYXAoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItc3RlcFwiIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJTdGVwKClcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgY2FsY3VsYXRlU25hcEJhcigpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLXN0ZXBzXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgIGlzSG9yaXpvbnRhbCgpID8geyBsZWZ0OiBnZXRQZXJjYW50YWdlKGl0ZW0pICsgJyUnIH0gOiB7IHRvcDogZ2V0UGVyY2FudGFnZShpdGVtKSArICclJyB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAoaGFzTGFibGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1sYWJlbFwiIFtuZ1N0eWxlXT1cIkFYUmFuZ2VMYWJlbCgpXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW0gKyBtaW4oKSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -4,7 +4,7 @@ import { AXRangeSliderComponent } from './range-slider.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export class AXRangeSliderModule {
6
6
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXRangeSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXRangeSliderModule, declarations: [AXRangeSliderComponent], imports: [CommonModule] }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXRangeSliderModule, declarations: [AXRangeSliderComponent], imports: [CommonModule], exports: [AXRangeSliderComponent] }); }
8
8
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXRangeSliderModule, imports: [CommonModule] }); }
9
9
  }
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXRangeSliderModule, decorators: [{
@@ -12,6 +12,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
12
12
  args: [{
13
13
  declarations: [AXRangeSliderComponent],
14
14
  imports: [CommonModule],
15
+ exports: [AXRangeSliderComponent],
15
16
  }]
16
17
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU1sRSxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixpQkFIZixzQkFBc0IsYUFDM0IsWUFBWTsrR0FFWCxtQkFBbUIsWUFGcEIsWUFBWTs7MkZBRVgsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9yYW5nZS1zbGlkZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQVhSYW5nZVNsaWRlckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJhbmdlU2xpZGVyTW9kdWxlIHt9XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU9sRSxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixpQkFKZixzQkFBc0IsYUFDM0IsWUFBWSxhQUNaLHNCQUFzQjsrR0FFckIsbUJBQW1CLFlBSHBCLFlBQVk7OzJGQUdYLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUmFuZ2VTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuL3JhbmdlLXNsaWRlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBWFJhbmdlU2xpZGVyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtBWFJhbmdlU2xpZGVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSYW5nZVNsaWRlck1vZHVsZSB7fVxuIl19