monkey-style-guide 2.0.135 → 2.0.138
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/assets/scss/partials/components/_date-range-picker.scss +37 -0
- package/esm2020/lib/components/date-range-picker/date-range-picker.component.mjs +78 -4
- package/fesm2015/monkey-style-guide.mjs +76 -3
- package/fesm2015/monkey-style-guide.mjs.map +1 -1
- package/fesm2020/monkey-style-guide.mjs +75 -3
- package/fesm2020/monkey-style-guide.mjs.map +1 -1
- package/lib/components/date-range-picker/date-range-picker.component.d.ts +7 -0
- package/monkey-style-guide-2.0.138.tgz +0 -0
- package/package.json +1 -1
- package/monkey-style-guide-2.0.135.tgz +0 -0
|
@@ -114,6 +114,43 @@ monkey-date-range-picker {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
mecx-date-range-picker-selected-dates {
|
|
118
|
+
display: flex;
|
|
119
|
+
border-bottom: 1px solid #d6d6d6;
|
|
120
|
+
margin-bottom: 8px;
|
|
121
|
+
|
|
122
|
+
.from,
|
|
123
|
+
.to {
|
|
124
|
+
display: flex;
|
|
125
|
+
flex-direction: column;
|
|
126
|
+
cursor: pointer;
|
|
127
|
+
|
|
128
|
+
.title {
|
|
129
|
+
font-style: normal;
|
|
130
|
+
font-weight: 400;
|
|
131
|
+
font-size: 16px;
|
|
132
|
+
line-height: 24px;
|
|
133
|
+
color: #9c9ca6;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.data {
|
|
137
|
+
font-style: normal;
|
|
138
|
+
font-weight: 400;
|
|
139
|
+
font-size: 16px;
|
|
140
|
+
line-height: 24px;
|
|
141
|
+
color: #4b4a53;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
&:first-child {
|
|
145
|
+
margin-right: 48px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
&.actual {
|
|
149
|
+
border-bottom: 1px solid #ec7000;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
117
154
|
mecx-date-range-picker-header {
|
|
118
155
|
display: flex;
|
|
119
156
|
flex-direction: column;
|
|
@@ -8,6 +8,8 @@ import { Component, ViewEncapsulation, forwardRef, Output, EventEmitter, Input,
|
|
|
8
8
|
import { NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
|
|
9
9
|
import { MonkeyUtils } from '../../core/utils';
|
|
10
10
|
import * as moment_ from 'moment';
|
|
11
|
+
import { Subject } from 'rxjs';
|
|
12
|
+
import { takeUntil } from 'rxjs/operators';
|
|
11
13
|
import * as i0 from "@angular/core";
|
|
12
14
|
import * as i1 from "@angular/forms";
|
|
13
15
|
import * as i2 from "../button/button.component";
|
|
@@ -30,16 +32,24 @@ export class MonkeyDateRangePickerComponent {
|
|
|
30
32
|
this._daysArrSecond = [];
|
|
31
33
|
this._disabled = false;
|
|
32
34
|
this._minDate = null;
|
|
35
|
+
this._startDate = null;
|
|
36
|
+
this._endDate = null;
|
|
37
|
+
this.unsubscribeAll = new Subject();
|
|
33
38
|
this.initDateRange();
|
|
34
39
|
}
|
|
35
40
|
set minDate(value) {
|
|
36
41
|
this._minDate = !this.moveDaysForward ? null : value;
|
|
37
42
|
}
|
|
38
43
|
initDateRange() {
|
|
39
|
-
|
|
44
|
+
this._dateForm = this.fb.group({
|
|
40
45
|
startDate: [null, Validators.required],
|
|
41
46
|
endDate: [null, Validators.required],
|
|
42
|
-
})
|
|
47
|
+
});
|
|
48
|
+
this._dateForm?.valueChanges?.pipe(takeUntil(this.unsubscribeAll))?.subscribe((values) => {
|
|
49
|
+
const { startDate, endDate } = values;
|
|
50
|
+
this._startDate = startDate && moment.default(startDate);
|
|
51
|
+
this._endDate = endDate && moment.default(endDate);
|
|
52
|
+
});
|
|
43
53
|
}
|
|
44
54
|
createCalendar(month) {
|
|
45
55
|
let firstDay = moment.default(month).startOf('M');
|
|
@@ -244,6 +254,38 @@ MonkeyDateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
244
254
|
{{ helperMessage }}
|
|
245
255
|
</helper>
|
|
246
256
|
</mecx-date-range-picker-group-header>
|
|
257
|
+
<mecx-date-range-picker-selected-dates>
|
|
258
|
+
<div class="from"
|
|
259
|
+
[class.actual]="!_startDate">
|
|
260
|
+
<span class="title">
|
|
261
|
+
{{ i18n?.from }}
|
|
262
|
+
</span>
|
|
263
|
+
<span class="data">
|
|
264
|
+
<ng-container *ngIf="_startDate; else select">
|
|
265
|
+
{{ _startDate?.format('DD') }}
|
|
266
|
+
{{ i18n?.of }}
|
|
267
|
+
{{ i18n?.months?.[_startDate.format('M')] }},
|
|
268
|
+
{{ _startDate.format('YYYY') }}
|
|
269
|
+
</ng-container>
|
|
270
|
+
</span>
|
|
271
|
+
</div>
|
|
272
|
+
<div class="to" [class.actual]="_startDate">
|
|
273
|
+
<span class="title">
|
|
274
|
+
{{ i18n?.to }}
|
|
275
|
+
</span>
|
|
276
|
+
<span class="data">
|
|
277
|
+
<ng-container *ngIf="_endDate; else select">
|
|
278
|
+
{{ _endDate.format('DD') }}
|
|
279
|
+
{{ i18n?.of }}
|
|
280
|
+
{{ i18n?.months?.[_endDate.format('M')] }},
|
|
281
|
+
{{ _endDate.format('YYYY') }}
|
|
282
|
+
</ng-container>
|
|
283
|
+
</span>
|
|
284
|
+
</div>
|
|
285
|
+
<ng-template #select>
|
|
286
|
+
{{ i18n?.select }}
|
|
287
|
+
</ng-template>
|
|
288
|
+
</mecx-date-range-picker-selected-dates>
|
|
247
289
|
<mecx-date-range-picker-group-body>
|
|
248
290
|
<mecx-date-range-picker class="first-date-range">
|
|
249
291
|
<mecx-date-range-picker-header>
|
|
@@ -389,7 +431,7 @@ MonkeyDateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
389
431
|
</monkey-button>
|
|
390
432
|
</mecx-date-range-picker-group-action>
|
|
391
433
|
</mecx-date-range-picker-group>
|
|
392
|
-
`, isInline: true, components: [{ type: i2.MonkeyButtonComponent, selector: "monkey-button", inputs: ["label", "icon", "iconPosition", "type", "color", "disabled", "size"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
434
|
+
`, isInline: true, components: [{ type: i2.MonkeyButtonComponent, selector: "monkey-button", inputs: ["label", "icon", "iconPosition", "type", "color", "disabled", "size"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
393
435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MonkeyDateRangePickerComponent, decorators: [{
|
|
394
436
|
type: Component,
|
|
395
437
|
args: [{
|
|
@@ -404,6 +446,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
404
446
|
{{ helperMessage }}
|
|
405
447
|
</helper>
|
|
406
448
|
</mecx-date-range-picker-group-header>
|
|
449
|
+
<mecx-date-range-picker-selected-dates>
|
|
450
|
+
<div class="from"
|
|
451
|
+
[class.actual]="!_startDate">
|
|
452
|
+
<span class="title">
|
|
453
|
+
{{ i18n?.from }}
|
|
454
|
+
</span>
|
|
455
|
+
<span class="data">
|
|
456
|
+
<ng-container *ngIf="_startDate; else select">
|
|
457
|
+
{{ _startDate?.format('DD') }}
|
|
458
|
+
{{ i18n?.of }}
|
|
459
|
+
{{ i18n?.months?.[_startDate.format('M')] }},
|
|
460
|
+
{{ _startDate.format('YYYY') }}
|
|
461
|
+
</ng-container>
|
|
462
|
+
</span>
|
|
463
|
+
</div>
|
|
464
|
+
<div class="to" [class.actual]="_startDate">
|
|
465
|
+
<span class="title">
|
|
466
|
+
{{ i18n?.to }}
|
|
467
|
+
</span>
|
|
468
|
+
<span class="data">
|
|
469
|
+
<ng-container *ngIf="_endDate; else select">
|
|
470
|
+
{{ _endDate.format('DD') }}
|
|
471
|
+
{{ i18n?.of }}
|
|
472
|
+
{{ i18n?.months?.[_endDate.format('M')] }},
|
|
473
|
+
{{ _endDate.format('YYYY') }}
|
|
474
|
+
</ng-container>
|
|
475
|
+
</span>
|
|
476
|
+
</div>
|
|
477
|
+
<ng-template #select>
|
|
478
|
+
{{ i18n?.select }}
|
|
479
|
+
</ng-template>
|
|
480
|
+
</mecx-date-range-picker-selected-dates>
|
|
407
481
|
<mecx-date-range-picker-group-body>
|
|
408
482
|
<mecx-date-range-picker class="first-date-range">
|
|
409
483
|
<mecx-date-range-picker-header>
|
|
@@ -579,4 +653,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
579
653
|
}], value: [{
|
|
580
654
|
type: Input
|
|
581
655
|
}] } });
|
|
582
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixVQUFVLEVBRVYsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWxDLE1BQU0sTUFBTSxHQUFRLE9BQU8sQ0FBQztBQTBLNUIsTUFBTSxPQUFPLDhCQUE4QjtJQXNDekMsWUFBb0IsRUFBZSxFQUFVLEdBQXNCO1FBQS9DLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBDMUQsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFlM0Isb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFNdEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFckMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsa0JBQWEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ25DLG1CQUFjLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFFLENB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QUNiLDBCQXBLUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EySlQ7MkZBV1UsOEJBQThCO2tCQXhLMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkpUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUM7NEJBQzdELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELFlBQVk7cUJBQ2I7aUJBQ0Y7a0lBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQVlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVGLE9BQU87c0JBRFYsS0FBSztnQkFLSSxRQUFRO3NCQUFqQixNQUFNO2dCQW1HSCxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICogQ29weXJpZ2h0IE1vbmtleSBFeGNoYW5nZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZFxyXG4gKiBUaGlzIHN0eWxlIGd1aWRlIHdhcyBkZXZlbG9wZWQgYnkgTW9ua2V5IEV4Y2hhbmdlIFRlYW1cclxuICogTUlUIExpY2VuY2VcclxuICoqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBmb3J3YXJkUmVmLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Hcm91cCxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTW9ua2V5VXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5cclxuY29uc3QgbW9tZW50OiBhbnkgPSBtb21lbnRfO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtb25rZXktZGF0ZS1yYW5nZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cCBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBfZGlzYWJsZWQgfVwiIFtpZF09XCJfaWRcIj5cclxuICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXAtaGVhZGVyPlxyXG4gICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgIHt7IGxhYmVsIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8aGVscGVyPlxyXG4gICAgICAgICAge3sgaGVscGVyTWVzc2FnZSB9fVxyXG4gICAgICAgIDwvaGVscGVyPlxyXG4gICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXAtaGVhZGVyPlxyXG4gICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1ib2R5PlxyXG4gICAgICAgIDxtZWN4LWRhdGUtcmFuZ2UtcGlja2VyIGNsYXNzPVwiZmlyc3QtZGF0ZS1yYW5nZVwiPlxyXG4gICAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItaGVhZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItdGl0bGVcIj5cclxuICAgICAgICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1wcmV2aW91c1wiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgICAgIGljb249XCJhcnJvdy1sZWZ0LTE2XCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCJcclxuICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9tb25rZXktYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC15ZWFyLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpMThuPy5tb250aHM/LltfZGF0ZUZpcnN0LmZvcm1hdCgnTScpXSB9fVxyXG4gICAgICAgICAgICAgICAge3sgX2RhdGVGaXJzdC5mb3JtYXQoJ1lZWVknKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxtb25rZXktYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLW5leHRcIlxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ0aGVtZVwiXHJcbiAgICAgICAgICAgICAgICBpY29uPVwiYXJyb3ctcmlnaHQtMTZcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRlcnRpYXJ5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0TW9udGgoKVwiXHJcbiAgICAgICAgICAgICAgICBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbW9ua2V5LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWRheVwiICpuZ0Zvcj1cImxldCBkYXkgb2YgWzEsIDIsIDMsIDQsIDUsIDYsIDddXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpMThuPy5kYXlzPy5bZGF5XX19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1oZWFkZXI+XHJcbiAgICAgICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ib2R5PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtd2Vla1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIF9kYXlzQXJyRmlyc3RcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1vbnRoLWRheVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWREYXRlKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBpbmFjdGl2ZTogIWRheSB8fCBpc0Rpc2FibGVkKGRheSksXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBpc1NlbGVjdGVkKGRheSksXHJcbiAgICAgICAgICAgICAgICAgIHRvZGF5OiB0b2RheUNoZWNrKGRheSksXHJcbiAgICAgICAgICAgICAgICAgICdmaXJzdC1zZWxlY3RlZCc6IGlzRmlyc3RTZWxlY3RlZChkYXkpLFxyXG4gICAgICAgICAgICAgICAgICAnbGFzdC1zZWxlY3RlZCc6IGlzTGFzdFNlbGVjdGVkKGRheSlcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrXCJcclxuICAgICAgICAgICAgICAgICNkaXZPbmVcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXk/LmRhdGUoKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ib2R5PlxyXG4gICAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuXHJcbiAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXIgY2xhc3M9XCJzZWNvbmQtZGF0ZS1yYW5nZVwiPlxyXG4gICAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItaGVhZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItdGl0bGVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgteWVhci10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgaTE4bj8ubW9udGhzPy5bX2RhdGVTZWNvbmQuZm9ybWF0KCdNJyldIH19XHJcbiAgICAgICAgICAgICAgICB7eyBfZGF0ZVNlY29uZC5mb3JtYXQoJ1lZWVknKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxtb25rZXktYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLXByZXZpb3VzXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwidGhlbWVcIlxyXG4gICAgICAgICAgICAgICAgaWNvbj1cImFycm93LXJpZ2h0LTE2XCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dE1vbnRoKClcIlxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vla1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2Vlay1kYXlcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIFsxLCAyLCAzLCA0LCA1LCA2LCA3XVwiPlxyXG4gICAgICAgICAgICAgICAge3sgaTE4bj8uZGF5cz8uW2RheV19fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItaGVhZGVyPlxyXG4gICAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItYm9keT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXdlZWtcIiAqbmdGb3I9XCJsZXQgd2VlayBvZiBfZGF5c0FyclNlY29uZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibW9udGgtZGF5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZERhdGUoZGF5KVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGluYWN0aXZlOiAhZGF5IHx8IGlzRGlzYWJsZWQoZGF5KSxcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQoZGF5KSxcclxuICAgICAgICAgICAgICAgICAgdG9kYXk6IHRvZGF5Q2hlY2soZGF5KSxcclxuICAgICAgICAgICAgICAgICAgJ2ZpcnN0LXNlbGVjdGVkJzogaXNGaXJzdFNlbGVjdGVkKGRheSksXHJcbiAgICAgICAgICAgICAgICAgICdsYXN0LXNlbGVjdGVkJzogaXNMYXN0U2VsZWN0ZWQoZGF5KVxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGRheT8uZGF0ZSgpIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWJvZHk+XHJcbiAgICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyPlxyXG4gICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXAtYm9keT5cclxuICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXAtaW5mbz5cclxuICAgICAgICA8aW5mbz5cclxuICAgICAgICAgIHt7IGluZm9NZXNzYWdlIH19XHJcbiAgICAgICAgPC9pbmZvPlxyXG4gICAgICAgIDxlcnJvcj5cclxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxyXG4gICAgICAgIDwvZXJyb3I+XHJcbiAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1pbmZvPlxyXG4gICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1hY3Rpb24gW2NsYXNzLmVycm9yXT1cImVycm9yTWVzc2FnZT8udHJpbSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1kYXlzXCI+XHJcbiAgICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSYW5nZU9mRGF5cygzMClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgaTE4bj8uYWN0aW9ucz8uWyczMCddIH19XHJcbiAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSYW5nZU9mRGF5cyg2MClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgaTE4bj8uYWN0aW9ucz8uWyc2MCddIH19XHJcbiAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSYW5nZU9mRGF5cyg5MClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgaTE4bj8uYWN0aW9ucz8uWyc5MCddIH19XHJcbiAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1vbmtleS1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwidGhlbWVcIlxyXG4gICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Ub2RheSgpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGkxOG4/LnRvZGF5IH19XHJcbiAgICAgICAgPC9tb25rZXktYnV0dG9uPlxyXG4gICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXAtYWN0aW9uPlxyXG4gICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWdyb3VwPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vbmtleURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIEN1cnJlbmN5UGlwZSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9ua2V5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBoZWxwZXJNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBpMThuOiB7XHJcbiAgICBtb250aHM6IHtcclxuICAgICAgW3M6IHN0cmluZ106IHN0cmluZztcclxuICAgIH07XHJcbiAgICBkYXlzOiB7XHJcbiAgICAgIFtzOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgICB9O1xyXG4gICAgYWN0aW9uczoge1xyXG4gICAgICBbczogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgfTtcclxuICAgIHRvZGF5OiBzdHJpbmc7XHJcbiAgfTtcclxuICBASW5wdXQoKSBpbmZvTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1vdmVEYXlzRm9yd2FyZCA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBzZXQgbWluRGF0ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9taW5EYXRlID0gIXRoaXMubW92ZURheXNGb3J3YXJkID8gbnVsbCA6IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgdG9kYXkgPSBtb21lbnQuZGVmYXVsdCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gIHByaXZhdGUgb25Nb2RlbENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcclxuICBwcml2YXRlIG9uTW9kZWxUb3VjaGVkID0gKHZhbHVlOiBhbnkpID0+IHt9O1xyXG5cclxuICBwdWJsaWMgX2RhdGVGaXJzdCA9IG1vbWVudC5kZWZhdWx0KCk7XHJcbiAgcHVibGljIF9kYXRlU2Vjb25kID0gbW9tZW50LmRlZmF1bHQoKS5hZGQoMSwgJ00nKTtcclxuICBwdWJsaWMgX2lkOiBzdHJpbmcgPSBgbWVjeC1kYXRlLXJhbmdlLXBpY2tlci0ke01vbmtleVV0aWxzLmdldFJhbmRvbVN0cmluZygxMCl9YDtcclxuICBwdWJsaWMgX2RheXNBcnJGaXJzdCA9IFtdO1xyXG4gIHB1YmxpYyBfZGF5c0FyclNlY29uZCA9IFtdO1xyXG4gIHB1YmxpYyBfZGF0ZUZvcm06IEZvcm1Hcm91cDtcclxuICBwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIF9taW5EYXRlID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5pbml0RGF0ZVJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXREYXRlUmFuZ2UoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuX2RhdGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHN0YXJ0RGF0ZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBlbmREYXRlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUNhbGVuZGFyKG1vbnRoOiBhbnkpIHtcclxuICAgIGxldCBmaXJzdERheSA9IG1vbWVudC5kZWZhdWx0KG1vbnRoKS5zdGFydE9mKCdNJyk7XHJcbiAgICBsZXQgbGFzdERheSA9IG1vbWVudC5kZWZhdWx0KG1vbnRoKS5lbmRPZignTScpO1xyXG4gICAgbGV0IGRheXMgPSBBcnJheS5hcHBseShudWxsLCB7IGxlbmd0aDogbW9udGguZGF5c0luTW9udGgoKSB9KVxyXG4gICAgICAubWFwKE51bWJlci5jYWxsLCBOdW1iZXIpXHJcbiAgICAgIC5tYXAoKG46IG51bWJlcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQuZGVmYXVsdChmaXJzdERheSkuYWRkKG4sICdkJyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGxldCBuID0gMDtcclxuICAgIHdoaWxlIChuIDwgZmlyc3REYXkud2Vla2RheSgpKSB7XHJcbiAgICAgIGRheXMudW5zaGlmdChudWxsKTtcclxuICAgICAgbisrO1xyXG4gICAgfVxyXG4gICAgbiA9IDA7XHJcbiAgICB3aGlsZSAobiA8IDcgLSBsYXN0RGF5LndlZWtkYXkoKSkge1xyXG4gICAgICBkYXlzLnB1c2gobnVsbCk7XHJcbiAgICAgIG4rKztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaW5kZXggPSAxO1xyXG4gICAgbGV0IGdyb3VwID0gW107XHJcbiAgICBsZXQgZ3JvdXBlZCA9IFtdO1xyXG5cclxuICAgIE9iamVjdC5lbnRyaWVzKGRheXMpLm1hcCgoW2tleSwgdmFsdWVdOiBbc3RyaW5nLCBhbnldKSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA+IDcpIHtcclxuICAgICAgICBpbmRleCA9IDE7XHJcbiAgICAgICAgZ3JvdXBlZC5wdXNoKGdyb3VwKTtcclxuICAgICAgICBncm91cCA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBncm91cC5wdXNoKHZhbHVlKTtcclxuICAgICAgaW5kZXgrKztcclxuICAgIH0pO1xyXG4gICAgZ3JvdXBlZC5wdXNoKGdyb3VwKTtcclxuXHJcbiAgICByZXR1cm4gZ3JvdXBlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGQoKSB7XHJcbiAgICB0aGlzLl9kYXlzQXJyRmlyc3QgPSB0aGlzLmNyZWF0ZUNhbGVuZGFyKHRoaXMuX2RhdGVGaXJzdCk7XHJcbiAgICB0aGlzLl9kYXlzQXJyU2Vjb25kID0gdGhpcy5jcmVhdGVDYWxlbmRhcih0aGlzLl9kYXRlU2Vjb25kKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJEYXRlcygpIHtcclxuICAgIGlmICh0aGlzLl9kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5fZGF0ZUZvcm0uc2V0VmFsdWUoeyBzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGwgfSk7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5fZGF0ZUZvcm0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1RvZGF5KCkge1xyXG4gICAgdGhpcy5fZGF0ZUZpcnN0ID0gbW9tZW50LmRlZmF1bHQoKTtcclxuICAgIHRoaXMuX2RhdGVTZWNvbmQgPSBtb21lbnQuZGVmYXVsdCgpLmFkZCgxLCAnTScpO1xyXG4gICAgdGhpcy5idWlsZCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkKCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICB2YWx1ZSAmJlxyXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdzdGFydERhdGUnKSAmJlxyXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdlbmREYXRlJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9kYXRlRm9ybS5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuX2RhdGVGb3JtLnZhbHVlKTtcclxuICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCh0aGlzLl9kYXRlRm9ybS52YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWFyRGF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGVGb3JtLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLl9kYXRlRmlyc3QuYWRkKDEsICdNJyk7XHJcbiAgICB0aGlzLl9kYXRlU2Vjb25kLmFkZCgxLCAnTScpO1xyXG5cclxuICAgIHRoaXMuX2RheXNBcnJGaXJzdCA9IHRoaXMuY3JlYXRlQ2FsZW5kYXIodGhpcy5fZGF0ZUZpcnN0KTtcclxuICAgIHRoaXMuX2RheXNBcnJTZWNvbmQgPSB0aGlzLmNyZWF0ZUNhbGVuZGFyKHRoaXMuX2RhdGVTZWNvbmQpO1xyXG4gIH1cclxuXHJcbiAgcHJldmlvdXNNb250aCgpIHtcclxuICAgIGlmICh0aGlzLl9kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5fZGF0ZUZpcnN0LnN1YnRyYWN0KDEsICdNJyk7XHJcbiAgICB0aGlzLl9kYXRlU2Vjb25kLnN1YnRyYWN0KDEsICdNJyk7XHJcblxyXG4gICAgdGhpcy5fZGF5c0FyckZpcnN0ID0gdGhpcy5jcmVhdGVDYWxlbmRhcih0aGlzLl9kYXRlRmlyc3QpO1xyXG4gICAgdGhpcy5fZGF5c0FyclNlY29uZCA9IHRoaXMuY3JlYXRlQ2FsZW5kYXIodGhpcy5fZGF0ZVNlY29uZCk7XHJcbiAgfVxyXG5cclxuICB0b2RheUNoZWNrKGRheTogYW55KSB7XHJcbiAgICBpZiAoIWRheSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1vbWVudC5kZWZhdWx0KCkuZm9ybWF0KCdMJykgPT09IGRheS5mb3JtYXQoJ0wnKTtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoZGF5OiBhbnkpIHtcclxuICAgIGlmICghZGF5KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3RhcnREYXRlTW9tZW50ID0gbW9tZW50LmRlZmF1bHQodGhpcy5fZGF0ZUZvcm0udmFsdWUuc3RhcnREYXRlLCAnWVlZWS1NTS1ERCcpO1xyXG4gICAgbGV0IGVuZERhdGVNb21lbnQgPSBtb21lbnQuZGVmYXVsdCh0aGlzLl9kYXRlRm9ybS52YWx1ZS5lbmREYXRlLCAnWVlZWS1NTS1ERCcpO1xyXG5cclxuICAgIGlmICh0aGlzLl9kYXRlRm9ybS52YWxpZCkge1xyXG4gICAgICByZXR1cm4gc3RhcnREYXRlTW9tZW50LmlzU2FtZU9yQmVmb3JlKGRheSkgJiYgZW5kRGF0ZU1vbWVudC5pc1NhbWVPckFmdGVyKGRheSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2RhdGVGb3JtLmdldCgnc3RhcnREYXRlJykudmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHN0YXJ0RGF0ZU1vbWVudC5pc1NhbWUoZGF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWQoZGF5KSB7XHJcbiAgICBjb25zdCB7IF9taW5EYXRlIH0gPSB0aGlzO1xyXG4gICAgaWYgKF9taW5EYXRlKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbW9tZW50LmRlZmF1bHQoX21pbkRhdGUpO1xyXG4gICAgICByZXR1cm4gZGF5LmlzQmVmb3JlKGZpcnN0RGF5LnN1YnRyYWN0KDEsICdkYXknKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc0ZpcnN0U2VsZWN0ZWQoZGF5KSB7XHJcbiAgICBjb25zdCB7IF9kYXRlRm9ybSB9ID0gdGhpcztcclxuICAgIGNvbnN0IHsgc3RhcnREYXRlIH0gPSBfZGF0ZUZvcm0udmFsdWU7XHJcbiAgICByZXR1cm4gZGF5Py5pc1NhbWUoc3RhcnREYXRlKTtcclxuICB9XHJcblxyXG4gIGlzTGFzdFNlbGVjdGVkKGRheTogYW55KSB7XHJcbiAgICBjb25zdCB7IF9kYXRlRm9ybSB9ID0gdGhpcztcclxuICAgIGNvbnN0IHsgZW5kRGF0ZSB9ID0gX2RhdGVGb3JtLnZhbHVlO1xyXG4gICAgcmV0dXJuIGRheT8uaXNTYW1lKGVuZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWREYXRlKGRheTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHJldHVybjtcclxuICAgIGNvbnN0IHsgX2RhdGVGb3JtLCBfbWluRGF0ZSB9ID0gdGhpcztcclxuICAgIGxldCBkYXlGb3JtYXR0ZWQgPSBkYXkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcblxyXG4gICAgaWYgKF9taW5EYXRlKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbW9tZW50LmRlZmF1bHQoX21pbkRhdGUpO1xyXG4gICAgICBpZiAoZGF5LmlzQmVmb3JlKGZpcnN0RGF5LnN1YnRyYWN0KDEsICdkYXknKSkpIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoX2RhdGVGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJEYXRlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9ID0gX2RhdGVGb3JtLnZhbHVlO1xyXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xyXG4gICAgICBpZiAobW9tZW50LmRlZmF1bHQoc3RhcnREYXRlKS5pc0FmdGVyKG1vbWVudC5kZWZhdWx0KGRheUZvcm1hdHRlZCkpKSB7XHJcbiAgICAgICAgZW5kRGF0ZSA9IHN0YXJ0RGF0ZTtcclxuICAgICAgICBzdGFydERhdGUgPSBkYXlGb3JtYXR0ZWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZW5kRGF0ZSA9IGRheUZvcm1hdHRlZDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHN0YXJ0RGF0ZSA9IGRheUZvcm1hdHRlZDtcclxuXHJcbiAgICBpZiAoc3RhcnREYXRlKSB7XHJcbiAgICAgIF9kYXRlRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnBhdGNoVmFsdWUoc3RhcnREYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZW5kRGF0ZSkge1xyXG4gICAgICBfZGF0ZUZvcm0uZ2V0KCdlbmREYXRlJykucGF0Y2hWYWx1ZShlbmREYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLndyaXRlVmFsdWUoX2RhdGVGb3JtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFJhbmdlT2ZEYXlzKGRheXM6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSByZXR1cm47XHJcbiAgICBjb25zdCB7IF9kYXRlRm9ybSwgX21pbkRhdGUsIHRvZGF5LCBtb3ZlRGF5c0ZvcndhcmQgfSA9IHRoaXM7XHJcbiAgICBjb25zdCB7IHN0YXJ0RGF0ZSB9ID0gX2RhdGVGb3JtLnZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0RGF5ID0gbW9tZW50LmRlZmF1bHQoc3RhcnREYXRlIHx8IF9taW5EYXRlIHx8IHRvZGF5KS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICAgIGNvbnN0IG1ldGhvZCA9IG1vdmVEYXlzRm9yd2FyZCA/ICdhZGQnIDogJ3N1YnRyYWN0JztcclxuICAgIGNvbnN0IGxhc3REYXkgPSBtb21lbnQuZGVmYXVsdChmaXJzdERheSlbbWV0aG9kXShkYXlzLCAnZGF5JykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgICBcclxuICAgIGlmKG1vdmVEYXlzRm9yd2FyZCl7XHJcbiAgICAgIF9kYXRlRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnBhdGNoVmFsdWUoZmlyc3REYXkpO1xyXG4gICAgICBfZGF0ZUZvcm0uZ2V0KCdlbmREYXRlJykucGF0Y2hWYWx1ZShsYXN0RGF5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIF9kYXRlRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnBhdGNoVmFsdWUobGFzdERheSk7XHJcbiAgICAgIF9kYXRlRm9ybS5nZXQoJ2VuZERhdGUnKS5wYXRjaFZhbHVlKGZpcnN0RGF5KTtcclxuICAgIH1cclxuICAgIHRoaXMud3JpdGVWYWx1ZShfZGF0ZUZvcm0udmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
656
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixVQUFVLEVBRVYsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRTNDLE1BQU0sTUFBTSxHQUFRLE9BQU8sQ0FBQztBQTBNNUIsTUFBTSxPQUFPLDhCQUE4QjtJQTZDekMsWUFBb0IsRUFBZSxFQUFVLEdBQXNCO1FBQS9DLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTNDMUQsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFtQjNCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBTXRCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXJDLFVBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLGtCQUFh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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkxUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUM7NEJBQzdELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELFlBQVk7cUJBQ2I7aUJBQ0Y7a0lBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQWdCRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRixPQUFPO3NCQURWLEtBQUs7Z0JBS0ksUUFBUTtzQkFBakIsTUFBTTtnQkE0R0gsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIENvcHlyaWdodCBNb25rZXkgRXhjaGFuZ2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcclxuICogVGhpcyBzdHlsZSBndWlkZSB3YXMgZGV2ZWxvcGVkIGJ5IE1vbmtleSBFeGNoYW5nZSBUZWFtXHJcbiAqIE1JVCBMaWNlbmNlXHJcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgZm9yd2FyZFJlZixcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtR3JvdXAsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1vbmtleVV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5jb25zdCBtb21lbnQ6IGFueSA9IG1vbWVudF87XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21vbmtleS1kYXRlLXJhbmdlLXBpY2tlcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWdyb3VwIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IF9kaXNhYmxlZCB9XCIgW2lkXT1cIl9pZFwiPlxyXG4gICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1oZWFkZXI+XHJcbiAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAge3sgbGFiZWwgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxoZWxwZXI+XHJcbiAgICAgICAgICB7eyBoZWxwZXJNZXNzYWdlIH19XHJcbiAgICAgICAgPC9oZWxwZXI+XHJcbiAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1oZWFkZXI+XHJcbiAgICAgIDxtZWN4LWRhdGUtcmFuZ2UtcGlja2VyLXNlbGVjdGVkLWRhdGVzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcm9tXCJcclxuICAgICAgICBbY2xhc3MuYWN0dWFsXT1cIiFfc3RhcnREYXRlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IGkxOG4/LmZyb20gfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0YVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3N0YXJ0RGF0ZTsgZWxzZSBzZWxlY3RcIj5cclxuICAgICAgICAgICAgICB7eyBfc3RhcnREYXRlPy5mb3JtYXQoJ0REJykgfX1cclxuICAgICAgICAgICAgICB7eyBpMThuPy5vZiB9fVxyXG4gICAgICAgICAgICAgIHt7IGkxOG4/Lm1vbnRocz8uW19zdGFydERhdGUuZm9ybWF0KCdNJyldIH19LFxyXG4gICAgICAgICAgICAgIHt7IF9zdGFydERhdGUuZm9ybWF0KCdZWVlZJykgfX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvXCIgW2NsYXNzLmFjdHVhbF09XCJfc3RhcnREYXRlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IGkxOG4/LnRvIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9lbmREYXRlOyBlbHNlIHNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgIHt7IF9lbmREYXRlLmZvcm1hdCgnREQnKSB9fVxyXG4gICAgICAgICAgICAgIHt7IGkxOG4/Lm9mIH19XHJcbiAgICAgICAgICAgICAge3sgaTE4bj8ubW9udGhzPy5bX2VuZERhdGUuZm9ybWF0KCdNJyldIH19LFxyXG4gICAgICAgICAgICAgIHt7IF9lbmREYXRlLmZvcm1hdCgnWVlZWScpIH19XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0PlxyXG4gICAgICAgICAge3sgaTE4bj8uc2VsZWN0IH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyLXNlbGVjdGVkLWRhdGVzPlxyXG4gICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1ib2R5PlxyXG4gICAgICAgIDxtZWN4LWRhdGUtcmFuZ2UtcGlja2VyIGNsYXNzPVwiZmlyc3QtZGF0ZS1yYW5nZVwiPlxyXG4gICAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItaGVhZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItdGl0bGVcIj5cclxuICAgICAgICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1wcmV2aW91c1wiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgICAgIGljb249XCJhcnJvdy1sZWZ0LTE2XCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCJcclxuICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9tb25rZXktYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC15ZWFyLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpMThuPy5tb250aHM/LltfZGF0ZUZpcnN0LmZvcm1hdCgnTScpXSB9fVxyXG4gICAgICAgICAgICAgICAge3sgX2RhdGVGaXJzdC5mb3JtYXQoJ1lZWVknKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxtb25rZXktYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLW5leHRcIlxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ0aGVtZVwiXHJcbiAgICAgICAgICAgICAgICBpY29uPVwiYXJyb3ctcmlnaHQtMTZcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRlcnRpYXJ5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0TW9udGgoKVwiXHJcbiAgICAgICAgICAgICAgICBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbW9ua2V5LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWRheVwiICpuZ0Zvcj1cImxldCBkYXkgb2YgWzEsIDIsIDMsIDQsIDUsIDYsIDddXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpMThuPy5kYXlzPy5bZGF5XX19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1oZWFkZXI+XHJcbiAgICAgICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ib2R5PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtd2Vla1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIF9kYXlzQXJyRmlyc3RcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1vbnRoLWRheVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWREYXRlKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBpbmFjdGl2ZTogIWRheSB8fCBpc0Rpc2FibGVkKGRheSksXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBpc1NlbGVjdGVkKGRheSksXHJcbiAgICAgICAgICAgICAgICAgIHRvZGF5OiB0b2RheUNoZWNrKGRheSksXHJcbiAgICAgICAgICAgICAgICAgICdmaXJzdC1zZWxlY3RlZCc6IGlzRmlyc3RTZWxlY3RlZChkYXkpLFxyXG4gICAgICAgICAgICAgICAgICAnbGFzdC1zZWxlY3RlZCc6IGlzTGFzdFNlbGVjdGVkKGRheSlcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrXCJcclxuICAgICAgICAgICAgICAgICNkaXZPbmVcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXk/LmRhdGUoKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ib2R5PlxyXG4gICAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuXHJcbiAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXIgY2xhc3M9XCJzZWNvbmQtZGF0ZS1yYW5nZVwiPlxyXG4gICAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItaGVhZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItdGl0bGVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgteWVhci10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgaTE4bj8ubW9udGhzPy5bX2RhdGVTZWNvbmQuZm9ybWF0KCdNJyldIH19XHJcbiAgICAgICAgICAgICAgICB7eyBfZGF0ZVNlY29uZC5mb3JtYXQoJ1lZWVknKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxtb25rZXktYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLXByZXZpb3VzXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwidGhlbWVcIlxyXG4gICAgICAgICAgICAgICAgaWNvbj1cImFycm93LXJpZ2h0LTE2XCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dE1vbnRoKClcIlxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vla1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2Vlay1kYXlcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIFsxLCAyLCAzLCA0LCA1LCA2LCA3XVwiPlxyXG4gICAgICAgICAgICAgICAge3sgaTE4bj8uZGF5cz8uW2RheV19fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItaGVhZGVyPlxyXG4gICAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItYm9keT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXdlZWtcIiAqbmdGb3I9XCJsZXQgd2VlayBvZiBfZGF5c0FyclNlY29uZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibW9udGgtZGF5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZERhdGUoZGF5KVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGluYWN0aXZlOiAhZGF5IHx8IGlzRGlzYWJsZWQoZGF5KSxcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQoZGF5KSxcclxuICAgICAgICAgICAgICAgICAgdG9kYXk6IHRvZGF5Q2hlY2soZGF5KSxcclxuICAgICAgICAgICAgICAgICAgJ2ZpcnN0LXNlbGVjdGVkJzogaXNGaXJzdFNlbGVjdGVkKGRheSksXHJcbiAgICAgICAgICAgICAgICAgICdsYXN0LXNlbGVjdGVkJzogaXNMYXN0U2VsZWN0ZWQoZGF5KVxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGRheT8uZGF0ZSgpIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWJvZHk+XHJcbiAgICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyPlxyXG4gICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXAtYm9keT5cclxuICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXAtaW5mbz5cclxuICAgICAgICA8aW5mbz5cclxuICAgICAgICAgIHt7IGluZm9NZXNzYWdlIH19XHJcbiAgICAgICAgPC9pbmZvPlxyXG4gICAgICAgIDxlcnJvcj5cclxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxyXG4gICAgICAgIDwvZXJyb3I+XHJcbiAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1pbmZvPlxyXG4gICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1hY3Rpb24gW2NsYXNzLmVycm9yXT1cImVycm9yTWVzc2FnZT8udHJpbSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1kYXlzXCI+XHJcbiAgICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSYW5nZU9mRGF5cygzMClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgaTE4bj8uYWN0aW9ucz8uWyczMCddIH19XHJcbiAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSYW5nZU9mRGF5cyg2MClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgaTE4bj8uYWN0aW9ucz8uWyc2MCddIH19XHJcbiAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSYW5nZU9mRGF5cyg5MClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgaTE4bj8uYWN0aW9ucz8uWyc5MCddIH19XHJcbiAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1vbmtleS1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwidGhlbWVcIlxyXG4gICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Ub2RheSgpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGkxOG4/LnRvZGF5IH19XHJcbiAgICAgICAgPC9tb25rZXktYnV0dG9uPlxyXG4gICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXAtYWN0aW9uPlxyXG4gICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWdyb3VwPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vbmtleURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIEN1cnJlbmN5UGlwZSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9ua2V5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBoZWxwZXJNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBpMThuOiB7XHJcbiAgICBtb250aHM6IHtcclxuICAgICAgW3M6IHN0cmluZ106IHN0cmluZztcclxuICAgIH07XHJcbiAgICBkYXlzOiB7XHJcbiAgICAgIFtzOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgICB9O1xyXG4gICAgYWN0aW9uczoge1xyXG4gICAgICBbczogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgfTtcclxuICAgIGZyb206IHN0cmluZztcclxuICAgIHRvOiBzdHJpbmc7XHJcbiAgICBvZjogc3RyaW5nO1xyXG4gICAgdG9kYXk6IHN0cmluZztcclxuICAgIHNlbGVjdDogc3RyaW5nO1xyXG4gIH07XHJcbiAgQElucHV0KCkgaW5mb01lc3NhZ2U6IHN0cmluZztcclxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcclxuICBASW5wdXQoKSBtb3ZlRGF5c0ZvcndhcmQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1pbkRhdGUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fbWluRGF0ZSA9ICF0aGlzLm1vdmVEYXlzRm9yd2FyZCA/IG51bGwgOiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBwcml2YXRlIHRvZGF5ID0gbW9tZW50LmRlZmF1bHQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICBwcml2YXRlIG9uTW9kZWxDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XHJcbiAgcHJpdmF0ZSBvbk1vZGVsVG91Y2hlZCA9ICh2YWx1ZTogYW55KSA9PiB7fTtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT47XHJcblxyXG4gIHB1YmxpYyBfZGF0ZUZpcnN0ID0gbW9tZW50LmRlZmF1bHQoKTtcclxuICBwdWJsaWMgX2RhdGVTZWNvbmQgPSBtb21lbnQuZGVmYXVsdCgpLmFkZCgxLCAnTScpO1xyXG4gIHB1YmxpYyBfaWQ6IHN0cmluZyA9IGBtZWN4LWRhdGUtcmFuZ2UtcGlja2VyLSR7TW9ua2V5VXRpbHMuZ2V0UmFuZG9tU3RyaW5nKDEwKX1gO1xyXG4gIHB1YmxpYyBfZGF5c0FyckZpcnN0ID0gW107XHJcbiAgcHVibGljIF9kYXlzQXJyU2Vjb25kID0gW107XHJcbiAgcHVibGljIF9kYXRlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgX21pbkRhdGUgPSBudWxsO1xyXG4gIHB1YmxpYyBfc3RhcnREYXRlID0gbnVsbDtcclxuICBwdWJsaWMgX2VuZERhdGUgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHRoaXMuaW5pdERhdGVSYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RGF0ZVJhbmdlKCkge1xyXG4gICAgdGhpcy5fZGF0ZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgc3RhcnREYXRlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGVuZERhdGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZGF0ZUZvcm0/LnZhbHVlQ2hhbmdlcz8ucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZUFsbCkpPy5zdWJzY3JpYmUoKHZhbHVlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgc3RhcnREYXRlLCBlbmREYXRlIH0gPSB2YWx1ZXM7XHJcbiAgICAgIHRoaXMuX3N0YXJ0RGF0ZSA9IHN0YXJ0RGF0ZSAmJiBtb21lbnQuZGVmYXVsdChzdGFydERhdGUpXHJcbiAgICAgIHRoaXMuX2VuZERhdGUgPSBlbmREYXRlICYmIG1vbWVudC5kZWZhdWx0KGVuZERhdGUpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ2FsZW5kYXIobW9udGg6IGFueSkge1xyXG4gICAgbGV0IGZpcnN0RGF5ID0gbW9tZW50LmRlZmF1bHQobW9udGgpLnN0YXJ0T2YoJ00nKTtcclxuICAgIGxldCBsYXN0RGF5ID0gbW9tZW50LmRlZmF1bHQobW9udGgpLmVuZE9mKCdNJyk7XHJcbiAgICBsZXQgZGF5cyA9IEFycmF5LmFwcGx5KG51bGwsIHsgbGVuZ3RoOiBtb250aC5kYXlzSW5Nb250aCgpIH0pXHJcbiAgICAgIC5tYXAoTnVtYmVyLmNhbGwsIE51bWJlcilcclxuICAgICAgLm1hcCgobjogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudC5kZWZhdWx0KGZpcnN0RGF5KS5hZGQobiwgJ2QnKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgbGV0IG4gPSAwO1xyXG4gICAgd2hpbGUgKG4gPCBmaXJzdERheS53ZWVrZGF5KCkpIHtcclxuICAgICAgZGF5cy51bnNoaWZ0KG51bGwpO1xyXG4gICAgICBuKys7XHJcbiAgICB9XHJcbiAgICBuID0gMDtcclxuICAgIHdoaWxlIChuIDwgNyAtIGxhc3REYXkud2Vla2RheSgpKSB7XHJcbiAgICAgIGRheXMucHVzaChudWxsKTtcclxuICAgICAgbisrO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbmRleCA9IDE7XHJcbiAgICBsZXQgZ3JvdXAgPSBbXTtcclxuICAgIGxldCBncm91cGVkID0gW107XHJcblxyXG4gICAgT2JqZWN0LmVudHJpZXMoZGF5cykubWFwKChba2V5LCB2YWx1ZV06IFtzdHJpbmcsIGFueV0pID0+IHtcclxuICAgICAgaWYgKGluZGV4ID4gNykge1xyXG4gICAgICAgIGluZGV4ID0gMTtcclxuICAgICAgICBncm91cGVkLnB1c2goZ3JvdXApO1xyXG4gICAgICAgIGdyb3VwID0gW107XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdyb3VwLnB1c2godmFsdWUpO1xyXG4gICAgICBpbmRleCsrO1xyXG4gICAgfSk7XHJcbiAgICBncm91cGVkLnB1c2goZ3JvdXApO1xyXG5cclxuICAgIHJldHVybiBncm91cGVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZCgpIHtcclxuICAgIHRoaXMuX2RheXNBcnJGaXJzdCA9IHRoaXMuY3JlYXRlQ2FsZW5kYXIodGhpcy5fZGF0ZUZpcnN0KTtcclxuICAgIHRoaXMuX2RheXNBcnJTZWNvbmQgPSB0aGlzLmNyZWF0ZUNhbGVuZGFyKHRoaXMuX2RhdGVTZWNvbmQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckRhdGVzKCkge1xyXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLl9kYXRlRm9ybS5zZXRWYWx1ZSh7IHN0YXJ0RGF0ZTogbnVsbCwgZW5kRGF0ZTogbnVsbCB9KTtcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLl9kYXRlRm9ybS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvVG9kYXkoKSB7XHJcbiAgICB0aGlzLl9kYXRlRmlyc3QgPSBtb21lbnQuZGVmYXVsdCgpO1xyXG4gICAgdGhpcy5fZGF0ZVNlY29uZCA9IG1vbWVudC5kZWZhdWx0KCkuYWRkKDEsICdNJyk7XHJcbiAgICB0aGlzLmJ1aWxkKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYnVpbGQoKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHZhbHVlICYmXHJcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ3N0YXJ0RGF0ZScpICYmXHJcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2VuZERhdGUnKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX2RhdGVGb3JtLnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5fZGF0ZUZvcm0udmFsdWUpO1xyXG4gICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKHRoaXMuX2RhdGVGb3JtLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xlYXJEYXRlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZUZvcm0udmFsdWU7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgoKSB7XHJcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMuX2RhdGVGaXJzdC5hZGQoMSwgJ00nKTtcclxuICAgIHRoaXMuX2RhdGVTZWNvbmQuYWRkKDEsICdNJyk7XHJcblxyXG4gICAgdGhpcy5fZGF5c0FyckZpcnN0ID0gdGhpcy5jcmVhdGVDYWxlbmRhcih0aGlzLl9kYXRlRmlyc3QpO1xyXG4gICAgdGhpcy5fZGF5c0FyclNlY29uZCA9IHRoaXMuY3JlYXRlQ2FsZW5kYXIodGhpcy5fZGF0ZVNlY29uZCk7XHJcbiAgfVxyXG5cclxuICBwcmV2aW91c01vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLl9kYXRlRmlyc3Quc3VidHJhY3QoMSwgJ00nKTtcclxuICAgIHRoaXMuX2RhdGVTZWNvbmQuc3VidHJhY3QoMSwgJ00nKTtcclxuXHJcbiAgICB0aGlzLl9kYXlzQXJyRmlyc3QgPSB0aGlzLmNyZWF0ZUNhbGVuZGFyKHRoaXMuX2RhdGVGaXJzdCk7XHJcbiAgICB0aGlzLl9kYXlzQXJyU2Vjb25kID0gdGhpcy5jcmVhdGVDYWxlbmRhcih0aGlzLl9kYXRlU2Vjb25kKTtcclxuICB9XHJcblxyXG4gIHRvZGF5Q2hlY2soZGF5OiBhbnkpIHtcclxuICAgIGlmICghZGF5KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbW9tZW50LmRlZmF1bHQoKS5mb3JtYXQoJ0wnKSA9PT0gZGF5LmZvcm1hdCgnTCcpO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxlY3RlZChkYXk6IGFueSkge1xyXG4gICAgaWYgKCFkYXkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzdGFydERhdGVNb21lbnQgPSBtb21lbnQuZGVmYXVsdCh0aGlzLl9kYXRlRm9ybS52YWx1ZS5zdGFydERhdGUsICdZWVlZLU1NLUREJyk7XHJcbiAgICBsZXQgZW5kRGF0ZU1vbWVudCA9IG1vbWVudC5kZWZhdWx0KHRoaXMuX2RhdGVGb3JtLnZhbHVlLmVuZERhdGUsICdZWVlZLU1NLUREJyk7XHJcblxyXG4gICAgaWYgKHRoaXMuX2RhdGVGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBzdGFydERhdGVNb21lbnQuaXNTYW1lT3JCZWZvcmUoZGF5KSAmJiBlbmREYXRlTW9tZW50LmlzU2FtZU9yQWZ0ZXIoZGF5KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5fZGF0ZUZvcm0uZ2V0KCdzdGFydERhdGUnKS52YWxpZCkge1xyXG4gICAgICByZXR1cm4gc3RhcnREYXRlTW9tZW50LmlzU2FtZShkYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZChkYXkpIHtcclxuICAgIGNvbnN0IHsgX21pbkRhdGUgfSA9IHRoaXM7XHJcbiAgICBpZiAoX21pbkRhdGUpIHtcclxuICAgICAgY29uc3QgZmlyc3REYXkgPSBtb21lbnQuZGVmYXVsdChfbWluRGF0ZSk7XHJcbiAgICAgIHJldHVybiBkYXkuaXNCZWZvcmUoZmlyc3REYXkuc3VidHJhY3QoMSwgJ2RheScpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzRmlyc3RTZWxlY3RlZChkYXkpIHtcclxuICAgIGNvbnN0IHsgX2RhdGVGb3JtIH0gPSB0aGlzO1xyXG4gICAgY29uc3QgeyBzdGFydERhdGUgfSA9IF9kYXRlRm9ybS52YWx1ZTtcclxuICAgIHJldHVybiBkYXk/LmlzU2FtZShzdGFydERhdGUpO1xyXG4gIH1cclxuXHJcbiAgaXNMYXN0U2VsZWN0ZWQoZGF5OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgX2RhdGVGb3JtIH0gPSB0aGlzO1xyXG4gICAgY29uc3QgeyBlbmREYXRlIH0gPSBfZGF0ZUZvcm0udmFsdWU7XHJcbiAgICByZXR1cm4gZGF5Py5pc1NhbWUoZW5kRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZERhdGUoZGF5OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgeyBfZGF0ZUZvcm0sIF9taW5EYXRlIH0gPSB0aGlzO1xyXG4gICAgbGV0IGRheUZvcm1hdHRlZCA9IGRheS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuXHJcbiAgICBpZiAoX21pbkRhdGUpIHtcclxuICAgICAgY29uc3QgZmlyc3REYXkgPSBtb21lbnQuZGVmYXVsdChfbWluRGF0ZSk7XHJcbiAgICAgIGlmIChkYXkuaXNCZWZvcmUoZmlyc3REYXkuc3VidHJhY3QoMSwgJ2RheScpKSkgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChfZGF0ZUZvcm0udmFsaWQpIHtcclxuICAgICAgdGhpcy5jbGVhckRhdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHsgc3RhcnREYXRlLCBlbmREYXRlIH0gPSBfZGF0ZUZvcm0udmFsdWU7XHJcbiAgICBpZiAoc3RhcnREYXRlKSB7XHJcbiAgICAgIGlmIChtb21lbnQuZGVmYXVsdChzdGFydERhdGUpLmlzQWZ0ZXIobW9tZW50LmRlZmF1bHQoZGF5Rm9ybWF0dGVkKSkpIHtcclxuICAgICAgICBlbmREYXRlID0gc3RhcnREYXRlO1xyXG4gICAgICAgIHN0YXJ0RGF0ZSA9IGRheUZvcm1hdHRlZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlbmREYXRlID0gZGF5Rm9ybWF0dGVkO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Ugc3RhcnREYXRlID0gZGF5Rm9ybWF0dGVkO1xyXG5cclxuICAgIGlmIChzdGFydERhdGUpIHtcclxuICAgICAgX2RhdGVGb3JtLmdldCgnc3RhcnREYXRlJykucGF0Y2hWYWx1ZShzdGFydERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlbmREYXRlKSB7XHJcbiAgICAgIF9kYXRlRm9ybS5nZXQoJ2VuZERhdGUnKS5wYXRjaFZhbHVlKGVuZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMud3JpdGVWYWx1ZShfZGF0ZUZvcm0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0UmFuZ2VPZkRheXMoZGF5czogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHJldHVybjtcclxuICAgIGNvbnN0IHsgX2RhdGVGb3JtLCBfbWluRGF0ZSwgdG9kYXksIG1vdmVEYXlzRm9yd2FyZCB9ID0gdGhpcztcclxuICAgIGNvbnN0IHsgc3RhcnREYXRlIH0gPSBfZGF0ZUZvcm0udmFsdWU7XHJcblxyXG4gICAgY29uc3QgZmlyc3REYXkgPSBtb21lbnQuZGVmYXVsdChzdGFydERhdGUgfHwgX21pbkRhdGUgfHwgdG9kYXkpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gICAgY29uc3QgbWV0aG9kID0gbW92ZURheXNGb3J3YXJkID8gJ2FkZCcgOiAnc3VidHJhY3QnO1xyXG4gICAgY29uc3QgbGFzdERheSA9IG1vbWVudC5kZWZhdWx0KGZpcnN0RGF5KVttZXRob2RdKGRheXMsICdkYXknKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICAgIFxyXG4gICAgaWYobW92ZURheXNGb3J3YXJkKXtcclxuICAgICAgX2RhdGVGb3JtLmdldCgnc3RhcnREYXRlJykucGF0Y2hWYWx1ZShmaXJzdERheSk7XHJcbiAgICAgIF9kYXRlRm9ybS5nZXQoJ2VuZERhdGUnKS5wYXRjaFZhbHVlKGxhc3REYXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX2RhdGVGb3JtLmdldCgnc3RhcnREYXRlJykucGF0Y2hWYWx1ZShsYXN0RGF5KTtcclxuICAgICAgX2RhdGVGb3JtLmdldCgnZW5kRGF0ZScpLnBhdGNoVmFsdWUoZmlyc3REYXkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53cml0ZVZhbHVlKF9kYXRlRm9ybS52YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -3070,16 +3070,25 @@ class MonkeyDateRangePickerComponent {
|
|
|
3070
3070
|
this._daysArrSecond = [];
|
|
3071
3071
|
this._disabled = false;
|
|
3072
3072
|
this._minDate = null;
|
|
3073
|
+
this._startDate = null;
|
|
3074
|
+
this._endDate = null;
|
|
3075
|
+
this.unsubscribeAll = new Subject();
|
|
3073
3076
|
this.initDateRange();
|
|
3074
3077
|
}
|
|
3075
3078
|
set minDate(value) {
|
|
3076
3079
|
this._minDate = !this.moveDaysForward ? null : value;
|
|
3077
3080
|
}
|
|
3078
3081
|
initDateRange() {
|
|
3079
|
-
|
|
3082
|
+
var _a, _b, _c;
|
|
3083
|
+
this._dateForm = this.fb.group({
|
|
3080
3084
|
startDate: [null, Validators.required],
|
|
3081
3085
|
endDate: [null, Validators.required],
|
|
3082
|
-
})
|
|
3086
|
+
});
|
|
3087
|
+
(_c = (_b = (_a = this._dateForm) === null || _a === void 0 ? void 0 : _a.valueChanges) === null || _b === void 0 ? void 0 : _b.pipe(takeUntil(this.unsubscribeAll))) === null || _c === void 0 ? void 0 : _c.subscribe((values) => {
|
|
3088
|
+
const { startDate, endDate } = values;
|
|
3089
|
+
this._startDate = startDate && moment.default(startDate);
|
|
3090
|
+
this._endDate = endDate && moment.default(endDate);
|
|
3091
|
+
});
|
|
3083
3092
|
}
|
|
3084
3093
|
createCalendar(month) {
|
|
3085
3094
|
let firstDay = moment.default(month).startOf('M');
|
|
@@ -3284,6 +3293,38 @@ MonkeyDateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
3284
3293
|
{{ helperMessage }}
|
|
3285
3294
|
</helper>
|
|
3286
3295
|
</mecx-date-range-picker-group-header>
|
|
3296
|
+
<mecx-date-range-picker-selected-dates>
|
|
3297
|
+
<div class="from"
|
|
3298
|
+
[class.actual]="!_startDate">
|
|
3299
|
+
<span class="title">
|
|
3300
|
+
{{ i18n?.from }}
|
|
3301
|
+
</span>
|
|
3302
|
+
<span class="data">
|
|
3303
|
+
<ng-container *ngIf="_startDate; else select">
|
|
3304
|
+
{{ _startDate?.format('DD') }}
|
|
3305
|
+
{{ i18n?.of }}
|
|
3306
|
+
{{ i18n?.months?.[_startDate.format('M')] }},
|
|
3307
|
+
{{ _startDate.format('YYYY') }}
|
|
3308
|
+
</ng-container>
|
|
3309
|
+
</span>
|
|
3310
|
+
</div>
|
|
3311
|
+
<div class="to" [class.actual]="_startDate">
|
|
3312
|
+
<span class="title">
|
|
3313
|
+
{{ i18n?.to }}
|
|
3314
|
+
</span>
|
|
3315
|
+
<span class="data">
|
|
3316
|
+
<ng-container *ngIf="_endDate; else select">
|
|
3317
|
+
{{ _endDate.format('DD') }}
|
|
3318
|
+
{{ i18n?.of }}
|
|
3319
|
+
{{ i18n?.months?.[_endDate.format('M')] }},
|
|
3320
|
+
{{ _endDate.format('YYYY') }}
|
|
3321
|
+
</ng-container>
|
|
3322
|
+
</span>
|
|
3323
|
+
</div>
|
|
3324
|
+
<ng-template #select>
|
|
3325
|
+
{{ i18n?.select }}
|
|
3326
|
+
</ng-template>
|
|
3327
|
+
</mecx-date-range-picker-selected-dates>
|
|
3287
3328
|
<mecx-date-range-picker-group-body>
|
|
3288
3329
|
<mecx-date-range-picker class="first-date-range">
|
|
3289
3330
|
<mecx-date-range-picker-header>
|
|
@@ -3429,7 +3470,7 @@ MonkeyDateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
|
3429
3470
|
</monkey-button>
|
|
3430
3471
|
</mecx-date-range-picker-group-action>
|
|
3431
3472
|
</mecx-date-range-picker-group>
|
|
3432
|
-
`, isInline: true, components: [{ type: MonkeyButtonComponent, selector: "monkey-button", inputs: ["label", "icon", "iconPosition", "type", "color", "disabled", "size"] }], directives: [{ type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
3473
|
+
`, isInline: true, components: [{ type: MonkeyButtonComponent, selector: "monkey-button", inputs: ["label", "icon", "iconPosition", "type", "color", "disabled", "size"] }], directives: [{ type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
3433
3474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MonkeyDateRangePickerComponent, decorators: [{
|
|
3434
3475
|
type: Component,
|
|
3435
3476
|
args: [{
|
|
@@ -3444,6 +3485,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
3444
3485
|
{{ helperMessage }}
|
|
3445
3486
|
</helper>
|
|
3446
3487
|
</mecx-date-range-picker-group-header>
|
|
3488
|
+
<mecx-date-range-picker-selected-dates>
|
|
3489
|
+
<div class="from"
|
|
3490
|
+
[class.actual]="!_startDate">
|
|
3491
|
+
<span class="title">
|
|
3492
|
+
{{ i18n?.from }}
|
|
3493
|
+
</span>
|
|
3494
|
+
<span class="data">
|
|
3495
|
+
<ng-container *ngIf="_startDate; else select">
|
|
3496
|
+
{{ _startDate?.format('DD') }}
|
|
3497
|
+
{{ i18n?.of }}
|
|
3498
|
+
{{ i18n?.months?.[_startDate.format('M')] }},
|
|
3499
|
+
{{ _startDate.format('YYYY') }}
|
|
3500
|
+
</ng-container>
|
|
3501
|
+
</span>
|
|
3502
|
+
</div>
|
|
3503
|
+
<div class="to" [class.actual]="_startDate">
|
|
3504
|
+
<span class="title">
|
|
3505
|
+
{{ i18n?.to }}
|
|
3506
|
+
</span>
|
|
3507
|
+
<span class="data">
|
|
3508
|
+
<ng-container *ngIf="_endDate; else select">
|
|
3509
|
+
{{ _endDate.format('DD') }}
|
|
3510
|
+
{{ i18n?.of }}
|
|
3511
|
+
{{ i18n?.months?.[_endDate.format('M')] }},
|
|
3512
|
+
{{ _endDate.format('YYYY') }}
|
|
3513
|
+
</ng-container>
|
|
3514
|
+
</span>
|
|
3515
|
+
</div>
|
|
3516
|
+
<ng-template #select>
|
|
3517
|
+
{{ i18n?.select }}
|
|
3518
|
+
</ng-template>
|
|
3519
|
+
</mecx-date-range-picker-selected-dates>
|
|
3447
3520
|
<mecx-date-range-picker-group-body>
|
|
3448
3521
|
<mecx-date-range-picker class="first-date-range">
|
|
3449
3522
|
<mecx-date-range-picker-header>
|