@ecodev/natural 50.1.1 → 50.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/classes/abstract-list.mjs +4 -1
- package/esm2020/lib/classes/query-variable-manager.mjs +1 -1
- package/esm2020/lib/modules/dropdown-components/types.mjs +3 -3
- package/esm2020/lib/modules/relations/relations.component.mjs +9 -11
- package/fesm2015/ecodev-natural.mjs +13 -11
- package/fesm2015/ecodev-natural.mjs.map +1 -1
- package/fesm2020/ecodev-natural.mjs +12 -11
- package/fesm2020/ecodev-natural.mjs.map +1 -1
- package/lib/classes/abstract-list.d.ts +1 -1
- package/lib/classes/query-variable-manager.d.ts +1 -0
- package/lib/modules/relations/relations.component.d.ts +3 -0
- package/package.json +1 -1
|
@@ -166,6 +166,9 @@ export class NaturalAbstractList extends NaturalAbstractPanel {
|
|
|
166
166
|
if ('nullAsHighest' in sortingEvent) {
|
|
167
167
|
s.nullAsHighest = sortingEvent.nullAsHighest;
|
|
168
168
|
}
|
|
169
|
+
if ('emptyStringAsHighest' in sortingEvent) {
|
|
170
|
+
s.emptyStringAsHighest = sortingEvent.emptyStringAsHighest;
|
|
171
|
+
}
|
|
169
172
|
return s;
|
|
170
173
|
});
|
|
171
174
|
// Empty sorting fallbacks on default
|
|
@@ -429,4 +432,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
429
432
|
}], forcedVariables: [{
|
|
430
433
|
type: Input
|
|
431
434
|
}] } });
|
|
432
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL2Fic3RyYWN0LWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUc1RSxPQUFPLEVBQUMsY0FBYyxFQUFRLGFBQWEsRUFBb0IsZUFBZSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9HLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDM0QsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBSTdELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxpQkFBaUIsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUNILDRCQUE0QixFQUk1QixZQUFZLEdBQ2YsTUFBTSwwQkFBMEIsQ0FBQztBQUdsQyxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUtqRCxTQUFTLGVBQWUsQ0FBQyxJQUFvQjtJQUN6QyxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7S0FDcEI7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFFSCxXQUFXO0FBRVgsTUFBTSxPQUFPLG1CQWtCVCxTQUFRLG9CQUFvQjtJQTJGNUIsWUFBbUMsT0FBaUIsRUFBbUIsUUFBa0I7UUFDckYsS0FBSyxFQUFFLENBQUM7UUFEdUIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFtQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBeEZ6Rjs7V0FFRztRQUNhLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJDOztXQUVHO1FBQ2EscUJBQWdCLEdBQXNCLEVBQUUsQ0FBQztRQUV6RDs7V0FFRztRQUNJLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBRXRDOztXQUVHO1FBQ0ssMkJBQXNCLEdBQW9CLElBQUksQ0FBQztRQWN2RDs7V0FFRztRQUNhLGNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBb0MsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTVGOztXQUVHO1FBQ0ksdUJBQWtCLEdBQWtCLElBQUksQ0FBQztRQUVoRDs7V0FFRztRQUNJLHFCQUFnQixHQUF3RCxJQUFJLDRCQUE0QixFQUU1RyxDQUFDO1FBRUo7O1dBRUc7UUFDSSx3QkFBbUIsR0FBd0IsRUFBRSxDQUFDO1FBRXJEOztXQUVHO1FBQ0ksNEJBQXVCLEdBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFPL0Q7O1dBRUc7UUFDYSxvQkFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXhEOztXQUVHO1FBQ08sc0JBQWlCLEdBQThCO1lBQ3JELE1BQU0sRUFBRSxJQUFJO1lBQ1osU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLEVBQUUsRUFBRTtTQUNmLENBQUM7UUFlRSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxlQUFlLENBQUMsU0FBNEM7UUFDbkUsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFMUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBMEIsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQTBCLENBQUMsQ0FBQztRQUVuRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksaUJBQWlCLENBQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXZCLG9FQUFvRTtRQUNwRSx5RUFBeUU7UUFDekUsNEZBQTRGO1FBQzVGLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDYixJQUFJLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGVBQWUsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEtBQUssVUFBVSxDQUFDLENBQzlGO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFFUCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDYixJQUFJLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsSUFBSSxVQUFVLENBQUMsQ0FDaEU7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLGFBQWE7WUFDakMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FDVCx1QkFBZ0QsRUFDaEQsZ0JBQW1DLEVBQ25DLGVBQWUsR0FBRyxJQUFJO1FBRXRCLGlFQUFpRTtRQUVqRSxJQUFJLGVBQWUsRUFBRTtZQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtnQkFDdEMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsdUJBQXVCO1FBQ3ZCLHNGQUFzRjtRQUN0RixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQzNDLElBQUksRUFDSixLQUFLLENBQUMsdUJBQXVCLENBQUMsRUFDOUIsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsYUFBYSxFQUFFLENBQ3ZCLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDMUQ7UUFFRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxhQUFpRTtRQUM1RSxpRUFBaUU7UUFDakUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDdEMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDM0MsQ0FBQyxDQUFDO1FBRTVCLDRGQUE0RjtRQUM1RixJQUFJLE9BQU8sR0FBYyxhQUFhO2FBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2FBQzFCLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQixNQUFNLENBQUMsR0FBWTtnQkFDZixLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU07YUFDN0IsQ0FBQztZQUVGLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7Z0JBQ2xDLENBQUMsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQzthQUM5QjtpQkFBTSxJQUFJLFlBQVksQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFO2dCQUMxQyxDQUFDLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7YUFDL0I7WUFFRCxJQUFJLGVBQWUsSUFBSSxZQUFZLEVBQUU7Z0JBQ2pDLENBQUMsQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQzthQUNoRDtZQUVELE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7UUFFUCxxQ0FBcUM7UUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzdDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ2pDO1FBRUQsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBMEIsQ0FBQyxDQUFDO1FBRWxGLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckMsMEdBQTBHO1lBQzFHLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQzNDLElBQUksRUFDSixPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQ3RELElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUN2QixDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNqQixNQUFNLGlCQUFpQixHQUErQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTlHLElBQUksaUJBQWlCLElBQUksaUJBQWlCLENBQUMsVUFBVSxFQUFFO1lBQ25ELDBHQUEwRztZQUMxRyxtREFBbUQ7WUFDbkQsT0FBTyxpQkFBaUIsQ0FBQyxVQUE2QixDQUFDO1NBQzFEO1FBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxVQUFVLENBQ2IsS0FBa0MsRUFDbEMsS0FBd0IsRUFDeEIsZ0JBQW1DO1FBRW5DLElBQUksVUFBVSxHQUFvQixJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDekQsSUFBSSxjQUFjLEdBQTJCLElBQUksQ0FBQztRQUVsRCwrREFBK0Q7UUFDL0QsSUFBSSxZQUFZLEdBQW9CLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsOENBQThDO1FBQ3BJLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1FBRWhHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2hELFVBQVUsR0FBRyxjQUFjLEdBQUcsWUFBWSxDQUFDO1NBQzlDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBQyxVQUFVLEVBQTBCLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxpQkFBaUIsQ0FDdkIsVUFBa0MsRUFDbEMsS0FBd0IsRUFDeEIsZ0JBQW1DO1FBRW5DLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckMsMkJBQTJCO1lBQzNCLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBNkIsRUFBb0IsRUFBRSxDQUNoRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUVyRyxxREFBcUQ7WUFDckQsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUN6QztpQkFBTTtnQkFDSCxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdkI7U0FDSjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzFCO2FBQU07WUFDSCxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRTtvQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDcEM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNoQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDbkQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkMsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRTtnQkFDZCxPQUFPLEVBQUUsQ0FBQzthQUNiO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsS0FBSyxPQUFPLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDdEc7UUFFQSxJQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVTtRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWE7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ08sYUFBYTtRQUNuQixZQUFZO1FBQ1osSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDdkU7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUNyRTtRQUVELFVBQVU7UUFDVixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQ25FO0lBQ0wsQ0FBQztJQUVTLGlCQUFpQjtRQUN2QiwwRkFBMEY7UUFDMUYsb0dBQW9HO1FBQ3BHLG1GQUFtRjtRQUNuRixPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2QsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBa0MsQ0FBQzthQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBZ0MsQ0FBQztJQUM1RSxDQUFDO0lBRVMsaUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckMsT0FBTztTQUNWO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXhDLGtCQUFrQjtRQUNsQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdFLElBQUksVUFBVSxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBQyxVQUFVLEVBQTBCLENBQUMsQ0FBQztTQUNsRjtRQUVELGVBQWU7UUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFFLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBQyxPQUFPLEVBQTBCLENBQUMsQ0FBQztTQUM1RTtRQUVELFVBQVU7UUFDVixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEYsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRTtZQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0RDtRQUVELHNCQUFzQjtRQUN0QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFUyw2QkFBNkIsQ0FDbkMsdUJBQWdELEVBQ2hELGlCQUFpQixHQUFHLEtBQUs7UUFFekIsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFMUYsSUFBSSxpQkFBaUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLE1BQU0sRUFBMEIsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNPLGFBQWE7UUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDMUcsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVTLHVCQUF1QjtRQUM3QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUM1QixTQUFTLENBQUEsYUFBYSxFQUN0QixTQUFTLENBQUEsa0VBQWtFLEVBQzNFLFNBQVMsQ0FBQSwwQkFBMEIsQ0FDdEMsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNPLFVBQVU7UUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUMvQixJQUFJLFNBQVMsRUFBRTtnQkFDWCw0RUFBNEU7Z0JBQzVFLDJFQUEyRTtnQkFDM0UsMEJBQTBCO2dCQUMxQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQTBCLENBQUM7Z0JBRTVELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQSxVQUFVLENBQUMsQ0FBQztvQkFDNUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNmLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFNBQXlCO1FBQ2xELElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxFQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxFQUEwQixDQUFDLENBQUM7U0FDbkc7UUFFRCxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBMEIsQ0FBQyxDQUFDO1NBQ3hHO1FBRUQsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQTBCLENBQUMsQ0FBQztTQUMvRjtJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBaUI7UUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNyQyxPQUFPO1NBQ1Y7UUFFRCx1RkFBdUY7UUFDdkYsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM5QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDO1NBQ3pDO2FBQU07WUFDSCxzRUFBc0U7WUFDdEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ25GO0lBQ0wsQ0FBQzs7Z0hBL2hCUSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixTQUFTO29IQXlCVSxhQUFhO3NCQUE1QixLQUFLO2dCQUtVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFpQlUsZUFBZTtzQkFBOUIsS0FBSztnQkE0RUssZUFBZTtzQkFEekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VsZWN0aW9uTW9kZWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BhZ2VFdmVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7U29ydH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBEYXRhLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXh0cmFzLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7ZGVmYXVsdHMsIGlzRW1wdHksIGlzRXF1YWwsIHBpY2t9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtOYXR1cmFsQWxlcnRTZXJ2aWNlfSBmcm9tICcuLi9tb2R1bGVzL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RQYW5lbH0gZnJvbSAnLi4vbW9kdWxlcy9wYW5lbHMvYWJzdHJhY3QtcGFuZWwnO1xuaW1wb3J0IHt0b0dyYXBoUUxEb2N0cmluZUZpbHRlcn0gZnJvbSAnLi4vbW9kdWxlcy9zZWFyY2gvY2xhc3Nlcy9ncmFwaHFsLWRvY3RyaW5lJztcbmltcG9ydCB7ZnJvbVVybCwgdG9Vcmx9IGZyb20gJy4uL21vZHVsZXMvc2VhcmNoL2NsYXNzZXMvdXJsJztcbmltcG9ydCB7TmF0dXJhbFNlYXJjaEZhY2V0c30gZnJvbSAnLi4vbW9kdWxlcy9zZWFyY2gvdHlwZXMvZmFjZXQnO1xuaW1wb3J0IHtOYXR1cmFsU2VhcmNoU2VsZWN0aW9uc30gZnJvbSAnLi4vbW9kdWxlcy9zZWFyY2gvdHlwZXMvdmFsdWVzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbFBlcnNpc3RlbmNlU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxEYXRhU291cmNlLCBQYWdpbmF0ZWREYXRhfSBmcm9tICcuL2RhdGEtc291cmNlJztcbmltcG9ydCB7XG4gICAgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcixcbiAgICBQYWdpbmF0aW9uSW5wdXQsXG4gICAgUXVlcnlWYXJpYWJsZXMsXG4gICAgU29ydGluZyxcbiAgICBTb3J0aW5nT3JkZXIsXG59IGZyb20gJy4vcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5pbXBvcnQge0V4dHJhY3RUYWxsLCBFeHRyYWN0VmFsbCwgTGl0ZXJhbH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtOYXZpZ2FibGVJdGVtfSBmcm9tICcuL2Fic3RyYWN0LW5hdmlnYWJsZS1saXN0JztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXZhaWxhYmxlQ29sdW1ufSBmcm9tICcuLi9tb2R1bGVzL2NvbHVtbnMtcGlja2VyL3R5cGVzJztcblxudHlwZSBNYXliZU5hdmlnYWJsZSA9IExpdGVyYWwgfCBOYXZpZ2FibGVJdGVtPExpdGVyYWw+O1xuXG5mdW5jdGlvbiB1bndyYXBOYXZpZ2FibGUoaXRlbTogTWF5YmVOYXZpZ2FibGUpOiBMaXRlcmFsIHtcbiAgICBpZiAoJ2l0ZW0nIGluIGl0ZW0gJiYgJ2hhc05hdmlnYXRpb24nIGluIGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaXRlbTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhlbHBzIG1hbmFnaW5nIGEgbGlzdCBvZiBwYWdpbmF0ZWQgaXRlbXMgdGhhdCBjYW4gYmUgZmlsdGVyZWQsXG4gKiBzZWxlY3RlZCwgYW5kIHRoZW4gYnVsayBhY3Rpb25zIGNhbiBiZSBwZXJmb3JtZWQgb24gc2VsZWN0aW9uLlxuICpcbiAqIENvbXBvbmVudHMgaW5oZXJpdGluZyBmcm9tIHRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgYXMgc3RhbmRhbG9uZSB3aXRoIGlucHV0IGF0dHJpYnV0ZXMuXG4gKlxuICogVXNhZ2UgOlxuICogPG5hdHVyYWwtbXktbGlzdGluZyBbZm9yY2VkVmFyaWFibGVzXT1cIntmaWx0ZXI6Li4ufVwiIFtzZWxlY3RlZENvbHVtbnNdPVwiWydjb2wxJ11cIiBbcGVyc2lzdFNlYXJjaF09XCJmYWxzZVwiPlxuICovXG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBOYXR1cmFsQWJzdHJhY3RMaXN0PFxuICAgICAgICBUU2VydmljZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIFBhZ2luYXRlZERhdGE8TGl0ZXJhbD4sXG4gICAgICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgICAgICAvLyBJbiBtb3N0IGNhc2UgdGhpcyBzaG91bGQgbm90IGJlIHNwZWNpZmllZCBieSBpbmhlcml0aW5nIGNsYXNzZXMuXG4gICAgICAgIC8vIEl0IHNob3VsZCBvbmx5IGJlIHNwZWNpZmllZCB0byBvdmVycmlkZSBkZWZhdWx0IGlmIHRoZSBzZXJ2aWNlIGl0ZW1zIGFyZVxuICAgICAgICAvLyBtYXBwZWQgdG8gYSBkaWZmZXJlbnQgc3RydWN0dXJlIGxpa2UgaW4gTmF0dXJhbEFic3RyYWN0TmF2aWdhYmxlTGlzdFxuICAgICAgICBUYWxsIGV4dGVuZHMgUGFnaW5hdGVkRGF0YTxNYXliZU5hdmlnYWJsZT4gPSBFeHRyYWN0VGFsbDxUU2VydmljZT4sXG4gICAgPlxuICAgIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0UGFuZWxcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gICAgLyoqXG4gICAgICogV2hlcmV2ZXIgc2VhcmNoIHNob3VsZCBiZSBsb2FkZWQgZnJvbSB1cmwvc3RvcmFnZSBhbmQgcGVyc2lzdGVkIGluIGl0IHRvby5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGVyc2lzdFNlYXJjaCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGNvbHVtbnMgdGhhdCBhcmUgYXZhaWxhYmxlIHRvIHRoZSBlbmQtdXNlciB0byBzZWxlY3QgZnJvbSwgdmlhIGA8bmF0dXJhbC1jb2x1bW5zLXBpY2tlcj5gXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGF2YWlsYWJsZUNvbHVtbnM6IEF2YWlsYWJsZUNvbHVtbltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBDb2x1bW5zIGxpc3QgYWZ0ZXIgaW50ZXJhY3Rpb24gd2l0aCBgPG5hdHVyYWwtY29sdW1ucy1waWNrZXI+YFxuICAgICAqL1xuICAgIHB1YmxpYyBjb2x1bW5zRm9yVGFibGU6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGVmYXVsdCBjb2x1bW4gc2VsZWN0aW9uIHRoYXQgYXV0b21hdGljYWxseSBoYXBwZW5lZCBhZnRlciBgPG5hdHVyYWwtY29sdW1ucy1waWNrZXI+YCBpbml0aWFsaXphdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgZGVmYXVsdFNlbGVjdGVkQ29sdW1uczogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFZpc2libGUgKGNoZWNrZWQpIGNvbHVtbnNcbiAgICAgKlxuICAgICAqIEluc3RlYWQgb2YgdXNpbmcgdGhpcywgeW91IHNob3VsZCBjb25zaWRlciBjb3JyZWN0bHkgY29uZmlndXJpbmcgYEF2YWlsYWJsZUNvbHVtbi5jaGVja2VkYC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRDb2x1bW5zPzogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBTb3VyY2Ugb2YgdGhlIGxpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgZGF0YVNvdXJjZT86IE5hdHVyYWxEYXRhU291cmNlPFRhbGw+O1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0aW9uIGZvciBidWxrIGFjdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPEV4dHJhY3RUYWxsPFRTZXJ2aWNlPlsnaXRlbXMnXVswXT4odHJ1ZSwgW10pO1xuXG4gICAgLyoqXG4gICAgICogTmV4dCBleGVjdXRlZCBhY3Rpb24gZnJvbSBidWxrIG1lbnVcbiAgICAgKi9cbiAgICBwdWJsaWMgYnVsa0FjdGlvblNlbGVjdGVkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENlbnRyYWxpc2F0aW9uIG9mIHF1ZXJ5IHZhcmlhYmxlc1xuICAgICAqL1xuICAgIHB1YmxpYyB2YXJpYWJsZXNNYW5hZ2VyOiBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPEV4dHJhY3RWYWxsPFRTZXJ2aWNlPj4gPSBuZXcgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxcbiAgICAgICAgRXh0cmFjdFZhbGw8VFNlcnZpY2U+XG4gICAgPigpO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBmb3IgbmF0dXJhbC1zZWFyY2ggZmFjZXRzXG4gICAgICovXG4gICAgcHVibGljIG5hdHVyYWxTZWFyY2hGYWNldHM6IE5hdHVyYWxTZWFyY2hGYWNldHMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFJlc3VsdCBvZiBhIHNlYXJjaCAoY2FuIGJlIHByb3ZpZGVkIGFzIGlucHV0IGZvciBpbml0aWFsaXNhdGlvbilcbiAgICAgKi9cbiAgICBwdWJsaWMgbmF0dXJhbFNlYXJjaFNlbGVjdGlvbnM6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zID0gW1tdXTtcblxuICAgIC8qKlxuICAgICAqIERhdGEgYXR0cmlidXRlIHByb3ZpZGVkIGJ5IGFjdGl2YXRlZCByb3V0ZSBzbmFwc2hvdFxuICAgICAqL1xuICAgIHB1YmxpYyByb3V0ZURhdGE/OiBEYXRhO1xuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBwYWdlIHNpemVzXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAyNSwgNTAsIDEwMCwgMjAwXTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWwgcGFnaW5hdGlvbiBzZXR1cFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBkZWZhdWx0UGFnaW5hdGlvbjogUmVxdWlyZWQ8UGFnaW5hdGlvbklucHV0PiA9IHtcbiAgICAgICAgb2Zmc2V0OiBudWxsLFxuICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgIHBhZ2VTaXplOiAyNSxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbCBzb3J0aW5nXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRTb3J0aW5nPzogQXJyYXk8U29ydGluZz47XG5cbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XG4gICAgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcbiAgICBwcm90ZWN0ZWQgYWxlcnRTZXJ2aWNlOiBOYXR1cmFsQWxlcnRTZXJ2aWNlO1xuICAgIHByb3RlY3RlZCBwZXJzaXN0ZW5jZVNlcnZpY2U6IE5hdHVyYWxQZXJzaXN0ZW5jZVNlcnZpY2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFRTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMucm91dGVyID0gaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgICAgIHRoaXMucm91dGUgPSBpbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZSA9IGluamVjdG9yLmdldChOYXR1cmFsQWxlcnRTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoTmF0dXJhbFBlcnNpc3RlbmNlU2VydmljZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFyaWFibGVzIHRoYXQgYXJlIGFsd2F5cyBmb3JjZWQgb24gYSBsaXN0LCBpbiBhZGRpdGlvbiB0byB3aGF0ZXZlciB0aGUgZW5kLXVzZXIgbWlnaHQgc2VsZWN0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGZvcmNlZFZhcmlhYmxlcyh2YXJpYWJsZXM6IFF1ZXJ5VmFyaWFibGVzIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodmFyaWFibGVzKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5Rm9yY2VkVmFyaWFibGVzKHZhcmlhYmxlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBjaGFuZ2UsIGNoZWNrIERvY3VtZW50c0NvbXBvbmVudCB0aGF0IG92ZXJyaWRlcyB0aGlzIGZ1bmN0aW9uIHdpdGhvdXQgY2FsbGluZyBzdXBlci5uZ09uSW5pdCgpLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZURhdGEgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGE7XG5cbiAgICAgICAgdGhpcy5pbml0RnJvbVJvdXRlKCk7XG4gICAgICAgIHRoaXMuaW5pdEZyb21QZXJzaXN0ZWQoKTtcblxuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuZGVmYXVsdHMoJ3BhZ2luYXRpb24nLCB7cGFnaW5hdGlvbjogdGhpcy5kZWZhdWx0UGFnaW5hdGlvbn0gYXMgRXh0cmFjdFZhbGw8VFNlcnZpY2U+KTtcbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLmRlZmF1bHRzKCdzb3J0aW5nJywge3NvcnRpbmc6IHRoaXMuZGVmYXVsdFNvcnRpbmd9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE5hdHVyYWxEYXRhU291cmNlPFRhbGw+KHRoaXMuZ2V0RGF0YU9ic2VydmFibGUoKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIG5hdHVyYWwgc2VhcmNoIHdoZW4gaGlzdG9yeSBjaGFuZ2VzIChiYWNrL2ZvcndhcmQgYnV0dG9ucylcbiAgICAgICAgLy8gSGlzdG9yeSBzdGF0ZSBpcyBkZXRlY3RhYmxlIG9ubHkgb24gTmF2aWdhdGlvblN0YXJ0IChwb3BzdGF0ZSB0cmlnZ2VyKVxuICAgICAgICAvLyBCdXQgd2UgbmVlZCBwYXJhbWV0ZXJzIGZyb20gdXJsIGFmdGVyIE5hdmlnYXRpb25FbmQuIFNvIHByb2NlZWQgaW4gdHdvIHN0ZXBzIHdpdGggYSBmbGFnLlxuICAgICAgICBsZXQgaXNQb3BTdGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCAmJiBldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gJ3BvcHN0YXRlJyksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpc1BvcFN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiBpc1BvcFN0YXRlKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlzUG9wU3RhdGUgPSBmYWxzZTsgLy8gcmVzZXQgZmxhZ1xuICAgICAgICAgICAgICAgIHRoaXMubmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMgPSBmcm9tVXJsKHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLmdldEZyb21VcmwoJ25zJywgdGhpcy5yb3V0ZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyc2lzdCBzZWFyY2ggYW5kIHRoZW4gbGF1bmNoIHdoYXRldmVyIGlzIHJlcXVpcmVkIHRvIHJlZnJlc2ggdGhlIGxpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VhcmNoKFxuICAgICAgICBuYXR1cmFsU2VhcmNoU2VsZWN0aW9uczogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMsXG4gICAgICAgIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzLFxuICAgICAgICByZXNldFBhZ2luYXRpb24gPSB0cnVlLFxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBSZXNldCBwYWdlIGluZGV4IHRvIHJlc3RhcnQgdGhlIHBhZ2luYXRpb24gKHByZXNlcnZlIHBhZ2VTaXplKVxuXG4gICAgICAgIGlmIChyZXNldFBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5tZXJnZSgncGFnaW5hdGlvbicsIHtcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBwaWNrKHRoaXMuZGVmYXVsdFBhZ2luYXRpb24sIFsnb2Zmc2V0JywgJ3BhZ2VJbmRleCddKSxcbiAgICAgICAgICAgIH0gYXMgRXh0cmFjdFZhbGw8VFNlcnZpY2U+KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBlcnNpc3QgaWYgYWN0aXZhdGVkXG4gICAgICAgIC8vIFR3byBwYXJhbGxlbCBuYXZpZ2F0aW9ucyBjb25mbGljdC4gV2UgZmlyc3QgcGVyc2lzdCB0aGUgc2VhcmNoLCB0aGVuIHRoZSBwYWdpbmF0aW9uXG4gICAgICAgIGlmICh0aGlzLnBlcnNpc3RTZWFyY2ggJiYgIXRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3QoXG4gICAgICAgICAgICAgICAgJ25zJyxcbiAgICAgICAgICAgICAgICB0b1VybChuYXR1cmFsU2VhcmNoU2VsZWN0aW9ucyksXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN0b3JhZ2VLZXkoKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPSB0aGlzLmdldFBhZ2luYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbihwYWdpbmF0aW9uLCBwcm9taXNlLCBuYXZpZ2F0aW9uRXh0cmFzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VhcmNoQW5kUmVmcmVzaExpc3QobmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSBzb3J0aW5nIHZhcmlhYmxlcyBmb3IgcXVlcnkgYW5kIHBlcnNpc3QgdGhlIG5ldyB2YWx1ZSBpbiB1cmwgYW5kIGxvY2FsIHN0b3JhZ2VcbiAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBub3QgcGVyc2lzdGVkXG4gICAgICogQHBhcmFtIHNvcnRpbmdFdmVudHMgTGlzdCBvZiBtYXRlcmlhbCBzb3J0aW5nIGV2ZW50c1xuICAgICAqL1xuICAgIHB1YmxpYyBzb3J0aW5nKHNvcnRpbmdFdmVudHM6IChTb3J0ICYgUGFydGlhbDxQaWNrPFNvcnRpbmcsICdudWxsQXNIaWdoZXN0Jz4+KVtdKTogdm9pZCB7XG4gICAgICAgIC8vIFJlc2V0IHBhZ2UgaW5kZXggdG8gcmVzdGFydCB0aGUgcGFnaW5hdGlvbiAocHJlc2VydmUgcGFnZVNpemUpXG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5tZXJnZSgncGFnaW5hdGlvbicsIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHBpY2sodGhpcy5kZWZhdWx0UGFnaW5hdGlvbiwgWydvZmZzZXQnLCAncGFnZUluZGV4J10pLFxuICAgICAgICB9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG5cbiAgICAgICAgLy8gUHJlc2VydmUgb25seSBzb3J0aW5nIGV2ZW50cyB3aXRoIGRpcmVjdGlvbiBhbmQgY29udmVydCBpbnRvIG5hdHVyYWwvZ3JhcGhxbCBTb3J0aW5nIHR5cGVcbiAgICAgICAgbGV0IHNvcnRpbmc6IFNvcnRpbmdbXSA9IHNvcnRpbmdFdmVudHNcbiAgICAgICAgICAgIC5maWx0ZXIoZSA9PiAhIWUuZGlyZWN0aW9uKVxuICAgICAgICAgICAgLm1hcChzb3J0aW5nRXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHM6IFNvcnRpbmcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBzb3J0aW5nRXZlbnQuYWN0aXZlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoc29ydGluZ0V2ZW50LmRpcmVjdGlvbiA9PT0gJ2FzYycpIHtcbiAgICAgICAgICAgICAgICAgICAgcy5vcmRlciA9IFNvcnRpbmdPcmRlci5BU0M7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzb3J0aW5nRXZlbnQuZGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgICAgICAgICAgcy5vcmRlciA9IFNvcnRpbmdPcmRlci5ERVNDO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICgnbnVsbEFzSGlnaGVzdCcgaW4gc29ydGluZ0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHMubnVsbEFzSGlnaGVzdCA9IHNvcnRpbmdFdmVudC5udWxsQXNIaWdoZXN0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRW1wdHkgc29ydGluZyBmYWxsYmFja3Mgb24gZGVmYXVsdFxuICAgICAgICBpZiAoc29ydGluZy5sZW5ndGggPT09IDAgJiYgdGhpcy5kZWZhdWx0U29ydGluZykge1xuICAgICAgICAgICAgc29ydGluZyA9IHRoaXMuZGVmYXVsdFNvcnRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgc29ydGluZyBhcyBzZWFyY2ggdmFyaWFibGVcbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgnc29ydGluZycsIHtzb3J0aW5nOiBzb3J0aW5nfSBhcyBFeHRyYWN0VmFsbDxUU2VydmljZT4pO1xuXG4gICAgICAgIGlmICh0aGlzLnBlcnNpc3RTZWFyY2ggJiYgIXRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgLy8gSWYgc29ydGluZyBpcyBlcXVhbCB0byBkZWZhdWx0IHNvcnRpbmcsIG51bGxpZnkgaXQgdG8gcmVtb3ZlIGZyb20gcGVyc2lzdGVuY2UgKHVybCBhbmQgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3QoXG4gICAgICAgICAgICAgICAgJ3NvJyxcbiAgICAgICAgICAgICAgICBpc0VxdWFsKHNvcnRpbmcsIHRoaXMuZGVmYXVsdFNvcnRpbmcpID8gbnVsbCA6IHNvcnRpbmcsXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN0b3JhZ2VLZXkoKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPSB0aGlzLmdldFBhZ2luYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbihwYWdpbmF0aW9uLCBwcm9taXNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBjdXJyZW50IHBhZ2luYXRpb24sIGVpdGhlciB0aGUgdXNlciBkZWZpbmVkIG9uZSwgb3IgdGhlIGRlZmF1bHQgb25lXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQYWdpbmF0aW9uKCk6IFBhZ2luYXRpb25JbnB1dCB7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25DaGFubmVsOiBQYXJ0aWFsPEV4dHJhY3RWYWxsPFRTZXJ2aWNlPj4gfCB1bmRlZmluZWQgPSB0aGlzLnZhcmlhYmxlc01hbmFnZXIuZ2V0KCdwYWdpbmF0aW9uJyk7XG5cbiAgICAgICAgaWYgKHBhZ2luYXRpb25DaGFubmVsICYmIHBhZ2luYXRpb25DaGFubmVsLnBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIC8vIFRoZSBjYXN0IHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IGJlY2F1c2UgVHlwZXNjcmlwdCBjb3JyZWN0bHkgbmFycm93IGRvd24gdGhlIHR5cGUgdG8gYFBhZ2luYXRpb25JbnB1dGBcbiAgICAgICAgICAgIC8vIGJ1dCBzb21laG93IHN0aWxsIGdldCBjb25mdXNlZCB3aGVuIHJldHVybmluZyBpdFxuICAgICAgICAgICAgcmV0dXJuIHBhZ2luYXRpb25DaGFubmVsLnBhZ2luYXRpb24gYXMgUGFnaW5hdGlvbklucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBhZ2luYXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHBhZ2luYXRpb24gdmFyaWFibGVzIGZvciBxdWVyeSBhbmQgcGVyc2lzdCBpbiB1cmwgYW5kIGxvY2FsIHN0b3JhZ2UgdGhlIG5ldyB2YWx1ZVxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIG5vdCBwZXJzaXN0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBOYXR1cmFsIG9yIFBhZ2luYXRvciBQYWdlRXZlbnRcbiAgICAgKiBAcGFyYW0gZGVmZXIgUHJvbWlzZSAodXN1YWxseSBhIHJvdXRlIHByb21pc2UpIHRoYXQgZGVmZXJzIHRoZSByZWRpcmVjdGlvbiBmcm9tIHRoaXMgY2FsbCB0byBwcmV2ZW50IHJvdXRlIG5hdmlnYXRpb24gY29sbGlzaW9uXG4gICAgICogQHBhcmFtIG5hdmlnYXRpb25FeHRyYXMgQW5ndWxhciByb3V0ZXIgbmF2aWdhdGlvbiBvcHRpb25zLiBJcyByZWxldmFudCBvbmx5IGlmIHBlcnNpc3RTZWFyY2ggaXMgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBwYWdpbmF0aW9uKFxuICAgICAgICBldmVudDogUGFnaW5hdGlvbklucHV0IHwgUGFnZUV2ZW50LFxuICAgICAgICBkZWZlcj86IFByb21pc2U8dW5rbm93bj4sXG4gICAgICAgIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzLFxuICAgICk6IHZvaWQge1xuICAgICAgICBsZXQgcGFnaW5hdGlvbjogUGFnaW5hdGlvbklucHV0ID0gdGhpcy5kZWZhdWx0UGFnaW5hdGlvbjtcbiAgICAgICAgbGV0IGZvclBlcnNpc3RlbmNlOiBQYWdpbmF0aW9uSW5wdXQgfCBudWxsID0gbnVsbDtcblxuICAgICAgICAvLyBDb252ZXJ0IHRvIG5hdHVyYWwvZ3JhcGhxbCBmb3JtYXQsIGFkZGluZyBtaXNzaW5nIGF0dHJpYnV0ZXNcbiAgICAgICAgbGV0IG5hdHVyYWxFdmVudDogUGFnaW5hdGlvbklucHV0ID0gcGljayhldmVudCwgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0UGFnaW5hdGlvbikpOyAvLyBvYmplY3Qgd2l0aCBvbmx5IFBhZ2luYXRpb25JbnB1dCBhdHRyaWJ1dGVzXG4gICAgICAgIG5hdHVyYWxFdmVudCA9IGRlZmF1bHRzKG5hdHVyYWxFdmVudCwgdGhpcy5kZWZhdWx0UGFnaW5hdGlvbik7IC8vIERlZmF1bHQgd2l0aCBjb250cm9sbGVyIHZhbHVlc1xuXG4gICAgICAgIGlmICghaXNFcXVhbChuYXR1cmFsRXZlbnQsIHRoaXMuZGVmYXVsdFBhZ2luYXRpb24pKSB7XG4gICAgICAgICAgICBwYWdpbmF0aW9uID0gZm9yUGVyc2lzdGVuY2UgPSBuYXR1cmFsRXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCdwYWdpbmF0aW9uJywge3BhZ2luYXRpb259IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG5cbiAgICAgICAgdGhpcy5wZXJzaXN0UGFnaW5hdGlvbihmb3JQZXJzaXN0ZW5jZSwgZGVmZXIsIG5hdmlnYXRpb25FeHRyYXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwZXJzaXN0UGFnaW5hdGlvbihcbiAgICAgICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbklucHV0IHwgbnVsbCxcbiAgICAgICAgZGVmZXI/OiBQcm9taXNlPHVua25vd24+LFxuICAgICAgICBuYXZpZ2F0aW9uRXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGVyc2lzdFNlYXJjaCAmJiAhdGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAvLyBEZWNsYXJlIHBlcnNpc3QgZnVuY3Rpb25cbiAgICAgICAgICAgIGNvbnN0IHBlcnNpc3QgPSAodmFsdWU6IFBhZ2luYXRpb25JbnB1dCB8IG51bGwpOiBQcm9taXNlPGJvb2xlYW4+ID0+XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdCgncGEnLCB2YWx1ZSwgdGhpcy5yb3V0ZSwgdGhpcy5nZXRTdG9yYWdlS2V5KCksIG5hdmlnYXRpb25FeHRyYXMpO1xuXG4gICAgICAgICAgICAvLyBDYWxsIGZ1bmN0aW9uIGRpcmVjdGx5IG9yIHdoZW4gcHJvbWlzZSBpcyByZXNvbHZlZFxuICAgICAgICAgICAgaWYgKGRlZmVyKSB7XG4gICAgICAgICAgICAgICAgZGVmZXIudGhlbigoKSA9PiBwZXJzaXN0KHBhZ2luYXRpb24pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVyc2lzdChwYWdpbmF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBtYXN0ZXJUb2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZT8uZGF0YT8uaXRlbXMuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVud3JhcHBlZCA9IHVud3JhcE5hdmlnYWJsZShyb3cpO1xuICAgICAgICAgICAgICAgIGlmICh1bndyYXBwZWQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHVud3JhcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3NcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgICAgIGxldCBudW1Sb3dzID0gMDtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlPy5kYXRhPy5pdGVtcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bndyYXBwZWQgPSB1bndyYXBOYXZpZ2FibGUocm93KTtcbiAgICAgICAgICAgIGlmICh1bndyYXBwZWQuaWQpIHtcbiAgICAgICAgICAgICAgICBudW1Sb3dzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgd2hlbiBhIGJ1bGsgYWN0aW9uIGlzIHNlbGVjdGVkXG4gICAgICovXG4gICAgcHVibGljIGJ1bGtBY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5idWxrQWN0aW9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIGV4ZWN1dGUgYSBidWxrIGFjdGlvbiB3aXRob3V0IHNlbGVjdGluZyBvbmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMuYnVsa0FjdGlvblNlbGVjdGVkIGluIHRoaXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBleGVjdXRlIGEgYnVsayBhY3Rpb24gdGhhdCBkb2VzIG5vdCBleGlzdDogJyArIHRoaXMuYnVsa0FjdGlvblNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICh0aGlzIGFzIGFueSlbdGhpcy5idWxrQWN0aW9uU2VsZWN0ZWRdKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW4gbm9uLXBhbmVsIGNvbnRleHQsIGhlYWRlciBpcyBhbHdheXMgdmlzaWJsZS5cbiAgICAgKiBJbiBwYW5lbCBjb250ZXh0LCBoZWFkZXIgaXMgaGlkZGVuIHdoZW4gbm8gcmVzdWx0cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd0hlYWRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzUGFuZWwgfHwgKHRoaXMuaXNQYW5lbCAmJiB0aGlzLnNob3dUYWJsZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggaXMgdmlzaWJsZSBpbiBtb3N0IGNhc2VzLCBidXQgaGlkZGVuIG9uIGEgcGFuZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1NlYXJjaCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzUGFuZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFibGUgc2hvdWxkIGJlIHNob3duIG9ubHkgd2hlbiB0aGVyZSBpcyBkYXRhXG4gICAgICovXG4gICAgcHVibGljIHNob3dUYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5kYXRhU291cmNlICYmICEhdGhpcy5kYXRhU291cmNlLmRhdGEgJiYgdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBObyByZXN1bHRzIGlzIHNob3duIHdoZW4gdGhlcmUgaXMgbm8gaXRlbXMsIGJ1dCBvbmx5IGluIG5vbi1wYW5lbCBjb250ZXh0IG9ubHkuXG4gICAgICogSW4gcGFuZWxzIHdlIHdhbnQgZGlzY3JldGUgbW9kZSwgdGhlcmUgaXMgbm8gc2VhcmNoIGFuZCBubyBcIm5vLXJlc3VsdHNcIlxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93Tm9SZXN1bHRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNQYW5lbCAmJiAhIXRoaXMuZGF0YVNvdXJjZSAmJiAhIXRoaXMuZGF0YVNvdXJjZS5kYXRhICYmIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIGZyb20gcm91dGUuXG4gICAgICpcbiAgICAgKiBVc2VzIGRhdGEgcHJvdmlkZWQgYnkgcm91dGVyIHN1Y2ggYXM6XG4gICAgICpcbiAgICAgKiAtIGByb3V0ZS5kYXRhLmZvcmNlZFZhcmlhYmxlc2BcbiAgICAgKiAtIGByb3V0ZS5kYXRhLmF2YWlsYWJsZUNvbHVtbnNgXG4gICAgICogLSBgcm91dGUuZGF0YS5zZWxlY3RlZENvbHVtbnNgXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRGcm9tUm91dGUoKTogdm9pZCB7XG4gICAgICAgIC8vIFZhcmlhYmxlc1xuICAgICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmZvcmNlZFZhcmlhYmxlcykge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZvcmNlZFZhcmlhYmxlcyh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZm9yY2VkVmFyaWFibGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2YWlsYWJsZSBjb2x1bW5zXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuYXZhaWxhYmxlQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVDb2x1bW5zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmF2YWlsYWJsZUNvbHVtbnM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb2x1bW5zXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuc2VsZWN0ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5zZWxlY3RlZENvbHVtbnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RGF0YU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxUYWxsPiB7XG4gICAgICAgIC8vIEhlcmUgdGhlIGNhc3RpbmcgaXMgYSBiaXQgdW5mb3J0dW5hdGUgYnV0IHJlcXVpcmVkIGJlY2F1c2UgTmF0dXJhbEFic3RyYWN0TmF2aWdhYmxlTGlzdFxuICAgICAgICAvLyBicmVha3MgdGhlIGRhdGEgc3RydWN0dXJlIGNvbnZlbnRpb24gKGJ5IHdyYXBwaW5nIGl0ZW1zIGluIGEgc3RydWN0dXJlKS4gSWRlYWxseSB3ZSBzaG91bGQgcmVtb3ZlXG4gICAgICAgIC8vIHRoZSBjYXN0aW5nIGFuZCByZXNvbHZlIHRoaW5ncyBpbiBhIGJldHRlciB3YXksIGJ1dCB0aGF0J3MgdG9vIG11Y2ggd29yayBmb3Igbm93XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAgIC53YXRjaEFsbCh0aGlzLnZhcmlhYmxlc01hbmFnZXIgYXMgdW5rbm93biBhcyBhbnkpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkgYXMgdW5rbm93biBhcyBPYnNlcnZhYmxlPFRhbGw+O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0RnJvbVBlcnNpc3RlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnBlcnNpc3RTZWFyY2ggfHwgdGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdG9yYWdlS2V5ID0gdGhpcy5nZXRTdG9yYWdlS2V5KCk7XG5cbiAgICAgICAgLy8gUGFnaW5hdGlvbiA6IHBhXG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPSB0aGlzLnBlcnNpc3RlbmNlU2VydmljZS5nZXQoJ3BhJywgdGhpcy5yb3V0ZSwgc3RvcmFnZUtleSk7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCdwYWdpbmF0aW9uJywge3BhZ2luYXRpb259IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb3J0aW5nIDogc29cbiAgICAgICAgY29uc3Qgc29ydGluZyA9IHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLmdldCgnc28nLCB0aGlzLnJvdXRlLCBzdG9yYWdlS2V5KTtcbiAgICAgICAgaWYgKHNvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3NvcnRpbmcnLCB7c29ydGluZ30gYXMgRXh0cmFjdFZhbGw8VFNlcnZpY2U+KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbHVtbnNcbiAgICAgICAgY29uc3QgcGVyc2lzdGVkQ29sdW1ucyA9IHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLmdldCgnY29sJywgdGhpcy5yb3V0ZSwgc3RvcmFnZUtleSk7XG4gICAgICAgIGlmICh0eXBlb2YgcGVyc2lzdGVkQ29sdW1ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcGVyc2lzdGVkQ29sdW1ucy5zcGxpdCgnLCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTmF0dXJhbCBzZWFyY2ggOiBuc1xuICAgICAgICB0aGlzLm5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zID0gZnJvbVVybCh0aGlzLnBlcnNpc3RlbmNlU2VydmljZS5nZXQoJ25zJywgdGhpcy5yb3V0ZSwgc3RvcmFnZUtleSkpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlYXJjaEFuZFJlZnJlc2hMaXN0KHRoaXMubmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMsIHRydWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZWFyY2hBbmRSZWZyZXNoTGlzdChcbiAgICAgICAgbmF0dXJhbFNlYXJjaFNlbGVjdGlvbnM6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zLFxuICAgICAgICBpZ25vcmVFbXB0eUZpbHRlciA9IGZhbHNlLFxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0b0dyYXBoUUxEb2N0cmluZUZpbHRlcih0aGlzLm5hdHVyYWxTZWFyY2hGYWNldHMsIG5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zKTtcblxuICAgICAgICBpZiAoaWdub3JlRW1wdHlGaWx0ZXIgJiYgaXNFbXB0eShmaWx0ZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCduYXR1cmFsLXNlYXJjaCcsIHtmaWx0ZXJ9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGN1cnJlbnQgdXJsIGV4Y2x1ZGluZyBsYXN0IHJvdXRlIHBhcmFtZXRlcnM7XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFN0b3JhZ2VLZXkoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgIHVybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzW3VybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzLmxlbmd0aCAtIDFdLnBhcmFtZXRlcnMgPSB7fTtcbiAgICAgICAgcmV0dXJuIHVybFRyZWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYnVsa2REZWxldGVDb25maXJtYXRpb24oKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0U2VydmljZS5jb25maXJtKFxuICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByZXNzaW9uYCxcbiAgICAgICAgICAgICRsb2NhbGl6ZWBWb3VsZXotdm91cyBzdXBwcmltZXIgZMOpZmluaXRpdmVtZW50IGxlcyDDqWzDqW1lbnRzIHPDqWxlY3Rpb25uw6lzID9gLFxuICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnRgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBtdWx0aXBsZSBpdGVtcyBhdCBvbmNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGJ1bGtEZWxldGUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICB0aGlzLmJ1bGtkRGVsZXRlQ29uZmlybWF0aW9uKCkuc3Vic2NyaWJlKGNvbmZpcm1lZCA9PiB7XG4gICAgICAgICAgICB0aGlzLmJ1bGtBY3Rpb25TZWxlY3RlZCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgLy8gQXNzdW1lIHRoYXQgb3VyIG9iamVjdHMgaGF2ZSBJRC4gVGhpcyBpcyB0cnVlIGluIGFsbW9zdCBhbGwgY2FzZXMuIEJ1dCBpZlxuICAgICAgICAgICAgICAgIC8vIGl0IGlzIG5vdCwgbGlrZSBBdHRyaWJ1dGVSZXBvcnRDb21wb25lbnQsIHRoZW4gdGhlIGluaGVyaXRpbmcgY2xhc3MgbXVzdFxuICAgICAgICAgICAgICAgIC8vIG5ldmVyIGNhbGwgdGhpcyBtZXRob2QuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQgYXMge2lkOiBzdHJpbmd9W107XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKHNlbGVjdGlvbikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbygkbG9jYWxpemVgU3VwcHJpbcOpYCk7XG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdWJqZWN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlGb3JjZWRWYXJpYWJsZXModmFyaWFibGVzOiBRdWVyeVZhcmlhYmxlcyk6IHZvaWQge1xuICAgICAgICBpZiAodmFyaWFibGVzLmZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgnZm9yY2VkLWZpbHRlcicsIHtmaWx0ZXI6IHZhcmlhYmxlcy5maWx0ZXJ9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFyaWFibGVzLnBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3BhZ2luYXRpb24nLCB7cGFnaW5hdGlvbjogdmFyaWFibGVzLnBhZ2luYXRpb259IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFyaWFibGVzLnNvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3NvcnRpbmcnLCB7c29ydGluZzogdmFyaWFibGVzLnNvcnRpbmd9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbnNGb3JUYWJsZSA9IGNvbHVtbnM7XG5cbiAgICAgICAgaWYgKCF0aGlzLnBlcnNpc3RTZWFyY2ggfHwgdGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZmlyc3Qgc2VsZWN0aW9uIHdlIHJlY2VpdmUgaXMgdGhlIGRlZmF1bHQgb25lIG1hZGUgYnkgYDxuYXR1cmFsLWNvbHVtbnMtcGlja2VyPmBcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRTZWxlY3RlZENvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNlbGVjdGVkQ29sdW1ucyA9IGNvbHVtbnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBQZXJzaXN0IG9ubHkgaWYgd2FudGVkIGNvbHVtbnMgYXJlIGRpZmZlcmVudCBmcm9tIGRlZmF1bHQgc2VsZWN0aW9uXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlzRXF1YWwodGhpcy5kZWZhdWx0U2VsZWN0ZWRDb2x1bW5zLCBjb2x1bW5zKSA/IG51bGwgOiBjb2x1bW5zLmpvaW4oJywnKTtcbiAgICAgICAgICAgIHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3QoJ2NvbCcsIHZhbHVlLCB0aGlzLnJvdXRlLCB0aGlzLmdldFN0b3JhZ2VLZXkoKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
435
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL2Fic3RyYWN0LWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUc1RSxPQUFPLEVBQUMsY0FBYyxFQUFRLGFBQWEsRUFBb0IsZUFBZSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9HLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDM0QsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBSTdELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxpQkFBaUIsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUNILDRCQUE0QixFQUk1QixZQUFZLEdBQ2YsTUFBTSwwQkFBMEIsQ0FBQztBQUdsQyxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUtqRCxTQUFTLGVBQWUsQ0FBQyxJQUFvQjtJQUN6QyxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksZUFBZSxJQUFJLElBQUksRUFB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QUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDbkY7SUFDTCxDQUFDOztnSEFuaUJRLG1CQUFtQjtvR0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7b0hBeUJVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBS1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQWlCVSxlQUFlO3NCQUE5QixLQUFLO2dCQTRFSyxlQUFlO3NCQUR6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7RGlyZWN0aXZlLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGFnZUV2ZW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHtTb3J0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIERhdGEsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FeHRyYXMsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtkZWZhdWx0cywgaXNFbXB0eSwgaXNFcXVhbCwgcGlja30gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge05hdHVyYWxBbGVydFNlcnZpY2V9IGZyb20gJy4uL21vZHVsZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdFBhbmVsfSBmcm9tICcuLi9tb2R1bGVzL3BhbmVscy9hYnN0cmFjdC1wYW5lbCc7XG5pbXBvcnQge3RvR3JhcGhRTERvY3RyaW5lRmlsdGVyfSBmcm9tICcuLi9tb2R1bGVzL3NlYXJjaC9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUnO1xuaW1wb3J0IHtmcm9tVXJsLCB0b1VybH0gZnJvbSAnLi4vbW9kdWxlcy9zZWFyY2gvY2xhc3Nlcy91cmwnO1xuaW1wb3J0IHtOYXR1cmFsU2VhcmNoRmFjZXRzfSBmcm9tICcuLi9tb2R1bGVzL3NlYXJjaC90eXBlcy9mYWNldCc7XG5pbXBvcnQge05hdHVyYWxTZWFyY2hTZWxlY3Rpb25zfSBmcm9tICcuLi9tb2R1bGVzL3NlYXJjaC90eXBlcy92YWx1ZXMnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2Fic3RyYWN0LW1vZGVsLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsUGVyc2lzdGVuY2VTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9wZXJzaXN0ZW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbERhdGFTb3VyY2UsIFBhZ2luYXRlZERhdGF9IGZyb20gJy4vZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtcbiAgICBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyLFxuICAgIFBhZ2luYXRpb25JbnB1dCxcbiAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICBTb3J0aW5nLFxuICAgIFNvcnRpbmdPcmRlcixcbn0gZnJvbSAnLi9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyJztcbmltcG9ydCB7RXh0cmFjdFRhbGwsIEV4dHJhY3RWYWxsLCBMaXRlcmFsfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge05hdmlnYWJsZUl0ZW19IGZyb20gJy4vYWJzdHJhY3QtbmF2aWdhYmxlLWxpc3QnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBdmFpbGFibGVDb2x1bW59IGZyb20gJy4uL21vZHVsZXMvY29sdW1ucy1waWNrZXIvdHlwZXMnO1xuXG50eXBlIE1heWJlTmF2aWdhYmxlID0gTGl0ZXJhbCB8IE5hdmlnYWJsZUl0ZW08TGl0ZXJhbD47XG5cbmZ1bmN0aW9uIHVud3JhcE5hdmlnYWJsZShpdGVtOiBNYXliZU5hdmlnYWJsZSk6IExpdGVyYWwge1xuICAgIGlmICgnaXRlbScgaW4gaXRlbSAmJiAnaGFzTmF2aWdhdGlvbicgaW4gaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS5pdGVtO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xufVxuXG4vKipcbiAqIFRoaXMgY2xhc3MgaGVscHMgbWFuYWdpbmcgYSBsaXN0IG9mIHBhZ2luYXRlZCBpdGVtcyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCxcbiAqIHNlbGVjdGVkLCBhbmQgdGhlbiBidWxrIGFjdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBvbiBzZWxlY3Rpb24uXG4gKlxuICogQ29tcG9uZW50cyBpbmhlcml0aW5nIGZyb20gdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcyBzdGFuZGFsb25lIHdpdGggaW5wdXQgYXR0cmlidXRlcy5cbiAqXG4gKiBVc2FnZSA6XG4gKiA8bmF0dXJhbC1teS1saXN0aW5nIFtmb3JjZWRWYXJpYWJsZXNdPVwie2ZpbHRlcjouLi59XCIgW3NlbGVjdGVkQ29sdW1uc109XCJbJ2NvbDEnXVwiIFtwZXJzaXN0U2VhcmNoXT1cImZhbHNlXCI+XG4gKi9cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxBYnN0cmFjdExpc3Q8XG4gICAgICAgIFRTZXJ2aWNlIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlPFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgUGFnaW5hdGVkRGF0YTxMaXRlcmFsPixcbiAgICAgICAgICAgIFF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55XG4gICAgICAgID4sXG4gICAgICAgIC8vIEluIG1vc3QgY2FzZSB0aGlzIHNob3VsZCBub3QgYmUgc3BlY2lmaWVkIGJ5IGluaGVyaXRpbmcgY2xhc3Nlcy5cbiAgICAgICAgLy8gSXQgc2hvdWxkIG9ubHkgYmUgc3BlY2lmaWVkIHRvIG92ZXJyaWRlIGRlZmF1bHQgaWYgdGhlIHNlcnZpY2UgaXRlbXMgYXJlXG4gICAgICAgIC8vIG1hcHBlZCB0byBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgbGlrZSBpbiBOYXR1cmFsQWJzdHJhY3ROYXZpZ2FibGVMaXN0XG4gICAgICAgIFRhbGwgZXh0ZW5kcyBQYWdpbmF0ZWREYXRhPE1heWJlTmF2aWdhYmxlPiA9IEV4dHJhY3RUYWxsPFRTZXJ2aWNlPixcbiAgICA+XG4gICAgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RQYW5lbFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICAvKipcbiAgICAgKiBXaGVyZXZlciBzZWFyY2ggc2hvdWxkIGJlIGxvYWRlZCBmcm9tIHVybC9zdG9yYWdlIGFuZCBwZXJzaXN0ZWQgaW4gaXQgdG9vLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwZXJzaXN0U2VhcmNoID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgY29sdW1ucyB0aGF0IGFyZSBhdmFpbGFibGUgdG8gdGhlIGVuZC11c2VyIHRvIHNlbGVjdCBmcm9tLCB2aWEgYDxuYXR1cmFsLWNvbHVtbnMtcGlja2VyPmBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYXZhaWxhYmxlQ29sdW1uczogQXZhaWxhYmxlQ29sdW1uW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIENvbHVtbnMgbGlzdCBhZnRlciBpbnRlcmFjdGlvbiB3aXRoIGA8bmF0dXJhbC1jb2x1bW5zLXBpY2tlcj5gXG4gICAgICovXG4gICAgcHVibGljIGNvbHVtbnNGb3JUYWJsZTogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IGNvbHVtbiBzZWxlY3Rpb24gdGhhdCBhdXRvbWF0aWNhbGx5IGhhcHBlbmVkIGFmdGVyIGA8bmF0dXJhbC1jb2x1bW5zLXBpY2tlcj5gIGluaXRpYWxpemF0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VsZWN0ZWRDb2x1bW5zOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVmlzaWJsZSAoY2hlY2tlZCkgY29sdW1uc1xuICAgICAqXG4gICAgICogSW5zdGVhZCBvZiB1c2luZyB0aGlzLCB5b3Ugc2hvdWxkIGNvbnNpZGVyIGNvcnJlY3RseSBjb25maWd1cmluZyBgQXZhaWxhYmxlQ29sdW1uLmNoZWNrZWRgLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZENvbHVtbnM/OiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIFNvdXJjZSBvZiB0aGUgbGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhU291cmNlPzogTmF0dXJhbERhdGFTb3VyY2U8VGFsbD47XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3Rpb24gZm9yIGJ1bGsgYWN0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8RXh0cmFjdFRhbGw8VFNlcnZpY2U+WydpdGVtcyddWzBdPih0cnVlLCBbXSk7XG5cbiAgICAvKipcbiAgICAgKiBOZXh0IGV4ZWN1dGVkIGFjdGlvbiBmcm9tIGJ1bGsgbWVudVxuICAgICAqL1xuICAgIHB1YmxpYyBidWxrQWN0aW9uU2VsZWN0ZWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ2VudHJhbGlzYXRpb24gb2YgcXVlcnkgdmFyaWFibGVzXG4gICAgICovXG4gICAgcHVibGljIHZhcmlhYmxlc01hbmFnZXI6IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXI8RXh0cmFjdFZhbGw8VFNlcnZpY2U+PiA9IG5ldyBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFxuICAgICAgICBFeHRyYWN0VmFsbDxUU2VydmljZT5cbiAgICA+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciBuYXR1cmFsLXNlYXJjaCBmYWNldHNcbiAgICAgKi9cbiAgICBwdWJsaWMgbmF0dXJhbFNlYXJjaEZhY2V0czogTmF0dXJhbFNlYXJjaEZhY2V0cyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogUmVzdWx0IG9mIGEgc2VhcmNoIChjYW4gYmUgcHJvdmlkZWQgYXMgaW5wdXQgZm9yIGluaXRpYWxpc2F0aW9uKVxuICAgICAqL1xuICAgIHB1YmxpYyBuYXR1cmFsU2VhcmNoU2VsZWN0aW9uczogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMgPSBbW11dO1xuXG4gICAgLyoqXG4gICAgICogRGF0YSBhdHRyaWJ1dGUgcHJvdmlkZWQgYnkgYWN0aXZhdGVkIHJvdXRlIHNuYXBzaG90XG4gICAgICovXG4gICAgcHVibGljIHJvdXRlRGF0YT86IERhdGE7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHBhZ2Ugc2l6ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFnZVNpemVPcHRpb25zID0gWzUsIDI1LCA1MCwgMTAwLCAyMDBdO1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbCBwYWdpbmF0aW9uIHNldHVwXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRQYWdpbmF0aW9uOiBSZXF1aXJlZDxQYWdpbmF0aW9uSW5wdXQ+ID0ge1xuICAgICAgICBvZmZzZXQ6IG51bGwsXG4gICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgcGFnZVNpemU6IDI1LFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHNvcnRpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdFNvcnRpbmc/OiBBcnJheTxTb3J0aW5nPjtcblxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcbiAgICBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICAgIHByb3RlY3RlZCBhbGVydFNlcnZpY2U6IE5hdHVyYWxBbGVydFNlcnZpY2U7XG4gICAgcHJvdGVjdGVkIHBlcnNpc3RlbmNlU2VydmljZTogTmF0dXJhbFBlcnNpc3RlbmNlU2VydmljZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogVFNlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IGluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5hdHVyYWxBbGVydFNlcnZpY2UpO1xuICAgICAgICB0aGlzLnBlcnNpc3RlbmNlU2VydmljZSA9IGluamVjdG9yLmdldChOYXR1cmFsUGVyc2lzdGVuY2VTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYXJpYWJsZXMgdGhhdCBhcmUgYWx3YXlzIGZvcmNlZCBvbiBhIGxpc3QsIGluIGFkZGl0aW9uIHRvIHdoYXRldmVyIHRoZSBlbmQtdXNlciBtaWdodCBzZWxlY3RcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZm9yY2VkVmFyaWFibGVzKHZhcmlhYmxlczogUXVlcnlWYXJpYWJsZXMgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh2YXJpYWJsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGb3JjZWRWYXJpYWJsZXModmFyaWFibGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIGNoYW5nZSwgY2hlY2sgRG9jdW1lbnRzQ29tcG9uZW50IHRoYXQgb3ZlcnJpZGVzIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBjYWxsaW5nIHN1cGVyLm5nT25Jbml0KCkuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlRGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcblxuICAgICAgICB0aGlzLmluaXRGcm9tUm91dGUoKTtcbiAgICAgICAgdGhpcy5pbml0RnJvbVBlcnNpc3RlZCgpO1xuXG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5kZWZhdWx0cygncGFnaW5hdGlvbicsIHtwYWdpbmF0aW9uOiB0aGlzLmRlZmF1bHRQYWdpbmF0aW9ufSBhcyBFeHRyYWN0VmFsbDxUU2VydmljZT4pO1xuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuZGVmYXVsdHMoJ3NvcnRpbmcnLCB7c29ydGluZzogdGhpcy5kZWZhdWx0U29ydGluZ30gYXMgRXh0cmFjdFZhbGw8VFNlcnZpY2U+KTtcblxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTmF0dXJhbERhdGFTb3VyY2U8VGFsbD4odGhpcy5nZXREYXRhT2JzZXJ2YWJsZSgpKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcblxuICAgICAgICAvLyBVcGRhdGUgbmF0dXJhbCBzZWFyY2ggd2hlbiBoaXN0b3J5IGNoYW5nZXMgKGJhY2svZm9yd2FyZCBidXR0b25zKVxuICAgICAgICAvLyBIaXN0b3J5IHN0YXRlIGlzIGRldGVjdGFibGUgb25seSBvbiBOYXZpZ2F0aW9uU3RhcnQgKHBvcHN0YXRlIHRyaWdnZXIpXG4gICAgICAgIC8vIEJ1dCB3ZSBuZWVkIHBhcmFtZXRlcnMgZnJvbSB1cmwgYWZ0ZXIgTmF2aWdhdGlvbkVuZC4gU28gcHJvY2VlZCBpbiB0d28gc3RlcHMgd2l0aCBhIGZsYWcuXG4gICAgICAgIGxldCBpc1BvcFN0YXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0ICYmIGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlzUG9wU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kICYmIGlzUG9wU3RhdGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaXNQb3BTdGF0ZSA9IGZhbHNlOyAvLyByZXNldCBmbGFnXG4gICAgICAgICAgICAgICAgdGhpcy5uYXR1cmFsU2VhcmNoU2VsZWN0aW9ucyA9IGZyb21VcmwodGhpcy5wZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0RnJvbVVybCgnbnMnLCB0aGlzLnJvdXRlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJzaXN0IHNlYXJjaCBhbmQgdGhlbiBsYXVuY2ggd2hhdGV2ZXIgaXMgcmVxdWlyZWQgdG8gcmVmcmVzaCB0aGUgbGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWFyY2goXG4gICAgICAgIG5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ucyxcbiAgICAgICAgbmF2aWdhdGlvbkV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMsXG4gICAgICAgIHJlc2V0UGFnaW5hdGlvbiA9IHRydWUsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIFJlc2V0IHBhZ2UgaW5kZXggdG8gcmVzdGFydCB0aGUgcGFnaW5hdGlvbiAocHJlc2VydmUgcGFnZVNpemUpXG5cbiAgICAgICAgaWYgKHJlc2V0UGFnaW5hdGlvbikge1xuICAgICAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLm1lcmdlKCdwYWdpbmF0aW9uJywge1xuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHBpY2sodGhpcy5kZWZhdWx0UGFnaW5hdGlvbiwgWydvZmZzZXQnLCAncGFnZUluZGV4J10pLFxuICAgICAgICAgICAgfSBhcyBFeHRyYWN0VmFsbDxUU2VydmljZT4pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVyc2lzdCBpZiBhY3RpdmF0ZWRcbiAgICAgICAgLy8gVHdvIHBhcmFsbGVsIG5hdmlnYXRpb25zIGNvbmZsaWN0LiBXZSBmaXJzdCBwZXJzaXN0IHRoZSBzZWFyY2gsIHRoZW4gdGhlIHBhZ2luYXRpb25cbiAgICAgICAgaWYgKHRoaXMucGVyc2lzdFNlYXJjaCAmJiAhdGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5wZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdChcbiAgICAgICAgICAgICAgICAnbnMnLFxuICAgICAgICAgICAgICAgIHRvVXJsKG5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zKSxcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3RvcmFnZUtleSgpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgcGFnaW5hdGlvbiA9IHRoaXMuZ2V0UGFnaW5hdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uKHBhZ2luYXRpb24sIHByb21pc2UsIG5hdmlnYXRpb25FeHRyYXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZWFyY2hBbmRSZWZyZXNoTGlzdChuYXR1cmFsU2VhcmNoU2VsZWN0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHNvcnRpbmcgdmFyaWFibGVzIGZvciBxdWVyeSBhbmQgcGVyc2lzdCB0aGUgbmV3IHZhbHVlIGluIHVybCBhbmQgbG9jYWwgc3RvcmFnZVxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG5vdCBwZXJzaXN0ZWRcbiAgICAgKiBAcGFyYW0gc29ydGluZ0V2ZW50cyBMaXN0IG9mIG1hdGVyaWFsIHNvcnRpbmcgZXZlbnRzXG4gICAgICovXG4gICAgcHVibGljIHNvcnRpbmcoc29ydGluZ0V2ZW50czogKFNvcnQgJiBQYXJ0aWFsPFBpY2s8U29ydGluZywgJ251bGxBc0hpZ2hlc3QnIHwgJ2VtcHR5U3RyaW5nQXNIaWdoZXN0Jz4+KVtdKTogdm9pZCB7XG4gICAgICAgIC8vIFJlc2V0IHBhZ2UgaW5kZXggdG8gcmVzdGFydCB0aGUgcGFnaW5hdGlvbiAocHJlc2VydmUgcGFnZVNpemUpXG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5tZXJnZSgncGFnaW5hdGlvbicsIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHBpY2sodGhpcy5kZWZhdWx0UGFnaW5hdGlvbiwgWydvZmZzZXQnLCAncGFnZUluZGV4J10pLFxuICAgICAgICB9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG5cbiAgICAgICAgLy8gUHJlc2VydmUgb25seSBzb3J0aW5nIGV2ZW50cyB3aXRoIGRpcmVjdGlvbiBhbmQgY29udmVydCBpbnRvIG5hdHVyYWwvZ3JhcGhxbCBTb3J0aW5nIHR5cGVcbiAgICAgICAgbGV0IHNvcnRpbmc6IFNvcnRpbmdbXSA9IHNvcnRpbmdFdmVudHNcbiAgICAgICAgICAgIC5maWx0ZXIoZSA9PiAhIWUuZGlyZWN0aW9uKVxuICAgICAgICAgICAgLm1hcChzb3J0aW5nRXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHM6IFNvcnRpbmcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBzb3J0aW5nRXZlbnQuYWN0aXZlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoc29ydGluZ0V2ZW50LmRpcmVjdGlvbiA9PT0gJ2FzYycpIHtcbiAgICAgICAgICAgICAgICAgICAgcy5vcmRlciA9IFNvcnRpbmdPcmRlci5BU0M7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzb3J0aW5nRXZlbnQuZGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgICAgICAgICAgcy5vcmRlciA9IFNvcnRpbmdPcmRlci5ERVNDO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICgnbnVsbEFzSGlnaGVzdCcgaW4gc29ydGluZ0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHMubnVsbEFzSGlnaGVzdCA9IHNvcnRpbmdFdmVudC5udWxsQXNIaWdoZXN0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICgnZW1wdHlTdHJpbmdBc0hpZ2hlc3QnIGluIHNvcnRpbmdFdmVudCkge1xuICAgICAgICAgICAgICAgICAgICBzLmVtcHR5U3RyaW5nQXNIaWdoZXN0ID0gc29ydGluZ0V2ZW50LmVtcHR5U3RyaW5nQXNIaWdoZXN0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRW1wdHkgc29ydGluZyBmYWxsYmFja3Mgb24gZGVmYXVsdFxuICAgICAgICBpZiAoc29ydGluZy5sZW5ndGggPT09IDAgJiYgdGhpcy5kZWZhdWx0U29ydGluZykge1xuICAgICAgICAgICAgc29ydGluZyA9IHRoaXMuZGVmYXVsdFNvcnRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgc29ydGluZyBhcyBzZWFyY2ggdmFyaWFibGVcbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgnc29ydGluZycsIHtzb3J0aW5nOiBzb3J0aW5nfSBhcyBFeHRyYWN0VmFsbDxUU2VydmljZT4pO1xuXG4gICAgICAgIGlmICh0aGlzLnBlcnNpc3RTZWFyY2ggJiYgIXRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgLy8gSWYgc29ydGluZyBpcyBlcXVhbCB0byBkZWZhdWx0IHNvcnRpbmcsIG51bGxpZnkgaXQgdG8gcmVtb3ZlIGZyb20gcGVyc2lzdGVuY2UgKHVybCBhbmQgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3QoXG4gICAgICAgICAgICAgICAgJ3NvJyxcbiAgICAgICAgICAgICAgICBpc0VxdWFsKHNvcnRpbmcsIHRoaXMuZGVmYXVsdFNvcnRpbmcpID8gbnVsbCA6IHNvcnRpbmcsXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN0b3JhZ2VLZXkoKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPSB0aGlzLmdldFBhZ2luYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbihwYWdpbmF0aW9uLCBwcm9taXNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBjdXJyZW50IHBhZ2luYXRpb24sIGVpdGhlciB0aGUgdXNlciBkZWZpbmVkIG9uZSwgb3IgdGhlIGRlZmF1bHQgb25lXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQYWdpbmF0aW9uKCk6IFBhZ2luYXRpb25JbnB1dCB7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25DaGFubmVsOiBQYXJ0aWFsPEV4dHJhY3RWYWxsPFRTZXJ2aWNlPj4gfCB1bmRlZmluZWQgPSB0aGlzLnZhcmlhYmxlc01hbmFnZXIuZ2V0KCdwYWdpbmF0aW9uJyk7XG5cbiAgICAgICAgaWYgKHBhZ2luYXRpb25DaGFubmVsICYmIHBhZ2luYXRpb25DaGFubmVsLnBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIC8vIFRoZSBjYXN0IHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IGJlY2F1c2UgVHlwZXNjcmlwdCBjb3JyZWN0bHkgbmFycm93IGRvd24gdGhlIHR5cGUgdG8gYFBhZ2luYXRpb25JbnB1dGBcbiAgICAgICAgICAgIC8vIGJ1dCBzb21laG93IHN0aWxsIGdldCBjb25mdXNlZCB3aGVuIHJldHVybmluZyBpdFxuICAgICAgICAgICAgcmV0dXJuIHBhZ2luYXRpb25DaGFubmVsLnBhZ2luYXRpb24gYXMgUGFnaW5hdGlvbklucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBhZ2luYXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHBhZ2luYXRpb24gdmFyaWFibGVzIGZvciBxdWVyeSBhbmQgcGVyc2lzdCBpbiB1cmwgYW5kIGxvY2FsIHN0b3JhZ2UgdGhlIG5ldyB2YWx1ZVxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIG5vdCBwZXJzaXN0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBOYXR1cmFsIG9yIFBhZ2luYXRvciBQYWdlRXZlbnRcbiAgICAgKiBAcGFyYW0gZGVmZXIgUHJvbWlzZSAodXN1YWxseSBhIHJvdXRlIHByb21pc2UpIHRoYXQgZGVmZXJzIHRoZSByZWRpcmVjdGlvbiBmcm9tIHRoaXMgY2FsbCB0byBwcmV2ZW50IHJvdXRlIG5hdmlnYXRpb24gY29sbGlzaW9uXG4gICAgICogQHBhcmFtIG5hdmlnYXRpb25FeHRyYXMgQW5ndWxhciByb3V0ZXIgbmF2aWdhdGlvbiBvcHRpb25zLiBJcyByZWxldmFudCBvbmx5IGlmIHBlcnNpc3RTZWFyY2ggaXMgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBwYWdpbmF0aW9uKFxuICAgICAgICBldmVudDogUGFnaW5hdGlvbklucHV0IHwgUGFnZUV2ZW50LFxuICAgICAgICBkZWZlcj86IFByb21pc2U8dW5rbm93bj4sXG4gICAgICAgIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzLFxuICAgICk6IHZvaWQge1xuICAgICAgICBsZXQgcGFnaW5hdGlvbjogUGFnaW5hdGlvbklucHV0ID0gdGhpcy5kZWZhdWx0UGFnaW5hdGlvbjtcbiAgICAgICAgbGV0IGZvclBlcnNpc3RlbmNlOiBQYWdpbmF0aW9uSW5wdXQgfCBudWxsID0gbnVsbDtcblxuICAgICAgICAvLyBDb252ZXJ0IHRvIG5hdHVyYWwvZ3JhcGhxbCBmb3JtYXQsIGFkZGluZyBtaXNzaW5nIGF0dHJpYnV0ZXNcbiAgICAgICAgbGV0IG5hdHVyYWxFdmVudDogUGFnaW5hdGlvbklucHV0ID0gcGljayhldmVudCwgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0UGFnaW5hdGlvbikpOyAvLyBvYmplY3Qgd2l0aCBvbmx5IFBhZ2luYXRpb25JbnB1dCBhdHRyaWJ1dGVzXG4gICAgICAgIG5hdHVyYWxFdmVudCA9IGRlZmF1bHRzKG5hdHVyYWxFdmVudCwgdGhpcy5kZWZhdWx0UGFnaW5hdGlvbik7IC8vIERlZmF1bHQgd2l0aCBjb250cm9sbGVyIHZhbHVlc1xuXG4gICAgICAgIGlmICghaXNFcXVhbChuYXR1cmFsRXZlbnQsIHRoaXMuZGVmYXVsdFBhZ2luYXRpb24pKSB7XG4gICAgICAgICAgICBwYWdpbmF0aW9uID0gZm9yUGVyc2lzdGVuY2UgPSBuYXR1cmFsRXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCdwYWdpbmF0aW9uJywge3BhZ2luYXRpb259IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG5cbiAgICAgICAgdGhpcy5wZXJzaXN0UGFnaW5hdGlvbihmb3JQZXJzaXN0ZW5jZSwgZGVmZXIsIG5hdmlnYXRpb25FeHRyYXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwZXJzaXN0UGFnaW5hdGlvbihcbiAgICAgICAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbklucHV0IHwgbnVsbCxcbiAgICAgICAgZGVmZXI/OiBQcm9taXNlPHVua25vd24+LFxuICAgICAgICBuYXZpZ2F0aW9uRXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGVyc2lzdFNlYXJjaCAmJiAhdGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAvLyBEZWNsYXJlIHBlcnNpc3QgZnVuY3Rpb25cbiAgICAgICAgICAgIGNvbnN0IHBlcnNpc3QgPSAodmFsdWU6IFBhZ2luYXRpb25JbnB1dCB8IG51bGwpOiBQcm9taXNlPGJvb2xlYW4+ID0+XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdCgncGEnLCB2YWx1ZSwgdGhpcy5yb3V0ZSwgdGhpcy5nZXRTdG9yYWdlS2V5KCksIG5hdmlnYXRpb25FeHRyYXMpO1xuXG4gICAgICAgICAgICAvLyBDYWxsIGZ1bmN0aW9uIGRpcmVjdGx5IG9yIHdoZW4gcHJvbWlzZSBpcyByZXNvbHZlZFxuICAgICAgICAgICAgaWYgKGRlZmVyKSB7XG4gICAgICAgICAgICAgICAgZGVmZXIudGhlbigoKSA9PiBwZXJzaXN0KHBhZ2luYXRpb24pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVyc2lzdChwYWdpbmF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBtYXN0ZXJUb2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZT8uZGF0YT8uaXRlbXMuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVud3JhcHBlZCA9IHVud3JhcE5hdmlnYWJsZShyb3cpO1xuICAgICAgICAgICAgICAgIGlmICh1bndyYXBwZWQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHVud3JhcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3NcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgICAgIGxldCBudW1Sb3dzID0gMDtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlPy5kYXRhPy5pdGVtcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bndyYXBwZWQgPSB1bndyYXBOYXZpZ2FibGUocm93KTtcbiAgICAgICAgICAgIGlmICh1bndyYXBwZWQuaWQpIHtcbiAgICAgICAgICAgICAgICBudW1Sb3dzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgd2hlbiBhIGJ1bGsgYWN0aW9uIGlzIHNlbGVjdGVkXG4gICAgICovXG4gICAgcHVibGljIGJ1bGtBY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5idWxrQWN0aW9uU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIGV4ZWN1dGUgYSBidWxrIGFjdGlvbiB3aXRob3V0IHNlbGVjdGluZyBvbmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMuYnVsa0FjdGlvblNlbGVjdGVkIGluIHRoaXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBleGVjdXRlIGEgYnVsayBhY3Rpb24gdGhhdCBkb2VzIG5vdCBleGlzdDogJyArIHRoaXMuYnVsa0FjdGlvblNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICh0aGlzIGFzIGFueSlbdGhpcy5idWxrQWN0aW9uU2VsZWN0ZWRdKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW4gbm9uLXBhbmVsIGNvbnRleHQsIGhlYWRlciBpcyBhbHdheXMgdmlzaWJsZS5cbiAgICAgKiBJbiBwYW5lbCBjb250ZXh0LCBoZWFkZXIgaXMgaGlkZGVuIHdoZW4gbm8gcmVzdWx0cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd0hlYWRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzUGFuZWwgfHwgKHRoaXMuaXNQYW5lbCAmJiB0aGlzLnNob3dUYWJsZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggaXMgdmlzaWJsZSBpbiBtb3N0IGNhc2VzLCBidXQgaGlkZGVuIG9uIGEgcGFuZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1NlYXJjaCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzUGFuZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFibGUgc2hvdWxkIGJlIHNob3duIG9ubHkgd2hlbiB0aGVyZSBpcyBkYXRhXG4gICAgICovXG4gICAgcHVibGljIHNob3dUYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5kYXRhU291cmNlICYmICEhdGhpcy5kYXRhU291cmNlLmRhdGEgJiYgdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBObyByZXN1bHRzIGlzIHNob3duIHdoZW4gdGhlcmUgaXMgbm8gaXRlbXMsIGJ1dCBvbmx5IGluIG5vbi1wYW5lbCBjb250ZXh0IG9ubHkuXG4gICAgICogSW4gcGFuZWxzIHdlIHdhbnQgZGlzY3JldGUgbW9kZSwgdGhlcmUgaXMgbm8gc2VhcmNoIGFuZCBubyBcIm5vLXJlc3VsdHNcIlxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93Tm9SZXN1bHRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNQYW5lbCAmJiAhIXRoaXMuZGF0YVNvdXJjZSAmJiAhIXRoaXMuZGF0YVNvdXJjZS5kYXRhICYmIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIGZyb20gcm91dGUuXG4gICAgICpcbiAgICAgKiBVc2VzIGRhdGEgcHJvdmlkZWQgYnkgcm91dGVyIHN1Y2ggYXM6XG4gICAgICpcbiAgICAgKiAtIGByb3V0ZS5kYXRhLmZvcmNlZFZhcmlhYmxlc2BcbiAgICAgKiAtIGByb3V0ZS5kYXRhLmF2YWlsYWJsZUNvbHVtbnNgXG4gICAgICogLSBgcm91dGUuZGF0YS5zZWxlY3RlZENvbHVtbnNgXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRGcm9tUm91dGUoKTogdm9pZCB7XG4gICAgICAgIC8vIFZhcmlhYmxlc1xuICAgICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmZvcmNlZFZhcmlhYmxlcykge1xuICAgICAgICAgICAgdGhpcy5hcHBseUZvcmNlZFZhcmlhYmxlcyh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZm9yY2VkVmFyaWFibGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2YWlsYWJsZSBjb2x1bW5zXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuYXZhaWxhYmxlQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVDb2x1bW5zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmF2YWlsYWJsZUNvbHVtbnM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb2x1bW5zXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuc2VsZWN0ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5zZWxlY3RlZENvbHVtbnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RGF0YU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxUYWxsPiB7XG4gICAgICAgIC8vIEhlcmUgdGhlIGNhc3RpbmcgaXMgYSBiaXQgdW5mb3J0dW5hdGUgYnV0IHJlcXVpcmVkIGJlY2F1c2UgTmF0dXJhbEFic3RyYWN0TmF2aWdhYmxlTGlzdFxuICAgICAgICAvLyBicmVha3MgdGhlIGRhdGEgc3RydWN0dXJlIGNvbnZlbnRpb24gKGJ5IHdyYXBwaW5nIGl0ZW1zIGluIGEgc3RydWN0dXJlKS4gSWRlYWxseSB3ZSBzaG91bGQgcmVtb3ZlXG4gICAgICAgIC8vIHRoZSBjYXN0aW5nIGFuZCByZXNvbHZlIHRoaW5ncyBpbiBhIGJldHRlciB3YXksIGJ1dCB0aGF0J3MgdG9vIG11Y2ggd29yayBmb3Igbm93XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAgIC53YXRjaEFsbCh0aGlzLnZhcmlhYmxlc01hbmFnZXIgYXMgdW5rbm93biBhcyBhbnkpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkgYXMgdW5rbm93biBhcyBPYnNlcnZhYmxlPFRhbGw+O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0RnJvbVBlcnNpc3RlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnBlcnNpc3RTZWFyY2ggfHwgdGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdG9yYWdlS2V5ID0gdGhpcy5nZXRTdG9yYWdlS2V5KCk7XG5cbiAgICAgICAgLy8gUGFnaW5hdGlvbiA6IHBhXG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPSB0aGlzLnBlcnNpc3RlbmNlU2VydmljZS5nZXQoJ3BhJywgdGhpcy5yb3V0ZSwgc3RvcmFnZUtleSk7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCdwYWdpbmF0aW9uJywge3BhZ2luYXRpb259IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb3J0aW5nIDogc29cbiAgICAgICAgY29uc3Qgc29ydGluZyA9IHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLmdldCgnc28nLCB0aGlzLnJvdXRlLCBzdG9yYWdlS2V5KTtcbiAgICAgICAgaWYgKHNvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3NvcnRpbmcnLCB7c29ydGluZ30gYXMgRXh0cmFjdFZhbGw8VFNlcnZpY2U+KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbHVtbnNcbiAgICAgICAgY29uc3QgcGVyc2lzdGVkQ29sdW1ucyA9IHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLmdldCgnY29sJywgdGhpcy5yb3V0ZSwgc3RvcmFnZUtleSk7XG4gICAgICAgIGlmICh0eXBlb2YgcGVyc2lzdGVkQ29sdW1ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcGVyc2lzdGVkQ29sdW1ucy5zcGxpdCgnLCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTmF0dXJhbCBzZWFyY2ggOiBuc1xuICAgICAgICB0aGlzLm5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zID0gZnJvbVVybCh0aGlzLnBlcnNpc3RlbmNlU2VydmljZS5nZXQoJ25zJywgdGhpcy5yb3V0ZSwgc3RvcmFnZUtleSkpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlYXJjaEFuZFJlZnJlc2hMaXN0KHRoaXMubmF0dXJhbFNlYXJjaFNlbGVjdGlvbnMsIHRydWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZWFyY2hBbmRSZWZyZXNoTGlzdChcbiAgICAgICAgbmF0dXJhbFNlYXJjaFNlbGVjdGlvbnM6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zLFxuICAgICAgICBpZ25vcmVFbXB0eUZpbHRlciA9IGZhbHNlLFxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0b0dyYXBoUUxEb2N0cmluZUZpbHRlcih0aGlzLm5hdHVyYWxTZWFyY2hGYWNldHMsIG5hdHVyYWxTZWFyY2hTZWxlY3Rpb25zKTtcblxuICAgICAgICBpZiAoaWdub3JlRW1wdHlGaWx0ZXIgJiYgaXNFbXB0eShmaWx0ZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCduYXR1cmFsLXNlYXJjaCcsIHtmaWx0ZXJ9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGN1cnJlbnQgdXJsIGV4Y2x1ZGluZyBsYXN0IHJvdXRlIHBhcmFtZXRlcnM7XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFN0b3JhZ2VLZXkoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgIHVybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzW3VybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzLmxlbmd0aCAtIDFdLnBhcmFtZXRlcnMgPSB7fTtcbiAgICAgICAgcmV0dXJuIHVybFRyZWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYnVsa2REZWxldGVDb25maXJtYXRpb24oKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0U2VydmljZS5jb25maXJtKFxuICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByZXNzaW9uYCxcbiAgICAgICAgICAgICRsb2NhbGl6ZWBWb3VsZXotdm91cyBzdXBwcmltZXIgZMOpZmluaXRpdmVtZW50IGxlcyDDqWzDqW1lbnRzIHPDqWxlY3Rpb25uw6lzID9gLFxuICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnRgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBtdWx0aXBsZSBpdGVtcyBhdCBvbmNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGJ1bGtEZWxldGUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICB0aGlzLmJ1bGtkRGVsZXRlQ29uZmlybWF0aW9uKCkuc3Vic2NyaWJlKGNvbmZpcm1lZCA9PiB7XG4gICAgICAgICAgICB0aGlzLmJ1bGtBY3Rpb25TZWxlY3RlZCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgLy8gQXNzdW1lIHRoYXQgb3VyIG9iamVjdHMgaGF2ZSBJRC4gVGhpcyBpcyB0cnVlIGluIGFsbW9zdCBhbGwgY2FzZXMuIEJ1dCBpZlxuICAgICAgICAgICAgICAgIC8vIGl0IGlzIG5vdCwgbGlrZSBBdHRyaWJ1dGVSZXBvcnRDb21wb25lbnQsIHRoZW4gdGhlIGluaGVyaXRpbmcgY2xhc3MgbXVzdFxuICAgICAgICAgICAgICAgIC8vIG5ldmVyIGNhbGwgdGhpcyBtZXRob2QuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQgYXMge2lkOiBzdHJpbmd9W107XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKHNlbGVjdGlvbikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbygkbG9jYWxpemVgU3VwcHJpbcOpYCk7XG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdWJqZWN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlGb3JjZWRWYXJpYWJsZXModmFyaWFibGVzOiBRdWVyeVZhcmlhYmxlcyk6IHZvaWQge1xuICAgICAgICBpZiAodmFyaWFibGVzLmZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgnZm9yY2VkLWZpbHRlcicsIHtmaWx0ZXI6IHZhcmlhYmxlcy5maWx0ZXJ9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFyaWFibGVzLnBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3BhZ2luYXRpb24nLCB7cGFnaW5hdGlvbjogdmFyaWFibGVzLnBhZ2luYXRpb259IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFyaWFibGVzLnNvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3NvcnRpbmcnLCB7c29ydGluZzogdmFyaWFibGVzLnNvcnRpbmd9IGFzIEV4dHJhY3RWYWxsPFRTZXJ2aWNlPik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbnNGb3JUYWJsZSA9IGNvbHVtbnM7XG5cbiAgICAgICAgaWYgKCF0aGlzLnBlcnNpc3RTZWFyY2ggfHwgdGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZmlyc3Qgc2VsZWN0aW9uIHdlIHJlY2VpdmUgaXMgdGhlIGRlZmF1bHQgb25lIG1hZGUgYnkgYDxuYXR1cmFsLWNvbHVtbnMtcGlja2VyPmBcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRTZWxlY3RlZENvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNlbGVjdGVkQ29sdW1ucyA9IGNvbHVtbnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBQZXJzaXN0IG9ubHkgaWYgd2FudGVkIGNvbHVtbnMgYXJlIGRpZmZlcmVudCBmcm9tIGRlZmF1bHQgc2VsZWN0aW9uXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlzRXF1YWwodGhpcy5kZWZhdWx0U2VsZWN0ZWRDb2x1bW5zLCBjb2x1bW5zKSA/IG51bGwgOiBjb2x1bW5zLmpvaW4oJywnKTtcbiAgICAgICAgICAgIHRoaXMucGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3QoJ2NvbCcsIHZhbHVlLCB0aGlzLnJvdXRlLCB0aGlzLmdldFN0b3JhZ2VLZXkoKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -169,4 +169,4 @@ export class NaturalQueryVariablesManager {
|
|
|
169
169
|
return groups;
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktdmFyaWFibGUtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFvQmxFLE1BQU0sQ0FBTixJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDcEIsMkJBQVcsQ0FBQTtJQUNYLDZCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLFlBQVksS0FBWixZQUFZLFFBR3ZCO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLFNBQWMsRUFBRSxNQUFXO0lBQ2pELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2pCLElBQUksU0FBUyxFQUFFO1lBQ1gsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDSCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtLQUNKO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsTUFBTSxPQUFPLDRCQUE0QjtJQUlyQyxZQUFtQixxQkFBdUQ7UUFIMUQsY0FBUyxHQUFtQyxJQUFJLGVBQWUsQ0FBZ0IsU0FBUyxDQUFDLENBQUM7UUFDekYsYUFBUSxHQUE0QixJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUcvRSxJQUFJLHFCQUFxQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksR0FBRyxDQUFDLFdBQW1CLEVBQUUsU0FBd0M7UUFDcEUseUVBQXlFO1FBQ3pFLElBQUksU0FBUyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNyQztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxHQUFHLENBQUMsV0FBbUI7UUFDMUIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsV0FBbUIsRUFBRSxZQUF3QjtRQUN0RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLFNBQVMsRUFBRTtZQUNYLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxxREFBcUQ7WUFDeEgsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO2FBQU07WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRLENBQUMsV0FBbUIsRUFBRSxZQUF3QjtRQUN6RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLFNBQVMsRUFBRTtZQUNYLFlBQVksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO2FBQU07WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ25CLE9BQU8sSUFBSSxHQUFHLENBQXFCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGVBQWU7UUFDbkIsTUFBTSxNQUFNLEdBQU0sRUFBTyxDQUFDO1FBRTFCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDckMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3pCLDhCQUE4QjtnQkFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDOUIsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDakUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQ3ZDLENBQUM7Z0JBRUYseUNBQXlDO2dCQUN6QyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO29CQUN6QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7d0JBQ2YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO3FCQUNqQzt5QkFBTTt3QkFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxDQUFDO3FCQUNwQztpQkFDSjtxQkFBTTtvQkFDSCxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sRUFBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7aUJBQzFFO2FBQ0o7WUFFRCxxQ0FBcUM7WUFDckMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssY0FBYyxDQUFDLE9BQWtCLEVBQUUsT0FBa0I7UUFDekQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM5QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLHFDQUFxQztTQUNuRDtRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUMsT0FBTyxPQUFPLENBQUMsQ0FBQyxnREFBZ0Q7U0FDbkU7UUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sT0FBTyxDQUFDLENBQUMsZ0RBQWdEO1NBQ25FO1FBRUQsTUFBTSxNQUFNLEdBQWMsRUFBRSxDQUFDO1FBRTdCLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUQsTUFBTSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUNuRTtRQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y2xvbmVEZWVwLCBkZWZhdWx0c0RlZXAsIGlzQXJyYXksIG1lcmdlV2l0aCwgb21pdH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7TGl0ZXJhbH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHttZXJnZU92ZXJyaWRlQXJyYXl9IGZyb20gJy4vdXRpbGl0eSc7XG5pbXBvcnQge2hhc01peGVkR3JvdXBMb2dpY30gZnJvbSAnLi9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyLXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVZhcmlhYmxlcyB7XG4gICAgZmlsdGVyPzogYW55IHwgbnVsbDtcbiAgICBwYWdpbmF0aW9uPzogUGFnaW5hdGlvbklucHV0IHwgbnVsbDtcbiAgICBzb3J0aW5nPzogQXJyYXk8U29ydGluZz4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25JbnB1dCB7XG4gICAgb2Zmc2V0PzogbnVtYmVyIHwgbnVsbDtcbiAgICBwYWdlSW5kZXg/OiBudW1iZXIgfCBudWxsO1xuICAgIHBhZ2VTaXplPzogbnVtYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3J0aW5nIHtcbiAgICBmaWVsZDogYW55O1xuICAgIG9yZGVyPzogU29ydGluZ09yZGVyIHwgbnVsbDtcbiAgICBudWxsQXNIaWdoZXN0PzogYm9vbGVhbiB8IG51bGw7XG59XG5cbmV4cG9ydCBlbnVtIFNvcnRpbmdPcmRlciB7XG4gICAgQVNDID0gJ0FTQycsXG4gICAgREVTQyA9ICdERVNDJyxcbn1cblxuLyoqXG4gKiBEdXJpbmcgbG9kYXNoIG1lcmdlLCBjb25jYXQgYXJyYXlzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlQ29uY2F0QXJyYXkoZGVzdFZhbHVlOiBhbnksIHNvdXJjZTogYW55KTogYW55IHtcbiAgICBpZiAoaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgIGlmIChkZXN0VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZXN0VmFsdWUuY29uY2F0KHNvdXJjZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEZpbHRlciBtYW5hZ2VyIHN0b3JlcyBhIHNldCBvZiBjaGFubmVscyB0aGF0IGNvbnRhaW4gYSB2YXJpYWJsZSBvYmplY3QgYW5kIGV4cG9zZXMgYW4gb2JzZXJ2YWJsZSBcInZhcmlhYmxlc1wiIHRoYXQgdXBkYXRlcyB3aXRoIHRoZSByZXN1bHRcbiAqIG9mIGFsbCBjaGFubmVscyBtZXJnZWQgdG9nZXRoZXIuXG4gKlxuICogQSBjaGFubmVsIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgYnkgYSBnaXZlbiBhc3BlY3Qgb2YgdGhlIEdVSSAocGFnaW5hdGlvbiwgc29ydGluZywgc2VhcmNoLCBvdGhlcnMgPykuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGZtID0gbmV3IFF1ZXJ5VmFyaWFibGVzTWFuYWdlcigpO1xuICogZm0ubWVyZ2UoJ2NvbXBvbmVudEEtdmFyaWFibGVzJywge2EgOiBbMSwgMiwgM119KTtcbiAqIGBgYFxuICpcbiAqIFZhcmlhYmxlcyBhdHRyaWJ1dGVzIGlzIGEgQmVoYXZpb3JTdWJqZWN0LiBUaGF0IG1lYW4gaXQncyBub3QgbWFuZGF0b3J5IHRvIHN1YnNjcmliZSwgd2UgY2FuIGp1c3QgY2FsbCBnZXRWYWx1ZSBvciB2YWx1ZSBhdHRyaWJ1dGVzIG9uXG4gKiBpdCA6XG4gKlxuICogYGBgdHNcbiAqIGNvbnNvbGUubG9nKGZtLnZhcmlhYmxlcy52YWx1ZSk7IC8vIHthIDogWzEsIDIsIDNdfVxuICogYGBgXG4gKlxuICogU2V0IG5ldyB2YXJpYWJsZXMgZm9yICdjb21wb25lbnRBLXZhcmlhYmxlcyc6XG4gKlxuICogYGBgdHNcbiAqIGZtLm1lcmdlKCdjb21wb25lbnRBLXZhcmlhYmxlcycsIHthIDogWzEsIDJdfSk7XG4gKiBjb25zb2xlLmxvZyhmbS52YXJpYWJsZXMudmFsdWUpOyAvLyB7YSA6IFsxLCAyLCAzXX1cbiAqIGBgYFxuICpcbiAqIFNldCBuZXcgdmFyaWFibGVzIGZvciBuZXcgY2hhbm5lbDpcbiAqXG4gKiBgYGB0c1xuICogZm0ubWVyZ2UoJ2NvbXBvbmVudEItdmFyaWFibGVzJywge2EgOiBbMywgNF19KTtcbiAqIGNvbnNvbGUubG9nKGZtLnZhcmlhYmxlcy52YWx1ZSk7IC8vIHthIDogWzEsIDIsIDMsIDRdfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFQgZXh0ZW5kcyBRdWVyeVZhcmlhYmxlcyA9IFF1ZXJ5VmFyaWFibGVzPiB7XG4gICAgcHVibGljIHJlYWRvbmx5IHZhcmlhYmxlczogQmVoYXZpb3JTdWJqZWN0PFQgfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbm5lbHM6IE1hcDxzdHJpbmcsIFBhcnRpYWw8VD4+ID0gbmV3IE1hcDxzdHJpbmcsIFBhcnRpYWw8VD4+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocXVlcnlWYXJpYWJsZXNNYW5hZ2VyPzogTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxUPikge1xuICAgICAgICBpZiAocXVlcnlWYXJpYWJsZXNNYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxzID0gcXVlcnlWYXJpYWJsZXNNYW5hZ2VyLmdldENoYW5uZWxzQ29weSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYXJpYWJsZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBvciBvdmVycmlkZSBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IG1heSBleGlzdCBpbiB0aGUgZ2l2ZW4gY2hhbm5lbFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQoY2hhbm5lbE5hbWU6IHN0cmluZywgdmFyaWFibGVzOiBQYXJ0aWFsPFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICAvLyBjbG9uZURlZXAgdG8gY2hhbmdlIHJlZmVyZW5jZSBhbmQgcHJldmVudCBzb21lIGludGVyYWN0aW9ucyB3aGVuIG1lcmdlXG4gICAgICAgIGlmICh2YXJpYWJsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbHMuc2V0KGNoYW5uZWxOYW1lLCBjbG9uZURlZXAodmFyaWFibGVzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxzLmRlbGV0ZShjaGFubmVsTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVWYXJpYWJsZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBkZWVwIGNsb25lIG9mIHRoZSB2YXJpYWJsZXMgZm9yIHRoZSBnaXZlbiBjaGFubmVsIG5hbWUuXG4gICAgICpcbiAgICAgKiBBdm9pZCByZXR1cm5pbmcgdGhlIHNhbWUgcmVmZXJlbmNlIHRvIHByZXZlbnQgYW4gYXR0cmlidXRlIGNoYW5nZSwgdGhlbiBhbm90aGVyIGNoYW5uZWwgdXBkYXRlIHRoYXQgd291bGRcbiAgICAgKiB1c2VkIHRoaXMgY2hhbmdlZCBhdHRyaWJ1dGUgd2l0aG91dCBoYXZpbmcgZXhwbGljaXRseSBhc2tlZCBRdWVyeVZhcmlhYmxlc01hbmFnZXIgdG8gdXBkYXRlIGl0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQoY2hhbm5lbE5hbWU6IHN0cmluZyk6IFBhcnRpYWw8VD4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gY2xvbmVEZWVwKHRoaXMuY2hhbm5lbHMuZ2V0KGNoYW5uZWxOYW1lKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2UgdmFyaWFibGUgaW50byBhIGNoYW5uZWwsIG92ZXJyaWRpbmcgYXJyYXlzIGluIHNhbWUgY2hhbm5lbCAvIGtleVxuICAgICAqL1xuICAgIHB1YmxpYyBtZXJnZShjaGFubmVsTmFtZTogc3RyaW5nLCBuZXdWYXJpYWJsZXM6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0gdGhpcy5jaGFubmVscy5nZXQoY2hhbm5lbE5hbWUpO1xuICAgICAgICBpZiAodmFyaWFibGVzKSB7XG4gICAgICAgICAgICBtZXJnZVdpdGgodmFyaWFibGVzLCBjbG9uZURlZXAobmV3VmFyaWFibGVzKSwgbWVyZ2VPdmVycmlkZUFycmF5KTsgLy8gbWVyZ2UgcHJlc2VydmVzIHJlZmVyZW5jZXMsIGNsb25lRGVlcCBwcmV2ZW50IHRoYXRcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFyaWFibGVzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldChjaGFubmVsTmFtZSwgbmV3VmFyaWFibGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGx5IGRlZmF1bHQgdmFsdWVzIHRvIGEgY2hhbm5lbFxuICAgICAqIE5vdGUgOiBsb2Rhc2ggZGVmYXVsdHMgb25seSBkZWZpbmVzIHZhbHVlcyBvbiBkZXN0aW5hdGlvbnMga2V5cyB0aGF0IGFyZSB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVmYXVsdHMoY2hhbm5lbE5hbWU6IHN0cmluZywgbmV3VmFyaWFibGVzOiBQYXJ0aWFsPFQ+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuY2hhbm5lbHMuZ2V0KGNoYW5uZWxOYW1lKTtcbiAgICAgICAgaWYgKHZhcmlhYmxlcykge1xuICAgICAgICAgICAgZGVmYXVsdHNEZWVwKHZhcmlhYmxlcywgbmV3VmFyaWFibGVzKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFyaWFibGVzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldChjaGFubmVsTmFtZSwgbmV3VmFyaWFibGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2hhbm5lbHNDb3B5KCk6IE1hcDxzdHJpbmcsIFBhcnRpYWw8VD4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBQYXJ0aWFsPFQ+Pih0aGlzLmNoYW5uZWxzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZSBjaGFubmVscyBpbiBhIHNpbmdsZSBvYmplY3RcbiAgICAgKiBBcnJheXMgYXJlIGNvbmNhdGVuYXRlZFxuICAgICAqIEZpbHRlciBncm91cHMgYXJlIGNvbWJpbmVkIHNtYXJ0bHkgKHNlZSBtZXJnZUdyb3VwTGlzdClcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVZhcmlhYmxlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVyZ2VkOiBUID0ge30gYXMgVDtcblxuICAgICAgICB0aGlzLmNoYW5uZWxzLmZvckVhY2goY2hhbm5lbFZhcmlhYmxlcyA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhbm5lbFZhcmlhYmxlcy5maWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBNZXJnZSBmaWx0ZXIncyBncm91cHMgZmlyc3RcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cHMgPSB0aGlzLm1lcmdlR3JvdXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICBtZXJnZWQuZmlsdGVyICYmIG1lcmdlZC5maWx0ZXIuZ3JvdXBzID8gbWVyZ2VkLmZpbHRlci5ncm91cHMgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFZhcmlhYmxlcy5maWx0ZXIuZ3JvdXBzIHx8IFtdLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBNZXJnZSBmaWx0ZXIga2V5ICh0aGF0IGNvbnRhaW4gZ3JvdXBzKVxuICAgICAgICAgICAgICAgIGlmIChncm91cHMgJiYgZ3JvdXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VkLmZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkLmZpbHRlci5ncm91cHMgPSBncm91cHM7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWQuZmlsdGVyID0ge2dyb3VwczogZ3JvdXBzfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlV2l0aChtZXJnZWQsIHtmaWx0ZXI6IGNoYW5uZWxWYXJpYWJsZXMuZmlsdGVyfSwgbWVyZ2VDb25jYXRBcnJheSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBNZXJnZSBvdGhlciBhdHRyaWJ1dGVzIHRoYW4gZmlsdGVyXG4gICAgICAgICAgICBtZXJnZVdpdGgobWVyZ2VkLCBvbWl0KGNoYW5uZWxWYXJpYWJsZXMsICdmaWx0ZXInKSwgbWVyZ2VDb25jYXRBcnJheSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudmFyaWFibGVzLm5leHQobWVyZ2VkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcm9zcyBtZXJnZSB0d28gZmlsdGVyc1xuICAgICAqIE9ubHkgYWNjZXB0cyBncm91cHMgd2l0aCBzYW1lIGdyb3VwTG9naWMgKGlnbm9yZXMgdGhlIGZpcnN0IG9uZSwgYmVjYXVzZSB0aGVyZSBpcyBubyBncm91cExvZ2ljIGluIHRoaXMgb25lKVxuICAgICAqIEB0aHJvd3MgSW4gY2FzZSB0d28gbm9uLWVtcHR5IGxpc3RzIG9mIGdyb3VwcyBhcmUgZ2l2ZW4gYW5kIGF0IG9uZSBvZiB0aGVtIG1peCBncm91cExvZ2ljIHZhbHVlLCB0aHJvd3MgYW4gZXJyb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIG1lcmdlR3JvdXBMaXN0KGdyb3Vwc0E6IExpdGVyYWxbXSwgZ3JvdXBzQjogTGl0ZXJhbFtdKTogTGl0ZXJhbCB7XG4gICAgICAgIGlmIChncm91cHNBLmxlbmd0aCA9PT0gMCAmJiBncm91cHNCLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdOyAvLyBlbXB0eSBsaXN0aW5ncywgcmV0dXJuIGVtcHR5IGxpc3RzXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ3JvdXBzQS5sZW5ndGggPT09IDAgJiYgZ3JvdXBzQi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzQjsgLy8gT25lIGxpc3QgaXMgZW1wdHksIHJldHVybiB0aGUgb25lIHRoYXQgaXMgbm90XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ3JvdXBzQi5sZW5ndGggPT09IDAgJiYgZ3JvdXBzQS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzQTsgLy8gT25lIGxpc3QgaXMgZW1wdHksIHJldHVybiB0aGUgb25lIHRoYXQgaXMgbm90XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cHM6IExpdGVyYWxbXSA9IFtdO1xuXG4gICAgICAgIGlmIChoYXNNaXhlZEdyb3VwTG9naWMoZ3JvdXBzQSkgfHwgaGFzTWl4ZWRHcm91cExvZ2ljKGdyb3Vwc0IpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignUXVlcnlWYXJpYWJsZXMgZ3JvdXBzIGNvbnRhaW4gbWl4ZWQgZ3JvdXAgbG9naWNzJyk7XG4gICAgICAgIH1cblxuICAgICAgICBncm91cHNBLmZvckVhY2goZ3JvdXBBID0+IHtcbiAgICAgICAgICAgIGdyb3Vwc0IuZm9yRWFjaChncm91cEIgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKG1lcmdlV2l0aChjbG9uZURlZXAoZ3JvdXBBKSwgZ3JvdXBCLCBtZXJnZUNvbmNhdEFycmF5KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwcztcbiAgICB9XG59XG4iXX0=
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktdmFyaWFibGUtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFxQmxFLE1BQU0sQ0FBTixJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDcEIsMkJBQVcsQ0FBQTtJQUNYLDZCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLFlBQVksS0FBWixZQUFZLFFBR3ZCO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLFNBQWMsRUFBRSxNQUFXO0lBQ2pELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2pCLElBQUksU0FBUyxFQUFFO1lBQ1gsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDSCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtLQUNKO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsTUFBTSxPQUFPLDRCQUE0QjtJQUlyQyxZQUFtQixxQkFBdUQ7UUFIMUQsY0FBUyxHQUFtQyxJQUFJLGVBQWUsQ0FBZ0IsU0FBUyxDQUFDLENBQUM7UUFDekYsYUFBUSxHQUE0QixJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUcvRSxJQUFJLHFCQUFxQixFQUFFO1lBQ3ZCLElBQUks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LENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y2xvbmVEZWVwLCBkZWZhdWx0c0RlZXAsIGlzQXJyYXksIG1lcmdlV2l0aCwgb21pdH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7TGl0ZXJhbH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHttZXJnZU92ZXJyaWRlQXJyYXl9IGZyb20gJy4vdXRpbGl0eSc7XG5pbXBvcnQge2hhc01peGVkR3JvdXBMb2dpY30gZnJvbSAnLi9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyLXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVZhcmlhYmxlcyB7XG4gICAgZmlsdGVyPzogYW55IHwgbnVsbDtcbiAgICBwYWdpbmF0aW9uPzogUGFnaW5hdGlvbklucHV0IHwgbnVsbDtcbiAgICBzb3J0aW5nPzogQXJyYXk8U29ydGluZz4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25JbnB1dCB7XG4gICAgb2Zmc2V0PzogbnVtYmVyIHwgbnVsbDtcbiAgICBwYWdlSW5kZXg/OiBudW1iZXIgfCBudWxsO1xuICAgIHBhZ2VTaXplPzogbnVtYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3J0aW5nIHtcbiAgICBmaWVsZDogYW55O1xuICAgIG9yZGVyPzogU29ydGluZ09yZGVyIHwgbnVsbDtcbiAgICBudWxsQXNIaWdoZXN0PzogYm9vbGVhbiB8IG51bGw7XG4gICAgZW1wdHlTdHJpbmdBc0hpZ2hlc3Q/OiBib29sZWFuIHwgbnVsbDtcbn1cblxuZXhwb3J0IGVudW0gU29ydGluZ09yZGVyIHtcbiAgICBBU0MgPSAnQVNDJyxcbiAgICBERVNDID0gJ0RFU0MnLFxufVxuXG4vKipcbiAqIER1cmluZyBsb2Rhc2ggbWVyZ2UsIGNvbmNhdCBhcnJheXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2VDb25jYXRBcnJheShkZXN0VmFsdWU6IGFueSwgc291cmNlOiBhbnkpOiBhbnkge1xuICAgIGlmIChpc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgaWYgKGRlc3RWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlc3RWYWx1ZS5jb25jYXQoc291cmNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogRmlsdGVyIG1hbmFnZXIgc3RvcmVzIGEgc2V0IG9mIGNoYW5uZWxzIHRoYXQgY29udGFpbiBhIHZhcmlhYmxlIG9iamVjdCBhbmQgZXhwb3NlcyBhbiBvYnNlcnZhYmxlIFwidmFyaWFibGVzXCIgdGhhdCB1cGRhdGVzIHdpdGggdGhlIHJlc3VsdFxuICogb2YgYWxsIGNoYW5uZWxzIG1lcmdlZCB0b2dldGhlci5cbiAqXG4gKiBBIGNoYW5uZWwgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBieSBhIGdpdmVuIGFzcGVjdCBvZiB0aGUgR1VJIChwYWdpbmF0aW9uLCBzb3J0aW5nLCBzZWFyY2gsIG90aGVycyA/KS5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgZm0gPSBuZXcgUXVlcnlWYXJpYWJsZXNNYW5hZ2VyKCk7XG4gKiBmbS5tZXJnZSgnY29tcG9uZW50QS12YXJpYWJsZXMnLCB7YSA6IFsxLCAyLCAzXX0pO1xuICogYGBgXG4gKlxuICogVmFyaWFibGVzIGF0dHJpYnV0ZXMgaXMgYSBCZWhhdmlvclN1YmplY3QuIFRoYXQgbWVhbiBpdCdzIG5vdCBtYW5kYXRvcnkgdG8gc3Vic2NyaWJlLCB3ZSBjYW4ganVzdCBjYWxsIGdldFZhbHVlIG9yIHZhbHVlIGF0dHJpYnV0ZXMgb25cbiAqIGl0IDpcbiAqXG4gKiBgYGB0c1xuICogY29uc29sZS5sb2coZm0udmFyaWFibGVzLnZhbHVlKTsgLy8ge2EgOiBbMSwgMiwgM119XG4gKiBgYGBcbiAqXG4gKiBTZXQgbmV3IHZhcmlhYmxlcyBmb3IgJ2NvbXBvbmVudEEtdmFyaWFibGVzJzpcbiAqXG4gKiBgYGB0c1xuICogZm0ubWVyZ2UoJ2NvbXBvbmVudEEtdmFyaWFibGVzJywge2EgOiBbMSwgMl19KTtcbiAqIGNvbnNvbGUubG9nKGZtLnZhcmlhYmxlcy52YWx1ZSk7IC8vIHthIDogWzEsIDIsIDNdfVxuICogYGBgXG4gKlxuICogU2V0IG5ldyB2YXJpYWJsZXMgZm9yIG5ldyBjaGFubmVsOlxuICpcbiAqIGBgYHRzXG4gKiBmbS5tZXJnZSgnY29tcG9uZW50Qi12YXJpYWJsZXMnLCB7YSA6IFszLCA0XX0pO1xuICogY29uc29sZS5sb2coZm0udmFyaWFibGVzLnZhbHVlKTsgLy8ge2EgOiBbMSwgMiwgMywgNF19XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXI8VCBleHRlbmRzIFF1ZXJ5VmFyaWFibGVzID0gUXVlcnlWYXJpYWJsZXM+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFyaWFibGVzOiBCZWhhdmlvclN1YmplY3Q8VCB8IHVuZGVmaW5lZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFubmVsczogTWFwPHN0cmluZywgUGFydGlhbDxUPj4gPSBuZXcgTWFwPHN0cmluZywgUGFydGlhbDxUPj4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihxdWVyeVZhcmlhYmxlc01hbmFnZXI/OiBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFQ+KSB7XG4gICAgICAgIGlmIChxdWVyeVZhcmlhYmxlc01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbHMgPSBxdWVyeVZhcmlhYmxlc01hbmFnZXIuZ2V0Q2hhbm5lbHNDb3B5KCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhcmlhYmxlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IG9yIG92ZXJyaWRlIGFsbCB0aGUgdmFyaWFibGVzIHRoYXQgbWF5IGV4aXN0IGluIHRoZSBnaXZlbiBjaGFubmVsXG4gICAgICovXG4gICAgcHVibGljIHNldChjaGFubmVsTmFtZTogc3RyaW5nLCB2YXJpYWJsZXM6IFBhcnRpYWw8VD4gfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIC8vIGNsb25lRGVlcCB0byBjaGFuZ2UgcmVmZXJlbmNlIGFuZCBwcmV2ZW50IHNvbWUgaW50ZXJhY3Rpb25zIHdoZW4gbWVyZ2VcbiAgICAgICAgaWYgKHZhcmlhYmxlcykge1xuICAgICAgICAgICAgdGhpcy5jaGFubmVscy5zZXQoY2hhbm5lbE5hbWUsIGNsb25lRGVlcCh2YXJpYWJsZXMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbHMuZGVsZXRlKGNoYW5uZWxOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVZhcmlhYmxlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGRlZXAgY2xvbmUgb2YgdGhlIHZhcmlhYmxlcyBmb3IgdGhlIGdpdmVuIGNoYW5uZWwgbmFtZS5cbiAgICAgKlxuICAgICAqIEF2b2lkIHJldHVybmluZyB0aGUgc2FtZSByZWZlcmVuY2UgdG8gcHJldmVudCBhbiBhdHRyaWJ1dGUgY2hhbmdlLCB0aGVuIGFub3RoZXIgY2hhbm5lbCB1cGRhdGUgdGhhdCB3b3VsZFxuICAgICAqIHVzZWQgdGhpcyBjaGFuZ2VkIGF0dHJpYnV0ZSB3aXRob3V0IGhhdmluZyBleHBsaWNpdGx5IGFza2VkIFF1ZXJ5VmFyaWFibGVzTWFuYWdlciB0byB1cGRhdGUgaXQuXG4gICAgICovXG4gICAgcHVibGljIGdldChjaGFubmVsTmFtZTogc3RyaW5nKTogUGFydGlhbDxUPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBjbG9uZURlZXAodGhpcy5jaGFubmVscy5nZXQoY2hhbm5lbE5hbWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZSB2YXJpYWJsZSBpbnRvIGEgY2hhbm5lbCwgb3ZlcnJpZGluZyBhcnJheXMgaW4gc2FtZSBjaGFubmVsIC8ga2V5XG4gICAgICovXG4gICAgcHVibGljIG1lcmdlKGNoYW5uZWxOYW1lOiBzdHJpbmcsIG5ld1ZhcmlhYmxlczogUGFydGlhbDxUPik6IHZvaWQge1xuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB0aGlzLmNoYW5uZWxzLmdldChjaGFubmVsTmFtZSk7XG4gICAgICAgIGlmICh2YXJpYWJsZXMpIHtcbiAgICAgICAgICAgIG1lcmdlV2l0aCh2YXJpYWJsZXMsIGNsb25lRGVlcChuZXdWYXJpYWJsZXMpLCBtZXJnZU92ZXJyaWRlQXJyYXkpOyAvLyBtZXJnZSBwcmVzZXJ2ZXMgcmVmZXJlbmNlcywgY2xvbmVEZWVwIHByZXZlbnQgdGhhdFxuICAgICAgICAgICAgdGhpcy51cGRhdGVWYXJpYWJsZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNoYW5uZWxOYW1lLCBuZXdWYXJpYWJsZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbHkgZGVmYXVsdCB2YWx1ZXMgdG8gYSBjaGFubmVsXG4gICAgICogTm90ZSA6IGxvZGFzaCBkZWZhdWx0cyBvbmx5IGRlZmluZXMgdmFsdWVzIG9uIGRlc3RpbmF0aW9ucyBrZXlzIHRoYXQgYXJlIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHB1YmxpYyBkZWZhdWx0cyhjaGFubmVsTmFtZTogc3RyaW5nLCBuZXdWYXJpYWJsZXM6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0gdGhpcy5jaGFubmVscy5nZXQoY2hhbm5lbE5hbWUpO1xuICAgICAgICBpZiAodmFyaWFibGVzKSB7XG4gICAgICAgICAgICBkZWZhdWx0c0RlZXAodmFyaWFibGVzLCBuZXdWYXJpYWJsZXMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYXJpYWJsZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNoYW5uZWxOYW1lLCBuZXdWYXJpYWJsZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDaGFubmVsc0NvcHkoKTogTWFwPHN0cmluZywgUGFydGlhbDxUPj4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIFBhcnRpYWw8VD4+KHRoaXMuY2hhbm5lbHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlIGNoYW5uZWxzIGluIGEgc2luZ2xlIG9iamVjdFxuICAgICAqIEFycmF5cyBhcmUgY29uY2F0ZW5hdGVkXG4gICAgICogRmlsdGVyIGdyb3VwcyBhcmUgY29tYmluZWQgc21hcnRseSAoc2VlIG1lcmdlR3JvdXBMaXN0KVxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlVmFyaWFibGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXJnZWQ6IFQgPSB7fSBhcyBUO1xuXG4gICAgICAgIHRoaXMuY2hhbm5lbHMuZm9yRWFjaChjaGFubmVsVmFyaWFibGVzID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFubmVsVmFyaWFibGVzLmZpbHRlcikge1xuICAgICAgICAgICAgICAgIC8vIE1lcmdlIGZpbHRlcidzIGdyb3VwcyBmaXJzdFxuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMubWVyZ2VHcm91cExpc3QoXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZC5maWx0ZXIgJiYgbWVyZ2VkLmZpbHRlci5ncm91cHMgPyBtZXJnZWQuZmlsdGVyLmdyb3VwcyA6IFtdLFxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsVmFyaWFibGVzLmZpbHRlci5ncm91cHMgfHwgW10sXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIE1lcmdlIGZpbHRlciBrZXkgKHRoYXQgY29udGFpbiBncm91cHMpXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwcyAmJiBncm91cHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZWQuZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWQuZmlsdGVyLmdyb3VwcyA9IGdyb3VwcztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZC5maWx0ZXIgPSB7Z3JvdXBzOiBncm91cHN9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VXaXRoKG1lcmdlZCwge2ZpbHRlcjogY2hhbm5lbFZhcmlhYmxlcy5maWx0ZXJ9LCBtZXJnZUNvbmNhdEFycmF5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE1lcmdlIG90aGVyIGF0dHJpYnV0ZXMgdGhhbiBmaWx0ZXJcbiAgICAgICAgICAgIG1lcmdlV2l0aChtZXJnZWQsIG9taXQoY2hhbm5lbFZhcmlhYmxlcywgJ2ZpbHRlcicpLCBtZXJnZUNvbmNhdEFycmF5KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy52YXJpYWJsZXMubmV4dChtZXJnZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyb3NzIG1lcmdlIHR3byBmaWx0ZXJzXG4gICAgICogT25seSBhY2NlcHRzIGdyb3VwcyB3aXRoIHNhbWUgZ3JvdXBMb2dpYyAoaWdub3JlcyB0aGUgZmlyc3Qgb25lLCBiZWNhdXNlIHRoZXJlIGlzIG5vIGdyb3VwTG9naWMgaW4gdGhpcyBvbmUpXG4gICAgICogQHRocm93cyBJbiBjYXNlIHR3byBub24tZW1wdHkgbGlzdHMgb2YgZ3JvdXBzIGFyZSBnaXZlbiBhbmQgYXQgb25lIG9mIHRoZW0gbWl4IGdyb3VwTG9naWMgdmFsdWUsIHRocm93cyBhbiBlcnJvclxuICAgICAqL1xuICAgIHByaXZhdGUgbWVyZ2VHcm91cExpc3QoZ3JvdXBzQTogTGl0ZXJhbFtdLCBncm91cHNCOiBMaXRlcmFsW10pOiBMaXRlcmFsIHtcbiAgICAgICAgaWYgKGdyb3Vwc0EubGVuZ3RoID09PSAwICYmIGdyb3Vwc0IubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gW107IC8vIGVtcHR5IGxpc3RpbmdzLCByZXR1cm4gZW1wdHkgbGlzdHNcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cHNBLmxlbmd0aCA9PT0gMCAmJiBncm91cHNCLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBncm91cHNCOyAvLyBPbmUgbGlzdCBpcyBlbXB0eSwgcmV0dXJuIHRoZSBvbmUgdGhhdCBpcyBub3RcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cHNCLmxlbmd0aCA9PT0gMCAmJiBncm91cHNBLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBncm91cHNBOyAvLyBPbmUgbGlzdCBpcyBlbXB0eSwgcmV0dXJuIHRoZSBvbmUgdGhhdCBpcyBub3RcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwczogTGl0ZXJhbFtdID0gW107XG5cbiAgICAgICAgaWYgKGhhc01peGVkR3JvdXBMb2dpYyhncm91cHNBKSB8fCBoYXNNaXhlZEdyb3VwTG9naWMoZ3JvdXBzQikpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdRdWVyeVZhcmlhYmxlcyBncm91cHMgY29udGFpbiBtaXhlZCBncm91cCBsb2dpY3MnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdyb3Vwc0EuZm9yRWFjaChncm91cEEgPT4ge1xuICAgICAgICAgICAgZ3JvdXBzQi5mb3JFYWNoKGdyb3VwQiA9PiB7XG4gICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2gobWVyZ2VXaXRoKGNsb25lRGVlcChncm91cEEpLCBncm91cEIsIG1lcmdlQ29uY2F0QXJyYXkpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -31,11 +31,11 @@ export const possibleDiscreteOperators = [
|
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
key: 'any',
|
|
34
|
-
label: $localize `
|
|
34
|
+
label: $localize `avec`,
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
key: 'none',
|
|
38
|
-
label: $localize `
|
|
38
|
+
label: $localize `sans`,
|
|
39
39
|
},
|
|
40
40
|
];
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi1jb21wb25lbnRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFpQztJQUNyRTtRQUNJLEdBQUcsRUFBRSxNQUFNO1FBQ1gsS0FBSyxFQUFFLEdBQUc7S0FDYjtJQUNEO1FBQ0ksR0FBRyxFQUFFLGFBQWE7UUFDbEIsS0FBSyxFQUFFLEdBQUc7S0FDYjtJQUNEO1FBQ0ksR0FBRyxFQUFFLE9BQU87UUFDWixLQUFLLEVBQUUsR0FBRztLQUNiO0lBQ0Q7UUFDSSxHQUFHLEVBQUUsZ0JBQWdCO1FBQ3JCLEtBQUssRUFBRSxHQUFHO0tBQ2I7SUFDRDtRQUNJLEdBQUcsRUFBRSxTQUFTO1FBQ2QsS0FBSyxFQUFFLEdBQUc7S0FDYjtDQUNKLENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBK0I7SUFDakU7UUFDSSxHQUFHLEVBQUUsSUFBSTtRQUNULEtBQUssRUFBRSxTQUFTLENBQUEsS0FBSztLQUN4QjtJQUNEO1FBQ0ksR0FBRyxFQUFFLE9BQU87UUFDWixLQUFLLEVBQUUsU0FBUyxDQUFBLFdBQVc7S0FDOUI7SUFDRDtRQUNJLEdBQUcsRUFBRSxLQUFLO1FBQ1YsS0FBSyxFQUFFLFNBQVMsQ0FBQSxNQUFNO0tBQ3pCO0lBQ0Q7UUFDSSxHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxTQUFTLENBQUEsTUFBTTtLQUN6QjtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGR9IGZyb20gJy4uL3NlYXJjaC9jbGFzc2VzL2dyYXBocWwtZG9jdHJpbmUudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUNvbXBhcmFibGVPcGVydG9yS2V5cyA9IGtleW9mIFBpY2s8XG4gICAgRmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZCxcbiAgICAnbGVzcycgfCAnbGVzc09yRXF1YWwnIHwgJ2VxdWFsJyB8ICdncmVhdGVyT3JFcXVhbCcgfCAnZ3JlYXRlcidcbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zc2libGVDb21wYXJhYmxlT3BlcmF0b3Ige1xuICAgIGtleTogUG9zc2libGVDb21wYXJhYmxlT3BlcnRvcktleXM7XG4gICAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IHBvc3NpYmxlQ29tcGFyYWJsZU9wZXJhdG9yczogUG9zc2libGVDb21wYXJhYmxlT3BlcmF0b3JbXSA9IFtcbiAgICB7XG4gICAgICAgIGtleTogJ2xlc3MnLFxuICAgICAgICBsYWJlbDogJzwnLFxuICAgIH0sXG4gICAge1xuICAgICAgICBrZXk6ICdsZXNzT3JFcXVhbCcsXG4gICAgICAgIGxhYmVsOiAn4omkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgICAga2V5OiAnZXF1YWwnLFxuICAgICAgICBsYWJlbDogJz0nLFxuICAgIH0sXG4gICAge1xuICAgICAgICBrZXk6ICdncmVhdGVyT3JFcXVhbCcsXG4gICAgICAgIGxhYmVsOiAn4omlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgICAga2V5OiAnZ3JlYXRlcicsXG4gICAgICAgIGxhYmVsOiAnPicsXG4gICAgfSxcbl07XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlRGlzY3JldGVPcGVyYXRvcktleXMgPSAnaXMnIHwgJ2lzbm90JyB8ICdhbnknIHwgJ25vbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3NpYmxlRGlzY3JldGVPcGVyYXRvciB7XG4gICAga2V5OiBQb3NzaWJsZURpc2NyZXRlT3BlcmF0b3JLZXlzO1xuICAgIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBwb3NzaWJsZURpc2NyZXRlT3BlcmF0b3JzOiBQb3NzaWJsZURpc2NyZXRlT3BlcmF0b3JbXSA9IFtcbiAgICB7XG4gICAgICAgIGtleTogJ2lzJyxcbiAgICAgICAgbGFiZWw6ICRsb2NhbGl6ZWBlc3RgLFxuICAgIH0sXG4gICAge1xuICAgICAgICBrZXk6ICdpc25vdCcsXG4gICAgICAgIGxhYmVsOiAkbG9jYWxpemVgbidlc3QgcGFzYCxcbiAgICB9LFxuICAgIHtcbiAgICAgICAga2V5OiAnYW55JyxcbiAgICAgICAgbGFiZWw6ICRsb2NhbGl6ZWBhdmVjYCxcbiAgICB9LFxuICAgIHtcbiAgICAgICAga2V5OiAnbm9uZScsXG4gICAgICAgIGxhYmVsOiAkbG9jYWxpemVgc2Fuc2AsXG4gICAgfSxcbl07XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
-
import { forkJoin,
|
|
2
|
+
import { forkJoin, tap } from 'rxjs';
|
|
3
3
|
import { NaturalAbstractController } from '../../classes/abstract-controller';
|
|
4
4
|
import { NaturalDataSource } from '../../classes/data-source';
|
|
5
5
|
import { NaturalQueryVariablesManager } from '../../classes/query-variable-manager';
|
|
@@ -38,6 +38,9 @@ export class NaturalRelationsComponent extends NaturalAbstractController {
|
|
|
38
38
|
* Whether the relations can be changed
|
|
39
39
|
*/
|
|
40
40
|
this.disabled = false;
|
|
41
|
+
/**
|
|
42
|
+
* Emits after relations were successfully added on the server
|
|
43
|
+
*/
|
|
41
44
|
this.selectionChange = new EventEmitter();
|
|
42
45
|
this.loading = false;
|
|
43
46
|
/**
|
|
@@ -99,17 +102,12 @@ export class NaturalRelationsComponent extends NaturalAbstractController {
|
|
|
99
102
|
* TODO : could maybe use "update" attribute of apollo.mutate function to update table faster (but hard to do it here)
|
|
100
103
|
*/
|
|
101
104
|
addRelations(relations) {
|
|
102
|
-
const observables =
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
.filter((relation) => !!relation && typeof relation === 'object')
|
|
106
|
-
.map(relation => this.linkMutationService.link(this.main, relation, this.otherName)),
|
|
107
|
-
];
|
|
105
|
+
const observables = relations
|
|
106
|
+
.filter((relation) => !!relation && typeof relation === 'object')
|
|
107
|
+
.map(relation => this.linkMutationService.link(this.main, relation, this.otherName));
|
|
108
108
|
forkJoin(observables).subscribe(() => {
|
|
109
109
|
this.selectionChange.emit();
|
|
110
|
-
|
|
111
|
-
this.select.clear();
|
|
112
|
-
}
|
|
110
|
+
this.select?.clear();
|
|
113
111
|
});
|
|
114
112
|
}
|
|
115
113
|
pagination(event) {
|
|
@@ -209,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
209
207
|
}], filter: [{
|
|
210
208
|
type: Input
|
|
211
209
|
}] } });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3JlbGF0aW9ucy9yZWxhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvcmVsYXRpb25zL3JlbGF0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsaUJBQWlCLEVBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFDLDRCQUE0QixFQUFrQyxNQUFNLHNDQUFzQyxDQUFDO0FBTW5ILE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJbkQ7Ozs7Ozs7R0FPRztBQU9ILE1BQU0sT0FBTyx5QkFjVCxTQUFRLHlCQUF5QjtJQTBFakMsWUFDcUIsbUJBQStDLEVBQy9DLHdCQUFnRTtRQUVqRixLQUFLLEVBQUUsQ0FBQztRQUhTLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBNEI7UUFDL0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF3QztRQXBFckY7O1dBRUc7UUFDYSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQVlqQzs7V0FFRztRQUNh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QUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdEMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEMsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNoQyxPQUFPO1NBQ1Y7UUFFRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUM3RixDQUFDOztzSEEvT1EseUJBQXlCOzBHQUF6Qix5QkFBeUIsa2VBa0JwQixXQUFXLHdGQURkLHNCQUFzQiw0RkMxRHJDLDZwRkFrRUE7MkZEekJhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSxtQkFBbUI7c0tBcUJjLE1BQU07c0JBQWhELFNBQVM7dUJBQUMsc0JBQXNCO2dCQUNDLFlBQVk7c0JBQTdDLFlBQVk7dUJBQUMsV0FBVztnQkFFVCxPQUFPO3NCQUF0QixLQUFLO2dCQUtVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsMEJBQTBCO3NCQUF6QyxLQUFLO2dCQUtVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsUUFBUTtzQkFBdkIsS0FBSztnQkFLVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVvQixlQUFlO3NCQUF4QyxNQUFNO2dCQUtTLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFLVSx3QkFBd0I7c0JBQXZDLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkF3Q0ssTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BhZ2VFdmVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7Zm9ya0pvaW4sIG9mLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RDb250cm9sbGVyfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Fic3RyYWN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHtOYXR1cmFsRGF0YVNvdXJjZSwgUGFnaW5hdGVkRGF0YX0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge05hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXIsIFBhZ2luYXRpb25JbnB1dCwgUXVlcnlWYXJpYWJsZXN9IGZyb20gJy4uLy4uL2NsYXNzZXMvcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5pbXBvcnQge0hpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vLi4vbW9kdWxlcy9oaWVyYXJjaGljLXNlbGVjdG9yL2NsYXNzZXMvaGllcmFyY2hpYy1maWx0ZXJzLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtMaW5rYWJsZU9iamVjdCwgTmF0dXJhbExpbmtNdXRhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xpbmstbXV0YXRpb24uc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxIaWVyYXJjaGljQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vaGllcmFyY2hpYy1zZWxlY3Rvci9jbGFzc2VzL2hpZXJhcmNoaWMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0hpZXJhcmNoaWNEaWFsb2dDb25maWd9IGZyb20gJy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cvaGllcmFyY2hpYy1zZWxlY3Rvci1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxTZWxlY3RDb21wb25lbnR9IGZyb20gJy4uL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge2ZpbmFsaXplLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7RXh0cmFjdFRhbGxPbmUsIEV4dHJhY3RWYWxsfSBmcm9tICcuLi8uLi90eXBlcy90eXBlcyc7XG5cbi8qKlxuICogQ3VzdG9tIHRlbXBsYXRlIHVzYWdlIDpcbiAqIDxuYXR1cmFsLXJlbGF0aW9ucyBbbWFpbl09XCJvd25lclwiIFtzZXJ2aWNlXT1cInN2Y1wiIFtmaWx0ZXJdPVwie31cIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBpdGVtXCI+XG4gKiAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICogICAgICAgICA8c3Bhbj57eyBpdGVtLnh4eCB9fTwvc3Bhbj5cbiAqICAgICA8L25nLXRlbXBsYXRlPlxuICogPC9uYXR1cmFsLXJlbGF0aW9ucz5cbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtcmVsYXRpb25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVsYXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZWxhdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFJlbGF0aW9uc0NvbXBvbmVudDxcbiAgICAgICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgUGFnaW5hdGVkRGF0YTxMaW5rYWJsZU9iamVjdD4sXG4gICAgICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgID5cbiAgICBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgICBAVmlld0NoaWxkKE5hdHVyYWxTZWxlY3RDb21wb25lbnQpIHByaXZhdGUgc2VsZWN0PzogTmF0dXJhbFNlbGVjdENvbXBvbmVudDxUU2VydmljZT47XG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgQElucHV0KCkgcHVibGljIHNlcnZpY2U/OiBUU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwbGFjZWhvbGRlciB1c2VkIGluIHRoZSBidXR0b24gdG8gYWRkIGEgbmV3IHJlbGF0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgZm9yIGF1dG9jb21wbGV0ZSBzZWxlY3RvclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvY29tcGxldGVTZWxlY3RvckZpbHRlcj86IEV4dHJhY3RWYWxsPFRTZXJ2aWNlPlsnZmlsdGVyJ10gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gY3VzdG9taXplIHRoZSByZW5kZXJpbmcgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gYXMgdGV4dCBpbiBpbnB1dFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5V2l0aD86IChpdGVtOiBFeHRyYWN0VGFsbE9uZTxUU2VydmljZT4gfCBudWxsKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSByZWxhdGlvbnMgY2FuIGJlIGNoYW5nZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBtYWluIG9iamVjdCB0byB3aGljaCBhbGwgcmVsYXRpb25zIGJlbG9uZyB0b1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtYWluITogTGlua2FibGVPYmplY3QgJiB7cGVybWlzc2lvbnM/OiB7dXBkYXRlOiBib29sZWFufX07XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgZm9yIGhpZXJhcmNoaWMgc2VsZWN0b3JcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaGllcmFyY2hpY1NlbGVjdG9yRmlsdGVycz86IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbiB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGluIGNhc2Ugd2UgcHJlZmVyIGhpZXJhcmNoaWMgc2VsZWN0aW9uIG92ZXIgYXV0b2NvbXBsZXRlIHNlbGVjdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWVyYXJjaGljU2VsZWN0b3JDb25maWc/OiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXTtcblxuICAgIC8qKlxuICAgICAqIExpbmsgbXV0YXRpb24gc2VtYW50aWNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgb3RoZXJOYW1lPzogc3RyaW5nIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIExpc3Rpbmcgc2VydmljZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhU291cmNlPzogTmF0dXJhbERhdGFTb3VyY2U8UGFnaW5hdGVkRGF0YTxMaW5rYWJsZU9iamVjdD4+O1xuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUYWJsZSBjb2x1bW5zXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXllZENvbHVtbnMgPSBbJ25hbWUnXTtcblxuICAgIHB1YmxpYyByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBbNSwgMjUsIDUwLCAxMDBdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0UGFnaW5hdGlvbiA9IHtcbiAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICBwYWdlU2l6ZTogMjUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgdmFyaWFibGVzL29wdGlvbnMgZm9yIGxpc3Rpbmcgc2VydmljZSB1c2FnZSBhbmQgYXBvbGxvIHdhdGNoUXVlcnlcbiAgICAgKi9cbiAgICBwcml2YXRlIHZhcmlhYmxlc01hbmFnZXI6IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXI8UXVlcnlWYXJpYWJsZXM+ID0gbmV3IE5hdHVyYWxRdWVyeVZhcmlhYmxlc01hbmFnZXIoKTtcblxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdmluZyA9IG5ldyBTZXQ8TGlua2FibGVPYmplY3Q+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua011dGF0aW9uU2VydmljZTogTmF0dXJhbExpbmtNdXRhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nOiBOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZmlsdGVyIHVzZWQgdG8gZmlsdGVyIHJlbGF0aW9uc1xuICAgICAqXG4gICAgICogU28gaWYgdGhlIHJlbGF0aW9ucyBhcmUgZnJvbSBvbmUgYWN0aW9uIC0+IHRvIG1hbnkgb2JqZWN0aXZlcywgdGhlbiB0aGUgZmlsdGVyIG11c3QgZmlsdGVyXG4gICAgICogdGhlIG9iamVjdGl2ZXMgdGhhdCBoYXZlIGluZGVlZCBhIHJlbGF0aW9uIHRvIHRoZSBwYXJ0aWN1bGFyIGFjdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsdGVyKGZpbHRlcjogRXh0cmFjdFZhbGw8VFNlcnZpY2U+WydmaWx0ZXInXSkge1xuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCdyZWxhdGlvbnMtZmlsdGVyJywge2ZpbHRlcjogZmlsdGVyfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24oKTtcblxuICAgICAgICAvLyBGb3JjZSBkaXNhYmxlZCBpZiBjYW5ub3QgdXBkYXRlIG9iamVjdFxuICAgICAgICBpZiAodGhpcy5tYWluICYmIHRoaXMubWFpbi5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMubWFpbi5wZXJtaXNzaW9ucy51cGRhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlJdGVtcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgJiYgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluZGV4T2YoJ3VubGluaycpID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmRpc3BsYXllZENvbHVtbnMuaW5kZXhPZigndW5saW5rJykgPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgndW5saW5rJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbmxpbmsgYWN0aW9uXG4gICAgICogUmVmZXRjaCByZXN1bHQgdG8gZGlzcGxheSBpdCBpbiB0YWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVSZWxhdGlvbihyZWxhdGlvbjogTGlua2FibGVPYmplY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmluZy5hZGQocmVsYXRpb24pO1xuXG4gICAgICAgIHRoaXMubGlua011dGF0aW9uU2VydmljZVxuICAgICAgICAgICAgLnVubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMucmVtb3ZpbmcuZGVsZXRlKHJlbGF0aW9uKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGF0YVNvdXJjZT8ucmVtb3ZlKHJlbGF0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGluayBhY3Rpb25cbiAgICAgKiBSZWZldGNoIHJlc3VsdCB0byBkaXNwbGF5IGl0IGluIHRhYmxlXG4gICAgICogVE9ETyA6IGNvdWxkIG1heWJlIHVzZSBcInVwZGF0ZVwiIGF0dHJpYnV0ZSBvZiBhcG9sbG8ubXV0YXRlIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0YWJsZSBmYXN0ZXIgKGJ1dCBoYXJkIHRvIGRvIGl0IGhlcmUpXG4gICAgICovXG4gICAgcHVibGljIGFkZFJlbGF0aW9ucyhyZWxhdGlvbnM6IChMaW5rYWJsZU9iamVjdCB8IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IHN0cmluZyB8IG51bGwpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSBbXG4gICAgICAgICAgICBvZihudWxsKSxcbiAgICAgICAgICAgIC4uLnJlbGF0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHJlbGF0aW9uKTogcmVsYXRpb24gaXMgTGlua2FibGVPYmplY3QgPT4gISFyZWxhdGlvbiAmJiB0eXBlb2YgcmVsYXRpb24gPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgICAgIC5tYXAocmVsYXRpb24gPT4gdGhpcy5saW5rTXV0YXRpb25TZXJ2aWNlLmxpbmsodGhpcy5tYWluLCByZWxhdGlvbiwgdGhpcy5vdGhlck5hbWUpKSxcbiAgICAgICAgXTtcblxuICAgICAgICBmb3JrSm9pbihvYnNlcnZhYmxlcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0LmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uKGV2ZW50PzogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uSW5wdXQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQgJiZcbiAgICAgICAgICAgIChldmVudC5wYWdlSW5kZXggIT09IHRoaXMuZGVmYXVsdFBhZ2luYXRpb24ucGFnZUluZGV4IHx8IGV2ZW50LnBhZ2VTaXplICE9PSB0aGlzLmRlZmF1bHRQYWdpbmF0aW9uLnBhZ2VTaXplKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBldmVudC5wYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IGV2ZW50LnBhZ2VTaXplLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3BhZ2luYXRpb24nLCB7cGFnaW5hdGlvbjogcGFnaW5hdGlvbiA/IHBhZ2luYXRpb24gOiB0aGlzLmRlZmF1bHRQYWdpbmF0aW9ufSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpc3BsYXlGbigpOiAoaXRlbTogRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+IHwgbnVsbCkgPT4gc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlXaXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChpdGVtOiBhbnkpID0+IChpdGVtID8gaXRlbS5mdWxsTmFtZSB8fCBpdGVtLm5hbWUgOiAnJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5OYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RBdEtleSA9IHRoaXMuZ2V0U2VsZWN0S2V5KCk7XG5cbiAgICAgICAgaWYgKCFzZWxlY3RBdEtleSB8fCAhdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0ge307XG5cbiAgICAgICAgY29uc3QgaGllcmFyY2hpY0NvbmZpZzogSGllcmFyY2hpY0RpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNDb25maWc6IHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLFxuICAgICAgICAgICAgaGllcmFyY2hpY1NlbGVjdGlvbjogc2VsZWN0ZWQsXG4gICAgICAgICAgICBoaWVyYXJjaGljRmlsdGVyczogdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JGaWx0ZXJzLFxuICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKGhpZXJhcmNoaWNDb25maWcpXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmhpZXJhcmNoaWNTZWxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSByZXN1bHQuaGllcmFyY2hpY1NlbGVjdGlvbltzZWxlY3RBdEtleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFJlbGF0aW9ucyhzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGxpc3QgZnJvbSBkYXRhYmFzZVxuICAgICAqL1xuICAgIHByaXZhdGUgcXVlcnlJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IHF1ZXJ5UmVmID0gdGhpcy5zZXJ2aWNlLndhdGNoQWxsKHRoaXMudmFyaWFibGVzTWFuYWdlcikucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICAgICAgdGFwKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBOYXR1cmFsRGF0YVNvdXJjZShxdWVyeVJlZik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RLZXkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLmZpbHRlcihjID0+ICEhYy5zZWxlY3RhYmxlQXRLZXkpWzBdLnNlbGVjdGFibGVBdEtleTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm9keVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5hbWVDZWxsIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICB7eyBnZXREaXNwbGF5Rm4oKShpdGVtKSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8dGFibGUgKm5nSWY9XCJkYXRhU291cmNlXCIgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIGNsYXNzPVwibmF0dXJhbC1yb3ctY2xpY2tcIiBtYXQtdGFibGU+XG4gICAgICAgIDx0ciAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiIG1hdC1oZWFkZXItcm93IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvdHI+XG4gICAgICAgIDx0ciAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiIG1hdC1yb3c+PC90cj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm5hbWVcIj5cbiAgICAgICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBpMThuIG1hdC1oZWFkZXItY2VsbD5UaXRyZTwvdGg+XG4gICAgICAgICAgICA8dGQgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIG1hdC1jZWxsPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlID8gaXRlbVRlbXBsYXRlIDogZGVmYXVsdE5hbWVDZWxsXCJcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidW5saW5rXCI+XG4gICAgICAgICAgICA8dGggKm1hdEhlYWRlckNlbGxEZWYgbWF0LWhlYWRlci1jZWxsPjwvdGg+XG4gICAgICAgICAgICA8dGQgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIG1hdC1jZWxsPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUmVsYXRpb24oZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVtb3ZpbmcuaGFzKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGlzc29jaWVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBuYXR1cmFsSWNvbj1cImxpbmtfb2ZmXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG5cbiAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgICAocGFnZSk9XCJwYWdpbmF0aW9uKCRldmVudClcIlxuICAgICAgICAqbmdJZj1cImRhdGFTb3VyY2U/LmRhdGEgJiYgKGRhdGFTb3VyY2U/LmRhdGE/Lmxlbmd0aCB8fCAwKSA+IChkYXRhU291cmNlPy5kYXRhPy5wYWdlU2l6ZSB8fCAwKVwiXG4gICAgICAgIFtsZW5ndGhdPVwiZGF0YVNvdXJjZT8uZGF0YT8ubGVuZ3RoIHx8IDBcIlxuICAgICAgICBbcGFnZUluZGV4XT1cImRhdGFTb3VyY2U/LmRhdGE/LnBhZ2VJbmRleCB8fCAwXCJcbiAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICBbcGFnZVNpemVdPVwiZGF0YVNvdXJjZT8uZGF0YT8ucGFnZVNpemUgfHwgMFwiXG4gICAgPjwvbWF0LXBhZ2luYXRvcj5cblxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiBkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cIm1hcmdpbi12IG1hdC1ib2R5XCI+XG4gICAgICAgIDxzcGFuIGkxOG4+QXVjdW4gcsOpc3VsdGF0PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyICpuZ0lmPVwibG9hZGluZ1wiIFtkaWFtZXRlcl09XCI0MFwiIGNsYXNzPVwibG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbjwvZGl2PlxuXG48bmF0dXJhbC1zZWxlY3RcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImFkZFJlbGF0aW9ucyhbJGV2ZW50XSlcIlxuICAgICpuZ0lmPVwiIWhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZyAmJiBzZXJ2aWNlICYmICFkaXNhYmxlZFwiXG4gICAgW2Rpc3BsYXlXaXRoXT1cIiRhbnkoZ2V0RGlzcGxheUZuKCkpXCJcbiAgICBbZmlsdGVyXT1cImF1dG9jb21wbGV0ZVNlbGVjdG9yRmlsdGVyXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxuICAgIFtzaG93SWNvbl09XCJmYWxzZVwiXG4+PC9uYXR1cmFsLXNlbGVjdD5cblxuPGRpdiAqbmdJZj1cImhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZyAmJiAhZGlzYWJsZWRcIj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvcigpXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uPnt7IHBsYWNlaG9sZGVyIH19PC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3JlbGF0aW9ucy9yZWxhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvcmVsYXRpb25zL3JlbGF0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQkFBaUIsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsNEJBQTRCLEVBQWtDLE1BQU0sc0NBQXNDLENBQUM7QUFNbkgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUluRDs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLHlCQWNULFNBQVEseUJBQXlCO0lBNkVqQyxZQUNxQixtQkFBK0MsRUFDL0Msd0JBQWdFO1FBRWpGLEtBQUssRUFBRSxDQUFDO1FBSFMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE0QjtRQUMvQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXdDO1FBdkVyRjs7V0FFRztRQUNhLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBWWpDOztXQUVHO1FBQ2EsYUFBUSxHQUFH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R0FBRyxLQUFLLENBQUM7U0FDdEMsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNoQyxPQUFPO1NBQ1Y7UUFFRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUM3RixDQUFDOztzSEE3T1EseUJBQXlCOzBHQUF6Qix5QkFBeUIsa2VBa0JwQixXQUFXLHdGQURkLHNCQUFzQiw0RkMxRHJDLDZwRkFrRUE7MkZEekJhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSxtQkFBbUI7c0tBcUJjLE1BQU07c0JBQWhELFNBQVM7dUJBQUMsc0JBQXNCO2dCQUNDLFlBQVk7c0JBQTdDLFlBQVk7dUJBQUMsV0FBVztnQkFFVCxPQUFPO3NCQUF0QixLQUFLO2dCQUtVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsMEJBQTBCO3NCQUF6QyxLQUFLO2dCQUtVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsUUFBUTtzQkFBdkIsS0FBSztnQkFLVSxJQUFJO3NCQUFuQixLQUFLO2dCQUtvQixlQUFlO3NCQUF4QyxNQUFNO2dCQUtTLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFLVSx3QkFBd0I7c0JBQXZDLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkF3Q0ssTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BhZ2VFdmVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7Zm9ya0pvaW4sIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXJ9IGZyb20gJy4uLy4uL2NsYXNzZXMvYWJzdHJhY3QtY29udHJvbGxlcic7XG5pbXBvcnQge05hdHVyYWxEYXRhU291cmNlLCBQYWdpbmF0ZWREYXRhfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGEtc291cmNlJztcbmltcG9ydCB7TmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlciwgUGFnaW5hdGlvbklucHV0LCBRdWVyeVZhcmlhYmxlc30gZnJvbSAnLi4vLi4vY2xhc3Nlcy9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyJztcbmltcG9ydCB7SGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9ufSBmcm9tICcuLi8uLi9tb2R1bGVzL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWZpbHRlcnMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0xpbmthYmxlT2JqZWN0LCBOYXR1cmFsTGlua011dGF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGluay1tdXRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9ufSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2NsYXNzZXMvaGllcmFyY2hpYy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7SGllcmFyY2hpY0RpYWxvZ0NvbmZpZ30gZnJvbSAnLi4vaGllcmFyY2hpYy1zZWxlY3Rvci9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZX0gZnJvbSAnLi4vaGllcmFyY2hpYy1zZWxlY3Rvci9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy9oaWVyYXJjaGljLXNlbGVjdG9yLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbFNlbGVjdENvbXBvbmVudH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7ZmluYWxpemUsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Fic3RyYWN0LW1vZGVsLnNlcnZpY2UnO1xuaW1wb3J0IHtFeHRyYWN0VGFsbE9uZSwgRXh0cmFjdFZhbGx9IGZyb20gJy4uLy4uL3R5cGVzL3R5cGVzJztcblxuLyoqXG4gKiBDdXN0b20gdGVtcGxhdGUgdXNhZ2UgOlxuICogPG5hdHVyYWwtcmVsYXRpb25zIFttYWluXT1cIm93bmVyXCIgW3NlcnZpY2VdPVwic3ZjXCIgW2ZpbHRlcl09XCJ7fVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGFuIGl0ZW1cIj5cbiAqICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gKiAgICAgICAgIDxzcGFuPnt7IGl0ZW0ueHh4IH19PC9zcGFuPlxuICogICAgIDwvbmctdGVtcGxhdGU+XG4gKiA8L25hdHVyYWwtcmVsYXRpb25zPlxuICovXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1yZWxhdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWxhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JlbGF0aW9ucy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsUmVsYXRpb25zQ29tcG9uZW50PFxuICAgICAgICBUU2VydmljZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBQYWdpbmF0ZWREYXRhPExpbmthYmxlT2JqZWN0PixcbiAgICAgICAgICAgIFF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55XG4gICAgICAgID4sXG4gICAgPlxuICAgIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0Q29udHJvbGxlclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAgIEBWaWV3Q2hpbGQoTmF0dXJhbFNlbGVjdENvbXBvbmVudCkgcHJpdmF0ZSBzZWxlY3Q/OiBOYXR1cmFsU2VsZWN0Q29tcG9uZW50PFRTZXJ2aWNlPjtcbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSBwdWJsaWMgaXRlbVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VydmljZT86IFRTZXJ2aWNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBsYWNlaG9sZGVyIHVzZWQgaW4gdGhlIGJ1dHRvbiB0byBhZGQgYSBuZXcgcmVsYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciBmb3IgYXV0b2NvbXBsZXRlIHNlbGVjdG9yXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGF1dG9jb21wbGV0ZVNlbGVjdG9yRmlsdGVyPzogRXh0cmFjdFZhbGw8VFNlcnZpY2U+WydmaWx0ZXInXSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBvZiB0aGUgc2VsZWN0ZWQgaXRlbSBhcyB0ZXh0IGluIGlucHV0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRpc3BsYXlXaXRoPzogKGl0ZW06IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IG51bGwpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHJlbGF0aW9ucyBjYW4gYmUgY2hhbmdlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG1haW4gb2JqZWN0IHRvIHdoaWNoIGFsbCByZWxhdGlvbnMgYmVsb25nIHRvXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG1haW4hOiBMaW5rYWJsZU9iamVjdCAmIHtwZXJtaXNzaW9ucz86IHt1cGRhdGU6IGJvb2xlYW59fTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFmdGVyIHJlbGF0aW9ucyB3ZXJlIHN1Y2Nlc3NmdWxseSBhZGRlZCBvbiB0aGUgc2VydmVyXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIGZvciBoaWVyYXJjaGljIHNlbGVjdG9yXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGhpZXJhcmNoaWNTZWxlY3RvckZpbHRlcnM/OiBIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb24gfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBpbiBjYXNlIHdlIHByZWZlciBoaWVyYXJjaGljIHNlbGVjdGlvbiBvdmVyIGF1dG9jb21wbGV0ZSBzZWxlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnPzogTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uW107XG5cbiAgICAvKipcbiAgICAgKiBMaW5rIG11dGF0aW9uIHNlbWFudGljXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG90aGVyTmFtZT86IHN0cmluZyB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBMaXN0aW5nIHNlcnZpY2UgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZGF0YVNvdXJjZT86IE5hdHVyYWxEYXRhU291cmNlPFBhZ2luYXRlZERhdGE8TGlua2FibGVPYmplY3Q+PjtcbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGFibGUgY29sdW1uc1xuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zID0gWyduYW1lJ107XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFnZVNpemVPcHRpb25zID0gWzUsIDI1LCA1MCwgMTAwXTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFBhZ2luYXRpb24gPSB7XG4gICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgcGFnZVNpemU6IDI1LFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlIHZhcmlhYmxlcy9vcHRpb25zIGZvciBsaXN0aW5nIHNlcnZpY2UgdXNhZ2UgYW5kIGFwb2xsbyB3YXRjaFF1ZXJ5XG4gICAgICovXG4gICAgcHJpdmF0ZSB2YXJpYWJsZXNNYW5hZ2VyOiBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPFF1ZXJ5VmFyaWFibGVzPiA9IG5ldyBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyKCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVtb3ZpbmcgPSBuZXcgU2V0PExpbmthYmxlT2JqZWN0PigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtNdXRhdGlvblNlcnZpY2U6IE5hdHVyYWxMaW5rTXV0YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZzogTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGZpbHRlciB1c2VkIHRvIGZpbHRlciByZWxhdGlvbnNcbiAgICAgKlxuICAgICAqIFNvIGlmIHRoZSByZWxhdGlvbnMgYXJlIGZyb20gb25lIGFjdGlvbiAtPiB0byBtYW55IG9iamVjdGl2ZXMsIHRoZW4gdGhlIGZpbHRlciBtdXN0IGZpbHRlclxuICAgICAqIHRoZSBvYmplY3RpdmVzIHRoYXQgaGF2ZSBpbmRlZWQgYSByZWxhdGlvbiB0byB0aGUgcGFydGljdWxhciBhY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGZpbHRlcihmaWx0ZXI6IEV4dHJhY3RWYWxsPFRTZXJ2aWNlPlsnZmlsdGVyJ10pIHtcbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgncmVsYXRpb25zLWZpbHRlcicsIHtmaWx0ZXI6IGZpbHRlcn0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uKCk7XG5cbiAgICAgICAgLy8gRm9yY2UgZGlzYWJsZWQgaWYgY2Fubm90IHVwZGF0ZSBvYmplY3RcbiAgICAgICAgaWYgKHRoaXMubWFpbiAmJiB0aGlzLm1haW4ucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLm1haW4ucGVybWlzc2lvbnMudXBkYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5SXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5pbmRleE9mKCd1bmxpbmsnKSA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucG9wKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluZGV4T2YoJ3VubGluaycpID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ3VubGluaycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW5saW5rIGFjdGlvblxuICAgICAqIFJlZmV0Y2ggcmVzdWx0IHRvIGRpc3BsYXkgaXQgaW4gdGFibGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlUmVsYXRpb24ocmVsYXRpb246IExpbmthYmxlT2JqZWN0KTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZpbmcuYWRkKHJlbGF0aW9uKTtcblxuICAgICAgICB0aGlzLmxpbmtNdXRhdGlvblNlcnZpY2VcbiAgICAgICAgICAgIC51bmxpbmsodGhpcy5tYWluLCByZWxhdGlvbiwgdGhpcy5vdGhlck5hbWUpXG4gICAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLnJlbW92aW5nLmRlbGV0ZShyZWxhdGlvbikpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRhdGFTb3VyY2U/LnJlbW92ZShyZWxhdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExpbmsgYWN0aW9uXG4gICAgICogUmVmZXRjaCByZXN1bHQgdG8gZGlzcGxheSBpdCBpbiB0YWJsZVxuICAgICAqIFRPRE8gOiBjb3VsZCBtYXliZSB1c2UgXCJ1cGRhdGVcIiBhdHRyaWJ1dGUgb2YgYXBvbGxvLm11dGF0ZSBmdW5jdGlvbiB0byB1cGRhdGUgdGFibGUgZmFzdGVyIChidXQgaGFyZCB0byBkbyBpdCBoZXJlKVxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRSZWxhdGlvbnMocmVsYXRpb25zOiAoTGlua2FibGVPYmplY3QgfCBFeHRyYWN0VGFsbE9uZTxUU2VydmljZT4gfCBzdHJpbmcgfCBudWxsKVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzID0gcmVsYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChyZWxhdGlvbik6IHJlbGF0aW9uIGlzIExpbmthYmxlT2JqZWN0ID0+ICEhcmVsYXRpb24gJiYgdHlwZW9mIHJlbGF0aW9uID09PSAnb2JqZWN0JylcbiAgICAgICAgICAgIC5tYXAocmVsYXRpb24gPT4gdGhpcy5saW5rTXV0YXRpb25TZXJ2aWNlLmxpbmsodGhpcy5tYWluLCByZWxhdGlvbiwgdGhpcy5vdGhlck5hbWUpKTtcblxuICAgICAgICBmb3JrSm9pbihvYnNlcnZhYmxlcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Py5jbGVhcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFnaW5hdGlvbihldmVudD86IFBhZ2VFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgcGFnaW5hdGlvbjogUGFnaW5hdGlvbklucHV0IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50ICYmXG4gICAgICAgICAgICAoZXZlbnQucGFnZUluZGV4ICE9PSB0aGlzLmRlZmF1bHRQYWdpbmF0aW9uLnBhZ2VJbmRleCB8fCBldmVudC5wYWdlU2l6ZSAhPT0gdGhpcy5kZWZhdWx0UGFnaW5hdGlvbi5wYWdlU2l6ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBwYWdpbmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogZXZlbnQucGFnZUluZGV4LFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBldmVudC5wYWdlU2l6ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCdwYWdpbmF0aW9uJywge3BhZ2luYXRpb246IHBhZ2luYXRpb24gPyBwYWdpbmF0aW9uIDogdGhpcy5kZWZhdWx0UGFnaW5hdGlvbn0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREaXNwbGF5Rm4oKTogKGl0ZW06IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IG51bGwpID0+IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlXaXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5V2l0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoaXRlbTogYW55KSA9PiAoaXRlbSA/IGl0ZW0uZnVsbE5hbWUgfHwgaXRlbS5uYW1lIDogJycpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0QXRLZXkgPSB0aGlzLmdldFNlbGVjdEtleSgpO1xuXG4gICAgICAgIGlmICghc2VsZWN0QXRLZXkgfHwgIXRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHt9O1xuXG4gICAgICAgIGNvbnN0IGhpZXJhcmNoaWNDb25maWc6IEhpZXJhcmNoaWNEaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICBoaWVyYXJjaGljQ29uZmlnOiB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZyxcbiAgICAgICAgICAgIGhpZXJhcmNoaWNTZWxlY3Rpb246IHNlbGVjdGVkLFxuICAgICAgICAgICAgaGllcmFyY2hpY0ZpbHRlcnM6IHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yRmlsdGVycyxcbiAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nXG4gICAgICAgICAgICAub3BlbihoaWVyYXJjaGljQ29uZmlnKVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5oaWVyYXJjaGljU2VsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gcmVzdWx0LmhpZXJhcmNoaWNTZWxlY3Rpb25bc2VsZWN0QXRLZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRSZWxhdGlvbnMoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBsaXN0IGZyb20gZGF0YWJhc2VcbiAgICAgKi9cbiAgICBwcml2YXRlIHF1ZXJ5SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBxdWVyeVJlZiA9IHRoaXMuc2VydmljZS53YXRjaEFsbCh0aGlzLnZhcmlhYmxlc01hbmFnZXIpLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgICAgIHRhcCh7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTmF0dXJhbERhdGFTb3VyY2UocXVlcnlSZWYpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0S2V5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZy5maWx0ZXIoYyA9PiAhIWMuc2VsZWN0YWJsZUF0S2V5KVswXS5zZWxlY3RhYmxlQXRLZXk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJvZHlcIj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHROYW1lQ2VsbCBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICAgICAge3sgZ2V0RGlzcGxheUZuKCkoaXRlbSkgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPHRhYmxlICpuZ0lmPVwiZGF0YVNvdXJjZVwiIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBjbGFzcz1cIm5hdHVyYWwtcm93LWNsaWNrXCIgbWF0LXRhYmxlPlxuICAgICAgICA8dHIgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIiBtYXQtaGVhZGVyLXJvdyBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L3RyPlxuICAgICAgICA8dHIgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIiBtYXQtcm93PjwvdHI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJuYW1lXCI+XG4gICAgICAgICAgICA8dGggKm1hdEhlYWRlckNlbGxEZWYgaTE4biBtYXQtaGVhZGVyLWNlbGw+VGl0cmU8L3RoPlxuICAgICAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBtYXQtY2VsbD5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBpdGVtfVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZSA/IGl0ZW1UZW1wbGF0ZSA6IGRlZmF1bHROYW1lQ2VsbFwiXG4gICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVubGlua1wiPlxuICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD48L3RoPlxuICAgICAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBtYXQtY2VsbD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVJlbGF0aW9uKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbW92aW5nLmhhcyhlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRpc3NvY2llclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJsaW5rX29mZlwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RhYmxlPlxuXG4gICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgKHBhZ2UpPVwicGFnaW5hdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKm5nSWY9XCJkYXRhU291cmNlPy5kYXRhICYmIChkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggfHwgMCkgPiAoZGF0YVNvdXJjZT8uZGF0YT8ucGFnZVNpemUgfHwgMClcIlxuICAgICAgICBbbGVuZ3RoXT1cImRhdGFTb3VyY2U/LmRhdGE/Lmxlbmd0aCB8fCAwXCJcbiAgICAgICAgW3BhZ2VJbmRleF09XCJkYXRhU291cmNlPy5kYXRhPy5wYWdlSW5kZXggfHwgMFwiXG4gICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgW3BhZ2VTaXplXT1cImRhdGFTb3VyY2U/LmRhdGE/LnBhZ2VTaXplIHx8IDBcIlxuICAgID48L21hdC1wYWdpbmF0b3I+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgZGF0YVNvdXJjZT8uZGF0YT8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJtYXJnaW4tdiBtYXQtYm9keVwiPlxuICAgICAgICA8c3BhbiBpMThuPkF1Y3VuIHLDqXN1bHRhdDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cImxvYWRpbmdcIiBbZGlhbWV0ZXJdPVwiNDBcIiBjbGFzcz1cImxvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG48L2Rpdj5cblxuPG5hdHVyYWwtc2VsZWN0XG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhZGRSZWxhdGlvbnMoWyRldmVudF0pXCJcbiAgICAqbmdJZj1cIiFoaWVyYXJjaGljU2VsZWN0b3JDb25maWcgJiYgc2VydmljZSAmJiAhZGlzYWJsZWRcIlxuICAgIFtkaXNwbGF5V2l0aF09XCIkYW55KGdldERpc3BsYXlGbigpKVwiXG4gICAgW2ZpbHRlcl09XCJhdXRvY29tcGxldGVTZWxlY3RvckZpbHRlclwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcbiAgICBbc2hvd0ljb25dPVwiZmFsc2VcIlxuPjwvbmF0dXJhbC1zZWxlY3Q+XG5cbjxkaXYgKm5nSWY9XCJoaWVyYXJjaGljU2VsZWN0b3JDb25maWcgJiYgIWRpc2FibGVkXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwib3Blbk5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3IoKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1mbGF0LWJ1dHRvbj57eyBwbGFjZWhvbGRlciB9fTwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -2915,11 +2915,11 @@ const possibleDiscreteOperators = [
|
|
|
2915
2915
|
},
|
|
2916
2916
|
{
|
|
2917
2917
|
key: 'any',
|
|
2918
|
-
label: $localize `
|
|
2918
|
+
label: $localize `avec`,
|
|
2919
2919
|
},
|
|
2920
2920
|
{
|
|
2921
2921
|
key: 'none',
|
|
2922
|
-
label: $localize `
|
|
2922
|
+
label: $localize `sans`,
|
|
2923
2923
|
},
|
|
2924
2924
|
];
|
|
2925
2925
|
|
|
@@ -3719,6 +3719,9 @@ class NaturalAbstractList extends NaturalAbstractPanel {
|
|
|
3719
3719
|
if ('nullAsHighest' in sortingEvent) {
|
|
3720
3720
|
s.nullAsHighest = sortingEvent.nullAsHighest;
|
|
3721
3721
|
}
|
|
3722
|
+
if ('emptyStringAsHighest' in sortingEvent) {
|
|
3723
|
+
s.emptyStringAsHighest = sortingEvent.emptyStringAsHighest;
|
|
3724
|
+
}
|
|
3722
3725
|
return s;
|
|
3723
3726
|
});
|
|
3724
3727
|
// Empty sorting fallbacks on default
|
|
@@ -9982,6 +9985,9 @@ class NaturalRelationsComponent extends NaturalAbstractController {
|
|
|
9982
9985
|
* Whether the relations can be changed
|
|
9983
9986
|
*/
|
|
9984
9987
|
this.disabled = false;
|
|
9988
|
+
/**
|
|
9989
|
+
* Emits after relations were successfully added on the server
|
|
9990
|
+
*/
|
|
9985
9991
|
this.selectionChange = new EventEmitter();
|
|
9986
9992
|
this.loading = false;
|
|
9987
9993
|
/**
|
|
@@ -10043,17 +10049,13 @@ class NaturalRelationsComponent extends NaturalAbstractController {
|
|
|
10043
10049
|
* TODO : could maybe use "update" attribute of apollo.mutate function to update table faster (but hard to do it here)
|
|
10044
10050
|
*/
|
|
10045
10051
|
addRelations(relations) {
|
|
10046
|
-
const observables =
|
|
10047
|
-
|
|
10048
|
-
|
|
10049
|
-
.filter((relation) => !!relation && typeof relation === 'object')
|
|
10050
|
-
.map(relation => this.linkMutationService.link(this.main, relation, this.otherName)),
|
|
10051
|
-
];
|
|
10052
|
+
const observables = relations
|
|
10053
|
+
.filter((relation) => !!relation && typeof relation === 'object')
|
|
10054
|
+
.map(relation => this.linkMutationService.link(this.main, relation, this.otherName));
|
|
10052
10055
|
forkJoin(observables).subscribe(() => {
|
|
10056
|
+
var _a;
|
|
10053
10057
|
this.selectionChange.emit();
|
|
10054
|
-
|
|
10055
|
-
this.select.clear();
|
|
10056
|
-
}
|
|
10058
|
+
(_a = this.select) === null || _a === void 0 ? void 0 : _a.clear();
|
|
10057
10059
|
});
|
|
10058
10060
|
}
|
|
10059
10061
|
pagination(event) {
|