@libs-ui/components-list 0.2.130 → 0.2.131
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 +1 -1
- package/esm2022/interfaces/config-item.interface.mjs +1 -1
- package/esm2022/list.component.mjs +4 -2
- package/esm2022/templates/group/group.component.mjs +1 -2
- package/esm2022/templates/rows/rows.component.mjs +3 -3
- package/esm2022/templates/templates.component.abstract.mjs +8 -4
- package/esm2022/templates/text/text.component.mjs +3 -3
- package/fesm2022/libs-ui-components-list.mjs +15 -10
- package/fesm2022/libs-ui-components-list.mjs.map +1 -1
- package/interfaces/config-item.interface.d.ts +2 -0
- package/list.component.d.ts +3 -2
- package/package.json +1 -1
- package/templates/templates.component.abstract.d.ts +1 -1
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 LibsUiComponentsListTextComponent | typeof LibsUiComponentsListTagComponent;
|
|
9
9
|
export declare const getFieldKeyByType: (config: IListConfigItem | undefined, fieldKeyDefault: string) => string;
|
|
10
10
|
export declare const initConfig: (config: IListConfigItem) => void;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
;
|
|
2
2
|
export {};
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWl0ZW0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1KQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSUF2YXRhckNvbmZpZyB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWF2YXRhclwiO1xuaW1wb3J0IHsgSUJhZGdlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYmFkZ2VcIjtcbmltcG9ydCB7IElCdXR0b24gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblwiO1xuaW1wb3J0IHsgSVNvcnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLXNvcnRcIjtcbmltcG9ydCB7IElDaGVja2JveEl0ZW0gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1jaGVja2JveC1ncm91cFwiO1xuaW1wb3J0IHsgSUxhYmVsIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtbGFiZWxcIjtcbmltcG9ydCB7IElQb3BvdmVyLCBJUG9wb3Zlck92ZXJsYXksIFRZUEVfUE9QT1ZFUl9FVkVOVCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcbmltcG9ydCB7IElIdHRwUmVxdWVzdENvbmZpZyB9IGZyb20gXCJAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3RcIjtcbmltcG9ydCB7IFRZUEVfVEVNUExBVEUgfSBmcm9tIFwiLi90ZW1wbGF0ZXMtdHlwZS50eXBlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW0ge1xuICB0eXBlOiBUWVBFX1RFTVBMQVRFO1xuICBodHRwUmVxdWVzdERhdGE/OiBXcml0YWJsZVNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+O1xuICBjb25maWdUZW1wbGF0ZVRleHQ/OiBXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0PjtcbiAgY29uZmlnVGVtcGxhdGVSYWRpbz86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVJhZGlvPjtcbiAgY29uZmlnVGVtcGxhdGVDaGVja2JveD86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbUNoZWNrYm94PjtcbiAgY29uZmlnVGVtcGxhdGVHcm91cD86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbUdyb3VwPjtcbiAgY29uZmlnVGVtcGxhdGVUYWc/OiBXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UYWc+O1xuICBjb25maWdEZXNjcmlwdGlvbkdyb3VwPzogV3JpdGFibGVTaWduYWw8SUNvbmZpZ0Rlc2NyaXB0aW9uR3JvdXA+O1xuICB0ZXh0Tm9EYXRhPzogc3RyaW5nO1xuICB0ZXh0Tm9EYXRhQ2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICB0ZXh0U2VhcmNoTm9EYXRhPzogc3RyaW5nO1xuICBhdXRvU2VsZWN0Rmlyc3RJdGVtPzogYm9vbGVhbjsgLy8gbuG6v3UgbmjGsCBjw7MgZOG7ryBsaeG7h3UgbcOgIGNoxrBhIGPDsyBrZXlTZWxlY3RlZCB0aMOsIHPhur0gdOG7sSDEkeG7mW5nIGNo4buNbiBwaOG6p24gdOG7qyDEkeG6p3UgdGnDqm47XG4gIGJhY2tncm91bmRMaXN0Q3VzdG9tPzogc3RyaW5nO1xuICBwYWRkaW5nTGVmdEl0ZW0/OiBib29sZWFuO1xuICBzb3J0PzogKGl0ZW1zOiBBcnJheTxhbnk+KSA9PiB2b2lkO1xuICBoYXNJY29uTm9EYXRhPzogYm9vbGVhbjtcbiAgaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaWdub3JlRml4SGVpZ2h0U2hvd0RhdGFXaGVuTm90U2VhcmNoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaGlnaGxpZ2h0VGV4dFNlYXJjaEluUmVzdWx0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1UZXh0IHtcbiAgZmllbGRLZXk6IHN0cmluZztcbiAgZ2V0VmFsdWU/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGZpZWxkR2V0SW1hZ2U/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUltYWdlPzogc3RyaW5nO1xuICBnZXRJbWFnZT86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldEltYWdlRXJyb3I/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpbWdUeXBlSWNvbj86IGJvb2xlYW47XG4gIGlnbm9yZUljb25TZWxlY3RlZD86IGJvb2xlYW47XG4gIGNsYXNzSW5jbHVkZUljb25TZWxlY3RlZD86IHN0cmluZztcbiAgaWdub3JlU2hvd0ZpZWxkTGFiZWw/OiBib29sZWFuO1xuICBnZXRIcmVmQnV0dG9uPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRDbGFzc0l0ZW0/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldENsYXNzSW5jbHVkZVBvcG92ZXI/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldENvbmZpZ0J1dHRvbkxlZnQ/OiAoaXRlbTogYW55KSA9PiBJQnV0dG9uO1xuICBnZXRDbGFzc0ljb25MZWZ0PzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRDb25maWdIb3ZlckRhbmdlcj86IChpdGVtOiBhbnkpID0+IGJvb2xlYW47XG4gIGdldFBvcG92ZXI/OiAoaXRlbTogYW55KSA9PiBJUG9wb3ZlciB8IHVuZGVmaW5lZDtcbiAgcm93cz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHRSb3c+Pj47XG4gIGNsYXNzUm93c1dyYXBwZXI/OiBzdHJpbmc7XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgY29uZmlnTGFiZWxQb3BvdmVyPzogV3JpdGFibGVTaWduYWw8SVBvcG92ZXJPdmVybGF5PjtcbiAgYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaXRlbVNvcnQ/OiBXcml0YWJsZVNpZ25hbDxJU29ydD47IC8vIGJp4bq/biBsxrB1IHRy4buvIGl0ZW0gc29ydFxuICBhY3Rpb25Tb3J0PzogKGl0ZW1Tb3J0OiBJU29ydCkgPT4gdm9pZDsgLy8gc2V0IGjDoG0gbsOgeSBu4bq/dSBtdeG7kW4gYuG6rXQgc29ydCB0csOqbiBsaXN0XG4gIG5vdFVzZVZpcnR1YWxTY3JvbGw/OiBib29sZWFuOyAvLyBz4butIGThu6VuZyBjaG8gdHLGsOG7nW5nIGjhu6NwIGNvbmZpZyBiYWRnZSB0cm9uZyB0YWJsZVxuICBnZXRBdmF0YXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBJQXZhdGFyQ29uZmlnO1xuICBnZXRDb25maWdBbGlnblN0YXJ0PzogKGl0ZW06IGFueSkgPT4gYm9vbGVhbjtcbiAgc3R5bGVQYWRkaW5nUmlnaHRJdGVtT3RoZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbVRhZyBleHRlbmRzIElMaXN0Q29uZmlnSXRlbVRleHQge1xuICBmaWVsZEtleTogc3RyaW5nO1xuICBpZ25vcmVJdGVtRmxleFdyYXA/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVDb250YWluZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb25maWdJdGVtUmFkaW8ge1xuICBmaWVsZEtleTogc3RyaW5nO1xuICBmaWVsZEdldEltYWdlPzogc3RyaW5nO1xuICBjbGFzc0luY2x1ZGVJbWFnZT86IHN0cmluZztcbiAgaGFzQXZhdGFyUGFnZXNTb2NpYWw/OiBib29sZWFuO1xuICBoYXNBdmF0YXJHcm91cFNvY2lhbD86IGJvb2xlYW47XG4gIGdldFZhbHVlPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRQb3BvdmVyPzogKGl0ZW06IGFueSkgPT4gSVBvcG92ZXIgfCB1bmRlZmluZWQ7XG4gIHJvd3M/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0Um93Pj4+O1xuICBjbGFzc1Jvd3M/OiBzdHJpbmc7XG4gIGF1dG9TY3JvbGxUb0l0ZW1TZWxlY3RlZD86IGJvb2xlYW47XG4gIHpJbmRleFBvcG92ZXI/OiBudW1iZXI7XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG4gIGdldENsYXNzSXRlbT86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgY2xhc3NJdGVtSW5jbHVkZT86IHN0cmluZztcbiAgZ2V0SW1hZ2U/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZUVycm9yPzogKGRhdGE6IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCB7XG4gIGF1dG9TZWxlY3RBbGxJdGVtPzogYm9vbGVhbjsgLy8gZHJvcGRvd24gbuG6v3UgbmjGsCBjw7MgZOG7ryBsaeG7h3UgbcOgIGNoxrBhIGPDsyBtdWx0aUtleVNlbGVjdGVkIHRow6wgc+G6vSB04buxIMSR4buZbmcgY2jhu41uIHBo4bqnbiB04burIMSR4bqndSB0acOqbjtcbiAgY2xhc3NMaXN0SW5jbHVkZT86IHN0cmluZztcbiAgaHR0cFJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3Q/OiBXcml0YWJsZVNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+O1xuICBjb25maWdCdXR0b25TZWxlY3RBbmRVbmRTZWxlY3RJdGVtPzogV3JpdGFibGVTaWduYWw8e1xuICAgIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgICBidXR0b25DaGVja0FsbD86IElCdXR0b247XG4gICAgYnV0dG9uVW5jaGVja0FsbD86IElCdXR0b247XG4gIH0+O1xuICBjb25maWdDaGVja2JveENoZWNrQWxsPzogV3JpdGFibGVTaWduYWw8SUNoZWNrYm94SXRlbT47XG4gIGNsYXNzSW5jbHVkZUhhc0NvbmZpZ0NoZWNrQm94QWxsPzogc3RyaW5nO1xuICBmaWVsZEtleTogc3RyaW5nO1xuICBnZXRWYWx1ZT86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0UG9wb3Zlcj86IChpdGVtOiBhbnkpID0+IElQb3BvdmVyO1xuICBnZXRDbGFzc0l0ZW0/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldEltYWdlPzogKGRhdGE6IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2VFcnJvcj86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGZpZWxkR2V0SW1hZ2U/OiBzdHJpbmc7XG4gIGhhc0F2YXRhclBhZ2VzU29jaWFsPzogYm9vbGVhbjtcbiAgaGFzQXZhdGFyR3JvdXBTb2NpYWw/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVJbWFnZT86IHN0cmluZztcbiAgcm93cz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHRSb3c+Pj47XG4gIGNsYXNzUm93c1dyYXBwZXI/OiBzdHJpbmc7XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgaWdub3JlQ2xpY2tJdGVtVW5DaGVja2VkPzogYm9vbGVhbjtcbiAgY2xhc3NMYWJlbEluY2x1ZGU/OiBzdHJpbmc7XG4gIGZpZWxkR2V0TGlua0ltYWdlRXJyb3I/OiBzdHJpbmc7XG4gIHpJbmRleFBvcG92ZXI/OiBudW1iZXI7XG4gIGNsYXNzSXRlbUluY2x1ZGU/OiBzdHJpbmc7XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG4gIGNsYXNzQ2hlY2tib3hJdGVtSW5jbHVkZT86IHN0cmluZztcbiAgaWdub3JlSXRlbVdpZHRoMTAwPzogYm9vbGVhbjtcbiAgY2xhc3NJbmNsdWRlTGFzdFZpZXdJdGVtPzogc3RyaW5nO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb25maWdJdGVtVGV4dFJvdyB7XG4gIGNsYXNzUm93Pzogc3RyaW5nO1xuICBjbGFzc0l0ZW1TZWxlY3RlZD86IHN0cmluZztcbiAgZ2V0VmFsdWU/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBjbGFzc0dldFZhbHVlPzogc3RyaW5nO1xuICBjbGFzc0NvbHM/OiBzdHJpbmc7XG4gIGNvbHM/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sPj4+O1xuICBnZXRSb3dTdHlsZXNEeW5hbWljQ29scz86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgYWN0aW9uPzogKGl0ZW06IGFueSkgPT4gdm9pZDtcbiAgZ2V0SW1hZ2U/OiAoaXRlbTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDbGFzc0ltYWdlPzogKGl0ZW06IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2VFcnJvcj86IChpdGVtOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldFBvcG92ZXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPElQb3BvdmVyT3ZlcmxheT47XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZyB7XG4gIHZhbHVlPzogYW55O1xuICBpdGVtPzogYW55O1xuICBvdGhlckRhdGE/OiBhbnk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbVRleHRDb2wge1xuICBnZXRDbGFzc0NvbD86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZ2V0VmFsdWU/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRQb3BvdmVyPzogKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gSVBvcG92ZXIgfCB1bmRlZmluZWQ7XG4gIGFjdGlvbj86IChpdGVtOiBhbnkpID0+IHZvaWQ7XG4gIGdldEltYWdlPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDbGFzc0ltYWdlPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZUVycm9yPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDb25maWdCYWRnZT86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IElCYWRnZSB8IHVuZGVmaW5lZDtcbiAgZ2V0U3R5bGVzRHluYW1pY0NvbD86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldEJ1dHRvbj86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IElCdXR0b24gfCB1bmRlZmluZWQ7XG4gIGdldExhYmVsU3dpdGNoPzogKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gSUxhYmVsIHwgdW5kZWZpbmVkO1xuICBnZXRBdmF0YXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBJQXZhdGFyQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbUdyb3VwIHtcbiAgZmxhdEl0ZW1zU3VwcG9ydEF1dG9TZWxlY3Q/OiAoZGF0YTogQXJyYXk8YW55PikgPT4gQXJyYXk8YW55PjsgLy8gc+G7rSBk4bulbmcga2hpIG114buRbiBt4bq3YyDEkeG7i25oIHNlbGVjdGVkIHThuqV0IGPhuqMgY8OhYyBrZXkgdHJvbmcgZ3JvdXBcbiAgZmllbGRLZXk/OiBzdHJpbmc7XG4gIGlzVmlld1JhZGlvPzogYm9vbGVhbjtcbiAgdGltZUludGVydmFsQ2FsY3VsYXRvckhlaWdodD86IG51bWJlcjsgLy8gdHLGsMahzIBuZyBoxqHMo3AgdHJvbmcgcGFnZSBuaGnDqsyAdSBsaXN0IHRoYW0gc8O0zIEgbmHMgHkgc2XMgyB0aGF5IMSRw7TMiWkgdHXMgHkgdMawzIBuZyB0csawxqHMgG5nIGjGocyjcFxuICBjb25maWdCdXR0b25TZWxlY3RBbmRVbmRTZWxlY3RJdGVtPzogV3JpdGFibGVTaWduYWw8e1xuICAgIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgICBidXR0b25DaGVja0FsbD86IElCdXR0b247XG4gICAgYnV0dG9uVW5jaGVja0FsbD86IElCdXR0b247XG4gIH0+O1xuICBjb25maWdDaGVja2JveENoZWNrQWxsPzogV3JpdGFibGVTaWduYWw8SUNoZWNrYm94SXRlbT47XG4gIGNsYXNzSW5jbHVkZUhhc0NvbmZpZ0NoZWNrQm94QWxsPzogc3RyaW5nO1xuICBnZXRMYWJlbFNlYXJjaD86IChpdGVtOiBhbnkpID0+IHN0cmluZzsgLy8gRMO5bmcgxJHhu4MgIGN1c3RvbXMga2hpIHNlYXJjaCBraMO0bmcgY2jhu4kgZmllbGQgbGFiZWw6IHbDrSBk4bulOiBzZWFyY2ggY+G6oyBjb2RlIHbDoCBuYW1lIG5oxrBuZyBjaOG7iSBoaeG7g24gdGjhu4sgbmFtZVxuICBnZXRMYWJlbEdyb3VwOiAoZ3JvdXA6IGFueSkgPT4gc3RyaW5nO1xuICBnZXRFeHBhbmRHcm91cD86IChncm91cDogYW55KSA9PiBib29sZWFuO1xuICBnZXRQb3BvdmVyR3JvdXA/OiAoZ3JvdXA6IGFueSkgPT4gc3RyaW5nO1xuICBnZXRNYXhMZXZlbEdyb3VwOiAoZ3JvdXA6IGFueSkgPT4gbnVtYmVyO1xuICBnZXREZXNjcmlwdGlvbkdyb3VwV2hlbk5vRGF0YT86IChncm91cDogYW55KSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGdldEJ1dHRvbkdyb3VwPzogKGdyb3VwOiBhbnkpID0+IElCdXR0b247XG4gIGdldEljb25FbXB0eURhdGFJbkdyb3VwPzogKGdyb3VwOiBhbnkpID0+IGJvb2xlYW47IC8vIGhp4buDbiB0aOG7iyBpbWFnZSBlbXB0eSB0cm9uZyB04burbmcgZ3JvdXBcbiAgaWdub3JlQ2hlY2tib3hHcm91cD86IGJvb2xlYW47XG4gIGNsYXNzSW5jbHVkZU5vZGF0YT86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlR3JvdXA/OiBzdHJpbmc7XG4gIGlnbm9yZVJhZGlvR3JvdXA/OiBib29sZWFuO1xuICBpZ25vcmVUZXh0VXBwZXJjYXNlTGFiZWxHcm91cD86IGJvb2xlYW47XG4gIGlnbm9yZUdyb3VwTGluZT86IGJvb2xlYW47XG4gIG1hcmdpblRvcEhhc0xpbmU/OiBudW1iZXI7XG4gIGlnbm9yZUNsaWNrTGFiZWxHcm91cD86IGJvb2xlYW47XG5cbiAgZmllbGRHZXRJdGVtczogc3RyaW5nO1xuICBmaWVsZEdldEF2YXRhckl0ZW0/OiBzdHJpbmc7XG4gIGltZ1R5cGVJY29uPzogYm9vbGVhbjtcbiAgY2xhc3NJbWFnZUluY2x1ZGU/OiBzdHJpbmc7XG4gIGlzVmlld1RyZWU/OiBib29sZWFuO1xuICBpc1ZpZXdUcmVlSnNvbj86IGJvb2xlYW47XG4gIGdldExhYmVsSXRlbTogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRQb3BvdmVySXRlbT86IChpdGVtOiBhbnkpID0+IElQb3BvdmVyIHwgdW5kZWZpbmVkO1xuICBhY3Rpb25Qb3BvdmVyQnlJdGVtPzogKGl0ZW06IGFueSwgZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCkgPT4gdm9pZDtcbiAgZ2V0RXhwYW5kSXRlbT86IChncm91cDogYW55KSA9PiBib29sZWFuO1xuICBnZXRCb251c1BhZGRpbmdMZWZ0SXRlbT86IChpdGVtOiBhbnksIHBhcmVudEl0ZW0/OiBhbnkpID0+IG51bWJlcjtcbiAgZ2V0Q2xhc3NJbmNsdWRlSXRlbU5vRGF0YT86IChpdGVtOiBhbnksIHBhcmVudEl0ZW0/OiBhbnkpID0+IHN0cmluZztcbiAgaWdub3JlQ2hlY2tib3hJdGVtPzogYm9vbGVhbjtcbiAgaWdub3JlUmFkaW9JdGVtPzogYm9vbGVhbjtcbiAgbm90Q2hhbmdlU3RhdGVJdGVtQ2hlY2tPdGhlcj86IGJvb2xlYW47IC8vIHPhu60gZOG7pW5nIGNobyB0csaw4budbmcgaOG7o3AgZGFuaCBt4bulYyBz4bqjbiBwaOG6qW0ga2hpIGLhu48gY2jhu41uIDEgbm9kZSB0aMOsIGPDoWMgbm9kZSBjaGEgdsOgIGNvbiBraMO0bmcg4bqjbmggaMaw4bufbmdcbiAgc2VhcmNoQWxsTGV2ZWw/OiBib29sZWFuOyAvLyBu4bq/dSBi4bqtdCBzZWFyY2ggYWxsIGxldmVsIHRow6wga2hpIHTDrG0gdOG6pXQgY+G6oyBjw6FjIGdyb3VwIGtow7RuZyBwaMO5IGjhu6NwIHbhu5tpIGtleSBzZWFyY2ggc+G6vSBi4buLIOG6qW4sIGtvIHBow6JuIGJp4buHdCBj4bqlcCBi4bqtY1xuICBlbWl0QWxsSXRlbUNoZWNrZWQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZGFuaCBt4bulYyBz4bqjbiBwaOG6qW1cbiAgc2luZ2xlU2VsZWN0SXRlbT86IGJvb2xlYW47IC8vIHPhu60gZOG7pW5nIGtoaSBjaOG7iSBtdeG7kW4gY2jhu41uIG5vZGUg4bufIGxldmVsIGN14buRaSBjw7luZ1xuICBzaW5nbGVTZWxlY3RJdGVtQnlUcmVlPzogYm9vbGVhbjsgLy90aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgaGFzSWNvbkNoZWNrU2luZ2xlU2VsZWN0SXRlbT86IGJvb2xlYW47XG4gIGNvbG9yQmx1ZVdoZW5JdGVtU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBoYXNCYWNrZ3JvdW5kQ29sb3JXaGVuSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaWNvbkV4cGFuZDogJycgfCAnbGVmdCcgfCAncmlnaHQnO1xuICBpZ25vcmVJY29uRXhwYW5kTWFyZ2luUmlnaHQ/OiBib29sZWFuO1xuICBvbmx5U2VsZWN0Rmlyc3RJdGVtPzogYm9vbGVhbjtcbiAgaWdub3JlQ2hvb3NlUGFyZW50VGhlbkF1dG9DaG9vc2VDaGlsZHJlbj86IGJvb2xlYW47IC8vIHRoYW0ga2jhuqNvIHRyxrDhu51uZyBo4bujcCBkw7JuZyBz4bqjbiBwaOG6qW0gY+G7p2EgYmFua1xuICBjaG9vc2VDaGlsZFRoZW5BdXRvQ2hvb3NlUGFyZW50PzogYm9vbGVhbjsgLy8gdGhhbSBraOG6o28gdHLGsOG7nW5nIGjhu6NwIGTDsm5nIHPhuqNuIHBo4bqpbSBj4bunYSBiYW5rXG4gIGlnbm9yZVVuc2VsZWN0Q2hpbGRyZW5SZW1vdmVTZWxlY3RQYXJlbnQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgaWdub3JlRW1pdEFsbEl0ZW1DaGVja2VkV2hlbkNob29zZUNoaWxkVGhlbkF1dG9DaG9vc2VQYXJlbnQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgZGlzYWJsZUl0ZW1Ob3RMYXN0TGV2ZWw/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgY2xhc3NMYWJlbEl0ZW0/OiBzdHJpbmdcbiAgYWxsb3dEaXNhYmxlTGFiZWw/OiBib29sZWFuO1xuICB6SW5kZXhMYWJlbD86IG51bWJlcjtcbiAgZXhwYW5kRmlyc3RJdGVtPzogYm9vbGVhbjtcbiAgd2lkdGhMYWJlbFN1YjI0V2hlbk5vdFRyZWVWaWV3PzogYm9vbGVhbjsgLy8gd2lkdGggbGFiZWwgaXRlbSB0cuG7qyAyNHB4IGtoaSBraMO0bmcgcGjhuqNpIGThuqFuZyB0cmVldmlldyxcbiAgY2xhc3NJbmNsdWRlSXRlbT86IHN0cmluZztcbiAgZ2V0Q2xhc3NJbmNsdWRlSXRlbUNvbnRlbnQ/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7IC8vIHRydXnhu4FuIGNsYXNzIGNobyBpdGVtXG4gIGdldExpbmtJbWFnZUVycm9yPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZT86IChpdGVtOiBhbnkpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0QXZhdGFyQ29uZmlnPzogKGl0ZW06IGFueSkgPT4gSUF2YXRhckNvbmZpZztcbiAgZ2V0SWNvbkltYWdlQ2xhc3M/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUxhc3RJdGVtPzogc3RyaW5nO1xuICBhdXRvQ291bnRXaGVuR3JvdXBFbXB0eUl0ZW1MZXZlbDE/OiBib29sZWFuOyAvLyBUcsaw4budbmcgaOG7o3AgY2jhu4kgY8OzIDEgZ3JvdXAgaXRlbSB2w6Agc3ViX2l0ZW0gZW1wdHksIHNldCA9IHRydWUgdMSDbmcgY2hp4buBdSBjYW8gcG9wdXAgxJHhu4MgbmjDrG4gdGjhuqV5IGVtcHR5IHRleHQgKFRoYW0ga2jhuqNvIGRyb3Bkb3duIGNo4buNbiBsb+G6oWkgc+G6o24gcGjhuqltIGJhbmsga2hpIGfhuq9uIGTDsm5nLyBsb+G6oWkgc+G6o24gcGjhuqltKVxuICBpZ25vcmVDaGFuZ2VDaGlsZHJlbkRpc2FibGVXaGVuQ2hhbmdlUGFyZW50PzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdEZXNjcmlwdGlvbkdyb3VwIHtcbiAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICB0b29sdGlwRGVzY3JpcHRpb24/OiBXcml0YWJsZVNpZ25hbDxJUG9wb3Zlck92ZXJsYXk+O1xuICB0ZXh0RGVzY3JpcHRpb246IHN0cmluZztcbiAgY2xhc3NUZXh0RGVzY3JpcHRpb25JbmNsdWRlPzogc3RyaW5nO1xufVxuIl19
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWl0ZW0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFKQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSUF2YXRhckNvbmZpZyB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWF2YXRhclwiO1xuaW1wb3J0IHsgSUJhZGdlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYmFkZ2VcIjtcbmltcG9ydCB7IElCdXR0b24gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblwiO1xuaW1wb3J0IHsgSVNvcnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLXNvcnRcIjtcbmltcG9ydCB7IElDaGVja2JveEl0ZW0gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1jaGVja2JveC1ncm91cFwiO1xuaW1wb3J0IHsgSUxhYmVsIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtbGFiZWxcIjtcbmltcG9ydCB7IElQb3BvdmVyLCBJUG9wb3Zlck92ZXJsYXksIFRZUEVfUE9QT1ZFUl9FVkVOVCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcbmltcG9ydCB7IElIdHRwUmVxdWVzdENvbmZpZyB9IGZyb20gXCJAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3RcIjtcbmltcG9ydCB7IFRZUEVfVEVNUExBVEUgfSBmcm9tIFwiLi90ZW1wbGF0ZXMtdHlwZS50eXBlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW0ge1xuICB0eXBlOiBUWVBFX1RFTVBMQVRFO1xuICBodHRwUmVxdWVzdERhdGE/OiBXcml0YWJsZVNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+O1xuICBjb25maWdUZW1wbGF0ZVRleHQ/OiBXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0PjtcbiAgY29uZmlnVGVtcGxhdGVSYWRpbz86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVJhZGlvPjtcbiAgY29uZmlnVGVtcGxhdGVDaGVja2JveD86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbUNoZWNrYm94PjtcbiAgY29uZmlnVGVtcGxhdGVHcm91cD86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbUdyb3VwPjtcbiAgY29uZmlnVGVtcGxhdGVUYWc/OiBXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UYWc+O1xuICBjb25maWdEZXNjcmlwdGlvbkdyb3VwPzogV3JpdGFibGVTaWduYWw8SUNvbmZpZ0Rlc2NyaXB0aW9uR3JvdXA+O1xuICB0ZXh0Tm9EYXRhPzogc3RyaW5nO1xuICB0ZXh0Tm9EYXRhQ2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICB0ZXh0U2VhcmNoTm9EYXRhPzogc3RyaW5nO1xuICBhdXRvU2VsZWN0Rmlyc3RJdGVtPzogYm9vbGVhbjsgLy8gbuG6v3UgbmjGsCBjw7MgZOG7ryBsaeG7h3UgbcOgIGNoxrBhIGPDsyBrZXlTZWxlY3RlZCB0aMOsIHPhur0gdOG7sSDEkeG7mW5nIGNo4buNbiBwaOG6p24gdOG7qyDEkeG6p3UgdGnDqm47XG4gIGJhY2tncm91bmRMaXN0Q3VzdG9tPzogc3RyaW5nO1xuICBwYWRkaW5nTGVmdEl0ZW0/OiBib29sZWFuO1xuICBzb3J0PzogKGl0ZW1zOiBBcnJheTxhbnk+KSA9PiB2b2lkO1xuICBoYXNJY29uTm9EYXRhPzogYm9vbGVhbjtcbiAgaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaWdub3JlRml4SGVpZ2h0U2hvd0RhdGFXaGVuTm90U2VhcmNoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaGlnaGxpZ2h0VGV4dFNlYXJjaEluUmVzdWx0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaGVpZ2h0SXRlbT86IG51bWJlcjtcbiAgbWluSGVpZ2h0SXRlbT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1UZXh0IHtcbiAgZmllbGRLZXk6IHN0cmluZztcbiAgZ2V0VmFsdWU/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGZpZWxkR2V0SW1hZ2U/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUltYWdlPzogc3RyaW5nO1xuICBnZXRJbWFnZT86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldEltYWdlRXJyb3I/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpbWdUeXBlSWNvbj86IGJvb2xlYW47XG4gIGlnbm9yZUljb25TZWxlY3RlZD86IGJvb2xlYW47XG4gIGNsYXNzSW5jbHVkZUljb25TZWxlY3RlZD86IHN0cmluZztcbiAgaWdub3JlU2hvd0ZpZWxkTGFiZWw/OiBib29sZWFuO1xuICBnZXRIcmVmQnV0dG9uPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRDbGFzc0l0ZW0/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldENsYXNzSW5jbHVkZVBvcG92ZXI/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldENvbmZpZ0J1dHRvbkxlZnQ/OiAoaXRlbTogYW55KSA9PiBJQnV0dG9uO1xuICBnZXRDbGFzc0ljb25MZWZ0PzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRDb25maWdIb3ZlckRhbmdlcj86IChpdGVtOiBhbnkpID0+IGJvb2xlYW47XG4gIGdldFBvcG92ZXI/OiAoaXRlbTogYW55KSA9PiBJUG9wb3ZlciB8IHVuZGVmaW5lZDtcbiAgcm93cz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHRSb3c+Pj47XG4gIGNsYXNzUm93c1dyYXBwZXI/OiBzdHJpbmc7XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgY29uZmlnTGFiZWxQb3BvdmVyPzogV3JpdGFibGVTaWduYWw8SVBvcG92ZXJPdmVybGF5PjtcbiAgYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaXRlbVNvcnQ/OiBXcml0YWJsZVNpZ25hbDxJU29ydD47IC8vIGJp4bq/biBsxrB1IHRy4buvIGl0ZW0gc29ydFxuICBhY3Rpb25Tb3J0PzogKGl0ZW1Tb3J0OiBJU29ydCkgPT4gdm9pZDsgLy8gc2V0IGjDoG0gbsOgeSBu4bq/dSBtdeG7kW4gYuG6rXQgc29ydCB0csOqbiBsaXN0XG4gIG5vdFVzZVZpcnR1YWxTY3JvbGw/OiBib29sZWFuOyAvLyBz4butIGThu6VuZyBjaG8gdHLGsOG7nW5nIGjhu6NwIGNvbmZpZyBiYWRnZSB0cm9uZyB0YWJsZVxuICBnZXRBdmF0YXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBJQXZhdGFyQ29uZmlnO1xuICBnZXRDb25maWdBbGlnblN0YXJ0PzogKGl0ZW06IGFueSkgPT4gYm9vbGVhbjtcbiAgc3R5bGVQYWRkaW5nUmlnaHRJdGVtT3RoZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbVRhZyBleHRlbmRzIElMaXN0Q29uZmlnSXRlbVRleHQge1xuICBmaWVsZEtleTogc3RyaW5nO1xuICBpZ25vcmVJdGVtRmxleFdyYXA/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVDb250YWluZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb25maWdJdGVtUmFkaW8ge1xuICBmaWVsZEtleTogc3RyaW5nO1xuICBmaWVsZEdldEltYWdlPzogc3RyaW5nO1xuICBjbGFzc0luY2x1ZGVJbWFnZT86IHN0cmluZztcbiAgaGFzQXZhdGFyUGFnZXNTb2NpYWw/OiBib29sZWFuO1xuICBoYXNBdmF0YXJHcm91cFNvY2lhbD86IGJvb2xlYW47XG4gIGdldFZhbHVlPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRQb3BvdmVyPzogKGl0ZW06IGFueSkgPT4gSVBvcG92ZXIgfCB1bmRlZmluZWQ7XG4gIHJvd3M/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0Um93Pj4+O1xuICBjbGFzc1Jvd3M/OiBzdHJpbmc7XG4gIGF1dG9TY3JvbGxUb0l0ZW1TZWxlY3RlZD86IGJvb2xlYW47XG4gIHpJbmRleFBvcG92ZXI/OiBudW1iZXI7XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG4gIGdldENsYXNzSXRlbT86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgY2xhc3NJdGVtSW5jbHVkZT86IHN0cmluZztcbiAgZ2V0SW1hZ2U/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZUVycm9yPzogKGRhdGE6IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCB7XG4gIGF1dG9TZWxlY3RBbGxJdGVtPzogYm9vbGVhbjsgLy8gZHJvcGRvd24gbuG6v3UgbmjGsCBjw7MgZOG7ryBsaeG7h3UgbcOgIGNoxrBhIGPDsyBtdWx0aUtleVNlbGVjdGVkIHRow6wgc+G6vSB04buxIMSR4buZbmcgY2jhu41uIHBo4bqnbiB04burIMSR4bqndSB0acOqbjtcbiAgY2xhc3NMaXN0SW5jbHVkZT86IHN0cmluZztcbiAgaHR0cFJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3Q/OiBXcml0YWJsZVNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+O1xuICBjb25maWdCdXR0b25TZWxlY3RBbmRVbmRTZWxlY3RJdGVtPzogV3JpdGFibGVTaWduYWw8e1xuICAgIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgICBidXR0b25DaGVja0FsbD86IElCdXR0b247XG4gICAgYnV0dG9uVW5jaGVja0FsbD86IElCdXR0b247XG4gIH0+O1xuICBjb25maWdDaGVja2JveENoZWNrQWxsPzogV3JpdGFibGVTaWduYWw8SUNoZWNrYm94SXRlbT47XG4gIGNsYXNzSW5jbHVkZUhhc0NvbmZpZ0NoZWNrQm94QWxsPzogc3RyaW5nO1xuICBmaWVsZEtleTogc3RyaW5nO1xuICBnZXRWYWx1ZT86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0UG9wb3Zlcj86IChpdGVtOiBhbnkpID0+IElQb3BvdmVyO1xuICBnZXRDbGFzc0l0ZW0/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldEltYWdlPzogKGRhdGE6IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2VFcnJvcj86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGZpZWxkR2V0SW1hZ2U/OiBzdHJpbmc7XG4gIGhhc0F2YXRhclBhZ2VzU29jaWFsPzogYm9vbGVhbjtcbiAgaGFzQXZhdGFyR3JvdXBTb2NpYWw/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVJbWFnZT86IHN0cmluZztcbiAgcm93cz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHRSb3c+Pj47XG4gIGNsYXNzUm93c1dyYXBwZXI/OiBzdHJpbmc7XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgaWdub3JlQ2xpY2tJdGVtVW5DaGVja2VkPzogYm9vbGVhbjtcbiAgY2xhc3NMYWJlbEluY2x1ZGU/OiBzdHJpbmc7XG4gIGZpZWxkR2V0TGlua0ltYWdlRXJyb3I/OiBzdHJpbmc7XG4gIHpJbmRleFBvcG92ZXI/OiBudW1iZXI7XG4gIGNsYXNzSXRlbUluY2x1ZGU/OiBzdHJpbmc7XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG4gIGNsYXNzQ2hlY2tib3hJdGVtSW5jbHVkZT86IHN0cmluZztcbiAgaWdub3JlSXRlbVdpZHRoMTAwPzogYm9vbGVhbjtcbiAgY2xhc3NJbmNsdWRlTGFzdFZpZXdJdGVtPzogc3RyaW5nO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb25maWdJdGVtVGV4dFJvdyB7XG4gIGNsYXNzUm93Pzogc3RyaW5nO1xuICBjbGFzc0l0ZW1TZWxlY3RlZD86IHN0cmluZztcbiAgZ2V0VmFsdWU/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBjbGFzc0dldFZhbHVlPzogc3RyaW5nO1xuICBjbGFzc0NvbHM/OiBzdHJpbmc7XG4gIGNvbHM/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sPj4+O1xuICBnZXRSb3dTdHlsZXNEeW5hbWljQ29scz86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgYWN0aW9uPzogKGl0ZW06IGFueSkgPT4gdm9pZDtcbiAgZ2V0SW1hZ2U/OiAoaXRlbTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDbGFzc0ltYWdlPzogKGl0ZW06IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2VFcnJvcj86IChpdGVtOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldFBvcG92ZXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPElQb3BvdmVyT3ZlcmxheT47XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZyB7XG4gIHZhbHVlPzogYW55O1xuICBpdGVtPzogYW55O1xuICBvdGhlckRhdGE/OiBhbnk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbVRleHRDb2wge1xuICBnZXRDbGFzc0NvbD86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZ2V0VmFsdWU/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRQb3BvdmVyPzogKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gSVBvcG92ZXIgfCB1bmRlZmluZWQ7XG4gIGFjdGlvbj86IChpdGVtOiBhbnkpID0+IHZvaWQ7XG4gIGdldEltYWdlPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDbGFzc0ltYWdlPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZUVycm9yPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDb25maWdCYWRnZT86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IElCYWRnZSB8IHVuZGVmaW5lZDtcbiAgZ2V0U3R5bGVzRHluYW1pY0NvbD86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldEJ1dHRvbj86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IElCdXR0b24gfCB1bmRlZmluZWQ7XG4gIGdldExhYmVsU3dpdGNoPzogKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gSUxhYmVsIHwgdW5kZWZpbmVkO1xuICBnZXRBdmF0YXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBJQXZhdGFyQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbUdyb3VwIHtcbiAgZmxhdEl0ZW1zU3VwcG9ydEF1dG9TZWxlY3Q/OiAoZGF0YTogQXJyYXk8YW55PikgPT4gQXJyYXk8YW55PjsgLy8gc+G7rSBk4bulbmcga2hpIG114buRbiBt4bq3YyDEkeG7i25oIHNlbGVjdGVkIHThuqV0IGPhuqMgY8OhYyBrZXkgdHJvbmcgZ3JvdXBcbiAgZmllbGRLZXk/OiBzdHJpbmc7XG4gIGlzVmlld1JhZGlvPzogYm9vbGVhbjtcbiAgdGltZUludGVydmFsQ2FsY3VsYXRvckhlaWdodD86IG51bWJlcjsgLy8gdHLGsMahzIBuZyBoxqHMo3AgdHJvbmcgcGFnZSBuaGnDqsyAdSBsaXN0IHRoYW0gc8O0zIEgbmHMgHkgc2XMgyB0aGF5IMSRw7TMiWkgdHXMgHkgdMawzIBuZyB0csawxqHMgG5nIGjGocyjcFxuICBjb25maWdCdXR0b25TZWxlY3RBbmRVbmRTZWxlY3RJdGVtPzogV3JpdGFibGVTaWduYWw8e1xuICAgIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgICBidXR0b25DaGVja0FsbD86IElCdXR0b247XG4gICAgYnV0dG9uVW5jaGVja0FsbD86IElCdXR0b247XG4gIH0+O1xuICBjb25maWdDaGVja2JveENoZWNrQWxsPzogV3JpdGFibGVTaWduYWw8SUNoZWNrYm94SXRlbT47XG4gIGNsYXNzSW5jbHVkZUhhc0NvbmZpZ0NoZWNrQm94QWxsPzogc3RyaW5nO1xuICBnZXRMYWJlbFNlYXJjaD86IChpdGVtOiBhbnkpID0+IHN0cmluZzsgLy8gRMO5bmcgxJHhu4MgIGN1c3RvbXMga2hpIHNlYXJjaCBraMO0bmcgY2jhu4kgZmllbGQgbGFiZWw6IHbDrSBk4bulOiBzZWFyY2ggY+G6oyBjb2RlIHbDoCBuYW1lIG5oxrBuZyBjaOG7iSBoaeG7g24gdGjhu4sgbmFtZVxuICBnZXRMYWJlbEdyb3VwOiAoZ3JvdXA6IGFueSkgPT4gc3RyaW5nO1xuICBnZXRFeHBhbmRHcm91cD86IChncm91cDogYW55KSA9PiBib29sZWFuO1xuICBnZXRQb3BvdmVyR3JvdXA/OiAoZ3JvdXA6IGFueSkgPT4gc3RyaW5nO1xuICBnZXRNYXhMZXZlbEdyb3VwOiAoZ3JvdXA6IGFueSkgPT4gbnVtYmVyO1xuICBnZXREZXNjcmlwdGlvbkdyb3VwV2hlbk5vRGF0YT86IChncm91cDogYW55KSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGdldEJ1dHRvbkdyb3VwPzogKGdyb3VwOiBhbnkpID0+IElCdXR0b247XG4gIGdldEljb25FbXB0eURhdGFJbkdyb3VwPzogKGdyb3VwOiBhbnkpID0+IGJvb2xlYW47IC8vIGhp4buDbiB0aOG7iyBpbWFnZSBlbXB0eSB0cm9uZyB04burbmcgZ3JvdXBcbiAgaWdub3JlQ2hlY2tib3hHcm91cD86IGJvb2xlYW47XG4gIGNsYXNzSW5jbHVkZU5vZGF0YT86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlR3JvdXA/OiBzdHJpbmc7XG4gIGlnbm9yZVJhZGlvR3JvdXA/OiBib29sZWFuO1xuICBpZ25vcmVUZXh0VXBwZXJjYXNlTGFiZWxHcm91cD86IGJvb2xlYW47XG4gIGlnbm9yZUdyb3VwTGluZT86IGJvb2xlYW47XG4gIG1hcmdpblRvcEhhc0xpbmU/OiBudW1iZXI7XG4gIGlnbm9yZUNsaWNrTGFiZWxHcm91cD86IGJvb2xlYW47XG5cbiAgZmllbGRHZXRJdGVtczogc3RyaW5nO1xuICBmaWVsZEdldEF2YXRhckl0ZW0/OiBzdHJpbmc7XG4gIGltZ1R5cGVJY29uPzogYm9vbGVhbjtcbiAgY2xhc3NJbWFnZUluY2x1ZGU/OiBzdHJpbmc7XG4gIGlzVmlld1RyZWU/OiBib29sZWFuO1xuICBpc1ZpZXdUcmVlSnNvbj86IGJvb2xlYW47XG4gIGdldExhYmVsSXRlbTogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRQb3BvdmVySXRlbT86IChpdGVtOiBhbnkpID0+IElQb3BvdmVyIHwgdW5kZWZpbmVkO1xuICBhY3Rpb25Qb3BvdmVyQnlJdGVtPzogKGl0ZW06IGFueSwgZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCkgPT4gdm9pZDtcbiAgZ2V0RXhwYW5kSXRlbT86IChncm91cDogYW55KSA9PiBib29sZWFuO1xuICBnZXRCb251c1BhZGRpbmdMZWZ0SXRlbT86IChpdGVtOiBhbnksIHBhcmVudEl0ZW0/OiBhbnkpID0+IG51bWJlcjtcbiAgZ2V0Q2xhc3NJbmNsdWRlSXRlbU5vRGF0YT86IChpdGVtOiBhbnksIHBhcmVudEl0ZW0/OiBhbnkpID0+IHN0cmluZztcbiAgaWdub3JlQ2hlY2tib3hJdGVtPzogYm9vbGVhbjtcbiAgaWdub3JlUmFkaW9JdGVtPzogYm9vbGVhbjtcbiAgbm90Q2hhbmdlU3RhdGVJdGVtQ2hlY2tPdGhlcj86IGJvb2xlYW47IC8vIHPhu60gZOG7pW5nIGNobyB0csaw4budbmcgaOG7o3AgZGFuaCBt4bulYyBz4bqjbiBwaOG6qW0ga2hpIGLhu48gY2jhu41uIDEgbm9kZSB0aMOsIGPDoWMgbm9kZSBjaGEgdsOgIGNvbiBraMO0bmcg4bqjbmggaMaw4bufbmdcbiAgc2VhcmNoQWxsTGV2ZWw/OiBib29sZWFuOyAvLyBu4bq/dSBi4bqtdCBzZWFyY2ggYWxsIGxldmVsIHRow6wga2hpIHTDrG0gdOG6pXQgY+G6oyBjw6FjIGdyb3VwIGtow7RuZyBwaMO5IGjhu6NwIHbhu5tpIGtleSBzZWFyY2ggc+G6vSBi4buLIOG6qW4sIGtvIHBow6JuIGJp4buHdCBj4bqlcCBi4bqtY1xuICBlbWl0QWxsSXRlbUNoZWNrZWQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZGFuaCBt4bulYyBz4bqjbiBwaOG6qW1cbiAgc2luZ2xlU2VsZWN0SXRlbT86IGJvb2xlYW47IC8vIHPhu60gZOG7pW5nIGtoaSBjaOG7iSBtdeG7kW4gY2jhu41uIG5vZGUg4bufIGxldmVsIGN14buRaSBjw7luZ1xuICBzaW5nbGVTZWxlY3RJdGVtQnlUcmVlPzogYm9vbGVhbjsgLy90aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgaGFzSWNvbkNoZWNrU2luZ2xlU2VsZWN0SXRlbT86IGJvb2xlYW47XG4gIGNvbG9yQmx1ZVdoZW5JdGVtU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBoYXNCYWNrZ3JvdW5kQ29sb3JXaGVuSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaWNvbkV4cGFuZDogJycgfCAnbGVmdCcgfCAncmlnaHQnO1xuICBpZ25vcmVJY29uRXhwYW5kTWFyZ2luUmlnaHQ/OiBib29sZWFuO1xuICBvbmx5U2VsZWN0Rmlyc3RJdGVtPzogYm9vbGVhbjtcbiAgaWdub3JlQ2hvb3NlUGFyZW50VGhlbkF1dG9DaG9vc2VDaGlsZHJlbj86IGJvb2xlYW47IC8vIHRoYW0ga2jhuqNvIHRyxrDhu51uZyBo4bujcCBkw7JuZyBz4bqjbiBwaOG6qW0gY+G7p2EgYmFua1xuICBjaG9vc2VDaGlsZFRoZW5BdXRvQ2hvb3NlUGFyZW50PzogYm9vbGVhbjsgLy8gdGhhbSBraOG6o28gdHLGsOG7nW5nIGjhu6NwIGTDsm5nIHPhuqNuIHBo4bqpbSBj4bunYSBiYW5rXG4gIGlnbm9yZVVuc2VsZWN0Q2hpbGRyZW5SZW1vdmVTZWxlY3RQYXJlbnQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgaWdub3JlRW1pdEFsbEl0ZW1DaGVja2VkV2hlbkNob29zZUNoaWxkVGhlbkF1dG9DaG9vc2VQYXJlbnQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgZGlzYWJsZUl0ZW1Ob3RMYXN0TGV2ZWw/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgY2xhc3NMYWJlbEl0ZW0/OiBzdHJpbmdcbiAgYWxsb3dEaXNhYmxlTGFiZWw/OiBib29sZWFuO1xuICB6SW5kZXhMYWJlbD86IG51bWJlcjtcbiAgZXhwYW5kRmlyc3RJdGVtPzogYm9vbGVhbjtcbiAgd2lkdGhMYWJlbFN1YjI0V2hlbk5vdFRyZWVWaWV3PzogYm9vbGVhbjsgLy8gd2lkdGggbGFiZWwgaXRlbSB0cuG7qyAyNHB4IGtoaSBraMO0bmcgcGjhuqNpIGThuqFuZyB0cmVldmlldyxcbiAgY2xhc3NJbmNsdWRlSXRlbT86IHN0cmluZztcbiAgZ2V0Q2xhc3NJbmNsdWRlSXRlbUNvbnRlbnQ/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7IC8vIHRydXnhu4FuIGNsYXNzIGNobyBpdGVtXG4gIGdldExpbmtJbWFnZUVycm9yPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZT86IChpdGVtOiBhbnkpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0QXZhdGFyQ29uZmlnPzogKGl0ZW06IGFueSkgPT4gSUF2YXRhckNvbmZpZztcbiAgZ2V0SWNvbkltYWdlQ2xhc3M/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUxhc3RJdGVtPzogc3RyaW5nO1xuICBhdXRvQ291bnRXaGVuR3JvdXBFbXB0eUl0ZW1MZXZlbDE/OiBib29sZWFuOyAvLyBUcsaw4budbmcgaOG7o3AgY2jhu4kgY8OzIDEgZ3JvdXAgaXRlbSB2w6Agc3ViX2l0ZW0gZW1wdHksIHNldCA9IHRydWUgdMSDbmcgY2hp4buBdSBjYW8gcG9wdXAgxJHhu4MgbmjDrG4gdGjhuqV5IGVtcHR5IHRleHQgKFRoYW0ga2jhuqNvIGRyb3Bkb3duIGNo4buNbiBsb+G6oWkgc+G6o24gcGjhuqltIGJhbmsga2hpIGfhuq9uIGTDsm5nLyBsb+G6oWkgc+G6o24gcGjhuqltKVxuICBpZ25vcmVDaGFuZ2VDaGlsZHJlbkRpc2FibGVXaGVuQ2hhbmdlUGFyZW50PzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdEZXNjcmlwdGlvbkdyb3VwIHtcbiAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICB0b29sdGlwRGVzY3JpcHRpb24/OiBXcml0YWJsZVNpZ25hbDxJUG9wb3Zlck92ZXJsYXk+O1xuICB0ZXh0RGVzY3JpcHRpb246IHN0cmluZztcbiAgY2xhc3NUZXh0RGVzY3JpcHRpb25JbmNsdWRlPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -82,6 +82,7 @@ export class LibsUiComponentsListComponent {
|
|
|
82
82
|
outClickButtonOther = output();
|
|
83
83
|
outFieldKey = output();
|
|
84
84
|
outChangeView = output();
|
|
85
|
+
outKeySearch = output();
|
|
85
86
|
outLoading = output();
|
|
86
87
|
outFunctionsControl = output();
|
|
87
88
|
outChangStageFlagMousePopover = output();
|
|
@@ -246,6 +247,7 @@ export class LibsUiComponentsListComponent {
|
|
|
246
247
|
handlerSearch(keySearch) {
|
|
247
248
|
this.keySearchStore.set(keySearch);
|
|
248
249
|
this.onSearch.next(keySearch);
|
|
250
|
+
this.outKeySearch.emit(keySearch);
|
|
249
251
|
}
|
|
250
252
|
async handlerRemoveKeySelected() {
|
|
251
253
|
if (!this.componentRef) {
|
|
@@ -339,7 +341,7 @@ export class LibsUiComponentsListComponent {
|
|
|
339
341
|
this.onDestroy.complete();
|
|
340
342
|
}
|
|
341
343
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
342
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsListComponent, isStandalone: true, selector: "libs_ui-components-list", inputs: { hiddenInputSearch: { classPropertyName: "hiddenInputSearch", publicName: "hiddenInputSearch", isSignal: true, isRequired: false, transformFunction: null }, dropdownTabKeyActive: { classPropertyName: "dropdownTabKeyActive", publicName: "dropdownTabKeyActive", isSignal: true, isRequired: false, transformFunction: null }, keySearch: { classPropertyName: "keySearch", publicName: "keySearch", isSignal: true, isRequired: false, transformFunction: null }, itemChangeUnSelect: { classPropertyName: "itemChangeUnSelect", publicName: "itemChangeUnSelect", isSignal: true, isRequired: false, transformFunction: null }, paddingLeftItem: { classPropertyName: "paddingLeftItem", publicName: "paddingLeftItem", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, autoSelectedFirstItemCallOutsideBefore: { classPropertyName: "autoSelectedFirstItemCallOutsideBefore", publicName: "autoSelectedFirstItemCallOutsideBefore", isSignal: true, isRequired: false, transformFunction: null }, isSearchOnline: { classPropertyName: "isSearchOnline", publicName: "isSearchOnline", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, searchConfig: { classPropertyName: "searchConfig", publicName: "searchConfig", isSignal: true, isRequired: false, transformFunction: null }, searchPadding: { classPropertyName: "searchPadding", publicName: "searchPadding", isSignal: true, isRequired: false, transformFunction: null }, dividerClassInclude: { classPropertyName: "dividerClassInclude", publicName: "dividerClassInclude", isSignal: true, isRequired: false, transformFunction: null }, hasDivider: { classPropertyName: "hasDivider", publicName: "hasDivider", isSignal: true, isRequired: false, transformFunction: null }, buttonsOther: { classPropertyName: "buttonsOther", publicName: "buttonsOther", isSignal: true, isRequired: false, transformFunction: null }, hasButtonUnSelectOption: { classPropertyName: "hasButtonUnSelectOption", publicName: "hasButtonUnSelectOption", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, backgroundListCustom: { classPropertyName: "backgroundListCustom", publicName: "backgroundListCustom", isSignal: true, isRequired: false, transformFunction: null }, maxItemShow: { classPropertyName: "maxItemShow", publicName: "maxItemShow", isSignal: true, isRequired: false, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: false, transformFunction: null }, multiKeySelected: { classPropertyName: "multiKeySelected", publicName: "multiKeySelected", isSignal: true, isRequired: false, transformFunction: null }, keysDisableItem: { classPropertyName: "keysDisableItem", publicName: "keysDisableItem", isSignal: true, isRequired: false, transformFunction: null }, keysHiddenItem: { classPropertyName: "keysHiddenItem", publicName: "keysHiddenItem", isSignal: true, isRequired: false, transformFunction: null }, focusInputSearch: { classPropertyName: "focusInputSearch", publicName: "focusInputSearch", isSignal: true, isRequired: false, transformFunction: null }, skipFocusInputWhenKeySearchStoreUndefined: { classPropertyName: "skipFocusInputWhenKeySearchStoreUndefined", publicName: "skipFocusInputWhenKeySearchStoreUndefined", isSignal: true, isRequired: false, transformFunction: null }, functionGetItemsAutoAddList: { classPropertyName: "functionGetItemsAutoAddList", publicName: "functionGetItemsAutoAddList", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, showValidateBottom: { classPropertyName: "showValidateBottom", publicName: "showValidateBottom", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, loadingIconSize: { classPropertyName: "loadingIconSize", publicName: "loadingIconSize", isSignal: true, isRequired: false, transformFunction: null }, templateRefSearchNoData: { classPropertyName: "templateRefSearchNoData", publicName: "templateRefSearchNoData", isSignal: true, isRequired: false, transformFunction: null }, resetKeyWhenSelectAllKeyDropdown: { classPropertyName: "resetKeyWhenSelectAllKeyDropdown", publicName: "resetKeyWhenSelectAllKeyDropdown", isSignal: true, isRequired: false, transformFunction: null }, ignoreClassDisableDefaultWhenUseKeysDisableItem: { classPropertyName: "ignoreClassDisableDefaultWhenUseKeysDisableItem", publicName: "ignoreClassDisableDefaultWhenUseKeysDisableItem", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outSelectKey: "outSelectKey", outSelectMultiKey: "outSelectMultiKey", outUnSelectMultiKey: "outUnSelectMultiKey", outClickButtonOther: "outClickButtonOther", outFieldKey: "outFieldKey", outChangeView: "outChangeView", outLoading: "outLoading", outFunctionsControl: "outFunctionsControl", outChangStageFlagMousePopover: "outChangStageFlagMousePopover", outLoadItemsComplete: "outLoadItemsComplete" }, viewQueries: [{ propertyName: "listViewElementRef", first: true, predicate: ["listViewContainer"], descendants: true, isSignal: true }, { propertyName: "contentElementRef", first: true, predicate: ["contentContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #listViewContainer\n class=\"flex flex-col\"\n [class.w-full]=\"!maxItemShow\"\n [class.h-full]=\"!maxItemShow\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || loading() || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n\n @if (!showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\" />\n }\n @if (!hiddenInputSearch()) {\n <libs_ui-components-inputs-search [searchConfig]=\"searchConfig()\"\n [class.px-[12px]]=\"searchPadding()\"\n [class]=\"searchConfig().classCoverInputSearch\"\n [disable]=\" disable() || loading() || false\"\n (outSearch)=\"handlerSearch($event)\"\n (outFunctionsControl)=\"handlerFunctionControlInputSearch($event)\" />\n }\n @if (config()?.configDescriptionGroup?.(); as description) {\n <div [class]=\"description?.classInclude\">\n <libs_ui-components-popover [config]=\"description?.tooltipDescription()\">\n <div [class]=\"description?.classTextDescriptionInclude\">{{ description.textDescription }}</div>\n </libs_ui-components-popover>\n </div>\n }\n @if (!hiddenInputSearch() && hasDivider() && (!config()?.ignoreShowDataWhenNotSearch || keySearchStore())) {\n <div class=\"libs-ui-border-top-general {{ dividerClassInclude() ? dividerClassInclude():'' }}\"\n [class.libs-ui-divider-default]=\"!!searchPadding() && !dividerClassInclude()\">\n </div>\n }\n <div class=\"flex flex-col {{ (config()?.ignoreShowDataWhenNotSearch && keySearchStore() && !config()?.ignoreFixHeightShowDataWhenNotSearch) ? 'h-[353px]' : 'h-full' }}\">\n <div #contentContainer\n class=\"w-full h-full {{ backgroundListCustom() }}\"\n [class.libs-ui-disable]=\"disable() && disableLabel()\"\n [class.pointer-events-none]=\"disable() && disableLabel()\">\n </div>\n\n @for (buttonOther of buttonsOther(); track $index) {\n <div class=\"bg-[#ffffff]\"\n [class.rounded-b-[4px]]=\"$last && !hasButtonUnSelectOption()\">\n <libs_ui-components-buttons-button [type]=\"buttonOther.type || 'button-link-primary'\"\n [label]=\"buttonOther.label || ' '\"\n [classIconLeft]=\"(buttonOther.classIconLeft || '')+' flex mr-[8px] text-[16px]'\"\n classInclude=\"w-full libs-ui-border-top-general text-left rounded-0 {{ buttonOther.classInclude ? buttonOther.classInclude:'' }}\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"buttonOther.disable || disable() || loading() || false\"\n (outClick)=\"handlerClickButtonOther(buttonOther)\" />\n </div>\n }\n @if (hasButtonUnSelectOption()) {\n <div class=\"bg-[#ffffff] rounded-b-[4px]\">\n <libs_ui-components-buttons-button label=\"i18n_unselect_option\"\n type=\"button-link-danger-high\"\n classIconLeft=\"flex mr-[8px] libs-ui-icon-close\"\n classInclude=\"w-100 libs-ui-border-top-general text-left rounded-0\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"disableButtonUnSelectOption() || disable() || loading() || false\"\n (outClick)=\"handlerRemoveKeySelected()\" />\n </div>\n }\n </div>\n @if (showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\" />\n }\n</div>\n\n<ng-template #templateValidate>\n @if (isErrorRequired()) {\n <div [class.mb-[8px]]=\"!showValidateBottom()\"\n [class.mt-[8px]]=\"showValidateBottom()\">\n <span class=\"text-[#ee2d41] libs-ui-font-h7\"\n [innerHtml]=\"(validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID)| translate:validRequired()?.interpolateParams\">\n </span>\n </div>\n }\n</ng-template>\n", styles: [":host{background-color:#fff}:host ::ng-deep .libs-ui-list-view-highlight-text-search{background-color:#ffdb80;border-radius:2px;display:inline-block;overflow:unset}.libs-ui-divider-default{width:calc(100% - 24px);margin:12px auto 0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "component", type: LibsUiComponentsInputsSearchComponent, selector: "libs_ui-components-inputs-search", inputs: ["disable", "readonly", "searchConfig", "ignoreAutoComplete", "debounceTime", "ignoreStopPropagationEvent", "focusTimeOut", "blurTimeOut"], outputs: ["outSearch", "outValueChange", "outIconLeft", "outIconRight", "outFocusAndBlur", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
344
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsListComponent, isStandalone: true, selector: "libs_ui-components-list", inputs: { hiddenInputSearch: { classPropertyName: "hiddenInputSearch", publicName: "hiddenInputSearch", isSignal: true, isRequired: false, transformFunction: null }, dropdownTabKeyActive: { classPropertyName: "dropdownTabKeyActive", publicName: "dropdownTabKeyActive", isSignal: true, isRequired: false, transformFunction: null }, keySearch: { classPropertyName: "keySearch", publicName: "keySearch", isSignal: true, isRequired: false, transformFunction: null }, itemChangeUnSelect: { classPropertyName: "itemChangeUnSelect", publicName: "itemChangeUnSelect", isSignal: true, isRequired: false, transformFunction: null }, paddingLeftItem: { classPropertyName: "paddingLeftItem", publicName: "paddingLeftItem", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, autoSelectedFirstItemCallOutsideBefore: { classPropertyName: "autoSelectedFirstItemCallOutsideBefore", publicName: "autoSelectedFirstItemCallOutsideBefore", isSignal: true, isRequired: false, transformFunction: null }, isSearchOnline: { classPropertyName: "isSearchOnline", publicName: "isSearchOnline", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, searchConfig: { classPropertyName: "searchConfig", publicName: "searchConfig", isSignal: true, isRequired: false, transformFunction: null }, searchPadding: { classPropertyName: "searchPadding", publicName: "searchPadding", isSignal: true, isRequired: false, transformFunction: null }, dividerClassInclude: { classPropertyName: "dividerClassInclude", publicName: "dividerClassInclude", isSignal: true, isRequired: false, transformFunction: null }, hasDivider: { classPropertyName: "hasDivider", publicName: "hasDivider", isSignal: true, isRequired: false, transformFunction: null }, buttonsOther: { classPropertyName: "buttonsOther", publicName: "buttonsOther", isSignal: true, isRequired: false, transformFunction: null }, hasButtonUnSelectOption: { classPropertyName: "hasButtonUnSelectOption", publicName: "hasButtonUnSelectOption", isSignal: true, isRequired: false, transformFunction: null }, clickExactly: { classPropertyName: "clickExactly", publicName: "clickExactly", isSignal: true, isRequired: false, transformFunction: null }, backgroundListCustom: { classPropertyName: "backgroundListCustom", publicName: "backgroundListCustom", isSignal: true, isRequired: false, transformFunction: null }, maxItemShow: { classPropertyName: "maxItemShow", publicName: "maxItemShow", isSignal: true, isRequired: false, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: false, transformFunction: null }, multiKeySelected: { classPropertyName: "multiKeySelected", publicName: "multiKeySelected", isSignal: true, isRequired: false, transformFunction: null }, keysDisableItem: { classPropertyName: "keysDisableItem", publicName: "keysDisableItem", isSignal: true, isRequired: false, transformFunction: null }, keysHiddenItem: { classPropertyName: "keysHiddenItem", publicName: "keysHiddenItem", isSignal: true, isRequired: false, transformFunction: null }, focusInputSearch: { classPropertyName: "focusInputSearch", publicName: "focusInputSearch", isSignal: true, isRequired: false, transformFunction: null }, skipFocusInputWhenKeySearchStoreUndefined: { classPropertyName: "skipFocusInputWhenKeySearchStoreUndefined", publicName: "skipFocusInputWhenKeySearchStoreUndefined", isSignal: true, isRequired: false, transformFunction: null }, functionGetItemsAutoAddList: { classPropertyName: "functionGetItemsAutoAddList", publicName: "functionGetItemsAutoAddList", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, showValidateBottom: { classPropertyName: "showValidateBottom", publicName: "showValidateBottom", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, loadingIconSize: { classPropertyName: "loadingIconSize", publicName: "loadingIconSize", isSignal: true, isRequired: false, transformFunction: null }, templateRefSearchNoData: { classPropertyName: "templateRefSearchNoData", publicName: "templateRefSearchNoData", isSignal: true, isRequired: false, transformFunction: null }, resetKeyWhenSelectAllKeyDropdown: { classPropertyName: "resetKeyWhenSelectAllKeyDropdown", publicName: "resetKeyWhenSelectAllKeyDropdown", isSignal: true, isRequired: false, transformFunction: null }, ignoreClassDisableDefaultWhenUseKeysDisableItem: { classPropertyName: "ignoreClassDisableDefaultWhenUseKeysDisableItem", publicName: "ignoreClassDisableDefaultWhenUseKeysDisableItem", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outSelectKey: "outSelectKey", outSelectMultiKey: "outSelectMultiKey", outUnSelectMultiKey: "outUnSelectMultiKey", outClickButtonOther: "outClickButtonOther", outFieldKey: "outFieldKey", outChangeView: "outChangeView", outKeySearch: "outKeySearch", outLoading: "outLoading", outFunctionsControl: "outFunctionsControl", outChangStageFlagMousePopover: "outChangStageFlagMousePopover", outLoadItemsComplete: "outLoadItemsComplete" }, viewQueries: [{ propertyName: "listViewElementRef", first: true, predicate: ["listViewContainer"], descendants: true, isSignal: true }, { propertyName: "contentElementRef", first: true, predicate: ["contentContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #listViewContainer\n class=\"flex flex-col\"\n [class.w-full]=\"!maxItemShow\"\n [class.h-full]=\"!maxItemShow\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || loading() || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n\n @if (!showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\" />\n }\n @if (!hiddenInputSearch()) {\n <libs_ui-components-inputs-search [searchConfig]=\"searchConfig()\"\n [class.px-[12px]]=\"searchPadding()\"\n [class]=\"searchConfig().classCoverInputSearch\"\n [disable]=\" disable() || loading() || false\"\n (outSearch)=\"handlerSearch($event)\"\n (outFunctionsControl)=\"handlerFunctionControlInputSearch($event)\" />\n }\n @if (config()?.configDescriptionGroup?.(); as description) {\n <div [class]=\"description?.classInclude\">\n <libs_ui-components-popover [config]=\"description?.tooltipDescription()\">\n <div [class]=\"description?.classTextDescriptionInclude\">{{ description.textDescription }}</div>\n </libs_ui-components-popover>\n </div>\n }\n @if (!hiddenInputSearch() && hasDivider() && (!config()?.ignoreShowDataWhenNotSearch || keySearchStore())) {\n <div class=\"libs-ui-border-top-general {{ dividerClassInclude() ? dividerClassInclude():'' }}\"\n [class.libs-ui-divider-default]=\"!!searchPadding() && !dividerClassInclude()\">\n </div>\n }\n <div class=\"flex flex-col {{ (config()?.ignoreShowDataWhenNotSearch && keySearchStore() && !config()?.ignoreFixHeightShowDataWhenNotSearch) ? 'h-[353px]' : 'h-full' }}\">\n <div #contentContainer\n class=\"w-full h-full {{ backgroundListCustom() }}\"\n [class.libs-ui-disable]=\"disable() && disableLabel()\"\n [class.pointer-events-none]=\"disable() && disableLabel()\">\n </div>\n\n @for (buttonOther of buttonsOther(); track $index) {\n <div class=\"bg-[#ffffff]\"\n [class.rounded-b-[4px]]=\"$last && !hasButtonUnSelectOption()\">\n <libs_ui-components-buttons-button [type]=\"buttonOther.type || 'button-link-primary'\"\n [label]=\"buttonOther.label || ' '\"\n [classIconLeft]=\"(buttonOther.classIconLeft || '')+' flex mr-[8px] text-[16px]'\"\n classInclude=\"w-full libs-ui-border-top-general text-left rounded-0 {{ buttonOther.classInclude ? buttonOther.classInclude:'' }}\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"buttonOther.disable || disable() || loading() || false\"\n (outClick)=\"handlerClickButtonOther(buttonOther)\" />\n </div>\n }\n @if (hasButtonUnSelectOption()) {\n <div class=\"bg-[#ffffff] rounded-b-[4px]\">\n <libs_ui-components-buttons-button label=\"i18n_unselect_option\"\n type=\"button-link-danger-high\"\n classIconLeft=\"flex mr-[8px] libs-ui-icon-close\"\n classInclude=\"w-100 libs-ui-border-top-general text-left rounded-0\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"disableButtonUnSelectOption() || disable() || loading() || false\"\n (outClick)=\"handlerRemoveKeySelected()\" />\n </div>\n }\n </div>\n @if (showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\" />\n }\n</div>\n\n<ng-template #templateValidate>\n @if (isErrorRequired()) {\n <div [class.mb-[8px]]=\"!showValidateBottom()\"\n [class.mt-[8px]]=\"showValidateBottom()\">\n <span class=\"text-[#ee2d41] libs-ui-font-h7\"\n [innerHtml]=\"(validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID)| translate:validRequired()?.interpolateParams\">\n </span>\n </div>\n }\n</ng-template>\n", styles: [":host{background-color:#fff}:host ::ng-deep .libs-ui-list-view-highlight-text-search{background-color:#ffdb80;border-radius:2px;display:inline-block;overflow:unset}.libs-ui-divider-default{width:calc(100% - 24px);margin:12px auto 0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { kind: "component", type: LibsUiComponentsInputsSearchComponent, selector: "libs_ui-components-inputs-search", inputs: ["disable", "readonly", "searchConfig", "ignoreAutoComplete", "debounceTime", "ignoreStopPropagationEvent", "focusTimeOut", "blurTimeOut"], outputs: ["outSearch", "outValueChange", "outIconLeft", "outIconRight", "outFocusAndBlur", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
343
345
|
}
|
|
344
346
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListComponent, decorators: [{
|
|
345
347
|
type: Component,
|
|
@@ -351,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
351
353
|
LibsUiComponentsButtonsButtonComponent
|
|
352
354
|
], template: "<div #listViewContainer\n class=\"flex flex-col\"\n [class.w-full]=\"!maxItemShow\"\n [class.h-full]=\"!maxItemShow\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || loading() || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n\n @if (!showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\" />\n }\n @if (!hiddenInputSearch()) {\n <libs_ui-components-inputs-search [searchConfig]=\"searchConfig()\"\n [class.px-[12px]]=\"searchPadding()\"\n [class]=\"searchConfig().classCoverInputSearch\"\n [disable]=\" disable() || loading() || false\"\n (outSearch)=\"handlerSearch($event)\"\n (outFunctionsControl)=\"handlerFunctionControlInputSearch($event)\" />\n }\n @if (config()?.configDescriptionGroup?.(); as description) {\n <div [class]=\"description?.classInclude\">\n <libs_ui-components-popover [config]=\"description?.tooltipDescription()\">\n <div [class]=\"description?.classTextDescriptionInclude\">{{ description.textDescription }}</div>\n </libs_ui-components-popover>\n </div>\n }\n @if (!hiddenInputSearch() && hasDivider() && (!config()?.ignoreShowDataWhenNotSearch || keySearchStore())) {\n <div class=\"libs-ui-border-top-general {{ dividerClassInclude() ? dividerClassInclude():'' }}\"\n [class.libs-ui-divider-default]=\"!!searchPadding() && !dividerClassInclude()\">\n </div>\n }\n <div class=\"flex flex-col {{ (config()?.ignoreShowDataWhenNotSearch && keySearchStore() && !config()?.ignoreFixHeightShowDataWhenNotSearch) ? 'h-[353px]' : 'h-full' }}\">\n <div #contentContainer\n class=\"w-full h-full {{ backgroundListCustom() }}\"\n [class.libs-ui-disable]=\"disable() && disableLabel()\"\n [class.pointer-events-none]=\"disable() && disableLabel()\">\n </div>\n\n @for (buttonOther of buttonsOther(); track $index) {\n <div class=\"bg-[#ffffff]\"\n [class.rounded-b-[4px]]=\"$last && !hasButtonUnSelectOption()\">\n <libs_ui-components-buttons-button [type]=\"buttonOther.type || 'button-link-primary'\"\n [label]=\"buttonOther.label || ' '\"\n [classIconLeft]=\"(buttonOther.classIconLeft || '')+' flex mr-[8px] text-[16px]'\"\n classInclude=\"w-full libs-ui-border-top-general text-left rounded-0 {{ buttonOther.classInclude ? buttonOther.classInclude:'' }}\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"buttonOther.disable || disable() || loading() || false\"\n (outClick)=\"handlerClickButtonOther(buttonOther)\" />\n </div>\n }\n @if (hasButtonUnSelectOption()) {\n <div class=\"bg-[#ffffff] rounded-b-[4px]\">\n <libs_ui-components-buttons-button label=\"i18n_unselect_option\"\n type=\"button-link-danger-high\"\n classIconLeft=\"flex mr-[8px] libs-ui-icon-close\"\n classInclude=\"w-100 libs-ui-border-top-general text-left rounded-0\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"disableButtonUnSelectOption() || disable() || loading() || false\"\n (outClick)=\"handlerRemoveKeySelected()\" />\n </div>\n }\n </div>\n @if (showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\" />\n }\n</div>\n\n<ng-template #templateValidate>\n @if (isErrorRequired()) {\n <div [class.mb-[8px]]=\"!showValidateBottom()\"\n [class.mt-[8px]]=\"showValidateBottom()\">\n <span class=\"text-[#ee2d41] libs-ui-font-h7\"\n [innerHtml]=\"(validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID)| translate:validRequired()?.interpolateParams\">\n </span>\n </div>\n }\n</ng-template>\n", styles: [":host{background-color:#fff}:host ::ng-deep .libs-ui-list-view-highlight-text-search{background-color:#ffdb80;border-radius:2px;display:inline-block;overflow:unset}.libs-ui-divider-default{width:calc(100% - 24px);margin:12px auto 0}\n"] }]
|
|
353
355
|
}], ctorParameters: () => [] });
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUF5QixNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDck0sT0FBTyxFQUFXLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckcsT0FBTyxFQUFzQixxQ0FBcUMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlHLE9BQU8sRUFBVSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFBYyxnQ0FBZ0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFvQnZFLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsbUJBQW1C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QUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0EvV1UsNkJBQTZCOzRGQUE3Qiw2QkFBNkIsZytMQ25DMUMsczVKQW9HQSxvU0R4RUksZ0JBQWdCLG1KQUFFLGVBQWUsNEZBQ2pDLDhCQUE4Qiw0cUJBQzlCLHFDQUFxQyxvVkFDckMsZ0NBQWdDLHFlQUNoQyxzQ0FBc0M7OzRGQUc3Qiw2QkFBNkI7a0JBZnpDLFNBQVM7K0JBRUUseUJBQXlCLGNBR3ZCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxnQkFBZ0IsRUFBRSxlQUFlO3dCQUNqQyw4QkFBOEI7d0JBQzlCLHFDQUFxQzt3QkFDckMsZ0NBQWdDO3dCQUNoQyxzQ0FBc0M7cUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBlZmZlY3QsIEVmZmVjdFJlZiwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiwgdW50cmFja2VkLCB2aWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSUJ1dHRvbiwgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblwiO1xuaW1wb3J0IHsgSUlucHV0RnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtaW5wdXRcIjtcbmltcG9ydCB7IElJbnB1dFNlYXJjaENvbmZpZywgTGlic1VpQ29tcG9uZW50c0lucHV0c1NlYXJjaENvbXBvbmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWlucHV0cy1zZWFyY2hcIjtcbmltcG9ydCB7IElWYWxpZFJlcXVpcmVkIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXZhbGlkXCI7XG5pbXBvcnQgeyBJTGFiZWwsIExpYnNVaUNvbXBvbmVudHNMYWJlbENvbXBvbmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWxhYmVsXCI7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcbmltcG9ydCB7IElQYWdpbmcsIFRZUEVfVEVNUExBVEVfUkVGIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIkBsaWJzLXVpL3NlcnZpY2VzLWR5bmFtaWMtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjbG9uZURlZXAsIEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQsIGlzRW1wdHksIGlzTmlsIH0gZnJvbSBcIkBsaWJzLXVpL3V0aWxzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCB0aW1lciB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRCeVR5cGUsIGluaXRDb25maWcgfSBmcm9tIFwiLi9kZWZpbmVzL2xpc3QuZGVmaW5lXCI7XG5pbXBvcnQgeyBJRGF0YVVwZGF0ZVRvU3RvcmUsIElMaXN0Q29uZmlnSXRlbSwgSUxpc3RGdW5jdGlvbkNvbnRyb2xFdmVudCB9IGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IElMaXN0RGF0YUVtaXRLZXksIElMaXN0RGF0YUVtaXRNdWx0aUtleSB9IGZyb20gXCIuL2ludGVyZmFjZXMvZGF0YS1lbWl0LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCB9IGZyb20gXCIuL3RlbXBsYXRlcy90ZW1wbGF0ZXMuY29tcG9uZW50LmFic3RyYWN0XCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCwgVHJhbnNsYXRlTW9kdWxlLFxuICAgIExpYnNVaUNvbXBvbmVudHNMYWJlbENvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzSW5wdXRzU2VhcmNoQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQgPSBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEO1xuICBwcm90ZWN0ZWQgZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcm90ZWN0ZWQgaXNFcnJvclJlcXVpcmVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQga2V5U2VhcmNoU3RvcmUgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblNlYXJjaDogU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblJlZnJlc2g6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uU2V0SGlkZGVuSXRlbUJ5S2V5OiBTdWJqZWN0PEFycmF5PHVua25vd24+PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25JdGVtQ2hhbmdlVW5TZWxlY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25VcGRhdGVNdWx0aUtleVNlbGVjdGVkR3JvdXA6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uUmVtb3ZlSXRlbXM6IFN1YmplY3Q8QXJyYXk8dW5rbm93bj4+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblVwZGF0ZURhdGE6IFN1YmplY3Q8SURhdGFVcGRhdGVUb1N0b3JlPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgY2xlYW5VcEVmZmVjdCE6IEVmZmVjdFJlZjtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0PjtcbiAgcHJpdmF0ZSBjb25maWdEYXRhID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbT4oe1xuICAgIHR5cGU6ICd0ZXh0JyxcbiAgICBjb25maWdUZW1wbGF0ZVRleHQ6IHNpZ25hbCh7XG4gICAgICBmaWVsZEtleTogJ2lkJyxcbiAgICAgIGdldFZhbHVlOiAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLmxhYmVsIHx8IGl0ZW0ubmFtZTtcbiAgICAgIH1cbiAgICB9KVxuICB9KTtcbiAgcHJpdmF0ZSBncm91cE11bHRpS2V5U2VsZWN0ZWQgPSBzaWduYWw8QXJyYXk8dW5rbm93bj4+KFtdKTtcbiAgcHJpdmF0ZSBmdW5jdGlvbkNvbnRyb2xJbnB1dFNlYXJjaCA9IHNpZ25hbDxJSW5wdXRGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGhpZGRlbklucHV0U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbiB8IHVuZGVmaW5lZD4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgZHJvcGRvd25UYWJLZXlBY3RpdmUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGtleVNlYXJjaCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXRlbUNoYW5nZVVuU2VsZWN0ID0gaW5wdXQ8YW55PigpO1xuICByZWFkb25seSBwYWRkaW5nTGVmdEl0ZW0gPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxJTGlzdENvbmZpZ0l0ZW0gfCB1bmRlZmluZWQsIElMaXN0Q29uZmlnSXRlbSB8IHVuZGVmaW5lZD4odGhpcy5jb25maWdEYXRhKCksIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRoaXMuY29uZmlnRGF0YSgpIH0pO1xuICByZWFkb25seSBhdXRvU2VsZWN0ZWRGaXJzdEl0ZW1DYWxsT3V0c2lkZUJlZm9yZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBpc1NlYXJjaE9ubGluZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBsYWJlbENvbmZpZyA9IGlucHV0PElMYWJlbD4oKTtcbiAgcmVhZG9ubHkgc2VhcmNoQ29uZmlnID0gaW5wdXQ8SUlucHV0U2VhcmNoQ29uZmlnLCBJSW5wdXRTZWFyY2hDb25maWcgfCB1bmRlZmluZWQ+KHt9LCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgfHwge30gfSk7XG4gIHJlYWRvbmx5IHNlYXJjaFBhZGRpbmcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXZpZGVyQ2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBoYXNEaXZpZGVyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGJ1dHRvbnNPdGhlciA9IGlucHV0PEFycmF5PElCdXR0b24+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBoYXNCdXR0b25VblNlbGVjdE9wdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGNsaWNrRXhhY3RseSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0Q3VzdG9tID0gaW5wdXQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCdiZy1bI2ZmZmZmZl0nLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gJ2JnLVsjZmZmZmZmXScgfSk7XG4gIHJlYWRvbmx5IG1heEl0ZW1TaG93ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBrZXlTZWxlY3RlZCA9IGlucHV0PHVua25vd24+KCk7XG4gIHJlYWRvbmx5IG11bHRpS2V5U2VsZWN0ZWQgPSBpbnB1dDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsvLyBsxrB1IMO9IGtoaSBz4butIGThu6VuZyBsaXN0dmlld1xuICByZWFkb25seSBrZXlzRGlzYWJsZUl0ZW0gPSBpbnB1dDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsgLy8ga2jDtG5nIGTDuW5nIGdpw6EgdHLhu4sgbsOgeSBr4bq/dCBo4bujcCB24bubaSB0ZW1wbGF0ZSBjaGVja2JveCBjw7MgY29uZmlnIGNo4bupYSBjb25maWdDaGVja2JveENoZWNrQWxsXG4gIHJlYWRvbmx5IGtleXNIaWRkZW5JdGVtID0gaW5wdXQ8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIGtow7RuZyBkw7luZyBnacOhIHRy4buLIG7DoHkga+G6v3QgaOG7o3AgduG7m2kgdGVtcGxhdGUgY2hlY2tib3ggY8OzIGNvbmZpZyBjaOG7qWEgY29uZmlnQ2hlY2tib3hDaGVja0FsbFxuICByZWFkb25seSBmb2N1c0lucHV0U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgc2tpcEZvY3VzSW5wdXRXaGVuS2V5U2VhcmNoU3RvcmVVbmRlZmluZWQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBmdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QgPSBpbnB1dDwoKCkgPT4gQXJyYXk8YW55PikgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDxJVmFsaWRSZXF1aXJlZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRlQm90dG9tID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBsb2FkaW5nSWNvblNpemUgPSBpbnB1dDwnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnIHwgJ3NtYWxsZXInIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24gPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDbGFzc0Rpc2FibGVEZWZhdWx0V2hlblVzZUtleXNEaXNhYmxlSXRlbSA9IGlucHV0PGJvb2xlYW4+KCk7IC8vIGLhu48gY2jhur8gxJHhu5kgZGlzYWJsZSBpdGVtIHRyw6puIGh0bWwgxJHhu4MgZGlzYWJsZSB04burbmcgcGjhuqduIHRyb25nIHJvd3NcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRTZWxlY3RLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdEtleSB8IHVuZGVmaW5lZD4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2jhu41uIDFcbiAgcmVhZG9ubHkgb3V0U2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdE11bHRpS2V5IHwgdW5kZWZpbmVkPigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dFVuU2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8QXJyYXk8dW5rbm93bj4+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkgb3V0Q2xpY2tCdXR0b25PdGhlciA9IG91dHB1dDxJQnV0dG9uPigpO1xuICByZWFkb25seSBvdXRGaWVsZEtleSA9IG91dHB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nZVZpZXcgPSBvdXRwdXQ8QXJyYXk8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb3V0TG9hZGluZyA9IG91dHB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbnNDb250cm9sID0gb3V0cHV0PElMaXN0RnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRJdGVtc0NvbXBsZXRlID0gb3V0cHV0PHsgaXRlbXM6IEFycmF5PGFueT4sIHBhZ2luZz86IElQYWdpbmcgfT4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByb3RlY3RlZCBsaXN0Vmlld0VsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2xpc3RWaWV3Q29udGFpbmVyJyk7XG4gIHByb3RlY3RlZCBjb250ZW50RWxlbWVudFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignY29udGVudENvbnRhaW5lcicpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFNlcnZpY2UgPSBpbmplY3QoTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2xlYW5VcEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMua2V5U2VhcmNoKCk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmtleVNlYXJjaFN0b3JlKCkgPT09IHRoaXMua2V5U2VhcmNoKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5rZXlTZWFyY2hTdG9yZS5zZXQodmFsdWUpO1xuICAgICAgICB0aGlzLm9uU2VhcmNoLm5leHQodmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1DaGFuZ2VVblNlbGVjdCA9IHRoaXMuaXRlbUNoYW5nZVVuU2VsZWN0KCk7XG4gICAgICBjb25zdCBrZXlzRGlzYWJsZUl0ZW0gPSB0aGlzLmtleXNEaXNhYmxlSXRlbSgpO1xuICAgICAgY29uc3Qga2V5c0hpZGRlbkl0ZW0gPSB0aGlzLmtleXNIaWRkZW5JdGVtKCk7XG4gICAgICBjb25zdCBkaXNhYmxlID0gdGhpcy5kaXNhYmxlKCk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleVNlbGVjdGVkID0gdGhpcy5rZXlTZWxlY3RlZCgpO1xuICAgICAgICBjb25zdCBtdWx0aUtleVNlbGVjdGVkID0gdGhpcy5tdWx0aUtleVNlbGVjdGVkKCk7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlVW5TZWxlY3QubmV4dChpdGVtQ2hhbmdlVW5TZWxlY3QpO1xuXG4gICAgICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0VtcHR5KGtleXNEaXNhYmxlSXRlbSkpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5c0Rpc2FibGVJdGVtJywga2V5c0Rpc2FibGVJdGVtKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzRW1wdHkoa2V5c0hpZGRlbkl0ZW0pKSB7XG4gICAgICAgICAgdGhpcy5vblNldEhpZGRlbkl0ZW1CeUtleS5uZXh0KGtleXNIaWRkZW5JdGVtIHx8IFtdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzRW1wdHkoZGlzYWJsZSkpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnZGlzYWJsZScsIGRpc2FibGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNFbXB0eShrZXlTZWxlY3RlZCkpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5U2VsZWN0ZWQnLCBrZXlTZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnRGF0YSgpPy50eXBlID09PSAnZ3JvdXAnICYmICFpc0VtcHR5KG11bHRpS2V5U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ211bHRpS2V5U2VsZWN0ZWQnLCBtdWx0aUtleVNlbGVjdGVkKTtcbiAgICAgICAgICB0aGlzLm9uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZWZmZWN0KHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub3V0RnVuY3Rpb25zQ29udHJvbC5lbWl0KHtcbiAgICAgIGNoZWNrSXNWYWxpZDogdGhpcy5jaGVja0lzVmFsaWQuYmluZCh0aGlzKSxcbiAgICAgIHJlZnJlc2g6IHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpLFxuICAgICAgcmVzZXRLZXlTZWxlY3RlZDogdGhpcy5oYW5kbGVyUmVtb3ZlS2V5U2VsZWN0ZWQuYmluZCh0aGlzKSxcbiAgICAgIGdldFJlY3RMaXN0VmlldzogYXN5bmMgKCkgPT4gdGhpcy5saXN0Vmlld0VsZW1lbnRSZWYoKT8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgIHJlbW92ZUl0ZW1zOiBhc3luYyAoa2V5cykgPT4gdGhpcy5vblJlbW92ZUl0ZW1zLm5leHQoa2V5cyksXG4gICAgICB1cGRhdGVEYXRhOiBhc3luYyAoZGF0YSkgPT4gdGhpcy5vblVwZGF0ZURhdGEubmV4dChkYXRhKVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuc2V0KHRoaXMuY2xvbmVDb25maWcoY29uZmlnKSlcbiAgICB9XG4gICAgaW5pdENvbmZpZyh0aGlzLmNvbmZpZ0RhdGEoKSk7XG4gICAgY29uc3QgY29tcENsYXNzID0gZ2V0Q29tcG9uZW50QnlUeXBlKHRoaXMuY29uZmlnRGF0YSgpLnR5cGUpO1xuXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBDbGFzcyk7XG5cbiAgICB0aW1lcigwKS5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmFkZFRvRWxlbWVudCh0aGlzLmNvbXBvbmVudFJlZiwgdGhpcy5jb250ZW50RWxlbWVudFJlZigpPy5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb25TZXRIaWRkZW5JdGVtQnlLZXknLCB0aGlzLm9uU2V0SGlkZGVuSXRlbUJ5S2V5KTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnY29uZmlnJywgdGhpcy5jb25maWdEYXRhKCkpO1xuXG4gICAgaWYgKHRoaXMuc2VhcmNoQ29uZmlnKCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdzZWFyY2hDb25maWcnLCB0aGlzLnNlYXJjaENvbmZpZygpKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uU2VhcmNoJywgdGhpcy5vblNlYXJjaCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uUmVmcmVzaCcsIHRoaXMub25SZWZyZXNoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb25VcGRhdGVEYXRhJywgdGhpcy5vblVwZGF0ZURhdGEpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdrZXlTZWFyY2gnLCB0aGlzLmtleVNlYXJjaFN0b3JlKCkgPz8gJycpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdkcm9wZG93blRhYktleUFjdGl2ZScsIHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2NsaWNrRXhhY3RseScsIHRoaXMuY2xpY2tFeGFjdGx5KCkgfHwgZmFsc2UpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdkaXNhYmxlJywgdGhpcy5kaXNhYmxlKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdhdXRvU2VsZWN0ZWRGaXJzdEl0ZW1DYWxsT3V0c2lkZUJlZm9yZScsIHRoaXMuYXV0b1NlbGVjdGVkRmlyc3RJdGVtQ2FsbE91dHNpZGVCZWZvcmUoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3BhZGRpbmdMZWZ0SXRlbScsIHRoaXMucGFkZGluZ0xlZnRJdGVtKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdyZXNldEtleVdoZW5TZWxlY3RBbGxLZXlEcm9wZG93bicsIHRoaXMucmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24oKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2lnbm9yZUNsYXNzRGlzYWJsZURlZmF1bHRXaGVuVXNlS2V5c0Rpc2FibGVJdGVtJywgdGhpcy5pZ25vcmVDbGFzc0Rpc2FibGVEZWZhdWx0V2hlblVzZUtleXNEaXNhYmxlSXRlbSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0JywgdGhpcy5mdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QoKSk7XG4gICAgaWYgKHRoaXMubWF4SXRlbVNob3coKSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ21heEl0ZW1TaG93JywgdGhpcy5tYXhJdGVtU2hvdygpKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleVNlbGVjdGVkJywgdGhpcy5rZXlTZWxlY3RlZCgpKTtcbiAgICBpZiAodGhpcy5tdWx0aUtleVNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdtdWx0aUtleVNlbGVjdGVkJywgdGhpcy5tdWx0aUtleVNlbGVjdGVkKCkpO1xuICAgIH1cbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5c0Rpc2FibGVJdGVtJywgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKSB8fCBbXSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleXNIaWRkZW5JdGVtJywgdGhpcy5rZXlzSGlkZGVuSXRlbSgpIHx8IFtdKTtcbiAgICBpZiAoIWlzTmlsKHRoaXMua2V5U2VsZWN0ZWQoKSkgfHwgdGhpcy5tdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uVW5TZWxlY3RPcHRpb24uc2V0KGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uSXRlbUNoYW5nZVVuU2VsZWN0JywgdGhpcy5vbkl0ZW1DaGFuZ2VVblNlbGVjdCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwJywgdGhpcy5vblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uUmVtb3ZlSXRlbXMnLCB0aGlzLm9uUmVtb3ZlSXRlbXMpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCd6SW5kZXgnLCB0aGlzLnpJbmRleCgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnaXNTZWFyY2hPbmxpbmUnLCB0aGlzLmlzU2VhcmNoT25saW5lKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdkaXNhYmxlTGFiZWwnLCB0aGlzLmRpc2FibGVMYWJlbCgpIHx8IGZhbHNlKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnbG9hZGluZ0ljb25TaXplJywgdGhpcy5sb2FkaW5nSWNvblNpemUoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3RlbXBsYXRlUmVmU2VhcmNoTm9EYXRhJywgdGhpcy50ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpKTtcbiAgICBsZXQga2V5U2VhcmNoID0gJyc7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgaW5zdGFuY2Uub3V0Q2hhbmdlVmlldy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLm91dENoYW5nZVZpZXcuZW1pdChkYXRhKTtcblxuICAgICAgaWYgKHRoaXMuc2tpcEZvY3VzSW5wdXRXaGVuS2V5U2VhcmNoU3RvcmVVbmRlZmluZWQoKSAmJiBpc05pbCh0aGlzLmtleVNlYXJjaFN0b3JlKCkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvY3VzSW5wdXRTZWFyY2goKSAmJiB0aGlzLmtleVNlYXJjaFN0b3JlKCkgIT09IGtleVNlYXJjaCkge1xuICAgICAgICBrZXlTZWFyY2ggPSB0aGlzLmtleVNlYXJjaFN0b3JlKCkgfHwgJyc7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25Db250cm9sSW5wdXRTZWFyY2goKT8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpbnN0YW5jZS5vdXRTZWxlY3RLZXkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uVW5TZWxlY3RPcHRpb24uc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0U2VsZWN0S2V5LmVtaXQoZGF0YSk7XG4gICAgICB0aGlzLmNoZWNrSXNWYWxpZCgpO1xuICAgIH0pO1xuICAgIGluc3RhbmNlLm91dEZpZWxkS2V5LnN1YnNjcmliZSgoZmllbGRLZXk/OiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMub3V0RmllbGRLZXkuZW1pdChmaWVsZEtleSk7XG4gICAgfSk7XG4gICAgaW5zdGFuY2Uub3V0TG9hZGluZy5zdWJzY3JpYmUoKGxvYWRpbmc6IGJvb2xlYW4pID0+IHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQobG9hZGluZyk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdChsb2FkaW5nKTtcbiAgICB9KTtcbiAgICBpbnN0YW5jZS5vdXRMb2FkSXRlbXNDb21wbGV0ZS5zdWJzY3JpYmUoKGV2ZW50OiB7IGl0ZW1zOiBBcnJheTxhbnk+LCBwYWdpbmc/OiBJUGFnaW5nIH0pID0+IHtcbiAgICAgIHRoaXMub3V0TG9hZEl0ZW1zQ29tcGxldGUuZW1pdChldmVudCk7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkgJiYgdGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVUZXh0ICYmIHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGV4dD8uKCk/LmFjdGlvblNvcnQpIHtcbiAgICAgIGluc3RhbmNlLm91dFNvcnRTaW5nbGVTZWxlY3Quc3Vic2NyaWJlKGl0ZW1Tb3J0ID0+IHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuY29uZmlnVGVtcGxhdGVUZXh0ICYmIGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQoKT8uYWN0aW9uU29ydCkge1xuICAgICAgICAgIGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQoKT8uaXRlbVNvcnQ/LnNldChpdGVtU29ydCk7XG4gICAgICAgICAgY29uZmlnLmNvbmZpZ1RlbXBsYXRlVGV4dCgpPy5hY3Rpb25Tb3J0Py4oaXRlbVNvcnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaW5zdGFuY2Uub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIuc3Vic2NyaWJlKChmbGFnOiBJRmxhZ01vdXNlKSA9PiB7XG4gICAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyLmVtaXQoZmxhZyk7XG4gICAgfSk7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuY29uZmlnRGF0YSgpPy50eXBlO1xuXG4gICAgaWYgKHR5cGUgPT09ICd0ZXh0JyB8fCB0eXBlID09PSAncmFkaW8nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGluc3RhbmNlLm91dFNlbGVjdE11bHRpS2V5LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uLnNldChmYWxzZSk7XG4gICAgICBpZiAodHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICB0aGlzLmdyb3VwTXVsdGlLZXlTZWxlY3RlZC5zZXQoZGF0YS5rZXlzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdChkYXRhKTtcbiAgICAgIHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZXJTZWFyY2goa2V5U2VhcmNoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmtleVNlYXJjaFN0b3JlLnNldChrZXlTZWFyY2gpO1xuICAgIHRoaXMub25TZWFyY2gubmV4dChrZXlTZWFyY2gpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJSZW1vdmVLZXlTZWxlY3RlZCgpIHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3V0U2VsZWN0S2V5LmVtaXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5U2VsZWN0ZWQnLCAnJyk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ211bHRpS2V5U2VsZWN0ZWQnLCB1bmRlZmluZWQpO1xuICAgIHRoaXMuZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uLnNldCh0cnVlKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZ0RhdGEoKT8udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgdGhpcy5vblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cC5uZXh0KCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrQnV0dG9uT3RoZXIoYnV0dG9uOiBJQnV0dG9uKSB7XG4gICAgdGhpcy5vdXRDbGlja0J1dHRvbk90aGVyLmVtaXQoYnV0dG9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyRnVuY3Rpb25Db250cm9sSW5wdXRTZWFyY2goZXZlbnQ6IElJbnB1dEZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5mdW5jdGlvbkNvbnRyb2xJbnB1dFNlYXJjaC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja0lzVmFsaWQoKSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkUmVxdWlyZWQgfHwgIXRoaXMuY29uZmlnKCk/LnR5cGUgfHwgIXRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5pc0Vycm9yUmVxdWlyZWQuc2V0KGZhbHNlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmNvbmZpZygpPy50eXBlO1xuICAgIGxldCBoYXNLZXkgPSAhaXNFbXB0eSh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5tdWx0aUtleVNlbGVjdGVkKTtcblxuICAgIGlmICh0eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICBoYXNLZXkgPSAhaXNFbXB0eSh0aGlzLmdyb3VwTXVsdGlLZXlTZWxlY3RlZCk7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAndGV4dCcgfHwgdHlwZSA9PT0gJ3JhZGlvJykge1xuICAgICAgaGFzS2V5ID0gIWlzTmlsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmtleVNlbGVjdGVkKTtcbiAgICB9XG4gICAgdGhpcy5pc0Vycm9yUmVxdWlyZWQuc2V0KCFoYXNLZXkpO1xuXG4gICAgcmV0dXJuIGhhc0tleTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaCgpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKTtcblxuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuc2V0KHRoaXMuY2xvbmVDb25maWcoY29uZmlnKSk7XG4gICAgICB0aGlzLm9uUmVmcmVzaC5uZXh0KCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVDb25maWcoY29uZmlnSW5wdXQ6IElMaXN0Q29uZmlnSXRlbSk6IElMaXN0Q29uZmlnSXRlbSB7XG4gICAgaWYgKCFjb25maWdJbnB1dCkge1xuICAgICAgcmV0dXJuIHt9IGFzIGFueTtcbiAgICB9XG4gICAgY29uc3Qgc2VydmljZU90aGVyID0gY29uZmlnSW5wdXQuaHR0cFJlcXVlc3REYXRhPy4oKT8uc2VydmljZU90aGVyO1xuICAgIGNvbnN0IHNlcnZpY2VPdGhlclJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3QgPSBjb25maWdJbnB1dC5jb25maWdUZW1wbGF0ZUNoZWNrYm94Py4oKT8uaHR0cFJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3Q/LigpPy5zZXJ2aWNlT3RoZXI7XG5cbiAgICBpZiAoc2VydmljZU90aGVyKSB7XG4gICAgICBjb25maWdJbnB1dC5odHRwUmVxdWVzdERhdGE/LnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgZGVsZXRlIGN1cnJlbnQuc2VydmljZU90aGVyO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2VPdGhlclJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3QpIHtcbiAgICAgIGNvbmZpZ0lucHV0LmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3g/LigpPy5odHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdD8udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBkZWxldGUgY3VycmVudC5zZXJ2aWNlT3RoZXI7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gY2xvbmVEZWVwKGNvbmZpZ0lucHV0KSBhcyBJTGlzdENvbmZpZ0l0ZW07XG5cbiAgICBpZiAoc2VydmljZU90aGVyICYmIGNvbmZpZy5odHRwUmVxdWVzdERhdGEpIHtcbiAgICAgIGNvbmZpZy5odHRwUmVxdWVzdERhdGEudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnNlcnZpY2VPdGhlciA9IHNlcnZpY2VPdGhlcjtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzZXJ2aWNlT3RoZXJSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0ICYmIGNvbmZpZy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KSB7XG4gICAgICBjb25maWcuY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCk/Lmh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0Py51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2VydmljZU90aGVyID0gc2VydmljZU90aGVyO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2xlYW5VcEVmZmVjdC5kZXN0cm95KCk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVtb3ZlKHRoaXMuY29tcG9uZW50UmVmKTtcbiAgICB0aGlzLm9uUmVmcmVzaC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25TZWFyY2guY29tcGxldGUoKTtcbiAgICB0aGlzLm9uU2V0SGlkZGVuSXRlbUJ5S2V5LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59IiwiPGRpdiAjbGlzdFZpZXdDb250YWluZXJcbiAgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCJcbiAgW2NsYXNzLnctZnVsbF09XCIhbWF4SXRlbVNob3dcIlxuICBbY2xhc3MuaC1mdWxsXT1cIiFtYXhJdGVtU2hvd1wiPlxuICBAaWYgKGxhYmVsQ29uZmlnKCk7IGFzIGxhYmVsQ29uZmlnKSB7XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbCBbY2xhc3NJbmNsdWRlXT1cImxhYmVsQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICBbbGFiZWxMZWZ0XT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdFwiXG4gICAgICBbbGFiZWxMZWZ0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxMZWZ0Q2xhc3NcIlxuICAgICAgW3JlcXVpcmVkXT1cImxhYmVsQ29uZmlnLnJlcXVpcmVkIFwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuZGVzY3JpcHRpb25cIlxuICAgICAgW2Rlc2NyaXB0aW9uQ2xhc3NdPVwibGFiZWxDb25maWcuZGVzY3JpcHRpb25DbGFzc1wiXG4gICAgICBbbGFiZWxSaWdodF09XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0XCJcbiAgICAgIFtsYWJlbFJpZ2h0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxSaWdodENsYXNzXCJcbiAgICAgIFtvbmx5U2hvd0NvdW50XT1cImxhYmVsQ29uZmlnLm9ubHlTaG93Q291bnRcIlxuICAgICAgW2J1dHRvbnNMZWZ0XT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNMZWZ0XCJcbiAgICAgIFtidXR0b25zUmlnaHRdPVwibGFiZWxDb25maWcuYnV0dG9uc1JpZ2h0XCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNMZWZ0IHx8IGRpc2FibGUoKVwiXG4gICAgICBbZGlzYWJsZUJ1dHRvbnNSaWdodF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc1JpZ2h0IHx8IGRpc2FibGUoKVwiXG4gICAgICBbaGFzVG9nZ2xlXT1cImxhYmVsQ29uZmlnLmhhc1RvZ2dsZVwiXG4gICAgICBbdG9nZ2xlQWN0aXZlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZUFjdGl2ZVwiXG4gICAgICBbdG9nZ2xlRGlzYWJsZV09XCJsYWJlbENvbmZpZy50b2dnbGVEaXNhYmxlIHx8IGxvYWRpbmcoKSB8fCBkaXNhYmxlKClcIlxuICAgICAgW3BvcG92ZXJdPVwibGFiZWxDb25maWcucG9wb3ZlclwiXG4gICAgICBbaWNvblBvcG92ZXJDbGFzc109XCJsYWJlbENvbmZpZy5pY29uUG9wb3ZlckNsYXNzXCJcbiAgICAgIFtvbmx5U2hvd0NvdW50XT1cImxhYmVsQ29uZmlnLm9ubHlTaG93Q291bnRcIlxuICAgICAgW2xpbWl0TGVuZ3RoXT1cImxhYmVsQ29uZmlnLmxpbWl0TGVuZ3RoXCJcbiAgICAgIFtidXR0b25zRGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuYnV0dG9uc0Rlc2NyaXB0aW9uXCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc0Rlc2NyaXB0aW9uXT1cImxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zRGVzY3JpcHRpb24gfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtidXR0b25zRGVzY3JpcHRpb25Db250YWluZXJDbGFzc109XCJsYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25Db250YWluZXJDbGFzc1wiXG4gICAgICBbY291bnRdPVwibGFiZWxDb25maWcuY291bnRcIiAvPlxuICB9XG5cbiAgQGlmICghc2hvd1ZhbGlkYXRlQm90dG9tKCkpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVWYWxpZGF0ZVwiIC8+XG4gIH1cbiAgQGlmICghaGlkZGVuSW5wdXRTZWFyY2goKSkge1xuICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLXNlYXJjaCBbc2VhcmNoQ29uZmlnXT1cInNlYXJjaENvbmZpZygpXCJcbiAgICAgIFtjbGFzcy5weC1bMTJweF1dPVwic2VhcmNoUGFkZGluZygpXCJcbiAgICAgIFtjbGFzc109XCJzZWFyY2hDb25maWcoKS5jbGFzc0NvdmVySW5wdXRTZWFyY2hcIlxuICAgICAgW2Rpc2FibGVdPVwiIGRpc2FibGUoKSB8fCBsb2FkaW5nKCkgfHwgZmFsc2VcIlxuICAgICAgKG91dFNlYXJjaCk9XCJoYW5kbGVyU2VhcmNoKCRldmVudClcIlxuICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uQ29udHJvbElucHV0U2VhcmNoKCRldmVudClcIiAvPlxuICB9XG4gIEBpZiAoY29uZmlnKCk/LmNvbmZpZ0Rlc2NyaXB0aW9uR3JvdXA/LigpOyBhcyBkZXNjcmlwdGlvbikge1xuICAgIDxkaXYgW2NsYXNzXT1cImRlc2NyaXB0aW9uPy5jbGFzc0luY2x1ZGVcIj5cbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlciBbY29uZmlnXT1cImRlc2NyaXB0aW9uPy50b29sdGlwRGVzY3JpcHRpb24oKVwiPlxuICAgICAgICA8ZGl2IFtjbGFzc109XCJkZXNjcmlwdGlvbj8uY2xhc3NUZXh0RGVzY3JpcHRpb25JbmNsdWRlXCI+e3sgZGVzY3JpcHRpb24udGV4dERlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoIWhpZGRlbklucHV0U2VhcmNoKCkgJiYgaGFzRGl2aWRlcigpICYmICghY29uZmlnKCk/Lmlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCB8fCBrZXlTZWFyY2hTdG9yZSgpKSkge1xuICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbCB7eyBkaXZpZGVyQ2xhc3NJbmNsdWRlKCkgPyBkaXZpZGVyQ2xhc3NJbmNsdWRlKCk6JycgfX1cIlxuICAgICAgW2NsYXNzLmxpYnMtdWktZGl2aWRlci1kZWZhdWx0XT1cIiEhc2VhcmNoUGFkZGluZygpICYmICFkaXZpZGVyQ2xhc3NJbmNsdWRlKClcIj5cbiAgICA8L2Rpdj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB7eyAoY29uZmlnKCk/Lmlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCAmJiBrZXlTZWFyY2hTdG9yZSgpICYmICFjb25maWcoKT8uaWdub3JlRml4SGVpZ2h0U2hvd0RhdGFXaGVuTm90U2VhcmNoKSA/ICdoLVszNTNweF0nIDogJ2gtZnVsbCcgfX1cIj5cbiAgICA8ZGl2ICNjb250ZW50Q29udGFpbmVyXG4gICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwge3sgYmFja2dyb3VuZExpc3RDdXN0b20oKSB9fVwiXG4gICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImRpc2FibGUoKSAmJiBkaXNhYmxlTGFiZWwoKVwiXG4gICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJkaXNhYmxlKCkgJiYgZGlzYWJsZUxhYmVsKClcIj5cbiAgICA8L2Rpdj5cblxuICAgIEBmb3IgKGJ1dHRvbk90aGVyIG9mIGJ1dHRvbnNPdGhlcigpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJiZy1bI2ZmZmZmZl1cIlxuICAgICAgICBbY2xhc3Mucm91bmRlZC1iLVs0cHhdXT1cIiRsYXN0ICYmICFoYXNCdXR0b25VblNlbGVjdE9wdGlvbigpXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW3R5cGVdPVwiYnV0dG9uT3RoZXIudHlwZSB8fCAnYnV0dG9uLWxpbmstcHJpbWFyeSdcIlxuICAgICAgICAgIFtsYWJlbF09XCJidXR0b25PdGhlci5sYWJlbCB8fCAnICdcIlxuICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIihidXR0b25PdGhlci5jbGFzc0ljb25MZWZ0IHx8ICcnKSsnIGZsZXggbXItWzhweF0gdGV4dC1bMTZweF0nXCJcbiAgICAgICAgICBjbGFzc0luY2x1ZGU9XCJ3LWZ1bGwgbGlicy11aS1ib3JkZXItdG9wLWdlbmVyYWwgdGV4dC1sZWZ0IHJvdW5kZWQtMCB7eyBidXR0b25PdGhlci5jbGFzc0luY2x1ZGUgPyBidXR0b25PdGhlci5jbGFzc0luY2x1ZGU6JycgfX1cIlxuICAgICAgICAgIGNsYXNzTGFiZWw9XCJsaWJzLXVpLWZvbnQtaDVyIHdoaXRlc3BhY2Utbm9ybWFsXCJcbiAgICAgICAgICBbZGlzYWJsZV09XCJidXR0b25PdGhlci5kaXNhYmxlIHx8IGRpc2FibGUoKSB8fCBsb2FkaW5nKCkgfHwgZmFsc2VcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyQ2xpY2tCdXR0b25PdGhlcihidXR0b25PdGhlcilcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoaGFzQnV0dG9uVW5TZWxlY3RPcHRpb24oKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImJnLVsjZmZmZmZmXSByb3VuZGVkLWItWzRweF1cIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBsYWJlbD1cImkxOG5fdW5zZWxlY3Rfb3B0aW9uXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uLWxpbmstZGFuZ2VyLWhpZ2hcIlxuICAgICAgICAgIGNsYXNzSWNvbkxlZnQ9XCJmbGV4IG1yLVs4cHhdIGxpYnMtdWktaWNvbi1jbG9zZVwiXG4gICAgICAgICAgY2xhc3NJbmNsdWRlPVwidy0xMDAgbGlicy11aS1ib3JkZXItdG9wLWdlbmVyYWwgdGV4dC1sZWZ0IHJvdW5kZWQtMFwiXG4gICAgICAgICAgY2xhc3NMYWJlbD1cImxpYnMtdWktZm9udC1oNXIgd2hpdGVzcGFjZS1ub3JtYWxcIlxuICAgICAgICAgIFtkaXNhYmxlXT1cImRpc2FibGVCdXR0b25VblNlbGVjdE9wdGlvbigpIHx8IGRpc2FibGUoKSB8fCBsb2FkaW5nKCkgfHwgZmFsc2VcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyUmVtb3ZlS2V5U2VsZWN0ZWQoKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICBAaWYgKHNob3dWYWxpZGF0ZUJvdHRvbSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlVmFsaWRhdGVcIiAvPlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVZhbGlkYXRlPlxuICBAaWYgKGlzRXJyb3JSZXF1aXJlZCgpKSB7XG4gICAgPGRpdiBbY2xhc3MubWItWzhweF1dPVwiIXNob3dWYWxpZGF0ZUJvdHRvbSgpXCJcbiAgICAgIFtjbGFzcy5tdC1bOHB4XV09XCJzaG93VmFsaWRhdGVCb3R0b20oKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjZWUyZDQxXSBsaWJzLXVpLWZvbnQtaDdcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIih2YWxpZFJlcXVpcmVkKCk/Lm1lc3NhZ2UgfHwgRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRCl8IHRyYW5zbGF0ZTp2YWxpZFJlcXVpcmVkKCk/LmludGVycG9sYXRlUGFyYW1zXCI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUF5QixNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDck0sT0FBTyxFQUFXLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckcsT0FBTyxFQUFzQixxQ0FBcUMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlHLE9BQU8sRUFBVSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFBYyxnQ0FBZ0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFvQnZFLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsbUJBQW1C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QU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBalhVLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLDgvTENuQzFDLHM1SkFvR0Esb1NEeEVJLGdCQUFnQixtSkFBRSxlQUFlLDRGQUNqQyw4QkFBOEIsNHFCQUM5QixxQ0FBcUMsb1ZBQ3JDLGdDQUFnQyxxZUFDaEMsc0NBQXNDOzs0RkFHN0IsNkJBQTZCO2tCQWZ6QyxTQUFTOytCQUVFLHlCQUF5QixjQUd2QixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsZ0JBQWdCLEVBQUUsZUFBZTt3QkFDakMsOEJBQThCO3dCQUM5QixxQ0FBcUM7d0JBQ3JDLGdDQUFnQzt3QkFDaEMsc0NBQXNDO3FCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbIlxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgZWZmZWN0LCBFZmZlY3RSZWYsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgVGVtcGxhdGVSZWYsIHVudHJhY2tlZCwgdmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElCdXR0b24sIExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cIjtcbmltcG9ydCB7IElJbnB1dEZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLWlucHV0XCI7XG5pbXBvcnQgeyBJSW5wdXRTZWFyY2hDb25maWcsIExpYnNVaUNvbXBvbmVudHNJbnB1dHNTZWFyY2hDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtc2VhcmNoXCI7XG5pbXBvcnQgeyBJVmFsaWRSZXF1aXJlZCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWlucHV0cy12YWxpZFwiO1xuaW1wb3J0IHsgSUxhYmVsLCBMaWJzVWlDb21wb25lbnRzTGFiZWxDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbFwiO1xuaW1wb3J0IHsgSUZsYWdNb3VzZSwgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyXCI7XG5pbXBvcnQgeyBJUGFnaW5nLCBUWVBFX1RFTVBMQVRFX1JFRiB9IGZyb20gXCJAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzXCI7XG5pbXBvcnQgeyBMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCJAbGlicy11aS9zZXJ2aWNlcy1keW5hbWljLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElELCBpc0VtcHR5LCBpc05pbCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCwgdGltZXIgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50QnlUeXBlLCBpbml0Q29uZmlnIH0gZnJvbSBcIi4vZGVmaW5lcy9saXN0LmRlZmluZVwiO1xuaW1wb3J0IHsgSURhdGFVcGRhdGVUb1N0b3JlLCBJTGlzdENvbmZpZ0l0ZW0sIElMaXN0RnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBJTGlzdERhdGFFbWl0S2V5LCBJTGlzdERhdGFFbWl0TXVsdGlLZXkgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2RhdGEtZW1pdC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgfSBmcm9tIFwiLi90ZW1wbGF0ZXMvdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTGFiZWxDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0lucHV0c1NlYXJjaENvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCByZWFkb25seSBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEID0gRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRDtcbiAgcHJvdGVjdGVkIGRpc2FibGVCdXR0b25VblNlbGVjdE9wdGlvbiA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgcHJvdGVjdGVkIGlzRXJyb3JSZXF1aXJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGtleVNlYXJjaFN0b3JlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIG9uRGVzdHJveTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25TZWFyY2g6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25SZWZyZXNoOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblNldEhpZGRlbkl0ZW1CeUtleTogU3ViamVjdDxBcnJheTx1bmtub3duPj4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uSXRlbUNoYW5nZVVuU2VsZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblJlbW92ZUl0ZW1zOiBTdWJqZWN0PEFycmF5PHVua25vd24+PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25VcGRhdGVEYXRhOiBTdWJqZWN0PElEYXRhVXBkYXRlVG9TdG9yZT4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGNsZWFuVXBFZmZlY3QhOiBFZmZlY3RSZWY7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8TGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdD47XG4gIHByaXZhdGUgY29uZmlnRGF0YSA9IHNpZ25hbDxJTGlzdENvbmZpZ0l0ZW0+KHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdpZCcsXG4gICAgICBnZXRWYWx1ZTogKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5sYWJlbCB8fCBpdGVtLm5hbWU7XG4gICAgICB9XG4gICAgfSlcbiAgfSk7XG4gIHByaXZhdGUgZ3JvdXBNdWx0aUtleVNlbGVjdGVkID0gc2lnbmFsPEFycmF5PHVua25vd24+PihbXSk7XG4gIHByaXZhdGUgZnVuY3Rpb25Db250cm9sSW5wdXRTZWFyY2ggPSBzaWduYWw8SUlucHV0RnVuY3Rpb25Db250cm9sRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBoaWRkZW5JbnB1dFNlYXJjaCA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4gfCB1bmRlZmluZWQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gZmFsc2UgfSk7XG4gIHJlYWRvbmx5IGRyb3Bkb3duVGFiS2V5QWN0aXZlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBrZXlTZWFyY2ggPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGl0ZW1DaGFuZ2VVblNlbGVjdCA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgcGFkZGluZ0xlZnRJdGVtID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8SUxpc3RDb25maWdJdGVtIHwgdW5kZWZpbmVkLCBJTGlzdENvbmZpZ0l0ZW0gfCB1bmRlZmluZWQ+KHRoaXMuY29uZmlnRGF0YSgpLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyB0aGlzLmNvbmZpZ0RhdGEoKSB9KTtcbiAgcmVhZG9ubHkgYXV0b1NlbGVjdGVkRmlyc3RJdGVtQ2FsbE91dHNpZGVCZWZvcmUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgaXNTZWFyY2hPbmxpbmUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUxhYmVsID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbGFiZWxDb25maWcgPSBpbnB1dDxJTGFiZWw+KCk7XG4gIHJlYWRvbmx5IHNlYXJjaENvbmZpZyA9IGlucHV0PElJbnB1dFNlYXJjaENvbmZpZywgSUlucHV0U2VhcmNoQ29uZmlnIHwgdW5kZWZpbmVkPih7fSwgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlIHx8IHt9IH0pO1xuICByZWFkb25seSBzZWFyY2hQYWRkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZGl2aWRlckNsYXNzSW5jbHVkZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaGFzRGl2aWRlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBidXR0b25zT3RoZXIgPSBpbnB1dDxBcnJheTxJQnV0dG9uPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaGFzQnV0dG9uVW5TZWxlY3RPcHRpb24gPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBjbGlja0V4YWN0bHkgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBiYWNrZ3JvdW5kTGlzdEN1c3RvbSA9IGlucHV0PHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPignYmctWyNmZmZmZmZdJywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICdiZy1bI2ZmZmZmZl0nIH0pO1xuICByZWFkb25seSBtYXhJdGVtU2hvdyA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkga2V5U2VsZWN0ZWQgPSBpbnB1dDx1bmtub3duPigpO1xuICByZWFkb25seSBtdWx0aUtleVNlbGVjdGVkID0gaW5wdXQ8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7Ly8gbMawdSDDvSBraGkgc+G7rSBk4bulbmcgbGlzdHZpZXdcbiAgcmVhZG9ubHkga2V5c0Rpc2FibGVJdGVtID0gaW5wdXQ8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIGtow7RuZyBkw7luZyBnacOhIHRy4buLIG7DoHkga+G6v3QgaOG7o3AgduG7m2kgdGVtcGxhdGUgY2hlY2tib3ggY8OzIGNvbmZpZyBjaOG7qWEgY29uZmlnQ2hlY2tib3hDaGVja0FsbFxuICByZWFkb25seSBrZXlzSGlkZGVuSXRlbSA9IGlucHV0PEFycmF5PHVua25vd24+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpOyAvLyBraMO0bmcgZMO5bmcgZ2nDoSB0cuG7iyBuw6B5IGvhur90IGjhu6NwIHbhu5tpIHRlbXBsYXRlIGNoZWNrYm94IGPDsyBjb25maWcgY2jhu6lhIGNvbmZpZ0NoZWNrYm94Q2hlY2tBbGxcbiAgcmVhZG9ubHkgZm9jdXNJbnB1dFNlYXJjaCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHNraXBGb2N1c0lucHV0V2hlbktleVNlYXJjaFN0b3JlVW5kZWZpbmVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0ID0gaW5wdXQ8KCgpID0+IEFycmF5PGFueT4pIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB2YWxpZFJlcXVpcmVkID0gaW5wdXQ8SVZhbGlkUmVxdWlyZWQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHNob3dWYWxpZGF0ZUJvdHRvbSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgbG9hZGluZ0ljb25TaXplID0gaW5wdXQ8J2xhcmdlJyB8ICdtZWRpdW0nIHwgJ3NtYWxsJyB8ICdzbWFsbGVyJyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEgPSBpbnB1dDxUZW1wbGF0ZVJlZjxUWVBFX1RFTVBMQVRFX1JFRj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlc2V0S2V5V2hlblNlbGVjdEFsbEtleURyb3Bkb3duID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaWdub3JlQ2xhc3NEaXNhYmxlRGVmYXVsdFdoZW5Vc2VLZXlzRGlzYWJsZUl0ZW0gPSBpbnB1dDxib29sZWFuPigpOyAvLyBi4buPIGNo4bq/IMSR4buZIGRpc2FibGUgaXRlbSB0csOqbiBodG1sIMSR4buDIGRpc2FibGUgdOG7q25nIHBo4bqnbiB0cm9uZyByb3dzXG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0U2VsZWN0S2V5ID0gb3V0cHV0PElMaXN0RGF0YUVtaXRLZXkgfCB1bmRlZmluZWQ+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNo4buNbiAxXG4gIHJlYWRvbmx5IG91dFNlbGVjdE11bHRpS2V5ID0gb3V0cHV0PElMaXN0RGF0YUVtaXRNdWx0aUtleSB8IHVuZGVmaW5lZD4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2hvIHBow6lwIGNo4buNbiBuaGnhu4F1LlxuICByZWFkb25seSBvdXRVblNlbGVjdE11bHRpS2V5ID0gb3V0cHV0PEFycmF5PHVua25vd24+PigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dENsaWNrQnV0dG9uT3RoZXIgPSBvdXRwdXQ8SUJ1dHRvbj4oKTtcbiAgcmVhZG9ubHkgb3V0RmllbGRLZXkgPSBvdXRwdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBvdXRDaGFuZ2VWaWV3ID0gb3V0cHV0PEFycmF5PGFueT4+KCk7XG4gIHJlYWRvbmx5IG91dEtleVNlYXJjaCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRpbmcgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25zQ29udHJvbCA9IG91dHB1dDxJTGlzdEZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3ZlciA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuICByZWFkb25seSBvdXRMb2FkSXRlbXNDb21wbGV0ZSA9IG91dHB1dDx7IGl0ZW1zOiBBcnJheTxhbnk+LCBwYWdpbmc/OiBJUGFnaW5nIH0+KCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcm90ZWN0ZWQgbGlzdFZpZXdFbGVtZW50UmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdsaXN0Vmlld0NvbnRhaW5lcicpO1xuICBwcm90ZWN0ZWQgY29udGVudEVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2NvbnRlbnRDb250YWluZXInKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlID0gaW5qZWN0KExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNsZWFuVXBFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmtleVNlYXJjaCgpO1xuXG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5rZXlTZWFyY2hTdG9yZSgpID09PSB0aGlzLmtleVNlYXJjaCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMua2V5U2VhcmNoU3RvcmUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblNlYXJjaC5uZXh0KHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBpdGVtQ2hhbmdlVW5TZWxlY3QgPSB0aGlzLml0ZW1DaGFuZ2VVblNlbGVjdCgpO1xuICAgICAgY29uc3Qga2V5c0Rpc2FibGVJdGVtID0gdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKTtcbiAgICAgIGNvbnN0IGtleXNIaWRkZW5JdGVtID0gdGhpcy5rZXlzSGlkZGVuSXRlbSgpO1xuICAgICAgY29uc3QgZGlzYWJsZSA9IHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBrZXlTZWxlY3RlZCA9IHRoaXMua2V5U2VsZWN0ZWQoKTtcbiAgICAgICAgY29uc3QgbXVsdGlLZXlTZWxlY3RlZCA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpO1xuICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZVVuU2VsZWN0Lm5leHQoaXRlbUNoYW5nZVVuU2VsZWN0KTtcblxuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNFbXB0eShrZXlzRGlzYWJsZUl0ZW0pKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleXNEaXNhYmxlSXRlbScsIGtleXNEaXNhYmxlSXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0VtcHR5KGtleXNIaWRkZW5JdGVtKSkge1xuICAgICAgICAgIHRoaXMub25TZXRIaWRkZW5JdGVtQnlLZXkubmV4dChrZXlzSGlkZGVuSXRlbSB8fCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0VtcHR5KGRpc2FibGUpKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2Rpc2FibGUnLCBkaXNhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzRW1wdHkoa2V5U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleVNlbGVjdGVkJywga2V5U2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ0RhdGEoKT8udHlwZSA9PT0gJ2dyb3VwJyAmJiAhaXNFbXB0eShtdWx0aUtleVNlbGVjdGVkKSkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdtdWx0aUtleVNlbGVjdGVkJywgbXVsdGlLZXlTZWxlY3RlZCk7XG4gICAgICAgICAgdGhpcy5vblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cC5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGVmZmVjdCh0aGlzLnJlZnJlc2guYmluZCh0aGlzKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh7XG4gICAgICBjaGVja0lzVmFsaWQ6IHRoaXMuY2hlY2tJc1ZhbGlkLmJpbmQodGhpcyksXG4gICAgICByZWZyZXNoOiB0aGlzLnJlZnJlc2guYmluZCh0aGlzKSxcbiAgICAgIHJlc2V0S2V5U2VsZWN0ZWQ6IHRoaXMuaGFuZGxlclJlbW92ZUtleVNlbGVjdGVkLmJpbmQodGhpcyksXG4gICAgICBnZXRSZWN0TGlzdFZpZXc6IGFzeW5jICgpID0+IHRoaXMubGlzdFZpZXdFbGVtZW50UmVmKCk/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICByZW1vdmVJdGVtczogYXN5bmMgKGtleXMpID0+IHRoaXMub25SZW1vdmVJdGVtcy5uZXh0KGtleXMpLFxuICAgICAgdXBkYXRlRGF0YTogYXN5bmMgKGRhdGEpID0+IHRoaXMub25VcGRhdGVEYXRhLm5leHQoZGF0YSlcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWdEYXRhLnNldCh0aGlzLmNsb25lQ29uZmlnKGNvbmZpZykpXG4gICAgfVxuICAgIGluaXRDb25maWcodGhpcy5jb25maWdEYXRhKCkpO1xuICAgIGNvbnN0IGNvbXBDbGFzcyA9IGdldENvbXBvbmVudEJ5VHlwZSh0aGlzLmNvbmZpZ0RhdGEoKS50eXBlKTtcblxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wQ2xhc3MpO1xuXG4gICAgdGltZXIoMCkucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5hZGRUb0VsZW1lbnQodGhpcy5jb21wb25lbnRSZWYsIHRoaXMuY29udGVudEVsZW1lbnRSZWYoKT8ubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uU2V0SGlkZGVuSXRlbUJ5S2V5JywgdGhpcy5vblNldEhpZGRlbkl0ZW1CeUtleSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2NvbmZpZycsIHRoaXMuY29uZmlnRGF0YSgpKTtcblxuICAgIGlmICh0aGlzLnNlYXJjaENvbmZpZygpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2VhcmNoQ29uZmlnJywgdGhpcy5zZWFyY2hDb25maWcoKSk7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdvblNlYXJjaCcsIHRoaXMub25TZWFyY2gpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdvblJlZnJlc2gnLCB0aGlzLm9uUmVmcmVzaCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uVXBkYXRlRGF0YScsIHRoaXMub25VcGRhdGVEYXRhKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5U2VhcmNoJywgdGhpcy5rZXlTZWFyY2hTdG9yZSgpID8/ICcnKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnZHJvcGRvd25UYWJLZXlBY3RpdmUnLCB0aGlzLmRyb3Bkb3duVGFiS2V5QWN0aXZlKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdjbGlja0V4YWN0bHknLCB0aGlzLmNsaWNrRXhhY3RseSgpIHx8IGZhbHNlKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnZGlzYWJsZScsIHRoaXMuZGlzYWJsZSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnYXV0b1NlbGVjdGVkRmlyc3RJdGVtQ2FsbE91dHNpZGVCZWZvcmUnLCB0aGlzLmF1dG9TZWxlY3RlZEZpcnN0SXRlbUNhbGxPdXRzaWRlQmVmb3JlKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdwYWRkaW5nTGVmdEl0ZW0nLCB0aGlzLnBhZGRpbmdMZWZ0SXRlbSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgncmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24nLCB0aGlzLnJlc2V0S2V5V2hlblNlbGVjdEFsbEtleURyb3Bkb3duKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdpZ25vcmVDbGFzc0Rpc2FibGVEZWZhdWx0V2hlblVzZUtleXNEaXNhYmxlSXRlbScsIHRoaXMuaWdub3JlQ2xhc3NEaXNhYmxlRGVmYXVsdFdoZW5Vc2VLZXlzRGlzYWJsZUl0ZW0oKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2Z1bmN0aW9uR2V0SXRlbXNBdXRvQWRkTGlzdCcsIHRoaXMuZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0KCkpO1xuICAgIGlmICh0aGlzLm1heEl0ZW1TaG93KCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdtYXhJdGVtU2hvdycsIHRoaXMubWF4SXRlbVNob3coKSk7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdrZXlTZWxlY3RlZCcsIHRoaXMua2V5U2VsZWN0ZWQoKSk7XG4gICAgaWYgKHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnbXVsdGlLZXlTZWxlY3RlZCcsIHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleXNEaXNhYmxlSXRlbScsIHRoaXMua2V5c0Rpc2FibGVJdGVtKCkgfHwgW10pO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdrZXlzSGlkZGVuSXRlbScsIHRoaXMua2V5c0hpZGRlbkl0ZW0oKSB8fCBbXSk7XG4gICAgaWYgKCFpc05pbCh0aGlzLmtleVNlbGVjdGVkKCkpIHx8IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uLnNldChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdvbkl0ZW1DaGFuZ2VVblNlbGVjdCcsIHRoaXMub25JdGVtQ2hhbmdlVW5TZWxlY3QpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdvblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cCcsIHRoaXMub25VcGRhdGVNdWx0aUtleVNlbGVjdGVkR3JvdXApO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdvblJlbW92ZUl0ZW1zJywgdGhpcy5vblJlbW92ZUl0ZW1zKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnekluZGV4JywgdGhpcy56SW5kZXgoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2lzU2VhcmNoT25saW5lJywgdGhpcy5pc1NlYXJjaE9ubGluZSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnZGlzYWJsZUxhYmVsJywgdGhpcy5kaXNhYmxlTGFiZWwoKSB8fCBmYWxzZSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2xvYWRpbmdJY29uU2l6ZScsIHRoaXMubG9hZGluZ0ljb25TaXplKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCd0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YScsIHRoaXMudGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSk7XG4gICAgbGV0IGtleVNlYXJjaCA9ICcnO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcblxuICAgIGluc3RhbmNlLm91dENoYW5nZVZpZXcuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5vdXRDaGFuZ2VWaWV3LmVtaXQoZGF0YSk7XG5cbiAgICAgIGlmICh0aGlzLnNraXBGb2N1c0lucHV0V2hlbktleVNlYXJjaFN0b3JlVW5kZWZpbmVkKCkgJiYgaXNOaWwodGhpcy5rZXlTZWFyY2hTdG9yZSgpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mb2N1c0lucHV0U2VhcmNoKCkgJiYgdGhpcy5rZXlTZWFyY2hTdG9yZSgpICE9PSBrZXlTZWFyY2gpIHtcbiAgICAgICAga2V5U2VhcmNoID0gdGhpcy5rZXlTZWFyY2hTdG9yZSgpIHx8ICcnO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uQ29udHJvbElucHV0U2VhcmNoKCk/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaW5zdGFuY2Uub3V0U2VsZWN0S2V5LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uLnNldChmYWxzZSk7XG4gICAgICB0aGlzLm91dFNlbGVjdEtleS5lbWl0KGRhdGEpO1xuICAgICAgdGhpcy5jaGVja0lzVmFsaWQoKTtcbiAgICB9KTtcbiAgICBpbnN0YW5jZS5vdXRGaWVsZEtleS5zdWJzY3JpYmUoKGZpZWxkS2V5Pzogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLm91dEZpZWxkS2V5LmVtaXQoZmllbGRLZXkpO1xuICAgIH0pO1xuICAgIGluc3RhbmNlLm91dExvYWRpbmcuc3Vic2NyaWJlKChsb2FkaW5nOiBib29sZWFuKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGxvYWRpbmcpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQobG9hZGluZyk7XG4gICAgfSk7XG4gICAgaW5zdGFuY2Uub3V0TG9hZEl0ZW1zQ29tcGxldGUuc3Vic2NyaWJlKChldmVudDogeyBpdGVtczogQXJyYXk8YW55PiwgcGFnaW5nPzogSVBhZ2luZyB9KSA9PiB7XG4gICAgICB0aGlzLm91dExvYWRJdGVtc0NvbXBsZXRlLmVtaXQoZXZlbnQpO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLmNvbmZpZygpICYmIHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGV4dCAmJiB0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVRleHQ/LigpPy5hY3Rpb25Tb3J0KSB7XG4gICAgICBpbnN0YW5jZS5vdXRTb3J0U2luZ2xlU2VsZWN0LnN1YnNjcmliZShpdGVtU29ydCA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmNvbmZpZ1RlbXBsYXRlVGV4dCAmJiBjb25maWcuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmFjdGlvblNvcnQpIHtcbiAgICAgICAgICBjb25maWcuY29uZmlnVGVtcGxhdGVUZXh0KCk/Lml0ZW1Tb3J0Py5zZXQoaXRlbVNvcnQpO1xuICAgICAgICAgIGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQoKT8uYWN0aW9uU29ydD8uKGl0ZW1Tb3J0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGluc3RhbmNlLm91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyLnN1YnNjcmliZSgoZmxhZzogSUZsYWdNb3VzZSkgPT4ge1xuICAgICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5lbWl0KGZsYWcpO1xuICAgIH0pO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmNvbmZpZ0RhdGEoKT8udHlwZTtcblxuICAgIGlmICh0eXBlID09PSAndGV4dCcgfHwgdHlwZSA9PT0gJ3JhZGlvJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbnN0YW5jZS5vdXRTZWxlY3RNdWx0aUtleS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25VblNlbGVjdE9wdGlvbi5zZXQoZmFsc2UpO1xuICAgICAgaWYgKHR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cE11bHRpS2V5U2VsZWN0ZWQuc2V0KGRhdGEua2V5cyk7XG4gICAgICB9XG4gICAgICB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQoZGF0YSk7XG4gICAgICB0aGlzLmNoZWNrSXNWYWxpZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBoYW5kbGVyU2VhcmNoKGtleVNlYXJjaDogc3RyaW5nKSB7XG4gICAgdGhpcy5rZXlTZWFyY2hTdG9yZS5zZXQoa2V5U2VhcmNoKTtcbiAgICB0aGlzLm9uU2VhcmNoLm5leHQoa2V5U2VhcmNoKTtcbiAgICB0aGlzLm91dEtleVNlYXJjaC5lbWl0KGtleVNlYXJjaCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlclJlbW92ZUtleVNlbGVjdGVkKCkge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vdXRTZWxlY3RLZXkuZW1pdCh1bmRlZmluZWQpO1xuICAgIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdrZXlTZWxlY3RlZCcsICcnKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnbXVsdGlLZXlTZWxlY3RlZCcsIHVuZGVmaW5lZCk7XG4gICAgdGhpcy5kaXNhYmxlQnV0dG9uVW5TZWxlY3RPcHRpb24uc2V0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnRGF0YSgpPy50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICB0aGlzLm9uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwLm5leHQoKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jaGVja0lzVmFsaWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tCdXR0b25PdGhlcihidXR0b246IElCdXR0b24pIHtcbiAgICB0aGlzLm91dENsaWNrQnV0dG9uT3RoZXIuZW1pdChidXR0b24pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGdW5jdGlvbkNvbnRyb2xJbnB1dFNlYXJjaChldmVudDogSUlucHV0RnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLmZ1bmN0aW9uQ29udHJvbElucHV0U2VhcmNoLnNldChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrSXNWYWxpZCgpIHtcbiAgICBpZiAoIXRoaXMudmFsaWRSZXF1aXJlZCB8fCAhdGhpcy5jb25maWcoKT8udHlwZSB8fCAhdGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlKSB7XG4gICAgICB0aGlzLmlzRXJyb3JSZXF1aXJlZC5zZXQoZmFsc2UpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuY29uZmlnKCk/LnR5cGU7XG4gICAgbGV0IGhhc0tleSA9ICFpc0VtcHR5KHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm11bHRpS2V5U2VsZWN0ZWQpO1xuXG4gICAgaWYgKHR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIGhhc0tleSA9ICFpc0VtcHR5KHRoaXMuZ3JvdXBNdWx0aUtleVNlbGVjdGVkKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICd0ZXh0JyB8fCB0eXBlID09PSAncmFkaW8nKSB7XG4gICAgICBoYXNLZXkgPSAhaXNOaWwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uua2V5U2VsZWN0ZWQpO1xuICAgIH1cbiAgICB0aGlzLmlzRXJyb3JSZXF1aXJlZC5zZXQoIWhhc0tleSk7XG5cbiAgICByZXR1cm4gaGFzS2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kcm9wZG93blRhYktleUFjdGl2ZSgpO1xuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5zZXQodGhpcy5jbG9uZUNvbmZpZyhjb25maWcpKTtcbiAgICAgIHRoaXMub25SZWZyZXNoLm5leHQoKTtcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZUNvbmZpZyhjb25maWdJbnB1dDogSUxpc3RDb25maWdJdGVtKTogSUxpc3RDb25maWdJdGVtIHtcbiAgICBpZiAoIWNvbmZpZ0lucHV0KSB7XG4gICAgICByZXR1cm4ge30gYXMgYW55O1xuICAgIH1cbiAgICBjb25zdCBzZXJ2aWNlT3RoZXIgPSBjb25maWdJbnB1dC5odHRwUmVxdWVzdERhdGE/LigpPy5zZXJ2aWNlT3RoZXI7XG4gICAgY29uc3Qgc2VydmljZU90aGVyUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdCA9IGNvbmZpZ0lucHV0LmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3g/LigpPy5odHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdD8uKCk/LnNlcnZpY2VPdGhlcjtcblxuICAgIGlmIChzZXJ2aWNlT3RoZXIpIHtcbiAgICAgIGNvbmZpZ0lucHV0Lmh0dHBSZXF1ZXN0RGF0YT8udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBkZWxldGUgY3VycmVudC5zZXJ2aWNlT3RoZXI7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc2VydmljZU90aGVyUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdCkge1xuICAgICAgY29uZmlnSW5wdXQuY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCk/Lmh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0Py51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGRlbGV0ZSBjdXJyZW50LnNlcnZpY2VPdGhlcjtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSBjbG9uZURlZXAoY29uZmlnSW5wdXQpIGFzIElMaXN0Q29uZmlnSXRlbTtcblxuICAgIGlmIChzZXJ2aWNlT3RoZXIgJiYgY29uZmlnLmh0dHBSZXF1ZXN0RGF0YSkge1xuICAgICAgY29uZmlnLmh0dHBSZXF1ZXN0RGF0YS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2VydmljZU90aGVyID0gc2VydmljZU90aGVyO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2VPdGhlclJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3QgJiYgY29uZmlnLmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3gpIHtcbiAgICAgIGNvbmZpZy5jb25maWdUZW1wbGF0ZUNoZWNrYm94Py4oKT8uaHR0cFJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3Q/LnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgY3VycmVudC5zZXJ2aWNlT3RoZXIgPSBzZXJ2aWNlT3RoZXI7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbGVhblVwRWZmZWN0LmRlc3Ryb3koKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5yZW1vdmUodGhpcy5jb21wb25lbnRSZWYpO1xuICAgIHRoaXMub25SZWZyZXNoLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNlYXJjaC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25TZXRIaWRkZW5JdGVtQnlLZXkuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cbn0iLCI8ZGl2ICNsaXN0Vmlld0NvbnRhaW5lclxuICBjbGFzcz1cImZsZXggZmxleC1jb2xcIlxuICBbY2xhc3Mudy1mdWxsXT1cIiFtYXhJdGVtU2hvd1wiXG4gIFtjbGFzcy5oLWZ1bGxdPVwiIW1heEl0ZW1TaG93XCI+XG4gIEBpZiAobGFiZWxDb25maWcoKTsgYXMgbGFiZWxDb25maWcpIHtcbiAgICA8bGlic191aS1jb21wb25lbnRzLWxhYmVsIFtjbGFzc0luY2x1ZGVdPVwibGFiZWxDb25maWcuY2xhc3NJbmNsdWRlXCJcbiAgICAgIFtsYWJlbExlZnRdPVwibGFiZWxDb25maWcubGFiZWxMZWZ0XCJcbiAgICAgIFtsYWJlbExlZnRDbGFzc109XCJsYWJlbENvbmZpZy5sYWJlbExlZnRDbGFzc1wiXG4gICAgICBbcmVxdWlyZWRdPVwibGFiZWxDb25maWcucmVxdWlyZWQgXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5kZXNjcmlwdGlvblwiXG4gICAgICBbZGVzY3JpcHRpb25DbGFzc109XCJsYWJlbENvbmZpZy5kZXNjcmlwdGlvbkNsYXNzXCJcbiAgICAgIFtsYWJlbFJpZ2h0XT1cImxhYmVsQ29uZmlnLmxhYmVsUmlnaHRcIlxuICAgICAgW2xhYmVsUmlnaHRDbGFzc109XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0Q2xhc3NcIlxuICAgICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICBbYnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuYnV0dG9uc0xlZnRcIlxuICAgICAgW2J1dHRvbnNSaWdodF09XCJsYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgW2Rpc2FibGVCdXR0b25zTGVmdF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0xlZnQgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc1JpZ2h0XT1cImxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zUmlnaHQgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtoYXNUb2dnbGVdPVwibGFiZWxDb25maWcuaGFzVG9nZ2xlXCJcbiAgICAgIFt0b2dnbGVBY3RpdmVdPVwibGFiZWxDb25maWcudG9nZ2xlQWN0aXZlXCJcbiAgICAgIFt0b2dnbGVEaXNhYmxlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZURpc2FibGUgfHwgbG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICBbcG9wb3Zlcl09XCJsYWJlbENvbmZpZy5wb3BvdmVyXCJcbiAgICAgIFtpY29uUG9wb3ZlckNsYXNzXT1cImxhYmVsQ29uZmlnLmljb25Qb3BvdmVyQ2xhc3NcIlxuICAgICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICBbbGltaXRMZW5ndGhdPVwibGFiZWxDb25maWcubGltaXRMZW5ndGhcIlxuICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25cIlxuICAgICAgW2Rpc2FibGVCdXR0b25zRGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNEZXNjcmlwdGlvbiB8fCBkaXNhYmxlKClcIlxuICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbkNvbnRhaW5lckNsYXNzXT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvbkNvbnRhaW5lckNsYXNzXCJcbiAgICAgIFtjb3VudF09XCJsYWJlbENvbmZpZy5jb3VudFwiIC8+XG4gIH1cblxuICBAaWYgKCFzaG93VmFsaWRhdGVCb3R0b20oKSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVZhbGlkYXRlXCIgLz5cbiAgfVxuICBAaWYgKCFoaWRkZW5JbnB1dFNlYXJjaCgpKSB7XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtc2VhcmNoIFtzZWFyY2hDb25maWddPVwic2VhcmNoQ29uZmlnKClcIlxuICAgICAgW2NsYXNzLnB4LVsxMnB4XV09XCJzZWFyY2hQYWRkaW5nKClcIlxuICAgICAgW2NsYXNzXT1cInNlYXJjaENvbmZpZygpLmNsYXNzQ292ZXJJbnB1dFNlYXJjaFwiXG4gICAgICBbZGlzYWJsZV09XCIgZGlzYWJsZSgpIHx8IGxvYWRpbmcoKSB8fCBmYWxzZVwiXG4gICAgICAob3V0U2VhcmNoKT1cImhhbmRsZXJTZWFyY2goJGV2ZW50KVwiXG4gICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25Db250cm9sSW5wdXRTZWFyY2goJGV2ZW50KVwiIC8+XG4gIH1cbiAgQGlmIChjb25maWcoKT8uY29uZmlnRGVzY3JpcHRpb25Hcm91cD8uKCk7IGFzIGRlc2NyaXB0aW9uKSB7XG4gICAgPGRpdiBbY2xhc3NdPVwiZGVzY3JpcHRpb24/LmNsYXNzSW5jbHVkZVwiPlxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyIFtjb25maWddPVwiZGVzY3JpcHRpb24/LnRvb2x0aXBEZXNjcmlwdGlvbigpXCI+XG4gICAgICAgIDxkaXYgW2NsYXNzXT1cImRlc2NyaXB0aW9uPy5jbGFzc1RleHREZXNjcmlwdGlvbkluY2x1ZGVcIj57eyBkZXNjcmlwdGlvbi50ZXh0RGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgIDwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmICghaGlkZGVuSW5wdXRTZWFyY2goKSAmJiBoYXNEaXZpZGVyKCkgJiYgKCFjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoIHx8IGtleVNlYXJjaFN0b3JlKCkpKSB7XG4gICAgPGRpdiBjbGFzcz1cImxpYnMtdWktYm9yZGVyLXRvcC1nZW5lcmFsIHt7IGRpdmlkZXJDbGFzc0luY2x1ZGUoKSA/IGRpdmlkZXJDbGFzc0luY2x1ZGUoKTonJyB9fVwiXG4gICAgICBbY2xhc3MubGlicy11aS1kaXZpZGVyLWRlZmF1bHRdPVwiISFzZWFyY2hQYWRkaW5nKCkgJiYgIWRpdmlkZXJDbGFzc0luY2x1ZGUoKVwiPlxuICAgIDwvZGl2PlxuICB9XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHt7IChjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoICYmIGtleVNlYXJjaFN0b3JlKCkgJiYgIWNvbmZpZygpPy5pZ25vcmVGaXhIZWlnaHRTaG93RGF0YVdoZW5Ob3RTZWFyY2gpID8gJ2gtWzM1M3B4XScgOiAnaC1mdWxsJyB9fVwiPlxuICAgIDxkaXYgI2NvbnRlbnRDb250YWluZXJcbiAgICAgIGNsYXNzPVwidy1mdWxsIGgtZnVsbCB7eyBiYWNrZ3JvdW5kTGlzdEN1c3RvbSgpIH19XCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpICYmIGRpc2FibGVMYWJlbCgpXCJcbiAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cImRpc2FibGUoKSAmJiBkaXNhYmxlTGFiZWwoKVwiPlxuICAgIDwvZGl2PlxuXG4gICAgQGZvciAoYnV0dG9uT3RoZXIgb2YgYnV0dG9uc090aGVyKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGRpdiBjbGFzcz1cImJnLVsjZmZmZmZmXVwiXG4gICAgICAgIFtjbGFzcy5yb3VuZGVkLWItWzRweF1dPVwiJGxhc3QgJiYgIWhhc0J1dHRvblVuU2VsZWN0T3B0aW9uKClcIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJidXR0b25PdGhlci50eXBlIHx8ICdidXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbk90aGVyLmxhYmVsIHx8ICcgJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiKGJ1dHRvbk90aGVyLmNsYXNzSWNvbkxlZnQgfHwgJycpKycgZmxleCBtci1bOHB4XSB0ZXh0LVsxNnB4XSdcIlxuICAgICAgICAgIGNsYXNzSW5jbHVkZT1cInctZnVsbCBsaWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbCB0ZXh0LWxlZnQgcm91bmRlZC0wIHt7IGJ1dHRvbk90aGVyLmNsYXNzSW5jbHVkZSA/IGJ1dHRvbk90aGVyLmNsYXNzSW5jbHVkZTonJyB9fVwiXG4gICAgICAgICAgY2xhc3NMYWJlbD1cImxpYnMtdWktZm9udC1oNXIgd2hpdGVzcGFjZS1ub3JtYWxcIlxuICAgICAgICAgIFtkaXNhYmxlXT1cImJ1dHRvbk90aGVyLmRpc2FibGUgfHwgZGlzYWJsZSgpIHx8IGxvYWRpbmcoKSB8fCBmYWxzZVwiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJDbGlja0J1dHRvbk90aGVyKGJ1dHRvbk90aGVyKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChoYXNCdXR0b25VblNlbGVjdE9wdGlvbigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYmctWyNmZmZmZmZdIHJvdW5kZWQtYi1bNHB4XVwiPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIGxhYmVsPVwiaTE4bl91bnNlbGVjdF9vcHRpb25cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b24tbGluay1kYW5nZXItaGlnaFwiXG4gICAgICAgICAgY2xhc3NJY29uTGVmdD1cImZsZXggbXItWzhweF0gbGlicy11aS1pY29uLWNsb3NlXCJcbiAgICAgICAgICBjbGFzc0luY2x1ZGU9XCJ3LTEwMCBsaWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbCB0ZXh0LWxlZnQgcm91bmRlZC0wXCJcbiAgICAgICAgICBjbGFzc0xhYmVsPVwibGlicy11aS1mb250LWg1ciB3aGl0ZXNwYWNlLW5vcm1hbFwiXG4gICAgICAgICAgW2Rpc2FibGVdPVwiZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uKCkgfHwgZGlzYWJsZSgpIHx8IGxvYWRpbmcoKSB8fCBmYWxzZVwiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJSZW1vdmVLZXlTZWxlY3RlZCgpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIEBpZiAoc2hvd1ZhbGlkYXRlQm90dG9tKCkpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVWYWxpZGF0ZVwiIC8+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlVmFsaWRhdGU+XG4gIEBpZiAoaXNFcnJvclJlcXVpcmVkKCkpIHtcbiAgICA8ZGl2IFtjbGFzcy5tYi1bOHB4XV09XCIhc2hvd1ZhbGlkYXRlQm90dG9tKClcIlxuICAgICAgW2NsYXNzLm10LVs4cHhdXT1cInNob3dWYWxpZGF0ZUJvdHRvbSgpXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtWyNlZTJkNDFdIGxpYnMtdWktZm9udC1oN1wiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiKHZhbGlkUmVxdWlyZWQoKT8ubWVzc2FnZSB8fCBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEKXwgdHJhbnNsYXRlOnZhbGlkUmVxdWlyZWQoKT8uaW50ZXJwb2xhdGVQYXJhbXNcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|