rm-range-slider 0.0.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rm-range-slider",
3
- "version": "0.0.1",
3
+ "version": "3.0.1",
4
4
  "description": "A highly optimized and fully customizable pure angular component for value range selection.",
5
5
  "keywords": [
6
6
  "",
@@ -32,17 +32,14 @@
32
32
  "url": "https://github.com/malikrajat/rm-range-slider"
33
33
  },
34
34
  "peerDependencies": {
35
- "@angular/common": "^14.2.0",
36
- "@angular/core": "^14.2.0"
35
+ "@angular/common": "^17.2.0",
36
+ "@angular/core": "^17.2.0"
37
37
  },
38
38
  "dependencies": {
39
39
  "tslib": "^2.3.0"
40
40
  },
41
- "module": "fesm2015/rm-range-slider.mjs",
42
- "es2020": "fesm2020/rm-range-slider.mjs",
43
- "esm2020": "esm2020/rm-range-slider.mjs",
44
- "fesm2020": "fesm2020/rm-range-slider.mjs",
45
- "fesm2015": "fesm2015/rm-range-slider.mjs",
41
+ "sideEffects": false,
42
+ "module": "fesm2022/rm-range-slider.mjs",
46
43
  "typings": "index.d.ts",
47
44
  "exports": {
48
45
  "./package.json": {
@@ -50,12 +47,9 @@
50
47
  },
51
48
  ".": {
52
49
  "types": "./index.d.ts",
53
- "esm2020": "./esm2020/rm-range-slider.mjs",
54
- "es2020": "./fesm2020/rm-range-slider.mjs",
55
- "es2015": "./fesm2015/rm-range-slider.mjs",
56
- "node": "./fesm2015/rm-range-slider.mjs",
57
- "default": "./fesm2020/rm-range-slider.mjs"
50
+ "esm2022": "./esm2022/rm-range-slider.mjs",
51
+ "esm": "./esm2022/rm-range-slider.mjs",
52
+ "default": "./fesm2022/rm-range-slider.mjs"
58
53
  }
59
- },
60
- "sideEffects": false
54
+ }
61
55
  }
package/public-api.d.ts CHANGED
@@ -1,3 +1 @@
1
- export * from './lib/rm-range-slider.component';
2
- export * from './lib/rm-range-slider.module';
3
- export * from './lib/rm-range-slider.component.interface';
1
+ export * from './lib/rm-range-slider.component';
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm0tcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ybS1yYW5nZS1zbGlkZXIvc3JjL2xpYi9ybS1yYW5nZS1zbGlkZXIuY29tcG9uZW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNSU5NQVgge1xyXG5cdG1pbjogbnVtYmVyXHJcblx0bWF4OiBudW1iZXJcclxufVxyXG4iXX0=
@@ -1,317 +0,0 @@
1
- var _RmRangeSliderComponent_instances, _RmRangeSliderComponent_createFrom, _RmRangeSliderComponent_onFormValueChange, _RmRangeSliderComponent_controlFromSlider, _RmRangeSliderComponent_controlToSlider, _RmRangeSliderComponent_fillSlider, _RmRangeSliderComponent_getFormValue, _RmRangeSliderComponent_setToggleAccessible, _RmRangeSliderComponent_getParsed, _RmRangeSliderComponent_disabledSlider, _RmRangeSliderComponent_changeThumbColorOnDisabled;
2
- import { __classPrivateFieldGet } from "tslib";
3
- import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
4
- import { Validators } from '@angular/forms';
5
- import { interval, Subject, takeUntil } from 'rxjs';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "@angular/common";
9
- export class RmRangeSliderComponent {
10
- /**
11
- * The constructor function is a special function that is called when a new instance of the class is created
12
- * @param {FormBuilder} fb - FormBuilder - This is the FormBuilder service that we'll use to create our form.
13
- * @param {Renderer2} renderer - Renderer2 - This is the Angular Renderer2 service. It's used to manipulate the DOM.
14
- */
15
- constructor(fb, renderer) {
16
- this.fb = fb;
17
- this.renderer = renderer;
18
- _RmRangeSliderComponent_instances.add(this);
19
- this.min = 0;
20
- this.max = 100;
21
- this.setMinValue = 0;
22
- this.disabled = false;
23
- this.showToolTip = false;
24
- this.setMaxValue = 100;
25
- this.showScale = false;
26
- this.doubleSlider = true;
27
- this.toolTipColor = '#8a00e5';
28
- this.toolTipColorHover = '#8a00e5';
29
- this.toolTipColorHoverShadow = '#8a00e5';
30
- this.rangeColor = 'rgba(255,255,255,0.99)';
31
- this.sliderColor = 'rgba(255,255,255,0.47)';
32
- this.sliderColorRight = 'rgb(198, 198, 198)';
33
- this.onValueChanged = new EventEmitter();
34
- this.destroyed$ = new Subject();
35
- }
36
- /**
37
- * It creates a form.
38
- */
39
- ngOnInit() {
40
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_createFrom).call(this);
41
- }
42
- /**
43
- * A lifecycle hook that is called after a component's view has been fully initialized.
44
- */
45
- ngAfterViewInit() {
46
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_fillSlider).call(this, 'fromSlider', 'toSlider');
47
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_setToggleAccessible).call(this);
48
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_disabledSlider).call(this, this.disabled);
49
- }
50
- /**
51
- * When the component is destroyed, we want to complete the observable and let any subscribers know that the observable is
52
- * complete.
53
- */
54
- ngOnDestroy() {
55
- this.destroyed$.next();
56
- this.destroyed$.complete();
57
- }
58
- /**
59
- * If the changes object has a property called disabled and it's not the first change and the current value is true, then
60
- * call the #disabledSlider function with the current value of the disabled property
61
- * @param {SimpleChanges} changes - SimpleChanges - this is the object that contains the changes that have been made to
62
- * the component.
63
- */
64
- ngOnChanges(changes) {
65
- if (changes && changes['disabled'] && !changes['disabled'].firstChange && changes['disabled'].currentValue) {
66
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_disabledSlider).call(this, changes['disabled'].currentValue);
67
- }
68
- if (changes &&
69
- changes['setMinValue'] &&
70
- !changes['setMinValue'].firstChange &&
71
- changes['setMinValue'].currentValue) {
72
- this.slider.patchValue({
73
- fromSlider: changes['setMinValue'].currentValue,
74
- });
75
- }
76
- if (changes &&
77
- changes['setMaxValue'] &&
78
- !changes['setMaxValue'].firstChange &&
79
- changes['setMaxValue'].currentValue) {
80
- this.slider.patchValue({
81
- toSlider: changes['setMaxValue'].currentValue,
82
- });
83
- }
84
- }
85
- /**
86
- * It's a function that takes a string as an argument and if the showToolTip property is true, it calls the
87
- * fromSliderToolTipPosition() or toSliderToolTipPosition() function depending on the value of the string argument
88
- * @param {string} slideType - string - This is the type of slider that is being moved. It can be either 'from' or 'to'.
89
- */
90
- fireEventOnInput(slideType) {
91
- if (this.showToolTip) {
92
- if (slideType === 'from') {
93
- this.fromSliderToolTipPosition();
94
- }
95
- if (slideType === 'to') {
96
- this.toSliderToolTipPosition();
97
- }
98
- }
99
- }
100
- /**
101
- * We're calculating the position of the tooltip based on the value of the slider
102
- */
103
- fromSliderToolTipPosition() {
104
- const val = this.slider.get('fromSlider')?.value;
105
- const min = this.min ? this.min : 0;
106
- const max = this.max ? this.max : 100;
107
- const newVal = Number(((val - min) * 100) / (max - min));
108
- this.fromSliderToolTip.nativeElement.style.left = `calc(${newVal}% + (${-6 - newVal * 0.4}px))`;
109
- }
110
- /**
111
- * The function takes the value of the toSlider and converts it to a percentage value that is used to position the
112
- * toSliderToolTip
113
- */
114
- /**
115
- * The function takes the value of the toSlider and converts it to a percentage value that is used to position the
116
- * toSliderToolTip
117
- */
118
- toSliderToolTipPosition() {
119
- const toSlider = this.slider.get('toSlider')?.value;
120
- const y = 0.8875 * toSlider + 3.985;
121
- this.toSliderToolTip.nativeElement.style.left = y + '%';
122
- }
123
- /**
124
- * We're getting the values of the two sliders, and then emitting an event with those values
125
- */
126
- fireEventOnChange() {
127
- const toSlider = this.slider.get('toSlider')?.value;
128
- const fromSlider = this.slider.get('fromSlider')?.value;
129
- const maxMin = {
130
- min: fromSlider,
131
- max: toSlider,
132
- };
133
- this.onValueChanged.emit(maxMin);
134
- }
135
- }
136
- _RmRangeSliderComponent_instances = new WeakSet(), _RmRangeSliderComponent_createFrom = function _RmRangeSliderComponent_createFrom() {
137
- this.slider = this.fb.group({
138
- fromSlider: [this.setMinValue, [Validators.required, Validators.max(this.max), Validators.min(this.min)]],
139
- toSlider: [this.setMaxValue, [Validators.required, Validators.max(this.max), Validators.min(this.min)]],
140
- });
141
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_onFormValueChange).call(this);
142
- }, _RmRangeSliderComponent_onFormValueChange = function _RmRangeSliderComponent_onFormValueChange() {
143
- this.slider.get('fromSlider')?.valueChanges.subscribe(() => {
144
- const fromSlider = this.slider.get('fromSlider')?.value;
145
- if (this.fromSliderToolTip) {
146
- this.fromSliderToolTip.nativeElement.innerHTML = `<span>${fromSlider}</span>`;
147
- }
148
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_controlFromSlider).call(this, 'fromSlider', 'toSlider');
149
- });
150
- this.slider.get('toSlider')?.valueChanges.subscribe(() => {
151
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_controlToSlider).call(this, 'fromSlider', 'toSlider');
152
- });
153
- }, _RmRangeSliderComponent_controlFromSlider = function _RmRangeSliderComponent_controlFromSlider(fromSlider, toSlider) {
154
- const [from, to] = __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_getParsed).call(this, 'fromSlider', 'toSlider');
155
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_fillSlider).call(this, fromSlider, toSlider);
156
- if (from > to) {
157
- this.slider.patchValue({
158
- fromSlider: to,
159
- });
160
- }
161
- }, _RmRangeSliderComponent_controlToSlider = function _RmRangeSliderComponent_controlToSlider(fromSlider, toSlider) {
162
- const [from, to] = __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_getParsed).call(this, 'fromSlider', 'toSlider');
163
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_fillSlider).call(this, fromSlider, toSlider);
164
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_setToggleAccessible).call(this);
165
- if (from <= to) {
166
- this.slider.patchValue({
167
- toSlider: to,
168
- });
169
- }
170
- else {
171
- /**
172
- * We're taking the values of the two inputs, calculating the percentage of the slider that should be filled, and then
173
- * setting the background of the slider to a gradient that fills the slider to the appropriate percentage
174
- * @param {string} fromC - string - the name of the form control for the left slider
175
- * @param {string} toC - string - the color of the slider
176
- */
177
- this.slider.patchValue({
178
- toSlider: from,
179
- });
180
- }
181
- }, _RmRangeSliderComponent_fillSlider = function _RmRangeSliderComponent_fillSlider(fromC, toC) {
182
- const from = __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_getFormValue).call(this, fromC);
183
- const to = __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_getFormValue).call(this, toC);
184
- const sliderColor = this.sliderColor;
185
- const rangeColor = this.rangeColor;
186
- const rangeDistance = this.max - this.min;
187
- const fromPosition = this.doubleSlider ? from - this.min : this.min;
188
- const toPosition = to - this.min;
189
- this.gradient = `linear-gradient(
190
- to right,
191
- ${sliderColor} 0%,
192
- ${sliderColor} ${(fromPosition / rangeDistance) * 100}%,
193
- ${rangeColor} ${(fromPosition / rangeDistance) * 100}%,
194
- /**
195
- * It returns the value of the form field that is passed in as a parameter
196
- * @param {string} FormField - The name of the form field you want to get the value of.
197
- * @returns The value of the form field.
198
- */
199
- ${rangeColor} ${(toPosition / rangeDistance) * 100}%,
200
- ${this.sliderColorRight} ${(toPosition / rangeDistance) * 100}%,
201
- ${this.sliderColorRight} 100%)`;
202
- this.renderer.setStyle(this.toSliders.nativeElement, 'background', this.gradient);
203
- }, _RmRangeSliderComponent_getFormValue = function _RmRangeSliderComponent_getFormValue(FormField) {
204
- return this.slider.get(FormField)?.value;
205
- }, _RmRangeSliderComponent_setToggleAccessible = function _RmRangeSliderComponent_setToggleAccessible() {
206
- const currentTarget = this.slider.get('toSlider')?.value;
207
- if (Number(currentTarget.value) <= 0) {
208
- this.renderer.setStyle(this.toSliders.nativeElement, 'zIndex', 2);
209
- }
210
- else {
211
- this.renderer.setStyle(this.toSliders.nativeElement, 'zIndex', 0);
212
- }
213
- }, _RmRangeSliderComponent_getParsed = function _RmRangeSliderComponent_getParsed(currentFrom, currentTo) {
214
- const from = parseInt(this.slider.get(currentFrom)?.value, 10);
215
- const to = parseInt(this.slider.get(currentTo)?.value, 10);
216
- return [from, to];
217
- }, _RmRangeSliderComponent_disabledSlider = function _RmRangeSliderComponent_disabledSlider(isDisabled) {
218
- interval(1)
219
- .pipe(takeUntil(this.destroyed$))
220
- .subscribe(() => {
221
- if (this.doubleSlider) {
222
- this.fromSlider.nativeElement.disabled = isDisabled;
223
- this.fromSliderToolTipPosition();
224
- }
225
- this.toSliders.nativeElement.disabled = isDisabled;
226
- this.toSliderToolTipPosition();
227
- __classPrivateFieldGet(this, _RmRangeSliderComponent_instances, "m", _RmRangeSliderComponent_changeThumbColorOnDisabled).call(this);
228
- });
229
- }, _RmRangeSliderComponent_changeThumbColorOnDisabled = function _RmRangeSliderComponent_changeThumbColorOnDisabled() {
230
- if (this.disabled) {
231
- this.toolTipColor = '#dddddd';
232
- this.toolTipColorHover = '#dddddd';
233
- this.toolTipColorHoverShadow = 'none';
234
- }
235
- if (this.fromSliderToolTip) {
236
- this.renderer.setStyle(this.fromSliderToolTip.nativeElement, 'background-color', this.toolTipColor);
237
- this.fromSliderToolTip.nativeElement.style.setProperty('--tooltip-arrow', this.toolTipColor);
238
- }
239
- if (this.toSliderToolTip) {
240
- this.renderer.setStyle(this.toSliderToolTip.nativeElement, 'background-color', this.toolTipColor);
241
- this.toSliderToolTip.nativeElement.style.setProperty('--tooltip-arrow', this.toolTipColor);
242
- }
243
- if (this.fromSlider) {
244
- this.fromSlider.nativeElement.style.setProperty('--slider-thumb-color', this.toolTipColor);
245
- this.fromSlider.nativeElement.style.setProperty('--slider-thumb-color-hover', this.toolTipColorHover);
246
- this.fromSlider.nativeElement.style.setProperty('--slider-thumb-color-hover-shadow', this.toolTipColorHoverShadow);
247
- }
248
- if (this.toSliders) {
249
- this.toSliders.nativeElement.style.setProperty('--slider-thumb-color', this.toolTipColor);
250
- this.toSliders.nativeElement.style.setProperty('--slider-thumb-color-hover', this.toolTipColorHover);
251
- this.toSliders.nativeElement.style.setProperty('--slider-thumb-color-hover-shadow', this.toolTipColorHoverShadow);
252
- }
253
- };
254
- RmRangeSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: RmRangeSliderComponent, deps: [{ token: i1.FormBuilder }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
255
- RmRangeSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.4", type: RmRangeSliderComponent, selector: "rm-range-slider", inputs: { min: ["SliderMinRange", "min"], max: ["SliderMaxRange", "max"], setMinValue: "setMinValue", disabled: "disabled", showToolTip: "showToolTip", setMaxValue: "setMaxValue", showScale: "showScale", doubleSlider: "doubleSlider", toolTipColor: "toolTipColor", toolTipColorHover: "toolTipColorHover", toolTipColorHoverShadow: "toolTipColorHoverShadow", rangeColor: "rangeColor", sliderColor: "sliderColor", sliderColorRight: "sliderColorRight" }, outputs: { onValueChanged: "onValueChanged" }, viewQueries: [{ propertyName: "toSliders", first: true, predicate: ["toSliders"], descendants: true }, { propertyName: "fromSlider", first: true, predicate: ["fromSlider"], descendants: true }, { propertyName: "toSliderToolTip", first: true, predicate: ["toSliderToolTip"], descendants: true, read: ElementRef }, { propertyName: "fromSliderToolTip", first: true, predicate: ["fromSliderToolTip"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"slider\" novalidate>\r\n\t<div class=\"range_container\">\r\n\t\t<div class=\"sliders_control\">\r\n\t\t\t<input\r\n\t\t\t\t#fromSlider\r\n\t\t\t\t(change)=\"fireEventOnChange()\"\r\n\t\t\t\t(input)=\"fireEventOnInput('from')\"\r\n\t\t\t\t*ngIf=\"doubleSlider\"\r\n\t\t\t\t[max]=\"max\"\r\n\t\t\t\t[min]=\"min\"\r\n\t\t\t\tclass=\"from-slider range\"\r\n\t\t\t\tformControlName=\"fromSlider\"\r\n\t\t\t\tid=\"fromSlider\"\r\n\t\t\t\tstep=\"1\"\r\n\t\t\t\ttype=\"range\"\r\n\t\t\t/>\r\n\r\n\t\t\t<ng-container *ngIf=\"showToolTip\">\r\n\t\t\t\t<div #fromSliderToolTip *ngIf=\"doubleSlider\" class=\"tooltip\" id=\"rangeFrom\">\r\n\t\t\t\t\t{{ slider.get('fromSlider')?.value }}\r\n\t\t\t\t</div>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<input\r\n\t\t\t\t#toSliders\r\n\t\t\t\t(change)=\"fireEventOnChange()\"\r\n\t\t\t\t(input)=\"fireEventOnInput('to')\"\r\n\t\t\t\t[max]=\"max\"\r\n\t\t\t\t[min]=\"min\"\r\n\t\t\t\tclass=\"toSlider range\"\r\n\t\t\t\tformControlName=\"toSlider\"\r\n\t\t\t\tid=\"toSlider\"\r\n\t\t\t\tstep=\"1\"\r\n\t\t\t\ttype=\"range\"\r\n\t\t\t/>\r\n\t\t\t<div #toSliderToolTip *ngIf=\"showToolTip\" class=\"toSliderTooltip\" id=\"rangeTo\">\r\n\t\t\t\t{{ slider.get('toSlider')?.value }}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n", styles: [".range_container{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.sliders_control{width:92%}.form_control{position:relative;display:flex}.range::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:18px;height:18px;background-color:var(--slider-thumb-color);border-radius:50%;cursor:pointer}.range::-moz-range-thumb{-webkit-appearance:none;pointer-events:all;width:18px;height:18px;background-color:var(--slider-thumb-color);border-radius:50%;cursor:pointer}.range::-webkit-slider-thumb:hover{background:var(--slider-thumb-color-hover);width:18px;height:18px;border-radius:50%;box-shadow:0 0 0 10px var(--slider-thumb-color-hover-shadow)}.range:disabled{pointer-events:none;cursor:not-allowed}.range{-webkit-appearance:none;appearance:none;height:5px;width:90%;position:absolute;pointer-events:none;border-radius:8px;margin-top:19px}#fromSlider{height:0;z-index:1}.from-slider{margin-top:50px}.tooltip{width:-moz-fit-content;width:fit-content;color:#fff;border-radius:6px;padding:5px;min-width:28px;text-align:center;position:relative}.toSliderTooltip{width:-moz-fit-content;width:fit-content;color:#fff;border-radius:6px;padding:5px;min-width:28px;text-align:center;align-items:end;right:5%;position:absolute;top:6px}.tooltip:after{top:28px;left:46.6%;border:solid transparent;content:\" \";position:absolute;border-top-color:var(--tooltip-arrow);border-width:10px;margin-left:-10px}.toSliderTooltip:after{top:28px;left:20.2px;border:solid transparent;content:\" \";position:absolute;border-top-color:var(--tooltip-arrow);border-width:10px;margin-left:-10px}.sliders_control:not(:has(.tooltip)) .from-slider{margin-top:22px}.sliders_control:not(:has(.tooltip)):has(.toSliderTooltip) .range{margin-top:43px}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: RmRangeSliderComponent, decorators: [{
257
- type: Component,
258
- args: [{ selector: 'rm-range-slider', template: "<form [formGroup]=\"slider\" novalidate>\r\n\t<div class=\"range_container\">\r\n\t\t<div class=\"sliders_control\">\r\n\t\t\t<input\r\n\t\t\t\t#fromSlider\r\n\t\t\t\t(change)=\"fireEventOnChange()\"\r\n\t\t\t\t(input)=\"fireEventOnInput('from')\"\r\n\t\t\t\t*ngIf=\"doubleSlider\"\r\n\t\t\t\t[max]=\"max\"\r\n\t\t\t\t[min]=\"min\"\r\n\t\t\t\tclass=\"from-slider range\"\r\n\t\t\t\tformControlName=\"fromSlider\"\r\n\t\t\t\tid=\"fromSlider\"\r\n\t\t\t\tstep=\"1\"\r\n\t\t\t\ttype=\"range\"\r\n\t\t\t/>\r\n\r\n\t\t\t<ng-container *ngIf=\"showToolTip\">\r\n\t\t\t\t<div #fromSliderToolTip *ngIf=\"doubleSlider\" class=\"tooltip\" id=\"rangeFrom\">\r\n\t\t\t\t\t{{ slider.get('fromSlider')?.value }}\r\n\t\t\t\t</div>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<input\r\n\t\t\t\t#toSliders\r\n\t\t\t\t(change)=\"fireEventOnChange()\"\r\n\t\t\t\t(input)=\"fireEventOnInput('to')\"\r\n\t\t\t\t[max]=\"max\"\r\n\t\t\t\t[min]=\"min\"\r\n\t\t\t\tclass=\"toSlider range\"\r\n\t\t\t\tformControlName=\"toSlider\"\r\n\t\t\t\tid=\"toSlider\"\r\n\t\t\t\tstep=\"1\"\r\n\t\t\t\ttype=\"range\"\r\n\t\t\t/>\r\n\t\t\t<div #toSliderToolTip *ngIf=\"showToolTip\" class=\"toSliderTooltip\" id=\"rangeTo\">\r\n\t\t\t\t{{ slider.get('toSlider')?.value }}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n", styles: [".range_container{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.sliders_control{width:92%}.form_control{position:relative;display:flex}.range::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:18px;height:18px;background-color:var(--slider-thumb-color);border-radius:50%;cursor:pointer}.range::-moz-range-thumb{-webkit-appearance:none;pointer-events:all;width:18px;height:18px;background-color:var(--slider-thumb-color);border-radius:50%;cursor:pointer}.range::-webkit-slider-thumb:hover{background:var(--slider-thumb-color-hover);width:18px;height:18px;border-radius:50%;box-shadow:0 0 0 10px var(--slider-thumb-color-hover-shadow)}.range:disabled{pointer-events:none;cursor:not-allowed}.range{-webkit-appearance:none;appearance:none;height:5px;width:90%;position:absolute;pointer-events:none;border-radius:8px;margin-top:19px}#fromSlider{height:0;z-index:1}.from-slider{margin-top:50px}.tooltip{width:-moz-fit-content;width:fit-content;color:#fff;border-radius:6px;padding:5px;min-width:28px;text-align:center;position:relative}.toSliderTooltip{width:-moz-fit-content;width:fit-content;color:#fff;border-radius:6px;padding:5px;min-width:28px;text-align:center;align-items:end;right:5%;position:absolute;top:6px}.tooltip:after{top:28px;left:46.6%;border:solid transparent;content:\" \";position:absolute;border-top-color:var(--tooltip-arrow);border-width:10px;margin-left:-10px}.toSliderTooltip:after{top:28px;left:20.2px;border:solid transparent;content:\" \";position:absolute;border-top-color:var(--tooltip-arrow);border-width:10px;margin-left:-10px}.sliders_control:not(:has(.tooltip)) .from-slider{margin-top:22px}.sliders_control:not(:has(.tooltip)):has(.toSliderTooltip) .range{margin-top:43px}\n"] }]
259
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.Renderer2 }]; }, propDecorators: { min: [{
260
- type: Input,
261
- args: ['SliderMinRange']
262
- }], max: [{
263
- type: Input,
264
- args: ['SliderMaxRange']
265
- }], setMinValue: [{
266
- type: Input,
267
- args: ['setMinValue']
268
- }], disabled: [{
269
- type: Input,
270
- args: ['disabled']
271
- }], showToolTip: [{
272
- type: Input,
273
- args: ['showToolTip']
274
- }], setMaxValue: [{
275
- type: Input,
276
- args: ['setMaxValue']
277
- }], showScale: [{
278
- type: Input,
279
- args: ['showScale']
280
- }], doubleSlider: [{
281
- type: Input,
282
- args: ['doubleSlider']
283
- }], toolTipColor: [{
284
- type: Input,
285
- args: ['toolTipColor']
286
- }], toolTipColorHover: [{
287
- type: Input,
288
- args: ['toolTipColorHover']
289
- }], toolTipColorHoverShadow: [{
290
- type: Input,
291
- args: ['toolTipColorHoverShadow']
292
- }], rangeColor: [{
293
- type: Input,
294
- args: ['rangeColor']
295
- }], sliderColor: [{
296
- type: Input,
297
- args: ['sliderColor']
298
- }], sliderColorRight: [{
299
- type: Input,
300
- args: ['sliderColorRight']
301
- }], onValueChanged: [{
302
- type: Output,
303
- args: ['onValueChanged']
304
- }], toSliders: [{
305
- type: ViewChild,
306
- args: ['toSliders', { static: false }]
307
- }], fromSlider: [{
308
- type: ViewChild,
309
- args: ['fromSlider', { static: false }]
310
- }], toSliderToolTip: [{
311
- type: ViewChild,
312
- args: ['toSliderToolTip', { read: ElementRef }]
313
- }], fromSliderToolTip: [{
314
- type: ViewChild,
315
- args: ['fromSliderToolTip', { read: ElementRef }]
316
- }] } });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm0tcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JtLXJhbmdlLXNsaWRlci9zcmMvbGliL3JtLXJhbmdlLXNsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ybS1yYW5nZS1zbGlkZXIvc3JjL2xpYi9ybS1yYW5nZS1zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7Ozs7QUFRbkQsTUFBTSxPQUFPLHNCQUFzQjtJQXdCbEM7Ozs7T0FJRztJQUNILFlBQTZCLEVBQWUsRUFBVSxRQUFtQjtRQUE1QyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVzs7UUEzQmhELFFBQUcsR0FBVyxDQUFDLENBQUE7UUFDZixRQUFHLEdBQVcsR0FBRyxDQUFBO1FBQ3BCLGdCQUFXLEdBQVcsQ0FBQyxDQUFBO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUE7UUFDdEIsZ0JBQVcsR0FBWSxLQUFLLENBQUE7UUFDNUIsZ0JBQVcsR0FBVyxHQUFHLENBQUE7UUFDM0IsY0FBUyxHQUFZLEtBQUssQ0FBQTtRQUN2QixpQkFBWSxHQUFZLElBQUksQ0FBQTtRQUM1QixpQkFBWSxHQUFXLFNBQVMsQ0FBQTtRQUMzQixzQkFBaUIsR0FBVyxTQUFTLENBQUE7UUFDL0IsNEJBQXVCLEdBQVcsU0FBUyxDQUFBO1FBQ3hELGVBQVUsR0FBVyx3QkFBd0IsQ0FBQTtRQUM1QyxnQkFBVyxHQUFXLHdCQUF3QixDQUFBO1FBQ3pDLHFCQUFnQixHQUFXLG9CQUFvQixDQUFBO1FBQ2hELG1CQUFjLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUE7UUFNM0UsZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFBO0lBT3FCLENBQUM7SUFFN0U7O09BRUc7SUFDSCxRQUFRO1FBQ1AsdUJBQUEsSUFBSSw2RUFBWSxNQUFoQixJQUFJLENBQWMsQ0FBQTtJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2QsdUJBQUEsSUFBSSw2RUFBWSxNQUFoQixJQUFJLEVBQWEsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzFDLHVCQUFBLElBQUksc0ZBQXFCLE1BQXpCLElBQUksQ0FBdUIsQ0FBQTtRQUMzQix1QkFBQSxJQUFJLGlGQUFnQixNQUFwQixJQUFJLEVBQWlCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsT0FBc0I7UUFDakMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQzNHLHVCQUFBLElBQUksaUZBQWdCLE1BQXBCLElBQUksRUFBaUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFBO1NBQ3REO1FBQ0QsSUFDQyxPQUFPO1lBQ1AsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUN0QixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXO1lBQ25DLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQ2xDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWTthQUMvQyxDQUFDLENBQUE7U0FDRjtRQUNELElBQ0MsT0FBTztZQUNQLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDdEIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVztZQUNuQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxFQUNsQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVk7YUFDN0MsQ0FBQyxDQUFBO1NBQ0Y7SUFDRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFNBQWlCO1FBQ2pDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO2FBQ2hDO1lBQ0QsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO2dCQUN2QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTthQUM5QjtTQUNEO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0gseUJBQXlCO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQTtRQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsTUFBTSxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQTtJQUNoRyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0g7OztPQUdHO0lBQ0gsdUJBQXVCO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQTtRQUNuRCxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUE7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQTtRQUNuRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLENBQUE7UUFDdkQsTUFBTSxNQUFNLEdBQUc7WUFDZCxHQUFHLEVBQUUsVUFBVTtZQUNmLEdBQUcsRUFBRSxRQUFRO1NBQ2IsQ0FBQTtRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pDLENBQUM7OztJQU1BLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDM0IsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ3ZHLENBQUMsQ0FBQTtJQUNGLHVCQUFBLElBQUksb0ZBQW1CLE1BQXZCLElBQUksQ0FBcUIsQ0FBQTtBQUMxQixDQUFDO0lBd0JBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQTtRQUN2RCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxTQUFTLFVBQVUsU0FBUyxDQUFBO1NBQzdFO1FBQ0QsdUJBQUEsSUFBSSxvRkFBbUIsTUFBdkIsSUFBSSxFQUFvQixZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDbEQsQ0FBQyxDQUFDLENBQUE7SUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4RCx1QkFBQSxJQUFJLGtGQUFpQixNQUFyQixJQUFJLEVBQWtCLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUNoRCxDQUFDLENBQUMsQ0FBQTtBQUNILENBQUMsaUdBUWtCLFVBQWtCLEVBQUUsUUFBZ0I7SUFDdEQsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyx1QkFBQSxJQUFJLDRFQUFXLE1BQWYsSUFBSSxFQUFZLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUM1RCx1QkFBQSxJQUFJLDZFQUFZLE1BQWhCLElBQUksRUFBYSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDdEIsVUFBVSxFQUFFLEVBQUU7U0FDZCxDQUFDLENBQUE7S0FDRjtBQUNGLENBQUMsNkZBUWdCLFVBQWtCLEVBQUUsUUFBZ0I7SUFDcEQsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyx1QkFBQSxJQUFJLDRFQUFXLE1BQWYsSUFBSSxFQUFZLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUM1RCx1QkFBQSxJQUFJLDZFQUFZLE1BQWhCLElBQUksRUFBYSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEMsdUJBQUEsSUFBSSxzRkFBcUIsTUFBekIsSUFBSSxDQUF1QixDQUFBO0lBQzNCLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFBO0tBQ0Y7U0FBTTtRQUNOOzs7OztXQUtHO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDdEIsUUFBUSxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUE7S0FDRjtBQUNGLENBQUMsbUZBT1csS0FBYSxFQUFFLEdBQVc7SUFDckMsTUFBTSxJQUFJLEdBQUcsdUJBQUEsSUFBSSwrRUFBYyxNQUFsQixJQUFJLEVBQWUsS0FBSyxDQUFDLENBQUE7SUFDdEMsTUFBTSxFQUFFLEdBQUcsdUJBQUEsSUFBSSwrRUFBYyxNQUFsQixJQUFJLEVBQWUsR0FBRyxDQUFDLENBQUE7SUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtJQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQTtJQUN6QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtJQUNuRSxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQTtJQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHOztNQUVaLFdBQVc7TUFDWCxXQUFXLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLEdBQUcsR0FBRztNQUNuRCxVQUFVLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLEdBQUcsR0FBRzs7Ozs7O01BTWxELFVBQVUsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHO01BQ2hELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHO01BQzNELElBQUksQ0FBQyxnQkFBZ0IsUUFBUSxDQUFBO0lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDbEYsQ0FBQyx1RkFPYSxTQUFpQjtJQUM5QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQTtBQUN6QyxDQUFDO0lBTUEsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFBO0lBQ3hELElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO0tBQ2pFO1NBQU07UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDakU7QUFDRixDQUFDLGlGQVFVLFdBQW1CLEVBQUUsU0FBaUI7SUFDaEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM5RCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzFELE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDbEIsQ0FBQywyRkFNZSxVQUFtQjtJQUNsQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFBO1lBQ25ELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQTtRQUNsRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtRQUM5Qix1QkFBQSxJQUFJLDZGQUE0QixNQUFoQyxJQUFJLENBQThCLENBQUE7SUFDbkMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0lBT0EsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFBO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUE7UUFDbEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQTtLQUNyQztJQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ25HLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7S0FDNUY7SUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ2pHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0tBQzFGO0lBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzFGLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDckcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDOUMsbUNBQW1DLEVBQ25DLElBQUksQ0FBQyx1QkFBdUIsQ0FDNUIsQ0FBQTtLQUNEO0lBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDcEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDN0MsbUNBQW1DLEVBQ25DLElBQUksQ0FBQyx1QkFBdUIsQ0FDNUIsQ0FBQTtLQUNEO0FBQ0YsQ0FBQzttSEExVlcsc0JBQXNCO3VHQUF0QixzQkFBc0IsMnpCQW1CSSxVQUFVLGlIQUNSLFVBQVUsa0RDekNuRCxxd0NBeUNBOzJGRHBCYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0MsaUJBQWlCOzBIQU1GLEdBQUc7c0JBQTNCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNFLEdBQUc7c0JBQTNCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNELFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDRCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ0ssV0FBVztzQkFBaEMsS0FBSzt1QkFBQyxhQUFhO2dCQUNFLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDQSxTQUFTO3NCQUE1QixLQUFLO3VCQUFDLFdBQVc7Z0JBQ0ssWUFBWTtzQkFBbEMsS0FBSzt1QkFBQyxjQUFjO2dCQUNFLFlBQVk7c0JBQWxDLEtBQUs7dUJBQUMsY0FBYztnQkFDTyxpQkFBaUI7c0JBQTVDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNRLHVCQUF1QjtzQkFBeEQsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBQ1gsVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUNHLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDTyxnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNDLGNBQWM7c0JBQXZDLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUNtQixTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0csVUFBVTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNVLGVBQWU7c0JBQWxFLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNJLGlCQUFpQjtzQkFBdEUsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBZnRlclZpZXdJbml0LFxuXHRDb21wb25lbnQsXG5cdEVsZW1lbnRSZWYsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE9uSW5pdCxcblx0T3V0cHV0LFxuXHRSZW5kZXJlcjIsXG5cdFNpbXBsZUNoYW5nZXMsXG5cdFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgTUlOTUFYIH0gZnJvbSAnLi9ybS1yYW5nZS1zbGlkZXIuY29tcG9uZW50LmludGVyZmFjZSdcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAncm0tcmFuZ2Utc2xpZGVyJyxcblx0dGVtcGxhdGVVcmw6ICcuL3JtLXJhbmdlLXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3JtLXJhbmdlLXNsaWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSbVJhbmdlU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblx0cHVibGljIHNsaWRlciE6IEZvcm1Hcm91cFxuXHRASW5wdXQoJ1NsaWRlck1pblJhbmdlJykgbWluOiBudW1iZXIgPSAwXG5cdEBJbnB1dCgnU2xpZGVyTWF4UmFuZ2UnKSBtYXg6IG51bWJlciA9IDEwMFxuXHRASW5wdXQoJ3NldE1pblZhbHVlJykgc2V0TWluVmFsdWU6IG51bWJlciA9IDBcblx0QElucHV0KCdkaXNhYmxlZCcpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2Vcblx0QElucHV0KCdzaG93VG9vbFRpcCcpIHNob3dUb29sVGlwOiBib29sZWFuID0gZmFsc2Vcblx0QElucHV0KCdzZXRNYXhWYWx1ZScpIHNldE1heFZhbHVlOiBudW1iZXIgPSAxMDBcblx0QElucHV0KCdzaG93U2NhbGUnKSBzaG93U2NhbGU6IGJvb2xlYW4gPSBmYWxzZVxuXHRASW5wdXQoJ2RvdWJsZVNsaWRlcicpIGRvdWJsZVNsaWRlcjogYm9vbGVhbiA9IHRydWVcblx0QElucHV0KCd0b29sVGlwQ29sb3InKSB0b29sVGlwQ29sb3I6IHN0cmluZyA9ICcjOGEwMGU1J1xuXHRASW5wdXQoJ3Rvb2xUaXBDb2xvckhvdmVyJykgdG9vbFRpcENvbG9ySG92ZXI6IHN0cmluZyA9ICcjOGEwMGU1J1xuXHRASW5wdXQoJ3Rvb2xUaXBDb2xvckhvdmVyU2hhZG93JykgdG9vbFRpcENvbG9ySG92ZXJTaGFkb3c6IHN0cmluZyA9ICcjOGEwMGU1J1xuXHRASW5wdXQoJ3JhbmdlQ29sb3InKSByYW5nZUNvbG9yOiBzdHJpbmcgPSAncmdiYSgyNTUsMjU1LDI1NSwwLjk5KSdcblx0QElucHV0KCdzbGlkZXJDb2xvcicpIHNsaWRlckNvbG9yOiBzdHJpbmcgPSAncmdiYSgyNTUsMjU1LDI1NSwwLjQ3KSdcblx0QElucHV0KCdzbGlkZXJDb2xvclJpZ2h0Jykgc2xpZGVyQ29sb3JSaWdodDogc3RyaW5nID0gJ3JnYigxOTgsIDE5OCwgMTk4KSdcblx0QE91dHB1dCgnb25WYWx1ZUNoYW5nZWQnKSBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPE1JTk1BWD4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblx0QFZpZXdDaGlsZCgndG9TbGlkZXJzJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRvU2xpZGVycyE6IEVsZW1lbnRSZWZcblx0QFZpZXdDaGlsZCgnZnJvbVNsaWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBmcm9tU2xpZGVyITogRWxlbWVudFJlZlxuXHRAVmlld0NoaWxkKCd0b1NsaWRlclRvb2xUaXAnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgdG9TbGlkZXJUb29sVGlwITogRWxlbWVudFJlZlxuXHRAVmlld0NoaWxkKCdmcm9tU2xpZGVyVG9vbFRpcCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmcm9tU2xpZGVyVG9vbFRpcCE6IEVsZW1lbnRSZWZcblx0cHJpdmF0ZSBncmFkaWVudCE6IHN0cmluZ1xuXHRwcml2YXRlIGRlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cblx0LyoqXG5cdCAqIFRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBpcyBhIHNwZWNpYWwgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgaXMgY3JlYXRlZFxuXHQgKiBAcGFyYW0ge0Zvcm1CdWlsZGVyfSBmYiAtIEZvcm1CdWlsZGVyIC0gVGhpcyBpcyB0aGUgRm9ybUJ1aWxkZXIgc2VydmljZSB0aGF0IHdlJ2xsIHVzZSB0byBjcmVhdGUgb3VyIGZvcm0uXG5cdCAqIEBwYXJhbSB7UmVuZGVyZXIyfSByZW5kZXJlciAtIFJlbmRlcmVyMiAtIFRoaXMgaXMgdGhlIEFuZ3VsYXIgUmVuZGVyZXIyIHNlcnZpY2UuIEl0J3MgdXNlZCB0byBtYW5pcHVsYXRlIHRoZSBET00uXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG5cdC8qKlxuXHQgKiBJdCBjcmVhdGVzIGEgZm9ybS5cblx0ICovXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuI2NyZWF0ZUZyb20oKVxuXHR9XG5cblx0LyoqXG5cdCAqIEEgbGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxuXHQgKi9cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMuI2ZpbGxTbGlkZXIoJ2Zyb21TbGlkZXInLCAndG9TbGlkZXInKVxuXHRcdHRoaXMuI3NldFRvZ2dsZUFjY2Vzc2libGUoKVxuXHRcdHRoaXMuI2Rpc2FibGVkU2xpZGVyKHRoaXMuZGlzYWJsZWQpXG5cdH1cblxuXHQvKipcblx0ICogV2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCwgd2Ugd2FudCB0byBjb21wbGV0ZSB0aGUgb2JzZXJ2YWJsZSBhbmQgbGV0IGFueSBzdWJzY3JpYmVycyBrbm93IHRoYXQgdGhlIG9ic2VydmFibGUgaXNcblx0ICogY29tcGxldGUuXG5cdCAqL1xuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLmRlc3Ryb3llZCQubmV4dCgpXG5cdFx0dGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKClcblx0fVxuXG5cdC8qKlxuXHQgKiBJZiB0aGUgY2hhbmdlcyBvYmplY3QgaGFzIGEgcHJvcGVydHkgY2FsbGVkIGRpc2FibGVkIGFuZCBpdCdzIG5vdCB0aGUgZmlyc3QgY2hhbmdlIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBpcyB0cnVlLCB0aGVuXG5cdCAqIGNhbGwgdGhlICNkaXNhYmxlZFNsaWRlciBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0ge1NpbXBsZUNoYW5nZXN9IGNoYW5nZXMgLSBTaW1wbGVDaGFuZ2VzIC0gdGhpcyBpcyB0aGUgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gbWFkZSB0b1xuXHQgKiB0aGUgY29tcG9uZW50LlxuXHQgKi9cblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ2Rpc2FibGVkJ10gJiYgIWNoYW5nZXNbJ2Rpc2FibGVkJ10uZmlyc3RDaGFuZ2UgJiYgY2hhbmdlc1snZGlzYWJsZWQnXS5jdXJyZW50VmFsdWUpIHtcblx0XHRcdHRoaXMuI2Rpc2FibGVkU2xpZGVyKGNoYW5nZXNbJ2Rpc2FibGVkJ10uY3VycmVudFZhbHVlKVxuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRjaGFuZ2VzICYmXG5cdFx0XHRjaGFuZ2VzWydzZXRNaW5WYWx1ZSddICYmXG5cdFx0XHQhY2hhbmdlc1snc2V0TWluVmFsdWUnXS5maXJzdENoYW5nZSAmJlxuXHRcdFx0Y2hhbmdlc1snc2V0TWluVmFsdWUnXS5jdXJyZW50VmFsdWVcblx0XHQpIHtcblx0XHRcdHRoaXMuc2xpZGVyLnBhdGNoVmFsdWUoe1xuXHRcdFx0XHRmcm9tU2xpZGVyOiBjaGFuZ2VzWydzZXRNaW5WYWx1ZSddLmN1cnJlbnRWYWx1ZSxcblx0XHRcdH0pXG5cdFx0fVxuXHRcdGlmIChcblx0XHRcdGNoYW5nZXMgJiZcblx0XHRcdGNoYW5nZXNbJ3NldE1heFZhbHVlJ10gJiZcblx0XHRcdCFjaGFuZ2VzWydzZXRNYXhWYWx1ZSddLmZpcnN0Q2hhbmdlICYmXG5cdFx0XHRjaGFuZ2VzWydzZXRNYXhWYWx1ZSddLmN1cnJlbnRWYWx1ZVxuXHRcdCkge1xuXHRcdFx0dGhpcy5zbGlkZXIucGF0Y2hWYWx1ZSh7XG5cdFx0XHRcdHRvU2xpZGVyOiBjaGFuZ2VzWydzZXRNYXhWYWx1ZSddLmN1cnJlbnRWYWx1ZSxcblx0XHRcdH0pXG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEl0J3MgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgc3RyaW5nIGFzIGFuIGFyZ3VtZW50IGFuZCBpZiB0aGUgc2hvd1Rvb2xUaXAgcHJvcGVydHkgaXMgdHJ1ZSwgaXQgY2FsbHMgdGhlXG5cdCAqIGZyb21TbGlkZXJUb29sVGlwUG9zaXRpb24oKSBvciB0b1NsaWRlclRvb2xUaXBQb3NpdGlvbigpIGZ1bmN0aW9uIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgdGhlIHN0cmluZyBhcmd1bWVudFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc2xpZGVUeXBlIC0gc3RyaW5nIC0gVGhpcyBpcyB0aGUgdHlwZSBvZiBzbGlkZXIgdGhhdCBpcyBiZWluZyBtb3ZlZC4gSXQgY2FuIGJlIGVpdGhlciAnZnJvbScgb3IgJ3RvJy5cblx0ICovXG5cdGZpcmVFdmVudE9uSW5wdXQoc2xpZGVUeXBlOiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5zaG93VG9vbFRpcCkge1xuXHRcdFx0aWYgKHNsaWRlVHlwZSA9PT0gJ2Zyb20nKSB7XG5cdFx0XHRcdHRoaXMuZnJvbVNsaWRlclRvb2xUaXBQb3NpdGlvbigpXG5cdFx0XHR9XG5cdFx0XHRpZiAoc2xpZGVUeXBlID09PSAndG8nKSB7XG5cdFx0XHRcdHRoaXMudG9TbGlkZXJUb29sVGlwUG9zaXRpb24oKVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBXZSdyZSBjYWxjdWxhdGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZSBzbGlkZXJcblx0ICovXG5cdGZyb21TbGlkZXJUb29sVGlwUG9zaXRpb24oKSB7XG5cdFx0Y29uc3QgdmFsID0gdGhpcy5zbGlkZXIuZ2V0KCdmcm9tU2xpZGVyJyk/LnZhbHVlXG5cdFx0Y29uc3QgbWluID0gdGhpcy5taW4gPyB0aGlzLm1pbiA6IDBcblx0XHRjb25zdCBtYXggPSB0aGlzLm1heCA/IHRoaXMubWF4IDogMTAwXG5cdFx0Y29uc3QgbmV3VmFsID0gTnVtYmVyKCgodmFsIC0gbWluKSAqIDEwMCkgLyAobWF4IC0gbWluKSlcblx0XHR0aGlzLmZyb21TbGlkZXJUb29sVGlwLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGBjYWxjKCR7bmV3VmFsfSUgKyAoJHstNiAtIG5ld1ZhbCAqIDAuNH1weCkpYFxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiB0YWtlcyB0aGUgdmFsdWUgb2YgdGhlIHRvU2xpZGVyIGFuZCBjb252ZXJ0cyBpdCB0byBhIHBlcmNlbnRhZ2UgdmFsdWUgdGhhdCBpcyB1c2VkIHRvIHBvc2l0aW9uIHRoZVxuXHQgKiB0b1NsaWRlclRvb2xUaXBcblx0ICovXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIHZhbHVlIG9mIHRoZSB0b1NsaWRlciBhbmQgY29udmVydHMgaXQgdG8gYSBwZXJjZW50YWdlIHZhbHVlIHRoYXQgaXMgdXNlZCB0byBwb3NpdGlvbiB0aGVcblx0ICogdG9TbGlkZXJUb29sVGlwXG5cdCAqL1xuXHR0b1NsaWRlclRvb2xUaXBQb3NpdGlvbigpIHtcblx0XHRjb25zdCB0b1NsaWRlciA9IHRoaXMuc2xpZGVyLmdldCgndG9TbGlkZXInKT8udmFsdWVcblx0XHRjb25zdCB5ID0gMC44ODc1ICogdG9TbGlkZXIgKyAzLjk4NVxuXHRcdHRoaXMudG9TbGlkZXJUb29sVGlwLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IHkgKyAnJSdcblx0fVxuXG5cdC8qKlxuXHQgKiBXZSdyZSBnZXR0aW5nIHRoZSB2YWx1ZXMgb2YgdGhlIHR3byBzbGlkZXJzLCBhbmQgdGhlbiBlbWl0dGluZyBhbiBldmVudCB3aXRoIHRob3NlIHZhbHVlc1xuXHQgKi9cblx0ZmlyZUV2ZW50T25DaGFuZ2UoKSB7XG5cdFx0Y29uc3QgdG9TbGlkZXIgPSB0aGlzLnNsaWRlci5nZXQoJ3RvU2xpZGVyJyk/LnZhbHVlXG5cdFx0Y29uc3QgZnJvbVNsaWRlciA9IHRoaXMuc2xpZGVyLmdldCgnZnJvbVNsaWRlcicpPy52YWx1ZVxuXHRcdGNvbnN0IG1heE1pbiA9IHtcblx0XHRcdG1pbjogZnJvbVNsaWRlcixcblx0XHRcdG1heDogdG9TbGlkZXIsXG5cdFx0fVxuXHRcdHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdChtYXhNaW4pXG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZ1bmN0aW9uIGNyZWF0ZXMgYSBmb3JtIGdyb3VwIHdpdGggdHdvIGZvcm0gY29udHJvbHMsIG9uZSBmb3IgdGhlIG1pbmltdW0gdmFsdWUgYW5kIG9uZSBmb3IgdGhlIG1heGltdW0gdmFsdWVcblx0ICovXG5cdCNjcmVhdGVGcm9tKCkge1xuXHRcdHRoaXMuc2xpZGVyID0gdGhpcy5mYi5ncm91cCh7XG5cdFx0XHRmcm9tU2xpZGVyOiBbdGhpcy5zZXRNaW5WYWx1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4KSwgVmFsaWRhdG9ycy5taW4odGhpcy5taW4pXV0sXG5cdFx0XHR0b1NsaWRlcjogW3RoaXMuc2V0TWF4VmFsdWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heCh0aGlzLm1heCksIFZhbGlkYXRvcnMubWluKHRoaXMubWluKV1dLFxuXHRcdH0pXG5cdFx0dGhpcy4jb25Gb3JtVmFsdWVDaGFuZ2UoKVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiBzdWJzY3JpYmVzIHRvIHRoZSB2YWx1ZUNoYW5nZXMgb2YgdGhlIGZyb21TbGlkZXIgYW5kIHRvU2xpZGVyLlxuXHQgKlxuXHQgKiBUaGUgZnJvbVNsaWRlciBpcyB0aGUgc2xpZGVyIG9uIHRoZSBsZWZ0IGFuZCB0aGUgdG9TbGlkZXIgaXMgdGhlIHNsaWRlciBvbiB0aGUgcmlnaHQuXG5cdCAqXG5cdCAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgb25Gb3JtVmFsdWVDaGFuZ2UoKSBiZWNhdXNlIGl0IGlzIGNhbGxlZCBpbiB0aGUgbmdPbkluaXQoKSBmdW5jdGlvbi5cblx0ICpcblx0ICogVGhlIG5nT25Jbml0KCkgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cblx0ICpcblx0ICogVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbkZvcm1WYWx1ZUNoYW5nZSgpIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGluIHRoZSBuZ09uSW5pdCgpIGZ1bmN0aW9uLlxuXHQgKlxuXHQgKiBUaGUgbmdPbkluaXQoKSBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkLlxuXHQgKlxuXHQgKiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIG9uRm9ybVZhbHVlQ2hhbmdlKCkgYmVjYXVzZSBpdCBpcyBjYWxsZWQgaW4gdGhlIG5nT25Jbml0KCkgZnVuY3Rpb24uXG5cdCAqXG5cdCAqIFRoZSBuZ09uSW5pdCgpIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQuXG5cdCAqXG5cdCAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgb25Gb3JtVmFsdWVDaGFuZ2UoKSBiZWNhdXNlIGl0IGlzIGNhbGxlZCBpbiB0aGUgbmdPbkluaXQoKSBmdW5jdGlvbi5cblx0ICpcblx0ICogVGhlIG5nT25Jbml0XG5cdCAqL1xuXHQjb25Gb3JtVmFsdWVDaGFuZ2UoKSB7XG5cdFx0dGhpcy5zbGlkZXIuZ2V0KCdmcm9tU2xpZGVyJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZnJvbVNsaWRlciA9IHRoaXMuc2xpZGVyLmdldCgnZnJvbVNsaWRlcicpPy52YWx1ZVxuXHRcdFx0aWYgKHRoaXMuZnJvbVNsaWRlclRvb2xUaXApIHtcblx0XHRcdFx0dGhpcy5mcm9tU2xpZGVyVG9vbFRpcC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGA8c3Bhbj4ke2Zyb21TbGlkZXJ9PC9zcGFuPmBcblx0XHRcdH1cblx0XHRcdHRoaXMuI2NvbnRyb2xGcm9tU2xpZGVyKCdmcm9tU2xpZGVyJywgJ3RvU2xpZGVyJylcblx0XHR9KVxuXHRcdHRoaXMuc2xpZGVyLmdldCgndG9TbGlkZXInKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLiNjb250cm9sVG9TbGlkZXIoJ2Zyb21TbGlkZXInLCAndG9TbGlkZXInKVxuXHRcdH0pXG5cdH1cblxuXHQvKipcblx0ICogSWYgdGhlIHZhbHVlIG9mIHRoZSBmcm9tU2xpZGVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YgdGhlIHRvU2xpZGVyLCB0aGVuIHRoZSB2YWx1ZSBvZiB0aGUgZnJvbVNsaWRlciBpcyBzZXQgdG9cblx0ICogdGhlIHZhbHVlIG9mIHRoZSB0b1NsaWRlclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZnJvbVNsaWRlciAtIHRoZSBuYW1lIG9mIHRoZSBmcm9tIHNsaWRlclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdG9TbGlkZXIgLSBzdHJpbmcgLSB0aGUgbmFtZSBvZiB0aGUgdG9TbGlkZXIgY29udHJvbFxuXHQgKi9cblx0I2NvbnRyb2xGcm9tU2xpZGVyKGZyb21TbGlkZXI6IHN0cmluZywgdG9TbGlkZXI6IHN0cmluZykge1xuXHRcdGNvbnN0IFtmcm9tLCB0b10gPSB0aGlzLiNnZXRQYXJzZWQoJ2Zyb21TbGlkZXInLCAndG9TbGlkZXInKVxuXHRcdHRoaXMuI2ZpbGxTbGlkZXIoZnJvbVNsaWRlciwgdG9TbGlkZXIpXG5cdFx0aWYgKGZyb20gPiB0bykge1xuXHRcdFx0dGhpcy5zbGlkZXIucGF0Y2hWYWx1ZSh7XG5cdFx0XHRcdGZyb21TbGlkZXI6IHRvLFxuXHRcdFx0fSlcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogPiBJZiB0aGUgdmFsdWUgb2YgdGhlIGBmcm9tU2xpZGVyYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIHRoZSBgdG9TbGlkZXJgLCB0aGVuIHNldCB0aGUgdmFsdWUgb2YgdGhlXG5cdCAqIGB0b1NsaWRlcmAgdG8gdGhlIHZhbHVlIG9mIHRoZSBgdG9TbGlkZXJgLiBPdGhlcndpc2UsIHNldCB0aGUgdmFsdWUgb2YgdGhlIGB0b1NsaWRlcmAgdG8gdGhlIHZhbHVlIG9mIHRoZSBgZnJvbVNsaWRlcmBcblx0ICogQHBhcmFtIHtzdHJpbmd9IGZyb21TbGlkZXIgLSBUaGUgbmFtZSBvZiB0aGUgc2xpZGVyIHRoYXQgaXMgYmVpbmcgY2hhbmdlZC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHRvU2xpZGVyIC0gVGhlIG5hbWUgb2YgdGhlIHNsaWRlciB0aGF0IGlzIGJlaW5nIGNoYW5nZWQuXG5cdCAqL1xuXHQjY29udHJvbFRvU2xpZGVyKGZyb21TbGlkZXI6IHN0cmluZywgdG9TbGlkZXI6IHN0cmluZykge1xuXHRcdGNvbnN0IFtmcm9tLCB0b10gPSB0aGlzLiNnZXRQYXJzZWQoJ2Zyb21TbGlkZXInLCAndG9TbGlkZXInKVxuXHRcdHRoaXMuI2ZpbGxTbGlkZXIoZnJvbVNsaWRlciwgdG9TbGlkZXIpXG5cdFx0dGhpcy4jc2V0VG9nZ2xlQWNjZXNzaWJsZSgpXG5cdFx0aWYgKGZyb20gPD0gdG8pIHtcblx0XHRcdHRoaXMuc2xpZGVyLnBhdGNoVmFsdWUoe1xuXHRcdFx0XHR0b1NsaWRlcjogdG8sXG5cdFx0XHR9KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvKipcblx0XHRcdCAqIFdlJ3JlIHRha2luZyB0aGUgdmFsdWVzIG9mIHRoZSB0d28gaW5wdXRzLCBjYWxjdWxhdGluZyB0aGUgcGVyY2VudGFnZSBvZiB0aGUgc2xpZGVyIHRoYXQgc2hvdWxkIGJlIGZpbGxlZCwgYW5kIHRoZW5cblx0XHRcdCAqIHNldHRpbmcgdGhlIGJhY2tncm91bmQgb2YgdGhlIHNsaWRlciB0byBhIGdyYWRpZW50IHRoYXQgZmlsbHMgdGhlIHNsaWRlciB0byB0aGUgYXBwcm9wcmlhdGUgcGVyY2VudGFnZVxuXHRcdFx0ICogQHBhcmFtIHtzdHJpbmd9IGZyb21DIC0gc3RyaW5nIC0gdGhlIG5hbWUgb2YgdGhlIGZvcm0gY29udHJvbCBmb3IgdGhlIGxlZnQgc2xpZGVyXG5cdFx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdG9DIC0gc3RyaW5nIC0gdGhlIGNvbG9yIG9mIHRoZSBzbGlkZXJcblx0XHRcdCAqL1xuXHRcdFx0dGhpcy5zbGlkZXIucGF0Y2hWYWx1ZSh7XG5cdFx0XHRcdHRvU2xpZGVyOiBmcm9tLFxuXHRcdFx0fSlcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSXQgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gZmllbGQgdGhhdCBpcyBwYXNzZWQgaW4gYXMgYSBwYXJhbWV0ZXJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGZyb21DIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQgdGhhdCBjb250YWlucyB0aGUgdmFsdWUgb2YgdGhlIGxlZnQgc2xpZGVyLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdG9DIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQgdGhhdCBjb250YWlucyB0aGUgdmFsdWUgb2YgdGhlIHJpZ2h0IHNsaWRlci5cblx0ICovXG5cdCNmaWxsU2xpZGVyKGZyb21DOiBzdHJpbmcsIHRvQzogc3RyaW5nKSB7XG5cdFx0Y29uc3QgZnJvbSA9IHRoaXMuI2dldEZvcm1WYWx1ZShmcm9tQylcblx0XHRjb25zdCB0byA9IHRoaXMuI2dldEZvcm1WYWx1ZSh0b0MpXG5cdFx0Y29uc3Qgc2xpZGVyQ29sb3IgPSB0aGlzLnNsaWRlckNvbG9yXG5cdFx0Y29uc3QgcmFuZ2VDb2xvciA9IHRoaXMucmFuZ2VDb2xvclxuXHRcdGNvbnN0IHJhbmdlRGlzdGFuY2UgPSB0aGlzLm1heCAtIHRoaXMubWluXG5cdFx0Y29uc3QgZnJvbVBvc2l0aW9uID0gdGhpcy5kb3VibGVTbGlkZXIgPyBmcm9tIC0gdGhpcy5taW4gOiB0aGlzLm1pblxuXHRcdGNvbnN0IHRvUG9zaXRpb24gPSB0byAtIHRoaXMubWluXG5cdFx0dGhpcy5ncmFkaWVudCA9IGBsaW5lYXItZ3JhZGllbnQoXG4gICAgdG8gcmlnaHQsXG4gICAgJHtzbGlkZXJDb2xvcn0gMCUsXG4gICAgJHtzbGlkZXJDb2xvcn0gJHsoZnJvbVBvc2l0aW9uIC8gcmFuZ2VEaXN0YW5jZSkgKiAxMDB9JSxcbiAgICAke3JhbmdlQ29sb3J9ICR7KGZyb21Qb3NpdGlvbiAvIHJhbmdlRGlzdGFuY2UpICogMTAwfSUsXG4gLyoqXG5cdCAqIEl0IHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGZpZWxkIHRoYXQgaXMgcGFzc2VkIGluIGFzIGEgcGFyYW1ldGVyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBGb3JtRmllbGQgLSBUaGUgbmFtZSBvZiB0aGUgZm9ybSBmaWVsZCB5b3Ugd2FudCB0byBnZXQgdGhlIHZhbHVlIG9mLlxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGZvcm0gZmllbGQuXG5cdCAqL1xuXHQgICAke3JhbmdlQ29sb3J9ICR7KHRvUG9zaXRpb24gLyByYW5nZURpc3RhbmNlKSAqIDEwMH0lLFxuICAgICR7dGhpcy5zbGlkZXJDb2xvclJpZ2h0fSAkeyh0b1Bvc2l0aW9uIC8gcmFuZ2VEaXN0YW5jZSkgKiAxMDB9JSxcbiAgICAke3RoaXMuc2xpZGVyQ29sb3JSaWdodH0gMTAwJSlgXG5cdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvU2xpZGVycy5uYXRpdmVFbGVtZW50LCAnYmFja2dyb3VuZCcsIHRoaXMuZ3JhZGllbnQpXG5cdH1cblxuXHQvKipcblx0ICogSXQgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gZmllbGQgdGhhdCBpcyBwYXNzZWQgaW4gYXMgYSBwYXJhbWV0ZXJcblx0ICogQHBhcmFtIHtzdHJpbmd9IEZvcm1GaWVsZCAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkIHlvdSB3YW50IHRvIGdldCB0aGUgdmFsdWUgb2YuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBmaWVsZC5cblx0ICovXG5cdCNnZXRGb3JtVmFsdWUoRm9ybUZpZWxkOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5zbGlkZXIuZ2V0KEZvcm1GaWVsZCk/LnZhbHVlXG5cdH1cblxuXHQvKipcblx0ICogSWYgdGhlIHZhbHVlIG9mIHRoZSBzbGlkZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDAsIHRoZW4gc2V0IHRoZSB6LWluZGV4IG9mIHRoZSBzbGlkZXIgdG8gMiwgb3RoZXJ3aXNlIHNldCBpdCB0byAwXG5cdCAqL1xuXHQjc2V0VG9nZ2xlQWNjZXNzaWJsZSgpIHtcblx0XHRjb25zdCBjdXJyZW50VGFyZ2V0ID0gdGhpcy5zbGlkZXIuZ2V0KCd0b1NsaWRlcicpPy52YWx1ZVxuXHRcdGlmIChOdW1iZXIoY3VycmVudFRhcmdldC52YWx1ZSkgPD0gMCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvU2xpZGVycy5uYXRpdmVFbGVtZW50LCAnekluZGV4JywgMilcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvU2xpZGVycy5uYXRpdmVFbGVtZW50LCAnekluZGV4JywgMClcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSXQgdGFrZXMgdHdvIHN0cmluZ3MsIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBudW1iZXJzXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50RnJvbSAtIHN0cmluZyAtIFRoZSBuYW1lIG9mIHRoZSBpbnB1dCB0aGF0IGhvbGRzIHRoZSBcImZyb21cIiB2YWx1ZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudFRvIC0gc3RyaW5nIC0gdGhlIG5hbWUgb2YgdGhlIGlucHV0IHRoYXQgaG9sZHMgdGhlIHZhbHVlIG9mIHRoZSByaWdodCBzbGlkZXJcblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgdHdvIG51bWJlcnMuXG5cdCAqL1xuXHQjZ2V0UGFyc2VkKGN1cnJlbnRGcm9tOiBzdHJpbmcsIGN1cnJlbnRUbzogc3RyaW5nKTogYW55IHtcblx0XHRjb25zdCBmcm9tID0gcGFyc2VJbnQodGhpcy5zbGlkZXIuZ2V0KGN1cnJlbnRGcm9tKT8udmFsdWUsIDEwKVxuXHRcdGNvbnN0IHRvID0gcGFyc2VJbnQodGhpcy5zbGlkZXIuZ2V0KGN1cnJlbnRUbyk/LnZhbHVlLCAxMClcblx0XHRyZXR1cm4gW2Zyb20sIHRvXVxuXHR9XG5cblx0LyoqXG5cdCAqIEl0IGRpc2FibGVzIHRoZSBzbGlkZXIgYW5kIGNoYW5nZXMgdGhlIGNvbG9yIG9mIHRoZSB0aHVtYiB0byBncmF5XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEaXNhYmxlZCAtIGJvb2xlYW4gLSB0cnVlIGlmIHRoZSBzbGlkZXIgaXMgZGlzYWJsZWQsIGZhbHNlIGlmIGl0J3MgZW5hYmxlZFxuXHQgKi9cblx0I2Rpc2FibGVkU2xpZGVyKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpbnRlcnZhbCgxKVxuXHRcdFx0LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuZG91YmxlU2xpZGVyKSB7XG5cdFx0XHRcdFx0dGhpcy5mcm9tU2xpZGVyLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG5cdFx0XHRcdFx0dGhpcy5mcm9tU2xpZGVyVG9vbFRpcFBvc2l0aW9uKClcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnRvU2xpZGVycy5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gaXNEaXNhYmxlZFxuXHRcdFx0XHR0aGlzLnRvU2xpZGVyVG9vbFRpcFBvc2l0aW9uKClcblx0XHRcdFx0dGhpcy4jY2hhbmdlVGh1bWJDb2xvck9uRGlzYWJsZWQoKVxuXHRcdFx0fSlcblx0fVxuXG5cdC8qKlxuXHQgKiBJZiB0aGUgc2xpZGVyIGlzIGRpc2FibGVkLCBzZXQgdGhlIHRvb2x0aXAgY29sb3IgdG8gI2RkZGRkZCBhbmQgdGhlIHRvb2x0aXAgaG92ZXIgY29sb3IgdG8gI2RkZGRkZCBhbmQgdGhlIHRvb2x0aXBcblx0ICogaG92ZXIgc2hhZG93IHRvIG5vbmVcblx0ICovXG5cdCNjaGFuZ2VUaHVtYkNvbG9yT25EaXNhYmxlZCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5kaXNhYmxlZCkge1xuXHRcdFx0dGhpcy50b29sVGlwQ29sb3IgPSAnI2RkZGRkZCdcblx0XHRcdHRoaXMudG9vbFRpcENvbG9ySG92ZXIgPSAnI2RkZGRkZCdcblx0XHRcdHRoaXMudG9vbFRpcENvbG9ySG92ZXJTaGFkb3cgPSAnbm9uZSdcblx0XHR9XG5cblx0XHRpZiAodGhpcy5mcm9tU2xpZGVyVG9vbFRpcCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZyb21TbGlkZXJUb29sVGlwLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWNvbG9yJywgdGhpcy50b29sVGlwQ29sb3IpXG5cdFx0XHR0aGlzLmZyb21TbGlkZXJUb29sVGlwLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdG9vbHRpcC1hcnJvdycsIHRoaXMudG9vbFRpcENvbG9yKVxuXHRcdH1cblx0XHRpZiAodGhpcy50b1NsaWRlclRvb2xUaXApIHtcblx0XHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b1NsaWRlclRvb2xUaXAubmF0aXZlRWxlbWVudCwgJ2JhY2tncm91bmQtY29sb3InLCB0aGlzLnRvb2xUaXBDb2xvcilcblx0XHRcdHRoaXMudG9TbGlkZXJUb29sVGlwLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdG9vbHRpcC1hcnJvdycsIHRoaXMudG9vbFRpcENvbG9yKVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmZyb21TbGlkZXIpIHtcblx0XHRcdHRoaXMuZnJvbVNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXNsaWRlci10aHVtYi1jb2xvcicsIHRoaXMudG9vbFRpcENvbG9yKVxuXHRcdFx0dGhpcy5mcm9tU2xpZGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2xpZGVyLXRodW1iLWNvbG9yLWhvdmVyJywgdGhpcy50b29sVGlwQ29sb3JIb3Zlcilcblx0XHRcdHRoaXMuZnJvbVNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuXHRcdFx0XHQnLS1zbGlkZXItdGh1bWItY29sb3ItaG92ZXItc2hhZG93Jyxcblx0XHRcdFx0dGhpcy50b29sVGlwQ29sb3JIb3ZlclNoYWRvdyxcblx0XHRcdClcblx0XHR9XG5cdFx0aWYgKHRoaXMudG9TbGlkZXJzKSB7XG5cdFx0XHR0aGlzLnRvU2xpZGVycy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXNsaWRlci10aHVtYi1jb2xvcicsIHRoaXMudG9vbFRpcENvbG9yKVxuXHRcdFx0dGhpcy50b1NsaWRlcnMubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zbGlkZXItdGh1bWItY29sb3ItaG92ZXInLCB0aGlzLnRvb2xUaXBDb2xvckhvdmVyKVxuXHRcdFx0dGhpcy50b1NsaWRlcnMubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcblx0XHRcdFx0Jy0tc2xpZGVyLXRodW1iLWNvbG9yLWhvdmVyLXNoYWRvdycsXG5cdFx0XHRcdHRoaXMudG9vbFRpcENvbG9ySG92ZXJTaGFkb3csXG5cdFx0XHQpXG5cdFx0fVxuXHR9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cInNsaWRlclwiIG5vdmFsaWRhdGU+XHJcblx0PGRpdiBjbGFzcz1cInJhbmdlX2NvbnRhaW5lclwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInNsaWRlcnNfY29udHJvbFwiPlxyXG5cdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHQjZnJvbVNsaWRlclxyXG5cdFx0XHRcdChjaGFuZ2UpPVwiZmlyZUV2ZW50T25DaGFuZ2UoKVwiXHJcblx0XHRcdFx0KGlucHV0KT1cImZpcmVFdmVudE9uSW5wdXQoJ2Zyb20nKVwiXHJcblx0XHRcdFx0Km5nSWY9XCJkb3VibGVTbGlkZXJcIlxyXG5cdFx0XHRcdFttYXhdPVwibWF4XCJcclxuXHRcdFx0XHRbbWluXT1cIm1pblwiXHJcblx0XHRcdFx0Y2xhc3M9XCJmcm9tLXNsaWRlciByYW5nZVwiXHJcblx0XHRcdFx0Zm9ybUNvbnRyb2xOYW1lPVwiZnJvbVNsaWRlclwiXHJcblx0XHRcdFx0aWQ9XCJmcm9tU2xpZGVyXCJcclxuXHRcdFx0XHRzdGVwPVwiMVwiXHJcblx0XHRcdFx0dHlwZT1cInJhbmdlXCJcclxuXHRcdFx0Lz5cclxuXHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9vbFRpcFwiPlxyXG5cdFx0XHRcdDxkaXYgI2Zyb21TbGlkZXJUb29sVGlwICpuZ0lmPVwiZG91YmxlU2xpZGVyXCIgY2xhc3M9XCJ0b29sdGlwXCIgaWQ9XCJyYW5nZUZyb21cIj5cclxuXHRcdFx0XHRcdHt7IHNsaWRlci5nZXQoJ2Zyb21TbGlkZXInKT8udmFsdWUgfX1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHQjdG9TbGlkZXJzXHJcblx0XHRcdFx0KGNoYW5nZSk9XCJmaXJlRXZlbnRPbkNoYW5nZSgpXCJcclxuXHRcdFx0XHQoaW5wdXQpPVwiZmlyZUV2ZW50T25JbnB1dCgndG8nKVwiXHJcblx0XHRcdFx0W21heF09XCJtYXhcIlxyXG5cdFx0XHRcdFttaW5dPVwibWluXCJcclxuXHRcdFx0XHRjbGFzcz1cInRvU2xpZGVyIHJhbmdlXCJcclxuXHRcdFx0XHRmb3JtQ29udHJvbE5hbWU9XCJ0b1NsaWRlclwiXHJcblx0XHRcdFx0aWQ9XCJ0b1NsaWRlclwiXHJcblx0XHRcdFx0c3RlcD1cIjFcIlxyXG5cdFx0XHRcdHR5cGU9XCJyYW5nZVwiXHJcblx0XHRcdC8+XHJcblx0XHRcdDxkaXYgI3RvU2xpZGVyVG9vbFRpcCAqbmdJZj1cInNob3dUb29sVGlwXCIgY2xhc3M9XCJ0b1NsaWRlclRvb2x0aXBcIiBpZD1cInJhbmdlVG9cIj5cclxuXHRcdFx0XHR7eyBzbGlkZXIuZ2V0KCd0b1NsaWRlcicpPy52YWx1ZSB9fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -1,19 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { RmRangeSliderComponent } from './rm-range-slider.component';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { CommonModule } from '@angular/common';
5
- import * as i0 from "@angular/core";
6
- export class RmRangeSliderModule {
7
- }
8
- RmRangeSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: RmRangeSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- RmRangeSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.4", ngImport: i0, type: RmRangeSliderModule, declarations: [RmRangeSliderComponent], imports: [ReactiveFormsModule, CommonModule], exports: [RmRangeSliderComponent] });
10
- RmRangeSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: RmRangeSliderModule, imports: [ReactiveFormsModule, CommonModule] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: RmRangeSliderModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- declarations: [RmRangeSliderComponent],
15
- imports: [ReactiveFormsModule, CommonModule],
16
- exports: [RmRangeSliderComponent],
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm0tcmFuZ2Utc2xpZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JtLXJhbmdlLXNsaWRlci9zcmMvbGliL3JtLXJhbmdlLXNsaWRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7O0FBTzlDLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFKaEIsc0JBQXNCLGFBQzNCLG1CQUFtQixFQUFFLFlBQVksYUFDakMsc0JBQXNCO2lIQUVwQixtQkFBbUIsWUFIckIsbUJBQW1CLEVBQUUsWUFBWTsyRkFHL0IsbUJBQW1CO2tCQUwvQixRQUFRO21CQUFDO29CQUNULFlBQVksRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJtUmFuZ2VTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuL3JtLXJhbmdlLXNsaWRlci5jb21wb25lbnQnXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbkBOZ01vZHVsZSh7XG5cdGRlY2xhcmF0aW9uczogW1JtUmFuZ2VTbGlkZXJDb21wb25lbnRdLFxuXHRpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlXSxcblx0ZXhwb3J0czogW1JtUmFuZ2VTbGlkZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBSbVJhbmdlU2xpZGVyTW9kdWxlIHt9XG4iXX0=
@@ -1,7 +0,0 @@
1
- /*
2
- * Public API Surface of rm-range-slider
3
- */
4
- export * from './lib/rm-range-slider.component';
5
- export * from './lib/rm-range-slider.module';
6
- export * from './lib/rm-range-slider.component.interface';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3JtLXJhbmdlLXNsaWRlci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsaUNBQWlDLENBQUE7QUFDL0MsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLDJDQUEyQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBybS1yYW5nZS1zbGlkZXJcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ybS1yYW5nZS1zbGlkZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm0tcmFuZ2Utc2xpZGVyLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JtLXJhbmdlLXNsaWRlci5jb21wb25lbnQuaW50ZXJmYWNlJ1xuIl19