ngx-aur-mat-table 17.1.5 → 17.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/model/ColumnConfig.mjs +1 -1
- package/esm2022/lib/model/EmptyValue.mjs +1 -1
- package/esm2022/lib/ngx-aur-mat-table.component.mjs +3 -3
- package/esm2022/lib/providers/SelectionProvider.mjs +7 -7
- package/fesm2022/ngx-aur-mat-table.mjs +8 -8
- package/fesm2022/ngx-aur-mat-table.mjs.map +1 -1
- package/lib/model/ColumnConfig.d.ts +3 -2
- package/lib/model/EmptyValue.d.ts +1 -1
- package/lib/providers/SelectionProvider.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9tb2RlbC9Db2x1bW5Db25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFibGVSb3d9IGZyb20gXCIuL1RhYmxlUm93XCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnPFQ+IHtcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC60L7Qu9C+0L3QvtC6XHJcbiAgICovXHJcbiAgY29sdW1uc0NmZzogQ29sdW1uQ29uZmlnPFQ+W10sXHJcblxyXG4gIC8qKlxyXG4gICAqINCd0LDRgdGC0YDQvtC50LrQsCDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC/0L7RgNGP0LTQutC+0LLQvtCz0L4g0LjQvdC00LXQutGB0LAg0YHRgtGA0L7QutC4INCyINGC0LDQsdC70LjRhtC1XHJcbiAgICovXHJcbiAgaW5kZXhDZmc/OiBJbmRleENvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YHRgtGA0L7QutC4INC/0L7QuNGB0LrQsCDQsiDRgtCw0LHQu9C40YbQtVxyXG4gICAqL1xyXG4gIGZpbHRlckNmZz86IEZpbHRlckNvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LrQvdC+0L/QvtC6INC00LvRjyDRgdC+0LLQtdGA0YjQtdC90LjRjyDQtNC10LnRgdGC0LLQuNC5INGBINC+0LHRitC60YLQvtC8INCyINGB0YLRgNC+0LrQtVxyXG4gICAqL1xyXG4gIGFjdGlvbkNmZz86IEFjdGlvbkNvbmZpZzxUPixcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9tb2RlbC9Db2x1bW5Db25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFibGVSb3d9IGZyb20gXCIuL1RhYmxlUm93XCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnPFQ+IHtcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC60L7Qu9C+0L3QvtC6XHJcbiAgICovXHJcbiAgY29sdW1uc0NmZzogQ29sdW1uQ29uZmlnPFQ+W10sXHJcblxyXG4gIC8qKlxyXG4gICAqINCd0LDRgdGC0YDQvtC50LrQsCDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC/0L7RgNGP0LTQutC+0LLQvtCz0L4g0LjQvdC00LXQutGB0LAg0YHRgtGA0L7QutC4INCyINGC0LDQsdC70LjRhtC1XHJcbiAgICovXHJcbiAgaW5kZXhDZmc/OiBJbmRleENvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YHRgtGA0L7QutC4INC/0L7QuNGB0LrQsCDQsiDRgtCw0LHQu9C40YbQtVxyXG4gICAqL1xyXG4gIGZpbHRlckNmZz86IEZpbHRlckNvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LrQvdC+0L/QvtC6INC00LvRjyDRgdC+0LLQtdGA0YjQtdC90LjRjyDQtNC10LnRgdGC0LLQuNC5INGBINC+0LHRitC60YLQvtC8INCyINGB0YLRgNC+0LrQtVxyXG4gICAqL1xyXG4gIGFjdGlvbkNmZz86IEFjdGlvbkNvbmZpZzxUPixcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINGH0LXQutCx0L7QutGB0L7QslxyXG4gICAqL1xyXG4gIHNlbGVjdGlvbkNmZz86IFNlbGVjdGlvbkNvbmZpZzxUPixcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC/0LDQs9C40L3QsNGG0LjQuCDRgtCw0LHQu9C40YbRi1xyXG4gICAqL1xyXG4gIHBhZ2VhYmxlQ2ZnPzogUGFnaW5hdGlvbkNvbmZpZyxcclxuICBjbGlja0NmZz86IENsaWNrQ29uZmlnLFxyXG4gIHN0aWNreUNmZz86IFN0aWNreUNvbmZpZyxcclxuICB0YWJsZVZpZXc/OiBUYWJsZVZpZXcsXHJcbiAgdGFibGVIZWFkZXJCdXR0b25DZmc/OiBUYWJsZUhlYWRlckJ1dHRvbkNvbmZpZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrQ29uZmlnIHtcclxuICAvKipcclxuICAgKiBTaG93IHBvaW50ZXIgb24gaG92ZXJlZCByb3dcclxuICAgKi9cclxuICBwb2ludGVyPzogYm9vbGVhbjtcclxuICBoaWdobGlnaHRDbGlja2VkPzogRGVjb3JTdHlsZXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIGRlZmF1bHQgZmFsc2VcclxuICAgKiBmYWxzZSDQv9C10YDQstC+0LUg0Lgg0LLRgtC+0YDQvtC1INC90LDQttCw0YLQuNC1INCz0LXQvdC10YDQuNGA0YPQtdGCINGB0L7QsdGL0YLQuNC1INGBINGN0YLQvtC5INGB0YLRgNC+0LrQvtC5INCy0YvQtNC10LvQtdC90LjQtSDRgdC+INGB0YLRgNC+0LrQuCDQvdC1INGB0L3QuNC80LDQtdGC0YHRj1xyXG4gICAqXHJcbiAgICog0LXRgdC70LggdHJ1ZSDQv9C10YDQstC+0LUg0L3QsNC20LDRgtC40LUg0LPQtdC90LXRgNC40YDRg9C10YIg0YHQvtCx0YvRgtC40LUg0YEg0Y3RgtC+0Lkg0YHRgtGA0L7QutC+0LksINCy0YLQvtGA0L7QtSDQvdCw0LbQsNGC0LjQtSDQstC10YDQvdC10YIgdW5kZWZpbmVkLFxyXG4gICAqINC/0LXRgNCy0L7QtSDQvdCw0LbQsNGC0LjQtSDQstGL0LTQtdC70Y/QtdGCINGB0YLRgNC+0LrRgyDQstGC0L7RgNC+0LUg0L7RgtC80LXQvdGP0LXRgiDQstGL0LTQtdC70LXQvdC40LVcclxuICAgKi9cclxuICBjYW5jZWxhYmxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZWNvclN0eWxlcyB7XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgYmFja2dyb3VuZD86IHN0cmluZztcclxuICBib3JkZXI/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uQ29uZmlnPFQ+IHtcclxuICAvKiogY29sdW1uIHRpdGxlIHRleHQgKi9cclxuICBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBjb2x1bW4ga2V5IGluIGRhdGEgc291cmNlICovXHJcbiAga2V5OiBzdHJpbmc7XHJcblxyXG4gIC8qKiByZXR1cm4gdmFsdWUgdG8gc2F2ZSBpbiBNYXRUYWJsZURhdGFTb3VyY2UgKi9cclxuICB2YWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBUKSA9PiBhbnk7XHJcbiAgc29ydD86IFNvcnRDb25maWc8VD47XHJcbiAgaGVhZGVyVmlldz86IENvbHVtblZpZXc8c3RyaW5nPjtcclxuICB2YWx1ZVZpZXc/OiBDb2x1bW5WaWV3PCh2YWx1ZTogVGFibGVSb3c8VD4pID0+IHN0cmluZz47XHJcbiAgdG90YWxDb252ZXJ0ZXI/OiAodmFsdWU6IFRhYmxlUm93PFQ+W10pID0+IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUb3RhbFJvd1ZpZXcge1xyXG4gIHN0eWxlPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEljb25WaWV3PFQ+IHtcclxuICAvKiogaWNvbiBuYW1lICovXHJcbiAgbmFtZTogVDtcclxuXHJcbiAgLyoqIGljb24gY29sb3IgZGVmYXVsdCBibGFjayAqL1xyXG4gIGNvbG9yPzogVDtcclxuXHJcbiAgLyoqIGljb24gdG9vbHRpcCBpZiBudWxsIGRpc2FibGVkICovXHJcbiAgdG9vbHRpcD86IFQ7XHJcblxyXG4gIHBvc2l0aW9uPzogJ3JpZ2h0JyB8ICdsZWZ0JztcclxuXHJcbiAgd3JhcHBlcj86IEljb25XcmFwcGVyPFQ+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEljb25XcmFwcGVyPFQ+IHtcclxuICBjb2xvcjogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVZpZXc8VD4ge1xyXG4gIHNyYzogVDtcclxuICB3aWR0aD86IHN0cmluZztcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGV4dFZpZXc8VD4ge1xyXG4gIC8qKiBkZWZhdWx0IHRydWUqL1xyXG4gIHNob3c/OiBib29sZWFuO1xyXG4gIC8qKiB0b29sdGlwICovXHJcbiAgdG9vbHRpcD86IFQ7XHJcbiAgY29sb3I/OiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblZpZXc8VD4ge1xyXG5cclxuICAvKiogc2V0dGluZ3MgZm9yIGljb24gaW4gY29sdW1uICovXHJcbiAgaWNvbj86IEljb25WaWV3PFQ+O1xyXG5cclxuICBpbWFnZT86IEltYWdlVmlldzxUPlxyXG5cclxuICB0ZXh0PzogVGV4dFZpZXc8VD47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU29ydENvbmZpZzxUPiB7XHJcbiAgZW5hYmxlOiBib29sZWFuO1xyXG4gIHBvc2l0aW9uPzogJ3JpZ2h0JyB8ICdsZWZ0JztcclxuXHJcbiAgLyoqXHJcbiAgICogY29sdW1uIGtleVxyXG4gICAqL1xyXG4gIGN1c3RvbVNvcnQ/OiAoZGF0YTogVGFibGVSb3c8VD4sIGtleTogc3RyaW5nKSA9PiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhDb25maWcge1xyXG4gIGVuYWJsZTogYm9vbGVhbixcclxuXHJcbiAgLyoqINGB0LzQtdGJ0LXQvdC40LUg0LTQu9GPINC/0LXRgNCy0L7Qs9C+INC40L3QtNC10LrRgdCwINC90LDQv9GA0LjQvNC10YAgMSDRh9GC0L7QsdGLINC90YPQvNC10YDQsNGG0LjRjyDQvdCw0YfQsNC70LDRgdGMINGBIDEg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0L7RgiDQvdGD0LvRjyAqL1xyXG4gIG9mZnNldD86IG51bWJlcixcclxuXHJcbiAgaGVhZGVyQ29sdW1uPzogQ29sdW1uVmlldzxzdHJpbmc+XHJcblxyXG4gIC8qKiDQvdCw0LfQstCw0L3QuNC1INC00LvRjyDQutC+0LvQvtC90LrQuCwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4gJycqL1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ29uZmlnIHtcclxuICBlbmFibGU6IGJvb2xlYW47XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29uZmlnPFQ+IHtcclxuICBlbmFibGU/OiBib29sZWFuO1xyXG4gIGFjdGlvbnM6IEFjdGlvbjwodmFsdWU6IFQpID0+IHN0cmluZz5bXTtcclxuICBwb3NpdGlvbj86ICdzdGFydCcgfCAnZW5kJztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb248VD4ge1xyXG4gIGFjdGlvbjogVDtcclxuICBpY29uOiBJY29uVmlldzxUPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25Db25maWc8VD4ge1xyXG4gIHBvc2l0aW9uPzogJ3N0YXJ0JyB8ICdlbmQnO1xyXG4gIG11bHRpcGxlPzogYm9vbGVhbjtcclxuICBzaG93U2VsZWN0ZWRDb3VudD86IGJvb2xlYW47XHJcbiAgY29tcGFyZVdpdGg/OiAobzE6IFQsIG8yOiBUKSA9PiBib29sZWFuXHJcbiAgLy8gZGVmYXVsdDogdHJ1ZSwg0L/QvtC60LDQt9GL0LLQsNGC0YxcclxuICBzaG93VG90YWxDb3VudD86Ym9vbGVhbjtcclxuICBlbmFibGU6IGJvb2xlYW47XHJcbiAgYWN0aW9ucz86IEFjdGlvbjxzdHJpbmc+W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgZW5hYmxlOiBib29sZWFuO1xyXG4gIHNpemU6IG51bWJlcjtcclxuICBzaXplcz86IG51bWJlcltdO1xyXG4gIHN0eWxlPzogc3RyaW5nO1xyXG4gIHBvc2l0aW9uPzogJ3VuZGVyJyB8ICdib3R0b20nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0aWNreUNvbmZpZyB7XHJcbiAgaGVhZGVyPzogYm9vbGVhbjtcclxuICB0b3RhbD86IGJvb2xlYW47XHJcbiAgc3ViRm9vdGVyPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVZpZXcge1xyXG4gIGhlaWdodD86IHN0cmluZztcclxuICBtaW5IZWlnaHQ/OiBzdHJpbmc7XHJcbiAgbWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHRvdGFsUm93Vmlldz86IFRvdGFsUm93VmlldztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUhlYWRlckJ1dHRvbkNvbmZpZyB7XHJcbiAgZW5hYmxlOiBib29sZWFuO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgYmFja2dyb3VuZD86IHN0cmluZztcclxufVxyXG4iXX0=
|
|
@@ -26,4 +26,4 @@ export class EmptyValue {
|
|
|
26
26
|
static { this.RESIZE_OBSERVER = new ResizeObserver(() => {
|
|
27
27
|
}); }
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW1wdHlWYWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1hdXItbWF0LXRhYmxlL3NyYy9saWIvbW9kZWwvRW1wdHlWYWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxNQUFNLE9BQU8sVUFBVTthQUVFLHFCQUFnQixHQUF5QjtRQUM5RCxNQUFNLEVBQUUsS0FBSztLQUNkLENBQUE7YUFFc0Isa0JBQWEsR0FBc0I7UUFDeEQsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsRUFBRTtLQUNaLENBQUE7YUFFc0IsaUJBQVksR0FBZ0I7UUFDakQsTUFBTSxFQUFFLEtBQUs7S0FDZCxDQUFBO2FBRXNCLHNCQUFpQixHQUFxQjtRQUMzRCxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxDQUFDO1FBQ1AsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFBO2FBR3NCLGlCQUFZLEdBQXFCO1FBQ3RELFVBQVUsRUFBRSxFQUFFO1FBQ2QsWUFBWSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0I7UUFDekMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxhQUFhO1FBQ25DLFFBQVEsRUFBRSxVQUFVLENBQUMsWUFBWTtRQUNqQyxXQUFXLEVBQUUsVUFBVSxDQUFDLGlCQUFpQjtLQUMxQyxDQUFBO2FBRXNCLDBCQUFxQixHQUFzQyxJQUFJLGtCQUFrQixFQUFFLENBQUM7YUFFcEYsb0JBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUU7SUFDakUsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FjdGlvbkNvbmZpZywgSW5kZXhDb25maWcsIFBhZ2luYXRpb25Db25maWcsIFNlbGVjdGlvbkNvbmZpZywgVGFibGVDb25maWd9IGZyb20gXCIuLi9tb2RlbC9Db2x1bW5Db25maWdcIjtcclxuaW1wb3J0IHtUYWJsZVJvd30gZnJvbSBcIi4uL21vZGVsL1RhYmxlUm93XCI7XHJcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBFbXB0eVZhbHVlIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRUxFQ1RJT05fQ09ORklHOiBTZWxlY3Rpb25Db25maWc8YW55PiA9IHtcclxuICAgIGVuYWJsZTogZmFsc2UsXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9DT05GSUc6IEFjdGlvbkNvbmZpZzxhbnk+ID0ge1xyXG4gICAgZW5hYmxlOiBmYWxzZSxcclxuICAgIGFjdGlvbnM6IFtdXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElOREVYX0NPTkZJRzogSW5kZXhDb25maWcgPSB7XHJcbiAgICBlbmFibGU6IGZhbHNlLFxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQUdJTkFUSU9OX0NPTkZJRzogUGFnaW5hdGlvbkNvbmZpZyA9IHtcclxuICAgIGVuYWJsZTogZmFsc2UsXHJcbiAgICBzaXplOiAwLFxyXG4gICAgc2l6ZXM6IFtdXHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUQUJMRV9DT05GSUc6IFRhYmxlQ29uZmlnPGFueT4gPSB7XHJcbiAgICBjb2x1bW5zQ2ZnOiBbXSxcclxuICAgIHNlbGVjdGlvbkNmZzogRW1wdHlWYWx1ZS5TRUxFQ1RJT05fQ09ORklHLFxyXG4gICAgYWN0aW9uQ2ZnOiBFbXB0eVZhbHVlLkFDVElPTl9DT05GSUcsXHJcbiAgICBpbmRleENmZzogRW1wdHlWYWx1ZS5JTkRFWF9DT05GSUcsXHJcbiAgICBwYWdlYWJsZUNmZzogRW1wdHlWYWx1ZS5QQUdJTkFUSU9OX0NPTkZJR1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVRfVEFCTEVfREFUQV9TT1VSQ0U6IE1hdFRhYmxlRGF0YVNvdXJjZTxUYWJsZVJvdzxhbnk+PiA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoKTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRVNJWkVfT0JTRVJWRVIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gIH0pXHJcbn1cclxuIl19
|
|
@@ -279,7 +279,7 @@ export class NgxAurMatTableComponent {
|
|
|
279
279
|
this.resizeColumnOffsetsObserver.disconnect();
|
|
280
280
|
}
|
|
281
281
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: NgxAurMatTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
282
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", paginatorState: "paginatorState", highlight: "highlight" }, outputs: { sort: "sort", pageChange: "pageChange", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", selectionModel: "selectionModel", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets", onHeaderButton: "onHeaderButton" }, queries: [{ propertyName: "subFooterRowTemplate", first: true, predicate: NgxTableSubFooterRowDirective, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <ng-container>\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <div class=\"search-container\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\r\n </ng-container>\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"table-container\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\r\n class=\"table-settings-button\"\r\n [style.color]=\"headerButtonProvider.color\"\r\n [style.background-color]=\"headerButtonProvider.background\"\r\n (click)=\"onHeaderButton.emit($event)\">\r\n {{ headerButtonProvider.icon }}\r\n </mat-icon>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n {{ element.id + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n (\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ tableDataSource.filteredData.length }}</span>\r\n )\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Pagination -->\r\n @if (this.paginationProvider.isEnabled) {\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"tableConfig?.pageableCfg?.style\"\r\n [length]=\"paginatorState?.length\"\r\n [pageIndex]=\"paginatorState?.pageIndex\"\r\n (page)=\"pageChange.emit($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n }\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.bottom-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.bottom-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-mdc-cell,.aur-mat-table .new-color td.mat-mdc-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}.aur-mat-table .table-settings-button{position:absolute;right:4px;top:12px;cursor:pointer;border-radius:4px;padding-bottom:2px;padding-top:2px;z-index:9999999999}.mat-mdc-header-row th:last-child{padding-right:25px!important}.aur-mat-table .search-container{display:flex;gap:8px;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11.ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { kind: "pipe", type: i12.DataPropertyGetterPipe, name: "dataPropertyGetter" }], animations: [
|
|
282
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", paginatorState: "paginatorState", highlight: "highlight" }, outputs: { sort: "sort", pageChange: "pageChange", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", selectionModel: "selectionModel", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets", onHeaderButton: "onHeaderButton" }, queries: [{ propertyName: "subFooterRowTemplate", first: true, predicate: NgxTableSubFooterRowDirective, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <ng-container>\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <div class=\"search-container\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\r\n </ng-container>\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"table-container\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\r\n class=\"table-settings-button\"\r\n [style.color]=\"headerButtonProvider.color\"\r\n [style.background-color]=\"headerButtonProvider.background\"\r\n (click)=\"onHeaderButton.emit($event)\">\r\n {{ headerButtonProvider.icon }}\r\n </mat-icon>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n {{ element.id + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Pagination -->\r\n @if (this.paginationProvider.isEnabled) {\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"tableConfig?.pageableCfg?.style\"\r\n [length]=\"paginatorState?.length\"\r\n [pageIndex]=\"paginatorState?.pageIndex\"\r\n (page)=\"pageChange.emit($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n }\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.bottom-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.bottom-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-mdc-cell,.aur-mat-table .new-color td.mat-mdc-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}.aur-mat-table .table-settings-button{position:absolute;right:4px;top:12px;cursor:pointer;border-radius:4px;padding-bottom:2px;padding-top:2px;z-index:9999999999}.mat-mdc-header-row th:last-child{padding-right:25px!important}.aur-mat-table .search-container{display:flex;gap:8px;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i8.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i11.ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { kind: "pipe", type: i12.DataPropertyGetterPipe, name: "dataPropertyGetter" }], animations: [
|
|
283
283
|
trigger('detailExpand', [
|
|
284
284
|
state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
|
|
285
285
|
state(ExpandState.EXPANDED, style({ height: '*' })),
|
|
@@ -295,7 +295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
295
295
|
state(ExpandState.EXPANDED, style({ height: '*' })),
|
|
296
296
|
transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
297
297
|
]),
|
|
298
|
-
], template: "<div class=\"aur-mat-table\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <ng-container>\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <div class=\"search-container\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\r\n </ng-container>\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"table-container\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\r\n class=\"table-settings-button\"\r\n [style.color]=\"headerButtonProvider.color\"\r\n [style.background-color]=\"headerButtonProvider.background\"\r\n (click)=\"onHeaderButton.emit($event)\">\r\n {{ headerButtonProvider.icon }}\r\n </mat-icon>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n {{ element.id + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n (\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ tableDataSource.filteredData.length }}</span>\r\n )\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Pagination -->\r\n @if (this.paginationProvider.isEnabled) {\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"tableConfig?.pageableCfg?.style\"\r\n [length]=\"paginatorState?.length\"\r\n [pageIndex]=\"paginatorState?.pageIndex\"\r\n (page)=\"pageChange.emit($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n }\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.bottom-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.bottom-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-mdc-cell,.aur-mat-table .new-color td.mat-mdc-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}.aur-mat-table .table-settings-button{position:absolute;right:4px;top:12px;cursor:pointer;border-radius:4px;padding-bottom:2px;padding-top:2px;z-index:9999999999}.mat-mdc-header-row th:last-child{padding-right:25px!important}.aur-mat-table .search-container{display:flex;gap:8px;align-items:center}\n"] }]
|
|
298
|
+
], template: "<div class=\"aur-mat-table\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <ng-container>\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <div class=\"search-container\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchPrefix]\"></ng-content>\r\n </ng-container>\r\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSearchSuffix]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"table-container\"\r\n [ngClass]=\"{'bottom-pagination': paginationProvider.isEnabled && paginationProvider.position === 'bottom'}\">\r\n <mat-icon *ngIf=\"headerButtonProvider.isEnabled\"\r\n class=\"table-settings-button\"\r\n [style.color]=\"headerButtonProvider.color\"\r\n [style.background-color]=\"headerButtonProvider.background\"\r\n (click)=\"onHeaderButton.emit($event)\">\r\n {{ headerButtonProvider.icon }}\r\n </mat-icon>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element;\">\r\n {{ element.id + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ paginatorState?.length ? paginatorState?.length : tableDataSource.filteredData.length }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\">\r\n </tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Pagination -->\r\n @if (this.paginationProvider.isEnabled) {\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"tableConfig?.pageableCfg?.style\"\r\n [length]=\"paginatorState?.length\"\r\n [pageIndex]=\"paginatorState?.pageIndex\"\r\n (page)=\"pageChange.emit($event)\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n }\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table{display:flex;flex-direction:column}.aur-mat-table.bottom-pagination{height:100%}.aur-mat-table table{border-collapse:collapse}.aur-mat-table .table-container{position:relative}.aur-mat-table .table-container.bottom-pagination{flex-grow:1;overflow:auto}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-mdc-cell,.aur-mat-table .new-color td.mat-mdc-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}.aur-mat-table .table-settings-button{position:absolute;right:4px;top:12px;cursor:pointer;border-radius:4px;padding-bottom:2px;padding-top:2px;z-index:9999999999}.mat-mdc-header-row th:last-child{padding-right:25px!important}.aur-mat-table .search-container{display:flex;gap:8px;align-items:center}\n"] }]
|
|
299
299
|
}], ctorParameters: () => [], propDecorators: { displayColumns: [{
|
|
300
300
|
type: Input
|
|
301
301
|
}], subFooterRowTemplate: [{
|
|
@@ -348,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
348
348
|
}], highlight: [{
|
|
349
349
|
type: Input
|
|
350
350
|
}] } });
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBSU4sU0FBUyxFQUNULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsT0FBTyxFQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3hGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRXJHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsVUFB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RCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7Z0JBRUgsS0FBSztzQkFBNUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQUc3QixXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR29DLFlBQVk7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFSixPQUFPO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRXhCLElBQUk7c0JBQWIsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUdHLFdBQVc7c0JBQXBCLE1BQU07Z0JBSUcsUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxRQUFRO3NCQUFqQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBSUcsY0FBYztzQkFBdkIsTUFBTTtnQkF1QkUsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb2x1bW5WaWV3LCBUYWJsZUNvbmZpZ30gZnJvbSAnLi9tb2RlbC9Db2x1bW5Db25maWcnO1xyXG5pbXBvcnQge01hdFNvcnQsIFNvcnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQge01hdFRhYmxlRGF0YVNvdXJjZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQge01hdFBhZ2luYXRvciwgUGFnZUV2ZW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQge1NlbGVjdGlvblByb3ZpZGVyLCBTZWxlY3Rpb25Qcm92aWRlckR1bW15fSBmcm9tICcuL3Byb3ZpZGVycy9TZWxlY3Rpb25Qcm92aWRlcic7XHJcbmltcG9ydCB7QWN0aW9uRXZlbnQsIFJvd0FjdGlvblByb3ZpZGVyLCBSb3dBY3Rpb25Qcm92aWRlckR1bW15fSBmcm9tICcuL3Byb3ZpZGVycy9Sb3dBY3Rpb25Qcm92aWRlcic7XHJcbmltcG9ydCB7VGFibGVSb3d9IGZyb20gXCIuL21vZGVsL1RhYmxlUm93XCI7XHJcbmltcG9ydCB7VGFibGVWaWV3RmFjdG9yeX0gZnJvbSBcIi4vbW9kZWwvVGFibGVWaWV3RmFjdG9yeVwiO1xyXG5pbXBvcnQge0luZGV4UHJvdmlkZXIsIEluZGV4UHJvdmlkZXJEdW1teX0gZnJvbSBcIi4vcHJvdmlkZXJzL0luZGV4UHJvdmlkZXJcIjtcclxuaW1wb3J0IHtQYWdpbmF0aW9uUHJvdmlkZXIsIFBhZ2luYXRpb25Qcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvUGFnaW5hdGlvblByb3ZpZGVyXCI7XHJcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlRmFjdG9yeX0gZnJvbSBcIi4vZmFjdG9yaWVzL01hdFRhYmxlRGF0YVNvdXJjZUZhY3RvcnlcIjtcclxuaW1wb3J0IHtEaXNwbGF5Q29sdW1uc0ZhY3Rvcnl9IGZyb20gXCIuL2ZhY3Rvcmllcy9EaXNwbGF5Q29sdW1uc0ZhY3RvcnlcIjtcclxuaW1wb3J0IHtFbXB0eVZhbHVlfSBmcm9tIFwiLi9tb2RlbC9FbXB0eVZhbHVlXCI7XHJcbmltcG9ydCB7VG90YWxSb3dQcm92aWRlciwgVG90YWxSb3dQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvVG90YWxSb3dQcm92aWRlclwiO1xyXG5pbXBvcnQge05neEF1ckZpbHRlcnN9IGZyb20gXCIuL2ZpbHRlcnMvTmd4QXVyRmlsdGVyc1wiO1xyXG5pbXBvcnQge05neEF1ck1hdFRhYmxlUHVibGljfSBmcm9tIFwiLi9uZ3gtYXVyLW1hdC10YWJsZS1wdWJsaWNcIjtcclxuaW1wb3J0IHtPZmZzZXRVdGlsfSBmcm9tIFwiLi91dGlscy9vZmZzZXQudXRpbFwiO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHtOZ3hUYWJsZVN1YkZvb3RlclJvd0RpcmVjdGl2ZX0gZnJvbSBcIi4vZGlyZWN0aXZlL25neC10YWJsZS1zdWItZm9vdGVyLXJvdy5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQge0hlYWRlckJ1dHRvblByb3ZpZGVyLCBIZWFkZXJCdXR0b25Qcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvSGVhZGVyQnV0dG9uUHJvdmlkZXJcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yU3RhdGUge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sZW5ndGg6IG51bWJlciwgcHJpdmF0ZSBfcGFnZUluZGV4OiBudW1iZXIpIHtcclxuICB9XHJcblxyXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFnZUluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFnZUluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBQYWdpbmF0b3JTdGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IFBhZ2luYXRvclN0YXRlKDAsIDApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRDb250YWluZXI8VD4ge1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uT2Zmc2V0IHtcclxuICBsZWZ0OiBudW1iZXIsXHJcbiAgd2lkdGg6IG51bWJlcixcclxuICBrZXk6IHN0cmluZ1xyXG59XHJcblxyXG5lbnVtIEV4cGFuZFN0YXRlIHtcclxuICBDT0xMQVBTRUQgPSAnY29sbGFwc2VkJyxcclxuICBFWFBBTkRFRCA9ICdleHBhbmRlZCdcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdXItbWF0LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZShFeHBhbmRTdGF0ZS5DT0xMQVBTRUQsIHN0eWxlKHtoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJ30pKSxcclxuICAgICAgc3RhdGUoRXhwYW5kU3RhdGUuRVhQQU5ERUQsIHN0eWxlKHtoZWlnaHQ6ICcqJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbihgJHtFeHBhbmRTdGF0ZS5FWFBBTkRFRH0gPD0+ICR7RXhwYW5kU3RhdGUuQ09MTEFQU0VEfWAsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hBdXJNYXRUYWJsZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIE5neEF1ck1hdFRhYmxlUHVibGljPFQ+IHtcclxuXHJcbiAgZXhwYW5kZWRTdGF0ZUVudW0gPSBFeHBhbmRTdGF0ZTtcclxuXHJcbiAgcHVibGljIHRhYmxlRGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VGFibGVSb3c8VD4+KFtdKTtcclxuICBfZGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgX2N1c3RvbURpc3BsYXlDb2x1bW5zRW5hYmxlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgZGlzcGxheUNvbHVtbnMoY29sdW1uczogc3RyaW5nW10pIHtcclxuICAgIGlmIChjb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuX2Rpc3BsYXlDb2x1bW5zID0gWy4uLmNvbHVtbnNdO1xyXG4gICAgICB0aGlzLl9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQgPSBjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRhYmxlVmlldzogTWFwPHN0cmluZywgQ29sdW1uVmlldzxzdHJpbmc+PltdID0gW107XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoTmd4VGFibGVTdWJGb290ZXJSb3dEaXJlY3RpdmUpIHN1YkZvb3RlclJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGRyZW4oJ3Jvd0xpbmsnLCB7cmVhZDogRWxlbWVudFJlZn0pIHJvd3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7cmVhZDogRWxlbWVudFJlZn0pIHRhYmxlOiBFbGVtZW50UmVmO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQElucHV0KCkgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnPFQ+O1xyXG5cclxuICBASW5wdXQoKSB0YWJsZURhdGE6IFRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBleHRlbmRlZFJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vINC10YHQu9C4INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgdC10YDQstC10YDQvdGL0Lkg0L/QsNCz0LjQvdCw0YLQvtGALCDRgdGO0LTQsCDQv9C10YDQtdC00LDQtdGC0YHRjyDRgtC10LrRg9GJ0LXQtSDRgdC+0YHRgtC+0Y/QvdC40LUg0L/QsNCz0LjQvdCw0YLQvtGA0LBcclxuICBASW5wdXQoKSBwYWdpbmF0b3JTdGF0ZTogUGFnaW5hdG9yU3RhdGUgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwge3N0YXRpYzogZmFsc2V9KSBtYXRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7c3RhdGljOiB0cnVlfSkgbWF0U29ydDogTWF0U29ydDtcclxuXHJcbiAgQE91dHB1dCgpIHNvcnQ6IEV2ZW50RW1pdHRlcjxTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuXHJcbiAgLy8gZXZlbnRzIGlmIGVuYWJsZWQgYWN0aW9uc1xyXG4gIEBPdXRwdXQoKSBvblJvd0FjdGlvbjogRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+KCk7XHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgLy8gZXZlbnRzIGlmIGVuYWJsZWQgc2VsZWN0IGV2ZW50XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uRGVzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ZWRSb3dzQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUW10+PigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uTW9kZWwgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbk1vZGVsPFQ+PigpO1xyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuICAvKipcclxuICAgKiByZXR1cm4gZmlsdGVyZWQgcm93c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY29sdW1uT2Zmc2V0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uT2Zmc2V0W10+KCk7XHJcbiAgcHJpdmF0ZSBwcmV2Q29sdW1uT2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBbXTtcclxuXHJcbiAgaGVhZGVyQnV0dG9uUHJvdmlkZXIgPSBuZXcgSGVhZGVyQnV0dG9uUHJvdmlkZXJEdW1teSgpO1xyXG4gIEBPdXRwdXQoKSBvbkhlYWRlckJ1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHByaXZhdGUgcmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyOiBSZXNpemVPYnNlcnZlciA9IEVtcHR5VmFsdWUuUkVTSVpFX09CU0VSVkVSO1xyXG5cclxuICBzZWxlY3Rpb25Qcm92aWRlcjogU2VsZWN0aW9uUHJvdmlkZXI8VD4gPSBuZXcgU2VsZWN0aW9uUHJvdmlkZXJEdW1teSgpO1xyXG5cclxuICByb3dBY3Rpb25zUHJvdmlkZXI6IFJvd0FjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFJvd0FjdGlvblByb3ZpZGVyRHVtbXk8VD4oKTtcclxuXHJcbiAgaW5kZXhQcm92aWRlcjogSW5kZXhQcm92aWRlciA9IG5ldyBJbmRleFByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcGFnaW5hdGlvblByb3ZpZGVyOiBQYWdpbmF0aW9uUHJvdmlkZXIgPSBuZXcgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgdG90YWxSb3dQcm92aWRlcjogVG90YWxSb3dQcm92aWRlcjxUPiA9IG5ldyBUb3RhbFJvd1Byb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgaGlnaGxpZ2h0ZWQ6IFQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgY3VzdG9tU29ydEZ1bmN0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCAoZGF0YTogVGFibGVSb3c8VD4sIGtleTogc3RyaW5nKSA9PiBhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyU3RvcmFnZSA9IG5ldyBNYXA8c3RyaW5nLCBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4+KCk7XHJcblxyXG4gIC8v0LfQvdCw0YfQtdC90LjQtSDQv9C10YDQtdC00LDQtdGC0YHRjyDQsiDQutC+0L3RgtC10LnQvdC10YDQtSDQuNC90LDRh9C1IE9uQ2hhbmdlINC90LUg0LLQuNC00LjRgiDQuNC30LzQtdC90LXQvdC40Lkg0LrQvtCz0LTQsCDQv9C10YDQtdC00LDRjtGC0YHRjyDQvtC00LjQvdCw0LrQvtCy0YvQtSDQt9C90LDRh9C10L3QuNC1INC4INC/0L7QtNGB0LLQtdGC0LrQsCDRgdGC0YDQvtC60Lgg0L3QtSDQvtGC0LrQu9GO0YfQsNC10YLRgdGPXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICgoY2hhbmdlc1sndGFibGVEYXRhJ10gJiYgdGhpcy50YWJsZURhdGEpIHx8IChjaGFuZ2VzWydkaXNwbGF5Q29sdW1ucyddICYmIHRoaXMuX2Rpc3BsYXlDb2x1bW5zKSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2hpZ2hsaWdodCddICYmIHRoaXMuaGlnaGxpZ2h0KSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlSGlnaGxpZ2h0Q2hhbmdlKHRoaXMuaGlnaGxpZ2h0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldFBhZ2luYXRvclBhZ2VJbmRleCgpIHtcclxuICAgIGlmICh0aGlzLm1hdFBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLm1hdFBhZ2luYXRvci5maXJzdFBhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoVGFibGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uUHJvdmlkZXI/LnNlbGVjdGlvbj8uc2VsZWN0ZWQgPz8gW107XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMudGFibGVEYXRhIHx8IFtdO1xyXG4gICAgdGhpcy5wcmVwYXJlVGFibGVEYXRhKHNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSGlnaGxpZ2h0Q2hhbmdlKGg6IEhpZ2hsaWdodENvbnRhaW5lcjxUPikge1xyXG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWQgPT09IGgudmFsdWUpIHtcclxuICAgICAgdGhpcy5oaWdobGlnaHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gaC52YWx1ZTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLmZpbmRJbmRleChyb3cgPT4gcm93LnJvd1NyYyA9PT0gaC52YWx1ZSk7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yb3dzPy50b0FycmF5KClbaW5kZXhdPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxyXG4gICAgICAgICAgYmxvY2s6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBpbmxpbmU6IFwiY2VudGVyXCJcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudGFibGVDb25maWcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW5pdCBpbnB1dHMgW3RhYmxlQ29uZmlnXSBpcyBtYW5kYXRvcnkhXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyB3ZSBuZWVkIHRoaXMsIGluIG9yZGVyIHRvIG1ha2UgcGFnaW5hdGlvbiB3b3JrIHdpdGggKm5nSWZcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKVxyXG4gICAgdGhpcy5pbml0U29ydGluZ0RhdGFBY2Nlc3NvcigpO1xyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy51cGRhdGVDb2x1bW5PZmZzZXRzKCkpO1xyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgdGhpcy51cGRhdGVDb2x1bW5PZmZzZXRzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5tYXRQYWdpbmF0b3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZGF0YSwga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tU29ydEZ1bmN0aW9uID0gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLmdldChrZXkpO1xyXG4gICAgICAgIHJldHVybiBjdXN0b21Tb3J0RnVuY3Rpb24gPyBjdXN0b21Tb3J0RnVuY3Rpb24oZGF0YSwga2V5KSA6IGRhdGFba2V5XTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uT2Zmc2V0cygpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKSB7XHJcbiAgICAgIGNvbnN0IG9mZnNldHM6IENvbHVtbk9mZnNldFtdID0gQXJyYXkuZnJvbSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGgnKSlcclxuICAgICAgICAubWFwKChjKSA9PiAoYyBhcyBIVE1MRWxlbWVudCkpXHJcbiAgICAgICAgLm1hcCgoYywgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICBsZWZ0OiBjLm9mZnNldExlZnQsXHJcbiAgICAgICAgICB3aWR0aDogYy5vZmZzZXRXaWR0aCxcclxuICAgICAgICAgIGtleTogdGhpcy5fZGlzcGxheUNvbHVtbnNbaW5kZXhdXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICBpZiAoT2Zmc2V0VXRpbC5hcmVOb3RFcXVhbCh0aGlzLnByZXZDb2x1bW5PZmZzZXRzLCBvZmZzZXRzKSkge1xyXG4gICAgICAgIHRoaXMucHJldkNvbHVtbk9mZnNldHMgPSBvZmZzZXRzO1xyXG4gICAgICAgIHRoaXMuY29sdW1uT2Zmc2V0cy5lbWl0KG9mZnNldHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXBhcmVUYWJsZURhdGEoaW5pdFNlbGVjdGlvbjogVFtdID0gW10pIHtcclxuICAgIHRoaXMuaW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLmluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCk7XHJcbiAgICBpZiAoIXRoaXMucGFnaW5hdG9yU3RhdGUpIHtcclxuICAgICAgLy8g0LXRgdC70Lgg0L/QsNCz0LjQvdCw0YLQvtGAINC90LUg0YHQtdGA0LLQtdGA0L3Ri9C5INGC0L4g0LXQs9C+INGPINC30LTQtdGB0Ywg0LjQvdC40YbQuNCw0LvQuNC30LjRgNGD0Y4g0LjQvdCw0YfQtSDQv9GA0Lgg0L7QsdC90L7QstC70LXQvdC40Lgg0LTQsNC90L3Ri9GFINC/0LDQs9C40L3QsNGC0L7RgCDQu9C+0LzQsNC10YLRgdGPINC4INC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjyDQstGB0LUg0Y3Qu9C10LzQtdC90YLRi1xyXG4gICAgICB0aGlzLmluaXRQYWdpbmF0b3IoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5yb3dBY3Rpb25zUHJvdmlkZXIgPSBSb3dBY3Rpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZEFjdGlvbkNvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucylcclxuICAgICAgLnNldFZpZXcodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlciA9IFNlbGVjdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSwgaW5pdFNlbGVjdGlvbilcclxuICAgICAgLmFkZENoZWNrYm94Q29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0LCB0aGlzLnNlbGVjdGlvbk1vZGVsKTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG5cclxuICAgIHRoaXMuaGVhZGVyQnV0dG9uUHJvdmlkZXIgPSBuZXcgSGVhZGVyQnV0dG9uUHJvdmlkZXIodGhpcy50YWJsZUNvbmZpZy50YWJsZUhlYWRlckJ1dHRvbkNmZylcclxuXHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q3VzdG9tU29ydEZ1bmN0aW9uc01hcCgpIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZ1xyXG4gICAgICAuZmlsdGVyKGMgPT4gYy5zb3J0ICYmIGMuc29ydC5lbmFibGUgJiYgYy5zb3J0LmN1c3RvbVNvcnQpXHJcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLnNldChjLmtleSwgYy5zb3J0IS5jdXN0b21Tb3J0ISkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeS5jb252ZXJ0KHRoaXMudGFibGVEYXRhLCB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnNDZmcpO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSBUYWJsZVZpZXdGYWN0b3J5LnRvVmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLCB0aGlzLnRhYmxlQ29uZmlnKVxyXG4gICAgaWYgKCF0aGlzLl9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fZGlzcGxheUNvbHVtbnMgPSBEaXNwbGF5Q29sdW1uc0ZhY3RvcnkuY3JlYXRlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlTZWFyY2hGaWx0ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuZW1pdEZpbHRlcmVkVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdG9yYWdlLmRlbGV0ZShmaWx0ZXJOYW1lKTtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZywgZmlsdGVyOiBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSB8fCAoIXRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkhLmVxdWFscyhmaWx0ZXIpKSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JhZ2Uuc2V0KGZpbHRlck5hbWUsIGZpbHRlcik7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlclN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJBY3Rpb25zID0gWy4uLnRoaXMuZmlsdGVyU3RvcmFnZS52YWx1ZXMoKV07XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXJQcmVkaWNhdGUgPSAoZGF0YSkgPT4ge1xyXG4gICAgICByZXR1cm4gZmlsdGVyQWN0aW9ucy5ldmVyeShmaWx0ZXJBY3Rpb24gPT4gZmlsdGVyQWN0aW9uLmZpbHRlckZuKCkoZGF0YSkpO1xyXG4gICAgfTtcclxuICAgIC8vINCf0YDQuNC80LXQvdC10L3QuNC1INGE0LjQu9GM0YLRgNCw0YbQuNC4LiDQvdGD0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YPQvdC40LrQsNC70YzQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDRh9GC0L7QsdGLINGE0LjQu9GM0YLRgNCw0YbQuNGPINC30LDQv9GD0YHRgtC40LvQsNGB0YxcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlciA9ICd0cmlnZ2VyLScgKyBNYXRoLnJhbmRvbSgpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEZpbHRlcmVkVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlcmVkRGF0YS5tYXAoZiA9PiBmLnJvd1NyYykpXHJcbiAgfVxyXG5cclxuICBzb3J0VGFibGUoc29ydFBhcmFtZXRlcnM6IFNvcnQpIHtcclxuICAgIHRoaXMuc29ydC5lbWl0KHNvcnRQYXJhbWV0ZXJzKTtcclxuICB9XHJcblxyXG4gIGVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvd3M6IFRbXSkge1xyXG4gICAgdGhpcy5vblNlbGVjdGVkUm93c0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3dzfSk7XHJcbiAgfVxyXG5cclxuICBlbWl0Um93QWN0aW9uKGFjdGlvbjogc3RyaW5nLCByb3c6IFQsICRldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vblJvd0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3d9KTtcclxuICB9XHJcblxyXG4gIG1hc3RlclRvZ2dsZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIubWFzdGVyVG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIuaXNBbGxTZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgY2FzdFNyYyhyb3c6IGFueSk6IFRhYmxlUm93PFQ+IHtcclxuICAgIHJldHVybiByb3c7XHJcbiAgfVxyXG5cclxuICByb3dDbGljayhyb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICBpZiAocm93LnJvd1NyYyAhPT0gdGhpcy5oaWdobGlnaHRlZCB8fCAocm93LnJvd1NyYyA9PT0gdGhpcy5oaWdobGlnaHRlZCAmJiAhdGhpcy50YWJsZUNvbmZpZy5jbGlja0NmZz8uY2FuY2VsYWJsZSkpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93LnJvd1NyYyk7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSByb3cucm93U3JjO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQodW5kZWZpbmVkKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3Rpb25Nb2RlbCgpOiBTZWxlY3Rpb25Nb2RlbDxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhvdmVyVGltZXI6IGFueSA9IG51bGw7XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lcik7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF1ci1tYXQtdGFibGVcIlxyXG4gICAgIFtuZ0NsYXNzXT1cInsnYm90dG9tLXBhZ2luYXRpb24nOiBwYWdpbmF0aW9uUHJvdmlkZXIuaXNFbmFibGVkICYmIHBhZ2luYXRpb25Qcm92aWRlci5wb3NpdGlvbiA9PT0gJ2JvdHRvbSd9XCI+XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnLmZpbHRlckNmZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmd4QXVyVGFibGVTZWFyY2hQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+e3sgdGFibGVDb25maWcuZmlsdGVyQ2ZnPy5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJhcHBseVNlYXJjaEZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7dGFibGVDb25maWcuZmlsdGVyQ2ZnPy5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMThweDtcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmd4QXVyVGFibGVTZWFyY2hTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwieydib3R0b20tcGFnaW5hdGlvbic6IHBhZ2luYXRpb25Qcm92aWRlci5pc0VuYWJsZWQgJiYgcGFnaW5hdGlvblByb3ZpZGVyLnBvc2l0aW9uID09PSAnYm90dG9tJ31cIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaGVhZGVyQnV0dG9uUHJvdmlkZXIuaXNFbmFibGVkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtc2V0dGluZ3MtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJCdXR0b25Qcm92aWRlci5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJoZWFkZXJCdXR0b25Qcm92aWRlci5iYWNrZ3JvdW5kXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkhlYWRlckJ1dHRvbi5lbWl0KCRldmVudClcIj5cclxuICAgICAgICB7eyBoZWFkZXJCdXR0b25Qcm92aWRlci5pY29uIH19XHJcbiAgICAgIDwvbWF0LWljb24+XHJcblxyXG4gICAgICA8IS0tIFRhYmxlIC0tPlxyXG4gICAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBtYXRTb3J0XHJcbiAgICAgICAgICAgICBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cImV4dGVuZGVkUm93VGVtcGxhdGUgIT09IG51bGxcIlxyXG4gICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVEYXRhU291cmNlXCJcclxuICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5oZWlnaHRcIlxyXG4gICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5tYXhIZWlnaHRcIlxyXG4gICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5taW5IZWlnaHRcIj5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgICAgaW5kZXgtY29sdW1uLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4UHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJpbmRleFByb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcblxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgPGxpYi1jb2x1bW4tdmlldyBbY29uZmlnXT1cImluZGV4UHJvdmlkZXIuaGVhZGVyVmlld1wiPlxyXG4gICAgICAgICAgICAgIHt7IGluZGV4UHJvdmlkZXIubmFtZSB9fVxyXG4gICAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XHJcbiAgICAgICAgICAgIHt7IGVsZW1lbnQuaWQgKyBpbmRleFByb3ZpZGVyLm9mZnNldCB9fVxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoaW5kZXhQcm92aWRlci5DT0xVTU5fTkFNRSkgfHwgJycgfX1cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gICAgICAgIHNlbGVjdGlvbi1jb2x1bW4tLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwic2VsZWN0aW9uUHJvdmlkZXIuQ09MVU1OX05BTUVcIiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnPy5zaG93U2VsZWN0ZWRDb3VudCAmJiBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgKFxyXG4gICAgICAgICAgICAgICAge3sgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmc/LnNob3dUb3RhbENvdW50ICE9PSBmYWxzZVwiPi97eyB0YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLmxlbmd0aCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIHRhYmxlQ29uZmlnPy5zZWxlY3Rpb25DZmc/LmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWl0U2VsZWN0ZWRSb3dzQWN0aW9uKGFjdGlvbi5hY3Rpb24sIHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5zZWxlY3RlZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJhY3Rpb24uaWNvbi50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmchLmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJhY3Rpb24uaWNvbi5jb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5pY29uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnRvZ2dsZShjYXN0U3JjKHJvdykucm93U3JjKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5pc1NlbGVjdGVkKGNhc3RTcmMocm93KS5yb3dTcmMpXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBhY3Rpb24gY29sdW1uIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dBY3Rpb25zUHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJyb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cclxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRSb3dBY3Rpb24oYWN0aW9uLmFjdGlvbiwgZWxlbWVudC5yb3dTcmMsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygcm93QWN0aW9uc1Byb3ZpZGVyLmFjdGlvblZpZXcuZ2V0KGVsZW1lbnQuaWQpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJhY3Rpb24uaWNvbi5jb2xvclwiPlxyXG4gICAgICAgICAgICAgICAge3sgYWN0aW9uLmljb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiByb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUV9XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSAgICB2YWx1ZS1pY29uLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uQ29uZmlnIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnNDZmdcIiBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbkNvbmZpZy5rZXlcIj5cclxuXHJcbiAgICAgICAgICA8IS0tIGlmIHNvcnRhYmxlIGNvbHVtbiBoZWFkZXIgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uQ29uZmlnLnNvcnQgJiYgY29sdW1uQ29uZmlnLnNvcnQuZW5hYmxlOyBlbHNlIG5vdFNvcnRhYmxlXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW5Db25maWcua2V5XCJcclxuICAgICAgICAgICAgICAgIFthcnJvd1Bvc2l0aW9uXT1cImNvbHVtbkNvbmZpZy5zb3J0LnBvc2l0aW9uID09PSAncmlnaHQnID8gJ2JlZm9yZScgOiAnYWZ0ZXInXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclZhbHVlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8IS0tIGVsc2Ugbm90IHNvcnRhYmxlIC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPCEtLSAgICAgIGhlYWRlciB2YWx1ZS0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJWYWx1ZT5cclxuICAgICAgICAgICAgPGxpYi1jb2x1bW4tdmlldyBbY29uZmlnXT1cImNvbHVtbkNvbmZpZy5oZWFkZXJWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29sdW1uQ29uZmlnLm5hbWVcIj5cclxuICAgICAgICAgICAgPC9saWItY29sdW1uLXZpZXc+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDwhLS0gY29sdW1uIHZhbHVlINC/0L7Qu9GD0YfQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INC60L7Qu9C+0L3QvtC6INC90YPQttC90L4g0YfQtdGA0LXQtyBnZXRWaWV3KHJvd0luZGV4LCBjb2x1bW5Db25maWcua2V5KSDRgtCw0Lwg0L3QsNGF0L7QtNGP0YLRgdGPINGD0LbQtVxyXG4gICAgICAgICAg0L/QvtC00LPQvtGC0L7QstC70LXQvdC90YvQtSDQt9C90LDRh9C10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjy0tPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XHJcbiAgICAgICAgICAgIDxsaWItY29sdW1uLXZpZXdcclxuICAgICAgICAgICAgICBbY29uZmlnXT1cInRhYmxlVmlld1tlbGVtZW50LmlkXT8uZ2V0KGNvbHVtbkNvbmZpZy5rZXkpXCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uQ29uZmlnLmtleVwiPlxyXG4gICAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbkNvbmZpZy5rZXkpIHx8ICcnIH19XHJcbiAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJfZGlzcGxheUNvbHVtbnM7ICBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5oZWFkZXJcIj5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDx0ciBtYXQtcm93ICNyb3dMaW5rXHJcbiAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBfZGlzcGxheUNvbHVtbnM7XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKHJvdylcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3BvaW50ZXInOiB0YWJsZUNvbmZpZy5jbGlja0NmZz8ucG9pbnRlciB8fCBmYWxzZSwgJ25ldy1jb2xvcic6IGhpZ2hsaWdodGVkPT09cm93LnJvd1NyYyAmJiB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmNvbG9yfVwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdjb2xvcic6IGhpZ2hsaWdodGVkPT09cm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5jb2xvciA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogaGlnaGxpZ2h0ZWQgPT09IHJvdy5yb3dTcmM/IHRhYmxlQ29uZmlnPy5jbGlja0NmZz8uaGlnaGxpZ2h0Q2xpY2tlZD8uYmFja2dyb3VuZCA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICdib3JkZXInOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5ib3JkZXIgOiB1bmRlZmluZWRcclxuICAgICAgICAgIH1cIj5cclxuICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICA8IS0tZXhwYW5kZWQtcm93LS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZFJvd1wiPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbYXR0ci5jb2xzcGFuXT1cIl9kaXNwbGF5Q29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1kZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgIFtAZGV0YWlsRXhwYW5kXT1cImVsZW1lbnQucm93U3JjID09PSBoaWdobGlnaHRlZCA/IGV4cGFuZGVkU3RhdGVFbnVtLkVYUEFOREVEIDogZXhwYW5kZWRTdGF0ZUVudW0uQ09MTEFQU0VEXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4dGVuZGVkUm93VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnR9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dGVuZGVkUm93VGVtcGxhdGVcIj5cclxuICAgICAgICAgIDx0ciBtYXQtcm93IGNsYXNzPVwiZXhwYW5kZWQtcm93XCIgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWRSb3cnXVwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLWV4cGFuZGVkLXJvdy0tPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG90YWxSb3dQcm92aWRlci5pc0VuYWJsZWRcIj5cclxuICAgICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiX2Rpc3BsYXlDb2x1bW5zOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy50b3RhbFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlXT1cInRvdGFsUm93UHJvdmlkZXIuc3R5bGVcIj48L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tc3ViLWZvb3Rlci1yb3ctLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1YkZvb3RlclJvd1wiPlxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBbYXR0ci5jb2xzcGFuXT1cIl9kaXNwbGF5Q29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmd4QXVyVGFibGVTdWJGb290ZXJSb3ddXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJGb290ZXJSb3dUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJbJ3N1YkZvb3RlclJvdyddOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5zdWJGb290ZXJcIj48L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gICAgICBzdWItZm9vdGVyLXJvdyBFTkQtLT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIFBhZ2luYXRpb24gLS0+XHJcbiAgQGlmICh0aGlzLnBhZ2luYXRpb25Qcm92aWRlci5pc0VuYWJsZWQpIHtcclxuICAgIDxtYXQtcGFnaW5hdG9yIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdGlvblByb3ZpZGVyLnNpemVzXCJcclxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uUHJvdmlkZXIuc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwidGFibGVDb25maWc/LnBhZ2VhYmxlQ2ZnPy5zdHlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cInBhZ2luYXRvclN0YXRlPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdpbmF0b3JTdGF0ZT8ucGFnZUluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgIChwYWdlKT1cInBhZ2VDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIHNob3dGaXJzdExhc3RCdXR0b25zPlxyXG4gICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlckNlbGxUZW1wbGF0ZSBsZXQtY29sdW1uTmFtZT5cclxuICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbk5hbWUpIHx8ICcnIH19XHJcbiAgPC90ZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBSU4sU0FBUyxFQUNULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsT0FBTyxFQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3hGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRXJHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHFCQUFxQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFFN0YsT0FBTyxFQUFDLG9CQUFvQixFQUFFLHlCQUF5QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBR2pHLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLE9BQWUsRUFBVSxVQUFrQjtRQUEzQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBUTtJQUMvRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLO1FBQ2pCLE9BQU8sSUFBSSxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQVlELElBQUssV0FHSjtBQUhELFdBQUssV0FBVztJQUNkLHNDQUF1QixDQUFBO0lBQ3ZCLG9DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFISSxXQUFXLEtBQVgsV0FBVyxRQUdmO0FBZUQsTUFBTSxPQUFPLHVCQUF1QjtJQVFsQyxJQUFhLGNBQWMsQ0FBQyxPQUFpQjtRQUMzQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQWdGRDtRQTNGQSxzQkFBaUIsR0FBRyxXQUFXLENBQUM7UUFFekIsb0JBQWUsR0FBRyxJQUFJLGtCQUFrQixDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBQy9CLGlDQUE0QixHQUFHLEtBQUssQ0FBQztRQVNyQyxjQUFTLEdBQXNDLEVBQUUsQ0FBQztRQVl6QyxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLHdCQUFtQixHQUE0QixJQUFJLENBQUM7UUFVbkQsU0FBSSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBRXJELDRCQUE0QjtRQUNsQixnQkFBVyxHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUN6RiwwQkFBMEI7UUFFMUIsaUNBQWlDO1FBQ3ZCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXJDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRTVELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDakUsMEJBQTBCO1FBRWhCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO1FBRTdDOztXQUVHO1FBQ08sYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbkMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUNyRCxzQkFBaUIsR0FBbUIsRUFBRSxDQUFDO1FBRS9DLHlCQUFvQixHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztRQUM3QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFFMUQsYUFBYTtRQUNMLGdDQUEyQixHQUFtQixVQUFVLENBQUMsZUFBZSxDQUFDO1FBRWpGLHNCQUFpQixHQUF5QixJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFFdkUsdUJBQWtCLEdBQXlCLElBQUksc0JBQXNCLEVBQUssQ0FBQztRQUUzRSxrQkFBYSxHQUFrQixJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFFeEQsdUJBQWtCLEdBQXVCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUV2RSxxQkFBZ0IsR0FBd0IsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBSTVELHdCQUFtQixHQUFHLElBQUksR0FBRyxFQUFtRCxDQUFDO1FBRWpGLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUEyTnpELGVBQVUsR0FBUSxJQUFJLENBQUM7SUFwTi9CLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUNwRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU0sdUJBQXVCO1FBQzVCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8scUJBQXFCLENBQUMsQ0FBd0I7UUFDcEQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLGFBQWEsQ0FBQyxjQUFjLENBQUM7b0JBQ3hELFFBQVEsRUFBRSxRQUFRO29CQUNsQixLQUFLLEVBQUUsUUFBUTtvQkFDZixNQUFNLEVBQUUsUUFBUTtpQkFDakIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRUQsNERBQTREO0lBQzVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0QsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEUsQ0FBQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RELE1BQU0sT0FBTyxHQUFtQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQWlCLENBQUM7aUJBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVTtnQkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXO2dCQUNwQixHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7YUFDakMsQ0FBQyxDQUFDLENBQUM7WUFDTixJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGdCQUFxQixFQUFFO1FBQzlDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLHNJQUFzSTtZQUN0SSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hELGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ2pFLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2FBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQzthQUNyRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2FBQ3ZDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV6RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV0RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUNwRixRQUFRLEVBQUU7YUFDVixXQUFXLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFFM0YsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7YUFDeEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUN6RCxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUssQ0FBQyxVQUFXLENBQUMsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBWTtRQUM1QixNQUFNLFdBQVcsR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUM7UUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxZQUFZLENBQUMsVUFBa0I7UUFDcEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLFVBQWtCLEVBQUUsTUFBNkI7UUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5QyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUM7UUFDRix5RkFBeUY7UUFDekYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFFRCxTQUFTLENBQUMsY0FBb0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQWMsRUFBRSxJQUFTO1FBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjLEVBQUUsR0FBTSxFQUFFLE1BQWtCO1FBQ3RELE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxPQUFPLENBQUMsR0FBUTtRQUNkLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFnQjtRQUN2QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztJQUMxQyxDQUFDO0lBSUQsV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2hELENBQUM7OEdBdlRVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHdvQkFpQnBCLDZCQUE2QiwySEFLaEIsVUFBVSw0REFhMUIsWUFBWSwwRUFFWixPQUFPLDhHQWpCYyxVQUFVLGtEQzVHNUMsc2xXQWlPQSw4Z0xEakpjO1lBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTtnQkFDdEIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQztnQkFDcEUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7Z0JBQ2pELFVBQVUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLFFBQVEsV0FBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO2FBQ3BILENBQUM7U0FDSDs7MkZBRVUsdUJBQXVCO2tCQWJuQyxTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQzt3QkFDVixPQUFPLENBQUMsY0FBYyxFQUFFOzRCQUN0QixLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDOzRCQUNwRSxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQzs0QkFDakQsVUFBVSxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsUUFBUSxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7eUJBQ3BILENBQUM7cUJBQ0g7d0RBVVksY0FBYztzQkFBMUIsS0FBSztnQkFTdUMsb0JBQW9CO3NCQUFoRSxZQUFZO3VCQUFDLDZCQUE2QjtnQkFHRSxJQUFJO3NCQUFoRCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7Z0JBRUgsS0FBSztzQkFBNUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQUc3QixXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR29DLFlBQVk7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFSixPQUFPO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRXhCLElBQUk7c0JBQWIsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUdHLFdBQVc7c0JBQXBCLE1BQU07Z0JBSUcsUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxRQUFRO3NCQUFqQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBSUcsY0FBYztzQkFBdkIsTUFBTTtnQkF1QkUsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb2x1bW5WaWV3LCBUYWJsZUNvbmZpZ30gZnJvbSAnLi9tb2RlbC9Db2x1bW5Db25maWcnO1xyXG5pbXBvcnQge01hdFNvcnQsIFNvcnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQge01hdFRhYmxlRGF0YVNvdXJjZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQge01hdFBhZ2luYXRvciwgUGFnZUV2ZW50fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQge1NlbGVjdGlvblByb3ZpZGVyLCBTZWxlY3Rpb25Qcm92aWRlckR1bW15fSBmcm9tICcuL3Byb3ZpZGVycy9TZWxlY3Rpb25Qcm92aWRlcic7XHJcbmltcG9ydCB7QWN0aW9uRXZlbnQsIFJvd0FjdGlvblByb3ZpZGVyLCBSb3dBY3Rpb25Qcm92aWRlckR1bW15fSBmcm9tICcuL3Byb3ZpZGVycy9Sb3dBY3Rpb25Qcm92aWRlcic7XHJcbmltcG9ydCB7VGFibGVSb3d9IGZyb20gXCIuL21vZGVsL1RhYmxlUm93XCI7XHJcbmltcG9ydCB7VGFibGVWaWV3RmFjdG9yeX0gZnJvbSBcIi4vbW9kZWwvVGFibGVWaWV3RmFjdG9yeVwiO1xyXG5pbXBvcnQge0luZGV4UHJvdmlkZXIsIEluZGV4UHJvdmlkZXJEdW1teX0gZnJvbSBcIi4vcHJvdmlkZXJzL0luZGV4UHJvdmlkZXJcIjtcclxuaW1wb3J0IHtQYWdpbmF0aW9uUHJvdmlkZXIsIFBhZ2luYXRpb25Qcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvUGFnaW5hdGlvblByb3ZpZGVyXCI7XHJcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlRmFjdG9yeX0gZnJvbSBcIi4vZmFjdG9yaWVzL01hdFRhYmxlRGF0YVNvdXJjZUZhY3RvcnlcIjtcclxuaW1wb3J0IHtEaXNwbGF5Q29sdW1uc0ZhY3Rvcnl9IGZyb20gXCIuL2ZhY3Rvcmllcy9EaXNwbGF5Q29sdW1uc0ZhY3RvcnlcIjtcclxuaW1wb3J0IHtFbXB0eVZhbHVlfSBmcm9tIFwiLi9tb2RlbC9FbXB0eVZhbHVlXCI7XHJcbmltcG9ydCB7VG90YWxSb3dQcm92aWRlciwgVG90YWxSb3dQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvVG90YWxSb3dQcm92aWRlclwiO1xyXG5pbXBvcnQge05neEF1ckZpbHRlcnN9IGZyb20gXCIuL2ZpbHRlcnMvTmd4QXVyRmlsdGVyc1wiO1xyXG5pbXBvcnQge05neEF1ck1hdFRhYmxlUHVibGljfSBmcm9tIFwiLi9uZ3gtYXVyLW1hdC10YWJsZS1wdWJsaWNcIjtcclxuaW1wb3J0IHtPZmZzZXRVdGlsfSBmcm9tIFwiLi91dGlscy9vZmZzZXQudXRpbFwiO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHtOZ3hUYWJsZVN1YkZvb3RlclJvd0RpcmVjdGl2ZX0gZnJvbSBcIi4vZGlyZWN0aXZlL25neC10YWJsZS1zdWItZm9vdGVyLXJvdy5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQge0hlYWRlckJ1dHRvblByb3ZpZGVyLCBIZWFkZXJCdXR0b25Qcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvSGVhZGVyQnV0dG9uUHJvdmlkZXJcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yU3RhdGUge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sZW5ndGg6IG51bWJlciwgcHJpdmF0ZSBfcGFnZUluZGV4OiBudW1iZXIpIHtcclxuICB9XHJcblxyXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFnZUluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFnZUluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBQYWdpbmF0b3JTdGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IFBhZ2luYXRvclN0YXRlKDAsIDApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRDb250YWluZXI8VD4ge1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uT2Zmc2V0IHtcclxuICBsZWZ0OiBudW1iZXIsXHJcbiAgd2lkdGg6IG51bWJlcixcclxuICBrZXk6IHN0cmluZ1xyXG59XHJcblxyXG5lbnVtIEV4cGFuZFN0YXRlIHtcclxuICBDT0xMQVBTRUQgPSAnY29sbGFwc2VkJyxcclxuICBFWFBBTkRFRCA9ICdleHBhbmRlZCdcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdXItbWF0LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZShFeHBhbmRTdGF0ZS5DT0xMQVBTRUQsIHN0eWxlKHtoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJ30pKSxcclxuICAgICAgc3RhdGUoRXhwYW5kU3RhdGUuRVhQQU5ERUQsIHN0eWxlKHtoZWlnaHQ6ICcqJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbihgJHtFeHBhbmRTdGF0ZS5FWFBBTkRFRH0gPD0+ICR7RXhwYW5kU3RhdGUuQ09MTEFQU0VEfWAsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hBdXJNYXRUYWJsZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIE5neEF1ck1hdFRhYmxlUHVibGljPFQ+IHtcclxuXHJcbiAgZXhwYW5kZWRTdGF0ZUVudW0gPSBFeHBhbmRTdGF0ZTtcclxuXHJcbiAgcHVibGljIHRhYmxlRGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VGFibGVSb3c8VD4+KFtdKTtcclxuICBfZGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgX2N1c3RvbURpc3BsYXlDb2x1bW5zRW5hYmxlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgZGlzcGxheUNvbHVtbnMoY29sdW1uczogc3RyaW5nW10pIHtcclxuICAgIGlmIChjb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuX2Rpc3BsYXlDb2x1bW5zID0gWy4uLmNvbHVtbnNdO1xyXG4gICAgICB0aGlzLl9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQgPSBjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRhYmxlVmlldzogTWFwPHN0cmluZywgQ29sdW1uVmlldzxzdHJpbmc+PltdID0gW107XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoTmd4VGFibGVTdWJGb290ZXJSb3dEaXJlY3RpdmUpIHN1YkZvb3RlclJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGRyZW4oJ3Jvd0xpbmsnLCB7cmVhZDogRWxlbWVudFJlZn0pIHJvd3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7cmVhZDogRWxlbWVudFJlZn0pIHRhYmxlOiBFbGVtZW50UmVmO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQElucHV0KCkgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnPFQ+O1xyXG5cclxuICBASW5wdXQoKSB0YWJsZURhdGE6IFRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBleHRlbmRlZFJvd1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vINC10YHQu9C4INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgdC10YDQstC10YDQvdGL0Lkg0L/QsNCz0LjQvdCw0YLQvtGALCDRgdGO0LTQsCDQv9C10YDQtdC00LDQtdGC0YHRjyDRgtC10LrRg9GJ0LXQtSDRgdC+0YHRgtC+0Y/QvdC40LUg0L/QsNCz0LjQvdCw0YLQvtGA0LBcclxuICBASW5wdXQoKSBwYWdpbmF0b3JTdGF0ZTogUGFnaW5hdG9yU3RhdGUgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwge3N0YXRpYzogZmFsc2V9KSBtYXRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7c3RhdGljOiB0cnVlfSkgbWF0U29ydDogTWF0U29ydDtcclxuXHJcbiAgQE91dHB1dCgpIHNvcnQ6IEV2ZW50RW1pdHRlcjxTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuXHJcbiAgLy8gZXZlbnRzIGlmIGVuYWJsZWQgYWN0aW9uc1xyXG4gIEBPdXRwdXQoKSBvblJvd0FjdGlvbjogRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+KCk7XHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgLy8gZXZlbnRzIGlmIGVuYWJsZWQgc2VsZWN0IGV2ZW50XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uRGVzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ZWRSb3dzQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUW10+PigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uTW9kZWwgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbk1vZGVsPFQ+PigpO1xyXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuICAvKipcclxuICAgKiByZXR1cm4gZmlsdGVyZWQgcm93c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY29sdW1uT2Zmc2V0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uT2Zmc2V0W10+KCk7XHJcbiAgcHJpdmF0ZSBwcmV2Q29sdW1uT2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBbXTtcclxuXHJcbiAgaGVhZGVyQnV0dG9uUHJvdmlkZXIgPSBuZXcgSGVhZGVyQnV0dG9uUHJvdmlkZXJEdW1teSgpO1xyXG4gIEBPdXRwdXQoKSBvbkhlYWRlckJ1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHByaXZhdGUgcmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyOiBSZXNpemVPYnNlcnZlciA9IEVtcHR5VmFsdWUuUkVTSVpFX09CU0VSVkVSO1xyXG5cclxuICBzZWxlY3Rpb25Qcm92aWRlcjogU2VsZWN0aW9uUHJvdmlkZXI8VD4gPSBuZXcgU2VsZWN0aW9uUHJvdmlkZXJEdW1teSgpO1xyXG5cclxuICByb3dBY3Rpb25zUHJvdmlkZXI6IFJvd0FjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFJvd0FjdGlvblByb3ZpZGVyRHVtbXk8VD4oKTtcclxuXHJcbiAgaW5kZXhQcm92aWRlcjogSW5kZXhQcm92aWRlciA9IG5ldyBJbmRleFByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcGFnaW5hdGlvblByb3ZpZGVyOiBQYWdpbmF0aW9uUHJvdmlkZXIgPSBuZXcgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgdG90YWxSb3dQcm92aWRlcjogVG90YWxSb3dQcm92aWRlcjxUPiA9IG5ldyBUb3RhbFJvd1Byb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgaGlnaGxpZ2h0ZWQ6IFQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgY3VzdG9tU29ydEZ1bmN0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCAoZGF0YTogVGFibGVSb3c8VD4sIGtleTogc3RyaW5nKSA9PiBhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyU3RvcmFnZSA9IG5ldyBNYXA8c3RyaW5nLCBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4+KCk7XHJcblxyXG4gIC8v0LfQvdCw0YfQtdC90LjQtSDQv9C10YDQtdC00LDQtdGC0YHRjyDQsiDQutC+0L3RgtC10LnQvdC10YDQtSDQuNC90LDRh9C1IE9uQ2hhbmdlINC90LUg0LLQuNC00LjRgiDQuNC30LzQtdC90LXQvdC40Lkg0LrQvtCz0LTQsCDQv9C10YDQtdC00LDRjtGC0YHRjyDQvtC00LjQvdCw0LrQvtCy0YvQtSDQt9C90LDRh9C10L3QuNC1INC4INC/0L7QtNGB0LLQtdGC0LrQsCDRgdGC0YDQvtC60Lgg0L3QtSDQvtGC0LrQu9GO0YfQsNC10YLRgdGPXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICgoY2hhbmdlc1sndGFibGVEYXRhJ10gJiYgdGhpcy50YWJsZURhdGEpIHx8IChjaGFuZ2VzWydkaXNwbGF5Q29sdW1ucyddICYmIHRoaXMuX2Rpc3BsYXlDb2x1bW5zKSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2hpZ2hsaWdodCddICYmIHRoaXMuaGlnaGxpZ2h0KSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlSGlnaGxpZ2h0Q2hhbmdlKHRoaXMuaGlnaGxpZ2h0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldFBhZ2luYXRvclBhZ2VJbmRleCgpIHtcclxuICAgIGlmICh0aGlzLm1hdFBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLm1hdFBhZ2luYXRvci5maXJzdFBhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoVGFibGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uUHJvdmlkZXI/LnNlbGVjdGlvbj8uc2VsZWN0ZWQgPz8gW107XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMudGFibGVEYXRhIHx8IFtdO1xyXG4gICAgdGhpcy5wcmVwYXJlVGFibGVEYXRhKHNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSGlnaGxpZ2h0Q2hhbmdlKGg6IEhpZ2hsaWdodENvbnRhaW5lcjxUPikge1xyXG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWQgPT09IGgudmFsdWUpIHtcclxuICAgICAgdGhpcy5oaWdobGlnaHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gaC52YWx1ZTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLmZpbmRJbmRleChyb3cgPT4gcm93LnJvd1NyYyA9PT0gaC52YWx1ZSk7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yb3dzPy50b0FycmF5KClbaW5kZXhdPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxyXG4gICAgICAgICAgYmxvY2s6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBpbmxpbmU6IFwiY2VudGVyXCJcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudGFibGVDb25maWcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW5pdCBpbnB1dHMgW3RhYmxlQ29uZmlnXSBpcyBtYW5kYXRvcnkhXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyB3ZSBuZWVkIHRoaXMsIGluIG9yZGVyIHRvIG1ha2UgcGFnaW5hdGlvbiB3b3JrIHdpdGggKm5nSWZcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKVxyXG4gICAgdGhpcy5pbml0U29ydGluZ0RhdGFBY2Nlc3NvcigpO1xyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy51cGRhdGVDb2x1bW5PZmZzZXRzKCkpO1xyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgdGhpcy51cGRhdGVDb2x1bW5PZmZzZXRzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5tYXRQYWdpbmF0b3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZGF0YSwga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tU29ydEZ1bmN0aW9uID0gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLmdldChrZXkpO1xyXG4gICAgICAgIHJldHVybiBjdXN0b21Tb3J0RnVuY3Rpb24gPyBjdXN0b21Tb3J0RnVuY3Rpb24oZGF0YSwga2V5KSA6IGRhdGFba2V5XTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uT2Zmc2V0cygpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKSB7XHJcbiAgICAgIGNvbnN0IG9mZnNldHM6IENvbHVtbk9mZnNldFtdID0gQXJyYXkuZnJvbSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGgnKSlcclxuICAgICAgICAubWFwKChjKSA9PiAoYyBhcyBIVE1MRWxlbWVudCkpXHJcbiAgICAgICAgLm1hcCgoYywgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICBsZWZ0OiBjLm9mZnNldExlZnQsXHJcbiAgICAgICAgICB3aWR0aDogYy5vZmZzZXRXaWR0aCxcclxuICAgICAgICAgIGtleTogdGhpcy5fZGlzcGxheUNvbHVtbnNbaW5kZXhdXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICBpZiAoT2Zmc2V0VXRpbC5hcmVOb3RFcXVhbCh0aGlzLnByZXZDb2x1bW5PZmZzZXRzLCBvZmZzZXRzKSkge1xyXG4gICAgICAgIHRoaXMucHJldkNvbHVtbk9mZnNldHMgPSBvZmZzZXRzO1xyXG4gICAgICAgIHRoaXMuY29sdW1uT2Zmc2V0cy5lbWl0KG9mZnNldHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXBhcmVUYWJsZURhdGEoaW5pdFNlbGVjdGlvbjogVFtdID0gW10pIHtcclxuICAgIHRoaXMuaW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLmluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCk7XHJcbiAgICBpZiAoIXRoaXMucGFnaW5hdG9yU3RhdGUpIHtcclxuICAgICAgLy8g0LXRgdC70Lgg0L/QsNCz0LjQvdCw0YLQvtGAINC90LUg0YHQtdGA0LLQtdGA0L3Ri9C5INGC0L4g0LXQs9C+INGPINC30LTQtdGB0Ywg0LjQvdC40YbQuNCw0LvQuNC30LjRgNGD0Y4g0LjQvdCw0YfQtSDQv9GA0Lgg0L7QsdC90L7QstC70LXQvdC40Lgg0LTQsNC90L3Ri9GFINC/0LDQs9C40L3QsNGC0L7RgCDQu9C+0LzQsNC10YLRgdGPINC4INC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjyDQstGB0LUg0Y3Qu9C10LzQtdC90YLRi1xyXG4gICAgICB0aGlzLmluaXRQYWdpbmF0b3IoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5yb3dBY3Rpb25zUHJvdmlkZXIgPSBSb3dBY3Rpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZEFjdGlvbkNvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucylcclxuICAgICAgLnNldFZpZXcodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlciA9IFNlbGVjdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSwgaW5pdFNlbGVjdGlvbilcclxuICAgICAgLmFkZENoZWNrYm94Q29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0LCB0aGlzLnNlbGVjdGlvbk1vZGVsKTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG5cclxuICAgIHRoaXMuaGVhZGVyQnV0dG9uUHJvdmlkZXIgPSBuZXcgSGVhZGVyQnV0dG9uUHJvdmlkZXIodGhpcy50YWJsZUNvbmZpZy50YWJsZUhlYWRlckJ1dHRvbkNmZylcclxuXHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q3VzdG9tU29ydEZ1bmN0aW9uc01hcCgpIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZ1xyXG4gICAgICAuZmlsdGVyKGMgPT4gYy5zb3J0ICYmIGMuc29ydC5lbmFibGUgJiYgYy5zb3J0LmN1c3RvbVNvcnQpXHJcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLnNldChjLmtleSwgYy5zb3J0IS5jdXN0b21Tb3J0ISkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeS5jb252ZXJ0KHRoaXMudGFibGVEYXRhLCB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnNDZmcpO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSBUYWJsZVZpZXdGYWN0b3J5LnRvVmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLCB0aGlzLnRhYmxlQ29uZmlnKVxyXG4gICAgaWYgKCF0aGlzLl9jdXN0b21EaXNwbGF5Q29sdW1uc0VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fZGlzcGxheUNvbHVtbnMgPSBEaXNwbGF5Q29sdW1uc0ZhY3RvcnkuY3JlYXRlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlTZWFyY2hGaWx0ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuZW1pdEZpbHRlcmVkVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdG9yYWdlLmRlbGV0ZShmaWx0ZXJOYW1lKTtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZywgZmlsdGVyOiBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSB8fCAoIXRoaXMuZmlsdGVyU3RvcmFnZS5nZXQoZmlsdGVyTmFtZSkhLmVxdWFscyhmaWx0ZXIpKSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JhZ2Uuc2V0KGZpbHRlck5hbWUsIGZpbHRlcik7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmZpbHRlclN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzSW50ZXJuYWwoKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJBY3Rpb25zID0gWy4uLnRoaXMuZmlsdGVyU3RvcmFnZS52YWx1ZXMoKV07XHJcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXJQcmVkaWNhdGUgPSAoZGF0YSkgPT4ge1xyXG4gICAgICByZXR1cm4gZmlsdGVyQWN0aW9ucy5ldmVyeShmaWx0ZXJBY3Rpb24gPT4gZmlsdGVyQWN0aW9uLmZpbHRlckZuKCkoZGF0YSkpO1xyXG4gICAgfTtcclxuICAgIC8vINCf0YDQuNC80LXQvdC10L3QuNC1INGE0LjQu9GM0YLRgNCw0YbQuNC4LiDQvdGD0LbQvdC+INC/0LXRgNC10LTQsNGC0Ywg0YPQvdC40LrQsNC70YzQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDRh9GC0L7QsdGLINGE0LjQu9GM0YLRgNCw0YbQuNGPINC30LDQv9GD0YHRgtC40LvQsNGB0YxcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlciA9ICd0cmlnZ2VyLScgKyBNYXRoLnJhbmRvbSgpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEZpbHRlcmVkVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlcmVkRGF0YS5tYXAoZiA9PiBmLnJvd1NyYykpXHJcbiAgfVxyXG5cclxuICBzb3J0VGFibGUoc29ydFBhcmFtZXRlcnM6IFNvcnQpIHtcclxuICAgIHRoaXMuc29ydC5lbWl0KHNvcnRQYXJhbWV0ZXJzKTtcclxuICB9XHJcblxyXG4gIGVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvd3M6IFRbXSkge1xyXG4gICAgdGhpcy5vblNlbGVjdGVkUm93c0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3dzfSk7XHJcbiAgfVxyXG5cclxuICBlbWl0Um93QWN0aW9uKGFjdGlvbjogc3RyaW5nLCByb3c6IFQsICRldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vblJvd0FjdGlvbi5lbWl0KHthY3Rpb24sIHZhbHVlOiByb3d9KTtcclxuICB9XHJcblxyXG4gIG1hc3RlclRvZ2dsZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIubWFzdGVyVG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIuaXNBbGxTZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgY2FzdFNyYyhyb3c6IGFueSk6IFRhYmxlUm93PFQ+IHtcclxuICAgIHJldHVybiByb3c7XHJcbiAgfVxyXG5cclxuICByb3dDbGljayhyb3c6IFRhYmxlUm93PFQ+KSB7XHJcbiAgICBpZiAocm93LnJvd1NyYyAhPT0gdGhpcy5oaWdobGlnaHRlZCB8fCAocm93LnJvd1NyYyA9PT0gdGhpcy5oaWdobGlnaHRlZCAmJiAhdGhpcy50YWJsZUNvbmZpZy5jbGlja0NmZz8uY2FuY2VsYWJsZSkpIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93LnJvd1NyYyk7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSByb3cucm93U3JjO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQodW5kZWZpbmVkKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3Rpb25Nb2RlbCgpOiBTZWxlY3Rpb25Nb2RlbDxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhvdmVyVGltZXI6IGFueSA9IG51bGw7XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lcik7XHJcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF1ci1tYXQtdGFibGVcIlxyXG4gICAgIFtuZ0NsYXNzXT1cInsnYm90dG9tLXBhZ2luYXRpb24nOiBwYWdpbmF0aW9uUHJvdmlkZXIuaXNFbmFibGVkICYmIHBhZ2luYXRpb25Qcm92aWRlci5wb3NpdGlvbiA9PT0gJ2JvdHRvbSd9XCI+XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnLmZpbHRlckNmZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmd4QXVyVGFibGVTZWFyY2hQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+e3sgdGFibGVDb25maWcuZmlsdGVyQ2ZnPy5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJhcHBseVNlYXJjaEZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7dGFibGVDb25maWcuZmlsdGVyQ2ZnPy5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMThweDtcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmd4QXVyVGFibGVTZWFyY2hTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwieydib3R0b20tcGFnaW5hdGlvbic6IHBhZ2luYXRpb25Qcm92aWRlci5pc0VuYWJsZWQgJiYgcGFnaW5hdGlvblByb3ZpZGVyLnBvc2l0aW9uID09PSAnYm90dG9tJ31cIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaGVhZGVyQnV0dG9uUHJvdmlkZXIuaXNFbmFibGVkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtc2V0dGluZ3MtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJCdXR0b25Qcm92aWRlci5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJoZWFkZXJCdXR0b25Qcm92aWRlci5iYWNrZ3JvdW5kXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkhlYWRlckJ1dHRvbi5lbWl0KCRldmVudClcIj5cclxuICAgICAgICB7eyBoZWFkZXJCdXR0b25Qcm92aWRlci5pY29uIH19XHJcbiAgICAgIDwvbWF0LWljb24+XHJcblxyXG4gICAgICA8IS0tIFRhYmxlIC0tPlxyXG4gICAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBtYXRTb3J0XHJcbiAgICAgICAgICAgICBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cImV4dGVuZGVkUm93VGVtcGxhdGUgIT09IG51bGxcIlxyXG4gICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVEYXRhU291cmNlXCJcclxuICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5oZWlnaHRcIlxyXG4gICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5tYXhIZWlnaHRcIlxyXG4gICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5taW5IZWlnaHRcIj5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgICAgaW5kZXgtY29sdW1uLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4UHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJpbmRleFByb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcblxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgPGxpYi1jb2x1bW4tdmlldyBbY29uZmlnXT1cImluZGV4UHJvdmlkZXIuaGVhZGVyVmlld1wiPlxyXG4gICAgICAgICAgICAgIHt7IGluZGV4UHJvdmlkZXIubmFtZSB9fVxyXG4gICAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XHJcbiAgICAgICAgICAgIHt7IGVsZW1lbnQuaWQgKyBpbmRleFByb3ZpZGVyLm9mZnNldCB9fVxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoaW5kZXhQcm92aWRlci5DT0xVTU5fTkFNRSkgfHwgJycgfX1cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gICAgICAgIHNlbGVjdGlvbi1jb2x1bW4tLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwic2VsZWN0aW9uUHJvdmlkZXIuQ09MVU1OX05BTUVcIiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnPy5zaG93U2VsZWN0ZWRDb3VudCAmJiBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKVwiPlxyXG4gICAgICAgICAgICAgICAge3sgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmc/LnNob3dUb3RhbENvdW50ICE9PSBmYWxzZVwiPi97eyBwYWdpbmF0b3JTdGF0ZT8ubGVuZ3RoID8gcGFnaW5hdG9yU3RhdGU/Lmxlbmd0aCA6IHRhYmxlRGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubGVuZ3RoIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgdGFibGVDb25maWc/LnNlbGVjdGlvbkNmZz8uYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uLmFjdGlvbiwgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRhYmxlQ29uZmlnLnNlbGVjdGlvbkNmZyEuYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgYWN0aW9uLmljb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24udG9nZ2xlKGNhc3RTcmMocm93KS5yb3dTcmMpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2FzdFNyYyhyb3cpLnJvd1NyYylcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIGFjdGlvbiBjb2x1bW4gLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd0FjdGlvbnNQcm92aWRlci5pc0VuYWJsZWRcIiBbbWF0Q29sdW1uRGVmXT1cInJvd0FjdGlvbnNQcm92aWRlci5DT0xVTU5fTkFNRVwiPlxyXG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFJvd0FjdGlvbihhY3Rpb24uYWN0aW9uLCBlbGVtZW50LnJvd1NyYywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWN0aW9uLmljb24udG9vbHRpcCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiByb3dBY3Rpb25zUHJvdmlkZXIuYWN0aW9uVmlldy5nZXQoZWxlbWVudC5pZClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBhY3Rpb24uaWNvbi5uYW1lIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0FjdGlvbnNQcm92aWRlci5DT0xVTU5fTkFNRX1cIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tICAgIHZhbHVlLWljb24tLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW5Db25maWcgb2YgdGFibGVDb25maWcuY29sdW1uc0NmZ1wiIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uQ29uZmlnLmtleVwiPlxyXG5cclxuICAgICAgICAgIDwhLS0gaWYgc29ydGFibGUgY29sdW1uIGhlYWRlciAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5Db25maWcuc29ydCAmJiBjb2x1bW5Db25maWcuc29ydC5lbmFibGU7IGVsc2Ugbm90U29ydGFibGVcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbHVtbkNvbmZpZy5rZXlcIlxyXG4gICAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uQ29uZmlnLnNvcnQucG9zaXRpb24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gZWxzZSBub3Qgc29ydGFibGUgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdFNvcnRhYmxlPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJWYWx1ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8IS0tICAgICAgaGVhZGVyIHZhbHVlLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclZhbHVlPlxyXG4gICAgICAgICAgICA8bGliLWNvbHVtbi12aWV3IFtjb25maWddPVwiY29sdW1uQ29uZmlnLmhlYWRlclZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW5Db25maWcubmFtZVwiPlxyXG4gICAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPCEtLSBjb2x1bW4gdmFsdWUg0L/QvtC70YPRh9Cw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0LrQvtC70L7QvdC+0Log0L3Rg9C20L3QviDRh9C10YDQtdC3IGdldFZpZXcocm93SW5kZXgsIGNvbHVtbkNvbmZpZy5rZXkpINGC0LDQvCDQvdCw0YXQvtC00Y/RgtGB0Y8g0YPQttC1XHJcbiAgICAgICAgICDQv9C+0LTQs9C+0YLQvtCy0LvQtdC90L3Ri9C1INC30L3QsNGH0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPLS0+XHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtcIj5cclxuICAgICAgICAgICAgPGxpYi1jb2x1bW4tdmlld1xyXG4gICAgICAgICAgICAgIFtjb25maWddPVwidGFibGVWaWV3W2VsZW1lbnQuaWRdPy5nZXQoY29sdW1uQ29uZmlnLmtleSlcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW5Db25maWcua2V5XCI+XHJcbiAgICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoY29sdW1uQ29uZmlnLmtleSkgfHwgJycgfX1cclxuICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cIl9kaXNwbGF5Q29sdW1uczsgIHN0aWNreTogdGhpcy50YWJsZUNvbmZpZy5zdGlja3lDZmc/LmhlYWRlclwiPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyIG1hdC1yb3cgI3Jvd0xpbmtcclxuICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IF9kaXNwbGF5Q29sdW1ucztcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicm93Q2xpY2socm93KVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncG9pbnRlcic6IHRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5wb2ludGVyIHx8IGZhbHNlLCAnbmV3LWNvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjICYmIHRhYmxlQ29uZmlnPy5jbGlja0NmZz8uaGlnaGxpZ2h0Q2xpY2tlZD8uY29sb3J9XCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2NvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmNvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5iYWNrZ3JvdW5kIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JvcmRlcic6IGhpZ2hsaWdodGVkID09PSByb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmJvcmRlciA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgIDwhLS1leHBhbmRlZC1yb3ctLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkUm93XCI+XHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIFthdHRyLmNvbHNwYW5dPVwiX2Rpc3BsYXlDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWRldGFpbFwiXHJcbiAgICAgICAgICAgICAgICAgW0BkZXRhaWxFeHBhbmRdPVwiZWxlbWVudC5yb3dTcmMgPT09IGhpZ2hsaWdodGVkID8gZXhwYW5kZWRTdGF0ZUVudW0uRVhQQU5ERUQgOiBleHBhbmRlZFN0YXRlRW51bS5DT0xMQVBTRURcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXh0ZW5kZWRSb3dUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogZWxlbWVudH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXh0ZW5kZWRSb3dUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1yb3cgY2xhc3M9XCJleHBhbmRlZC1yb3dcIiAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZFJvdyddXCI+PC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tZXhwYW5kZWQtcm93LS0+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbFJvd1Byb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJfZGlzcGxheUNvbHVtbnM7IHN0aWNreTogdGhpcy50YWJsZUNvbmZpZy5zdGlja3lDZmc/LnRvdGFsXCJcclxuICAgICAgICAgICAgICBbc3R5bGVdPVwidG90YWxSb3dQcm92aWRlci5zdHlsZVwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS1zdWItZm9vdGVyLXJvdy0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3ViRm9vdGVyUm93XCI+XHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiX2Rpc3BsYXlDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuZ3hBdXJUYWJsZVN1YkZvb3RlclJvd11cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1YkZvb3RlclJvd1RlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3ViRm9vdGVyUm93J107IHN0aWNreTogdGhpcy50YWJsZUNvbmZpZy5zdGlja3lDZmc/LnN1YkZvb3RlclwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSAgICAgIHN1Yi1mb290ZXItcm93IEVORC0tPlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gUGFnaW5hdGlvbiAtLT5cclxuICBAaWYgKHRoaXMucGFnaW5hdGlvblByb3ZpZGVyLmlzRW5hYmxlZCkge1xyXG4gICAgPG1hdC1wYWdpbmF0b3IgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uUHJvdmlkZXIuc2l6ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2luYXRpb25Qcm92aWRlci5zaXplXCJcclxuICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ0YWJsZUNvbmZpZz8ucGFnZWFibGVDZmc/LnN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwicGFnaW5hdG9yU3RhdGU/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2luYXRvclN0YXRlPy5wYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgKHBhZ2UpPVwicGFnZUNoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM+XHJcbiAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyQ2VsbFRlbXBsYXRlIGxldC1jb2x1bW5OYW1lPlxyXG4gIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoY29sdW1uTmFtZSkgfHwgJycgfX1cclxuICA8L3RkPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -8,6 +8,9 @@ export class SelectionProvider extends AbstractProvider {
|
|
|
8
8
|
this.isEnabled = true;
|
|
9
9
|
this.config = tableConfig?.selectionCfg || EmptyValue.SELECTION_CONFIG;
|
|
10
10
|
this.selection = new SelectionModel(this.config.multiple, initSelection);
|
|
11
|
+
if (this.config.compareWith) {
|
|
12
|
+
this.selection.compareWith = this.config.compareWith;
|
|
13
|
+
}
|
|
11
14
|
this.tableDataSource = tableDataSource;
|
|
12
15
|
}
|
|
13
16
|
get COLUMN_NAME() {
|
|
@@ -40,17 +43,14 @@ export class SelectionProvider extends AbstractProvider {
|
|
|
40
43
|
}
|
|
41
44
|
masterToggle() {
|
|
42
45
|
if (this.isAllSelected()) {
|
|
43
|
-
this.selection.
|
|
46
|
+
this.selection.deselect(...this.tableDataSource.filteredData.map(d => d.rowSrc));
|
|
44
47
|
}
|
|
45
48
|
else {
|
|
46
|
-
this.tableDataSource.filteredData.
|
|
49
|
+
this.selection.select(...this.tableDataSource.filteredData.map(d => d.rowSrc));
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
52
|
isAllSelected() {
|
|
50
|
-
|
|
51
|
-
const numSelected = this.selection.selected.length;
|
|
52
|
-
const numRows = filteredData.length;
|
|
53
|
-
return numSelected === numRows;
|
|
53
|
+
return this.tableDataSource.filteredData.every(r => this.selection.isSelected(r.rowSrc));
|
|
54
54
|
}
|
|
55
55
|
static canEnable(tableConfig) {
|
|
56
56
|
return (tableConfig.selectionCfg && tableConfig.selectionCfg.enable) || false;
|
|
@@ -74,4 +74,4 @@ export class SelectionProviderDummy extends SelectionProvider {
|
|
|
74
74
|
return this;
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0aW9uUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL3Byb3ZpZGVycy9TZWxlY3Rpb25Qcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFLeEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE1BQU0sT0FBTyxpQkFBcUIsU0FBUSxnQkFBZ0I7YUFFakMsZ0JBQVcsR0FBRyxhQUFhLEFBQWhCLENBQWlCO0lBS25ELFlBQVksV0FBMkIsRUFBRSxlQUFnRCxFQUFFLGFBQWtCO1FBQzNHLEtBQUssRUFBRSxDQUFDO1FBUE0sY0FBUyxHQUFHLElBQUksQ0FBQztRQVEvQixJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsRUFBRSxZQUFZLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDNUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLE9BQWlCO1FBQ3hDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJ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LENBQUM7SUFDZCxDQUFDO0lBRWUsaUJBQWlCLENBQUMsUUFBMkIsRUFBRSxRQUEyQixFQUFFLFVBQTZCO1FBQ3ZILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RhYmxlUm93fSBmcm9tIFwiLi4vbW9kZWwvVGFibGVSb3dcIjtcclxuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFRhYmxlQ29uZmlnfSBmcm9tIFwiLi4vbW9kZWwvQ29sdW1uQ29uZmlnXCI7XHJcbmltcG9ydCB7RW1wdHlWYWx1ZX0gZnJvbSBcIi4uL21vZGVsL0VtcHR5VmFsdWVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdFByb3ZpZGVyfSBmcm9tIFwiLi9BYnN0cmFjdFByb3ZpZGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uUHJvdmlkZXI8VD4gZXh0ZW5kcyBBYnN0cmFjdFByb3ZpZGVyIHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaXNFbmFibGVkID0gdHJ1ZTtcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTFVNTl9OQU1FID0gJ3RibF9zZWxlY3RzJztcclxuICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPFQ+O1xyXG4gIGNvbmZpZzogU2VsZWN0aW9uQ29uZmlnPFQ+O1xyXG4gIHRhYmxlRGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPFRhYmxlUm93PFQ+PjtcclxuXHJcbiAgY29uc3RydWN0b3IodGFibGVDb25maWc6IFRhYmxlQ29uZmlnPFQ+LCB0YWJsZURhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxUYWJsZVJvdzxUPj4sIGluaXRTZWxlY3Rpb246IFRbXSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuY29uZmlnID0gdGFibGVDb25maWc/LnNlbGVjdGlvbkNmZyB8fCBFbXB0eVZhbHVlLlNFTEVDVElPTl9DT05GSUc7XHJcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0aGlzLmNvbmZpZy5tdWx0aXBsZSwgaW5pdFNlbGVjdGlvbik7XHJcbiAgICBpZiAodGhpcy5jb25maWcuY29tcGFyZVdpdGgpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uY29tcGFyZVdpdGggPSB0aGlzLmNvbmZpZy5jb21wYXJlV2l0aDtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gdGFibGVEYXRhU291cmNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IENPTFVNTl9OQU1FKCkge1xyXG4gICAgcmV0dXJuIFNlbGVjdGlvblByb3ZpZGVyLkNPTFVNTl9OQU1FO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZENoZWNrYm94Q29sdW1uKGNvbHVtbnM6IHN0cmluZ1tdKTogU2VsZWN0aW9uUHJvdmlkZXI8VD4ge1xyXG4gICAgaWYgKHRoaXMuaGFzS2V5KHRoaXMuQ09MVU1OX05BTUUsIGNvbHVtbnMpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnBvc2l0aW9uID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIGNvbHVtbnMudW5zaGlmdCh0aGlzLkNPTFVNTl9OQU1FKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbHVtbnMucHVzaCh0aGlzLkNPTFVNTl9OQU1FKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJpbmRFdmVudEVtaXR0ZXJzKHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8VFtdPiwgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxUW10+LCBvbkRlc2VsZWN0OiBFdmVudEVtaXR0ZXI8VFtdPiwgc2VsZWN0aW9uTW9kZWw6IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25Nb2RlbDxUPj4pOiBTZWxlY3Rpb25Qcm92aWRlcjxUPiB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudC5hZGRlZCkge1xyXG4gICAgICAgIG9uU2VsZWN0LmVtaXQoZXZlbnQuYWRkZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChldmVudC5yZW1vdmVkKSB7XHJcbiAgICAgICAgb25EZXNlbGVjdC5lbWl0KGV2ZW50LnJlbW92ZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gICAgfSk7XHJcbiAgICBzZWxlY3Rpb25Nb2RlbC5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1hc3RlclRvZ2dsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdCguLi50aGlzLnRhYmxlRGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubWFwKGQgPT4gZC5yb3dTcmMpKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlcmVkRGF0YS5tYXAoZCA9PiBkLnJvd1NyYykpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlcmVkRGF0YS5ldmVyeShyID0+IHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoci5yb3dTcmMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGNhbkVuYWJsZTxUPih0YWJsZUNvbmZpZzogVGFibGVDb25maWc8VD4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnICYmIHRhYmxlQ29uZmlnLnNlbGVjdGlvbkNmZy5lbmFibGUpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdGU8VD4odGFibGVDb25maWc6IFRhYmxlQ29uZmlnPFQ+LCB0YWJsZURhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxUYWJsZVJvdzxUPj4sIGluaXRTZWxlY3Rpb246IFRbXSk6IFNlbGVjdGlvblByb3ZpZGVyPFQ+IHtcclxuICAgIGlmIChTZWxlY3Rpb25Qcm92aWRlci5jYW5FbmFibGUodGFibGVDb25maWcpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgU2VsZWN0aW9uUHJvdmlkZXIodGFibGVDb25maWcsIHRhYmxlRGF0YVNvdXJjZSwgaW5pdFNlbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFNlbGVjdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25Qcm92aWRlckR1bW15PFQ+IGV4dGVuZHMgU2VsZWN0aW9uUHJvdmlkZXI8VD4ge1xyXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBpc0VuYWJsZWQgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKEVtcHR5VmFsdWUuVEFCTEVfQ09ORklHLCBFbXB0eVZhbHVlLk1BVF9UQUJMRV9EQVRBX1NPVVJDRSwgW10pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlIGFkZENoZWNrYm94Q29sdW1uKGNvbHVtbnM6IHN0cmluZ1tdKTogU2VsZWN0aW9uUHJvdmlkZXI8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3ZlcnJpZGUgYmluZEV2ZW50RW1pdHRlcnMoc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxUW10+LCBvblNlbGVjdDogRXZlbnRFbWl0dGVyPFRbXT4sIG9uRGVzZWxlY3Q6IEV2ZW50RW1pdHRlcjxUW10+KTogU2VsZWN0aW9uUHJvdmlkZXI8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|