@colijnit/corecomponents_v12 257.1.11 → 257.1.13
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/bundles/colijnit-corecomponents_v12.umd.js +31 -2
- package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
- package/colijnit-corecomponents_v12-257.1.11.tgz +0 -0
- package/colijnit-corecomponents_v12.metadata.json +1 -1
- package/esm2015/lib/components/input-search/input-search.component.js +7 -1
- package/esm2015/lib/components/input-text/input-text.component.js +29 -4
- package/fesm2015/colijnit-corecomponents_v12.js +33 -2
- package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
- package/lib/components/input-search/input-search.component.d.ts +1 -0
- package/lib/components/input-text/input-text.component.d.ts +6 -2
- package/lib/components/input-text/style/_layout.scss +8 -4
- package/lib/components/input-text/style/_material-definition.scss +1 -0
- package/package.json +1 -1
|
@@ -23,6 +23,9 @@ export class InputSearchComponent extends BaseInputComponent {
|
|
|
23
23
|
const enterKeys = ['Enter', 'NumpadEnter', 'Go'];
|
|
24
24
|
if (enterKeys.includes(event.key)) {
|
|
25
25
|
event.preventDefault();
|
|
26
|
+
if (this.isMobileDevice()) {
|
|
27
|
+
event.target.blur();
|
|
28
|
+
}
|
|
26
29
|
this.search.next(this.model);
|
|
27
30
|
}
|
|
28
31
|
}
|
|
@@ -30,6 +33,9 @@ export class InputSearchComponent extends BaseInputComponent {
|
|
|
30
33
|
this.model = model;
|
|
31
34
|
this.modelChange.next(this.model);
|
|
32
35
|
}
|
|
36
|
+
isMobileDevice() {
|
|
37
|
+
return /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
|
|
38
|
+
}
|
|
33
39
|
}
|
|
34
40
|
InputSearchComponent.decorators = [
|
|
35
41
|
{ type: Component, args: [{
|
|
@@ -78,4 +84,4 @@ __decorate([
|
|
|
78
84
|
__decorate([
|
|
79
85
|
InputBoolean()
|
|
80
86
|
], InputSearchComponent.prototype, "useRightIcon", void 0);
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1zZWFyY2gvaW5wdXQtc2VhcmNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekksT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQTRCN0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGtCQUEwQjtJQTFCcEU7O1FBNEJrQixlQUFVLEdBQXVCLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztRQU12RSxXQUFNLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFHMUQsY0FBUyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRy9ELGtCQUFhLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFHekUsbUJBQWMsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUkxRSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUk3QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQVU5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQXlCdEMsQ0FBQztJQXRCUSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQW9CO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDeEIsS0FBSyxDQUFDLE1BQXNCLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDdEM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBYTtRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNPLGNBQWM7UUFDcEIsT0FBTywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7OztZQXJGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1AsY0FBYztpQkFDakI7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7MEJBS0UsS0FBSztxQkFHTCxNQUFNO3dCQUdOLE1BQU07NEJBR04sTUFBTTs2QkFHTixNQUFNOzBCQUdOLEtBQUs7MkJBSUwsS0FBSzsyQkFJTCxLQUFLOzRCQUdMLEtBQUs7MEJBR0wsV0FBVyxTQUFDLG9CQUFvQixjQUNoQyxLQUFLO3dCQUdMLFdBQVcsU0FBQyx1QkFBdUI7O0FBaEJwQztJQURDLFlBQVksRUFBRTt5REFDcUI7QUFJcEM7SUFEQyxZQUFZLEVBQUU7MERBQ3NCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gJy4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtJztcclxuaW1wb3J0IHtCYXNlSW5wdXRDb21wb25lbnR9IGZyb20gJy4uL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3InO1xyXG5pbXBvcnQge1NhZmVIdG1sfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtPdmVybGF5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9vdmVybGF5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1pbnB1dC1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8Y28taW5wdXQtdGV4dFxyXG4gICAgICBbbmdDbGFzc109XCJjdXN0b21Dc3NDbGFzc1wiXHJcbiAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgIFtsZWZ0SWNvbl09XCJ1c2VMZWZ0SWNvbiA/IHNlYXJjaEljb24gOiBudWxsXCJcclxuICAgICAgW3JpZ2h0SWNvbl09XCJ1c2VSaWdodEljb24gPyBzZWFyY2hJY29uIDogbnVsbFwiXHJcbiAgICAgIFtsZWZ0SWNvbkRhdGFdPVwidXNlTGVmdEljb24gJiYgbGVmdEljb25EYXRhID8gbGVmdEljb25EYXRhIDogdW5kZWZpbmVkXCJcclxuICAgICAgW3JpZ2h0SWNvbkRhdGFdPVwidXNlUmlnaHRJY29uICYmIHJpZ2h0SWNvbkRhdGEgPyByaWdodEljb25EYXRhIDogdW5kZWZpbmVkXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW2N1c3RvbUhlaWdodF09XCJ0cnVlXCJcclxuICAgICAgW3Nob3dQbGFjZWhvbGRlck9uRm9jdXNdPVwiZmFsc2VcIlxyXG4gICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIChsZWZ0SWNvbkNsaWNrKT1cImxlZnRJY29uQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKHJpZ2h0SWNvbkNsaWNrKT1cInJpZ2h0SWNvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChrZXl1cCk9XCJrZXlVcC5lbWl0KCRldmVudClcIlxyXG4gICAgICAoaXNGb2N1c2VkKT1cImlzRm9jdXNlZC5lbWl0KCRldmVudClcIlxyXG4gICAgPjwvY28taW5wdXQtdGV4dD5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgICBPdmVybGF5U2VydmljZVxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRTZWFyY2hDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hJY29uOiBDb3JlQ29tcG9uZW50c0ljb24gPSBDb3JlQ29tcG9uZW50c0ljb24uTWFnbmlmaWVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaXNGb2N1c2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBsZWZ0SWNvbkNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb25DbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyB1c2VMZWZ0SWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyB1c2VSaWdodEljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGVmdEljb25EYXRhOiBTYWZlSHRtbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmlnaHRJY29uRGF0YTogU2FmZUh0bWwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY2VudGVyLWxhYmVsJylcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjZW50ZXJMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWlucHV0LXNlYXJjaCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVudGVyS2V5cyA9IFsnRW50ZXInLCAnTnVtcGFkRW50ZXInLCAnR28nXTtcclxuICAgIGlmIChlbnRlcktleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBpZiAodGhpcy5pc01vYmlsZURldmljZSgpKSB7XHJcbiAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuYmx1cigpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VhcmNoLm5leHQodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTW9kZWxDaGFuZ2UobW9kZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5uZXh0KHRoaXMubW9kZWwpO1xyXG4gIH1cclxuICBwcml2YXRlIGlzTW9iaWxlRGV2aWNlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2QvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Optional, Output, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Injector, Input, Optional, Output, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { BaseInputComponent } from '../base/base-input.component';
|
|
3
3
|
import { SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME } from '../../interfaces/screen-config-adapter-component-interface-name';
|
|
4
4
|
import { FormInputUserModelChangeListenerService } from '../../core/service/form-input-user-change-listener.service';
|
|
@@ -6,9 +6,10 @@ import { NgZoneWrapperService } from '../../core/service/ng-zone-wrapper.service
|
|
|
6
6
|
import { FormComponent } from '../form/form.component';
|
|
7
7
|
import { OverlayService } from '../../service/overlay.service';
|
|
8
8
|
export class InputTextComponent extends BaseInputComponent {
|
|
9
|
-
constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
9
|
+
constructor(formComponent, injector, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
10
10
|
super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
11
11
|
this.formComponent = formComponent;
|
|
12
|
+
this.injector = injector;
|
|
12
13
|
this.changeDetector = changeDetector;
|
|
13
14
|
this.overlayService = overlayService;
|
|
14
15
|
this.componentFactoryResolver = componentFactoryResolver;
|
|
@@ -78,6 +79,17 @@ export class InputTextComponent extends BaseInputComponent {
|
|
|
78
79
|
get model() {
|
|
79
80
|
return super.model;
|
|
80
81
|
}
|
|
82
|
+
get pipedModel() {
|
|
83
|
+
if (this.formatPipe) {
|
|
84
|
+
try {
|
|
85
|
+
const pipe = new this.formatPipe(this);
|
|
86
|
+
return pipe.transform(this.model);
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return this.model;
|
|
92
|
+
}
|
|
81
93
|
// exclude some non-digit characters, since input type 'number' still allows the characters -, + and e
|
|
82
94
|
excludeNonDigitChars(event) {
|
|
83
95
|
const excludedKeys = this.excludePlusMinus ? ['e', '-', '+'] : ['e'];
|
|
@@ -136,6 +148,11 @@ export class InputTextComponent extends BaseInputComponent {
|
|
|
136
148
|
}
|
|
137
149
|
this.isFocused.emit(false);
|
|
138
150
|
}
|
|
151
|
+
handleDoFocus(event) {
|
|
152
|
+
if (!this.readonly) {
|
|
153
|
+
this.doFocus(event);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
139
156
|
clearInput(event) {
|
|
140
157
|
this.setModel(null);
|
|
141
158
|
this.clearIconClick.emit(event);
|
|
@@ -153,7 +170,13 @@ InputTextComponent.decorators = [
|
|
|
153
170
|
<div class="input-wrapper">
|
|
154
171
|
<label *ngIf="showPlaceholderOnFocus || (!showPlaceholderOnFocus && !hasValue && !focused)"
|
|
155
172
|
[textContent]="placeholder"></label>
|
|
156
|
-
<input
|
|
173
|
+
<span class="input-text-formatted" *ngIf="!focused && !useContent && formatPipe"
|
|
174
|
+
[class.show]="!focused && !useContent && formatPipe"
|
|
175
|
+
[ngClass]="align"
|
|
176
|
+
[textContent]="pipedModel"
|
|
177
|
+
(click)="handleDoFocus($event)"
|
|
178
|
+
></span>
|
|
179
|
+
<input [class.show]="focused || !formatPipe" #input
|
|
157
180
|
[class.input-input-hidden]="useContent"
|
|
158
181
|
[ngClass]="align"
|
|
159
182
|
[type]="(isFocusedOnDate || (hasValue && emptyPlace)) ? 'date' : (digitsOnly ? 'number' : (type === 'date' ? 'text' : type))"
|
|
@@ -209,6 +232,7 @@ InputTextComponent.decorators = [
|
|
|
209
232
|
];
|
|
210
233
|
InputTextComponent.ctorParameters = () => [
|
|
211
234
|
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
235
|
+
{ type: Injector },
|
|
212
236
|
{ type: ChangeDetectorRef },
|
|
213
237
|
{ type: OverlayService },
|
|
214
238
|
{ type: ComponentFactoryResolver },
|
|
@@ -221,6 +245,7 @@ InputTextComponent.propDecorators = {
|
|
|
221
245
|
placeholder: [{ type: Input }],
|
|
222
246
|
align: [{ type: Input }],
|
|
223
247
|
type: [{ type: Input }],
|
|
248
|
+
formatPipe: [{ type: Input }],
|
|
224
249
|
min: [{ type: Input }],
|
|
225
250
|
max: [{ type: Input }],
|
|
226
251
|
pattern: [{ type: Input }],
|
|
@@ -253,4 +278,4 @@ InputTextComponent.propDecorators = {
|
|
|
253
278
|
handleDocumentMouseUp: [{ type: HostListener, args: ['document:mouseup', ['$event'],] }],
|
|
254
279
|
model: [{ type: Input }]
|
|
255
280
|
};
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNMLDhDQUE4QyxFQUMvQyxNQUFNLGlFQUFpRSxDQUFDO0FBR3pFLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ25ILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFpRTdELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxrQkFBdUI7SUE2STdELFlBQ3FCLGFBQTRCLEVBQ3JDLGNBQWlDLEVBQ2pDLGNBQThCLEVBQzlCLHdCQUFrRCxFQUNsRCxzQkFBZ0UsRUFDaEUsYUFBb0MsRUFDdkMsVUFBdUI7UUFFOUIsS0FBSyxDQUFDLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBUmhHLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3JDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFB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S0FBSyxZQUNMLFdBQVcsU0FBQyxtQkFBbUI7cUJBRy9CLFdBQVcsU0FBQyxjQUFjOzRCQUsxQixNQUFNO2dDQUdOLE1BQU07OEJBR04sTUFBTTs2QkFHTixNQUFNO2lDQUdOLE1BQU07K0JBR04sTUFBTTs2QkFHTixNQUFNO3dCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLHFCQUFxQjswQkFLakMsV0FBVyxTQUFDLHFCQUFxQjsyQkFLakMsV0FBVyxTQUFDLHNCQUFzQjswQkFLbEMsV0FBVyxTQUFDLHFCQUFxQjtvQ0FHakMsWUFBWSxTQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO29CQVUzQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9iYXNlL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FXHJcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY3JlZW4tY29uZmlnLWFkYXB0ZXItY29tcG9uZW50LWludGVyZmFjZS1uYW1lJztcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gJy4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtJztcclxuaW1wb3J0IHtLZXlib2FyZENvZGV9IGZyb20gJy4uLy4uL2NvcmUvZW51bS9rZXlib2FyZC1jb2RlLmVudW0nO1xyXG5pbXBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlL2Zvcm0taW5wdXQtdXNlci1jaGFuZ2UtbGlzdGVuZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Tmdab25lV3JhcHBlclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7U2FmZUh0bWx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQge092ZXJsYXlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL292ZXJsYXkuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWlucHV0LXRleHQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtdGV4dC13cmFwcGVyXCIgb3ZlcmxheVBhcmVudCAjcGFyZW50Rm9yT3ZlcmxheT1cIm92ZXJsYXlQYXJlbnRcIj5cclxuICAgICAgPGNvLWljb24gKm5nSWY9XCJsZWZ0SWNvbiB8fCBsZWZ0SWNvbkRhdGFcIiBjbGFzcz1cImlucHV0LXRleHQtbGVmdC1pY29uXCIgW2ljb25dPVwibGVmdEljb25cIiBbaWNvbkRhdGFdPVwibGVmdEljb25EYXRhXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUxlZnRJY29uQ2xpY2soJGV2ZW50KVwiIChtb3VzZWRvd24pPVwiaGFuZGxlTGVmdEljb25Nb3VzZURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChtb3VzZXVwKT1cImhhbmRsZUxlZnRJY29uTW91c2VVcCgkZXZlbnQpXCI+PC9jby1pY29uPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwibGVmdEljb24gfHwgbGVmdEljb25EYXRhXCIgY2xhc3M9XCJzcGFjZXIgbGVmdC1pY29uXCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgPGxhYmVsICpuZ0lmPVwic2hvd1BsYWNlaG9sZGVyT25Gb2N1cyB8fCAoIXNob3dQbGFjZWhvbGRlck9uRm9jdXMgJiYgIWhhc1ZhbHVlICYmICFmb2N1c2VkKVwiXHJcbiAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJwbGFjZWhvbGRlclwiPjwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0ICNpbnB1dFxyXG4gICAgICAgICAgICAgICBbY2xhc3MuaW5wdXQtaW5wdXQtaGlkZGVuXT1cInVzZUNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJhbGlnblwiXHJcbiAgICAgICAgICAgICAgIFt0eXBlXT1cIihpc0ZvY3VzZWRPbkRhdGUgfHwgKGhhc1ZhbHVlICYmIGVtcHR5UGxhY2UpKSA/ICdkYXRlJyA6IChkaWdpdHNPbmx5ID8gJ251bWJlcicgOiAodHlwZSA9PT0gJ2RhdGUnID8gJ3RleHQnIDogdHlwZSkpXCJcclxuICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInR5cGUgPT09ICdkYXRlJyAmJiAhaXNGb2N1c2VkT25EYXRlID8gJycgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cInR5cGUgPT09ICdkYXRlJyA/IHBhdHRlcm4gOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgICAgICAgICAgIFttaW5dPVwiKHR5cGUgPT09ICdudW1iZXInIHx8IHR5cGUgPT09ICdkYXRlJykgJiYgdGhpcy5taW4gPyB0aGlzLm1pbiA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgIFttYXhdPVwiKHR5cGUgPT09ICdudW1iZXInIHx8IHR5cGUgPT09ICdkYXRlJykgJiYgdGhpcy5tYXggPyB0aGlzLm1heCA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGVsQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChrZXlkb3duKT1cImRpZ2l0c09ubHkgPyBleGNsdWRlTm9uRGlnaXRDaGFycygkZXZlbnQpIDogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgIChrZXl1cCk9XCJrZXlVcC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoZm9jdXNpbik9XCJoYW5kbGVJbnB1dEZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiaGFuZGxlQmx1cigkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZUNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250ZW50LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGNvLWljb24gW2NsYXNzLnNob3ddPVwic2hvd0NsZWFyQnV0dG9uICYmIGhhc1ZhbHVlICYmICFyZWFkb25seVwiIGNsYXNzPVwiaW5wdXQtdGV4dC1jbGVhci1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgIFtpY29uXT1cImljb25zLkNyb3NzU2tpbm55XCIgKGNsaWNrKT1cImNsZWFySW5wdXQoJGV2ZW50KVwiPjwvY28taWNvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlyZWQtaW5kaWNhdG9yXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwicmlnaHRJY29uIHx8IHJpZ2h0SWNvbkRhdGFcIiBjbGFzcz1cInNwYWNlciByaWdodC1pY29uXCI+PC9kaXY+XHJcbiAgICAgIDxjby1pY29uICpuZ0lmPVwicmlnaHRJY29uIHx8IHJpZ2h0SWNvbkRhdGFcIiBjbGFzcz1cImlucHV0LXRleHQtcmlnaHQtaWNvblwiIFtpY29uXT1cInJpZ2h0SWNvblwiXHJcbiAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJyaWdodEljb25EYXRhXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVJpZ2h0SWNvbkNsaWNrKCRldmVudClcIiAobW91c2Vkb3duKT1cImhhbmRsZVJpZ2h0SWNvbk1vdXNlRG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKG1vdXNldXApPVwiaGFuZGxlUmlnaHRJY29uTW91c2VVcCgkZXZlbnQpXCI+PC9jby1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tXHJcbiAgICAgICAgICAgIDxjby1jb21taXQtYnV0dG9ucyAqbmdJZj1cInNob3dTYXZlQ2FuY2VsICYmIGZvY3VzZWQgJiYgY2FuU2F2ZU9yQ2FuY2VsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21taXR0aW5nXT1cImNvbW1pdHRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbW1pdEZpbmlzaGVkXT1cImNvbW1pdEZpbmlzaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21taXRDbGljayk9XCJjb21taXRDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxDbGljayk9XCJjYW5jZWxDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2NvLWNvbW1pdC1idXR0b25zPlxyXG4gICAgLS0+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIE92ZXJsYXlTZXJ2aWNlLCB7XHJcbiAgICAgIHByb3ZpZGU6IFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0VGV4dENvbXBvbmVudClcclxuICAgIH0sIHtcclxuICAgICAgcHJvdmlkZTogQmFzZUlucHV0Q29tcG9uZW50LFxyXG4gICAgICB1c2VFeGlzdGluZzogSW5wdXRUZXh0Q29tcG9uZW50XHJcbiAgICB9XSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFRleHRDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQ8YW55PiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB1c2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWxpZ246IHN0cmluZyA9ICdsZWZ0JztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdHlwZTogc3RyaW5nID0gJ3RleHQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtaW46IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWF4OiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhdHRlcm46IHN0cmluZyA9ICdkZC1NTS15eXl5JztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlnaXRzT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBleGNsdWRlUGx1c01pbnVzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0NsZWFyQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMga2V5RG93bldoaXRlTGlzdDogS2V5Ym9hcmRDb2RlW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dQbGFjZWhvbGRlck9uRm9jdXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsZWZ0SWNvbjogQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb246IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGVmdEljb25EYXRhOiBTYWZlSHRtbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmlnaHRJY29uRGF0YTogU2FmZUh0bWwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNlbGVjdE9uRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW1wdHlQbGFjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5vLXN0eWxlJylcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBub1N0eWxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlLWFycm93cycpXHJcbiAgcHVibGljIGhpZGVBcnJvd0J1dHRvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaXNEYXRlXCIpXHJcbiAgcHVibGljIGdldCBpc0RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBcImRhdGVcIjtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBsZWZ0SWNvbkNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBsZWZ0SWNvbk1vdXNlRG93bjogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbGVmdEljb25Nb3VzZVVwOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb25DbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmlnaHRJY29uTW91c2VEb3duOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb25Nb3VzZVVwOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbGVhckljb25DbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaXNGb2N1c2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28taW5wdXQtdGV4dCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtbGVmdC1pY29uJylcclxuICBwdWJsaWMgZ2V0IGhhc0xlZnRJY29uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubGVmdEljb24gIT09IHVuZGVmaW5lZCAmJiB0aGlzLmxlZnRJY29uICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtcmlnaHQtaWNvbicpXHJcbiAgcHVibGljIGdldCBoYXNSaWdodEljb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yaWdodEljb24gIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJpZ2h0SWNvbiAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLW93bi1sYWJlbCcpXHJcbiAgcHVibGljIGhhc093bkxhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIGhhbmRsZURvY3VtZW50TW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuX2lzTGVmdEljb25Nb3VzZURvd24pIHtcclxuICAgICAgdGhpcy5sZWZ0SWNvbk1vdXNlVXAubmV4dChldmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5faXNSaWdodEljb25Nb3VzZURvd24pIHtcclxuICAgICAgdGhpcy5yaWdodEljb25Nb3VzZVVwLm5leHQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG1vZGVsKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdudW1iZXInICYmICFpc05hTih2YWx1ZSkpIHtcclxuICAgICAgaWYgKHRoaXMubWluICYmIHZhbHVlIDwgdGhpcy5taW4gfHwgdGhpcy5tYXggJiYgdmFsdWUgPiB0aGlzLm1heCkge1xyXG4gICAgICAgIHN1cGVyLm1vZGVsID0gdGhpcy5faW5pdGlhbE1vZGVsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN1cGVyLm1vZGVsID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN1cGVyLm1vZGVsID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHN1cGVyLm1vZGVsO1xyXG4gIH1cclxuICBwdWJsaWMgaXNGb2N1c2VkT25EYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNMZWZ0SWNvbk1vdXNlRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzUmlnaHRJY29uTW91c2VEb3duOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGZvcm1Db21wb25lbnQ6IEZvcm1Db21wb25lbnQsXHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJvdGVjdGVkIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSxcclxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByb3RlY3RlZCBmb3JtVXNlckNoYW5nZUxpc3RlbmVyPzogRm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIG5nWm9uZVdyYXBwZXI/OiBOZ1pvbmVXcmFwcGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmPzogRWxlbWVudFJlZixcclxuICApIHtcclxuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIG92ZXJsYXlTZXJ2aWNlLCBmb3JtVXNlckNoYW5nZUxpc3RlbmVyLCBuZ1pvbmVXcmFwcGVyLCBlbGVtZW50UmVmKTtcclxuICAgIHN1cGVyLl9tYXJrQXNPblB1c2goKTtcclxuICB9XHJcblxyXG4gIC8vIGV4Y2x1ZGUgc29tZSBub24tZGlnaXQgY2hhcmFjdGVycywgc2luY2UgaW5wdXQgdHlwZSAnbnVtYmVyJyBzdGlsbCBhbGxvd3MgdGhlIGNoYXJhY3RlcnMgLSwgKyBhbmQgZVxyXG4gIHB1YmxpYyBleGNsdWRlTm9uRGlnaXRDaGFycyhldmVudCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZXhjbHVkZWRLZXlzID0gdGhpcy5leGNsdWRlUGx1c01pbnVzID8gWydlJywgJy0nLCAnKyddIDogWydlJ107XHJcblxyXG4gICAgcmV0dXJuICFleGNsdWRlZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVMZWZ0SWNvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmxlZnRJY29uQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTGVmdEljb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuX2lzTGVmdEljb25Nb3VzZURvd24gPSB0cnVlO1xyXG4gICAgdGhpcy5sZWZ0SWNvbk1vdXNlRG93bi5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVMZWZ0SWNvbk1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuX2lzTGVmdEljb25Nb3VzZURvd24gPSBmYWxzZTtcclxuICAgIHRoaXMubGVmdEljb25Nb3VzZVVwLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVJpZ2h0SWNvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnJpZ2h0SWNvbkNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVJpZ2h0SWNvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5faXNSaWdodEljb25Nb3VzZURvd24gPSB0cnVlO1xyXG4gICAgdGhpcy5yaWdodEljb25Nb3VzZURvd24uZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlUmlnaHRJY29uTW91c2VVcChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5faXNSaWdodEljb25Nb3VzZURvd24gPSBmYWxzZTtcclxuICAgIHRoaXMucmlnaHRJY29uTW91c2VVcC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVJbnB1dEZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgdGhpcy5pc0ZvY3VzZWRPbkRhdGUgPSB0cnVlOyAvLyBTd2l0Y2ggdG8gJ2RhdGUnIHR5cGUgd2hlbiBmb2N1c2VkXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RPbkZvY3VzKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQuc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzRm9jdXNlZC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICB0aGlzLmlzRm9jdXNlZE9uRGF0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0ZvY3VzZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJJbnB1dChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5zZXRNb2RlbChudWxsKTtcclxuICAgIHRoaXMuY2xlYXJJY29uQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzTixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsOENBQThDLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUcvSCxPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuSCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBdUU3RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsa0JBQXVCO0lBNEo3RCxZQUNxQixhQUE0QixFQUNyQyxRQUFrQixFQUNsQixjQUFpQyxFQUNqQyxjQUE4QixFQUM5Qix3QkFBa0QsRUFDbEQsc0JBQWdFLEVBQ2hFLGFBQW9DLEVBQ3ZDLFVBQXVCO1FBRTlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQVRoRyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNyQyxhQUFRLEdBQVIsUUFB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QzNCLFdBQVcsRUFBRSxrQkFBa0I7cUJBQ2hDO2lCQUFDO2dCQUNKLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUF4RU8sYUFBYSx1QkFzT2hCLFFBQVE7WUE3T21JLFFBQVE7WUFBakksaUJBQWlCO1lBU2hDLGNBQWM7WUFUK0Isd0JBQXdCO1lBS3JFLHVDQUF1QztZQUN2QyxvQkFBb0I7WUFObUQsVUFBVTs7O3lCQWtGdEYsS0FBSzswQkFHTCxLQUFLO29CQUdMLEtBQUs7bUJBR0wsS0FBSzt5QkFHTCxLQUFLO2tCQUdMLEtBQUs7a0JBR0wsS0FBSztzQkFHTCxLQUFLO3lCQUdMLEtBQUs7K0JBR0wsS0FBSzs4QkFHTCxLQUFLOytCQUdMLEtBQUs7cUNBR0wsS0FBSzt1QkFHTCxLQUFLO3dCQUdMLEtBQUs7MkJBR0wsS0FBSzs0QkFHTCxLQUFLOzRCQUdMLEtBQUs7eUJBR0wsS0FBSztzQkFHTCxXQUFXLFNBQUMsZ0JBQWdCLGNBQzVCLEtBQUs7K0JBR0wsS0FBSyxZQUNMLFdBQVcsU0FBQyxtQkFBbUI7cUJBRy9CLFdBQVcsU0FBQyxjQUFjOzRCQUsxQixNQUFNO2dDQUdOLE1BQU07OEJBR04sTUFBTTs2QkFHTixNQUFNO2lDQUdOLE1BQU07K0JBR04sTUFBTTs2QkFHTixNQUFNO3dCQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLHFCQUFxQjswQkFLakMsV0FBVyxTQUFDLHFCQUFxQjsyQkFLakMsV0FBVyxTQUFDLHNCQUFzQjswQkFLbEMsV0FBVyxTQUFDLHFCQUFxQjtvQ0FHakMsWUFBWSxTQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO29CQVUzQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9iYXNlL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHtTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjcmVlbi1jb25maWctYWRhcHRlci1jb21wb25lbnQtaW50ZXJmYWNlLW5hbWUnO1xyXG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW0nO1xyXG5pbXBvcnQge0tleWJvYXJkQ29kZX0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL2tleWJvYXJkLWNvZGUuZW51bSc7XHJcbmltcG9ydCB7Rm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2UvZm9ybS1pbnB1dC11c2VyLWNoYW5nZS1saXN0ZW5lci5zZXJ2aWNlJztcclxuaW1wb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlL25nLXpvbmUtd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7T3ZlcmxheVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvb3ZlcmxheS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28taW5wdXQtdGV4dCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC10ZXh0LXdyYXBwZXJcIiBvdmVybGF5UGFyZW50ICNwYXJlbnRGb3JPdmVybGF5PVwib3ZlcmxheVBhcmVudFwiPlxyXG4gICAgICA8Y28taWNvbiAqbmdJZj1cImxlZnRJY29uIHx8IGxlZnRJY29uRGF0YVwiIGNsYXNzPVwiaW5wdXQtdGV4dC1sZWZ0LWljb25cIiBbaWNvbl09XCJsZWZ0SWNvblwiIFtpY29uRGF0YV09XCJsZWZ0SWNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlTGVmdEljb25DbGljaygkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJoYW5kbGVMZWZ0SWNvbk1vdXNlRG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKG1vdXNldXApPVwiaGFuZGxlTGVmdEljb25Nb3VzZVVwKCRldmVudClcIj48L2NvLWljb24+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJsZWZ0SWNvbiB8fCBsZWZ0SWNvbkRhdGFcIiBjbGFzcz1cInNwYWNlciBsZWZ0LWljb25cIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICA8bGFiZWwgKm5nSWY9XCJzaG93UGxhY2Vob2xkZXJPbkZvY3VzIHx8ICghc2hvd1BsYWNlaG9sZGVyT25Gb2N1cyAmJiAhaGFzVmFsdWUgJiYgIWZvY3VzZWQpXCJcclxuICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInBsYWNlaG9sZGVyXCI+PC9sYWJlbD5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXRleHQtZm9ybWF0dGVkXCIgKm5nSWY9XCIhZm9jdXNlZCAmJiAhdXNlQ29udGVudCAmJiBmb3JtYXRQaXBlXCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2hvd109XCIhZm9jdXNlZCAmJiAhdXNlQ29udGVudCAmJiBmb3JtYXRQaXBlXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJhbGlnblwiXHJcbiAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInBpcGVkTW9kZWxcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVEb0ZvY3VzKCRldmVudClcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0IFtjbGFzcy5zaG93XT1cImZvY3VzZWQgfHwgIWZvcm1hdFBpcGVcIiAjaW5wdXRcclxuICAgICAgICAgICAgICAgW2NsYXNzLmlucHV0LWlucHV0LWhpZGRlbl09XCJ1c2VDb250ZW50XCJcclxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYWxpZ25cIlxyXG4gICAgICAgICAgICAgICBbdHlwZV09XCIoaXNGb2N1c2VkT25EYXRlIHx8IChoYXNWYWx1ZSAmJiBlbXB0eVBsYWNlKSkgPyAnZGF0ZScgOiAoZGlnaXRzT25seSA/ICdudW1iZXInIDogKHR5cGUgPT09ICdkYXRlJyA/ICd0ZXh0JyA6IHR5cGUpKVwiXHJcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0eXBlID09PSAnZGF0ZScgJiYgIWlzRm9jdXNlZE9uRGF0ZSA/ICcnIDogJydcIlxyXG4gICAgICAgICAgICAgICBbcGF0dGVybl09XCJ0eXBlID09PSAnZGF0ZScgPyBwYXR0ZXJuIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgW25nTW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICAgICAgICAgICBbbWluXT1cIih0eXBlID09PSAnbnVtYmVyJyB8fCB0eXBlID09PSAnZGF0ZScpICYmIHRoaXMubWluID8gdGhpcy5taW4gOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICBbbWF4XT1cIih0eXBlID09PSAnbnVtYmVyJyB8fCB0eXBlID09PSAnZGF0ZScpICYmIHRoaXMubWF4ID8gdGhpcy5tYXggOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RlbENoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoa2V5ZG93bik9XCJkaWdpdHNPbmx5ID8gZXhjbHVkZU5vbkRpZ2l0Q2hhcnMoJGV2ZW50KSA6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAoa2V5dXApPVwia2V5VXAuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKGZvY3VzaW4pPVwiaGFuZGxlSW5wdXRGb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImhhbmRsZUJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VDb250ZW50XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxjby1pY29uIFtjbGFzcy5zaG93XT1cInNob3dDbGVhckJ1dHRvbiAmJiBoYXNWYWx1ZSAmJiAhcmVhZG9ubHlcIiBjbGFzcz1cImlucHV0LXRleHQtY2xlYXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICBbaWNvbl09XCJpY29ucy5Dcm9zc1NraW5ueVwiIChjbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIj48L2NvLWljb24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpcmVkLWluZGljYXRvclwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInJpZ2h0SWNvbiB8fCByaWdodEljb25EYXRhXCIgY2xhc3M9XCJzcGFjZXIgcmlnaHQtaWNvblwiPjwvZGl2PlxyXG4gICAgICA8Y28taWNvbiAqbmdJZj1cInJpZ2h0SWNvbiB8fCByaWdodEljb25EYXRhXCIgY2xhc3M9XCJpbnB1dC10ZXh0LXJpZ2h0LWljb25cIiBbaWNvbl09XCJyaWdodEljb25cIlxyXG4gICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwicmlnaHRJY29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSaWdodEljb25DbGljaygkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJoYW5kbGVSaWdodEljb25Nb3VzZURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChtb3VzZXVwKT1cImhhbmRsZVJpZ2h0SWNvbk1vdXNlVXAoJGV2ZW50KVwiPjwvY28taWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVxyXG4gICAgICAgICAgICA8Y28tY29tbWl0LWJ1dHRvbnMgKm5nSWY9XCJzaG93U2F2ZUNhbmNlbCAmJiBmb2N1c2VkICYmIGNhblNhdmVPckNhbmNlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29tbWl0dGluZ109XCJjb21taXR0aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21taXRGaW5pc2hlZF09XCJjb21taXRGaW5pc2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbWl0Q2xpY2spPVwiY29tbWl0Q2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FuY2VsQ2xpY2spPVwiY2FuY2VsQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9jby1jb21taXQtYnV0dG9ucz5cclxuICAgIC0tPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBPdmVybGF5U2VydmljZSwge1xyXG4gICAgICBwcm92aWRlOiBTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFRleHRDb21wb25lbnQpXHJcbiAgICB9LCB7XHJcbiAgICAgIHByb3ZpZGU6IEJhc2VJbnB1dENvbXBvbmVudCxcclxuICAgICAgdXNlRXhpc3Rpbmc6IElucHV0VGV4dENvbXBvbmVudFxyXG4gICAgfV0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRUZXh0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50PGFueT4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdXNlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFsaWduOiBzdHJpbmcgPSAnbGVmdCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9ybWF0UGlwZTogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtaW46IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWF4OiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhdHRlcm46IHN0cmluZyA9ICdkZC1NTS15eXl5JztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlnaXRzT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBleGNsdWRlUGx1c01pbnVzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0NsZWFyQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMga2V5RG93bldoaXRlTGlzdDogS2V5Ym9hcmRDb2RlW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dQbGFjZWhvbGRlck9uRm9jdXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsZWZ0SWNvbjogQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb246IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGVmdEljb25EYXRhOiBTYWZlSHRtbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmlnaHRJY29uRGF0YTogU2FmZUh0bWwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNlbGVjdE9uRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW1wdHlQbGFjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5vLXN0eWxlJylcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBub1N0eWxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlLWFycm93cycpXHJcbiAgcHVibGljIGhpZGVBcnJvd0J1dHRvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaXNEYXRlXCIpXHJcbiAgcHVibGljIGdldCBpc0RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBcImRhdGVcIjtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBsZWZ0SWNvbkNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBsZWZ0SWNvbk1vdXNlRG93bjogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbGVmdEljb25Nb3VzZVVwOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb25DbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmlnaHRJY29uTW91c2VEb3duOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByaWdodEljb25Nb3VzZVVwOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbGVhckljb25DbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaXNGb2N1c2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28taW5wdXQtdGV4dCcpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtbGVmdC1pY29uJylcclxuICBwdWJsaWMgZ2V0IGhhc0xlZnRJY29uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubGVmdEljb24gIT09IHVuZGVmaW5lZCAmJiB0aGlzLmxlZnRJY29uICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtcmlnaHQtaWNvbicpXHJcbiAgcHVibGljIGdldCBoYXNSaWdodEljb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yaWdodEljb24gIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJpZ2h0SWNvbiAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLW93bi1sYWJlbCcpXHJcbiAgcHVibGljIGhhc093bkxhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIGhhbmRsZURvY3VtZW50TW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuX2lzTGVmdEljb25Nb3VzZURvd24pIHtcclxuICAgICAgdGhpcy5sZWZ0SWNvbk1vdXNlVXAubmV4dChldmVudCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5faXNSaWdodEljb25Nb3VzZURvd24pIHtcclxuICAgICAgdGhpcy5yaWdodEljb25Nb3VzZVVwLm5leHQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG1vZGVsKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdudW1iZXInICYmICFpc05hTih2YWx1ZSkpIHtcclxuICAgICAgaWYgKHRoaXMubWluICYmIHZhbHVlIDwgdGhpcy5taW4gfHwgdGhpcy5tYXggJiYgdmFsdWUgPiB0aGlzLm1heCkge1xyXG4gICAgICAgIHN1cGVyLm1vZGVsID0gdGhpcy5faW5pdGlhbE1vZGVsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN1cGVyLm1vZGVsID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN1cGVyLm1vZGVsID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHN1cGVyLm1vZGVsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwaXBlZE1vZGVsKCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXRQaXBlKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcGlwZSA9IG5ldyB0aGlzLmZvcm1hdFBpcGUodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIHBpcGUudHJhbnNmb3JtKHRoaXMubW9kZWwpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm1vZGVsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzRm9jdXNlZE9uRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzTGVmdEljb25Nb3VzZURvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc1JpZ2h0SWNvbk1vdXNlRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBmb3JtQ29tcG9uZW50OiBGb3JtQ29tcG9uZW50LFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJvdGVjdGVkIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXI/OiBGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgbmdab25lV3JhcHBlcj86IE5nWm9uZVdyYXBwZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmLFxyXG4gICkge1xyXG4gICAgc3VwZXIoY2hhbmdlRGV0ZWN0b3IsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgb3ZlcmxheVNlcnZpY2UsIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIsIG5nWm9uZVdyYXBwZXIsIGVsZW1lbnRSZWYpO1xyXG4gICAgc3VwZXIuX21hcmtBc09uUHVzaCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZXhjbHVkZSBzb21lIG5vbi1kaWdpdCBjaGFyYWN0ZXJzLCBzaW5jZSBpbnB1dCB0eXBlICdudW1iZXInIHN0aWxsIGFsbG93cyB0aGUgY2hhcmFjdGVycyAtLCArIGFuZCBlXHJcbiAgcHVibGljIGV4Y2x1ZGVOb25EaWdpdENoYXJzKGV2ZW50KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBleGNsdWRlZEtleXMgPSB0aGlzLmV4Y2x1ZGVQbHVzTWludXMgPyBbJ2UnLCAnLScsICcrJ10gOiBbJ2UnXTtcclxuXHJcbiAgICByZXR1cm4gIWV4Y2x1ZGVkS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUxlZnRJY29uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMubGVmdEljb25DbGljay5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVMZWZ0SWNvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5faXNMZWZ0SWNvbk1vdXNlRG93biA9IHRydWU7XHJcbiAgICB0aGlzLmxlZnRJY29uTW91c2VEb3duLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUxlZnRJY29uTW91c2VVcChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5faXNMZWZ0SWNvbk1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5sZWZ0SWNvbk1vdXNlVXAuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlUmlnaHRJY29uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMucmlnaHRJY29uQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlUmlnaHRJY29uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLl9pc1JpZ2h0SWNvbk1vdXNlRG93biA9IHRydWU7XHJcbiAgICB0aGlzLnJpZ2h0SWNvbk1vdXNlRG93bi5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVSaWdodEljb25Nb3VzZVVwKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLl9pc1JpZ2h0SWNvbk1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgdGhpcy5yaWdodEljb25Nb3VzZVVwLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUlucHV0Rm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICB0aGlzLmlzRm9jdXNlZE9uRGF0ZSA9IHRydWU7IC8vIFN3aXRjaCB0byAnZGF0ZScgdHlwZSB3aGVuIGZvY3VzZWRcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdE9uRm9jdXMpIHtcclxuICAgICAgdGhpcy5pbnB1dC5zZWxlY3QoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNGb2N1c2VkLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuaXNGb2N1c2VkT25EYXRlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzRm9jdXNlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEb0ZvY3VzKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgdGhpcy5kb0ZvY3VzKGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhcklucHV0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLnNldE1vZGVsKG51bGwpO1xyXG4gICAgdGhpcy5jbGVhckljb25DbGljay5lbWl0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -5688,9 +5688,10 @@ OverlayModule.decorators = [
|
|
|
5688
5688
|
];
|
|
5689
5689
|
|
|
5690
5690
|
class InputTextComponent extends BaseInputComponent {
|
|
5691
|
-
constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
5691
|
+
constructor(formComponent, injector, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
5692
5692
|
super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
5693
5693
|
this.formComponent = formComponent;
|
|
5694
|
+
this.injector = injector;
|
|
5694
5695
|
this.changeDetector = changeDetector;
|
|
5695
5696
|
this.overlayService = overlayService;
|
|
5696
5697
|
this.componentFactoryResolver = componentFactoryResolver;
|
|
@@ -5760,6 +5761,17 @@ class InputTextComponent extends BaseInputComponent {
|
|
|
5760
5761
|
get model() {
|
|
5761
5762
|
return super.model;
|
|
5762
5763
|
}
|
|
5764
|
+
get pipedModel() {
|
|
5765
|
+
if (this.formatPipe) {
|
|
5766
|
+
try {
|
|
5767
|
+
const pipe = new this.formatPipe(this);
|
|
5768
|
+
return pipe.transform(this.model);
|
|
5769
|
+
}
|
|
5770
|
+
catch (e) {
|
|
5771
|
+
}
|
|
5772
|
+
}
|
|
5773
|
+
return this.model;
|
|
5774
|
+
}
|
|
5763
5775
|
// exclude some non-digit characters, since input type 'number' still allows the characters -, + and e
|
|
5764
5776
|
excludeNonDigitChars(event) {
|
|
5765
5777
|
const excludedKeys = this.excludePlusMinus ? ['e', '-', '+'] : ['e'];
|
|
@@ -5818,6 +5830,11 @@ class InputTextComponent extends BaseInputComponent {
|
|
|
5818
5830
|
}
|
|
5819
5831
|
this.isFocused.emit(false);
|
|
5820
5832
|
}
|
|
5833
|
+
handleDoFocus(event) {
|
|
5834
|
+
if (!this.readonly) {
|
|
5835
|
+
this.doFocus(event);
|
|
5836
|
+
}
|
|
5837
|
+
}
|
|
5821
5838
|
clearInput(event) {
|
|
5822
5839
|
this.setModel(null);
|
|
5823
5840
|
this.clearIconClick.emit(event);
|
|
@@ -5835,7 +5852,13 @@ InputTextComponent.decorators = [
|
|
|
5835
5852
|
<div class="input-wrapper">
|
|
5836
5853
|
<label *ngIf="showPlaceholderOnFocus || (!showPlaceholderOnFocus && !hasValue && !focused)"
|
|
5837
5854
|
[textContent]="placeholder"></label>
|
|
5838
|
-
<input
|
|
5855
|
+
<span class="input-text-formatted" *ngIf="!focused && !useContent && formatPipe"
|
|
5856
|
+
[class.show]="!focused && !useContent && formatPipe"
|
|
5857
|
+
[ngClass]="align"
|
|
5858
|
+
[textContent]="pipedModel"
|
|
5859
|
+
(click)="handleDoFocus($event)"
|
|
5860
|
+
></span>
|
|
5861
|
+
<input [class.show]="focused || !formatPipe" #input
|
|
5839
5862
|
[class.input-input-hidden]="useContent"
|
|
5840
5863
|
[ngClass]="align"
|
|
5841
5864
|
[type]="(isFocusedOnDate || (hasValue && emptyPlace)) ? 'date' : (digitsOnly ? 'number' : (type === 'date' ? 'text' : type))"
|
|
@@ -5891,6 +5914,7 @@ InputTextComponent.decorators = [
|
|
|
5891
5914
|
];
|
|
5892
5915
|
InputTextComponent.ctorParameters = () => [
|
|
5893
5916
|
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
5917
|
+
{ type: Injector },
|
|
5894
5918
|
{ type: ChangeDetectorRef },
|
|
5895
5919
|
{ type: OverlayService },
|
|
5896
5920
|
{ type: ComponentFactoryResolver },
|
|
@@ -5903,6 +5927,7 @@ InputTextComponent.propDecorators = {
|
|
|
5903
5927
|
placeholder: [{ type: Input }],
|
|
5904
5928
|
align: [{ type: Input }],
|
|
5905
5929
|
type: [{ type: Input }],
|
|
5930
|
+
formatPipe: [{ type: Input }],
|
|
5906
5931
|
min: [{ type: Input }],
|
|
5907
5932
|
max: [{ type: Input }],
|
|
5908
5933
|
pattern: [{ type: Input }],
|
|
@@ -7758,6 +7783,9 @@ class InputSearchComponent extends BaseInputComponent {
|
|
|
7758
7783
|
const enterKeys = ['Enter', 'NumpadEnter', 'Go'];
|
|
7759
7784
|
if (enterKeys.includes(event.key)) {
|
|
7760
7785
|
event.preventDefault();
|
|
7786
|
+
if (this.isMobileDevice()) {
|
|
7787
|
+
event.target.blur();
|
|
7788
|
+
}
|
|
7761
7789
|
this.search.next(this.model);
|
|
7762
7790
|
}
|
|
7763
7791
|
}
|
|
@@ -7765,6 +7793,9 @@ class InputSearchComponent extends BaseInputComponent {
|
|
|
7765
7793
|
this.model = model;
|
|
7766
7794
|
this.modelChange.next(this.model);
|
|
7767
7795
|
}
|
|
7796
|
+
isMobileDevice() {
|
|
7797
|
+
return /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
|
|
7798
|
+
}
|
|
7768
7799
|
}
|
|
7769
7800
|
InputSearchComponent.decorators = [
|
|
7770
7801
|
{ type: Component, args: [{
|