@libs-ui/components-list 0.2.140 → 0.2.142
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/defines/list.define.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ import { LibsUiComponentsListRadioComponent } from "../templates/radio/radio.com
|
|
|
5
5
|
import { LibsUiComponentsListTagComponent } from "../templates/tag/tag.component";
|
|
6
6
|
import { LibsUiComponentsListTextComponent } from "../templates/text/text.component";
|
|
7
7
|
import { IListConfigItem } from './../interfaces/config-item.interface';
|
|
8
|
-
export declare const getComponentByType: (typeTemplate: TYPE_TEMPLATE) => typeof LibsUiComponentsListCheckboxComponent | typeof LibsUiComponentsListGroupComponent | typeof LibsUiComponentsListRadioComponent | typeof
|
|
8
|
+
export declare const getComponentByType: (typeTemplate: TYPE_TEMPLATE) => typeof LibsUiComponentsListCheckboxComponent | typeof LibsUiComponentsListGroupComponent | typeof LibsUiComponentsListRadioComponent | typeof LibsUiComponentsListTagComponent | typeof LibsUiComponentsListTextComponent;
|
|
9
9
|
export declare const getFieldKeyByType: (config: IListConfigItem | undefined, fieldKeyDefault: string) => string;
|
|
10
10
|
export declare const initConfig: (config: IListConfigItem) => void;
|
|
@@ -297,9 +297,9 @@ export class LibsUiComponentsListTemplatesComponentAbstract {
|
|
|
297
297
|
});
|
|
298
298
|
}
|
|
299
299
|
if (!configTemplate?.rows?.()) {
|
|
300
|
-
return item().fieldLabel;
|
|
300
|
+
return item().fieldLabel || ' ';
|
|
301
301
|
}
|
|
302
|
-
let textSearch = item().fieldLabel || '';
|
|
302
|
+
let textSearch = item().fieldLabel || ' ';
|
|
303
303
|
const rows = convertSignalToObject(configTemplate.rows());
|
|
304
304
|
rows.forEach((row, indexRow) => {
|
|
305
305
|
const fieldNameRow = `fieldLabelRow${indexRow}`;
|
|
@@ -344,4 +344,4 @@ export class LibsUiComponentsListTemplatesComponentAbstract {
|
|
|
344
344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListTemplatesComponentAbstract, decorators: [{
|
|
345
345
|
type: Directive
|
|
346
346
|
}], ctorParameters: () => [] });
|
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBSy9JLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUszRCxNQUFNLE9BQWdCLDhDQUE4QztJQUNsRSxtQkFBbUI7SUFDVCw4QkFBOEIsR0FBRyxNQUFNLENBQVMsR0FBRyxDQUFDLENBQUM7SUFDckQsT0FBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUNoQyxjQUFjLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ25DLEtBQUssR0FBRyxNQUFNLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLEtBQUssR0FBRyxNQUFNLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQy9D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LElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFUywwQkFBMEIsQ0FBQyxJQUFnQjtRQUNuRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFLUyxxQkFBcUI7UUFDN0IsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBR0QsV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXpZbUIsOENBQThDOzRGQUE5Qyw4Q0FBOEM7OzRGQUE5Qyw4Q0FBOEM7a0JBRG5FLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElTb3J0IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1zb3J0XCI7XG5pbXBvcnQgeyBJSW5wdXRTZWFyY2hDb25maWcgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtc2VhcmNoXCI7XG5pbXBvcnQgeyBJRmxhZ01vdXNlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgSVBhZ2luZywgVFlQRV9URU1QTEFURV9SRUYgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgTGlic1VpSHR0cFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSBcIkBsaWJzLXVpL3NlcnZpY2VzLWh0dHAtcmVxdWVzdFwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBjb252ZXJ0T2JqZWN0VG9TaWduYWwsIGNvbnZlcnRTaWduYWxUb09iamVjdCwgaXNOaWwgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0RmllbGRLZXlCeVR5cGUgfSBmcm9tIFwiLi4vZGVmaW5lcy9saXN0LmRlZmluZVwiO1xuaW1wb3J0IHsgSURhdGFVcGRhdGVUb1N0b3JlLCBJTGlzdERhdGFFbWl0S2V5LCBJTGlzdERhdGFFbWl0TXVsdGlLZXkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgSUxpc3RDb25maWdJdGVtLCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCwgSUxpc3RDb25maWdJdGVtUmFkaW8sIElMaXN0Q29uZmlnSXRlbVRleHQsIElMaXN0Q29uZmlnSXRlbVRleHRDb2wgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9jb25maWctaXRlbS5pbnRlcmZhY2VcIjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIHRpbWVBbmltYXRpb25TY3JvbGxUb0luZGV4SXRlbSA9IHNpZ25hbDxudW1iZXI+KDI1MCk7XG4gIHByb3RlY3RlZCBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcm90ZWN0ZWQgaGVpZ2h0Vmlld1BvcnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHN0b3JlID0gc2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+PihbXSk7XG4gIHByb3RlY3RlZCBpdGVtcyA9IHNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4oW10pO1xuICBwcm90ZWN0ZWQgbG9hZGVkTGFzdEl0ZW0gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgaGFzU2Nyb2xsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGZpZWxkS2V5RGVmYXVsdCA9IHNpZ25hbDxzdHJpbmc+KCdpZCcpO1xuICBwcm90ZWN0ZWQgZmllbGRLZXkgPSBzaWduYWw8c3RyaW5nPignaWQnKTtcbiAgcHJvdGVjdGVkIHRpbWVBdXRvU2Nyb2xsSXRlbVNlbGVjdGVkID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBwYWdpbmdTdG9yZSA9IHNpZ25hbDxJUGFnaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgaGVpZ2h0SXRlbSA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgdGltZUludGVydmFsSW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgdGltZUludGVydmFsQ2hlY2tTY3JvbGwgPSBzaWduYWw8bnVtYmVyPigyNTApO1xuXG4gIHByb3RlY3RlZCBvbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcm90ZWN0ZWQgaW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBmdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QgPSBpbnB1dDwoKCkgPT4gQXJyYXk8YW55PikgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHBhZGRpbmdMZWZ0SXRlbSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG1heEl0ZW1TaG93ID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgc2VhcmNoQ29uZmlnID0gaW5wdXQ8SUlucHV0U2VhcmNoQ29uZmlnPigpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxJTGlzdENvbmZpZ0l0ZW0+KCk7XG4gIHJlYWRvbmx5IGtleVNlYXJjaCA9IG1vZGVsPHN0cmluZz4oJycpO1xuICByZWFkb25seSBkcm9wZG93blRhYktleUFjdGl2ZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgaXNTZWFyY2hPbmxpbmUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgb25TZWFyY2ggPSBpbnB1dDxTdWJqZWN0PHN0cmluZz4+KCk7XG4gIHJlYWRvbmx5IG9uUmVmcmVzaCA9IGlucHV0PFN1YmplY3Q8dm9pZD4+KCk7XG4gIHJlYWRvbmx5IG9uU2V0SGlkZGVuSXRlbUJ5S2V5ID0gaW5wdXQ8U3ViamVjdDxBcnJheTx1bmtub3duPj4+KCk7XG4gIHJlYWRvbmx5IG9uUmVtb3ZlSXRlbXMgPSBpbnB1dDxTdWJqZWN0PEFycmF5PHVua25vd24+Pj4oKTtcbiAgcmVhZG9ubHkgb25TZXREYXRhU3RvcmUgPSBpbnB1dDxTdWJqZWN0PEFycmF5PGFueT4+PigpO1xuICByZWFkb25seSBvblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cCA9IGlucHV0PFN1YmplY3Q8dm9pZD4+KCk7XG4gIHJlYWRvbmx5IG9uSXRlbUNoYW5nZVVuU2VsZWN0ID0gaW5wdXQ8U3ViamVjdDxhbnk+PigpO1xuICByZWFkb25seSBvblVwZGF0ZURhdGEgPSBpbnB1dDxTdWJqZWN0PElEYXRhVXBkYXRlVG9TdG9yZT4+KCk7XG4gIHJlYWRvbmx5IGNsaWNrRXhhY3RseSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gbW9kZWw8dW5rbm93bj4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgcmFkaW8sdGV4dC5cbiAgcmVhZG9ubHkgbXVsdGlLZXlTZWxlY3RlZCA9IG1vZGVsPEFycmF5PHVua25vd24+IHwgdW5kZWZpbmVkPihbXSk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkga2V5c0Rpc2FibGVJdGVtID0gaW5wdXQ8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGtleXNIaWRkZW5JdGVtID0gbW9kZWw8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KDEyMDApO1xuICByZWFkb25seSBsb2FkaW5nSWNvblNpemUgPSBpbnB1dDwnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnIHwgJ3NtYWxsZXInIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSByZXNldEtleVdoZW5TZWxlY3RBbGxLZXlEcm9wZG93biA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZUNsYXNzRGlzYWJsZURlZmF1bHRXaGVuVXNlS2V5c0Rpc2FibGVJdGVtID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTsgLy8gYuG7jyBjaOG6vyDEkeG7mSBkaXNhYmxlIGl0ZW0gdHLDqm4gaHRtbCDEkeG7gyBkaXNhYmxlIHThu6tuZyBwaOG6p24gdHJvbmcgcm93c1xuICByZWFkb25seSB0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgYXV0b1NlbGVjdGVkRmlyc3RJdGVtQ2FsbE91dHNpZGVCZWZvcmUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0U29ydFNpbmdsZVNlbGVjdCA9IG91dHB1dDxJU29ydD4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0S2V5ID0gb3V0cHV0PElMaXN0RGF0YUVtaXRLZXkgfCB1bmRlZmluZWQ+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIHJhZGlvLHRleHQuXG4gIHJlYWRvbmx5IG91dFNlbGVjdE11bHRpS2V5ID0gb3V0cHV0PElMaXN0RGF0YUVtaXRNdWx0aUtleT4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2hvIHBow6lwIGNo4buNbiBuaGnhu4F1LlxuICByZWFkb25seSBvdXRVblNlbGVjdE11bHRpS2V5ID0gb3V0cHV0PEFycmF5PHVua25vd24+PigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dEZpZWxkS2V5ID0gb3V0cHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdlVmlldyA9IG91dHB1dDxBcnJheTxhbnk+PigpO1xuICByZWFkb25seSBvdXRMb2FkaW5nID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRJdGVtc0NvbXBsZXRlID0gb3V0cHV0PHsgaXRlbXM6IEFycmF5PGFueT4sIHBhZ2luZz86IElQYWdpbmcgfT4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByb3RlY3RlZCBpdGVtUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdpdGVtUmVmJyk7XG4gIHByb3RlY3RlZCBlbGVtZW50U2Nyb2xsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdlbGVtZW50U2Nyb2xsJyk7XG5cbiAgLy8gI3JlZ2lvbiBJTkpFQ1RcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByb3RlY3RlZCBodHRwUmVxdWVzdFNlcnZpY2UgPSBpbmplY3QoTGlic1VpSHR0cFJlcXVlc3RTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9uU2VhcmNoKCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChrZXlTZWFyY2g6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5rZXlTZWFyY2guc2V0KGtleVNlYXJjaCA/PyAnJyk7XG4gICAgICB0aGlzLnByb2Nlc3NTZWFyY2goKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uUmVmcmVzaCgpPy5waXBlKHNraXBXaGlsZSgoKSA9PiB0aGlzLmxvYWRpbmcoKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kcm9wZG93blRhYktleUFjdGl2ZSgpKSB7XG4gICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXQoW10pO1xuICAgICAgfVxuICAgICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKHRydWUpO1xuICAgIH0pO1xuICAgIHRoaXMub25JdGVtQ2hhbmdlVW5TZWxlY3QoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvY2Vzc0tleUNoYW5nZVVuU2VsZWN0KGl0ZW0pO1xuICAgIH0pO1xuICAgIHRoaXMub25TZXRIaWRkZW5JdGVtQnlLZXkoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy5zZXRIaWRkZW5JdGVtQnlLZXkuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vdXRGaWVsZEtleS5lbWl0KGdldEZpZWxkS2V5QnlUeXBlKHRoaXMuY29uZmlnKCksIHRoaXMuZmllbGRLZXlEZWZhdWx0KCkpKTtcbiAgICB0aGlzLm9uUmVtb3ZlSXRlbXMoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy5yZW1vdmVJdGVtcy5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLm9uVXBkYXRlRGF0YSgpPy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZURhdGEuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJpdmF0ZSB1cGRhdGVEYXRhKGRhdGE6IElEYXRhVXBkYXRlVG9TdG9yZSkge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7IG5ld0RhdGEsIGZ1bmN0aW9uQ3VzdG9tQWRkRGF0YVRvU3RvcmUgfSA9IGRhdGE7XG4gICAgaWYgKCFuZXdEYXRhKCkgfHwgIW5ld0RhdGEoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnKCk/LnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIG5ld0RhdGEoKS5mb3JFYWNoKGl0ZW0gPT4gaXRlbS51cGRhdGUodmFsdWUgPT4gKHsgLi4udmFsdWUsIGlzQWRkTmV3OiB0cnVlIH0pKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uQ3VzdG9tQWRkRGF0YVRvU3RvcmUobmV3RGF0YSwgdGhpcy5zdG9yZSk7XG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZEtleSgpIHtcbiAgICBsZXQgZmllbGRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmV0dXJuICdpZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjb25maWcudHlwZSkge1xuICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVRhZz8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIGZpZWxkS2V5ID0gY29uZmlnLmNvbmZpZ1RlbXBsYXRlVGV4dD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZUNoZWNrYm94Py4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGZpZWxkS2V5ID0gY29uZmlnLmNvbmZpZ1RlbXBsYXRlUmFkaW8/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkS2V5IHx8ICdpZCc7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUl0ZW1zKGtleXM6IEFycmF5PHVua25vd24+KSB7XG4gICAgY29uc3QgZmllbGRLZXkgPSB0aGlzLmdldEZpZWxkS2V5KCk7XG5cbiAgICBbdGhpcy5zdG9yZSgpLCB0aGlzLml0ZW1zKCldLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWcoKT8udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICBlbGVtZW50LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0oKVt0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uZmllbGRHZXRJdGVtcyB8fCAnaXRlbXMnXSgpLCBrZXlzLCBmaWVsZEtleSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlSXRlbShlbGVtZW50LCBrZXlzLCBmaWVsZEtleSk7XG4gICAgfSk7XG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJdGVtKGRhdGE6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+LCBrZXlzOiBBcnJheTx1bmtub3duPiwgZmllbGRLZXk6IHN0cmluZykge1xuICAgIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGRhdGEuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSgpW2ZpZWxkS2V5XSA9PT0ga2V5KTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEhlaWdodFZpZXdQb3J0KGNhbGxCYWNrQ2FsY3VsYXRvckhlaWdodFN1Y2Nlc3M/OiAoKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoSXRlbXMgPSB0aGlzLmdldExlbmd0aEl0ZW0oKTtcbiAgICB0aGlzLmhlaWdodEl0ZW0udXBkYXRlKHZhbCA9PiB0aGlzLmNvbmZpZygpPy5oZWlnaHRJdGVtIHx8IHZhbCk7XG5cbiAgICBpZiAoIWxlbmd0aEl0ZW1zKSB7XG4gICAgICB0aGlzLm91dENoYW5nZVZpZXcuZW1pdChbLi4udGhpcy5pdGVtcygpXSk7XG4gICAgICBpZiAodGhpcy5oZWlnaHRJdGVtKCkpIHtcbiAgICAgICAgdGhpcy5oZWlnaHRWaWV3UG9ydC5zZXQodGhpcy5oZWlnaHRJdGVtKCkpO1xuICAgICAgfVxuICAgICAgY2FsbEJhY2tDYWxjdWxhdG9ySGVpZ2h0U3VjY2Vzcz8uKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3RhbEhlaWdodEJ5Q291bnRJdGVtID0gbGVuZ3RoSXRlbXMgPCB0aGlzLm1heEl0ZW1TaG93KCkgPyBsZW5ndGhJdGVtcyAqIHRoaXMuaGVpZ2h0SXRlbSgpIDogdGhpcy5tYXhJdGVtU2hvdygpICogdGhpcy5oZWlnaHRJdGVtKCk7XG4gICAgY29uc3QgaGVpZ2h0QnlDaGVja2JveEFsbCA9IHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlR3JvdXA/LigpPy5jb25maWdDaGVja2JveENoZWNrQWxsID8gMjcgOiAwO1xuICAgIGNvbnN0IGhlaWdodENvbmZpZ0J1dHRvblNlbGVjdEFuZFVuZFNlbGVjdEl0ZW0gPSB0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uY29uZmlnQnV0dG9uU2VsZWN0QW5kVW5kU2VsZWN0SXRlbSA/IDI3IDogMDtcbiAgICBjb25zdCBoZWlnaHRWaWV3UG9ydCA9IHRoaXMuZ2V0SGVpZ2h0R3JvdXBIYXNMaW5lKCkgKyB0b3RhbEhlaWdodEJ5Q291bnRJdGVtICsgaGVpZ2h0QnlDaGVja2JveEFsbCArIGhlaWdodENvbmZpZ0J1dHRvblNlbGVjdEFuZFVuZFNlbGVjdEl0ZW07XG5cbiAgICBpZiAoIXRoaXMubWF4SXRlbVNob3coKSkge1xuICAgICAgdGhpcy5oZWlnaHRWaWV3UG9ydC5zZXQoMCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhlaWdodEl0ZW0oKSA+PSAodGhpcy5jb25maWcoKT8ubWluSGVpZ2h0SXRlbSA/PyAxMykpIHtcbiAgICAgIGlmIChoZWlnaHRWaWV3UG9ydCAmJiBoZWlnaHRWaWV3UG9ydCAhPT0gdGhpcy5oZWlnaHRWaWV3UG9ydCgpKSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0Vmlld1BvcnQuc2V0KGhlaWdodFZpZXdQb3J0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3V0Q2hhbmdlVmlldy5lbWl0KFsuLi50aGlzLml0ZW1zKCldKTtcbiAgICAgIGNhbGxCYWNrQ2FsY3VsYXRvckhlaWdodFN1Y2Nlc3M/LigpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnRTdWJzY3JpcHRpb24gPSBpbnRlcnZhbCh0aGlzLnRpbWVJbnRlcnZhbEludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnQoKSkucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLml0ZW1SZWYoKSB8fCAhdGhpcy5pdGVtUmVmKCk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oZWlnaHRJdGVtLnNldCh0aGlzLml0ZW1SZWYoKT8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO1xuXG4gICAgICBpZiAodGhpcy5oZWlnaHRJdGVtKCkgPCAodGhpcy5jb25maWcoKT8ubWluSGVpZ2h0SXRlbSB8fCAxMykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydChjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRIaWRkZW5JdGVtQnlLZXkoa2V5czogQXJyYXk8dW5rbm93bj4pIHtcbiAgICB0aGlzLmtleXNIaWRkZW5JdGVtLnNldChrZXlzKTtcbiAgICBpZiAodGhpcy5zdG9yZSgpICYmIHRoaXMuc3RvcmUoKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0RhdGEoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja1ZpZXdQb3J0U2Nyb2xsKGNhbGxCYWNrPzogKHByZTogYm9vbGVhbiwgY3VycmVudDogYm9vbGVhbikgPT4gdm9pZCkge1xuICAgIGNvbnN0IHByZSA9IHRoaXMuaGFzU2Nyb2xsKCk7XG5cbiAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWxDaGVja1Njcm9sbCgpKS5waXBlKHRha2UoNSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhhc1Njcm9sbC5zZXQoZmFsc2UpO1xuICAgICAgaWYgKHRoaXMuaXRlbXMoKSAmJiAhdGhpcy5pdGVtcygpLmxlbmd0aCAmJiBwcmUgJiYgIXRoaXMuaGFzU2Nyb2xsKCkpIHtcbiAgICAgICAgY2FsbEJhY2s/LihwcmUsIHRoaXMuaGFzU2Nyb2xsKCkpO1xuICAgICAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICBjYWxsQmFjaz8uKHByZSwgdGhpcy5oYXNTY3JvbGwoKSk7XG4gICAgICB0aGlzLmludGVydmFsQ2hlY2tTY3JvbGxTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY2FsbEFwaUJ5U2VydmljZShmaXJzdENhbGwgPSB0cnVlKSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGh0dHBSZXF1ZXN0RGF0YSwgaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoIH0gPSBjb25maWc7XG5cbiAgICAgIGlmICghaHR0cFJlcXVlc3REYXRhPy4oKSB8fCAoaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoICYmICF0aGlzLmtleVNlYXJjaCgpKSkge1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCAmJiAhdGhpcy5rZXlTZWFyY2goKSkge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgICB0aGlzLnN0b3JlLnNldChbXSk7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRGF0YSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgICBjb25zdCB7IGFyZ3VtZW50c1ZhbHVlLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSB9ID0gaHR0cFJlcXVlc3REYXRhKCk7XG5cbiAgICAgIGlmIChmaXJzdENhbGwpIHtcbiAgICAgICAgY29uc3QgbG9hZGVkTGFzdEl0ZW0gPSB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS51cGRhdGVBcmd1bWVudHMoYXJndW1lbnRzVmFsdWUsIHsgLi4udGhpcy5mYWtlUmVzcG9uc2VBcGkoKSwgZHJvcGRvd25UYWJLZXlBY3RpdmU6IHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSB9LCB0aGlzLnBhZ2luZ1N0b3JlKCkgfHwge30sIHRoaXMua2V5U2VhcmNoKCksIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSk7XG4gICAgICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KGxvYWRlZExhc3RJdGVtKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cFJlcXVlc3RTZXJ2aWNlLmNhbGxBcGkoaHR0cFJlcXVlc3REYXRhKCkpO1xuXG4gICAgICB0aGlzLnBhZ2luZ1N0b3JlLnNldChyZXN1bHQucGFnaW5nKTtcbiAgICAgIGlmICghdGhpcy5wYWdpbmdTdG9yZSgpKSB7XG4gICAgICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KHRydWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgbG9hZGVkTGFzdEl0ZW0gPSB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS51cGRhdGVBcmd1bWVudHMoYXJndW1lbnRzVmFsdWUsIHsgLi4ucmVzdWx0LCBkcm9wZG93blRhYktleUFjdGl2ZTogdGhpcy5kcm9wZG93blRhYktleUFjdGl2ZSgpIH0sIHRoaXMucGFnaW5nU3RvcmUoKSB8fCB7fSwgdGhpcy5rZXlTZWFyY2goKSwgdGhpcy5pc1NlYXJjaE9ubGluZSgpLCB0aGlzLmxvYWRlZExhc3RJdGVtKCksIGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlKTtcblxuICAgICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQobG9hZGVkTGFzdEl0ZW0pO1xuXG4gICAgICBpZiAoZmlyc3RDYWxsKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2V0KGNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KHJlc3VsdC5kYXRhIHx8IFtdKSgpKTtcblxuICAgICAgICBpZiAodGhpcy5mdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QoKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gY29udmVydE9iamVjdFRvU2lnbmFsPFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+Pj4odGhpcy5mdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QoKT8uKCkgfHwgW10pO1xuXG4gICAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoaXRlbXMgPT4gWy4uLm5ld0l0ZW1zKCksIC4uLml0ZW1zXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9jZXNzRGF0YSh0cnVlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlLnVwZGF0ZShpdGVtcyA9PiBbLi4uaXRlbXMsIC4uLmNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KHJlc3VsdC5kYXRhIHx8IFtdKSgpXSk7XG4gICAgICB0aGlzLnByb2Nlc3NEYXRhKGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGZha2VSZXNwb25zZUFwaSgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldChmYWxzZSk7XG4gICAgdGhpcy5wYWdpbmdTdG9yZS5zZXQoe30pO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFJlcXVlc3RTZXJ2aWNlLmZha2VSZXNwb25zZVBhZ2luZ0FwaSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkVmFsdWVCeUNvbmZpZyhpdGVtOiBXcml0YWJsZVNpZ25hbDxhbnk+LCBjb25maWdUZW1wbGF0ZT86IElMaXN0Q29uZmlnSXRlbVRleHQgfCBJTGlzdENvbmZpZ0l0ZW1SYWRpbyB8IElMaXN0Q29uZmlnSXRlbUNoZWNrYm94KTogc3RyaW5nIHtcbiAgICBjb25zdCByZWYgPSBpdGVtKCkucmVmIHx8IHt9O1xuICAgIGNvbnN0IGxhYmVsOiB1bmtub3duID0gcmVmLmxhYmVsID8/IHJlZi50aXRsZSA/PyByZWYudmFsdWUgPz8gcmVmLm5hbWU7XG5cbiAgICBpZiAoIWlzTmlsKGxhYmVsKSAmJiB0eXBlb2YgbGFiZWwgIT09ICdvYmplY3QnKSB7XG4gICAgICBpdGVtLnVwZGF0ZShjdXJyZW50SXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRJdGVtLCBmaWVsZExhYmVsOiB0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobGFiZWwpIDogYCR7bGFiZWx9YCB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ1RlbXBsYXRlPy5nZXRWYWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdUZW1wbGF0ZS5nZXRWYWx1ZShyZWYsIGl0ZW0pO1xuICAgICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gYCR7dmFsdWV9YCA6ICh2YWx1ZSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGAke3ZhbHVlfWApIDogJycpO1xuXG4gICAgICBpdGVtLnVwZGF0ZShjdXJyZW50SXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRJdGVtLCBmaWVsZExhYmVsOiBsYWJlbCB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChjb25maWdUZW1wbGF0ZT8uZ2V0UG9wb3Zlcikge1xuICAgICAgaXRlbS51cGRhdGUoY3VycmVudEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50SXRlbSwgcG9wb3ZlckxhYmVsOiBjb25maWdUZW1wbGF0ZT8uZ2V0UG9wb3Zlcj8uKGl0ZW0oKSkgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghY29uZmlnVGVtcGxhdGU/LnJvd3M/LigpKSB7XG4gICAgICByZXR1cm4gaXRlbSgpLmZpZWxkTGFiZWw7XG4gICAgfVxuICAgIGxldCB0ZXh0U2VhcmNoID0gaXRlbSgpLmZpZWxkTGFiZWwgfHwgJyc7XG5cbiAgICBjb25zdCByb3dzID0gY29udmVydFNpZ25hbFRvT2JqZWN0KGNvbmZpZ1RlbXBsYXRlLnJvd3MoKSkgYXMgQXJyYXk8YW55PjtcblxuICAgIHJvd3MuZm9yRWFjaCgocm93LCBpbmRleFJvdykgPT4ge1xuICAgICAgY29uc3QgZmllbGROYW1lUm93ID0gYGZpZWxkTGFiZWxSb3cke2luZGV4Um93fWA7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gY2xvbmVEZWVwKGl0ZW0oKSk7XG4gICAgICBjb25zdCBuZXdJdGVtID0geyAuLi5jdXJyZW50SXRlbSB9O1xuICAgICAgbmV3SXRlbVtmaWVsZE5hbWVSb3ddID0gcm93LmdldFZhbHVlICYmIHJvdy5nZXRWYWx1ZShyZWYsIGl0ZW0pO1xuICAgICAgbmV3SXRlbVtgZmllbGRSb3dTdHlsZXNEeW5hbWljQ29scyR7aW5kZXhSb3d9YF0gPSByb3cuZ2V0Um93U3R5bGVzRHluYW1pY0NvbHMgJiYgcm93LmdldFJvd1N0eWxlc0R5bmFtaWNDb2xzKHJlZik7XG4gICAgICBuZXdJdGVtW2BmaWVsZFJvd0F2YXRhckNvbmZpZyR7aW5kZXhSb3d9YF0gPSByb3cuZ2V0QXZhdGFyQ29uZmlnICYmIHJvdy5nZXRBdmF0YXJDb25maWcocmVmKTtcbiAgICAgIGlmIChyb3cuY29scyAmJiByb3cuY29scy5sZW5ndGgpIHtcbiAgICAgICAgcm93LmNvbHMuZm9yRWFjaChhc3luYyAoY29sOiBJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sLCBpbmRleENvbDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGROYW1lQ29sID0gYGZpZWxkTGFiZWxDb2wke2luZGV4Um93fSR7aW5kZXhDb2x9YDtcblxuICAgICAgICAgIG5ld0l0ZW1bZmllbGROYW1lQ29sXSA9IGNvbC5nZXRWYWx1ZTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbENsYXNzJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldENsYXNzQ29sICYmIGNvbC5nZXRDbGFzc0NvbChyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFBvcG92ZXIke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0UG9wb3ZlciAmJiBjb2wuZ2V0UG9wb3ZlcihyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZEJhZGdlJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldENvbmZpZ0JhZGdlICYmIGNvbC5nZXRDb25maWdCYWRnZShyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFN0eWxlc0R5bmFtaWMke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0U3R5bGVzRHluYW1pY0NvbDtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbEJ1dHRvbiR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRCdXR0b24gJiYgY29sLmdldEJ1dHRvbihyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFN3aXRjaCR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRMYWJlbFN3aXRjaCAmJiBjb2wuZ2V0TGFiZWxTd2l0Y2gocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xBdmF0YXJDb25maWcke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0QXZhdGFyQ29uZmlnICYmIGNvbC5nZXRBdmF0YXJDb25maWcocmVmKTtcblxuICAgICAgICAgIHRleHRTZWFyY2ggPSBgICR7dGV4dFNlYXJjaH0gJHtuZXdJdGVtW2ZpZWxkTmFtZUNvbF0gfHwgJyd9IGA7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtLnVwZGF0ZSgoKSA9PiBuZXdJdGVtKTtcbiAgICAgIHRleHRTZWFyY2ggPSBgICR7dGV4dFNlYXJjaH0gJHtpdGVtKClbZmllbGROYW1lUm93XSB8fCAnJ30gYDtcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXh0U2VhcmNoIHx8ICcgJztcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NEYXRhKGlzUmVwbGFjZT86IGJvb2xlYW4pOiBhbnk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcm9jZXNzU2VhcmNoKCk6IGFueTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldExlbmd0aEl0ZW0oKTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZ2V0SGVpZ2h0R3JvdXBIYXNMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtOiBhbnkpOiB2b2lkO1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVBdXRvU2Nyb2xsSXRlbVNlbGVjdGVkKCkpO1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59Il19
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9saXN0L3NyYy90ZW1wbGF0ZXMvdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBSy9JLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUszRCxNQUFNLE9BQWdCLDhDQUE4QztJQUNsRSxtQkFBbUI7SUFDVCw4QkFBOEIsR0FBRyxNQUFNLENBQVMsR0FBRyxDQUFDLENBQUM7SUFDckQsT0FBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUNoQyxjQUFjLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ25DLEtBQUssR0FBRyxNQUFNLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLEtBQUssR0FBRyxNQUFNLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQy9D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LFVBQVUsR0FBRyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBRVMsMEJBQTBCLENBQUMsSUFBZ0I7UUFDbkQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS1MscUJBQXFCO1FBQzdCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUdELFdBQVc7UUFDVCxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0F6WW1CLDhDQUE4Qzs0RkFBOUMsOENBQThDOzs0RkFBOUMsOENBQThDO2tCQURuRSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIG1vZGVsLCBPbkRlc3Ryb3ksIG91dHB1dCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiwgdmlld0NoaWxkLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJU29ydCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtc29ydFwiO1xuaW1wb3J0IHsgSUlucHV0U2VhcmNoQ29uZmlnIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXNlYXJjaFwiO1xuaW1wb3J0IHsgSUZsYWdNb3VzZSB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcbmltcG9ydCB7IElQYWdpbmcsIFRZUEVfVEVNUExBVEVfUkVGIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IExpYnNVaUh0dHBSZXF1ZXN0U2VydmljZSB9IGZyb20gXCJAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3RcIjtcbmltcG9ydCB7IGNsb25lRGVlcCwgY29udmVydE9iamVjdFRvU2lnbmFsLCBjb252ZXJ0U2lnbmFsVG9PYmplY3QsIGlzTmlsIH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldEZpZWxkS2V5QnlUeXBlIH0gZnJvbSBcIi4uL2RlZmluZXMvbGlzdC5kZWZpbmVcIjtcbmltcG9ydCB7IElEYXRhVXBkYXRlVG9TdG9yZSwgSUxpc3REYXRhRW1pdEtleSwgSUxpc3REYXRhRW1pdE11bHRpS2V5IH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbSwgSUxpc3RDb25maWdJdGVtQ2hlY2tib3gsIElMaXN0Q29uZmlnSXRlbVJhZGlvLCBJTGlzdENvbmZpZ0l0ZW1UZXh0LCBJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlXCI7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCB0aW1lQW5pbWF0aW9uU2Nyb2xsVG9JbmRleEl0ZW0gPSBzaWduYWw8bnVtYmVyPigyNTApO1xuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgcHJvdGVjdGVkIGhlaWdodFZpZXdQb3J0ID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBzdG9yZSA9IHNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4oW10pO1xuICBwcm90ZWN0ZWQgaXRlbXMgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+KFtdKTtcbiAgcHJvdGVjdGVkIGxvYWRlZExhc3RJdGVtID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGhhc1Njcm9sbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBmaWVsZEtleURlZmF1bHQgPSBzaWduYWw8c3RyaW5nPignaWQnKTtcbiAgcHJvdGVjdGVkIGZpZWxkS2V5ID0gc2lnbmFsPHN0cmluZz4oJ2lkJyk7XG4gIHByb3RlY3RlZCB0aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgcGFnaW5nU3RvcmUgPSBzaWduYWw8SVBhZ2luZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGhlaWdodEl0ZW0gPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHRpbWVJbnRlcnZhbEludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHRpbWVJbnRlcnZhbENoZWNrU2Nyb2xsID0gc2lnbmFsPG51bWJlcj4oMjUwKTtcblxuICBwcm90ZWN0ZWQgb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJvdGVjdGVkIGludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnRTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBpbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0ID0gaW5wdXQ8KCgpID0+IEFycmF5PGFueT4pIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBwYWRkaW5nTGVmdEl0ZW0gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtYXhJdGVtU2hvdyA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IHNlYXJjaENvbmZpZyA9IGlucHV0PElJbnB1dFNlYXJjaENvbmZpZz4oKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8SUxpc3RDb25maWdJdGVtPigpO1xuICByZWFkb25seSBrZXlTZWFyY2ggPSBtb2RlbDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgZHJvcGRvd25UYWJLZXlBY3RpdmUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGlzU2VhcmNoT25saW5lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IG9uU2VhcmNoID0gaW5wdXQ8U3ViamVjdDxzdHJpbmc+PigpO1xuICByZWFkb25seSBvblJlZnJlc2ggPSBpbnB1dDxTdWJqZWN0PHZvaWQ+PigpO1xuICByZWFkb25seSBvblNldEhpZGRlbkl0ZW1CeUtleSA9IGlucHV0PFN1YmplY3Q8QXJyYXk8dW5rbm93bj4+PigpO1xuICByZWFkb25seSBvblJlbW92ZUl0ZW1zID0gaW5wdXQ8U3ViamVjdDxBcnJheTx1bmtub3duPj4+KCk7XG4gIHJlYWRvbmx5IG9uU2V0RGF0YVN0b3JlID0gaW5wdXQ8U3ViamVjdDxBcnJheTxhbnk+Pj4oKTtcbiAgcmVhZG9ubHkgb25VcGRhdGVNdWx0aUtleVNlbGVjdGVkR3JvdXAgPSBpbnB1dDxTdWJqZWN0PHZvaWQ+PigpO1xuICByZWFkb25seSBvbkl0ZW1DaGFuZ2VVblNlbGVjdCA9IGlucHV0PFN1YmplY3Q8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb25VcGRhdGVEYXRhID0gaW5wdXQ8U3ViamVjdDxJRGF0YVVwZGF0ZVRvU3RvcmU+PigpO1xuICByZWFkb25seSBjbGlja0V4YWN0bHkgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBrZXlTZWxlY3RlZCA9IG1vZGVsPHVua25vd24+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIHJhZGlvLHRleHQuXG4gIHJlYWRvbmx5IG11bHRpS2V5U2VsZWN0ZWQgPSBtb2RlbDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4oW10pOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IGtleXNEaXNhYmxlSXRlbSA9IGlucHV0PEFycmF5PHVua25vd24+IHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBrZXlzSGlkZGVuSXRlbSA9IG1vZGVsPEFycmF5PHVua25vd24+IHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUxhYmVsID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigxMjAwKTtcbiAgcmVhZG9ubHkgbG9hZGluZ0ljb25TaXplID0gaW5wdXQ8J2xhcmdlJyB8ICdtZWRpdW0nIHwgJ3NtYWxsJyB8ICdzbWFsbGVyJyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgcmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBpZ25vcmVDbGFzc0Rpc2FibGVEZWZhdWx0V2hlblVzZUtleXNEaXNhYmxlSXRlbSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7IC8vIGLhu48gY2jhur8gxJHhu5kgZGlzYWJsZSBpdGVtIHRyw6puIGh0bWwgxJHhu4MgZGlzYWJsZSB04burbmcgcGjhuqduIHRyb25nIHJvd3NcbiAgcmVhZG9ubHkgdGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEgPSBpbnB1dDxUZW1wbGF0ZVJlZjxUWVBFX1RFTVBMQVRFX1JFRj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGF1dG9TZWxlY3RlZEZpcnN0SXRlbUNhbGxPdXRzaWRlQmVmb3JlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dFNvcnRTaW5nbGVTZWxlY3QgPSBvdXRwdXQ8SVNvcnQ+KCk7XG4gIHJlYWRvbmx5IG91dFNlbGVjdEtleSA9IG91dHB1dDxJTGlzdERhdGFFbWl0S2V5IHwgdW5kZWZpbmVkPigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSByYWRpbyx0ZXh0LlxuICByZWFkb25seSBvdXRTZWxlY3RNdWx0aUtleSA9IG91dHB1dDxJTGlzdERhdGFFbWl0TXVsdGlLZXk+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkgb3V0VW5TZWxlY3RNdWx0aUtleSA9IG91dHB1dDxBcnJheTx1bmtub3duPj4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2hvIHBow6lwIGNo4buNbiBuaGnhu4F1LlxuICByZWFkb25seSBvdXRGaWVsZEtleSA9IG91dHB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nZVZpZXcgPSBvdXRwdXQ8QXJyYXk8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb3V0TG9hZGluZyA9IG91dHB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3ZlciA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuICByZWFkb25seSBvdXRMb2FkSXRlbXNDb21wbGV0ZSA9IG91dHB1dDx7IGl0ZW1zOiBBcnJheTxhbnk+LCBwYWdpbmc/OiBJUGFnaW5nIH0+KCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcm90ZWN0ZWQgaXRlbVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignaXRlbVJlZicpO1xuICBwcm90ZWN0ZWQgZWxlbWVudFNjcm9sbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignZWxlbWVudFNjcm9sbCcpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaHR0cFJlcXVlc3RTZXJ2aWNlID0gaW5qZWN0KExpYnNVaUh0dHBSZXF1ZXN0U2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vblNlYXJjaCgpPy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoa2V5U2VhcmNoOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMua2V5U2VhcmNoLnNldChrZXlTZWFyY2ggPz8gJycpO1xuICAgICAgdGhpcy5wcm9jZXNzU2VhcmNoKCk7XG4gICAgfSk7XG4gICAgdGhpcy5vblJlZnJlc2goKT8ucGlwZShza2lwV2hpbGUoKCkgPT4gdGhpcy5sb2FkaW5nKCkpLCB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSkge1xuICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgICAgIHRoaXMuc3RvcmUuc2V0KFtdKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uSXRlbUNoYW5nZVVuU2VsZWN0KCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICghaXRlbSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2V0SGlkZGVuSXRlbUJ5S2V5KCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMuc2V0SGlkZGVuSXRlbUJ5S2V5LmJpbmQodGhpcykpO1xuICAgIHRoaXMub3V0RmllbGRLZXkuZW1pdChnZXRGaWVsZEtleUJ5VHlwZSh0aGlzLmNvbmZpZygpLCB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKSk7XG4gICAgdGhpcy5vblJlbW92ZUl0ZW1zKCk/LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMucmVtb3ZlSXRlbXMuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5vblVwZGF0ZURhdGEoKT8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVEYXRhLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByaXZhdGUgdXBkYXRlRGF0YShkYXRhOiBJRGF0YVVwZGF0ZVRvU3RvcmUpIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyBuZXdEYXRhLCBmdW5jdGlvbkN1c3RvbUFkZERhdGFUb1N0b3JlIH0gPSBkYXRhO1xuICAgIGlmICghbmV3RGF0YSgpIHx8ICFuZXdEYXRhKCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZygpPy50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICBuZXdEYXRhKCkuZm9yRWFjaChpdGVtID0+IGl0ZW0udXBkYXRlKHZhbHVlID0+ICh7IC4uLnZhbHVlLCBpc0FkZE5ldzogdHJ1ZSB9KSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbkN1c3RvbUFkZERhdGFUb1N0b3JlKG5ld0RhdGEsIHRoaXMuc3RvcmUpO1xuICAgIHRoaXMucHJvY2Vzc0RhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRLZXkoKSB7XG4gICAgbGV0IGZpZWxkS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJldHVybiAnaWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVUYWc/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQ/LigpPy5maWVsZEtleTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgZmllbGRLZXkgPSBjb25maWcuY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCk/LmZpZWxkS2V5O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgICBmaWVsZEtleSA9IGNvbmZpZy5jb25maWdUZW1wbGF0ZVJhZGlvPy4oKT8uZmllbGRLZXk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZEtleSB8fCAnaWQnO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJdGVtcyhrZXlzOiBBcnJheTx1bmtub3duPikge1xuICAgIGNvbnN0IGZpZWxkS2V5ID0gdGhpcy5nZXRGaWVsZEtleSgpO1xuXG4gICAgW3RoaXMuc3RvcmUoKSwgdGhpcy5pdGVtcygpXS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnKCk/LnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgZWxlbWVudC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbShpdGVtKClbdGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmZpZWxkR2V0SXRlbXMgfHwgJ2l0ZW1zJ10oKSwga2V5cywgZmllbGRLZXkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlbW92ZUl0ZW0oZWxlbWVudCwga2V5cywgZmllbGRLZXkpO1xuICAgIH0pO1xuICAgIHRoaXMucHJvY2Vzc0RhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlSXRlbShkYXRhOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Piwga2V5czogQXJyYXk8dW5rbm93bj4sIGZpZWxkS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBkYXRhLmZpbmRJbmRleChpdGVtID0+IGl0ZW0oKVtmaWVsZEtleV0gPT09IGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRIZWlnaHRWaWV3UG9ydChjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzPzogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGxlbmd0aEl0ZW1zID0gdGhpcy5nZXRMZW5ndGhJdGVtKCk7XG4gICAgdGhpcy5oZWlnaHRJdGVtLnVwZGF0ZSh2YWwgPT4gdGhpcy5jb25maWcoKT8uaGVpZ2h0SXRlbSB8fCB2YWwpO1xuXG4gICAgaWYgKCFsZW5ndGhJdGVtcykge1xuICAgICAgdGhpcy5vdXRDaGFuZ2VWaWV3LmVtaXQoWy4uLnRoaXMuaXRlbXMoKV0pO1xuICAgICAgaWYgKHRoaXMuaGVpZ2h0SXRlbSgpKSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0Vmlld1BvcnQuc2V0KHRoaXMuaGVpZ2h0SXRlbSgpKTtcbiAgICAgIH1cbiAgICAgIGNhbGxCYWNrQ2FsY3VsYXRvckhlaWdodFN1Y2Nlc3M/LigpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxIZWlnaHRCeUNvdW50SXRlbSA9IGxlbmd0aEl0ZW1zIDwgdGhpcy5tYXhJdGVtU2hvdygpID8gbGVuZ3RoSXRlbXMgKiB0aGlzLmhlaWdodEl0ZW0oKSA6IHRoaXMubWF4SXRlbVNob3coKSAqIHRoaXMuaGVpZ2h0SXRlbSgpO1xuICAgIGNvbnN0IGhlaWdodEJ5Q2hlY2tib3hBbGwgPSB0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUdyb3VwPy4oKT8uY29uZmlnQ2hlY2tib3hDaGVja0FsbCA/IDI3IDogMDtcbiAgICBjb25zdCBoZWlnaHRDb25maWdCdXR0b25TZWxlY3RBbmRVbmRTZWxlY3RJdGVtID0gdGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVHcm91cD8uKCk/LmNvbmZpZ0J1dHRvblNlbGVjdEFuZFVuZFNlbGVjdEl0ZW0gPyAyNyA6IDA7XG4gICAgY29uc3QgaGVpZ2h0Vmlld1BvcnQgPSB0aGlzLmdldEhlaWdodEdyb3VwSGFzTGluZSgpICsgdG90YWxIZWlnaHRCeUNvdW50SXRlbSArIGhlaWdodEJ5Q2hlY2tib3hBbGwgKyBoZWlnaHRDb25maWdCdXR0b25TZWxlY3RBbmRVbmRTZWxlY3RJdGVtO1xuXG4gICAgaWYgKCF0aGlzLm1heEl0ZW1TaG93KCkpIHtcbiAgICAgIHRoaXMuaGVpZ2h0Vmlld1BvcnQuc2V0KDApO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWlnaHRJdGVtKCkgPj0gKHRoaXMuY29uZmlnKCk/Lm1pbkhlaWdodEl0ZW0gPz8gMTMpKSB7XG4gICAgICBpZiAoaGVpZ2h0Vmlld1BvcnQgJiYgaGVpZ2h0Vmlld1BvcnQgIT09IHRoaXMuaGVpZ2h0Vmlld1BvcnQoKSkge1xuICAgICAgICB0aGlzLmhlaWdodFZpZXdQb3J0LnNldChoZWlnaHRWaWV3UG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLm91dENoYW5nZVZpZXcuZW1pdChbLi4udGhpcy5pdGVtcygpXSk7XG4gICAgICBjYWxsQmFja0NhbGN1bGF0b3JIZWlnaHRTdWNjZXNzPy4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmludGVydmFsU2V0SGVpZ2h0Vmlld1BvcnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0U3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWxJbnRlcnZhbFNldEhlaWdodFZpZXdQb3J0KCkpLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pdGVtUmVmKCkgfHwgIXRoaXMuaXRlbVJlZigpPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGVpZ2h0SXRlbS5zZXQodGhpcy5pdGVtUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcblxuICAgICAgaWYgKHRoaXMuaGVpZ2h0SXRlbSgpIDwgKHRoaXMuY29uZmlnKCk/Lm1pbkhlaWdodEl0ZW0gfHwgMTMpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW50ZXJ2YWxTZXRIZWlnaHRWaWV3UG9ydFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc2V0SGVpZ2h0Vmlld1BvcnQoY2FsbEJhY2tDYWxjdWxhdG9ySGVpZ2h0U3VjY2Vzcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0SGlkZGVuSXRlbUJ5S2V5KGtleXM6IEFycmF5PHVua25vd24+KSB7XG4gICAgdGhpcy5rZXlzSGlkZGVuSXRlbS5zZXQoa2V5cyk7XG4gICAgaWYgKHRoaXMuc3RvcmUoKSAmJiB0aGlzLnN0b3JlKCkubGVuZ3RoKSB7XG4gICAgICB0aGlzLnByb2Nlc3NEYXRhKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tWaWV3UG9ydFNjcm9sbChjYWxsQmFjaz86IChwcmU6IGJvb2xlYW4sIGN1cnJlbnQ6IGJvb2xlYW4pID0+IHZvaWQpIHtcbiAgICBjb25zdCBwcmUgPSB0aGlzLmhhc1Njcm9sbCgpO1xuXG4gICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW50ZXJ2YWxDaGVja1Njcm9sbFN1YnNjcmlwdGlvbiA9IGludGVydmFsKHRoaXMudGltZUludGVydmFsQ2hlY2tTY3JvbGwoKSkucGlwZSh0YWtlKDUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5oYXNTY3JvbGwuc2V0KGZhbHNlKTtcbiAgICAgIGlmICh0aGlzLml0ZW1zKCkgJiYgIXRoaXMuaXRlbXMoKS5sZW5ndGggJiYgcHJlICYmICF0aGlzLmhhc1Njcm9sbCgpKSB7XG4gICAgICAgIGNhbGxCYWNrPy4ocHJlLCB0aGlzLmhhc1Njcm9sbCgpKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY2FsbEJhY2s/LihwcmUsIHRoaXMuaGFzU2Nyb2xsKCkpO1xuICAgICAgdGhpcy5pbnRlcnZhbENoZWNrU2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNhbGxBcGlCeVNlcnZpY2UoZmlyc3RDYWxsID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBodHRwUmVxdWVzdERhdGEsIGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCB9ID0gY29uZmlnO1xuXG4gICAgICBpZiAoIWh0dHBSZXF1ZXN0RGF0YT8uKCkgfHwgKGlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCAmJiAhdGhpcy5rZXlTZWFyY2goKSkpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQodHJ1ZSk7XG4gICAgICAgIGlmIChpZ25vcmVTaG93RGF0YVdoZW5Ob3RTZWFyY2ggJiYgIXRoaXMua2V5U2VhcmNoKCkpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgICAgICAgdGhpcy5zdG9yZS5zZXQoW10pO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgY29uc3QgeyBhcmd1bWVudHNWYWx1ZSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUgfSA9IGh0dHBSZXF1ZXN0RGF0YSgpO1xuXG4gICAgICBpZiAoZmlyc3RDYWxsKSB7XG4gICAgICAgIGNvbnN0IGxvYWRlZExhc3RJdGVtID0gdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UudXBkYXRlQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlLCB7IC4uLnRoaXMuZmFrZVJlc3BvbnNlQXBpKCksIGRyb3Bkb3duVGFiS2V5QWN0aXZlOiB0aGlzLmRyb3Bkb3duVGFiS2V5QWN0aXZlKCkgfSwgdGhpcy5wYWdpbmdTdG9yZSgpIHx8IHt9LCB0aGlzLmtleVNlYXJjaCgpLCB0aGlzLmlzU2VhcmNoT25saW5lKCksIHRoaXMubG9hZGVkTGFzdEl0ZW0oKSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpO1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldChsb2FkZWRMYXN0SXRlbSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS5jYWxsQXBpKGh0dHBSZXF1ZXN0RGF0YSgpKTtcblxuICAgICAgdGhpcy5wYWdpbmdTdG9yZS5zZXQocmVzdWx0LnBhZ2luZyk7XG4gICAgICBpZiAoIXRoaXMucGFnaW5nU3RvcmUoKSkge1xuICAgICAgICB0aGlzLmxvYWRlZExhc3RJdGVtLnNldCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxvYWRlZExhc3RJdGVtID0gdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UudXBkYXRlQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlLCB7IC4uLnJlc3VsdCwgZHJvcGRvd25UYWJLZXlBY3RpdmU6IHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSB9LCB0aGlzLnBhZ2luZ1N0b3JlKCkgfHwge30sIHRoaXMua2V5U2VhcmNoKCksIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpLCBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSk7XG5cbiAgICAgIHRoaXMubG9hZGVkTGFzdEl0ZW0uc2V0KGxvYWRlZExhc3RJdGVtKTtcblxuICAgICAgaWYgKGZpcnN0Q2FsbCkge1xuICAgICAgICB0aGlzLnN0b3JlLnNldChjb252ZXJ0T2JqZWN0VG9TaWduYWw8V3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+PihyZXN1bHQuZGF0YSB8fCBbXSkoKSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0KCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdJdGVtcyA9IGNvbnZlcnRPYmplY3RUb1NpZ25hbDxXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pj4+KHRoaXMuZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0KCk/LigpIHx8IFtdKTtcblxuICAgICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKGl0ZW1zID0+IFsuLi5uZXdJdGVtcygpLCAuLi5pdGVtc10pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zdG9yZS51cGRhdGUoaXRlbXMgPT4gWy4uLml0ZW1zLCAuLi5jb252ZXJ0T2JqZWN0VG9TaWduYWw8V3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4+PihyZXN1bHQuZGF0YSB8fCBbXSkoKV0pO1xuICAgICAgdGhpcy5wcm9jZXNzRGF0YShmYWxzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBmYWtlUmVzcG9uc2VBcGkoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgdGhpcy5sb2FkZWRMYXN0SXRlbS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGFnaW5nU3RvcmUuc2V0KHt9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS5mYWtlUmVzcG9uc2VQYWdpbmdBcGkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFZhbHVlQnlDb25maWcoaXRlbTogV3JpdGFibGVTaWduYWw8YW55PiwgY29uZmlnVGVtcGxhdGU/OiBJTGlzdENvbmZpZ0l0ZW1UZXh0IHwgSUxpc3RDb25maWdJdGVtUmFkaW8gfCBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVmID0gaXRlbSgpLnJlZiB8fCB7fTtcbiAgICBjb25zdCBsYWJlbDogdW5rbm93biA9IHJlZi5sYWJlbCA/PyByZWYudGl0bGUgPz8gcmVmLnZhbHVlID8/IHJlZi5uYW1lO1xuXG4gICAgaWYgKCFpc05pbChsYWJlbCkgJiYgdHlwZW9mIGxhYmVsICE9PSAnb2JqZWN0Jykge1xuICAgICAgaXRlbS51cGRhdGUoY3VycmVudEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50SXRlbSwgZmllbGRMYWJlbDogdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGxhYmVsKSA6IGAke2xhYmVsfWAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb25maWdUZW1wbGF0ZT8uZ2V0VmFsdWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gY29uZmlnVGVtcGxhdGUuZ2V0VmFsdWUocmVmLCBpdGVtKTtcbiAgICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IGAke3ZhbHVlfWAgOiAodmFsdWUgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgJHt2YWx1ZX1gKSA6ICcnKTtcblxuICAgICAgaXRlbS51cGRhdGUoY3VycmVudEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50SXRlbSwgZmllbGRMYWJlbDogbGFiZWwgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoY29uZmlnVGVtcGxhdGU/LmdldFBvcG92ZXIpIHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnRJdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY3VycmVudEl0ZW0sIHBvcG92ZXJMYWJlbDogY29uZmlnVGVtcGxhdGU/LmdldFBvcG92ZXI/LihpdGVtKCkpIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbmZpZ1RlbXBsYXRlPy5yb3dzPy4oKSkge1xuICAgICAgcmV0dXJuIGl0ZW0oKS5maWVsZExhYmVsIHx8ICcgJztcbiAgICB9XG4gICAgbGV0IHRleHRTZWFyY2ggPSBpdGVtKCkuZmllbGRMYWJlbCB8fCAnICc7XG5cbiAgICBjb25zdCByb3dzID0gY29udmVydFNpZ25hbFRvT2JqZWN0KGNvbmZpZ1RlbXBsYXRlLnJvd3MoKSkgYXMgQXJyYXk8YW55PjtcblxuICAgIHJvd3MuZm9yRWFjaCgocm93LCBpbmRleFJvdykgPT4ge1xuICAgICAgY29uc3QgZmllbGROYW1lUm93ID0gYGZpZWxkTGFiZWxSb3cke2luZGV4Um93fWA7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gY2xvbmVEZWVwKGl0ZW0oKSk7XG4gICAgICBjb25zdCBuZXdJdGVtID0geyAuLi5jdXJyZW50SXRlbSB9O1xuICAgICAgbmV3SXRlbVtmaWVsZE5hbWVSb3ddID0gcm93LmdldFZhbHVlICYmIHJvdy5nZXRWYWx1ZShyZWYsIGl0ZW0pO1xuICAgICAgbmV3SXRlbVtgZmllbGRSb3dTdHlsZXNEeW5hbWljQ29scyR7aW5kZXhSb3d9YF0gPSByb3cuZ2V0Um93U3R5bGVzRHluYW1pY0NvbHMgJiYgcm93LmdldFJvd1N0eWxlc0R5bmFtaWNDb2xzKHJlZik7XG4gICAgICBuZXdJdGVtW2BmaWVsZFJvd0F2YXRhckNvbmZpZyR7aW5kZXhSb3d9YF0gPSByb3cuZ2V0QXZhdGFyQ29uZmlnICYmIHJvdy5nZXRBdmF0YXJDb25maWcocmVmKTtcbiAgICAgIGlmIChyb3cuY29scyAmJiByb3cuY29scy5sZW5ndGgpIHtcbiAgICAgICAgcm93LmNvbHMuZm9yRWFjaChhc3luYyAoY29sOiBJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sLCBpbmRleENvbDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGROYW1lQ29sID0gYGZpZWxkTGFiZWxDb2wke2luZGV4Um93fSR7aW5kZXhDb2x9YDtcblxuICAgICAgICAgIG5ld0l0ZW1bZmllbGROYW1lQ29sXSA9IGNvbC5nZXRWYWx1ZTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbENsYXNzJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldENsYXNzQ29sICYmIGNvbC5nZXRDbGFzc0NvbChyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFBvcG92ZXIke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0UG9wb3ZlciAmJiBjb2wuZ2V0UG9wb3ZlcihyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZEJhZGdlJHtpbmRleFJvd30ke2luZGV4Q29sfWBdID0gY29sLmdldENvbmZpZ0JhZGdlICYmIGNvbC5nZXRDb25maWdCYWRnZShyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFN0eWxlc0R5bmFtaWMke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0U3R5bGVzRHluYW1pY0NvbDtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbEJ1dHRvbiR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRCdXR0b24gJiYgY29sLmdldEJ1dHRvbihyZWYsIGluZGV4Q29sKTtcbiAgICAgICAgICBuZXdJdGVtW2BmaWVsZENvbFN3aXRjaCR7aW5kZXhSb3d9JHtpbmRleENvbH1gXSA9IGNvbC5nZXRMYWJlbFN3aXRjaCAmJiBjb2wuZ2V0TGFiZWxTd2l0Y2gocmVmLCBpbmRleENvbCk7XG4gICAgICAgICAgbmV3SXRlbVtgZmllbGRDb2xBdmF0YXJDb25maWcke2luZGV4Um93fSR7aW5kZXhDb2x9YF0gPSBjb2wuZ2V0QXZhdGFyQ29uZmlnICYmIGNvbC5nZXRBdmF0YXJDb25maWcocmVmKTtcblxuICAgICAgICAgIHRleHRTZWFyY2ggPSBgICR7dGV4dFNlYXJjaH0gJHtuZXdJdGVtW2ZpZWxkTmFtZUNvbF0gfHwgJyd9IGA7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtLnVwZGF0ZSgoKSA9PiBuZXdJdGVtKTtcbiAgICAgIHRleHRTZWFyY2ggPSBgICR7dGV4dFNlYXJjaH0gJHtpdGVtKClbZmllbGROYW1lUm93XSB8fCAnJ30gYDtcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZXh0U2VhcmNoIHx8ICcgJztcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NEYXRhKGlzUmVwbGFjZT86IGJvb2xlYW4pOiBhbnk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcm9jZXNzU2VhcmNoKCk6IGFueTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldExlbmd0aEl0ZW0oKTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZ2V0SGVpZ2h0R3JvdXBIYXNMaW5lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NLZXlDaGFuZ2VVblNlbGVjdChpdGVtOiBhbnkpOiB2b2lkO1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVBdXRvU2Nyb2xsSXRlbVNlbGVjdGVkKCkpO1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59Il19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AsyncPipe, NgComponentOutlet, NgTemplateOutlet, NgClass } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { input, inject, ElementRef, Directive, Pipe, signal, output, effect, untracked,
|
|
3
|
+
import { input, inject, ElementRef, Directive, Pipe, signal, output, effect, untracked, ChangeDetectionStrategy, Component, model, viewChild, isSignal } from '@angular/core';
|
|
4
4
|
import { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';
|
|
5
5
|
import { LibsUiComponentsInputsSearchComponent } from '@libs-ui/components-inputs-search';
|
|
6
6
|
import { LibsUiComponentsLabelComponent } from '@libs-ui/components-label';
|
|
@@ -471,9 +471,9 @@ class LibsUiComponentsListTemplatesComponentAbstract {
|
|
|
471
471
|
});
|
|
472
472
|
}
|
|
473
473
|
if (!configTemplate?.rows?.()) {
|
|
474
|
-
return item().fieldLabel;
|
|
474
|
+
return item().fieldLabel || ' ';
|
|
475
475
|
}
|
|
476
|
-
let textSearch = item().fieldLabel || '';
|
|
476
|
+
let textSearch = item().fieldLabel || ' ';
|
|
477
477
|
const rows = convertSignalToObject(configTemplate.rows());
|
|
478
478
|
rows.forEach((row, indexRow) => {
|
|
479
479
|
const fieldNameRow = `fieldLabelRow${indexRow}`;
|