@elderbyte/ngx-starter 16.4.6 → 16.4.8
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/esm2022/lib/common/utils/parse-util.mjs +5 -4
- package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +22 -12
- package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +4 -1
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +6 -3
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +27 -22
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +2 -2
- package/fesm2022/elderbyte-ngx-starter.mjs +52 -31
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/utils/parse-util.d.ts +3 -2
- package/lib/components/forms/directives/elder-triple-state-checkbox.directive.d.ts +3 -1
- package/lib/components/forms/search/domain/input/search-input-state.d.ts +1 -0
- package/lib/components/forms/search/elder-search-input.directive.d.ts +8 -8
- package/package.json +1 -1
|
@@ -2,10 +2,11 @@ export class ParseUtil {
|
|
|
2
2
|
/**
|
|
3
3
|
* Tries to parse a given value to a boolean.
|
|
4
4
|
* @param bool a value representing a boolean state.
|
|
5
|
-
* @return undefined, if the value is null
|
|
5
|
+
* @return undefined, if the value is null/undefined/empty
|
|
6
|
+
* @return false, if the value is false, else true.
|
|
6
7
|
*/
|
|
7
|
-
static
|
|
8
|
-
if (bool === undefined || bool
|
|
8
|
+
static parseBoolOrUndefined(bool) {
|
|
9
|
+
if (bool === undefined || bool === null || bool === '') {
|
|
9
10
|
return undefined;
|
|
10
11
|
}
|
|
11
12
|
else {
|
|
@@ -13,4 +14,4 @@ export class ParseUtil {
|
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi91dGlscy9wYXJzZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO0lBRXBCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQVM7UUFDMUMsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUN0RCxPQUFPLFNBQVMsQ0FBQztTQUNsQjthQUFNO1lBQ0wsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGFyc2VVdGlsIHtcblxuICAvKipcbiAgICogVHJpZXMgdG8gcGFyc2UgYSBnaXZlbiB2YWx1ZSB0byBhIGJvb2xlYW4uXG4gICAqIEBwYXJhbSBib29sIGEgdmFsdWUgcmVwcmVzZW50aW5nIGEgYm9vbGVhbiBzdGF0ZS5cbiAgICogQHJldHVybiB1bmRlZmluZWQsIGlmIHRoZSB2YWx1ZSBpcyBudWxsL3VuZGVmaW5lZC9lbXB0eVxuICAgKiBAcmV0dXJuIGZhbHNlLCBpZiB0aGUgdmFsdWUgaXMgZmFsc2UsIGVsc2UgdHJ1ZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VCb29sT3JVbmRlZmluZWQoYm9vbDogYW55KTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGJvb2wgPT09IHVuZGVmaW5lZCB8fCBib29sID09PSBudWxsIHx8IGJvb2wgPT09ICcnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gIShib29sID09PSAnZmFsc2UnIHx8IGJvb2wgPT09IGZhbHNlKTtcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Directive, Optional } from '@angular/core';
|
|
2
2
|
import { ParseUtil } from '../../../common/utils/parse-util';
|
|
3
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/material/checkbox";
|
|
5
6
|
import * as i2 from "@angular/forms";
|
|
@@ -18,6 +19,7 @@ export class ElderTripleStateCheckboxDirective {
|
|
|
18
19
|
constructor(checkbox, ngModel) {
|
|
19
20
|
this.checkbox = checkbox;
|
|
20
21
|
this.ngModel = ngModel;
|
|
22
|
+
this.log = LoggerFactory.getLogger(this.constructor.name);
|
|
21
23
|
}
|
|
22
24
|
/***************************************************************************
|
|
23
25
|
* *
|
|
@@ -34,14 +36,7 @@ export class ElderTripleStateCheckboxDirective {
|
|
|
34
36
|
* *
|
|
35
37
|
**************************************************************************/
|
|
36
38
|
get state() {
|
|
37
|
-
|
|
38
|
-
case false:
|
|
39
|
-
return ElderCheckboxState.UNCHECKED;
|
|
40
|
-
case true:
|
|
41
|
-
return ElderCheckboxState.CHECKED;
|
|
42
|
-
case undefined:
|
|
43
|
-
return ElderCheckboxState.INDETERMINATE;
|
|
44
|
-
}
|
|
39
|
+
return this.controlValueToState(this.readControlValue());
|
|
45
40
|
}
|
|
46
41
|
set state(newState) {
|
|
47
42
|
switch (newState) {
|
|
@@ -61,6 +56,16 @@ export class ElderTripleStateCheckboxDirective {
|
|
|
61
56
|
* Private methods *
|
|
62
57
|
* *
|
|
63
58
|
**************************************************************************/
|
|
59
|
+
controlValueToState(value) {
|
|
60
|
+
switch (ParseUtil.parseBoolOrUndefined(value)) {
|
|
61
|
+
case false:
|
|
62
|
+
return ElderCheckboxState.UNCHECKED;
|
|
63
|
+
case true:
|
|
64
|
+
return ElderCheckboxState.CHECKED;
|
|
65
|
+
case undefined:
|
|
66
|
+
return ElderCheckboxState.INDETERMINATE;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
64
69
|
toggleNextState() {
|
|
65
70
|
this.state = (this.state + 1) % 3;
|
|
66
71
|
}
|
|
@@ -81,8 +86,8 @@ export class ElderTripleStateCheckboxDirective {
|
|
|
81
86
|
this.checkbox.indeterminate = true;
|
|
82
87
|
this.updateModelIfPresent(undefined);
|
|
83
88
|
}
|
|
84
|
-
|
|
85
|
-
if (this.ngModel
|
|
89
|
+
readControlValue() {
|
|
90
|
+
if (this.ngModel) {
|
|
86
91
|
return this.ngModel.viewModel;
|
|
87
92
|
}
|
|
88
93
|
else {
|
|
@@ -91,7 +96,12 @@ export class ElderTripleStateCheckboxDirective {
|
|
|
91
96
|
}
|
|
92
97
|
updateModelIfPresent(val) {
|
|
93
98
|
if (this.ngModel !== null) {
|
|
94
|
-
this.ngModel.
|
|
99
|
+
this.ngModel.control.setValue(val, {
|
|
100
|
+
onlySelf: false,
|
|
101
|
+
emitEvent: true,
|
|
102
|
+
emitModelToViewChange: true,
|
|
103
|
+
emitViewToModelChange: true
|
|
104
|
+
});
|
|
95
105
|
}
|
|
96
106
|
}
|
|
97
107
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderTripleStateCheckboxDirective, deps: [{ token: i1.MatCheckbox }, { token: i2.NgModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
@@ -105,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
105
115
|
}], ctorParameters: function () { return [{ type: i1.MatCheckbox }, { type: i2.NgModel, decorators: [{
|
|
106
116
|
type: Optional
|
|
107
117
|
}] }]; } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdHJpcGxlLXN0YXRlLWNoZWNrYm94LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvZGlyZWN0aXZlcy9lbGRlci10cmlwbGUtc3RhdGUtY2hlY2tib3guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzFELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFHbkQsTUFBTSxDQUFOLElBQVksa0JBSVg7QUFKRCxXQUFZLGtCQUFrQjtJQUM1QixxRUFBYSxDQUFBO0lBQ2IsaUVBQVcsQ0FBQTtJQUNYLDZFQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBS0QsTUFBTSxPQUFPLGlDQUFpQztJQUk1Qzs7OztnRkFJNEU7SUFFNUUsWUFDVSxRQUFxQixFQUNULE9BQWdCO1FBRDVCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDVCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBVnJCLFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFZdEUsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O2dGQUk0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WyJpbXBvcnQge0RpcmVjdGl2ZSwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdENoZWNrYm94fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQge05nTW9kZWx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7UGFyc2VVdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbHMvcGFyc2UtdXRpbCc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcblxuXG5leHBvcnQgZW51bSBFbGRlckNoZWNrYm94U3RhdGUge1xuICBVTkNIRUNLRUQgPSAwLFxuICBDSEVDS0VEID0gMSxcbiAgSU5ERVRFUk1JTkFURSA9IDJcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbWF0LWNoZWNrYm94W2VsZGVyVHJpcGxlU3RhdGVDaGVja2JveF0nXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyVHJpcGxlU3RhdGVDaGVja2JveERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hlY2tib3g6IE1hdENoZWNrYm94LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbmdNb2RlbDogTmdNb2RlbFxuICApIHtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICB0aGlzLmNoZWNrYm94LnJlZ2lzdGVyT25DaGFuZ2UoKCkgPT4gdGhpcy50b2dnbGVOZXh0U3RhdGUoKSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGdldCBzdGF0ZSgpOiBFbGRlckNoZWNrYm94U3RhdGUge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xWYWx1ZVRvU3RhdGUoXG4gICAgICB0aGlzLnJlYWRDb250cm9sVmFsdWUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldCBzdGF0ZShuZXdTdGF0ZTogRWxkZXJDaGVja2JveFN0YXRlKSB7XG4gICAgc3dpdGNoIChuZXdTdGF0ZSkge1xuICAgICAgY2FzZSBFbGRlckNoZWNrYm94U3RhdGUuVU5DSEVDS0VEOlxuICAgICAgICB0aGlzLnNldENoZWNrYm94VW5jaGVja2VkKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEVsZGVyQ2hlY2tib3hTdGF0ZS5DSEVDS0VEOlxuICAgICAgICB0aGlzLnNldENoZWNrYm94Q2hlY2tlZCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBFbGRlckNoZWNrYm94U3RhdGUuSU5ERVRFUk1JTkFURTpcbiAgICAgICAgdGhpcy5zZXRDaGVja2JveEluZGV0ZXJtaW5hdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBjb250cm9sVmFsdWVUb1N0YXRlKHZhbHVlOiBhbnkpOiBFbGRlckNoZWNrYm94U3RhdGUge1xuICAgIHN3aXRjaCAoUGFyc2VVdGlsLnBhcnNlQm9vbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgY2FzZSBmYWxzZTpcbiAgICAgICAgcmV0dXJuIEVsZGVyQ2hlY2tib3hTdGF0ZS5VTkNIRUNLRUQ7XG4gICAgICBjYXNlIHRydWU6XG4gICAgICAgIHJldHVybiBFbGRlckNoZWNrYm94U3RhdGUuQ0hFQ0tFRDtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gRWxkZXJDaGVja2JveFN0YXRlLklOREVURVJNSU5BVEU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVOZXh0U3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICh0aGlzLnN0YXRlICsgMSkgJSAzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDaGVja2JveFVuY2hlY2tlZCgpIHtcbiAgICB0aGlzLmNoZWNrYm94LnZhbHVlID0gJ2ZhbHNlJztcbiAgICB0aGlzLmNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsSWZQcmVzZW50KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hlY2tib3hDaGVja2VkKCkge1xuICAgIHRoaXMuY2hlY2tib3gudmFsdWUgPSAndHJ1ZSc7XG4gICAgdGhpcy5jaGVja2JveC5jaGVja2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsSWZQcmVzZW50KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDaGVja2JveEluZGV0ZXJtaW5hdGUoKSB7XG4gICAgdGhpcy5jaGVja2JveC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlTW9kZWxJZlByZXNlbnQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZENvbnRyb2xWYWx1ZSgpOiBhbnkge1xuICAgIGlmICh0aGlzLm5nTW9kZWwpIHtcbiAgICAgIHJldHVybiB0aGlzLm5nTW9kZWwudmlld01vZGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGVja2JveC52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGVsSWZQcmVzZW50KHZhbDogYW55KSB7XG4gICAgaWYgKHRoaXMubmdNb2RlbCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5uZ01vZGVsLmNvbnRyb2wuc2V0VmFsdWUodmFsLCB7XG4gICAgICAgIG9ubHlTZWxmOiBmYWxzZSxcbiAgICAgICAgZW1pdEV2ZW50OiB0cnVlLFxuICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IHRydWUsXG4gICAgICAgIGVtaXRWaWV3VG9Nb2RlbENoYW5nZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -68,6 +68,9 @@ export class SearchInputState {
|
|
|
68
68
|
get hasValue() {
|
|
69
69
|
return SearchInputState.isValueDefined(this.queryValue);
|
|
70
70
|
}
|
|
71
|
+
get hasFallbackValue() {
|
|
72
|
+
return this.hasValue && this.pristine;
|
|
73
|
+
}
|
|
71
74
|
/***************************************************************************
|
|
72
75
|
* *
|
|
73
76
|
* Public Api *
|
|
@@ -83,4 +86,4 @@ export class SearchInputState {
|
|
|
83
86
|
return new SearchInputState(this.attribute, value, this.queryKey, pristineNow, true);
|
|
84
87
|
}
|
|
85
88
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZG9tYWluL2lucHV0L3NlYXJjaC1pbnB1dC1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRXBCLE1BQU0sQ0FBQyxPQUFPO1FBQ25CLE9BQU8sSUFBSSxnQkFBZ0IsQ0FDekIsSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTtJQUVFOztPQUVHO0lBQ2EsU0FBaUI7SUFFakM7O09BRUc7SUFDYSxVQUFvQztJQUVwRDs7T0FFRztJQUNhLFFBQWdCO0lBRWhDOztPQUVHO0lBQ2EsUUFBaUI7SUFFakM7O09BRUc7SUFDYSxTQUFrQjtRQXBCbEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUtqQixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQUtwQyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBS2hCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFLakIsY0FBUyxHQUFULFNBQVMsQ0FBUztJQUNoQyxDQUFDO0lBRUw7Ozs7Z0ZBSTRFO0lBRXJFLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBK0I7UUFDMUQsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtnQkFDMUIsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUN6QjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUU7Ozs7O09BS0c7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLGNBQWMsQ0FBQyxLQUErQixFQUFFLFFBQWtCO1FBRXZFLElBQUksV0FBVyxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUMvQyxXQUFXLEdBQUcsUUFBUSxDQUFDO2FBQ3hCO1NBQ0Y7UUFFRCxPQUFPLElBQUksZ0JBQWdCLENBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQ2QsS0FBSyxFQUNMLElBQUksQ0FBQyxRQUFRLEVBQ2IsV0FBVyxFQUNYLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztDQUlGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYmplY3RzfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21tb24vb2JqZWN0cyc7XG5cbi8qKlxuICogSW1tdXRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdGF0ZSBvZiBhbiBzZWFyY2ggaW5wdXRcbiAqL1xuZXhwb3J0IGNsYXNzIFNlYXJjaElucHV0U3RhdGUge1xuXG4gIHB1YmxpYyBzdGF0aWMgdW5rbm93bigpOiBTZWFyY2hJbnB1dFN0YXRlIHtcbiAgICByZXR1cm4gbmV3IFNlYXJjaElucHV0U3RhdGUoXG4gICAgICBudWxsLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICB0cnVlLFxuICAgICAgZmFsc2VcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG5cbiAgICAvKipcbiAgICAgKiBhdHRyaWJ1dGUgVGhlIG5hbWUgbmFtZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRyaWJ1dGU6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIHF1ZXJ5VmFsdWUgVGhlIHF1ZXJ5IHZhbHVlIGFzIHN0cmluZy4gU3VwcG9ydHMgbXVsdGkgc3RyaW5nIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBxdWVyeVZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwsXG5cbiAgICAvKipcbiAgICAgKiBxdWVyeUtleSBUaGUgcXVlcnkga2V5XG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHF1ZXJ5S2V5OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBwcmlzdGluZSBIYXMgdGhlIHVzZXIgdG91Y2hlZCB0aGlzP1xuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBwcmlzdGluZTogYm9vbGVhbixcblxuICAgIC8qKlxuICAgICAqIFdhcyB0aGUgaW5wdXQgY2hhbmdlZCBieSBhIHVzZXIgaW50ZXJhY3Rpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckV2ZW50OiBib29sZWFuXG4gICkgeyB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN0YXRpYyBpc1ZhbHVlRGVmaW5lZCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhpcyBzZWFyY2ggaW5wdXQgaGFzIGEgdmFsdWUuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBudWxsIGFuZCBpbiBjYXNlIGl0c1xuICAgKiBhbiBhcnJheSwgaXQgbXVzdCBub3QgYmUgZW1wdHkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHRoaXMucXVlcnlWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0ZhbGxiYWNrVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzVmFsdWUgJiYgdGhpcy5wcmlzdGluZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQXBpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB3aXRoUXVlcnlWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsLCBwcmlzdGluZT86IGJvb2xlYW4pOiBTZWFyY2hJbnB1dFN0YXRlIHtcblxuICAgIGxldCBwcmlzdGluZU5vdyA9IFNlYXJjaElucHV0U3RhdGUuaXNWYWx1ZURlZmluZWQodmFsdWUpO1xuICAgIGlmICghcHJpc3RpbmVOb3cpIHtcbiAgICAgIGlmIChwcmlzdGluZSAhPT0gdW5kZWZpbmVkICYmIHByaXN0aW5lICE9PSBudWxsKSB7XG4gICAgICAgIHByaXN0aW5lTm93ID0gcHJpc3RpbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTZWFyY2hJbnB1dFN0YXRlKFxuICAgICAgdGhpcy5hdHRyaWJ1dGUsXG4gICAgICB2YWx1ZSxcbiAgICAgIHRoaXMucXVlcnlLZXksXG4gICAgICBwcmlzdGluZU5vdyxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cblxuXG59XG4iXX0=
|
|
@@ -115,7 +115,9 @@ export class ElderSearchContextDirective {
|
|
|
115
115
|
* Returns the current user touched attributes. (ignoring fallbacks)
|
|
116
116
|
*/
|
|
117
117
|
get userDefinedAttributes$() {
|
|
118
|
-
return this.states$.pipe(map(states => states
|
|
118
|
+
return this.states$.pipe(map(states => states
|
|
119
|
+
.filter(s => !s.pristine)
|
|
120
|
+
.filter(s => !s.hasFallbackValue)));
|
|
119
121
|
}
|
|
120
122
|
/***************************************************************************
|
|
121
123
|
* *
|
|
@@ -161,6 +163,7 @@ export class ElderSearchContextDirective {
|
|
|
161
163
|
}
|
|
162
164
|
syncSearchInputsToSearchContext() {
|
|
163
165
|
this._searchInputs$.pipe(takeUntilDestroyed(this.destroyRef), switchMap(inputs => combineLatest(inputs.map(i => i.state$))), debounceTime(5)).subscribe(states => {
|
|
166
|
+
/// this.log.error('SearchInputStates Changed: ', states);
|
|
164
167
|
this._searchStates$.next(states);
|
|
165
168
|
});
|
|
166
169
|
const inputFilters$ = this._searchStates$.pipe(map(states => this.convertToFilters(states)), filter(filters => filters.length > 0));
|
|
@@ -212,7 +215,7 @@ export class ElderSearchContextDirective {
|
|
|
212
215
|
}
|
|
213
216
|
convertToFilters(states) {
|
|
214
217
|
return states
|
|
215
|
-
.filter(s => s.userEvent)
|
|
218
|
+
.filter(s => (s.userEvent || s.hasFallbackValue))
|
|
216
219
|
.filter(s => !!s.queryKey)
|
|
217
220
|
.map(s => new Filter(s.queryKey, s.queryValue));
|
|
218
221
|
}
|
|
@@ -233,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
233
236
|
}], forcedFilters: [{
|
|
234
237
|
type: Input
|
|
235
238
|
}] } });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEIsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxlQUFlLEVBQWMsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFHMUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7QUFFOUQ7Ozs7OztHQU1HO0FBS0gsTUFBTSxPQUFPLDJCQUEyQjtJQW1CdEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ0Usb0JBQTBDLEVBQ3pCLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF6QnpDOzs7O29GQUk0RTtRQUUzRCxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJELGlDQUE0QixHQUFHLElBQUksR0FBbUIsQ0FBQztRQUV2RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFn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Q0FBQztRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQztRQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBMEI7UUFDakQsT0FBTyxNQUFNO2FBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUN4QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzthQUN6QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7K0dBL1FVLDJCQUEyQjttR0FBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO29JQTZEWSxlQUFlO3NCQUR6QixLQUFLO2dCQWtCSyxhQUFhO3NCQUR2QixLQUFLO3VCQUFDLG9CQUFvQjtnQkEyQmhCLGFBQWE7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdFdpdGgsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dH0gZnJvbSAnLi9kb21haW4vaW5wdXQvc2VhcmNoLWlucHV0JztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge0ZpbHRlckNvbnRleHR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyLWNvbnRleHQnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dFN0YXRlfSBmcm9tICcuL2RvbWFpbi9pbnB1dC9zZWFyY2gtaW5wdXQtc3RhdGUnO1xuaW1wb3J0IHtTZWFyY2hDb250ZXh0U2VydmljZX0gZnJvbSAnLi9kb21haW4vY29udGV4dC9zZWFyY2gtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoQ29udGV4dH0gZnJvbSAnLi9kb21haW4vY29udGV4dC9zZWFyY2gtY29udGV4dCc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIFRoZSBTZWFyY2hDb250ZXh0RGlyZWN0aXZlIGJpbmRzIGEgZ3JvdXAgb2Ygc2VhcmNoLWlucHV0c1xuICogdG8gYSBTZWFyY2hDb250ZXh0IHdpdGggYSB0d28td2F5IGJpbmRpbmcuXG4gKlxuICogSXQgYWxzbyBiaW5kcyB0aGUgU2VhcmNoQ29udGV4dCB0byBhIEZpbHRlckNvbnRleHQgKERhdGFDb250ZXh0KS5cbiAqIFRPRE8gTWF5YmUgc2VwYXJhdGUgdGhpcz8/XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlbGRlclNlYXJjaENvbnRleHRdJyxcbiAgZXhwb3J0QXM6ICdlbGRlclNlYXJjaENvbnRleHQnXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyc1RvQXBwbHlBdFJlZ2lzdHJhdGlvbiA9IG5ldyBNYXA8c3RyaW5nLCBGaWx0ZXI+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlYXJjaElucHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaElucHV0W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VhcmNoU3RhdGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRTdGF0ZVtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlckNvbnRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJDb250ZXh0PihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoQ29udGV4dD4oU2VhcmNoQ29udGV4dC5zdGFuZGFsb25lKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaENvbnRleHRJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2VhcmNoQ29udGV4dFNlcnZpY2U6IFNlYXJjaENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICApIHtcbiAgICB0aGlzLnNlYXJjaENvbnRleHRJZCQucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgZmlsdGVyKGNvbnRleHRJZCA9PiAhIWNvbnRleHRJZCksXG4gICAgICBtYXAoY29udGV4dElkID0+IHNlYXJjaENvbnRleHRTZXJ2aWNlLmNvbnRleHQoY29udGV4dElkKSksXG4gICAgKS5zdWJzY3JpYmUoY3R4ID0+IHRoaXMuX3NlYXJjaENvbnRleHQkLm5leHQoY3R4KSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzVG9TZWFyY2hDb250ZXh0KCk7XG4gICAgdGhpcy5zeW5jU2VhcmNoQ29udGV4dFRvQm91bmRGaWx0ZXJDb250ZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaENvbnRleHQgPSB0aGlzLnNlYXJjaENvbnRleHQ7XG4gICAgdGhpcy5hcHBseVNlYXJjaENvbnRleHRUb0lucHV0cyhzZWFyY2hDb250ZXh0KTtcbiAgICB0aGlzLnN5bmNTZWFyY2hJbnB1dHNUb1NlYXJjaENvbnRleHQoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoQ29udGV4dElkKGNvbnRleHRJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hDb250ZXh0SWQkLm5leHQoY29udGV4dElkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoQ29udGV4dElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoQ29udGV4dElkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hDb250ZXh0JCgpOiBPYnNlcnZhYmxlPFNlYXJjaENvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoQ29udGV4dCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaENvbnRleHQoKTogU2VhcmNoQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaENvbnRleHQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoJ2VsZGVyU2VhcmNoQ29udGV4dCcpXG4gIHB1YmxpYyBzZXQgZmlsdGVyQ29udGV4dCh2YWx1ZTogRmlsdGVyQ29udGV4dCB8ICcnKSB7XG4gICAgbGV0IGNvbnRleHQ6IEZpbHRlckNvbnRleHQ7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICBjb250ZXh0ID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy53YXJuKCdJbGxlZ2FsIHZhbHVlIHByb3ZpZGVkIGZvciBwcm9wZXJ0eSBmaWx0ZXJDb250ZXh0OiAnLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgdmFsdWUgcHJvdmlkZWQgZm9yIHByb3BlcnR5IGZpbHRlckNvbnRleHQhICcgKyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0LmVtcHR5KCk7XG4gICAgfVxuICAgIHRoaXMuX2ZpbHRlckNvbnRleHQkLm5leHQoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlckNvbnRleHQoKTogRmlsdGVyQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRleHQkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VkIGZpbHRlcnMgYXJlIGFsd2F5cyBtZXJnZWQgaW50byB0aGUgZmluYWwgRmlsdGVyQ29udGV4dC5cbiAgICpcbiAgICogVGhpcyBtZWFucyB0aGV5IG92ZXJyaWRlIHVzZXIgZGVmaW5lZCBmaWx0ZXJzLCBidXQgYXR0ZW1wdFxuICAgKiB0byBhbHNvIGtlZXAgdGhlIHVzZXJzIGludGVudCAoYnkgbWVyZ2luZykgdGhlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZm9yY2VkRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5yZXBsYWNlRm9yY2VkRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9yY2VkRmlsdGVycygpOiBGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoQ29udGV4dC5mb3JjZWRGaWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hJbnB1dHMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzU25hcHNob3QoKTogU2VhcmNoSW5wdXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaElucHV0cyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZXNTbmFwc2hvdCgpOiBTZWFyY2hJbnB1dFN0YXRlW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCB1c2VyIHRvdWNoZWQgYXR0cmlidXRlcy4gKGlnbm9yaW5nIGZhbGxiYWNrcylcbiAgICovXG4gIHB1YmxpYyBnZXQgdXNlckRlZmluZWRBdHRyaWJ1dGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlcyQucGlwZShcbiAgICAgIG1hcChzdGF0ZXMgPT4gc3RhdGVzLmZpbHRlcihzID0+ICFzLnByaXN0aW5lKSlcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgbmV3IHNlYXJjaCBuYW1lIGluIHRoaXMgY29udGFpbmVyXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXIoc2VhcmNoSW5wdXQ6IFNlYXJjaElucHV0KTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3NlYXJjaElucHV0cyQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCB0b0FwcGx5ID0gdGhpcy5maWx0ZXJzVG9BcHBseUF0UmVnaXN0cmF0aW9uLmdldChzZWFyY2hJbnB1dC5uYW1lKTtcbiAgICBpZiAodG9BcHBseSkge1xuICAgICAgc2VhcmNoSW5wdXQuc2V0VmFsdWUodG9BcHBseS52YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMubG9nLmRlYnVnKCdSZWdpc3RlcmluZyBzZWFyY2ggaW5wdXQgWycgKyBzZWFyY2hJbnB1dC5uYW1lICsgJ10uIExhdGUgcmVnaXN0cmF0aW9uIHZhbHVlOicgKyB0b0FwcGx5Py52YWx1ZSk7XG4gICAgdGhpcy5fc2VhcmNoSW5wdXRzJC5uZXh0KFsuLi5jdXJyZW50LCBzZWFyY2hJbnB1dF0pO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuYXR0cmlidXRlc1NuYXBzaG90XG4gICAgICAuZmlsdGVyKGF0dHIgPT4gIWF0dHIucmVhZG9ubHkpXG4gICAgICAuZm9yRWFjaChhID0+IHtcbiAgICAgICAgYS5yZXNldCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdEZpbHRlcnNUb1NlYXJjaENvbnRleHQoKTogdm9pZCB7XG5cbiAgICBjb25zdCBkY0ZpbHRlcnMgPSB0aGlzLmZpbHRlckNvbnRleHQ7XG4gICAgY29uc3Qgc2VhcmNoQ29udGV4dCA9IHRoaXMuc2VhcmNoQ29udGV4dDtcbiAgICBpZiAoc2VhcmNoQ29udGV4dC51c2VyRmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYXBwbHlBc0RlZmF1bHRzVW50aWxVc2VyQWN0aW9uKHNlYXJjaENvbnRleHQsIGRjRmlsdGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRjRmlsdGVycy5yZXBsYWNlRmlsdGVycyhcbiAgICAgICAgc2VhcmNoQ29udGV4dC51c2VyRmlsdGVyc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5QXNEZWZhdWx0c1VudGlsVXNlckFjdGlvbihcbiAgICBzZWFyY2hDb250ZXh0OiBTZWFyY2hDb250ZXh0LFxuICAgIGRjRmlsdGVyczogRmlsdGVyQ29udGV4dFxuICApOiB2b2lkIHtcbiAgICBkY0ZpbHRlcnMuZmlsdGVycy5waXBlKFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICBtYXAoZmlsdGVycyA9PiBzZWFyY2hDb250ZXh0LnVwZGF0ZVVzZXJGaWx0ZXJzU2F2ZShmaWx0ZXJzKSksXG4gICAgICAvLyB0YWtlV2hpbGUoYWNjZXB0RGVmYXVsdEZpbHRlcnMgPT4gYWNjZXB0RGVmYXVsdEZpbHRlcnMpXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY1NlYXJjaElucHV0c1RvU2VhcmNoQ29udGV4dCgpOiB2b2lkIHtcblxuICAgIHRoaXMuX3NlYXJjaElucHV0cyQucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgc3dpdGNoTWFwKGlucHV0cyA9PiBjb21iaW5lTGF0ZXN0KGlucHV0cy5tYXAoaSA9PiBpLnN0YXRlJCkpKSxcbiAgICAgIGRlYm91bmNlVGltZSg1KVxuICAgICkuc3Vic2NyaWJlKHN0YXRlcyA9PiB7XG4gICAgICB0aGlzLl9zZWFyY2hTdGF0ZXMkLm5leHQoc3RhdGVzKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGlucHV0RmlsdGVycyQgPSB0aGlzLl9zZWFyY2hTdGF0ZXMkLnBpcGUoXG4gICAgICBtYXAoc3RhdGVzID0+IHRoaXMuY29udmVydFRvRmlsdGVycyhzdGF0ZXMpKSxcbiAgICAgIGZpbHRlcihmaWx0ZXJzID0+IGZpbHRlcnMubGVuZ3RoID4gMClcbiAgICApO1xuXG4gICAgaW5wdXRGaWx0ZXJzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLl9zZWFyY2hDb250ZXh0JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtpbnB1dEZpbHRlcnMsIHNlYXJjaENvbnRleHRdKSA9PiB7XG4gICAgICAgIHNlYXJjaENvbnRleHQudXBkYXRlVXNlckZpbHRlcnMoaW5wdXRGaWx0ZXJzKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jU2VhcmNoQ29udGV4dFRvQm91bmRGaWx0ZXJDb250ZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuX3NlYXJjaENvbnRleHQkLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgIHN3aXRjaE1hcChjb250ZXh0ID0+IGNvbnRleHQuYWxsRmlsdGVyc0NoYW5nZWQpXG4gICAgKS5zdWJzY3JpYmUoYWxsRmlsdGVycyA9PiB0aGlzLmFwcGx5VG9Cb3VuZEZpbHRlckNvbnRleHQoYWxsRmlsdGVycykpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVRvQm91bmRGaWx0ZXJDb250ZXh0KGZpbHRlcnM6IEZpbHRlcltdKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyQ3R4ID0gdGhpcy5maWx0ZXJDb250ZXh0O1xuICAgIGlmIChmaWx0ZXJDdHgpIHtcbiAgICAgIGZpbHRlckN0eC5yZXBsYWNlRmlsdGVycyhmaWx0ZXJzKTtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdBcHBsaWVkIEZpbHRlcnMgb2YgU2VhcmNoQ29udGV4dCAnICsgdGhpcy5zZWFyY2hDb250ZXh0SWQgKyAnIHRvIERhdGFDb250ZXh0IEZpbHRlckNvbnRleHQuJywgZmlsdGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLndhcm4oJ0ZhaWxlZCB0byBhcHBseSBmaWx0ZXJzIHNpbmNlIG5vIEZpbHRlckNvbnRleHQgaXMgYXZhaWxhYmxlIScsIGZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZWFyY2hDb250ZXh0VG9JbnB1dHMoc2VhcmNoQ29udGV4dDogU2VhcmNoQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJzVG9JbnB1dHMoXG4gICAgICBzZWFyY2hDb250ZXh0LnVzZXJGaWx0ZXJzXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzVG9JbnB1dHMoZmlsdGVyczogRmlsdGVyW10pOiB2b2lkIHtcbiAgICBpZiAoZmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpbnB1dHNCeU5hbWUgPSB0aGlzLnNlYXJjaElucHV0c0J5TmFtZSgpO1xuICAgICAgdGhpcy5sb2cud2FybignYXBwbHlGaWx0ZXJzVG9JbnB1dHMgWycgKyBBcnJheS5mcm9tKGlucHV0c0J5TmFtZS5rZXlzKCkpICsgJ10nLCB7XG4gICAgICAgIGZpbHRlcnM6IGZpbHRlcnMsXG4gICAgICAgIGlucHV0c0J5TmFtZTogaW5wdXRzQnlOYW1lXG4gICAgICB9KTtcbiAgICAgIGZpbHRlcnMuZm9yRWFjaChmID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dHNCeU5hbWUuZ2V0KGYua2V5KTtcbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgaW5wdXQuc2V0VmFsdWUoZi52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJzVG9BcHBseUF0UmVnaXN0cmF0aW9uLnNldChmLmtleSwgZik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoSW5wdXRzQnlOYW1lKCk6IE1hcDxzdHJpbmcsIFNlYXJjaElucHV0PiB7XG4gICAgY29uc3QgaW5wdXRzID0gdGhpcy5fc2VhcmNoSW5wdXRzJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTZWFyY2hJbnB1dD4oKTtcbiAgICBpbnB1dHMuZm9yRWFjaChpbnB1dCA9PiBtYXAuc2V0KGlucHV0Lm5hbWUsIGlucHV0KSk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRvRmlsdGVycyhzdGF0ZXM6IFNlYXJjaElucHV0U3RhdGVbXSk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gc3RhdGVzXG4gICAgICAuZmlsdGVyKHMgPT4gcy51c2VyRXZlbnQpXG4gICAgICAuZmlsdGVyKHMgPT4gISFzLnF1ZXJ5S2V5KVxuICAgICAgLm1hcChzID0+IG5ldyBGaWx0ZXIocy5xdWVyeUtleSwgcy5xdWVyeVZhbHVlKSk7XG4gIH1cbn1cblxuIl19
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEIsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxlQUFlLEVBQWMsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFHMUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7QUFFOUQ7Ozs7OztHQU1HO0FBS0gsTUFBTSxPQUFPLDJCQUEyQjtJQW1CdEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ0Usb0JBQTBDLEVBQ3pCLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF6QnpDOzs7O29GQUk0RTtRQUUzRCxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJELGlDQUE0QixHQUFHLElBQUksR0FBbUIsQ0FBQztRQUV2RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUN4RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFxQixFQUFFLENBQUMsQ0FBQztRQUM3RCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUUzRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFnQixhQUFhLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNqRixxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQVlwRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN4QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ25DLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFDaEMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQzFELENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLFFBQVE7UUFDYixJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU0sZUFBZTtRQUNwQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLElBQ1csZUFBZSxDQUFDLFNBQWlCO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFDVyxhQUFhLENBQUMsS0FBeUI7UUFDaEQsSUFBSSxPQUFzQixDQUFDO1FBQzNCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQzdCLE9BQU8sR0FBRyxLQUFLLENBQUM7YUFDakI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscURBQXFELEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUM1RixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxHQUFHLEtBQUssQ0FBQyxDQUFDO2FBQ2hGO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUNXLGFBQWEsQ0FBQyxPQUFpQjtRQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNYLE1BQU07YUFDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7YUFDeEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FDcEMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7T0FFRztJQUNJLFFBQVEsQ0FBQyxXQUF3QjtRQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksT0FBTyxFQUFFO1lBQ1gsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxXQUFXLENBQUMsSUFBSSxHQUFHLDZCQUE2QixHQUFHLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsa0JBQWtCO2FBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUM5QixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWCxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFcEUsa0NBQWtDO1FBRXhDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsOEJBQThCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQy9EO2FBQU07WUFDTCxTQUFTLENBQUMsY0FBYyxDQUN0QixhQUFhLENBQUMsV0FBVyxDQUMxQixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sOEJBQThCLENBQ3BDLGFBQTRCLEVBQzVCLFNBQXdCO1FBRXhCLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNwQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUU3RCxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTywrQkFBK0I7UUFFckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDbkMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUM3RCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQ2hCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25CLDBEQUEwRDtZQUMxRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM1QyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDdEMsQ0FBQztRQUVGLGFBQWE7YUFDVixJQUFJLENBQ0gsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUNuQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQ3hDO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8scUNBQXFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUN2QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ25DLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUNoRCxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxPQUFpQjtRQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3JDLElBQUksU0FBUyxFQUFFO1lBQ2IsU0FBUyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLGdDQUFnQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3hIO2FBQU07WUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyw4REFBOEQsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN4RjtJQUNILENBQUM7SUFFTywwQkFBMEIsQ0FBQyxhQUE0QjtRQUM3RCxJQUFJLENBQUMsb0JBQW9CLENBQ3ZCLGFBQWEsQ0FBQyxXQUFXLENBQzFCLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBaUI7UUFDNUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRTtnQkFDOUUsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFlBQVksRUFBRSxZQUFZO2FBQzNCLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLEtBQUssRUFBRTtvQkFDVCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDekI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNqRDtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQTBCO1FBQ2pELE9BQU8sTUFBTTthQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUNoRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzthQUN6QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7K0dBcFJVLDJCQUEyQjttR0FBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO29JQTZEWSxlQUFlO3NCQUR6QixLQUFLO2dCQWtCSyxhQUFhO3NCQUR2QixLQUFLO3VCQUFDLG9CQUFvQjtnQkEyQmhCLGFBQWE7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdFdpdGgsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dH0gZnJvbSAnLi9kb21haW4vaW5wdXQvc2VhcmNoLWlucHV0JztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge0ZpbHRlckNvbnRleHR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyLWNvbnRleHQnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dFN0YXRlfSBmcm9tICcuL2RvbWFpbi9pbnB1dC9zZWFyY2gtaW5wdXQtc3RhdGUnO1xuaW1wb3J0IHtTZWFyY2hDb250ZXh0U2VydmljZX0gZnJvbSAnLi9kb21haW4vY29udGV4dC9zZWFyY2gtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoQ29udGV4dH0gZnJvbSAnLi9kb21haW4vY29udGV4dC9zZWFyY2gtY29udGV4dCc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIFRoZSBTZWFyY2hDb250ZXh0RGlyZWN0aXZlIGJpbmRzIGEgZ3JvdXAgb2Ygc2VhcmNoLWlucHV0c1xuICogdG8gYSBTZWFyY2hDb250ZXh0IHdpdGggYSB0d28td2F5IGJpbmRpbmcuXG4gKlxuICogSXQgYWxzbyBiaW5kcyB0aGUgU2VhcmNoQ29udGV4dCB0byBhIEZpbHRlckNvbnRleHQgKERhdGFDb250ZXh0KS5cbiAqIFRPRE8gTWF5YmUgc2VwYXJhdGUgdGhpcz8/XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlbGRlclNlYXJjaENvbnRleHRdJyxcbiAgZXhwb3J0QXM6ICdlbGRlclNlYXJjaENvbnRleHQnXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyc1RvQXBwbHlBdFJlZ2lzdHJhdGlvbiA9IG5ldyBNYXA8c3RyaW5nLCBGaWx0ZXI+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlYXJjaElucHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaElucHV0W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VhcmNoU3RhdGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRTdGF0ZVtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlckNvbnRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJDb250ZXh0PihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoQ29udGV4dD4oU2VhcmNoQ29udGV4dC5zdGFuZGFsb25lKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaENvbnRleHRJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2VhcmNoQ29udGV4dFNlcnZpY2U6IFNlYXJjaENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICApIHtcbiAgICB0aGlzLnNlYXJjaENvbnRleHRJZCQucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgZmlsdGVyKGNvbnRleHRJZCA9PiAhIWNvbnRleHRJZCksXG4gICAgICBtYXAoY29udGV4dElkID0+IHNlYXJjaENvbnRleHRTZXJ2aWNlLmNvbnRleHQoY29udGV4dElkKSksXG4gICAgKS5zdWJzY3JpYmUoY3R4ID0+IHRoaXMuX3NlYXJjaENvbnRleHQkLm5leHQoY3R4KSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzVG9TZWFyY2hDb250ZXh0KCk7XG4gICAgdGhpcy5zeW5jU2VhcmNoQ29udGV4dFRvQm91bmRGaWx0ZXJDb250ZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaENvbnRleHQgPSB0aGlzLnNlYXJjaENvbnRleHQ7XG4gICAgdGhpcy5hcHBseVNlYXJjaENvbnRleHRUb0lucHV0cyhzZWFyY2hDb250ZXh0KTtcbiAgICB0aGlzLnN5bmNTZWFyY2hJbnB1dHNUb1NlYXJjaENvbnRleHQoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoQ29udGV4dElkKGNvbnRleHRJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hDb250ZXh0SWQkLm5leHQoY29udGV4dElkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoQ29udGV4dElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoQ29udGV4dElkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hDb250ZXh0JCgpOiBPYnNlcnZhYmxlPFNlYXJjaENvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoQ29udGV4dCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaENvbnRleHQoKTogU2VhcmNoQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaENvbnRleHQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoJ2VsZGVyU2VhcmNoQ29udGV4dCcpXG4gIHB1YmxpYyBzZXQgZmlsdGVyQ29udGV4dCh2YWx1ZTogRmlsdGVyQ29udGV4dCB8ICcnKSB7XG4gICAgbGV0IGNvbnRleHQ6IEZpbHRlckNvbnRleHQ7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICBjb250ZXh0ID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy53YXJuKCdJbGxlZ2FsIHZhbHVlIHByb3ZpZGVkIGZvciBwcm9wZXJ0eSBmaWx0ZXJDb250ZXh0OiAnLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgdmFsdWUgcHJvdmlkZWQgZm9yIHByb3BlcnR5IGZpbHRlckNvbnRleHQhICcgKyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0LmVtcHR5KCk7XG4gICAgfVxuICAgIHRoaXMuX2ZpbHRlckNvbnRleHQkLm5leHQoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlckNvbnRleHQoKTogRmlsdGVyQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRleHQkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VkIGZpbHRlcnMgYXJlIGFsd2F5cyBtZXJnZWQgaW50byB0aGUgZmluYWwgRmlsdGVyQ29udGV4dC5cbiAgICpcbiAgICogVGhpcyBtZWFucyB0aGV5IG92ZXJyaWRlIHVzZXIgZGVmaW5lZCBmaWx0ZXJzLCBidXQgYXR0ZW1wdFxuICAgKiB0byBhbHNvIGtlZXAgdGhlIHVzZXJzIGludGVudCAoYnkgbWVyZ2luZykgdGhlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZm9yY2VkRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5yZXBsYWNlRm9yY2VkRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9yY2VkRmlsdGVycygpOiBGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoQ29udGV4dC5mb3JjZWRGaWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hJbnB1dHMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzU25hcHNob3QoKTogU2VhcmNoSW5wdXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaElucHV0cyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZXNTbmFwc2hvdCgpOiBTZWFyY2hJbnB1dFN0YXRlW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCB1c2VyIHRvdWNoZWQgYXR0cmlidXRlcy4gKGlnbm9yaW5nIGZhbGxiYWNrcylcbiAgICovXG4gIHB1YmxpYyBnZXQgdXNlckRlZmluZWRBdHRyaWJ1dGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlcyQucGlwZShcbiAgICAgIG1hcChzdGF0ZXMgPT5cbiAgICAgICAgc3RhdGVzXG4gICAgICAgICAgLmZpbHRlcihzID0+ICFzLnByaXN0aW5lKVxuICAgICAgICAgIC5maWx0ZXIocyA9PiAhcy5oYXNGYWxsYmFja1ZhbHVlKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBuZXcgc2VhcmNoIG5hbWUgaW4gdGhpcyBjb250YWluZXJcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcihzZWFyY2hJbnB1dDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fc2VhcmNoSW5wdXRzJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHRvQXBwbHkgPSB0aGlzLmZpbHRlcnNUb0FwcGx5QXRSZWdpc3RyYXRpb24uZ2V0KHNlYXJjaElucHV0Lm5hbWUpO1xuICAgIGlmICh0b0FwcGx5KSB7XG4gICAgICBzZWFyY2hJbnB1dC5zZXRWYWx1ZSh0b0FwcGx5LnZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoJ1JlZ2lzdGVyaW5nIHNlYXJjaCBpbnB1dCBbJyArIHNlYXJjaElucHV0Lm5hbWUgKyAnXS4gTGF0ZSByZWdpc3RyYXRpb24gdmFsdWU6JyArIHRvQXBwbHk/LnZhbHVlKTtcbiAgICB0aGlzLl9zZWFyY2hJbnB1dHMkLm5leHQoWy4uLmN1cnJlbnQsIHNlYXJjaElucHV0XSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzU25hcHNob3RcbiAgICAgIC5maWx0ZXIoYXR0ciA9PiAhYXR0ci5yZWFkb25seSlcbiAgICAgIC5mb3JFYWNoKGEgPT4ge1xuICAgICAgICBhLnJlc2V0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0RmlsdGVyc1RvU2VhcmNoQ29udGV4dCgpOiB2b2lkIHtcblxuICAgIGNvbnN0IGRjRmlsdGVycyA9IHRoaXMuZmlsdGVyQ29udGV4dDtcbiAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0O1xuICAgIGlmIChzZWFyY2hDb250ZXh0LnVzZXJGaWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5hcHBseUFzRGVmYXVsdHNVbnRpbFVzZXJBY3Rpb24oc2VhcmNoQ29udGV4dCwgZGNGaWx0ZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGNGaWx0ZXJzLnJlcGxhY2VGaWx0ZXJzKFxuICAgICAgICBzZWFyY2hDb250ZXh0LnVzZXJGaWx0ZXJzXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBc0RlZmF1bHRzVW50aWxVc2VyQWN0aW9uKFxuICAgIHNlYXJjaENvbnRleHQ6IFNlYXJjaENvbnRleHQsXG4gICAgZGNGaWx0ZXJzOiBGaWx0ZXJDb250ZXh0XG4gICk6IHZvaWQge1xuICAgIGRjRmlsdGVycy5maWx0ZXJzLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgIG1hcChmaWx0ZXJzID0+IHNlYXJjaENvbnRleHQudXBkYXRlVXNlckZpbHRlcnNTYXZlKGZpbHRlcnMpKSxcbiAgICAgIC8vIHRha2VXaGlsZShhY2NlcHREZWZhdWx0RmlsdGVycyA9PiBhY2NlcHREZWZhdWx0RmlsdGVycylcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jU2VhcmNoSW5wdXRzVG9TZWFyY2hDb250ZXh0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5fc2VhcmNoSW5wdXRzJC5waXBlKFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICBzd2l0Y2hNYXAoaW5wdXRzID0+IGNvbWJpbmVMYXRlc3QoaW5wdXRzLm1hcChpID0+IGkuc3RhdGUkKSkpLFxuICAgICAgZGVib3VuY2VUaW1lKDUpXG4gICAgKS5zdWJzY3JpYmUoc3RhdGVzID0+IHtcbiAgICAgIC8vLyB0aGlzLmxvZy5lcnJvcignU2VhcmNoSW5wdXRTdGF0ZXMgQ2hhbmdlZDogJywgc3RhdGVzKTtcbiAgICAgIHRoaXMuX3NlYXJjaFN0YXRlcyQubmV4dChzdGF0ZXMpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5wdXRGaWx0ZXJzJCA9IHRoaXMuX3NlYXJjaFN0YXRlcyQucGlwZShcbiAgICAgIG1hcChzdGF0ZXMgPT4gdGhpcy5jb252ZXJ0VG9GaWx0ZXJzKHN0YXRlcykpLFxuICAgICAgZmlsdGVyKGZpbHRlcnMgPT4gZmlsdGVycy5sZW5ndGggPiAwKVxuICAgICk7XG5cbiAgICBpbnB1dEZpbHRlcnMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuX3NlYXJjaENvbnRleHQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW2lucHV0RmlsdGVycywgc2VhcmNoQ29udGV4dF0pID0+IHtcbiAgICAgICAgc2VhcmNoQ29udGV4dC51cGRhdGVVc2VyRmlsdGVycyhpbnB1dEZpbHRlcnMpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNTZWFyY2hDb250ZXh0VG9Cb3VuZEZpbHRlckNvbnRleHQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VhcmNoQ29udGV4dCQucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgc3dpdGNoTWFwKGNvbnRleHQgPT4gY29udGV4dC5hbGxGaWx0ZXJzQ2hhbmdlZClcbiAgICApLnN1YnNjcmliZShhbGxGaWx0ZXJzID0+IHRoaXMuYXBwbHlUb0JvdW5kRmlsdGVyQ29udGV4dChhbGxGaWx0ZXJzKSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VG9Cb3VuZEZpbHRlckNvbnRleHQoZmlsdGVyczogRmlsdGVyW10pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJDdHggPSB0aGlzLmZpbHRlckNvbnRleHQ7XG4gICAgaWYgKGZpbHRlckN0eCkge1xuICAgICAgZmlsdGVyQ3R4LnJlcGxhY2VGaWx0ZXJzKGZpbHRlcnMpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ0FwcGxpZWQgRmlsdGVycyBvZiBTZWFyY2hDb250ZXh0ICcgKyB0aGlzLnNlYXJjaENvbnRleHRJZCArICcgdG8gRGF0YUNvbnRleHQgRmlsdGVyQ29udGV4dC4nLCBmaWx0ZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cud2FybignRmFpbGVkIHRvIGFwcGx5IGZpbHRlcnMgc2luY2Ugbm8gRmlsdGVyQ29udGV4dCBpcyBhdmFpbGFibGUhJywgZmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNlYXJjaENvbnRleHRUb0lucHV0cyhzZWFyY2hDb250ZXh0OiBTZWFyY2hDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5hcHBseUZpbHRlcnNUb0lucHV0cyhcbiAgICAgIHNlYXJjaENvbnRleHQudXNlckZpbHRlcnNcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlcnNUb0lucHV0cyhmaWx0ZXJzOiBGaWx0ZXJbXSk6IHZvaWQge1xuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGlucHV0c0J5TmFtZSA9IHRoaXMuc2VhcmNoSW5wdXRzQnlOYW1lKCk7XG4gICAgICB0aGlzLmxvZy53YXJuKCdhcHBseUZpbHRlcnNUb0lucHV0cyBbJyArIEFycmF5LmZyb20oaW5wdXRzQnlOYW1lLmtleXMoKSkgKyAnXScsIHtcbiAgICAgICAgZmlsdGVyczogZmlsdGVycyxcbiAgICAgICAgaW5wdXRzQnlOYW1lOiBpbnB1dHNCeU5hbWVcbiAgICAgIH0pO1xuICAgICAgZmlsdGVycy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0c0J5TmFtZS5nZXQoZi5rZXkpO1xuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICBpbnB1dC5zZXRWYWx1ZShmLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZpbHRlcnNUb0FwcGx5QXRSZWdpc3RyYXRpb24uc2V0KGYua2V5LCBmKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWFyY2hJbnB1dHNCeU5hbWUoKTogTWFwPHN0cmluZywgU2VhcmNoSW5wdXQ+IHtcbiAgICBjb25zdCBpbnB1dHMgPSB0aGlzLl9zZWFyY2hJbnB1dHMkLmdldFZhbHVlKCk7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFNlYXJjaElucHV0PigpO1xuICAgIGlucHV0cy5mb3JFYWNoKGlucHV0ID0+IG1hcC5zZXQoaW5wdXQubmFtZSwgaW5wdXQpKTtcbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9GaWx0ZXJzKHN0YXRlczogU2VhcmNoSW5wdXRTdGF0ZVtdKTogRmlsdGVyW10ge1xuICAgIHJldHVybiBzdGF0ZXNcbiAgICAgIC5maWx0ZXIocyA9PiAocy51c2VyRXZlbnQgfHwgcy5oYXNGYWxsYmFja1ZhbHVlKSlcbiAgICAgIC5maWx0ZXIocyA9PiAhIXMucXVlcnlLZXkpXG4gICAgICAubWFwKHMgPT4gbmV3IEZpbHRlcihzLnF1ZXJ5S2V5LCBzLnF1ZXJ5VmFsdWUpKTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Directive, Host, Input } from
|
|
2
|
-
import { LoggerFactory } from
|
|
1
|
+
import { Directive, Host, Input } from '@angular/core';
|
|
2
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
3
3
|
import { debounceTime, delay, first, map, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { PropertyPathUtil } from
|
|
4
|
+
import { PropertyPathUtil } from '../../../common/utils/property-path-util';
|
|
5
5
|
import { concat, of, skipUntil, Subject } from 'rxjs';
|
|
6
|
-
import { SearchInputState } from
|
|
7
|
-
import { Objects } from
|
|
8
|
-
import { CollectionUtil } from
|
|
9
|
-
import { ElderInitialValueDirective } from
|
|
6
|
+
import { SearchInputState } from './domain/input/search-input-state';
|
|
7
|
+
import { Objects } from '../../../common/objects';
|
|
8
|
+
import { CollectionUtil } from '../../../common/utils/collection-util';
|
|
9
|
+
import { ElderInitialValueDirective } from '../directives/elder-initial-value.directive';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "./elder-search-context.directive";
|
|
12
12
|
import * as i2 from "@angular/forms";
|
|
@@ -40,7 +40,7 @@ export class ElderSearchInputDirective {
|
|
|
40
40
|
}
|
|
41
41
|
ngAfterViewInit() {
|
|
42
42
|
this._extractedName = this.extractName();
|
|
43
|
-
this.log.debug(this._extractedName +
|
|
43
|
+
this.log.debug(this._extractedName + '|' + this.queryKey + '|' + this.resolvePath);
|
|
44
44
|
}
|
|
45
45
|
ngOnDestroy() {
|
|
46
46
|
this.destroy$.next();
|
|
@@ -61,8 +61,8 @@ export class ElderSearchInputDirective {
|
|
|
61
61
|
if (this._extractedName) {
|
|
62
62
|
return this._extractedName;
|
|
63
63
|
}
|
|
64
|
-
throw new Error(
|
|
65
|
-
|
|
64
|
+
throw new Error('Could not determine the search name key name.' +
|
|
65
|
+
' Either specify the name property or explicitly set [elderSearchInputKey].');
|
|
66
66
|
}
|
|
67
67
|
get value() {
|
|
68
68
|
return this.ngModel.value;
|
|
@@ -105,7 +105,12 @@ export class ElderSearchInputDirective {
|
|
|
105
105
|
}
|
|
106
106
|
buildInputState(controlValue, userEvent) {
|
|
107
107
|
const queryValue = this.convertRawModelValueToQueryString(controlValue);
|
|
108
|
-
|
|
108
|
+
let pristine = !this.isAttributeValuePresent(controlValue);
|
|
109
|
+
if (this.hasFallback) {
|
|
110
|
+
if (this.fallbackValue === queryValue) {
|
|
111
|
+
pristine = true;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
109
114
|
return new SearchInputState(this.name, queryValue, this.queryKey || this.name, pristine, userEvent);
|
|
110
115
|
}
|
|
111
116
|
convertQueryStringToRawModelValue(queryString) {
|
|
@@ -145,14 +150,14 @@ export class ElderSearchInputDirective {
|
|
|
145
150
|
return value;
|
|
146
151
|
}
|
|
147
152
|
convertEmptyStringToNull(value) {
|
|
148
|
-
if (typeof value ===
|
|
153
|
+
if (typeof value === 'string' && value.length === 0) {
|
|
149
154
|
return null;
|
|
150
155
|
}
|
|
151
156
|
return value;
|
|
152
157
|
}
|
|
153
158
|
isAttributeValuePresent(value) {
|
|
154
159
|
return SearchInputState.isValueDefined(value)
|
|
155
|
-
&& (value +
|
|
160
|
+
&& (value + '').length !== 0;
|
|
156
161
|
}
|
|
157
162
|
resolveValue(value) {
|
|
158
163
|
if (Objects.nonNull(value)) {
|
|
@@ -207,28 +212,28 @@ export class ElderSearchInputDirective {
|
|
|
207
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchInputDirective, decorators: [{
|
|
208
213
|
type: Directive,
|
|
209
214
|
args: [{
|
|
210
|
-
selector:
|
|
211
|
-
exportAs:
|
|
215
|
+
selector: '[elderSearchInput]',
|
|
216
|
+
exportAs: 'elderSearchInput'
|
|
212
217
|
}]
|
|
213
218
|
}], ctorParameters: function () { return [{ type: i1.ElderSearchContextDirective }, { type: i2.NgModel, decorators: [{
|
|
214
219
|
type: Host
|
|
215
220
|
}] }]; }, propDecorators: { queryKey: [{
|
|
216
221
|
type: Input,
|
|
217
|
-
args: [
|
|
222
|
+
args: ['elderSearchInputKey']
|
|
218
223
|
}], valueTransform: [{
|
|
219
224
|
type: Input,
|
|
220
|
-
args: [
|
|
225
|
+
args: ['elderSearchInputTransform']
|
|
221
226
|
}], resolvePath: [{
|
|
222
227
|
type: Input,
|
|
223
|
-
args: [
|
|
228
|
+
args: ['elderSearchInput']
|
|
224
229
|
}], dataSource: [{
|
|
225
230
|
type: Input,
|
|
226
|
-
args: [
|
|
231
|
+
args: ['dataSource']
|
|
227
232
|
}], fallbackValue: [{
|
|
228
233
|
type: Input,
|
|
229
|
-
args: [
|
|
234
|
+
args: ['elderSearchInputFallback']
|
|
230
235
|
}], valueAsId: [{
|
|
231
236
|
type: Input,
|
|
232
|
-
args: [
|
|
237
|
+
args: ['valueAsId']
|
|
233
238
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS3JELE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQWEsU0FBUyxFQUFpQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBa0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHdkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7QUFHekY7O0dBRUc7QUFLSCxNQUFNLE9BQU8seUJBQXlCO0lBOENwQzs7OztnRkFJNEU7SUFFNUUsWUFDVSxhQUEwQyxFQUNsQyxPQUFnQjtRQUR4QixrQkFBYSxHQUFiLGFBQWEsQ0FBNkI7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQVhqQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixRQUFHLEdBQUcsYUFB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QUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxNQUE2QjtRQUNyRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDdEIsT0FBTyxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDWjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7K0dBNVJVLHlCQUF5QjttR0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzswQkF1REksSUFBSTs0Q0F4Q0EsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFPckIsY0FBYztzQkFEcEIsS0FBSzt1QkFBQywyQkFBMkI7Z0JBUTNCLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUlsQixVQUFVO3NCQURoQixLQUFLO3VCQUFDLFlBQVk7Z0JBT1osYUFBYTtzQkFEbkIsS0FBSzt1QkFBQywwQkFBMEI7Z0JBSTFCLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBIb3N0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gXCJAZWxkZXJieXRlL3RzLWxvZ2dlclwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tIFwiLi9kb21haW4vaW5wdXQvc2VhcmNoLWlucHV0XCI7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGVsYXksIGZpcnN0LCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YWtlV2hpbGUsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJvcGVydHlQYXRoVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vdXRpbHMvcHJvcGVydHktcGF0aC11dGlsXCI7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29uY2F0LCBvZiwgc2tpcFVudGlsLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlYXJjaElucHV0U3RhdGUgfSBmcm9tIFwiLi9kb21haW4vaW5wdXQvc2VhcmNoLWlucHV0LXN0YXRlXCI7XG5pbXBvcnQgeyBPYmplY3RzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9vYmplY3RzXCI7XG5pbXBvcnQgeyBDb2xsZWN0aW9uVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vdXRpbHMvY29sbGVjdGlvbi11dGlsXCI7XG5pbXBvcnQgeyBMb2NhbFBhZ2VkRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2xvY2FsL2xvY2FsLXBhZ2VkLWRhdGEtc291cmNlXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQgeyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL2VsZGVyLWluaXRpYWwtdmFsdWUuZGlyZWN0aXZlXCI7XG5pbXBvcnQge1NlYXJjaENvbnRleHR9IGZyb20gJy4vZG9tYWluL2NvbnRleHQvc2VhcmNoLWNvbnRleHQnO1xuXG4vKipcbiAqIFNlYXJjaCBuYW1lIGFkYXB0ZXIgZm9yIGlucHV0IGNvbnRyb2xzLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2VsZGVyU2VhcmNoSW5wdXRdXCIsXG4gIGV4cG9ydEFzOiBcImVsZGVyU2VhcmNoSW5wdXRcIlxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgU2VhcmNoSW5wdXQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxWYWx1ZURpcmVjdGl2ZTogRWxkZXJJbml0aWFsVmFsdWVEaXJlY3RpdmU7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVXN1YWxseSB0aGUgY29udHJvbCBuYW1lIGlzIHVzZWQsIHRoaXMgYWxsb3dzIGEgY3VzdG9tIHF1ZXJ5IGtleVxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dEtleVwiKVxuICBwdWJsaWMgcXVlcnlLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBGdW5jdGlvbiB3aGljaCB0cmFuc2Zvcm1zIHRoZSB2YWx1ZSBvYmplY3QgdG8gYSBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dFRyYW5zZm9ybVwiKVxuICBwdWJsaWMgdmFsdWVUcmFuc2Zvcm06ICgodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKTtcblxuICAvKipcbiAgICogKE9wdGlvbmFsLCBEZWZhdWx0KSBQYXRoIG9uIHRoZSB2YWx1ZSBvYmplY3QgdG8gdXNlIGFzIHF1ZXJ5IHBhcmFtIHZhbHVlXG4gICAqICB2YWx1ZSA9IFwidHlwZS5pZFwiXG4gICAqL1xuICBASW5wdXQoXCJlbGRlclNlYXJjaElucHV0XCIpXG4gIHB1YmxpYyByZXNvbHZlUGF0aDogc3RyaW5nO1xuXG4gIEBJbnB1dChcImRhdGFTb3VyY2VcIilcbiAgcHVibGljIGRhdGFTb3VyY2U6IExvY2FsUGFnZWREYXRhU291cmNlPGFueT47XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVXNlIHRoaXMgdmFsdWUgZm9yIHRoZSBxdWVyeSBpZiBub25lIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dEZhbGxiYWNrXCIpXG4gIHB1YmxpYyBmYWxsYmFja1ZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBASW5wdXQoXCJ2YWx1ZUFzSWRcIilcbiAgcHVibGljIHZhbHVlQXNJZDogQm9vbGVhbklucHV0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlJDogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlPjtcbiAgcHJpdmF0ZSBfZXh0cmFjdGVkTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlYXJjaENvbnRleHQ6IEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSxcbiAgICBASG9zdCgpIHByaXZhdGUgbmdNb2RlbDogTmdNb2RlbFxuICApIHtcbiAgICB0aGlzLmluaXRpYWxWYWx1ZURpcmVjdGl2ZSA9IG5ldyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZShuZ01vZGVsKTtcbiAgICB0aGlzLl9zdGF0ZSQgPSB0aGlzLmJ1aWxkSW5wdXRTdGF0ZU9ic2VydmFibGUoKS5waXBlKFxuICAgICAgLy8gdGFwKHN0YXRlID0+IHRoaXMubG9nLmVycm9yKCdFTUlUIFNFQVJDSCBJTlBVVCBTVEFURSBbJyArIHN0YXRlLnF1ZXJ5S2V5ICsgJ106ICcgKyBzdGF0ZS5xdWVyeVZhbHVlICsgKHN0YXRlLnByaXN0aW5lID8gJyhwcmlzdGluZSknIDogJycpLCBzdGF0ZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9leHRyYWN0ZWROYW1lID0gdGhpcy5leHRyYWN0TmFtZSgpO1xuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5yZWdpc3Rlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZXh0cmFjdGVkTmFtZSA9IHRoaXMuZXh0cmFjdE5hbWUoKTtcbiAgICB0aGlzLmxvZy5kZWJ1Zyh0aGlzLl9leHRyYWN0ZWROYW1lICsgXCJ8XCIgKyB0aGlzLnF1ZXJ5S2V5ICsgXCJ8XCIgKyB0aGlzLnJlc29sdmVQYXRoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucXVlcnlLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5S2V5O1xuICAgIH1cbiAgICBpZiAodGhpcy5fZXh0cmFjdGVkTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2V4dHJhY3RlZE5hbWU7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGRldGVybWluZSB0aGUgc2VhcmNoIG5hbWUga2V5IG5hbWUuXCIgK1xuICAgICAgXCIgRWl0aGVyIHNwZWNpZnkgdGhlIG5hbWUgcHJvcGVydHkgb3IgZXhwbGljaXRseSBzZXQgW2VsZGVyU2VhcmNoSW5wdXRLZXldLlwiKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLmlzRGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBoYXNGYWxsYmFjaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh0aGlzLmZhbGxiYWNrVmFsdWUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHNldFZhbHVlKHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udmVydFF1ZXJ5U3RyaW5nVG9SYXdNb2RlbFZhbHVlKHF1ZXJ5U3RyaW5nKTtcbiAgICB0aGlzLmluaXRpYWxWYWx1ZURpcmVjdGl2ZS5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ01vZGVsLnJlc2V0KCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGdldCB2YWx1ZUNoYW5nZXMkKCkge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSW5wdXRTdGF0ZU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlPiB7XG5cbiAgICBjb25zdCB2aWV3U3RhYmlsaXplZCQgPSBvZignc3RhYmlsaXplZCQnKS5waXBlKFxuICAgICAgZGVsYXkoMjApLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBpbnB1dFN0YXRlQ2hhbmdlcyQgPSB0aGlzLnZhbHVlQ2hhbmdlcyQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLmJ1aWxkSW5wdXRTdGF0ZSh2YWx1ZSwgdHJ1ZSkpLFxuICAgICAgc2tpcFVudGlsKHZpZXdTdGFiaWxpemVkJCksXG4gICAgICBkZWJvdW5jZVRpbWUoMjApLFxuICAgICk7XG5cbiAgICBjb25zdCBzdGFydFdpdGhBc3luYyQgPSBvZignc3RhcnQnKS5waXBlKFxuICAgICAgbWFwKHN0YXJ0ID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmJ1aWxkSW5wdXRTdGF0ZSh0aGlzLm5nTW9kZWwuY29udHJvbC52YWx1ZSwgZmFsc2UpO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gY29uY2F0KHN0YXJ0V2l0aEFzeW5jJCwgaW5wdXRTdGF0ZUNoYW5nZXMkKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbnB1dFN0YXRlKGNvbnRyb2xWYWx1ZTogYW55LCB1c2VyRXZlbnQ6IGJvb2xlYW4pOiBTZWFyY2hJbnB1dFN0YXRlIHtcbiAgICBjb25zdCBxdWVyeVZhbHVlID0gdGhpcy5jb252ZXJ0UmF3TW9kZWxWYWx1ZVRvUXVlcnlTdHJpbmcoY29udHJvbFZhbHVlKTtcbiAgICBjb25zdCBwcmlzdGluZSA9ICF0aGlzLmlzQXR0cmlidXRlVmFsdWVQcmVzZW50KGNvbnRyb2xWYWx1ZSk7XG4gICAgcmV0dXJuIG5ldyBTZWFyY2hJbnB1dFN0YXRlKFxuICAgICAgdGhpcy5uYW1lLFxuICAgICAgcXVlcnlWYWx1ZSxcbiAgICAgIHRoaXMucXVlcnlLZXkgfHwgdGhpcy5uYW1lLFxuICAgICAgcHJpc3RpbmUsXG4gICAgICB1c2VyRXZlbnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UXVlcnlTdHJpbmdUb1Jhd01vZGVsVmFsdWUocXVlcnlTdHJpbmc6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCkge1xuICAgIGlmIChPYmplY3RzLm5vbk51bGwocXVlcnlTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gcXVlcnlTdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFJhd01vZGVsVmFsdWVUb1F1ZXJ5U3RyaW5nKG1vZGVsOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuXG4gICAgbGV0IHF1ZXJ5VmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy52YWx1ZUFzSWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBxdWVyeVZhbHVlID0gdGhpcy5jaGVja0FuZENvbnZlcnRGYXVsdHlWYWx1ZXNUb051bGwobW9kZWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0F0dHJpYnV0ZVZhbHVlUHJlc2VudChtb2RlbCkpIHtcbiAgICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSBpcyBwcmVzZW50XG4gICAgICBxdWVyeVZhbHVlID0gdGhpcy5yZXNvbHZlVmFsdWUobW9kZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5oYXNGYWxsYmFjaykge1xuICAgICAgICBxdWVyeVZhbHVlID0gdGhpcy5mYWxsYmFja1ZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBxdWVyeVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FuZENvbnZlcnRGYXVsdHlWYWx1ZXNUb051bGwodmFsdWU6IGFueSkge1xuICAgIGxldCBmaXhlZFZhbHVlID0gdmFsdWU7XG4gICAgZml4ZWRWYWx1ZSA9IHRoaXMuY29udmVydEVtcHR5QXJyYXlUb051bGwoZml4ZWRWYWx1ZSk7XG4gICAgZml4ZWRWYWx1ZSA9IHRoaXMuY29udmVydEVtcHR5U3RyaW5nVG9OdWxsKGZpeGVkVmFsdWUpO1xuXG4gICAgcmV0dXJuIGZpeGVkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFbXB0eUFycmF5VG9OdWxsKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFbXB0eVN0cmluZ1RvTnVsbCh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGlzQXR0cmlidXRlVmFsdWVQcmVzZW50KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh2YWx1ZSlcbiAgICAgICYmICh2YWx1ZSArIFwiXCIpLmxlbmd0aCAhPT0gMDtcbiAgfVxuXG5cbiAgcHJpdmF0ZSByZXNvbHZlVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRWYWx1ZXMgPSB2YWx1ZVxuICAgICAgICAgIC5tYXAodiA9PiB0aGlzLnJlc29sdmVTaW5nbGVWYWx1ZSh2KSlcbiAgICAgICAgICAuZmlsdGVyKHYgPT4gT2JqZWN0cy5ub25OdWxsKHYpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25jYXRJZk5lY2Vzc2FyeShyZXNvbHZlZFZhbHVlcyk7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVTaW5nbGVWYWx1ZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNpbmdsZVZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuICAgIHZhbHVlID0gUHJvcGVydHlQYXRoVXRpbC5yZXNvbHZlVmFsdWUodmFsdWUsIHRoaXMucmVzb2x2ZVBhdGgpO1xuICAgIHZhbHVlID0gdGhpcy52YWx1ZVRyYW5zZm9ybSA/IHRoaXMudmFsdWVUcmFuc2Zvcm0odmFsdWUpIDogdmFsdWU7XG5cblxuICAgIGlmIChPYmplY3RzLm5vbk51bGwodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAuZmlsdGVyKGkgPT4gT2JqZWN0cy5ub25OdWxsKGkpKVxuICAgICAgICAgIC5tYXAoaSA9PiBpLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2RlbC5uYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25jYXRJZk5lY2Vzc2FyeSh2YWx1ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSk6IGFueVtdIHtcbiAgICBjb25zdCBhcnJheXMgPSB2YWx1ZXMubWFwKHYgPT4ge1xuICAgICAgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbdl07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIENvbGxlY3Rpb25VdGlsLmZsYXR0ZW4oYXJyYXlzKTtcbiAgfVxuXG59XG4iXX0=
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBS25ELE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQWEsU0FBUyxFQUFpQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBa0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFHckUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7Ozs7QUFHdkY7O0dBRUc7QUFLSCxNQUFNLE9BQU8seUJBQXlCO0lBOENwQzs7OztnRkFJNEU7SUFFNUUsWUFDVSxhQUEwQyxFQUNsQyxPQUFnQjtRQUR4QixrQkFBYSxHQUFiLGFBQWEsQ0FBNkI7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQVhqQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixRQUFHLEdBQUcsYUFB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QUFFLENBQUMsQ0FBQzthQUMzQjtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN6QjtTQUNGO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVPLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBNkI7UUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDOytHQW5TVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsa0JBQWtCO2lCQUM3Qjs7MEJBdURJLElBQUk7NENBeENBLFFBQVE7c0JBRGQsS0FBSzt1QkFBQyxxQkFBcUI7Z0JBT3JCLGNBQWM7c0JBRHBCLEtBQUs7dUJBQUMsMkJBQTJCO2dCQVEzQixXQUFXO3NCQURqQixLQUFLO3VCQUFDLGtCQUFrQjtnQkFJbEIsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxZQUFZO2dCQU9aLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUkxQixTQUFTO3NCQURmLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBIb3N0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0VsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZX0gZnJvbSAnLi9lbGRlci1zZWFyY2gtY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzL2ludGVybmFsL09ic2VydmFibGUnO1xuaW1wb3J0IHtOZ01vZGVsfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1NlYXJjaElucHV0fSBmcm9tICcuL2RvbWFpbi9pbnB1dC9zZWFyY2gtaW5wdXQnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRlbGF5LCBmaXJzdCwgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFrZVdoaWxlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UHJvcGVydHlQYXRoVXRpbH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL3Byb3BlcnR5LXBhdGgtdXRpbCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29uY2F0LCBvZiwgc2tpcFVudGlsLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7U2VhcmNoSW5wdXRTdGF0ZX0gZnJvbSAnLi9kb21haW4vaW5wdXQvc2VhcmNoLWlucHV0LXN0YXRlJztcbmltcG9ydCB7T2JqZWN0c30gZnJvbSAnLi4vLi4vLi4vY29tbW9uL29iamVjdHMnO1xuaW1wb3J0IHtDb2xsZWN0aW9uVXRpbH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL2NvbGxlY3Rpb24tdXRpbCc7XG5pbXBvcnQge0xvY2FsUGFnZWREYXRhU291cmNlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2xvY2FsL2xvY2FsLXBhZ2VkLWRhdGEtc291cmNlJztcbmltcG9ydCB7Qm9vbGVhbklucHV0fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZX0gZnJvbSAnLi4vZGlyZWN0aXZlcy9lbGRlci1pbml0aWFsLXZhbHVlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1NlYXJjaENvbnRleHR9IGZyb20gJy4vZG9tYWluL2NvbnRleHQvc2VhcmNoLWNvbnRleHQnO1xuXG4vKipcbiAqIFNlYXJjaCBuYW1lIGFkYXB0ZXIgZm9yIGlucHV0IGNvbnRyb2xzLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJTZWFyY2hJbnB1dF0nLFxuICBleHBvcnRBczogJ2VsZGVyU2VhcmNoSW5wdXQnXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBTZWFyY2hJbnB1dCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFZhbHVlRGlyZWN0aXZlOiBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBVc3VhbGx5IHRoZSBjb250cm9sIG5hbWUgaXMgdXNlZCwgdGhpcyBhbGxvd3MgYSBjdXN0b20gcXVlcnkga2V5XG4gICAqL1xuICBASW5wdXQoJ2VsZGVyU2VhcmNoSW5wdXRLZXknKVxuICBwdWJsaWMgcXVlcnlLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBGdW5jdGlvbiB3aGljaCB0cmFuc2Zvcm1zIHRoZSB2YWx1ZSBvYmplY3QgdG8gYSBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KCdlbGRlclNlYXJjaElucHV0VHJhbnNmb3JtJylcbiAgcHVibGljIHZhbHVlVHJhbnNmb3JtOiAoKHZhbHVlOiBhbnkpID0+IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCwgRGVmYXVsdCkgUGF0aCBvbiB0aGUgdmFsdWUgb2JqZWN0IHRvIHVzZSBhcyBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKiAgdmFsdWUgPSBcInR5cGUuaWRcIlxuICAgKi9cbiAgQElucHV0KCdlbGRlclNlYXJjaElucHV0JylcbiAgcHVibGljIHJlc29sdmVQYXRoOiBzdHJpbmc7XG5cbiAgQElucHV0KCdkYXRhU291cmNlJylcbiAgcHVibGljIGRhdGFTb3VyY2U6IExvY2FsUGFnZWREYXRhU291cmNlPGFueT47XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVXNlIHRoaXMgdmFsdWUgZm9yIHRoZSBxdWVyeSBpZiBub25lIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgQElucHV0KCdlbGRlclNlYXJjaElucHV0RmFsbGJhY2snKVxuICBwdWJsaWMgZmFsbGJhY2tWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgQElucHV0KCd2YWx1ZUFzSWQnKVxuICBwdWJsaWMgdmFsdWVBc0lkOiBCb29sZWFuSW5wdXQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUkOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+O1xuICBwcml2YXRlIF9leHRyYWN0ZWROYW1lOiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VhcmNoQ29udGV4dDogRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlLFxuICAgIEBIb3N0KCkgcHJpdmF0ZSBuZ01vZGVsOiBOZ01vZGVsXG4gICkge1xuICAgIHRoaXMuaW5pdGlhbFZhbHVlRGlyZWN0aXZlID0gbmV3IEVsZGVySW5pdGlhbFZhbHVlRGlyZWN0aXZlKG5nTW9kZWwpO1xuICAgIHRoaXMuX3N0YXRlJCA9IHRoaXMuYnVpbGRJbnB1dFN0YXRlT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAvLyB0YXAoc3RhdGUgPT4gdGhpcy5sb2cuZXJyb3IoJ0VNSVQgU0VBUkNIIElOUFVUIFNUQVRFIFsnICsgc3RhdGUucXVlcnlLZXkgKyAnXTogJyArIHN0YXRlLnF1ZXJ5VmFsdWUgKyAoc3RhdGUucHJpc3RpbmUgPyAnKHByaXN0aW5lKScgOiAnJyksIHN0YXRlKSlcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2V4dHJhY3RlZE5hbWUgPSB0aGlzLmV4dHJhY3ROYW1lKCk7XG4gICAgdGhpcy5zZWFyY2hDb250ZXh0LnJlZ2lzdGVyKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9leHRyYWN0ZWROYW1lID0gdGhpcy5leHRyYWN0TmFtZSgpO1xuICAgIHRoaXMubG9nLmRlYnVnKHRoaXMuX2V4dHJhY3RlZE5hbWUgKyAnfCcgKyB0aGlzLnF1ZXJ5S2V5ICsgJ3wnICsgdGhpcy5yZXNvbHZlUGF0aCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnF1ZXJ5S2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWVyeUtleTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2V4dHJhY3RlZE5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9leHRyYWN0ZWROYW1lO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGRldGVybWluZSB0aGUgc2VhcmNoIG5hbWUga2V5IG5hbWUuJyArXG4gICAgICAnIEVpdGhlciBzcGVjaWZ5IHRoZSBuYW1lIHByb3BlcnR5IG9yIGV4cGxpY2l0bHkgc2V0IFtlbGRlclNlYXJjaElucHV0S2V5XS4nKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLmlzRGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBoYXNGYWxsYmFjaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh0aGlzLmZhbGxiYWNrVmFsdWUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHNldFZhbHVlKHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udmVydFF1ZXJ5U3RyaW5nVG9SYXdNb2RlbFZhbHVlKHF1ZXJ5U3RyaW5nKTtcbiAgICB0aGlzLmluaXRpYWxWYWx1ZURpcmVjdGl2ZS5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ01vZGVsLnJlc2V0KCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGdldCB2YWx1ZUNoYW5nZXMkKCkge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSW5wdXRTdGF0ZU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlPiB7XG5cbiAgICBjb25zdCB2aWV3U3RhYmlsaXplZCQgPSBvZignc3RhYmlsaXplZCQnKS5waXBlKFxuICAgICAgZGVsYXkoMjApLFxuICAgICAgZmlyc3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBpbnB1dFN0YXRlQ2hhbmdlcyQgPSB0aGlzLnZhbHVlQ2hhbmdlcyQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLmJ1aWxkSW5wdXRTdGF0ZSh2YWx1ZSwgdHJ1ZSkpLFxuICAgICAgc2tpcFVudGlsKHZpZXdTdGFiaWxpemVkJCksXG4gICAgICBkZWJvdW5jZVRpbWUoMjApLFxuICAgICk7XG5cbiAgICBjb25zdCBzdGFydFdpdGhBc3luYyQgPSBvZignc3RhcnQnKS5waXBlKFxuICAgICAgbWFwKHN0YXJ0ID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmJ1aWxkSW5wdXRTdGF0ZSh0aGlzLm5nTW9kZWwuY29udHJvbC52YWx1ZSwgZmFsc2UpO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gY29uY2F0KHN0YXJ0V2l0aEFzeW5jJCwgaW5wdXRTdGF0ZUNoYW5nZXMkKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbnB1dFN0YXRlKGNvbnRyb2xWYWx1ZTogYW55LCB1c2VyRXZlbnQ6IGJvb2xlYW4pOiBTZWFyY2hJbnB1dFN0YXRlIHtcbiAgICBjb25zdCBxdWVyeVZhbHVlID0gdGhpcy5jb252ZXJ0UmF3TW9kZWxWYWx1ZVRvUXVlcnlTdHJpbmcoY29udHJvbFZhbHVlKTtcbiAgICBsZXQgcHJpc3RpbmUgPSAhdGhpcy5pc0F0dHJpYnV0ZVZhbHVlUHJlc2VudChjb250cm9sVmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuaGFzRmFsbGJhY2spIHtcbiAgICAgIGlmKHRoaXMuZmFsbGJhY2tWYWx1ZSA9PT0gcXVlcnlWYWx1ZSl7XG4gICAgICAgIHByaXN0aW5lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNlYXJjaElucHV0U3RhdGUoXG4gICAgICB0aGlzLm5hbWUsXG4gICAgICBxdWVyeVZhbHVlLFxuICAgICAgdGhpcy5xdWVyeUtleSB8fCB0aGlzLm5hbWUsXG4gICAgICBwcmlzdGluZSxcbiAgICAgIHVzZXJFdmVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRRdWVyeVN0cmluZ1RvUmF3TW9kZWxWYWx1ZShxdWVyeVN0cmluZzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKSB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbChxdWVyeVN0cmluZykpIHtcbiAgICAgIHJldHVybiBxdWVyeVN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UmF3TW9kZWxWYWx1ZVRvUXVlcnlTdHJpbmcobW9kZWw6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG5cbiAgICBsZXQgcXVlcnlWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnZhbHVlQXNJZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLmNoZWNrQW5kQ29udmVydEZhdWx0eVZhbHVlc1RvTnVsbChtb2RlbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQXR0cmlidXRlVmFsdWVQcmVzZW50KG1vZGVsKSkge1xuICAgICAgLy8gQXR0cmlidXRlIHZhbHVlIGlzIHByZXNlbnRcbiAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLnJlc29sdmVWYWx1ZShtb2RlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmhhc0ZhbGxiYWNrKSB7XG4gICAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLmZhbGxiYWNrVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQW5kQ29udmVydEZhdWx0eVZhbHVlc1RvTnVsbCh2YWx1ZTogYW55KSB7XG4gICAgbGV0IGZpeGVkVmFsdWUgPSB2YWx1ZTtcbiAgICBmaXhlZFZhbHVlID0gdGhpcy5jb252ZXJ0RW1wdHlBcnJheVRvTnVsbChmaXhlZFZhbHVlKTtcbiAgICBmaXhlZFZhbHVlID0gdGhpcy5jb252ZXJ0RW1wdHlTdHJpbmdUb051bGwoZml4ZWRWYWx1ZSk7XG5cbiAgICByZXR1cm4gZml4ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEVtcHR5QXJyYXlUb051bGwodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEVtcHR5U3RyaW5nVG9OdWxsKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGlzQXR0cmlidXRlVmFsdWVQcmVzZW50KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh2YWx1ZSlcbiAgICAgICYmICh2YWx1ZSArICcnKS5sZW5ndGggIT09IDA7XG4gIH1cblxuXG4gIHByaXZhdGUgcmVzb2x2ZVZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuICAgIGlmIChPYmplY3RzLm5vbk51bGwodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuXG4gICAgICAgIGNvbnN0IHJlc29sdmVkVmFsdWVzID0gdmFsdWVcbiAgICAgICAgICAubWFwKHYgPT4gdGhpcy5yZXNvbHZlU2luZ2xlVmFsdWUodikpXG4gICAgICAgICAgLmZpbHRlcih2ID0+IE9iamVjdHMubm9uTnVsbCh2KSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uY2F0SWZOZWNlc3NhcnkocmVzb2x2ZWRWYWx1ZXMpO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2luZ2xlVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVTaW5nbGVWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHtcbiAgICB2YWx1ZSA9IFByb3BlcnR5UGF0aFV0aWwucmVzb2x2ZVZhbHVlKHZhbHVlLCB0aGlzLnJlc29sdmVQYXRoKTtcbiAgICB2YWx1ZSA9IHRoaXMudmFsdWVUcmFuc2Zvcm0gPyB0aGlzLnZhbHVlVHJhbnNmb3JtKHZhbHVlKSA6IHZhbHVlO1xuXG5cbiAgICBpZiAoT2JqZWN0cy5ub25OdWxsKHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgLmZpbHRlcihpID0+IE9iamVjdHMubm9uTnVsbChpKSlcbiAgICAgICAgICAubWFwKGkgPT4gaS50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3ROYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwubmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgY29uY2F0SWZOZWNlc3NhcnkodmFsdWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10pOiBhbnlbXSB7XG4gICAgY29uc3QgYXJyYXlzID0gdmFsdWVzLm1hcCh2ID0+IHtcbiAgICAgIGlmICh2IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW3ZdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDb2xsZWN0aW9uVXRpbC5mbGF0dGVuKGFycmF5cyk7XG4gIH1cblxufVxuIl19
|