@libs-ui/components-list 0.2.197 → 0.2.199

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.
@@ -1,3 +1,3 @@
1
1
  ;
2
2
  export {};
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWl0ZW0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVKQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSUF2YXRhckNvbmZpZyB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWF2YXRhclwiO1xuaW1wb3J0IHsgSUJhZGdlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYmFkZ2VcIjtcbmltcG9ydCB7IElCdXR0b24gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblwiO1xuaW1wb3J0IHsgSVNvcnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLXNvcnRcIjtcbmltcG9ydCB7IElDaGVja2JveEl0ZW0gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1jaGVja2JveC1ncm91cFwiO1xuaW1wb3J0IHsgSUxhYmVsIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtbGFiZWxcIjtcbmltcG9ydCB7IElQb3BvdmVyLCBJUG9wb3Zlck92ZXJsYXksIFRZUEVfUE9QT1ZFUl9FVkVOVCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcbmltcG9ydCB7IElIdHRwUmVxdWVzdENvbmZpZyB9IGZyb20gXCJAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3RcIjtcbmltcG9ydCB7IFRZUEVfVEVNUExBVEUgfSBmcm9tIFwiLi90ZW1wbGF0ZXMtdHlwZS50eXBlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRZUEVfT0JKRUNUIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW0ge1xuICB0eXBlOiBUWVBFX1RFTVBMQVRFO1xuICBodHRwUmVxdWVzdERhdGE/OiBXcml0YWJsZVNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+O1xuICBjb25maWdUZW1wbGF0ZVRleHQ/OiBXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0PjtcbiAgY29uZmlnVGVtcGxhdGVSYWRpbz86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVJhZGlvPjtcbiAgY29uZmlnVGVtcGxhdGVDaGVja2JveD86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbUNoZWNrYm94PjtcbiAgY29uZmlnVGVtcGxhdGVHcm91cD86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbUdyb3VwPjtcbiAgY29uZmlnVGVtcGxhdGVUYWc/OiBXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UYWc+O1xuICBjb25maWdEZXNjcmlwdGlvbkdyb3VwPzogV3JpdGFibGVTaWduYWw8SUNvbmZpZ0Rlc2NyaXB0aW9uR3JvdXA+O1xuICB0ZXh0Tm9EYXRhPzogc3RyaW5nO1xuICB0ZXh0Tm9EYXRhQ2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICB0ZXh0U2VhcmNoTm9EYXRhPzogc3RyaW5nO1xuICBhdXRvU2VsZWN0Rmlyc3RJdGVtPzogYm9vbGVhbjsgLy8gbuG6v3UgbmjGsCBjw7MgZOG7ryBsaeG7h3UgbcOgIGNoxrBhIGPDsyBrZXlTZWxlY3RlZCB0aMOsIHPhur0gdOG7sSDEkeG7mW5nIGNo4buNbiBwaOG6p24gdOG7qyDEkeG6p3UgdGnDqm47XG4gIGJhY2tncm91bmRMaXN0Q3VzdG9tPzogc3RyaW5nO1xuICBwYWRkaW5nTGVmdEl0ZW0/OiBib29sZWFuO1xuICBzb3J0PzogKGl0ZW1zOiBBcnJheTxhbnk+KSA9PiB2b2lkO1xuICBoYXNJY29uTm9EYXRhPzogYm9vbGVhbjtcbiAgaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaWdub3JlRml4SGVpZ2h0U2hvd0RhdGFXaGVuTm90U2VhcmNoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaGlnaGxpZ2h0VGV4dFNlYXJjaEluUmVzdWx0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaGVpZ2h0SXRlbT86IG51bWJlcjtcbiAgbWluSGVpZ2h0SXRlbT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1UZXh0IHtcbiAgZmllbGRLZXk6IHN0cmluZztcbiAgZ2V0VmFsdWU/OiAoaXRlbTogYW55LCBpdGVtVmlld0luTGlzdD86IFdyaXRhYmxlU2lnbmFsPFRZUEVfT0JKRUNUPikgPT4gc3RyaW5nO1xuICBmaWVsZEdldEltYWdlPzogc3RyaW5nO1xuICBjbGFzc0luY2x1ZGVJbWFnZT86IHN0cmluZztcbiAgZ2V0SW1hZ2U/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZUVycm9yPzogKGRhdGE6IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgaW1nVHlwZUljb24/OiBib29sZWFuO1xuICBpZ25vcmVJY29uU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVJY29uU2VsZWN0ZWQ/OiBzdHJpbmc7XG4gIGlnbm9yZVNob3dGaWVsZExhYmVsPzogYm9vbGVhbjtcbiAgZ2V0SHJlZkJ1dHRvbj86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0Q2xhc3NJdGVtPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRDbGFzc0luY2x1ZGVQb3BvdmVyPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRDb25maWdCdXR0b25MZWZ0PzogKGl0ZW06IGFueSkgPT4gSUJ1dHRvbjtcbiAgZ2V0Q2xhc3NJY29uTGVmdD86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0Q29uZmlnSG92ZXJEYW5nZXI/OiAoaXRlbTogYW55KSA9PiBib29sZWFuO1xuICBnZXRQb3BvdmVyPzogKGl0ZW06IGFueSkgPT4gSVBvcG92ZXIgfCB1bmRlZmluZWQ7XG4gIHJvd3M/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0Um93Pj4+O1xuICBjbGFzc1Jvd3NXcmFwcGVyPzogc3RyaW5nO1xuICBjbGFzc1Jvd3M/OiBzdHJpbmc7XG4gIGNvbmZpZ0xhYmVsUG9wb3Zlcj86IFdyaXRhYmxlU2lnbmFsPElQb3BvdmVyT3ZlcmxheT47XG4gIGF1dG9TY3JvbGxUb0l0ZW1TZWxlY3RlZD86IGJvb2xlYW47XG4gIGl0ZW1Tb3J0PzogV3JpdGFibGVTaWduYWw8SVNvcnQ+OyAvLyBiaeG6v24gbMawdSB0cuG7ryBpdGVtIHNvcnRcbiAgYWN0aW9uU29ydD86IChpdGVtU29ydDogSVNvcnQpID0+IHZvaWQ7IC8vIHNldCBow6BtIG7DoHkgbuG6v3UgbXXhu5FuIGLhuq10IHNvcnQgdHLDqm4gbGlzdFxuICBub3RVc2VWaXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjsgLy8gc+G7rSBk4bulbmcgY2hvIHRyxrDhu51uZyBo4bujcCBjb25maWcgYmFkZ2UgdHJvbmcgdGFibGVcbiAgZ2V0QXZhdGFyQ29uZmlnPzogKGl0ZW06IGFueSkgPT4gSUF2YXRhckNvbmZpZztcbiAgZ2V0Q29uZmlnQWxpZ25TdGFydD86IChpdGVtOiBhbnkpID0+IGJvb2xlYW47XG4gIHN0eWxlUGFkZGluZ1JpZ2h0SXRlbU90aGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1UYWcgZXh0ZW5kcyBJTGlzdENvbmZpZ0l0ZW1UZXh0IHtcbiAgZmllbGRLZXk6IHN0cmluZztcbiAgaWdub3JlSXRlbUZsZXhXcmFwPzogYm9vbGVhbjtcbiAgY2xhc3NJbmNsdWRlQ29udGFpbmVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbVJhZGlvIHtcbiAgZmllbGRLZXk6IHN0cmluZztcbiAgZmllbGRHZXRJbWFnZT86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlSW1hZ2U/OiBzdHJpbmc7XG4gIGhhc0F2YXRhclBhZ2VzU29jaWFsPzogYm9vbGVhbjtcbiAgaGFzQXZhdGFyR3JvdXBTb2NpYWw/OiBib29sZWFuO1xuICBnZXRWYWx1ZT86IChpdGVtOiBhbnksIGl0ZW1WaWV3SW5MaXN0PzogV3JpdGFibGVTaWduYWw8VFlQRV9PQkpFQ1Q+KSA9PiBzdHJpbmc7XG4gIGdldFBvcG92ZXI/OiAoaXRlbTogYW55KSA9PiBJUG9wb3ZlciB8IHVuZGVmaW5lZDtcbiAgcm93cz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHRSb3c+Pj47XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgekluZGV4UG9wb3Zlcj86IG51bWJlcjtcbiAgZ2V0QXZhdGFyQ29uZmlnPzogKGl0ZW06IGFueSkgPT4gSUF2YXRhckNvbmZpZztcbiAgZ2V0Q2xhc3NJdGVtPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBjbGFzc0l0ZW1JbmNsdWRlPzogc3RyaW5nO1xuICBnZXRJbWFnZT86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldEltYWdlRXJyb3I/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbUNoZWNrYm94IHtcbiAgYXV0b1NlbGVjdEFsbEl0ZW0/OiBib29sZWFuOyAvLyBkcm9wZG93biBu4bq/dSBuaMawIGPDsyBk4buvIGxp4buHdSBtw6AgY2jGsGEgY8OzIG11bHRpS2V5U2VsZWN0ZWQgdGjDrCBz4bq9IHThu7EgxJHhu5luZyBjaOG7jW4gcGjhuqduIHThu6sgxJHhuqd1IHRpw6puO1xuICBjbGFzc0xpc3RJbmNsdWRlPzogc3RyaW5nO1xuICBodHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdD86IFdyaXRhYmxlU2lnbmFsPElIdHRwUmVxdWVzdENvbmZpZz47XG4gIGNvbmZpZ0J1dHRvblNlbGVjdEFuZFVuZFNlbGVjdEl0ZW0/OiBXcml0YWJsZVNpZ25hbDx7XG4gICAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICAgIGJ1dHRvbkNoZWNrQWxsPzogSUJ1dHRvbjtcbiAgICBidXR0b25VbmNoZWNrQWxsPzogSUJ1dHRvbjtcbiAgfT47XG4gIGNvbmZpZ0NoZWNrYm94Q2hlY2tBbGw/OiBXcml0YWJsZVNpZ25hbDxJQ2hlY2tib3hJdGVtPjtcbiAgY2xhc3NJbmNsdWRlSGFzQ29uZmlnQ2hlY2tCb3hBbGw/OiBzdHJpbmc7XG4gIGZpZWxkS2V5OiBzdHJpbmc7XG4gIGdldFZhbHVlPzogKGl0ZW06IGFueSwgaXRlbVZpZXdJbkxpc3Q/OiBXcml0YWJsZVNpZ25hbDxUWVBFX09CSkVDVD4pID0+IHN0cmluZztcbiAgZ2V0UG9wb3Zlcj86IChpdGVtOiBhbnkpID0+IElQb3BvdmVyO1xuICBnZXRDbGFzc0l0ZW0/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldEltYWdlPzogKGRhdGE6IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2VFcnJvcj86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGZpZWxkR2V0SW1hZ2U/OiBzdHJpbmc7XG4gIGhhc0F2YXRhclBhZ2VzU29jaWFsPzogYm9vbGVhbjtcbiAgaGFzQXZhdGFyR3JvdXBTb2NpYWw/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVJbWFnZT86IHN0cmluZztcbiAgcm93cz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHRSb3c+Pj47XG4gIGNsYXNzUm93c1dyYXBwZXI/OiBzdHJpbmc7XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgaWdub3JlQ2xpY2tJdGVtVW5DaGVja2VkPzogYm9vbGVhbjtcbiAgY2xhc3NMYWJlbEluY2x1ZGU/OiBzdHJpbmc7XG4gIGZpZWxkR2V0TGlua0ltYWdlRXJyb3I/OiBzdHJpbmc7XG4gIHpJbmRleFBvcG92ZXI/OiBudW1iZXI7XG4gIGNsYXNzSXRlbUluY2x1ZGU/OiBzdHJpbmc7XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG4gIGNsYXNzQ2hlY2tib3hJdGVtSW5jbHVkZT86IHN0cmluZztcbiAgaWdub3JlSXRlbVdpZHRoMTAwPzogYm9vbGVhbjtcbiAgY2xhc3NJbmNsdWRlTGFzdFZpZXdJdGVtPzogc3RyaW5nO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gIGF1dG9TY3JvbGxUb0l0ZW1TZWxlY3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb25maWdJdGVtVGV4dFJvdyB7XG4gIGNsYXNzUm93Pzogc3RyaW5nO1xuICBjbGFzc0l0ZW1TZWxlY3RlZD86IHN0cmluZztcbiAgZ2V0VmFsdWU/OiAoaXRlbTogYW55LCBpdGVtVmlld0luTGlzdD86IFdyaXRhYmxlU2lnbmFsPFRZUEVfT0JKRUNUPikgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBjbGFzc0dldFZhbHVlPzogc3RyaW5nO1xuICBjbGFzc0NvbHM/OiBzdHJpbmc7XG4gIGNvbHM/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0Q29sPj4+O1xuICBnZXRSb3dTdHlsZXNEeW5hbWljQ29scz86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgYWN0aW9uPzogKGl0ZW06IGFueSkgPT4gdm9pZDtcbiAgZ2V0SW1hZ2U/OiAoaXRlbTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDbGFzc0ltYWdlPzogKGl0ZW06IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2VFcnJvcj86IChpdGVtOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldFBvcG92ZXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPElQb3BvdmVyT3ZlcmxheT47XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZyB7XG4gIHZhbHVlPzogYW55O1xuICBpdGVtPzogYW55O1xuICBvdGhlckRhdGE/OiBhbnk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbVRleHRDb2wge1xuICBnZXRDbGFzc0NvbD86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZ2V0VmFsdWU/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZywgaXRlbVZpZXdJbkxpc3Q/OiBXcml0YWJsZVNpZ25hbDxUWVBFX09CSkVDVD4pID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0UG9wb3Zlcj86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IElQb3BvdmVyIHwgdW5kZWZpbmVkO1xuICBhY3Rpb24/OiAoaXRlbTogYW55KSA9PiB2b2lkO1xuICBnZXRJbWFnZT86IChpdGVtOiBhbnkpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0Q2xhc3NJbWFnZT86IChpdGVtOiBhbnkpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2VFcnJvcj86IChpdGVtOiBhbnkpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0Q29uZmlnQmFkZ2U/OiAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiBJQmFkZ2UgfCB1bmRlZmluZWQ7XG4gIGdldFN0eWxlc0R5bmFtaWNDb2w/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRCdXR0b24/OiAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiBJQnV0dG9uIHwgdW5kZWZpbmVkO1xuICBnZXRMYWJlbFN3aXRjaD86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IElMYWJlbCB8IHVuZGVmaW5lZDtcbiAgZ2V0QXZhdGFyQ29uZmlnPzogKGl0ZW06IGFueSkgPT4gSUF2YXRhckNvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1Hcm91cCB7XG4gIGZsYXRJdGVtc1N1cHBvcnRBdXRvU2VsZWN0PzogKGRhdGE6IEFycmF5PGFueT4pID0+IEFycmF5PGFueT47IC8vIHPhu60gZOG7pW5nIGtoaSBtdeG7kW4gbeG6t2MgxJHhu4tuaCBzZWxlY3RlZCB04bqldCBj4bqjIGPDoWMga2V5IHRyb25nIGdyb3VwXG4gIGZpZWxkS2V5Pzogc3RyaW5nO1xuICBpc1ZpZXdSYWRpbz86IGJvb2xlYW47XG4gIHRpbWVJbnRlcnZhbENhbGN1bGF0b3JIZWlnaHQ/OiBudW1iZXI7IC8vIHRyxrDGocyAbmcgaMahzKNwIHRyb25nIHBhZ2Ugbmhpw6rMgHUgbGlzdCB0aGFtIHPDtMyBIG5hzIB5IHNlzIMgdGhheSDEkcO0zIlpIHR1zIB5IHTGsMyAbmcgdHLGsMahzIBuZyBoxqHMo3BcbiAgY29uZmlnQnV0dG9uU2VsZWN0QW5kVW5kU2VsZWN0SXRlbT86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gICAgYnV0dG9uQ2hlY2tBbGw/OiBJQnV0dG9uO1xuICAgIGJ1dHRvblVuY2hlY2tBbGw/OiBJQnV0dG9uO1xuICB9PjtcbiAgY29uZmlnQ2hlY2tib3hDaGVja0FsbD86IFdyaXRhYmxlU2lnbmFsPElDaGVja2JveEl0ZW0+O1xuICBjbGFzc0luY2x1ZGVIYXNDb25maWdDaGVja0JveEFsbD86IHN0cmluZztcbiAgZ2V0TGFiZWxTZWFyY2g/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7IC8vIETDuW5nIMSR4buDICBjdXN0b21zIGtoaSBzZWFyY2gga2jDtG5nIGNo4buJIGZpZWxkIGxhYmVsOiB2w60gZOG7pTogc2VhcmNoIGPhuqMgY29kZSB2w6AgbmFtZSBuaMawbmcgY2jhu4kgaGnhu4NuIHRo4buLIG5hbWVcbiAgZ2V0TGFiZWxHcm91cDogKGdyb3VwOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0RXhwYW5kR3JvdXA/OiAoZ3JvdXA6IGFueSkgPT4gYm9vbGVhbjtcbiAgZ2V0UG9wb3Zlckdyb3VwPzogKGdyb3VwOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0TWF4TGV2ZWxHcm91cDogKGdyb3VwOiBhbnkpID0+IG51bWJlcjtcbiAgZ2V0RGVzY3JpcHRpb25Hcm91cFdoZW5Ob0RhdGE/OiAoZ3JvdXA6IGFueSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBnZXRCdXR0b25Hcm91cD86IChncm91cDogYW55KSA9PiBJQnV0dG9uO1xuICBnZXRJY29uRW1wdHlEYXRhSW5Hcm91cD86IChncm91cDogYW55KSA9PiBib29sZWFuOyAvLyBoaeG7g24gdGjhu4sgaW1hZ2UgZW1wdHkgdHJvbmcgdOG7q25nIGdyb3VwXG4gIGlnbm9yZUNoZWNrYm94R3JvdXA/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVOb2RhdGE/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUdyb3VwPzogc3RyaW5nO1xuICBpZ25vcmVSYWRpb0dyb3VwPzogYm9vbGVhbjtcbiAgaWdub3JlVGV4dFVwcGVyY2FzZUxhYmVsR3JvdXA/OiBib29sZWFuO1xuICBpZ25vcmVHcm91cExpbmU/OiBib29sZWFuO1xuICBtYXJnaW5Ub3BIYXNMaW5lPzogbnVtYmVyO1xuICBpZ25vcmVDbGlja0xhYmVsR3JvdXA/OiBib29sZWFuO1xuXG4gIGZpZWxkR2V0SXRlbXM6IHN0cmluZztcbiAgZmllbGRHZXRBdmF0YXJJdGVtPzogc3RyaW5nO1xuICBpbWdUeXBlSWNvbj86IGJvb2xlYW47XG4gIGNsYXNzSW1hZ2VJbmNsdWRlPzogc3RyaW5nO1xuICBpc1ZpZXdUcmVlPzogYm9vbGVhbjtcbiAgaXNWaWV3VHJlZUpzb24/OiBib29sZWFuO1xuICBnZXRMYWJlbEl0ZW06IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0UG9wb3Zlckl0ZW0/OiAoaXRlbTogYW55KSA9PiBJUG9wb3ZlciB8IHVuZGVmaW5lZDtcbiAgYWN0aW9uUG9wb3ZlckJ5SXRlbT86IChpdGVtOiBhbnksIGV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQpID0+IHZvaWQ7XG4gIGdldEV4cGFuZEl0ZW0/OiAoZ3JvdXA6IGFueSkgPT4gYm9vbGVhbjtcbiAgZ2V0Qm9udXNQYWRkaW5nTGVmdEl0ZW0/OiAoaXRlbTogYW55LCBwYXJlbnRJdGVtPzogYW55KSA9PiBudW1iZXI7XG4gIGdldENsYXNzSW5jbHVkZUl0ZW1Ob0RhdGE/OiAoaXRlbTogYW55LCBwYXJlbnRJdGVtPzogYW55KSA9PiBzdHJpbmc7XG4gIGlnbm9yZUNoZWNrYm94SXRlbT86IGJvb2xlYW47XG4gIGlnbm9yZVJhZGlvSXRlbT86IGJvb2xlYW47XG4gIG5vdENoYW5nZVN0YXRlSXRlbUNoZWNrT3RoZXI/OiBib29sZWFuOyAvLyBz4butIGThu6VuZyBjaG8gdHLGsOG7nW5nIGjhu6NwIGRhbmggbeG7pWMgc+G6o24gcGjhuqltIGtoaSBi4buPIGNo4buNbiAxIG5vZGUgdGjDrCBjw6FjIG5vZGUgY2hhIHbDoCBjb24ga2jDtG5nIOG6o25oIGjGsOG7n25nXG4gIHNlYXJjaEFsbExldmVsPzogYm9vbGVhbjsgLy8gbuG6v3UgYuG6rXQgc2VhcmNoIGFsbCBsZXZlbCB0aMOsIGtoaSB0w6xtIHThuqV0IGPhuqMgY8OhYyBncm91cCBraMO0bmcgcGjDuSBo4bujcCB24bubaSBrZXkgc2VhcmNoIHPhur0gYuG7iyDhuqluLCBrbyBwaMOibiBiaeG7h3QgY+G6pXAgYuG6rWNcbiAgZW1pdEFsbEl0ZW1DaGVja2VkPzogYm9vbGVhbjsgLy8gdGhhbSBraOG6o28gdHLGsOG7nW5nIGjhu6NwIGRhbmggbeG7pWMgc+G6o24gcGjhuqltXG4gIHNpbmdsZVNlbGVjdEl0ZW0/OiBib29sZWFuOyAvLyBz4butIGThu6VuZyBraGkgY2jhu4kgbXXhu5FuIGNo4buNbiBub2RlIOG7nyBsZXZlbCBjdeG7kWkgY8O5bmdcbiAgc2luZ2xlU2VsZWN0SXRlbUJ5VHJlZT86IGJvb2xlYW47IC8vdGhhbSBraOG6o28gdHLGsOG7nW5nIGjhu6NwIGTDsm5nIHPhuqNuIHBo4bqpbSBj4bunYSBiYW5rXG4gIGhhc0ljb25DaGVja1NpbmdsZVNlbGVjdEl0ZW0/OiBib29sZWFuO1xuICBjb2xvckJsdWVXaGVuSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaGFzQmFja2dyb3VuZENvbG9yV2hlbkl0ZW1TZWxlY3RlZD86IGJvb2xlYW47XG4gIGljb25FeHBhbmQ6ICcnIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgaWdub3JlSWNvbkV4cGFuZE1hcmdpblJpZ2h0PzogYm9vbGVhbjtcbiAgb25seVNlbGVjdEZpcnN0SXRlbT86IGJvb2xlYW47XG4gIGlnbm9yZUNob29zZVBhcmVudFRoZW5BdXRvQ2hvb3NlQ2hpbGRyZW4/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgY2hvb3NlQ2hpbGRUaGVuQXV0b0Nob29zZVBhcmVudD86IGJvb2xlYW47IC8vIHRoYW0ga2jhuqNvIHRyxrDhu51uZyBo4bujcCBkw7JuZyBz4bqjbiBwaOG6qW0gY+G7p2EgYmFua1xuICBpZ25vcmVVbnNlbGVjdENoaWxkcmVuUmVtb3ZlU2VsZWN0UGFyZW50PzogYm9vbGVhbjsgLy8gdGhhbSBraOG6o28gdHLGsOG7nW5nIGjhu6NwIGTDsm5nIHPhuqNuIHBo4bqpbSBj4bunYSBiYW5rXG4gIGlnbm9yZUVtaXRBbGxJdGVtQ2hlY2tlZFdoZW5DaG9vc2VDaGlsZFRoZW5BdXRvQ2hvb3NlUGFyZW50PzogYm9vbGVhbjsgLy8gdGhhbSBraOG6o28gdHLGsOG7nW5nIGjhu6NwIGTDsm5nIHPhuqNuIHBo4bqpbSBj4bunYSBiYW5rXG4gIGRpc2FibGVJdGVtTm90TGFzdExldmVsPzogYm9vbGVhbjsgLy8gdGhhbSBraOG6o28gdHLGsOG7nW5nIGjhu6NwIGTDsm5nIHPhuqNuIHBo4bqpbSBj4bunYSBiYW5rXG4gIGNsYXNzTGFiZWxJdGVtPzogc3RyaW5nXG4gIGFsbG93RGlzYWJsZUxhYmVsPzogYm9vbGVhbjtcbiAgekluZGV4TGFiZWw/OiBudW1iZXI7XG4gIGV4cGFuZEZpcnN0SXRlbT86IGJvb2xlYW47XG4gIHdpZHRoTGFiZWxTdWIyNFdoZW5Ob3RUcmVlVmlldz86IGJvb2xlYW47IC8vIHdpZHRoIGxhYmVsIGl0ZW0gdHLhu6sgMjRweCBraGkga2jDtG5nIHBo4bqjaSBk4bqhbmcgdHJlZXZpZXcsXG4gIGNsYXNzSW5jbHVkZUl0ZW0/OiBzdHJpbmc7XG4gIGdldENsYXNzSW5jbHVkZUl0ZW1Db250ZW50PzogKGl0ZW06IGFueSkgPT4gc3RyaW5nOyAvLyB0cnV54buBbiBjbGFzcyBjaG8gaXRlbVxuICBnZXRMaW5rSW1hZ2VFcnJvcj86IChpdGVtOiBhbnkpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2U/OiAoaXRlbTogYW55KSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldEF2YXRhckNvbmZpZz86IChpdGVtOiBhbnkpID0+IElBdmF0YXJDb25maWc7XG4gIGdldEljb25JbWFnZUNsYXNzPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBjbGFzc0luY2x1ZGVMYXN0SXRlbT86IHN0cmluZztcbiAgYXV0b0NvdW50V2hlbkdyb3VwRW1wdHlJdGVtTGV2ZWwxPzogYm9vbGVhbjsgLy8gVHLGsOG7nW5nIGjhu6NwIGNo4buJIGPDsyAxIGdyb3VwIGl0ZW0gdsOgIHN1Yl9pdGVtIGVtcHR5LCBzZXQgPSB0cnVlIHTEg25nIGNoaeG7gXUgY2FvIHBvcHVwIMSR4buDIG5ow6xuIHRo4bqleSBlbXB0eSB0ZXh0IChUaGFtIGto4bqjbyBkcm9wZG93biBjaOG7jW4gbG/huqFpIHPhuqNuIHBo4bqpbSBiYW5rIGtoaSBn4bqvbiBkw7JuZy8gbG/huqFpIHPhuqNuIHBo4bqpbSlcbiAgaWdub3JlQ2hhbmdlQ2hpbGRyZW5EaXNhYmxlV2hlbkNoYW5nZVBhcmVudD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnRGVzY3JpcHRpb25Hcm91cCB7XG4gIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgdG9vbHRpcERlc2NyaXB0aW9uPzogV3JpdGFibGVTaWduYWw8SVBvcG92ZXJPdmVybGF5PjtcbiAgdGV4dERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNsYXNzVGV4dERlc2NyaXB0aW9uSW5jbHVkZT86IHN0cmluZztcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWl0ZW0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL2ludGVyZmFjZXMvY29uZmlnLWl0ZW0uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThKQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSUF2YXRhckNvbmZpZyB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWF2YXRhclwiO1xuaW1wb3J0IHsgSUJhZGdlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtYmFkZ2VcIjtcbmltcG9ydCB7IElCdXR0b24gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblwiO1xuaW1wb3J0IHsgSVNvcnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLXNvcnRcIjtcbmltcG9ydCB7IElDaGVja2JveEl0ZW0gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1jaGVja2JveC1ncm91cFwiO1xuaW1wb3J0IHsgSUxhYmVsIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtbGFiZWxcIjtcbmltcG9ydCB7IElQb3BvdmVyLCBJUG9wb3Zlck92ZXJsYXksIFRZUEVfUE9QT1ZFUl9FVkVOVCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcbmltcG9ydCB7IElIdHRwUmVxdWVzdENvbmZpZyB9IGZyb20gXCJAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3RcIjtcbmltcG9ydCB7IFRZUEVfVEVNUExBVEUgfSBmcm9tIFwiLi90ZW1wbGF0ZXMtdHlwZS50eXBlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRZUEVfT0JKRUNUIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNDb21wb25uZW50T3V0bGV0Q29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtY29tcG9uZW50LW91dGxldFwiO1xuXG5leHBvcnQgdHlwZSBUWVBFX0xJU1RfSVRFTSA9IFdyaXRhYmxlU2lnbmFsPFRZUEVfT0JKRUNUPjtcblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW0ge1xuICB0eXBlOiBUWVBFX1RFTVBMQVRFO1xuICBodHRwUmVxdWVzdERhdGE/OiBXcml0YWJsZVNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWc+O1xuICBjb25maWdUZW1wbGF0ZVRleHQ/OiBXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UZXh0PjtcbiAgY29uZmlnVGVtcGxhdGVSYWRpbz86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVJhZGlvPjtcbiAgY29uZmlnVGVtcGxhdGVDaGVja2JveD86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbUNoZWNrYm94PjtcbiAgY29uZmlnVGVtcGxhdGVHcm91cD86IFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbUdyb3VwPjtcbiAgY29uZmlnVGVtcGxhdGVUYWc/OiBXcml0YWJsZVNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1UYWc+O1xuICBjb25maWdEZXNjcmlwdGlvbkdyb3VwPzogV3JpdGFibGVTaWduYWw8SUNvbmZpZ0Rlc2NyaXB0aW9uR3JvdXA+O1xuICB0ZXh0Tm9EYXRhPzogc3RyaW5nO1xuICB0ZXh0Tm9EYXRhQ2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICB0ZXh0U2VhcmNoTm9EYXRhPzogc3RyaW5nO1xuICBhdXRvU2VsZWN0Rmlyc3RJdGVtPzogYm9vbGVhbjsgLy8gbuG6v3UgbmjGsCBjw7MgZOG7ryBsaeG7h3UgbcOgIGNoxrBhIGPDsyBrZXlTZWxlY3RlZCB0aMOsIHPhur0gdOG7sSDEkeG7mW5nIGNo4buNbiBwaOG6p24gdOG7qyDEkeG6p3UgdGnDqm47XG4gIGJhY2tncm91bmRMaXN0Q3VzdG9tPzogc3RyaW5nO1xuICBwYWRkaW5nTGVmdEl0ZW0/OiBib29sZWFuO1xuICBzb3J0PzogKGl0ZW1zOiBBcnJheTxhbnk+KSA9PiB2b2lkO1xuICBoYXNJY29uTm9EYXRhPzogYm9vbGVhbjtcbiAgaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaWdub3JlRml4SGVpZ2h0U2hvd0RhdGFXaGVuTm90U2VhcmNoPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaGlnaGxpZ2h0VGV4dFNlYXJjaEluUmVzdWx0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaGVpZ2h0SXRlbT86IG51bWJlcjtcbiAgbWluSGVpZ2h0SXRlbT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1UZXh0IHtcbiAgZmllbGRLZXk6IHN0cmluZztcbiAgZ2V0VmFsdWU/OiAoaXRlbTogYW55LCBpdGVtVmlld0luTGlzdD86IFRZUEVfTElTVF9JVEVNKSA9PiBzdHJpbmc7XG4gIGZpZWxkR2V0SW1hZ2U/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUltYWdlPzogc3RyaW5nO1xuICBnZXRJbWFnZT86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldEltYWdlRXJyb3I/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpbWdUeXBlSWNvbj86IGJvb2xlYW47XG4gIGlnbm9yZUljb25TZWxlY3RlZD86IGJvb2xlYW47XG4gIGNsYXNzSW5jbHVkZUljb25TZWxlY3RlZD86IHN0cmluZztcbiAgaWdub3JlU2hvd0ZpZWxkTGFiZWw/OiBib29sZWFuO1xuICBnZXRIcmVmQnV0dG9uPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRDbGFzc0l0ZW0/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldENsYXNzSW5jbHVkZVBvcG92ZXI/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGdldENvbmZpZ0J1dHRvbkxlZnQ/OiAoaXRlbTogYW55KSA9PiBJQnV0dG9uO1xuICBnZXRDbGFzc0ljb25MZWZ0PzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBnZXRDb25maWdIb3ZlckRhbmdlcj86IChpdGVtOiBhbnkpID0+IGJvb2xlYW47XG4gIGdldFBvcG92ZXI/OiAoaXRlbTogYW55KSA9PiBJUG9wb3ZlciB8IHVuZGVmaW5lZDtcbiAgcm93cz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHRSb3c+Pj47XG4gIGNsYXNzUm93c1dyYXBwZXI/OiBzdHJpbmc7XG4gIGNsYXNzUm93cz86IHN0cmluZztcbiAgY29uZmlnTGFiZWxQb3BvdmVyPzogV3JpdGFibGVTaWduYWw8SVBvcG92ZXJPdmVybGF5PjtcbiAgYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaXRlbVNvcnQ/OiBXcml0YWJsZVNpZ25hbDxJU29ydD47IC8vIGJp4bq/biBsxrB1IHRy4buvIGl0ZW0gc29ydFxuICBhY3Rpb25Tb3J0PzogKGl0ZW1Tb3J0OiBJU29ydCkgPT4gdm9pZDsgLy8gc2V0IGjDoG0gbsOgeSBu4bq/dSBtdeG7kW4gYuG6rXQgc29ydCB0csOqbiBsaXN0XG4gIG5vdFVzZVZpcnR1YWxTY3JvbGw/OiBib29sZWFuOyAvLyBz4butIGThu6VuZyBjaG8gdHLGsOG7nW5nIGjhu6NwIGNvbmZpZyBiYWRnZSB0cm9uZyB0YWJsZVxuICBnZXRBdmF0YXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBJQXZhdGFyQ29uZmlnO1xuICBnZXRDb25maWdBbGlnblN0YXJ0PzogKGl0ZW06IGFueSkgPT4gYm9vbGVhbjtcbiAgc3R5bGVQYWRkaW5nUmlnaHRJdGVtT3RoZXI/OiBib29sZWFuO1xuICBnZXRDb21wb25lbnRPdXRsZXQ/OiAoKSA9PiBPYnNlcnZhYmxlPExpYnNVaUNvbXBvbmVudHNDb21wb25uZW50T3V0bGV0Q29tcG9uZW50IHwgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1UYWcgZXh0ZW5kcyBJTGlzdENvbmZpZ0l0ZW1UZXh0IHtcbiAgZmllbGRLZXk6IHN0cmluZztcbiAgaWdub3JlSXRlbUZsZXhXcmFwPzogYm9vbGVhbjtcbiAgY2xhc3NJbmNsdWRlQ29udGFpbmVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbVJhZGlvIHtcbiAgZmllbGRLZXk6IHN0cmluZztcbiAgZmllbGRHZXRJbWFnZT86IHN0cmluZztcbiAgY2xhc3NJbmNsdWRlSW1hZ2U/OiBzdHJpbmc7XG4gIGhhc0F2YXRhclBhZ2VzU29jaWFsPzogYm9vbGVhbjtcbiAgaGFzQXZhdGFyR3JvdXBTb2NpYWw/OiBib29sZWFuO1xuICBnZXRWYWx1ZT86IChpdGVtOiBhbnksIGl0ZW1WaWV3SW5MaXN0PzogVFlQRV9MSVNUX0lURU0pID0+IHN0cmluZztcbiAgZ2V0UG9wb3Zlcj86IChpdGVtOiBhbnkpID0+IElQb3BvdmVyIHwgdW5kZWZpbmVkO1xuICByb3dzPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUxpc3RDb25maWdJdGVtVGV4dFJvdz4+PjtcbiAgY2xhc3NSb3dzPzogc3RyaW5nO1xuICBhdXRvU2Nyb2xsVG9JdGVtU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB6SW5kZXhQb3BvdmVyPzogbnVtYmVyO1xuICBnZXRBdmF0YXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBJQXZhdGFyQ29uZmlnO1xuICBnZXRDbGFzc0l0ZW0/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGNsYXNzSXRlbUluY2x1ZGU/OiBzdHJpbmc7XG4gIGdldEltYWdlPzogKGRhdGE6IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0SW1hZ2VFcnJvcj86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldENvbXBvbmVudE91dGxldD86ICgpID0+IE9ic2VydmFibGU8TGlic1VpQ29tcG9uZW50c0NvbXBvbm5lbnRPdXRsZXRDb21wb25lbnQgfCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbUNoZWNrYm94IHtcbiAgYXV0b1NlbGVjdEFsbEl0ZW0/OiBib29sZWFuOyAvLyBkcm9wZG93biBu4bq/dSBuaMawIGPDsyBk4buvIGxp4buHdSBtw6AgY2jGsGEgY8OzIG11bHRpS2V5U2VsZWN0ZWQgdGjDrCBz4bq9IHThu7EgxJHhu5luZyBjaOG7jW4gcGjhuqduIHThu6sgxJHhuqd1IHRpw6puO1xuICBjbGFzc0xpc3RJbmNsdWRlPzogc3RyaW5nO1xuICBodHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdD86IFdyaXRhYmxlU2lnbmFsPElIdHRwUmVxdWVzdENvbmZpZz47XG4gIGNvbmZpZ0J1dHRvblNlbGVjdEFuZFVuZFNlbGVjdEl0ZW0/OiBXcml0YWJsZVNpZ25hbDx7XG4gICAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICAgIGJ1dHRvbkNoZWNrQWxsPzogSUJ1dHRvbjtcbiAgICBidXR0b25VbmNoZWNrQWxsPzogSUJ1dHRvbjtcbiAgfT47XG4gIGNvbmZpZ0NoZWNrYm94Q2hlY2tBbGw/OiBXcml0YWJsZVNpZ25hbDxJQ2hlY2tib3hJdGVtPjtcbiAgY2xhc3NJbmNsdWRlSGFzQ29uZmlnQ2hlY2tCb3hBbGw/OiBzdHJpbmc7XG4gIGZpZWxkS2V5OiBzdHJpbmc7XG4gIGdldFZhbHVlPzogKGl0ZW06IGFueSwgaXRlbVZpZXdJbkxpc3Q/OiBUWVBFX0xJU1RfSVRFTSkgPT4gc3RyaW5nO1xuICBnZXRQb3BvdmVyPzogKGl0ZW06IGFueSkgPT4gSVBvcG92ZXI7XG4gIGdldENsYXNzSXRlbT86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0SW1hZ2U/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZUVycm9yPzogKGRhdGE6IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZmllbGRHZXRJbWFnZT86IHN0cmluZztcbiAgaGFzQXZhdGFyUGFnZXNTb2NpYWw/OiBib29sZWFuO1xuICBoYXNBdmF0YXJHcm91cFNvY2lhbD86IGJvb2xlYW47XG4gIGNsYXNzSW5jbHVkZUltYWdlPzogc3RyaW5nO1xuICByb3dzPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUxpc3RDb25maWdJdGVtVGV4dFJvdz4+PjtcbiAgY2xhc3NSb3dzV3JhcHBlcj86IHN0cmluZztcbiAgY2xhc3NSb3dzPzogc3RyaW5nO1xuICBpZ25vcmVDbGlja0l0ZW1VbkNoZWNrZWQ/OiBib29sZWFuO1xuICBjbGFzc0xhYmVsSW5jbHVkZT86IHN0cmluZztcbiAgZmllbGRHZXRMaW5rSW1hZ2VFcnJvcj86IHN0cmluZztcbiAgekluZGV4UG9wb3Zlcj86IG51bWJlcjtcbiAgY2xhc3NJdGVtSW5jbHVkZT86IHN0cmluZztcbiAgZ2V0QXZhdGFyQ29uZmlnPzogKGl0ZW06IGFueSkgPT4gSUF2YXRhckNvbmZpZztcbiAgY2xhc3NDaGVja2JveEl0ZW1JbmNsdWRlPzogc3RyaW5nO1xuICBpZ25vcmVJdGVtV2lkdGgxMDA/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVMYXN0Vmlld0l0ZW0/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgZ2V0Q29tcG9uZW50T3V0bGV0PzogKCkgPT4gT2JzZXJ2YWJsZTxMaWJzVWlDb21wb25lbnRzQ29tcG9ubmVudE91dGxldENvbXBvbmVudCB8IGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb25maWdJdGVtVGV4dFJvdyB7XG4gIGNsYXNzUm93Pzogc3RyaW5nO1xuICBjbGFzc0l0ZW1TZWxlY3RlZD86IHN0cmluZztcbiAgZ2V0VmFsdWU/OiAoaXRlbTogYW55LCBpdGVtVmlld0luTGlzdD86IFRZUEVfTElTVF9JVEVNKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGNsYXNzR2V0VmFsdWU/OiBzdHJpbmc7XG4gIGNsYXNzQ29scz86IHN0cmluZztcbiAgY29scz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElMaXN0Q29uZmlnSXRlbVRleHRDb2w+Pj47XG4gIGdldFJvd1N0eWxlc0R5bmFtaWNDb2xzPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBhY3Rpb24/OiAoaXRlbTogYW55KSA9PiB2b2lkO1xuICBnZXRJbWFnZT86IChpdGVtOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldENsYXNzSW1hZ2U/OiAoaXRlbTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZUVycm9yPzogKGl0ZW06IElEYXRhRnVuY3Rpb25DYWxsSW5Db25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0UG9wb3ZlckNvbmZpZz86IChpdGVtOiBhbnkpID0+IE9ic2VydmFibGU8SVBvcG92ZXJPdmVybGF5PjtcbiAgZ2V0QXZhdGFyQ29uZmlnPzogKGl0ZW06IGFueSkgPT4gSUF2YXRhckNvbmZpZztcbiAgZ2V0Q29tcG9uZW50T3V0bGV0PzogKCkgPT4gT2JzZXJ2YWJsZTxMaWJzVWlDb21wb25lbnRzQ29tcG9ubmVudE91dGxldENvbXBvbmVudCB8IGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZyB7XG4gIHZhbHVlPzogYW55O1xuICBpdGVtPzogYW55O1xuICBvdGhlckRhdGE/OiBhbnk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29uZmlnSXRlbVRleHRDb2wge1xuICBnZXRDbGFzc0NvbD86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZ2V0VmFsdWU/OiAoZGF0YTogSURhdGFGdW5jdGlvbkNhbGxJbkNvbmZpZywgaXRlbVZpZXdJbkxpc3Q/OiBUWVBFX0xJU1RfSVRFTSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRQb3BvdmVyPzogKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gSVBvcG92ZXIgfCB1bmRlZmluZWQ7XG4gIGFjdGlvbj86IChpdGVtOiBhbnkpID0+IHZvaWQ7XG4gIGdldEltYWdlPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDbGFzc0ltYWdlPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZUVycm9yPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRDb25maWdCYWRnZT86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IElCYWRnZSB8IHVuZGVmaW5lZDtcbiAgZ2V0U3R5bGVzRHluYW1pY0NvbD86IChkYXRhOiBJRGF0YUZ1bmN0aW9uQ2FsbEluQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdldEJ1dHRvbj86IChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IElCdXR0b24gfCB1bmRlZmluZWQ7XG4gIGdldExhYmVsU3dpdGNoPzogKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gSUxhYmVsIHwgdW5kZWZpbmVkO1xuICBnZXRBdmF0YXJDb25maWc/OiAoaXRlbTogYW55KSA9PiBJQXZhdGFyQ29uZmlnO1xuICBnZXRDb21wb25lbnRPdXRsZXQ/OiAoKSA9PiBPYnNlcnZhYmxlPExpYnNVaUNvbXBvbmVudHNDb21wb25uZW50T3V0bGV0Q29tcG9uZW50IHwgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlzdENvbmZpZ0l0ZW1Hcm91cCB7XG4gIGZsYXRJdGVtc1N1cHBvcnRBdXRvU2VsZWN0PzogKGRhdGE6IEFycmF5PGFueT4pID0+IEFycmF5PGFueT47IC8vIHPhu60gZOG7pW5nIGtoaSBtdeG7kW4gbeG6t2MgxJHhu4tuaCBzZWxlY3RlZCB04bqldCBj4bqjIGPDoWMga2V5IHRyb25nIGdyb3VwXG4gIGZpZWxkS2V5Pzogc3RyaW5nO1xuICBpc1ZpZXdSYWRpbz86IGJvb2xlYW47XG4gIHRpbWVJbnRlcnZhbENhbGN1bGF0b3JIZWlnaHQ/OiBudW1iZXI7IC8vIHRyxrDGocyAbmcgaMahzKNwIHRyb25nIHBhZ2Ugbmhpw6rMgHUgbGlzdCB0aGFtIHPDtMyBIG5hzIB5IHNlzIMgdGhheSDEkcO0zIlpIHR1zIB5IHTGsMyAbmcgdHLGsMahzIBuZyBoxqHMo3BcbiAgY29uZmlnQnV0dG9uU2VsZWN0QW5kVW5kU2VsZWN0SXRlbT86IFdyaXRhYmxlU2lnbmFsPHtcbiAgICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gICAgYnV0dG9uQ2hlY2tBbGw/OiBJQnV0dG9uO1xuICAgIGJ1dHRvblVuY2hlY2tBbGw/OiBJQnV0dG9uO1xuICB9PjtcbiAgY29uZmlnQ2hlY2tib3hDaGVja0FsbD86IFdyaXRhYmxlU2lnbmFsPElDaGVja2JveEl0ZW0+O1xuICBjbGFzc0luY2x1ZGVIYXNDb25maWdDaGVja0JveEFsbD86IHN0cmluZztcbiAgZ2V0TGFiZWxTZWFyY2g/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7IC8vIETDuW5nIMSR4buDICBjdXN0b21zIGtoaSBzZWFyY2gga2jDtG5nIGNo4buJIGZpZWxkIGxhYmVsOiB2w60gZOG7pTogc2VhcmNoIGPhuqMgY29kZSB2w6AgbmFtZSBuaMawbmcgY2jhu4kgaGnhu4NuIHRo4buLIG5hbWVcbiAgZ2V0TGFiZWxHcm91cDogKGdyb3VwOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0RXhwYW5kR3JvdXA/OiAoZ3JvdXA6IGFueSkgPT4gYm9vbGVhbjtcbiAgZ2V0UG9wb3Zlckdyb3VwPzogKGdyb3VwOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0TWF4TGV2ZWxHcm91cDogKGdyb3VwOiBhbnkpID0+IG51bWJlcjtcbiAgZ2V0RGVzY3JpcHRpb25Hcm91cFdoZW5Ob0RhdGE/OiAoZ3JvdXA6IGFueSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBnZXRCdXR0b25Hcm91cD86IChncm91cDogYW55KSA9PiBJQnV0dG9uO1xuICBnZXRJY29uRW1wdHlEYXRhSW5Hcm91cD86IChncm91cDogYW55KSA9PiBib29sZWFuOyAvLyBoaeG7g24gdGjhu4sgaW1hZ2UgZW1wdHkgdHJvbmcgdOG7q25nIGdyb3VwXG4gIGdldENvbXBvbmVudE91dGxldEdyb3VwPzogKCkgPT4gT2JzZXJ2YWJsZTxMaWJzVWlDb21wb25lbnRzQ29tcG9ubmVudE91dGxldENvbXBvbmVudCB8IGFueT47XG4gIGlnbm9yZUNoZWNrYm94R3JvdXA/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGVOb2RhdGE/OiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUdyb3VwPzogc3RyaW5nO1xuICBpZ25vcmVSYWRpb0dyb3VwPzogYm9vbGVhbjtcbiAgaWdub3JlVGV4dFVwcGVyY2FzZUxhYmVsR3JvdXA/OiBib29sZWFuO1xuICBpZ25vcmVHcm91cExpbmU/OiBib29sZWFuO1xuICBtYXJnaW5Ub3BIYXNMaW5lPzogbnVtYmVyO1xuICBpZ25vcmVDbGlja0xhYmVsR3JvdXA/OiBib29sZWFuO1xuXG4gIGZpZWxkR2V0SXRlbXM6IHN0cmluZztcbiAgZmllbGRHZXRBdmF0YXJJdGVtPzogc3RyaW5nO1xuICBpbWdUeXBlSWNvbj86IGJvb2xlYW47XG4gIGNsYXNzSW1hZ2VJbmNsdWRlPzogc3RyaW5nO1xuICBpc1ZpZXdUcmVlPzogYm9vbGVhbjtcbiAgaXNWaWV3VHJlZUpzb24/OiBib29sZWFuO1xuICBnZXRMYWJlbEl0ZW06IChpdGVtOiBhbnkpID0+IHN0cmluZztcbiAgZ2V0UG9wb3Zlckl0ZW0/OiAoaXRlbTogYW55KSA9PiBJUG9wb3ZlciB8IHVuZGVmaW5lZDtcbiAgYWN0aW9uUG9wb3ZlckJ5SXRlbT86IChpdGVtOiBhbnksIGV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQpID0+IHZvaWQ7XG4gIGdldEV4cGFuZEl0ZW0/OiAoZ3JvdXA6IGFueSkgPT4gYm9vbGVhbjtcbiAgZ2V0Qm9udXNQYWRkaW5nTGVmdEl0ZW0/OiAoaXRlbTogYW55LCBwYXJlbnRJdGVtPzogYW55KSA9PiBudW1iZXI7XG4gIGdldENsYXNzSW5jbHVkZUl0ZW1Ob0RhdGE/OiAoaXRlbTogYW55LCBwYXJlbnRJdGVtPzogYW55KSA9PiBzdHJpbmc7XG4gIGdldENvbXBvbmVudE91dGxldEl0ZW0/OiAoKSA9PiBPYnNlcnZhYmxlPExpYnNVaUNvbXBvbmVudHNDb21wb25uZW50T3V0bGV0Q29tcG9uZW50IHwgYW55PjtcbiAgaWdub3JlQ2hlY2tib3hJdGVtPzogYm9vbGVhbjtcbiAgaWdub3JlUmFkaW9JdGVtPzogYm9vbGVhbjtcbiAgbm90Q2hhbmdlU3RhdGVJdGVtQ2hlY2tPdGhlcj86IGJvb2xlYW47IC8vIHPhu60gZOG7pW5nIGNobyB0csaw4budbmcgaOG7o3AgZGFuaCBt4bulYyBz4bqjbiBwaOG6qW0ga2hpIGLhu48gY2jhu41uIDEgbm9kZSB0aMOsIGPDoWMgbm9kZSBjaGEgdsOgIGNvbiBraMO0bmcg4bqjbmggaMaw4bufbmdcbiAgc2VhcmNoQWxsTGV2ZWw/OiBib29sZWFuOyAvLyBu4bq/dSBi4bqtdCBzZWFyY2ggYWxsIGxldmVsIHRow6wga2hpIHTDrG0gdOG6pXQgY+G6oyBjw6FjIGdyb3VwIGtow7RuZyBwaMO5IGjhu6NwIHbhu5tpIGtleSBzZWFyY2ggc+G6vSBi4buLIOG6qW4sIGtvIHBow6JuIGJp4buHdCBj4bqlcCBi4bqtY1xuICBlbWl0QWxsSXRlbUNoZWNrZWQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZGFuaCBt4bulYyBz4bqjbiBwaOG6qW1cbiAgc2luZ2xlU2VsZWN0SXRlbT86IGJvb2xlYW47IC8vIHPhu60gZOG7pW5nIGtoaSBjaOG7iSBtdeG7kW4gY2jhu41uIG5vZGUg4bufIGxldmVsIGN14buRaSBjw7luZ1xuICBzaW5nbGVTZWxlY3RJdGVtQnlUcmVlPzogYm9vbGVhbjsgLy90aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgaGFzSWNvbkNoZWNrU2luZ2xlU2VsZWN0SXRlbT86IGJvb2xlYW47XG4gIGNvbG9yQmx1ZVdoZW5JdGVtU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBoYXNCYWNrZ3JvdW5kQ29sb3JXaGVuSXRlbVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaWNvbkV4cGFuZDogJycgfCAnbGVmdCcgfCAncmlnaHQnO1xuICBpZ25vcmVJY29uRXhwYW5kTWFyZ2luUmlnaHQ/OiBib29sZWFuO1xuICBvbmx5U2VsZWN0Rmlyc3RJdGVtPzogYm9vbGVhbjtcbiAgaWdub3JlQ2hvb3NlUGFyZW50VGhlbkF1dG9DaG9vc2VDaGlsZHJlbj86IGJvb2xlYW47IC8vIHRoYW0ga2jhuqNvIHRyxrDhu51uZyBo4bujcCBkw7JuZyBz4bqjbiBwaOG6qW0gY+G7p2EgYmFua1xuICBjaG9vc2VDaGlsZFRoZW5BdXRvQ2hvb3NlUGFyZW50PzogYm9vbGVhbjsgLy8gdGhhbSBraOG6o28gdHLGsOG7nW5nIGjhu6NwIGTDsm5nIHPhuqNuIHBo4bqpbSBj4bunYSBiYW5rXG4gIGlnbm9yZVVuc2VsZWN0Q2hpbGRyZW5SZW1vdmVTZWxlY3RQYXJlbnQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgaWdub3JlRW1pdEFsbEl0ZW1DaGVja2VkV2hlbkNob29zZUNoaWxkVGhlbkF1dG9DaG9vc2VQYXJlbnQ/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgZGlzYWJsZUl0ZW1Ob3RMYXN0TGV2ZWw/OiBib29sZWFuOyAvLyB0aGFtIGto4bqjbyB0csaw4budbmcgaOG7o3AgZMOybmcgc+G6o24gcGjhuqltIGPhu6dhIGJhbmtcbiAgY2xhc3NMYWJlbEl0ZW0/OiBzdHJpbmdcbiAgYWxsb3dEaXNhYmxlTGFiZWw/OiBib29sZWFuO1xuICB6SW5kZXhMYWJlbD86IG51bWJlcjtcbiAgZXhwYW5kRmlyc3RJdGVtPzogYm9vbGVhbjtcbiAgd2lkdGhMYWJlbFN1YjI0V2hlbk5vdFRyZWVWaWV3PzogYm9vbGVhbjsgLy8gd2lkdGggbGFiZWwgaXRlbSB0cuG7qyAyNHB4IGtoaSBraMO0bmcgcGjhuqNpIGThuqFuZyB0cmVldmlldyxcbiAgY2xhc3NJbmNsdWRlSXRlbT86IHN0cmluZztcbiAgZ2V0Q2xhc3NJbmNsdWRlSXRlbUNvbnRlbnQ/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7IC8vIHRydXnhu4FuIGNsYXNzIGNobyBpdGVtXG4gIGdldExpbmtJbWFnZUVycm9yPzogKGl0ZW06IGFueSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBnZXRJbWFnZT86IChpdGVtOiBhbnkpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZ2V0QXZhdGFyQ29uZmlnPzogKGl0ZW06IGFueSkgPT4gSUF2YXRhckNvbmZpZztcbiAgZ2V0SWNvbkltYWdlQ2xhc3M/OiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG4gIGNsYXNzSW5jbHVkZUxhc3RJdGVtPzogc3RyaW5nO1xuICBhdXRvQ291bnRXaGVuR3JvdXBFbXB0eUl0ZW1MZXZlbDE/OiBib29sZWFuOyAvLyBUcsaw4budbmcgaOG7o3AgY2jhu4kgY8OzIDEgZ3JvdXAgaXRlbSB2w6Agc3ViX2l0ZW0gZW1wdHksIHNldCA9IHRydWUgdMSDbmcgY2hp4buBdSBjYW8gcG9wdXAgxJHhu4MgbmjDrG4gdGjhuqV5IGVtcHR5IHRleHQgKFRoYW0ga2jhuqNvIGRyb3Bkb3duIGNo4buNbiBsb+G6oWkgc+G6o24gcGjhuqltIGJhbmsga2hpIGfhuq9uIGTDsm5nLyBsb+G6oWkgc+G6o24gcGjhuqltKVxuICBpZ25vcmVDaGFuZ2VDaGlsZHJlbkRpc2FibGVXaGVuQ2hhbmdlUGFyZW50PzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdEZXNjcmlwdGlvbkdyb3VwIHtcbiAgY2xhc3NJbmNsdWRlPzogc3RyaW5nO1xuICB0b29sdGlwRGVzY3JpcHRpb24/OiBXcml0YWJsZVNpZ25hbDxJUG9wb3Zlck92ZXJsYXk+O1xuICB0ZXh0RGVzY3JpcHRpb246IHN0cmluZztcbiAgY2xhc3NUZXh0RGVzY3JpcHRpb25JbmNsdWRlPzogc3RyaW5nO1xufVxuIl19
@@ -8,13 +8,14 @@ import { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scro
8
8
  import { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';
9
9
  import { LibsUiIconsGetIconComponentPipe } from '@libs-ui/icons';
10
10
  import { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';
11
- import { cloneDeep, convertSignalToObject, deleteUnicode, escapeHtml, get, isEmpty } from '@libs-ui/utils';
11
+ import { cloneDeep, convertSignalToObject, deleteUnicode, escapeHtml, get, isNil } from '@libs-ui/utils';
12
12
  import { TranslateModule } from '@ngx-translate/core';
13
13
  import { LibsUiComponentsListHighlightKeySearchDirective } from '../../highlight-key-search/highlight-key-search.directive';
14
14
  import { LibsUiCheckSelectedByKeyPipe } from '../../pipes/check-selected-by-key.pipe';
15
15
  import { LibsUiComponentsListRowsComponent } from '../rows/rows.component';
16
16
  import { LibsUiComponentsListTemplatesComponentAbstract } from '../templates.component.abstract';
17
17
  import { LibsUiPipesConvertObjectToSignalPipe } from '@libs-ui/pipes-convert-object-to-signal';
18
+ import { LibsUiPipesGetValueOfObjectPipe } from '@libs-ui/pipes-get-value-of-object';
18
19
  import * as i0 from "@angular/core";
19
20
  import * as i1 from "@iharbeck/ngx-virtual-scroller";
20
21
  import * as i2 from "@ngx-translate/core";
@@ -23,7 +24,7 @@ export class LibsUiComponentsListCheckboxComponent extends LibsUiComponentsListT
23
24
  configTemplateCheckbox = signal(undefined);
24
25
  virtualScrollerComponent = viewChild(VirtualScrollerComponent);
25
26
  ngOnInit() {
26
- if (isEmpty(this.config()?.configTemplateCheckbox?.())) {
27
+ if (isNil(this.config()?.configTemplateCheckbox?.())) {
27
28
  return;
28
29
  }
29
30
  super.ngOnInit();
@@ -276,7 +277,7 @@ export class LibsUiComponentsListCheckboxComponent extends LibsUiComponentsListT
276
277
  return this.items().length;
277
278
  }
278
279
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
279
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsListCheckboxComponent, isStandalone: true, selector: "libs_ui-components-list-templates_checkbox", viewQueries: [{ propertyName: "virtualScrollerComponent", first: true, predicate: VirtualScrollerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (configTemplateCheckbox(); as configTemplateCheckbox) {\n <div class=\"flex flex-col w-full h-full\">\n @if (items().length && configTemplateCheckbox.configButtonSelectAndUndSelectItem?.(); as configButtonSelectItem) {\n <div\n [class]=\"'flex items-center bg-[#ffffff] '+(configButtonSelectItem.classInclude ?? 'libs-ui-border-bottom-general')\">\n <libs_ui-components-buttons-button [type]=\"configButtonSelectItem.buttonCheckAll?.type ?? 'button-link-primary'\"\n [label]=\"configButtonSelectItem.buttonCheckAll?.label ?? 'i18n_select_all_searched_results'\"\n [classInclude]=\"configButtonSelectItem.buttonCheckAll?.classInclude || 'pr-[8px]'\"\n [classLabel]=\"configButtonSelectItem.buttonCheckAll?.classLabel || 'libs-ui-font-h6r'\"\n [disable]=\"loading() || disable() || false\"\n (outClick)=\"handlerSelect(true)\" />\n <div class=\"text-[#e6e7ea]\">|</div>\n <libs_ui-components-buttons-button\n [type]=\"configButtonSelectItem.buttonUncheckAll?.type ?? 'button-link-primary'\"\n [label]=\"configButtonSelectItem.buttonUncheckAll?.label ?? 'i18n_unselect_all_searched_results'\"\n [classInclude]=\"configButtonSelectItem.buttonUncheckAll?.classInclude || 'pl-[8px]'\"\n [classLabel]=\"configButtonSelectItem.buttonUncheckAll?.classLabel || 'libs-ui-font-h6r'\"\n [disable]=\"loading() || disable() || false\"\n (outClick)=\"handlerSelect(false)\" />\n </div>\n }\n @if (items().length && configTemplateCheckbox.configCheckboxCheckAll?.(); as configCheckBox) {\n <div\n [class]=\"'flex libs-ui-border-bottom-general bg-[#ffffff] pl-[12px] '+(configTemplateCheckbox.classIncludeHasConfigCheckBoxAll ?? 'py-[6px] libs-ui-border-bottom-general')\">\n <libs_ui-components-checkbox-single [label]=\"configCheckBox.label ?? 'i18n_all'\"\n [classLabelInclude]=\"configCheckBox.classLabelInclude || ''\"\n [checked]=\"(multiKeySelected()?.length && (multiKeySelected()?.length ||0) >= (store().length || -1)) || false\"\n [stillOtherOptions]=\"!!multiKeySelected()?.length && (multiKeySelected()?.length ||0) < (store().length || -1)\"\n [disable]=\"loading() || disable() || false\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerSelect($event.checked, true)\" />\n </div>\n }\n <div\n [class]=\"'relative h-full w-full ' +((!items() || !items().length) ? 'bg-[#ffffff]': configTemplateCheckbox.classListInclude || '')\">\n @if (items() && items().length) {\n <div #elementScroll\n LibsUiComponentsScrollOverlayDirective\n class=\"w-full\"\n [style.height]=\"heightViewPort() && !config()?.ignoreShowDataWhenNotSearch ? heightViewPort()+'px':'100%'\"\n (outScrollBottom)=\"handlerScrollBottom()\">\n <virtual-scroller #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n @for (item of scroll.viewPortItems; track item()[fieldKey()]; let last = $last) {\n <div [class]=\"last ? (configTemplateCheckbox.classIncludeLastViewItem || '') : ''\">\n <div #itemRef\n LibsUiComponentsListHighlightKeySearchDirective\n [isHighlight]=\"config()?.highlightTextSearchInResult\"\n [keySearch]=\"keySearch()\"\n [attr.clickExactly]=\"clickExactly\"\n [class]=\"'libs-ui-list-template-checkbox-item flex ' + (configTemplateCheckbox.classItemInclude || '')\"\n [class.w-full]=\"!configTemplateCheckbox.ignoreItemWidth100\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly()\"\n [class.libs-ui-bg-list-hover-active]=\"!clickExactly()\"\n [class.!pl-[12px]]=\"paddingLeftItem()\"\n [class.!py-[6px]]=\"clickExactly()\"\n [class.!pr-[4px]]=\"hasScroll() && configTemplateCheckbox.rows\"\n [class.!pr-[12px]]=\"!hasScroll() && configTemplateCheckbox.rows\"\n (click)=\"handlerChange($event,item())\">\n <div class=\"flex flex-col w-full\">\n @if (item().fieldLabel) {\n <libs_ui-components-checkbox-single [label]=\"item().fieldLabel\"\n [avatarConfig]=\"(item().avatarConfig|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [linkImage]=\"configTemplateCheckbox.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getImage:item()) | async) : item()[configTemplateCheckbox.fieldGetImage || '']\"\n [linkImageError]=\"configTemplateCheckbox.getImageError ? (('avatar_error' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getImageError:item()) | async) : item()[configTemplateCheckbox.fieldGetLinkImageError || '']\"\n [classLabelInclude]=\"item().classLabelInclude || configTemplateCheckbox.classLabelInclude || 'libs-ui-font-h5r'\"\n [zIndexLabel]=\"configTemplateCheckbox.zIndexPopover ?? 1200\"\n [checked]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length\"\n [key]=\"item()[fieldKey()]\"\n [imgTypeIcon]=\"configTemplateCheckbox.hasAvatarGroupSocial\"\n [classInclude]=\"configTemplateCheckbox.classInclude || ''\"\n [classImageInclude]=\"configTemplateCheckbox.classIncludeImage || ''\"\n [bullet]=\"(item().bullet|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [disable]=\"loading() || disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [popover]=\"(item().dataPopover|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [clickExactly]=\"clickExactly()\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerChange('checkbox',item())\" />\n }\n @if (configTemplateCheckbox?.rows) {\n <libs_ui-components-list-templates_rows\n class=\"{{ !configTemplateCheckbox.ignoreItemWidth100 ? 'w-full' : '' }} {{ configTemplateCheckbox.classRowsWrapper || configTemplateCheckbox.classRows ?? '' }}\"\n [item]=\"item()\"\n [zIndex]=\"zIndex()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) ? item()[fieldKey()] : undefined\"\n [configTemplate]=\"configTemplateCheckbox\"\n (outEvent)=\"handlerChange('checkbox',$event.item)\" />\n }\n </div>\n </div>\n </div>\n }\n </virtual-scroller>\n </div>\n }\n @if ((!items() || !items().length) && (!config()?.ignoreShowDataWhenNotSearch || keySearch())) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[4px] px-[12px]')\">\n @if (config()?.hasIconNoData && !loading()) {\n <div class=\"mb-[16px]\">\n <div\n *ngComponentOutlet=\"(keySearch() ? 'no-result' : 'no-data') | LibsUiIconsGetIconComponentPipe | async\">\n </div>\n </div>\n }\n @if (!keySearch() && !loading()) {\n <span>{{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}</span>\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n <span>{{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}</span>\n }\n @if (loading()) {\n <span>&nbsp;</span>\n }\n\n </div>\n }\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n </div>\n}\n", styles: [".libs-ui-list-template-checkbox-item{padding:6px 0 6px 16px;margin-right:8px;font-size:12px;line-height:18px;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: VirtualScrollerModule }, { kind: "component", type: i1.VirtualScrollerComponent, selector: "virtual-scroller,[virtualScroller]", inputs: ["executeRefreshOutsideAngularZone", "enableUnequalChildrenSizes", "RTL", "useMarginInsteadOfTranslate", "modifyOverflowStyleOfParentScroll", "stripedTable", "scrollbarWidth", "scrollbarHeight", "childWidth", "childHeight", "ssrChildWidth", "ssrChildHeight", "ssrViewportWidth", "ssrViewportHeight", "bufferAmount", "scrollAnimationTime", "resizeBypassRefreshThreshold", "scrollThrottlingTime", "scrollDebounceTime", "checkResizeInterval", "items", "compareItems", "horizontal", "parentScroll"], outputs: ["vsUpdate", "vsChange", "vsStart", "vsEnd"], exportAs: ["virtualScroller"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsCheckboxSingleComponent, selector: "libs_ui-components-checkbox-single", inputs: ["key", "checked", "label", "classLabelInclude", "ignoreShowPopoverLabel", "typeLabelPopover", "popover", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "classInclude", "clickExactly", "disable", "disableLabel", "ignoreCheckbox", "zIndexLabel", "stillOtherOptions", "error", "showBorderError", "description", "iconImageClass", "classIconInclude", "modeBorder"], outputs: ["checkedChange", "linkImageChange", "outChange", "outEventPopover", "outClickLabel", "outChangStageFlagMousePopover"] }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }, { kind: "directive", type: LibsUiComponentsListHighlightKeySearchDirective, selector: "[LibsUiComponentsListHighlightKeySearchDirective]", inputs: ["isHighlight", "keySearch", "classHighlight"] }, { kind: "component", type: LibsUiComponentsListRowsComponent, selector: "libs_ui-components-list-templates_rows", inputs: ["configTemplate", "item", "keySelected", "fieldKey", "zIndex"], outputs: ["outChangStageFlagMousePopover", "outEvent"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }, { kind: "pipe", type: LibsUiPipesConvertObjectToSignalPipe, name: "LibsUiPipesConvertObjectToSignalPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
280
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsListCheckboxComponent, isStandalone: true, selector: "libs_ui-components-list-templates_checkbox", viewQueries: [{ propertyName: "virtualScrollerComponent", first: true, predicate: VirtualScrollerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (configTemplateCheckbox(); as configTemplateCheckbox) {\n <div class=\"flex flex-col w-full h-full\">\n @if (items().length && configTemplateCheckbox.configButtonSelectAndUndSelectItem?.(); as configButtonSelectItem) {\n <div\n [class]=\"'flex items-center bg-[#ffffff] '+(configButtonSelectItem.classInclude ?? 'libs-ui-border-bottom-general')\">\n <libs_ui-components-buttons-button [type]=\"configButtonSelectItem.buttonCheckAll?.type ?? 'button-link-primary'\"\n [label]=\"configButtonSelectItem.buttonCheckAll?.label ?? 'i18n_select_all_searched_results'\"\n [classInclude]=\"configButtonSelectItem.buttonCheckAll?.classInclude || 'pr-[8px]'\"\n [classLabel]=\"configButtonSelectItem.buttonCheckAll?.classLabel || 'libs-ui-font-h6r'\"\n [disable]=\"loading() || disable() || false\"\n (outClick)=\"handlerSelect(true)\" />\n <div class=\"text-[#e6e7ea]\">|</div>\n <libs_ui-components-buttons-button\n [type]=\"configButtonSelectItem.buttonUncheckAll?.type ?? 'button-link-primary'\"\n [label]=\"configButtonSelectItem.buttonUncheckAll?.label ?? 'i18n_unselect_all_searched_results'\"\n [classInclude]=\"configButtonSelectItem.buttonUncheckAll?.classInclude || 'pl-[8px]'\"\n [classLabel]=\"configButtonSelectItem.buttonUncheckAll?.classLabel || 'libs-ui-font-h6r'\"\n [disable]=\"loading() || disable() || false\"\n (outClick)=\"handlerSelect(false)\" />\n </div>\n }\n @if (items().length && configTemplateCheckbox.configCheckboxCheckAll?.(); as configCheckBox) {\n <div\n [class]=\"'flex libs-ui-border-bottom-general bg-[#ffffff] pl-[12px] '+(configTemplateCheckbox.classIncludeHasConfigCheckBoxAll ?? 'py-[6px] libs-ui-border-bottom-general')\">\n <libs_ui-components-checkbox-single [label]=\"configCheckBox.label ?? 'i18n_all'\"\n [classLabelInclude]=\"configCheckBox.classLabelInclude || ''\"\n [checked]=\"(multiKeySelected()?.length && (multiKeySelected()?.length ||0) >= (store().length || -1)) || false\"\n [stillOtherOptions]=\"!!multiKeySelected()?.length && (multiKeySelected()?.length ||0) < (store().length || -1)\"\n [disable]=\"loading() || disable() || false\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerSelect($event.checked, true)\" />\n </div>\n }\n <div\n [class]=\"'relative h-full w-full ' +((!items() || !items().length) ? 'bg-[#ffffff]': configTemplateCheckbox.classListInclude || '')\">\n @if (items() && items().length) {\n <div #elementScroll\n LibsUiComponentsScrollOverlayDirective\n class=\"w-full\"\n [style.height]=\"heightViewPort() && !config()?.ignoreShowDataWhenNotSearch ? heightViewPort()+'px':'100%'\"\n (outScrollBottom)=\"handlerScrollBottom()\">\n <virtual-scroller #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n @for (item of scroll.viewPortItems; track item()[fieldKey()]; let last = $last) {\n <div [class]=\"last ? (configTemplateCheckbox.classIncludeLastViewItem || '') : ''\">\n <div #itemRef\n LibsUiComponentsListHighlightKeySearchDirective\n [isHighlight]=\"config()?.highlightTextSearchInResult\"\n [keySearch]=\"keySearch()\"\n [attr.clickExactly]=\"clickExactly\"\n [class]=\"'libs-ui-list-template-checkbox-item flex ' + (configTemplateCheckbox.classItemInclude || '')\"\n [class.w-full]=\"!configTemplateCheckbox.ignoreItemWidth100\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly()\"\n [class.libs-ui-bg-list-hover-active]=\"!clickExactly()\"\n [class.!pl-[12px]]=\"paddingLeftItem()\"\n [class.!py-[6px]]=\"clickExactly()\"\n [class.!pr-[4px]]=\"hasScroll() && configTemplateCheckbox.rows\"\n [class.!pr-[12px]]=\"!hasScroll() && configTemplateCheckbox.rows\"\n (click)=\"handlerChange($event,item())\">\n <div class=\"flex flex-col w-full\">\n @if (item().fieldLabel) {\n <libs_ui-components-checkbox-single [label]=\"item().fieldLabel\"\n [avatarConfig]=\"(item().avatarConfig|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [linkImage]=\"configTemplateCheckbox.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getImage:item()) | async) : item()[configTemplateCheckbox.fieldGetImage || '']\"\n [linkImageError]=\"configTemplateCheckbox.getImageError ? (('avatar_error' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getImageError:item()) | async) : item()[configTemplateCheckbox.fieldGetLinkImageError || '']\"\n [classLabelInclude]=\"item().classLabelInclude || configTemplateCheckbox.classLabelInclude || 'libs-ui-font-h5r'\"\n [zIndexLabel]=\"configTemplateCheckbox.zIndexPopover ?? 1200\"\n [checked]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length\"\n [key]=\"item()[fieldKey()]\"\n [imgTypeIcon]=\"configTemplateCheckbox.hasAvatarGroupSocial\"\n [classInclude]=\"configTemplateCheckbox.classInclude || ''\"\n [classImageInclude]=\"configTemplateCheckbox.classIncludeImage || ''\"\n [bullet]=\"(item().bullet|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [disable]=\"loading() || disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [popover]=\"(item().dataPopover|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [clickExactly]=\"clickExactly()\"\n [dataComponentOutlet]=\"item()\"\n [componentOutlet]=\"(item()|LibsUiPipesGetValueOfObjectPipe:fieldKey():undefined:true | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getComponentOutlet:item())\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerChange('checkbox',item())\" />\n }\n @if (configTemplateCheckbox?.rows) {\n <libs_ui-components-list-templates_rows\n class=\"{{ !configTemplateCheckbox.ignoreItemWidth100 ? 'w-full' : '' }} {{ configTemplateCheckbox.classRowsWrapper || configTemplateCheckbox.classRows ?? '' }}\"\n [item]=\"item()\"\n [zIndex]=\"zIndex()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) ? item()[fieldKey()] : undefined\"\n [configTemplate]=\"configTemplateCheckbox\"\n (outEvent)=\"handlerChange('checkbox',$event.item)\" />\n }\n </div>\n </div>\n </div>\n }\n </virtual-scroller>\n </div>\n }\n @if ((!items() || !items().length) && (!config()?.ignoreShowDataWhenNotSearch || keySearch())) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[4px] px-[12px]')\">\n @if (config()?.hasIconNoData && !loading()) {\n <div class=\"mb-[16px]\">\n <div\n *ngComponentOutlet=\"(keySearch() ? 'no-result' : 'no-data') | LibsUiIconsGetIconComponentPipe | async\">\n </div>\n </div>\n }\n @if (!keySearch() && !loading()) {\n <span>{{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}</span>\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n <span>{{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}</span>\n }\n @if (loading()) {\n <span>&nbsp;</span>\n }\n\n </div>\n }\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n </div>\n}\n", styles: [".libs-ui-list-template-checkbox-item{padding:6px 0 6px 16px;margin-right:8px;font-size:12px;line-height:18px;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: VirtualScrollerModule }, { kind: "component", type: i1.VirtualScrollerComponent, selector: "virtual-scroller,[virtualScroller]", inputs: ["executeRefreshOutsideAngularZone", "enableUnequalChildrenSizes", "RTL", "useMarginInsteadOfTranslate", "modifyOverflowStyleOfParentScroll", "stripedTable", "scrollbarWidth", "scrollbarHeight", "childWidth", "childHeight", "ssrChildWidth", "ssrChildHeight", "ssrViewportWidth", "ssrViewportHeight", "bufferAmount", "scrollAnimationTime", "resizeBypassRefreshThreshold", "scrollThrottlingTime", "scrollDebounceTime", "checkResizeInterval", "items", "compareItems", "horizontal", "parentScroll"], outputs: ["vsUpdate", "vsChange", "vsStart", "vsEnd"], exportAs: ["virtualScroller"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsCheckboxSingleComponent, selector: "libs_ui-components-checkbox-single", inputs: ["key", "checked", "label", "classLabelInclude", "ignoreShowPopoverLabel", "typeLabelPopover", "popover", "linkImage", "linkImageError", "avatarConfig", "classImageInclude", "imgTypeIcon", "bullet", "classInclude", "clickExactly", "disable", "disableLabel", "ignoreCheckbox", "zIndexLabel", "stillOtherOptions", "error", "showBorderError", "description", "iconImageClass", "classIconInclude", "modeBorder", "dataComponentOutlet", "componentOutlet"], outputs: ["checkedChange", "linkImageChange", "outChange", "outEventPopover", "outClickLabel", "outChangStageFlagMousePopover"] }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "pipe", type: LibsUiCheckSelectedByKeyPipe, name: "LibsUiCheckSelectedByKeyPipe" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }, { kind: "directive", type: LibsUiComponentsListHighlightKeySearchDirective, selector: "[LibsUiComponentsListHighlightKeySearchDirective]", inputs: ["isHighlight", "keySearch", "classHighlight"] }, { kind: "component", type: LibsUiComponentsListRowsComponent, selector: "libs_ui-components-list-templates_rows", inputs: ["configTemplate", "item", "keySelected", "fieldKey", "zIndex"], outputs: ["outChangStageFlagMousePopover", "outEvent"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }, { kind: "pipe", type: LibsUiPipesConvertObjectToSignalPipe, name: "LibsUiPipesConvertObjectToSignalPipe" }, { kind: "pipe", type: LibsUiPipesGetValueOfObjectPipe, name: "LibsUiPipesGetValueOfObjectPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
280
281
  }
281
282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsListCheckboxComponent, decorators: [{
282
283
  type: Component,
@@ -291,7 +292,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
291
292
  LibsUiComponentsListHighlightKeySearchDirective,
292
293
  LibsUiComponentsListRowsComponent,
293
294
  LibsUiPipesCallFunctionInTemplatePipe,
294
- LibsUiPipesConvertObjectToSignalPipe
295
- ], template: "@if (configTemplateCheckbox(); as configTemplateCheckbox) {\n <div class=\"flex flex-col w-full h-full\">\n @if (items().length && configTemplateCheckbox.configButtonSelectAndUndSelectItem?.(); as configButtonSelectItem) {\n <div\n [class]=\"'flex items-center bg-[#ffffff] '+(configButtonSelectItem.classInclude ?? 'libs-ui-border-bottom-general')\">\n <libs_ui-components-buttons-button [type]=\"configButtonSelectItem.buttonCheckAll?.type ?? 'button-link-primary'\"\n [label]=\"configButtonSelectItem.buttonCheckAll?.label ?? 'i18n_select_all_searched_results'\"\n [classInclude]=\"configButtonSelectItem.buttonCheckAll?.classInclude || 'pr-[8px]'\"\n [classLabel]=\"configButtonSelectItem.buttonCheckAll?.classLabel || 'libs-ui-font-h6r'\"\n [disable]=\"loading() || disable() || false\"\n (outClick)=\"handlerSelect(true)\" />\n <div class=\"text-[#e6e7ea]\">|</div>\n <libs_ui-components-buttons-button\n [type]=\"configButtonSelectItem.buttonUncheckAll?.type ?? 'button-link-primary'\"\n [label]=\"configButtonSelectItem.buttonUncheckAll?.label ?? 'i18n_unselect_all_searched_results'\"\n [classInclude]=\"configButtonSelectItem.buttonUncheckAll?.classInclude || 'pl-[8px]'\"\n [classLabel]=\"configButtonSelectItem.buttonUncheckAll?.classLabel || 'libs-ui-font-h6r'\"\n [disable]=\"loading() || disable() || false\"\n (outClick)=\"handlerSelect(false)\" />\n </div>\n }\n @if (items().length && configTemplateCheckbox.configCheckboxCheckAll?.(); as configCheckBox) {\n <div\n [class]=\"'flex libs-ui-border-bottom-general bg-[#ffffff] pl-[12px] '+(configTemplateCheckbox.classIncludeHasConfigCheckBoxAll ?? 'py-[6px] libs-ui-border-bottom-general')\">\n <libs_ui-components-checkbox-single [label]=\"configCheckBox.label ?? 'i18n_all'\"\n [classLabelInclude]=\"configCheckBox.classLabelInclude || ''\"\n [checked]=\"(multiKeySelected()?.length && (multiKeySelected()?.length ||0) >= (store().length || -1)) || false\"\n [stillOtherOptions]=\"!!multiKeySelected()?.length && (multiKeySelected()?.length ||0) < (store().length || -1)\"\n [disable]=\"loading() || disable() || false\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerSelect($event.checked, true)\" />\n </div>\n }\n <div\n [class]=\"'relative h-full w-full ' +((!items() || !items().length) ? 'bg-[#ffffff]': configTemplateCheckbox.classListInclude || '')\">\n @if (items() && items().length) {\n <div #elementScroll\n LibsUiComponentsScrollOverlayDirective\n class=\"w-full\"\n [style.height]=\"heightViewPort() && !config()?.ignoreShowDataWhenNotSearch ? heightViewPort()+'px':'100%'\"\n (outScrollBottom)=\"handlerScrollBottom()\">\n <virtual-scroller #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n @for (item of scroll.viewPortItems; track item()[fieldKey()]; let last = $last) {\n <div [class]=\"last ? (configTemplateCheckbox.classIncludeLastViewItem || '') : ''\">\n <div #itemRef\n LibsUiComponentsListHighlightKeySearchDirective\n [isHighlight]=\"config()?.highlightTextSearchInResult\"\n [keySearch]=\"keySearch()\"\n [attr.clickExactly]=\"clickExactly\"\n [class]=\"'libs-ui-list-template-checkbox-item flex ' + (configTemplateCheckbox.classItemInclude || '')\"\n [class.w-full]=\"!configTemplateCheckbox.ignoreItemWidth100\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly()\"\n [class.libs-ui-bg-list-hover-active]=\"!clickExactly()\"\n [class.!pl-[12px]]=\"paddingLeftItem()\"\n [class.!py-[6px]]=\"clickExactly()\"\n [class.!pr-[4px]]=\"hasScroll() && configTemplateCheckbox.rows\"\n [class.!pr-[12px]]=\"!hasScroll() && configTemplateCheckbox.rows\"\n (click)=\"handlerChange($event,item())\">\n <div class=\"flex flex-col w-full\">\n @if (item().fieldLabel) {\n <libs_ui-components-checkbox-single [label]=\"item().fieldLabel\"\n [avatarConfig]=\"(item().avatarConfig|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [linkImage]=\"configTemplateCheckbox.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getImage:item()) | async) : item()[configTemplateCheckbox.fieldGetImage || '']\"\n [linkImageError]=\"configTemplateCheckbox.getImageError ? (('avatar_error' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getImageError:item()) | async) : item()[configTemplateCheckbox.fieldGetLinkImageError || '']\"\n [classLabelInclude]=\"item().classLabelInclude || configTemplateCheckbox.classLabelInclude || 'libs-ui-font-h5r'\"\n [zIndexLabel]=\"configTemplateCheckbox.zIndexPopover ?? 1200\"\n [checked]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length\"\n [key]=\"item()[fieldKey()]\"\n [imgTypeIcon]=\"configTemplateCheckbox.hasAvatarGroupSocial\"\n [classInclude]=\"configTemplateCheckbox.classInclude || ''\"\n [classImageInclude]=\"configTemplateCheckbox.classIncludeImage || ''\"\n [bullet]=\"(item().bullet|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [disable]=\"loading() || disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [popover]=\"(item().dataPopover|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [clickExactly]=\"clickExactly()\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerChange('checkbox',item())\" />\n }\n @if (configTemplateCheckbox?.rows) {\n <libs_ui-components-list-templates_rows\n class=\"{{ !configTemplateCheckbox.ignoreItemWidth100 ? 'w-full' : '' }} {{ configTemplateCheckbox.classRowsWrapper || configTemplateCheckbox.classRows ?? '' }}\"\n [item]=\"item()\"\n [zIndex]=\"zIndex()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) ? item()[fieldKey()] : undefined\"\n [configTemplate]=\"configTemplateCheckbox\"\n (outEvent)=\"handlerChange('checkbox',$event.item)\" />\n }\n </div>\n </div>\n </div>\n }\n </virtual-scroller>\n </div>\n }\n @if ((!items() || !items().length) && (!config()?.ignoreShowDataWhenNotSearch || keySearch())) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[4px] px-[12px]')\">\n @if (config()?.hasIconNoData && !loading()) {\n <div class=\"mb-[16px]\">\n <div\n *ngComponentOutlet=\"(keySearch() ? 'no-result' : 'no-data') | LibsUiIconsGetIconComponentPipe | async\">\n </div>\n </div>\n }\n @if (!keySearch() && !loading()) {\n <span>{{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}</span>\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n <span>{{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}</span>\n }\n @if (loading()) {\n <span>&nbsp;</span>\n }\n\n </div>\n }\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n </div>\n}\n", styles: [".libs-ui-list-template-checkbox-item{padding:6px 0 6px 16px;margin-right:8px;font-size:12px;line-height:18px;position:relative}\n"] }]
295
+ LibsUiPipesConvertObjectToSignalPipe,
296
+ LibsUiPipesGetValueOfObjectPipe
297
+ ], template: "@if (configTemplateCheckbox(); as configTemplateCheckbox) {\n <div class=\"flex flex-col w-full h-full\">\n @if (items().length && configTemplateCheckbox.configButtonSelectAndUndSelectItem?.(); as configButtonSelectItem) {\n <div\n [class]=\"'flex items-center bg-[#ffffff] '+(configButtonSelectItem.classInclude ?? 'libs-ui-border-bottom-general')\">\n <libs_ui-components-buttons-button [type]=\"configButtonSelectItem.buttonCheckAll?.type ?? 'button-link-primary'\"\n [label]=\"configButtonSelectItem.buttonCheckAll?.label ?? 'i18n_select_all_searched_results'\"\n [classInclude]=\"configButtonSelectItem.buttonCheckAll?.classInclude || 'pr-[8px]'\"\n [classLabel]=\"configButtonSelectItem.buttonCheckAll?.classLabel || 'libs-ui-font-h6r'\"\n [disable]=\"loading() || disable() || false\"\n (outClick)=\"handlerSelect(true)\" />\n <div class=\"text-[#e6e7ea]\">|</div>\n <libs_ui-components-buttons-button\n [type]=\"configButtonSelectItem.buttonUncheckAll?.type ?? 'button-link-primary'\"\n [label]=\"configButtonSelectItem.buttonUncheckAll?.label ?? 'i18n_unselect_all_searched_results'\"\n [classInclude]=\"configButtonSelectItem.buttonUncheckAll?.classInclude || 'pl-[8px]'\"\n [classLabel]=\"configButtonSelectItem.buttonUncheckAll?.classLabel || 'libs-ui-font-h6r'\"\n [disable]=\"loading() || disable() || false\"\n (outClick)=\"handlerSelect(false)\" />\n </div>\n }\n @if (items().length && configTemplateCheckbox.configCheckboxCheckAll?.(); as configCheckBox) {\n <div\n [class]=\"'flex libs-ui-border-bottom-general bg-[#ffffff] pl-[12px] '+(configTemplateCheckbox.classIncludeHasConfigCheckBoxAll ?? 'py-[6px] libs-ui-border-bottom-general')\">\n <libs_ui-components-checkbox-single [label]=\"configCheckBox.label ?? 'i18n_all'\"\n [classLabelInclude]=\"configCheckBox.classLabelInclude || ''\"\n [checked]=\"(multiKeySelected()?.length && (multiKeySelected()?.length ||0) >= (store().length || -1)) || false\"\n [stillOtherOptions]=\"!!multiKeySelected()?.length && (multiKeySelected()?.length ||0) < (store().length || -1)\"\n [disable]=\"loading() || disable() || false\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerSelect($event.checked, true)\" />\n </div>\n }\n <div\n [class]=\"'relative h-full w-full ' +((!items() || !items().length) ? 'bg-[#ffffff]': configTemplateCheckbox.classListInclude || '')\">\n @if (items() && items().length) {\n <div #elementScroll\n LibsUiComponentsScrollOverlayDirective\n class=\"w-full\"\n [style.height]=\"heightViewPort() && !config()?.ignoreShowDataWhenNotSearch ? heightViewPort()+'px':'100%'\"\n (outScrollBottom)=\"handlerScrollBottom()\">\n <virtual-scroller #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n @for (item of scroll.viewPortItems; track item()[fieldKey()]; let last = $last) {\n <div [class]=\"last ? (configTemplateCheckbox.classIncludeLastViewItem || '') : ''\">\n <div #itemRef\n LibsUiComponentsListHighlightKeySearchDirective\n [isHighlight]=\"config()?.highlightTextSearchInResult\"\n [keySearch]=\"keySearch()\"\n [attr.clickExactly]=\"clickExactly\"\n [class]=\"'libs-ui-list-template-checkbox-item flex ' + (configTemplateCheckbox.classItemInclude || '')\"\n [class.w-full]=\"!configTemplateCheckbox.ignoreItemWidth100\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly()\"\n [class.libs-ui-bg-list-hover-active]=\"!clickExactly()\"\n [class.!pl-[12px]]=\"paddingLeftItem()\"\n [class.!py-[6px]]=\"clickExactly()\"\n [class.!pr-[4px]]=\"hasScroll() && configTemplateCheckbox.rows\"\n [class.!pr-[12px]]=\"!hasScroll() && configTemplateCheckbox.rows\"\n (click)=\"handlerChange($event,item())\">\n <div class=\"flex flex-col w-full\">\n @if (item().fieldLabel) {\n <libs_ui-components-checkbox-single [label]=\"item().fieldLabel\"\n [avatarConfig]=\"(item().avatarConfig|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [linkImage]=\"configTemplateCheckbox.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getImage:item()) | async) : item()[configTemplateCheckbox.fieldGetImage || '']\"\n [linkImageError]=\"configTemplateCheckbox.getImageError ? (('avatar_error' | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getImageError:item()) | async) : item()[configTemplateCheckbox.fieldGetLinkImageError || '']\"\n [classLabelInclude]=\"item().classLabelInclude || configTemplateCheckbox.classLabelInclude || 'libs-ui-font-h5r'\"\n [zIndexLabel]=\"configTemplateCheckbox.zIndexPopover ?? 1200\"\n [checked]=\"item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length\"\n [key]=\"item()[fieldKey()]\"\n [imgTypeIcon]=\"configTemplateCheckbox.hasAvatarGroupSocial\"\n [classInclude]=\"configTemplateCheckbox.classInclude || ''\"\n [classImageInclude]=\"configTemplateCheckbox.classIncludeImage || ''\"\n [bullet]=\"(item().bullet|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [disable]=\"loading() || disable() || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length)\"\n [popover]=\"(item().dataPopover|LibsUiPipesConvertObjectToSignalPipe)?.()\"\n [clickExactly]=\"clickExactly()\"\n [dataComponentOutlet]=\"item()\"\n [componentOutlet]=\"(item()|LibsUiPipesGetValueOfObjectPipe:fieldKey():undefined:true | LibsUiPipesCallFunctionInTemplatePipe:configTemplateCheckbox.getComponentOutlet:item())\"\n (outChangStageFlagMousePopover)='handlerChangStageFlagMouse($event)'\n (outChange)=\"handlerChange('checkbox',item())\" />\n }\n @if (configTemplateCheckbox?.rows) {\n <libs_ui-components-list-templates_rows\n class=\"{{ !configTemplateCheckbox.ignoreItemWidth100 ? 'w-full' : '' }} {{ configTemplateCheckbox.classRowsWrapper || configTemplateCheckbox.classRows ?? '' }}\"\n [item]=\"item()\"\n [zIndex]=\"zIndex()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"(item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) ? item()[fieldKey()] : undefined\"\n [configTemplate]=\"configTemplateCheckbox\"\n (outEvent)=\"handlerChange('checkbox',$event.item)\" />\n }\n </div>\n </div>\n </div>\n }\n </virtual-scroller>\n </div>\n }\n @if ((!items() || !items().length) && (!config()?.ignoreShowDataWhenNotSearch || keySearch())) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[4px] px-[12px]')\">\n @if (config()?.hasIconNoData && !loading()) {\n <div class=\"mb-[16px]\">\n <div\n *ngComponentOutlet=\"(keySearch() ? 'no-result' : 'no-data') | LibsUiIconsGetIconComponentPipe | async\">\n </div>\n </div>\n }\n @if (!keySearch() && !loading()) {\n <span>{{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}</span>\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\" />\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n <span>{{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}</span>\n }\n @if (loading()) {\n <span>&nbsp;</span>\n }\n\n </div>\n }\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n </div>\n </div>\n}\n", styles: [".libs-ui-list-template-checkbox-item{padding:6px 0 6px 16px;margin-right:8px;font-size:12px;line-height:18px;position:relative}\n"] }]
296
298
  }] });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL3RlbXBsYXRlcy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBUyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztB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QkFBcUIsdXRCQUFFLGlCQUFpQiwrT0FBRSxTQUFTLDZDQUFFLGVBQWUsNEZBQUUsZ0JBQWdCLG9KQUN0RixzQ0FBc0Msc2pCQUN0Qyx1Q0FBdUMsZ25CQUN2QyxnQ0FBZ0MsaUdBQ2hDLHNDQUFzQyx3U0FDdEMsNEJBQTRCLGdFQUM1QiwrQkFBK0Isd0VBQy9CLCtDQUErQyxzSkFDL0MsaUNBQWlDLCtNQUNqQyxxQ0FBcUMseUVBQ3JDLG9DQUFvQzs7NEZBRzNCLHFDQUFxQztrQkFyQmpELFNBQVM7K0JBRUUsNENBQTRDLGNBRzFDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGdCQUFnQjt3QkFDdEYsc0NBQXNDO3dCQUN0Qyx1Q0FBdUM7d0JBQ3ZDLGdDQUFnQzt3QkFDaEMsc0NBQXNDO3dCQUN0Qyw0QkFBNEI7d0JBQzVCLCtCQUErQjt3QkFDL0IsK0NBQStDO3dCQUMvQyxpQ0FBaUM7d0JBQ2pDLHFDQUFxQzt3QkFDckMsb0NBQW9DO3FCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDb21wb25lbnRPdXRsZXQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIHZpZXdDaGlsZCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCwgVmlydHVhbFNjcm9sbGVyTW9kdWxlIH0gZnJvbSAnQGloYXJiZWNrL25neC12aXJ0dWFsLXNjcm9sbGVyJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQ2hlY2tib3hTaW5nbGVDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWNoZWNrYm94LXNpbmdsZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc2Nyb2xsLW92ZXJsYXknO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1NwaW5uZXJDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNwaW5uZXInO1xuaW1wb3J0IHsgTGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZSB9IGZyb20gJ0BsaWJzLXVpL2ljb25zJztcbmltcG9ydCB7IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jYWxsLWZ1bmN0aW9uLWluLXRlbXBsYXRlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgY29udmVydFNpZ25hbFRvT2JqZWN0LCBkZWxldGVVbmljb2RlLCBlc2NhcGVIdG1sLCBnZXQsIGlzRW1wdHksIGlzTmlsIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdEhpZ2hsaWdodEtleVNlYXJjaERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2hpZ2hsaWdodC1rZXktc2VhcmNoL2hpZ2hsaWdodC1rZXktc2VhcmNoLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJTGlzdERhdGFFbWl0S2V5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kYXRhLWVtaXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9jaGVjay1zZWxlY3RlZC1ieS1rZXkucGlwZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdFJvd3NDb21wb25lbnQgfSBmcm9tICcuLi9yb3dzL3Jvd3MuY29tcG9uZW50JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3QgfSBmcm9tICcuLi90ZW1wbGF0ZXMuY29tcG9uZW50LmFic3RyYWN0JztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbUNoZWNrYm94IH0gZnJvbSAnLi8uLi8uLi9pbnRlcmZhY2VzL2NvbmZpZy1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NvbnZlcnRPYmplY3RUb1NpZ25hbFBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jb252ZXJ0LW9iamVjdC10by1zaWduYWwnO1xuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWxpc3QtdGVtcGxhdGVzX2NoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3guY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUsIE5nQ29tcG9uZW50T3V0bGV0LCBBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQ2hlY2tib3hTaW5nbGVDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1NwaW5uZXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUsXG4gICAgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZSxcbiAgICBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNMaXN0SGlnaGxpZ2h0S2V5U2VhcmNoRGlyZWN0aXZlLFxuICAgIExpYnNVaUNvbXBvbmVudHNMaXN0Um93c0NvbXBvbmVudCxcbiAgICBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlLFxuICAgIExpYnNVaVBpcGVzQ29udmVydE9iamVjdFRvU2lnbmFsUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNMaXN0Q2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgY29uZmlnVGVtcGxhdGVDaGVja2JveCA9IHNpZ25hbDxJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCA9IHZpZXdDaGlsZChWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmIChpc0VtcHR5KHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3g/LigpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveC5zZXQodGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCkpO1xuICAgIHRoaXMuZmllbGRLZXkuc2V0KHRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveCgpPy5maWVsZEtleSA/PyB0aGlzLmZpZWxkS2V5RGVmYXVsdCgpKTtcbiAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoKTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlclNlbGVjdChpc1NlbGVjdEFsbDogYm9vbGVhbiwgaXNDbGlja0NoZWNrYm94QWxsPzogYm9vbGVhbikge1xuICAgIGlmIChpc1NlbGVjdEFsbCAmJiB0aGlzLnJlc2V0S2V5V2hlblNlbGVjdEFsbEtleURyb3Bkb3duKCkpIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC5zZXQoW10pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubXVsdGlLZXlTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLm11bHRpS2V5U2VsZWN0ZWQuc2V0KFtdKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubG9hZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRJZHNCeVNlcnZpY2UoKTtcblxuICAgIHRoaXMucHJvY2Vzc0hhbmRsZXJTZWxlY3REYXRhKGlzU2VsZWN0QWxsLCBpc0NsaWNrQ2hlY2tib3hBbGwgJiYgIWlzU2VsZWN0QWxsID8gY2xvbmVEZWVwKHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpKSA6IHJlc3VsdC5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0hhbmRsZXJTZWxlY3REYXRhKGlzU2VsZWN0QWxsOiBib29sZWFuLCBpZHM6IEFycmF5PHN0cmluZz4pIHtcbiAgICBjb25zdCBrZXlzRGlzYWJsZSA9IHRoaXMua2V5c0Rpc2FibGVJdGVtKCkgfHwgW107XG4gICAgY29uc3Qga2V5cyA9IG5ldyBTZXQodGhpcy5tdWx0aUtleVNlbGVjdGVkKCkpO1xuXG4gICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnNldChbXSk7XG4gICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgIGlmIChpc1NlbGVjdEFsbCkge1xuICAgICAgaWYgKGlkcy5sZW5ndGgpIHtcbiAgICAgICAgaWRzLmZvckVhY2goaWQgPT4gIWtleXNEaXNhYmxlLnNvbWUoa2V5RGlzYWJsZSA9PiBrZXlEaXNhYmxlID09PSBpZCkgJiYga2V5cy5hZGQoaWQpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpZHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuaXRlbXMoKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IGtleSA9IGl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldO1xuXG4gICAgICAgICAgaWYgKCFrZXlzRGlzYWJsZS5zb21lKGtleURpc2FibGUgPT4ga2V5RGlzYWJsZSA9PT0ga2V5KSkge1xuICAgICAgICAgICAga2V5cy5hZGQoa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnVwZGF0ZShpdGVtcyA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwgLi4ua2V5c10pO1xuICAgICAgdGhpcy5lbWl0U2VsZWN0TXVsdGlLZXkodGhpcy5tdWx0aUtleVNlbGVjdGVkKCkgfHwgW10pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGtleVVuU2VsZWN0ZWQgPSBuZXcgU2V0PHVua25vd24+KCk7XG5cbiAgICBpZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICBpZiAoIWtleXNEaXNhYmxlLnNvbWUoa2V5RGlzYWJsZSA9PiBrZXlEaXNhYmxlID09PSBpZCkpIHtcbiAgICAgICAga2V5cy5kZWxldGUoaWQpO1xuICAgICAgICBrZXlVblNlbGVjdGVkLmFkZChpZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFpZHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLml0ZW1zKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV07XG5cbiAgICAgICAgaWYgKCFrZXlzRGlzYWJsZS5zb21lKGtleURpc2FibGUgPT4ga2V5RGlzYWJsZSA9PT0ga2V5KSkge1xuICAgICAgICAgIGtleXMuZGVsZXRlKGtleSk7XG4gICAgICAgICAga2V5VW5TZWxlY3RlZC5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoaXRlbXMgPT4gWy4uLihpdGVtcyB8fCBbXSksIC4uLmtleXNdKTtcbiAgICB0aGlzLm91dFVuU2VsZWN0TXVsdGlLZXkuZW1pdChBcnJheS5mcm9tKGtleVVuU2VsZWN0ZWQpKTtcbiAgICB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQoeyBrZXlzOiB0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSwgbWFwS2V5czogW10sIGlzQ2xpY2tNYW51YWw6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldElkc0J5U2VydmljZSgpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoQ29uZmlnKCkgfHwgIXRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHsgY29kZTogMjAwLCBkYXRhOiB0aGlzLml0ZW1zKCkubWFwKGl0ZW0gPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0pIH07XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveCgpPy5odHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdD8uKCkpIHtcbiAgICAgICAgcmV0dXJuIHsgZGF0YTogW10gfTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgICBjb25zdCBodHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdCA9IHRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveCgpPy5odHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdD8uKCk7XG5cbiAgICAgIGlmICghaHR0cFJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3QpIHtcbiAgICAgICAgcmV0dXJuIHsgZGF0YTogW10gfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYXJndW1lbnRzVmFsdWUsIGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlIH0gPSBodHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdDtcblxuICAgICAgdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UudXBkYXRlQXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlLCB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS5mYWtlUmVzcG9uc2VQYWdpbmdBcGkoKSwge30sIHRoaXMua2V5U2VhcmNoKCksIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSwgZmFsc2UsIGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwUmVxdWVzdFNlcnZpY2UuY2FsbEFwaShodHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdCk7XG5cbiAgICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQuZGF0YSB8fCAhcmVzdWx0LmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7IGRhdGE6IFtdIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcblxuICAgICAgcmV0dXJuIHsgZGF0YTogW10gfTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNjcm9sbEJvdHRvbSgpIHtcbiAgICBpZiAodGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2FkaW5nKCkgfHwgdGhpcy5sb2FkZWRMYXN0SXRlbSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc1NlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMuaXNTZWFyY2hPbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RhdGEodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdlKGV2ZW50OiBhbnksIGl0ZW06IGFueSwgaWdub3JlRGlzYWJsZSA9IGZhbHNlLCBpc0NsaWNrTWFudWFsID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3goKT8uaWdub3JlQ2xpY2tJdGVtVW5DaGVja2VkKSB7XG4gICAgICBjb25zdCBrZXkgPSBpdGVtW3RoaXMuZmllbGRLZXkoKV07XG5cbiAgICAgIGlmICh0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKT8uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghdGhpcy5tdWx0aUtleVNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC5zZXQoW10pO1xuICAgIH1cbiAgICBpZiAoIWlnbm9yZURpc2FibGUgJiYgKHRoaXMuZGlzYWJsZSgpIHx8IHRoaXMua2V5c0Rpc2FibGVJdGVtKCk/LnNvbWUoa2V5RGlzYWJsZSA9PiBrZXlEaXNhYmxlID09PSBpdGVtW3RoaXMuZmllbGRLZXkoKV0pKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBFdmVudCkge1xuICAgICAgaWYgKHRoaXMuY2xpY2tFeGFjdGx5KCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGVja0FuZEVtaXRNdWx0aUtleVNlbGVjdGVkKGl0ZW0sIGlzQ2xpY2tNYW51YWwpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2hlY2tBbmRFbWl0TXVsdGlLZXlTZWxlY3RlZChpdGVtLCBpc0NsaWNrTWFudWFsKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tBbmRFbWl0TXVsdGlLZXlTZWxlY3RlZChpdGVtOiBhbnksIGlzQ2xpY2tNYW51YWwgPSB0cnVlKSB7XG4gICAgY29uc3Qga2V5ID0gZ2V0KGl0ZW0sIHRoaXMuZmllbGRLZXkoKSk7XG4gICAgY29uc3QgaW5kZXhPZktleSA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5pbmRleE9mKGtleSkgPz8gLTE7XG5cbiAgICBpZiAoaW5kZXhPZktleSA8IDApIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoaXRlbXMgPT4gWy4uLihpdGVtcyB8fCBbXSksIGtleV0pO1xuICAgICAgdGhpcy5lbWl0U2VsZWN0TXVsdGlLZXkodGhpcy5tdWx0aUtleVNlbGVjdGVkKCkgfHwgW10sIGlzQ2xpY2tNYW51YWwpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC51cGRhdGUoaXRlbXMgPT4gaXRlbXM/LmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IGtleSkpO1xuICAgIHRoaXMub3V0VW5TZWxlY3RNdWx0aUtleS5lbWl0KFtrZXldKTtcbiAgICB0aGlzLmVtaXRTZWxlY3RNdWx0aUtleSh0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSwgaXNDbGlja01hbnVhbCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVtaXRTZWxlY3RNdWx0aUtleShtdWx0aUtleVNlbGVjdGVkOiBBcnJheTx1bmtub3duPiwgaXNDbGlja01hbnVhbCA9IHRydWUpIHtcbiAgICBjb25zdCBtYXBLZXlzID0gbmV3IEFycmF5PElMaXN0RGF0YUVtaXRLZXk+KCk7XG5cbiAgICBpZiAoIW11bHRpS2V5U2VsZWN0ZWQgfHwgIW11bHRpS2V5U2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5vdXRTZWxlY3RNdWx0aUtleS5lbWl0KHsga2V5czogW10sIG1hcEtleXMsIGlzQ2xpY2tNYW51YWwgfSk7XG4gICAgfVxuXG4gICAgbXVsdGlLZXlTZWxlY3RlZC5mb3JFYWNoKChrZXk6IHVua25vd24pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN0b3JlKCkuZmluZChpdGVtID0+IGl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldID09PSBrZXkpO1xuXG4gICAgICBtYXBLZXlzLnB1c2goeyBrZXksIGl0ZW06IGNvbnZlcnRTaWduYWxUb09iamVjdChpdGVtKSwgaXNDbGlja01hbnVhbCB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdCh7IGtleXM6IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdLCBtYXBLZXlzLCBpc0NsaWNrTWFudWFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByb2Nlc3NEYXRhKHJlcGxhY2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUJ5S2V5U2VhcmNoOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+PiA9IFtdO1xuICAgIGNvbnN0IGtleXNIaWRkZW4gPSB0aGlzLmtleXNIaWRkZW5JdGVtKCkgfHwgW107XG4gICAgY29uc3QgaXRlbXNBZGROZXc6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+ID0gW107XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoW10pO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmUoKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBpdGVtVHlwZUFkZE5ldyA9IGl0ZW0oKS5pc0FkZE5ldztcblxuICAgICAgaXRlbS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGRlbGV0ZSBjdXJyZW50LmlzQWRkTmV3O1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSlcbiAgICAgIGNvbnN0IGRhdGFTdG9yZTogV3JpdGFibGVTaWduYWw8YW55PiA9IGNsb25lRGVlcChpdGVtKTtcblxuICAgICAgZGF0YVN0b3JlLnVwZGF0ZShjdXJyZW50U3RvcmUgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50U3RvcmUsIHJlZjogaXRlbSgpIH07XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveCgpPy5nZXRQb3BvdmVyKSB7XG4gICAgICAgIGRhdGFTdG9yZS51cGRhdGUoY3VycmVudFN0b3JlID0+IHtcbiAgICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50U3RvcmUsIGRhdGFUb29sdGlwOiB0aGlzLmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3goKT8uZ2V0UG9wb3Zlcj8uKGRhdGFTdG9yZSgpKSB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtleSA9IGtleXNIaWRkZW4uZmluZChrZXkgPT4gZGF0YVN0b3JlKClbdGhpcy5maWVsZEtleSgpXSA9PT0ga2V5KTtcblxuICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBkZWxldGVVbmljb2RlKHRoaXMuYnVpbGRWYWx1ZUJ5Q29uZmlnKGRhdGFTdG9yZSwgdGhpcy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KCkpKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCB0ZXh0RXNjYXBlID0gZXNjYXBlSHRtbCh0ZXh0KTtcbiAgICAgICAgY29uc3Qga2V5U2VhcmNoID0gZGVsZXRlVW5pY29kZShlc2NhcGVIdG1sKHRoaXMua2V5U2VhcmNoKCkudG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuXG4gICAgICAgIGlmICgoKHRoaXMuaXNTZWFyY2hPbmxpbmUoKSAmJiB0aGlzLmNvbmZpZygpPy5odHRwUmVxdWVzdERhdGE/LigpPy5zZXJ2aWNlTmFtZSAmJiAhdGhpcy5jb25maWcoKT8uaHR0cFJlcXVlc3REYXRhPy4oKT8uc2VydmljZU90aGVyKSB8fFxuICAgICAgICAgICh0ZXh0ICYmICh0ZXh0LmluY2x1ZGVzKGtleVNlYXJjaCkgfHwgdGV4dEVzY2FwZS5pbmNsdWRlcyhrZXlTZWFyY2gpKSkpICYmIChyZXBsYWNlIHx8ICghcmVwbGFjZSAmJiAhdGhpcy5pdGVtcygpLmZpbmQoZGF0YUl0ZW0gPT4gZGF0YUl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldID09PSBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldKSkpICYmICFpdGVtQnlLZXlTZWFyY2guZmluZChkYXRhSXRlbSA9PiBkYXRhSXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGRhdGFTdG9yZSgpW3RoaXMuZmllbGRLZXkoKV0pKSB7XG5cbiAgICAgICAgICBkYXRhU3RvcmUudXBkYXRlKGN1cnJlbnRTdG9yZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jdXJyZW50U3RvcmUsXG4gICAgICAgICAgICAgIGNsYXNzTGFiZWxJbmNsdWRlOiB0aGlzLmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3goKT8uZ2V0Q2xhc3NJdGVtPy4oZGF0YVN0b3JlKCkpLFxuICAgICAgICAgICAgICBhdmF0YXJDb25maWc6IHRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveCgpPy5nZXRBdmF0YXJDb25maWc/LihkYXRhU3RvcmUoKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoaXRlbVR5cGVBZGROZXcpIHtcbiAgICAgICAgICAgIGl0ZW1zQWRkTmV3LnVuc2hpZnQoZGF0YVN0b3JlKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtQnlLZXlTZWFyY2gucHVzaChkYXRhU3RvcmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gIT09IGtleSkpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNhbGxiYWNrQ2hlY2tTY3JvbGwgPSAocHJlU3RhdGVIYXNTY3JvbGw6IGJvb2xlYW4sIGN1cnJlbnRIYXNTY3JvbGw6IGJvb2xlYW4pID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9JdGVtU2VsZWN0ZWQoKTtcbiAgICAgIGlmICh0aGlzLmtleXNIaWRkZW5JdGVtKCk/Lmxlbmd0aCAmJiBwcmVTdGF0ZUhhc1Njcm9sbCAmJiAhY3VycmVudEhhc1Njcm9sbCAmJiAodGhpcy5pc1NlYXJjaE9ubGluZSgpKSkge1xuICAgICAgICB0aGlzLmNhbGxBcGlCeVNlcnZpY2UoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocmVwbGFjZSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoaXRlbUJ5S2V5U2VhcmNoKTtcbiAgICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgICAgdGhpcy5hdXRvU2VsZWN0Rmlyc3RJdGVtKHRoaXMuaXRlbXMoKSk7XG4gICAgICB0aGlzLnNldEhlaWdodFZpZXdQb3J0KCk7XG4gICAgICB0aGlzLmNoZWNrVmlld1BvcnRTY3JvbGwoY2FsbGJhY2tDaGVja1Njcm9sbCk7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgIHRoaXMub3V0TG9hZEl0ZW1zQ29tcGxldGUuZW1pdCh7IGl0ZW1zOiB0aGlzLml0ZW1zKCkgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoaXRlbXMgPT4gWy4uLml0ZW1zQWRkTmV3LCAuLi4oaXRlbXMgfHwgW10pLCAuLi5pdGVtQnlLZXlTZWFyY2hdKVxuICAgIHRoaXMuY29uZmlnKCk/LnNvcnQ/Lih0aGlzLml0ZW1zKCkpO1xuICAgIHRoaXMuc2V0SGVpZ2h0Vmlld1BvcnQoKTtcbiAgICB0aGlzLmNoZWNrVmlld1BvcnRTY3JvbGwoY2FsbGJhY2tDaGVja1Njcm9sbCk7XG4gICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgIHRoaXMub3V0TG9hZEl0ZW1zQ29tcGxldGUuZW1pdCh7IGl0ZW1zOiB0aGlzLml0ZW1zKCkgfSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvSXRlbVNlbGVjdGVkKCkge1xuICAgIGlmICghdGhpcy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KCk/LmF1dG9TY3JvbGxUb0l0ZW1TZWxlY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lQXV0b1Njcm9sbEl0ZW1TZWxlY3RlZCgpKTtcbiAgICB0aGlzLnRpbWVBdXRvU2Nyb2xsSXRlbVNlbGVjdGVkLnNldCgoc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMua2V5U2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zKCkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IHRoaXMua2V5U2VsZWN0ZWQoKSk7XG5cbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0Q29udGFpbmVyID0gKHRoaXMuZWxlbWVudFNjcm9sbCgpPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KT8ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsT2Zmc2V0ID0gKChvZmZzZXRDb250YWluZXIgPyBvZmZzZXRDb250YWluZXIgLSB0aGlzLmhlaWdodEl0ZW0oKSA6IDApIC8gMikgKiAtMTtcblxuICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCgpPy5zY3JvbGxUb0luZGV4KGluZGV4LCB0cnVlLCBhZGRpdGlvbmFsT2Zmc2V0LCB0aGlzLnRpbWVBbmltYXRpb25TY3JvbGxUb0luZGV4SXRlbSgpKTtcbiAgICAgIH1cbiAgICB9KSBhcyB1bmtub3duKSBhcyBudW1iZXIpO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgYXV0b1NlbGVjdEZpcnN0SXRlbShpdGVtczogQXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4pIHtcbiAgICBpZiAodGhpcy5hdXRvU2VsZWN0ZWRGaXJzdEl0ZW1DYWxsT3V0c2lkZUJlZm9yZSgpIHx8IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5sZW5ndGggfHwgIXRoaXMuY29uZmlnKCk/LmF1dG9TZWxlY3RGaXJzdEl0ZW0gfHwgIWl0ZW1zIHx8ICFpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVyQ2hhbmdlKCdjaGVja2JveCcsIGl0ZW1zWzBdKCksIHRydWUsIGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMZW5ndGhJdGVtKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMoKS5sZW5ndGg7XG4gIH1cbn1cbiIsIkBpZiAoY29uZmlnVGVtcGxhdGVDaGVja2JveCgpOyBhcyBjb25maWdUZW1wbGF0ZUNoZWNrYm94KSB7XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctZnVsbCBoLWZ1bGxcIj5cbiAgICBAaWYgKGl0ZW1zKCkubGVuZ3RoICYmIGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guY29uZmlnQnV0dG9uU2VsZWN0QW5kVW5kU2VsZWN0SXRlbT8uKCk7IGFzIGNvbmZpZ0J1dHRvblNlbGVjdEl0ZW0pIHtcbiAgICAgIDxkaXZcbiAgICAgICAgW2NsYXNzXT1cIidmbGV4IGl0ZW1zLWNlbnRlciBiZy1bI2ZmZmZmZl0gJysoY29uZmlnQnV0dG9uU2VsZWN0SXRlbS5jbGFzc0luY2x1ZGUgPz8gJ2xpYnMtdWktYm9yZGVyLWJvdHRvbS1nZW5lcmFsJylcIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJjb25maWdCdXR0b25TZWxlY3RJdGVtLmJ1dHRvbkNoZWNrQWxsPy50eXBlID8/ICdidXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgW2xhYmVsXT1cImNvbmZpZ0J1dHRvblNlbGVjdEl0ZW0uYnV0dG9uQ2hlY2tBbGw/LmxhYmVsID8/ICdpMThuX3NlbGVjdF9hbGxfc2VhcmNoZWRfcmVzdWx0cydcIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiY29uZmlnQnV0dG9uU2VsZWN0SXRlbS5idXR0b25DaGVja0FsbD8uY2xhc3NJbmNsdWRlIHx8ICdwci1bOHB4XSdcIlxuICAgICAgICAgIFtjbGFzc0xhYmVsXT1cImNvbmZpZ0J1dHRvblNlbGVjdEl0ZW0uYnV0dG9uQ2hlY2tBbGw/LmNsYXNzTGFiZWwgfHwgJ2xpYnMtdWktZm9udC1oNnInXCJcbiAgICAgICAgICBbZGlzYWJsZV09XCJsb2FkaW5nKCkgfHwgZGlzYWJsZSgpIHx8IGZhbHNlXCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlclNlbGVjdCh0cnVlKVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LVsjZTZlN2VhXVwiPnw8L2Rpdj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgIFt0eXBlXT1cImNvbmZpZ0J1dHRvblNlbGVjdEl0ZW0uYnV0dG9uVW5jaGVja0FsbD8udHlwZSA/PyAnYnV0dG9uLWxpbmstcHJpbWFyeSdcIlxuICAgICAgICAgIFtsYWJlbF09XCJjb25maWdCdXR0b25TZWxlY3RJdGVtLmJ1dHRvblVuY2hlY2tBbGw/LmxhYmVsID8/ICdpMThuX3Vuc2VsZWN0X2FsbF9zZWFyY2hlZF9yZXN1bHRzJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJjb25maWdCdXR0b25TZWxlY3RJdGVtLmJ1dHRvblVuY2hlY2tBbGw/LmNsYXNzSW5jbHVkZSB8fCAncGwtWzhweF0nXCJcbiAgICAgICAgICBbY2xhc3NMYWJlbF09XCJjb25maWdCdXR0b25TZWxlY3RJdGVtLmJ1dHRvblVuY2hlY2tBbGw/LmNsYXNzTGFiZWwgfHwgJ2xpYnMtdWktZm9udC1oNnInXCJcbiAgICAgICAgICBbZGlzYWJsZV09XCJsb2FkaW5nKCkgfHwgZGlzYWJsZSgpIHx8IGZhbHNlXCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlclNlbGVjdChmYWxzZSlcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoaXRlbXMoKS5sZW5ndGggJiYgY29uZmlnVGVtcGxhdGVDaGVja2JveC5jb25maWdDaGVja2JveENoZWNrQWxsPy4oKTsgYXMgY29uZmlnQ2hlY2tCb3gpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgW2NsYXNzXT1cIidmbGV4IGxpYnMtdWktYm9yZGVyLWJvdHRvbS1nZW5lcmFsIGJnLVsjZmZmZmZmXSBwbC1bMTJweF0gJysoY29uZmlnVGVtcGxhdGVDaGVja2JveC5jbGFzc0luY2x1ZGVIYXNDb25maWdDaGVja0JveEFsbCA/PyAncHktWzZweF0gbGlicy11aS1ib3JkZXItYm90dG9tLWdlbmVyYWwnKVwiPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWNoZWNrYm94LXNpbmdsZSBbbGFiZWxdPVwiY29uZmlnQ2hlY2tCb3gubGFiZWwgPz8gJ2kxOG5fYWxsJ1wiXG4gICAgICAgICAgW2NsYXNzTGFiZWxJbmNsdWRlXT1cImNvbmZpZ0NoZWNrQm94LmNsYXNzTGFiZWxJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCIobXVsdGlLZXlTZWxlY3RlZCgpPy5sZW5ndGggJiYgKG11bHRpS2V5U2VsZWN0ZWQoKT8ubGVuZ3RoIHx8MCkgPj0gKHN0b3JlKCkubGVuZ3RoIHx8IC0xKSkgfHwgZmFsc2VcIlxuICAgICAgICAgIFtzdGlsbE90aGVyT3B0aW9uc109XCIhIW11bHRpS2V5U2VsZWN0ZWQoKT8ubGVuZ3RoICYmIChtdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aCB8fDApIDwgKHN0b3JlKCkubGVuZ3RoIHx8IC0xKVwiXG4gICAgICAgICAgW2Rpc2FibGVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKSB8fCBmYWxzZVwiXG4gICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyKT0naGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KSdcbiAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJTZWxlY3QoJGV2ZW50LmNoZWNrZWQsIHRydWUpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2XG4gICAgICBbY2xhc3NdPVwiJ3JlbGF0aXZlIGgtZnVsbCB3LWZ1bGwgJyArKCghaXRlbXMoKSB8fCAhaXRlbXMoKS5sZW5ndGgpID8gJ2JnLVsjZmZmZmZmXSc6IGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guY2xhc3NMaXN0SW5jbHVkZSB8fCAnJylcIj5cbiAgICAgIEBpZiAoaXRlbXMoKSAmJiBpdGVtcygpLmxlbmd0aCkge1xuICAgICAgICA8ZGl2ICNlbGVtZW50U2Nyb2xsXG4gICAgICAgICAgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmVcbiAgICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRWaWV3UG9ydCgpICYmICFjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoID8gaGVpZ2h0Vmlld1BvcnQoKSsncHgnOicxMDAlJ1wiXG4gICAgICAgICAgKG91dFNjcm9sbEJvdHRvbSk9XCJoYW5kbGVyU2Nyb2xsQm90dG9tKClcIj5cbiAgICAgICAgICA8dmlydHVhbC1zY3JvbGxlciAjc2Nyb2xsXG4gICAgICAgICAgICBbcGFyZW50U2Nyb2xsXT1cImVsZW1lbnRTY3JvbGxcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cIml0ZW1zKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJoLWZ1bGxcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2Nyb2xsLnZpZXdQb3J0SXRlbXM7IHRyYWNrIGl0ZW0oKVtmaWVsZEtleSgpXTsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJsYXN0ID8gKGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guY2xhc3NJbmNsdWRlTGFzdFZpZXdJdGVtIHx8ICcnKSA6ICcnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAjaXRlbVJlZlxuICAgICAgICAgICAgICAgICAgTGlic1VpQ29tcG9uZW50c0xpc3RIaWdobGlnaHRLZXlTZWFyY2hEaXJlY3RpdmVcbiAgICAgICAgICAgICAgICAgIFtpc0hpZ2hsaWdodF09XCJjb25maWcoKT8uaGlnaGxpZ2h0VGV4dFNlYXJjaEluUmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgIFtrZXlTZWFyY2hdPVwia2V5U2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuY2xpY2tFeGFjdGx5XT1cImNsaWNrRXhhY3RseVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2xpYnMtdWktbGlzdC10ZW1wbGF0ZS1jaGVja2JveC1pdGVtIGZsZXggJyArIChjb25maWdUZW1wbGF0ZUNoZWNrYm94LmNsYXNzSXRlbUluY2x1ZGUgfHwgJycpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy53LWZ1bGxdPVwiIWNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guaWdub3JlSXRlbVdpZHRoMTAwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJnLWxpc3QtaG92ZXJdPVwiIWNsaWNrRXhhY3RseSgpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWJnLWxpc3QtaG92ZXItYWN0aXZlXT1cIiFjbGlja0V4YWN0bHkoKVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuIXBsLVsxMnB4XV09XCJwYWRkaW5nTGVmdEl0ZW0oKVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuIXB5LVs2cHhdXT1cImNsaWNrRXhhY3RseSgpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy4hcHItWzRweF1dPVwiaGFzU2Nyb2xsKCkgJiYgY29uZmlnVGVtcGxhdGVDaGVja2JveC5yb3dzXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy4hcHItWzEycHhdXT1cIiFoYXNTY3JvbGwoKSAmJiBjb25maWdUZW1wbGF0ZUNoZWNrYm94LnJvd3NcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJDaGFuZ2UoJGV2ZW50LGl0ZW0oKSlcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0oKS5maWVsZExhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1jaGVja2JveC1zaW5nbGUgW2xhYmVsXT1cIml0ZW0oKS5maWVsZExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdmF0YXJDb25maWddPVwiKGl0ZW0oKS5hdmF0YXJDb25maWd8TGlic1VpUGlwZXNDb252ZXJ0T2JqZWN0VG9TaWduYWxQaXBlKT8uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtJbWFnZV09XCJjb25maWdUZW1wbGF0ZUNoZWNrYm94LmdldEltYWdlID8gKCgnYXZhdGFyJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6Y29uZmlnVGVtcGxhdGVDaGVja2JveC5nZXRJbWFnZTppdGVtKCkpIHwgYXN5bmMpIDogaXRlbSgpW2NvbmZpZ1RlbXBsYXRlQ2hlY2tib3guZmllbGRHZXRJbWFnZSB8fCAnJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtJbWFnZUVycm9yXT1cImNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guZ2V0SW1hZ2VFcnJvciA/ICgoJ2F2YXRhcl9lcnJvcicgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guZ2V0SW1hZ2VFcnJvcjppdGVtKCkpIHwgYXN5bmMpIDogaXRlbSgpW2NvbmZpZ1RlbXBsYXRlQ2hlY2tib3guZmllbGRHZXRMaW5rSW1hZ2VFcnJvciB8fCAnJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzTGFiZWxJbmNsdWRlXT1cIml0ZW0oKS5jbGFzc0xhYmVsSW5jbHVkZSB8fCBjb25maWdUZW1wbGF0ZUNoZWNrYm94LmNsYXNzTGFiZWxJbmNsdWRlIHx8ICdsaWJzLXVpLWZvbnQtaDVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbekluZGV4TGFiZWxdPVwiY29uZmlnVGVtcGxhdGVDaGVja2JveC56SW5kZXhQb3BvdmVyID8/IDEyMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTptdWx0aUtleVNlbGVjdGVkKCk6bXVsdGlLZXlTZWxlY3RlZCgpPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2tleV09XCJpdGVtKClbZmllbGRLZXkoKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ltZ1R5cGVJY29uXT1cImNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guaGFzQXZhdGFyR3JvdXBTb2NpYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJjb25maWdUZW1wbGF0ZUNoZWNrYm94LmNsYXNzSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NJbWFnZUluY2x1ZGVdPVwiY29uZmlnVGVtcGxhdGVDaGVja2JveC5jbGFzc0luY2x1ZGVJbWFnZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYnVsbGV0XT1cIihpdGVtKCkuYnVsbGV0fExpYnNVaVBpcGVzQ29udmVydE9iamVjdFRvU2lnbmFsUGlwZSk/LigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlXT1cImxvYWRpbmcoKSB8fCBkaXNhYmxlKCkgfHwgKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6a2V5c0Rpc2FibGVJdGVtKCk6a2V5c0Rpc2FibGVJdGVtKCk/Lmxlbmd0aClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiKGl0ZW0oKS5kYXRhUG9wb3ZlcnxMaWJzVWlQaXBlc0NvbnZlcnRPYmplY3RUb1NpZ25hbFBpcGUpPy4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2tFeGFjdGx5XT1cImNsaWNrRXhhY3RseSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlcik9J2hhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudCknXG4gICAgICAgICAgICAgICAgICAgICAgICAob3V0Q2hhbmdlKT1cImhhbmRsZXJDaGFuZ2UoJ2NoZWNrYm94JyxpdGVtKCkpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3g/LnJvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWxpc3QtdGVtcGxhdGVzX3Jvd3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3sgIWNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guaWdub3JlSXRlbVdpZHRoMTAwID8gJ3ctZnVsbCcgOiAnJyB9fSB7eyBjb25maWdUZW1wbGF0ZUNoZWNrYm94LmNsYXNzUm93c1dyYXBwZXIgfHwgY29uZmlnVGVtcGxhdGVDaGVja2JveC5jbGFzc1Jvd3MgPz8gJycgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt6SW5kZXhdPVwiekluZGV4KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkS2V5XT1cImZpZWxkS2V5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2tleVNlbGVjdGVkXT1cIihpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOm11bHRpS2V5U2VsZWN0ZWQoKTptdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aCkgPyBpdGVtKClbZmllbGRLZXkoKV0gOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ1RlbXBsYXRlXT1cImNvbmZpZ1RlbXBsYXRlQ2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG91dEV2ZW50KT1cImhhbmRsZXJDaGFuZ2UoJ2NoZWNrYm94JywkZXZlbnQuaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC92aXJ0dWFsLXNjcm9sbGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aCkgJiYgKCFjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoIHx8IGtleVNlYXJjaCgpKSkge1xuICAgICAgICA8ZGl2IFtjbGFzc109XCInbGlicy11aS1mb250LWg1ciB0ZXh0LVsjOWNhMmFkXSAnKyAoY29uZmlnKCk/LnRleHROb0RhdGFDbGFzc0luY2x1ZGUgPz8gJ3B5LVs0cHhdIHB4LVsxMnB4XScpXCI+XG4gICAgICAgICAgQGlmIChjb25maWcoKT8uaGFzSWNvbk5vRGF0YSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItWzE2cHhdXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCIoa2V5U2VhcmNoKCkgID8gJ25vLXJlc3VsdCcgOiAnbm8tZGF0YScpIHwgTGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZSB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIWtleVNlYXJjaCgpICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IChjb25maWcoKT8udGV4dE5vRGF0YSA/PyAnaTE4bl9oYXZlX25vX3NlbGVjdGlvbicpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgJiYga2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkgfHwgbnVsbDtjb250ZXh0OntrZXlTZWFyY2g6a2V5U2VhcmNoKCl9XCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICghdGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyAoY29uZmlnKCk/LnRleHRTZWFyY2hOb0RhdGEgPz8gJ2kxOG5fbm9fcmVzdWx0JykgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgfVxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1zcGlubmVyIFtzaXplXT1cIidtZWRpdW0nXCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2xpc3Qvc3JjL3RlbXBsYXRlcy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvdGVtcGxhdGVzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztB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LHFDQUFxQyxnS0FHUSx3QkFBd0IsdUZDL0NsRixvblJBa0lBLDBMRHBHSSxxQkFBcUIsdXRCQUFFLGlCQUFpQiwrT0FBRSxTQUFTLDZDQUFFLGVBQWUsNEZBQUUsZ0JBQWdCLG9KQUN0RixzQ0FBc0Msc2pCQUN0Qyx1Q0FBdUMsMHBCQUN2QyxnQ0FBZ0MsaUdBQ2hDLHNDQUFzQyx3U0FDdEMsNEJBQTRCLGdFQUM1QiwrQkFBK0Isd0VBQy9CLCtDQUErQyxzSkFDL0MsaUNBQWlDLCtNQUNqQyxxQ0FBcUMseUVBQ3JDLG9DQUFvQyx3RUFDcEMsK0JBQStCOzs0RkFHdEIscUNBQXFDO2tCQXRCakQsU0FBUzsrQkFFRSw0Q0FBNEMsY0FHMUMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCO3dCQUN0RixzQ0FBc0M7d0JBQ3RDLHVDQUF1Qzt3QkFDdkMsZ0NBQWdDO3dCQUNoQyxzQ0FBc0M7d0JBQ3RDLDRCQUE0Qjt3QkFDNUIsK0JBQStCO3dCQUMvQiwrQ0FBK0M7d0JBQy9DLGlDQUFpQzt3QkFDakMscUNBQXFDO3dCQUNyQyxvQ0FBb0M7d0JBQ3BDLCtCQUErQjtxQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQsIFZpcnR1YWxTY3JvbGxlck1vZHVsZSB9IGZyb20gJ0BpaGFyYmVjay9uZ3gtdmlydHVhbC1zY3JvbGxlcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0NoZWNrYm94U2luZ2xlQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1jaGVja2JveC1zaW5nbGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXNjcm9sbC1vdmVybGF5JztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyJztcbmltcG9ydCB7IExpYnNVaUljb25zR2V0SWNvbkNvbXBvbmVudFBpcGUgfSBmcm9tICdAbGlicy11aS9pY29ucyc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY2FsbC1mdW5jdGlvbi1pbi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGNvbnZlcnRTaWduYWxUb09iamVjdCwgZGVsZXRlVW5pY29kZSwgZXNjYXBlSHRtbCwgZ2V0LCBpc05pbCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RIaWdobGlnaHRLZXlTZWFyY2hEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9oaWdobGlnaHQta2V5LXNlYXJjaC9oaWdobGlnaHQta2V5LXNlYXJjaC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGF0YS1lbWl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtYnkta2V5LnBpcGUnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0xpc3RSb3dzQ29tcG9uZW50IH0gZnJvbSAnLi4vcm93cy9yb3dzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0IH0gZnJvbSAnLi4vdGVtcGxhdGVzLmNvbXBvbmVudC5hYnN0cmFjdCc7XG5pbXBvcnQgeyBJTGlzdENvbmZpZ0l0ZW1DaGVja2JveCB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9jb25maWctaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDb252ZXJ0T2JqZWN0VG9TaWduYWxQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtY29udmVydC1vYmplY3QtdG8tc2lnbmFsJztcbmltcG9ydCB7IExpYnNVaVBpcGVzR2V0VmFsdWVPZk9iamVjdFBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1nZXQtdmFsdWUtb2Ytb2JqZWN0JztcblxuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFZpcnR1YWxTY3JvbGxlck1vZHVsZSwgTmdDb21wb25lbnRPdXRsZXQsIEFzeW5jUGlwZSwgVHJhbnNsYXRlTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNDaGVja2JveFNpbmdsZUNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSxcbiAgICBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlLFxuICAgIExpYnNVaUljb25zR2V0SWNvbkNvbXBvbmVudFBpcGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RIaWdobGlnaHRLZXlTZWFyY2hEaXJlY3RpdmUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RSb3dzQ29tcG9uZW50LFxuICAgIExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGUsXG4gICAgTGlic1VpUGlwZXNDb252ZXJ0T2JqZWN0VG9TaWduYWxQaXBlLFxuICAgIExpYnNVaVBpcGVzR2V0VmFsdWVPZk9iamVjdFBpcGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzTGlzdENoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgTGlic1VpQ29tcG9uZW50c0xpc3RUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3ggPSBzaWduYWw8SUxpc3RDb25maWdJdGVtQ2hlY2tib3ggfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB2aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQgPSB2aWV3Q2hpbGQoVmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoaXNOaWwodGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5jb25maWdUZW1wbGF0ZUNoZWNrYm94LnNldCh0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZUNoZWNrYm94Py4oKSk7XG4gICAgdGhpcy5maWVsZEtleS5zZXQodGhpcy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KCk/LmZpZWxkS2V5ID8/IHRoaXMuZmllbGRLZXlEZWZhdWx0KCkpO1xuICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZSgpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyU2VsZWN0KGlzU2VsZWN0QWxsOiBib29sZWFuLCBpc0NsaWNrQ2hlY2tib3hBbGw/OiBib29sZWFuKSB7XG4gICAgaWYgKGlzU2VsZWN0QWxsICYmIHRoaXMucmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24oKSkge1xuICAgICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnNldChbXSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5tdWx0aUtleVNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMubXVsdGlLZXlTZWxlY3RlZC5zZXQoW10pO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2FkaW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldElkc0J5U2VydmljZSgpO1xuXG4gICAgdGhpcy5wcm9jZXNzSGFuZGxlclNlbGVjdERhdGEoaXNTZWxlY3RBbGwsIGlzQ2xpY2tDaGVja2JveEFsbCAmJiAhaXNTZWxlY3RBbGwgPyBjbG9uZURlZXAodGhpcy5tdWx0aUtleVNlbGVjdGVkKCkpIDogcmVzdWx0LmRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzSGFuZGxlclNlbGVjdERhdGEoaXNTZWxlY3RBbGw6IGJvb2xlYW4sIGlkczogQXJyYXk8c3RyaW5nPikge1xuICAgIGNvbnN0IGtleXNEaXNhYmxlID0gdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKSB8fCBbXTtcbiAgICBjb25zdCBrZXlzID0gbmV3IFNldCh0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSk7XG5cbiAgICB0aGlzLm11bHRpS2V5U2VsZWN0ZWQuc2V0KFtdKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgaWYgKGlzU2VsZWN0QWxsKSB7XG4gICAgICBpZiAoaWRzLmxlbmd0aCkge1xuICAgICAgICBpZHMuZm9yRWFjaChpZCA9PiAha2V5c0Rpc2FibGUuc29tZShrZXlEaXNhYmxlID0+IGtleURpc2FibGUgPT09IGlkKSAmJiBrZXlzLmFkZChpZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlkcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pdGVtcygpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV07XG5cbiAgICAgICAgICBpZiAoIWtleXNEaXNhYmxlLnNvbWUoa2V5RGlzYWJsZSA9PiBrZXlEaXNhYmxlID09PSBrZXkpKSB7XG4gICAgICAgICAgICBrZXlzLmFkZChrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLm11bHRpS2V5U2VsZWN0ZWQudXBkYXRlKGl0ZW1zID0+IFsuLi4oaXRlbXMgfHwgW10pLCAuLi5rZXlzXSk7XG4gICAgICB0aGlzLmVtaXRTZWxlY3RNdWx0aUtleSh0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2V5VW5TZWxlY3RlZCA9IG5ldyBTZXQ8dW5rbm93bj4oKTtcblxuICAgIGlkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgIGlmICgha2V5c0Rpc2FibGUuc29tZShrZXlEaXNhYmxlID0+IGtleURpc2FibGUgPT09IGlkKSkge1xuICAgICAgICBrZXlzLmRlbGV0ZShpZCk7XG4gICAgICAgIGtleVVuU2VsZWN0ZWQuYWRkKGlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWlkcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaXRlbXMoKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBpdGVtKClbdGhpcy5maWVsZEtleSgpXTtcblxuICAgICAgICBpZiAoIWtleXNEaXNhYmxlLnNvbWUoa2V5RGlzYWJsZSA9PiBrZXlEaXNhYmxlID09PSBrZXkpKSB7XG4gICAgICAgICAga2V5cy5kZWxldGUoa2V5KTtcbiAgICAgICAgICBrZXlVblNlbGVjdGVkLmFkZChrZXkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnVwZGF0ZShpdGVtcyA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwgLi4ua2V5c10pO1xuICAgIHRoaXMub3V0VW5TZWxlY3RNdWx0aUtleS5lbWl0KEFycmF5LmZyb20oa2V5VW5TZWxlY3RlZCkpO1xuICAgIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdCh7IGtleXM6IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdLCBtYXBLZXlzOiBbXSwgaXNDbGlja01hbnVhbDogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0SWRzQnlTZXJ2aWNlKCkge1xuICAgIGlmICghdGhpcy5zZWFyY2hDb25maWcoKSB8fCAhdGhpcy5pc1NlYXJjaE9ubGluZSgpKSB7XG4gICAgICByZXR1cm4geyBjb2RlOiAyMDAsIGRhdGE6IHRoaXMuaXRlbXMoKS5tYXAoaXRlbSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSkgfTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KCk/Lmh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0Py4oKSkge1xuICAgICAgICByZXR1cm4geyBkYXRhOiBbXSB9O1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KHRoaXMubG9hZGluZygpKTtcbiAgICAgIGNvbnN0IGh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0ID0gdGhpcy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KCk/Lmh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0Py4oKTtcblxuICAgICAgaWYgKCFodHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdCkge1xuICAgICAgICByZXR1cm4geyBkYXRhOiBbXSB9O1xuICAgICAgfVxuICAgICAgY29uc3QgeyBhcmd1bWVudHNWYWx1ZSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUgfSA9IGh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0O1xuXG4gICAgICB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS51cGRhdGVBcmd1bWVudHMoYXJndW1lbnRzVmFsdWUsIHRoaXMuaHR0cFJlcXVlc3RTZXJ2aWNlLmZha2VSZXNwb25zZVBhZ2luZ0FwaSgpLCB7fSwgdGhpcy5rZXlTZWFyY2goKSwgdGhpcy5pc1NlYXJjaE9ubGluZSgpLCBmYWxzZSwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBSZXF1ZXN0U2VydmljZS5jYWxsQXBpKGh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0KTtcblxuICAgICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5kYXRhIHx8ICFyZXN1bHQuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHsgZGF0YTogW10gfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuXG4gICAgICByZXR1cm4geyBkYXRhOiBbXSB9O1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyU2Nyb2xsQm90dG9tKCkge1xuICAgIGlmICh0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLmxvYWRlZExhc3RJdGVtKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzU2VhcmNoKCkge1xuICAgIGlmICghdGhpcy5pc1NlYXJjaE9ubGluZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGF0YSh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5jYWxsQXBpQnlTZXJ2aWNlKHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ2UoZXZlbnQ6IGFueSwgaXRlbTogYW55LCBpZ25vcmVEaXNhYmxlID0gZmFsc2UsIGlzQ2xpY2tNYW51YWwgPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveCgpPy5pZ25vcmVDbGlja0l0ZW1VbkNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IGtleSA9IGl0ZW1bdGhpcy5maWVsZEtleSgpXTtcblxuICAgICAgaWYgKHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpPy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnNldChbXSk7XG4gICAgfVxuICAgIGlmICghaWdub3JlRGlzYWJsZSAmJiAodGhpcy5kaXNhYmxlKCkgfHwgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKT8uc29tZShrZXlEaXNhYmxlID0+IGtleURpc2FibGUgPT09IGl0ZW1bdGhpcy5maWVsZEtleSgpXSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEV2ZW50KSB7XG4gICAgICBpZiAodGhpcy5jbGlja0V4YWN0bHkoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrQW5kRW1pdE11bHRpS2V5U2VsZWN0ZWQoaXRlbSwgaXNDbGlja01hbnVhbCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGVja0FuZEVtaXRNdWx0aUtleVNlbGVjdGVkKGl0ZW0sIGlzQ2xpY2tNYW51YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FuZEVtaXRNdWx0aUtleVNlbGVjdGVkKGl0ZW06IGFueSwgaXNDbGlja01hbnVhbCA9IHRydWUpIHtcbiAgICBjb25zdCBrZXkgPSBnZXQoaXRlbSwgdGhpcy5maWVsZEtleSgpKTtcbiAgICBjb25zdCBpbmRleE9mS2V5ID0gdGhpcy5tdWx0aUtleVNlbGVjdGVkKCk/LmluZGV4T2Yoa2V5KSA/PyAtMTtcblxuICAgIGlmIChpbmRleE9mS2V5IDwgMCkge1xuICAgICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnVwZGF0ZShpdGVtcyA9PiBbLi4uKGl0ZW1zIHx8IFtdKSwga2V5XSk7XG4gICAgICB0aGlzLmVtaXRTZWxlY3RNdWx0aUtleSh0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSB8fCBbXSwgaXNDbGlja01hbnVhbCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tdWx0aUtleVNlbGVjdGVkLnVwZGF0ZShpdGVtcyA9PiBpdGVtcz8uZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0ga2V5KSk7XG4gICAgdGhpcy5vdXRVblNlbGVjdE11bHRpS2V5LmVtaXQoW2tleV0pO1xuICAgIHRoaXMuZW1pdFNlbGVjdE11bHRpS2V5KHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpIHx8IFtdLCBpc0NsaWNrTWFudWFsKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZW1pdFNlbGVjdE11bHRpS2V5KG11bHRpS2V5U2VsZWN0ZWQ6IEFycmF5PHVua25vd24+LCBpc0NsaWNrTWFudWFsID0gdHJ1ZSkge1xuICAgIGNvbnN0IG1hcEtleXMgPSBuZXcgQXJyYXk8SUxpc3REYXRhRW1pdEtleT4oKTtcblxuICAgIGlmICghbXVsdGlLZXlTZWxlY3RlZCB8fCAhbXVsdGlLZXlTZWxlY3RlZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQoeyBrZXlzOiBbXSwgbWFwS2V5cywgaXNDbGlja01hbnVhbCB9KTtcbiAgICB9XG5cbiAgICBtdWx0aUtleVNlbGVjdGVkLmZvckVhY2goKGtleTogdW5rbm93bikgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc3RvcmUoKS5maW5kKGl0ZW0gPT4gaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGtleSk7XG5cbiAgICAgIG1hcEtleXMucHVzaCh7IGtleSwgaXRlbTogY29udmVydFNpZ25hbFRvT2JqZWN0KGl0ZW0pLCBpc0NsaWNrTWFudWFsIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRTZWxlY3RNdWx0aUtleS5lbWl0KHsga2V5czogdGhpcy5tdWx0aUtleVNlbGVjdGVkKCkgfHwgW10sIG1hcEtleXMsIGlzQ2xpY2tNYW51YWwgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc0RhdGEocmVwbGFjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtQnlLZXlTZWFyY2g6IEFycmF5PFdyaXRhYmxlU2lnbmFsPGFueT4+ID0gW107XG4gICAgY29uc3Qga2V5c0hpZGRlbiA9IHRoaXMua2V5c0hpZGRlbkl0ZW0oKSB8fCBbXTtcbiAgICBjb25zdCBpdGVtc0FkZE5ldzogQXJyYXk8V3JpdGFibGVTaWduYWw8YW55Pj4gPSBbXTtcblxuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdG9yZSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1UeXBlQWRkTmV3ID0gaXRlbSgpLmlzQWRkTmV3O1xuXG4gICAgICBpdGVtLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgZGVsZXRlIGN1cnJlbnQuaXNBZGROZXc7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KVxuICAgICAgY29uc3QgZGF0YVN0b3JlOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gY2xvbmVEZWVwKGl0ZW0pO1xuXG4gICAgICBkYXRhU3RvcmUudXBkYXRlKGN1cnJlbnRTdG9yZSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgcmVmOiBpdGVtKCkgfTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KCk/LmdldFBvcG92ZXIpIHtcbiAgICAgICAgZGF0YVN0b3JlLnVwZGF0ZShjdXJyZW50U3RvcmUgPT4ge1xuICAgICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRTdG9yZSwgZGF0YVRvb2x0aXA6IHRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveCgpPy5nZXRQb3BvdmVyPy4oZGF0YVN0b3JlKCkpIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0ga2V5c0hpZGRlbi5maW5kKGtleSA9PiBkYXRhU3RvcmUoKVt0aGlzLmZpZWxkS2V5KCldID09PSBrZXkpO1xuXG4gICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGRlbGV0ZVVuaWNvZGUodGhpcy5idWlsZFZhbHVlQnlDb25maWcoZGF0YVN0b3JlLCB0aGlzLmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3goKSkpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHRleHRFc2NhcGUgPSBlc2NhcGVIdG1sKHRleHQpO1xuICAgICAgICBjb25zdCBrZXlTZWFyY2ggPSBkZWxldGVVbmljb2RlKGVzY2FwZUh0bWwodGhpcy5rZXlTZWFyY2goKS50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XG5cbiAgICAgICAgaWYgKCgodGhpcy5pc1NlYXJjaE9ubGluZSgpICYmIHRoaXMuY29uZmlnKCk/Lmh0dHBSZXF1ZXN0RGF0YT8uKCk/LnNlcnZpY2VOYW1lICYmICF0aGlzLmNvbmZpZygpPy5odHRwUmVxdWVzdERhdGE/LigpPy5zZXJ2aWNlT3RoZXIpIHx8XG4gICAgICAgICAgKHRleHQgJiYgKHRleHQuaW5jbHVkZXMoa2V5U2VhcmNoKSB8fCB0ZXh0RXNjYXBlLmluY2x1ZGVzKGtleVNlYXJjaCkpKSkgJiYgKHJlcGxhY2UgfHwgKCFyZXBsYWNlICYmICF0aGlzLml0ZW1zKCkuZmluZChkYXRhSXRlbSA9PiBkYXRhSXRlbSgpW3RoaXMuZmllbGRLZXkoKV0gPT09IGRhdGFTdG9yZSgpW3RoaXMuZmllbGRLZXkoKV0pKSkgJiYgIWl0ZW1CeUtleVNlYXJjaC5maW5kKGRhdGFJdGVtID0+IGRhdGFJdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0gZGF0YVN0b3JlKClbdGhpcy5maWVsZEtleSgpXSkpIHtcblxuICAgICAgICAgIGRhdGFTdG9yZS51cGRhdGUoY3VycmVudFN0b3JlID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmN1cnJlbnRTdG9yZSxcbiAgICAgICAgICAgICAgY2xhc3NMYWJlbEluY2x1ZGU6IHRoaXMuY29uZmlnVGVtcGxhdGVDaGVja2JveCgpPy5nZXRDbGFzc0l0ZW0/LihkYXRhU3RvcmUoKSksXG4gICAgICAgICAgICAgIGF2YXRhckNvbmZpZzogdGhpcy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KCk/LmdldEF2YXRhckNvbmZpZz8uKGRhdGFTdG9yZSgpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpdGVtVHlwZUFkZE5ldykge1xuICAgICAgICAgICAgaXRlbXNBZGROZXcudW5zaGlmdChkYXRhU3RvcmUpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW1CeUtleVNlYXJjaC5wdXNoKGRhdGFTdG9yZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSAhPT0ga2V5KSk7XG4gICAgfSk7XG4gICAgY29uc3QgY2FsbGJhY2tDaGVja1Njcm9sbCA9IChwcmVTdGF0ZUhhc1Njcm9sbDogYm9vbGVhbiwgY3VycmVudEhhc1Njcm9sbDogYm9vbGVhbikgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxUb0l0ZW1TZWxlY3RlZCgpO1xuICAgICAgaWYgKHRoaXMua2V5c0hpZGRlbkl0ZW0oKT8ubGVuZ3RoICYmIHByZVN0YXRlSGFzU2Nyb2xsICYmICFjdXJyZW50SGFzU2Nyb2xsICYmICh0aGlzLmlzU2VhcmNoT25saW5lKCkpKSB7XG4gICAgICAgIHRoaXMuY2FsbEFwaUJ5U2VydmljZShmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChyZXBsYWNlKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChpdGVtQnlLZXlTZWFyY2gpO1xuICAgICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgICB0aGlzLmF1dG9TZWxlY3RGaXJzdEl0ZW0odGhpcy5pdGVtcygpKTtcbiAgICAgIHRoaXMuc2V0SGVpZ2h0Vmlld1BvcnQoKTtcbiAgICAgIHRoaXMuY2hlY2tWaWV3UG9ydFNjcm9sbChjYWxsYmFja0NoZWNrU2Nyb2xsKTtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQodGhpcy5sb2FkaW5nKCkpO1xuICAgICAgdGhpcy5vdXRMb2FkSXRlbXNDb21wbGV0ZS5lbWl0KHsgaXRlbXM6IHRoaXMuaXRlbXMoKSB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiBbLi4uaXRlbXNBZGROZXcsIC4uLihpdGVtcyB8fCBbXSksIC4uLml0ZW1CeUtleVNlYXJjaF0pXG4gICAgdGhpcy5jb25maWcoKT8uc29ydD8uKHRoaXMuaXRlbXMoKSk7XG4gICAgdGhpcy5zZXRIZWlnaHRWaWV3UG9ydCgpO1xuICAgIHRoaXMuY2hlY2tWaWV3UG9ydFNjcm9sbChjYWxsYmFja0NoZWNrU2Nyb2xsKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdCh0aGlzLmxvYWRpbmcoKSk7XG4gICAgdGhpcy5vdXRMb2FkSXRlbXNDb21wbGV0ZS5lbWl0KHsgaXRlbXM6IHRoaXMuaXRlbXMoKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9JdGVtU2VsZWN0ZWQoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3goKT8uYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVBdXRvU2Nyb2xsSXRlbVNlbGVjdGVkKCkpO1xuICAgIHRoaXMudGltZUF1dG9TY3JvbGxJdGVtU2VsZWN0ZWQuc2V0KChzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5rZXlTZWxlY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXMoKS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0gdGhpcy5rZXlTZWxlY3RlZCgpKTtcblxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBvZmZzZXRDb250YWluZXIgPSAodGhpcy5lbGVtZW50U2Nyb2xsKCk/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpPy5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWxPZmZzZXQgPSAoKG9mZnNldENvbnRhaW5lciA/IG9mZnNldENvbnRhaW5lciAtIHRoaXMuaGVpZ2h0SXRlbSgpIDogMCkgLyAyKSAqIC0xO1xuXG4gICAgICAgIHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50KCk/LnNjcm9sbFRvSW5kZXgoaW5kZXgsIHRydWUsIGFkZGl0aW9uYWxPZmZzZXQsIHRoaXMudGltZUFuaW1hdGlvblNjcm9sbFRvSW5kZXhJdGVtKCkpO1xuICAgICAgfVxuICAgIH0pIGFzIHVua25vd24pIGFzIG51bWJlcik7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBhdXRvU2VsZWN0Rmlyc3RJdGVtKGl0ZW1zOiBBcnJheTxXcml0YWJsZVNpZ25hbDxhbnk+Pikge1xuICAgIGlmICh0aGlzLmF1dG9TZWxlY3RlZEZpcnN0SXRlbUNhbGxPdXRzaWRlQmVmb3JlKCkgfHwgdGhpcy5tdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aCB8fCAhdGhpcy5jb25maWcoKT8uYXV0b1NlbGVjdEZpcnN0SXRlbSB8fCAhaXRlbXMgfHwgIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZXJDaGFuZ2UoJ2NoZWNrYm94JywgaXRlbXNbMF0oKSwgdHJ1ZSwgZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExlbmd0aEl0ZW0oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcygpLmxlbmd0aDtcbiAgfVxufVxuIiwiQGlmIChjb25maWdUZW1wbGF0ZUNoZWNrYm94KCk7IGFzIGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3gpIHtcbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgdy1mdWxsIGgtZnVsbFwiPlxuICAgIEBpZiAoaXRlbXMoKS5sZW5ndGggJiYgY29uZmlnVGVtcGxhdGVDaGVja2JveC5jb25maWdCdXR0b25TZWxlY3RBbmRVbmRTZWxlY3RJdGVtPy4oKTsgYXMgY29uZmlnQnV0dG9uU2VsZWN0SXRlbSkge1xuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3NdPVwiJ2ZsZXggaXRlbXMtY2VudGVyIGJnLVsjZmZmZmZmXSAnKyhjb25maWdCdXR0b25TZWxlY3RJdGVtLmNsYXNzSW5jbHVkZSA/PyAnbGlicy11aS1ib3JkZXItYm90dG9tLWdlbmVyYWwnKVwiPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cImNvbmZpZ0J1dHRvblNlbGVjdEl0ZW0uYnV0dG9uQ2hlY2tBbGw/LnR5cGUgPz8gJ2J1dHRvbi1saW5rLXByaW1hcnknXCJcbiAgICAgICAgICBbbGFiZWxdPVwiY29uZmlnQnV0dG9uU2VsZWN0SXRlbS5idXR0b25DaGVja0FsbD8ubGFiZWwgPz8gJ2kxOG5fc2VsZWN0X2FsbF9zZWFyY2hlZF9yZXN1bHRzJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJjb25maWdCdXR0b25TZWxlY3RJdGVtLmJ1dHRvbkNoZWNrQWxsPy5jbGFzc0luY2x1ZGUgfHwgJ3ByLVs4cHhdJ1wiXG4gICAgICAgICAgW2NsYXNzTGFiZWxdPVwiY29uZmlnQnV0dG9uU2VsZWN0SXRlbS5idXR0b25DaGVja0FsbD8uY2xhc3NMYWJlbCB8fCAnbGlicy11aS1mb250LWg2cidcIlxuICAgICAgICAgIFtkaXNhYmxlXT1cImxvYWRpbmcoKSB8fCBkaXNhYmxlKCkgfHwgZmFsc2VcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyU2VsZWN0KHRydWUpXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtWyNlNmU3ZWFdXCI+fDwvZGl2PlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgW3R5cGVdPVwiY29uZmlnQnV0dG9uU2VsZWN0SXRlbS5idXR0b25VbmNoZWNrQWxsPy50eXBlID8/ICdidXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgW2xhYmVsXT1cImNvbmZpZ0J1dHRvblNlbGVjdEl0ZW0uYnV0dG9uVW5jaGVja0FsbD8ubGFiZWwgPz8gJ2kxOG5fdW5zZWxlY3RfYWxsX3NlYXJjaGVkX3Jlc3VsdHMnXCJcbiAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImNvbmZpZ0J1dHRvblNlbGVjdEl0ZW0uYnV0dG9uVW5jaGVja0FsbD8uY2xhc3NJbmNsdWRlIHx8ICdwbC1bOHB4XSdcIlxuICAgICAgICAgIFtjbGFzc0xhYmVsXT1cImNvbmZpZ0J1dHRvblNlbGVjdEl0ZW0uYnV0dG9uVW5jaGVja0FsbD8uY2xhc3NMYWJlbCB8fCAnbGlicy11aS1mb250LWg2cidcIlxuICAgICAgICAgIFtkaXNhYmxlXT1cImxvYWRpbmcoKSB8fCBkaXNhYmxlKCkgfHwgZmFsc2VcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyU2VsZWN0KGZhbHNlKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChpdGVtcygpLmxlbmd0aCAmJiBjb25maWdUZW1wbGF0ZUNoZWNrYm94LmNvbmZpZ0NoZWNrYm94Q2hlY2tBbGw/LigpOyBhcyBjb25maWdDaGVja0JveCkge1xuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3NdPVwiJ2ZsZXggbGlicy11aS1ib3JkZXItYm90dG9tLWdlbmVyYWwgYmctWyNmZmZmZmZdIHBsLVsxMnB4XSAnKyhjb25maWdUZW1wbGF0ZUNoZWNrYm94LmNsYXNzSW5jbHVkZUhhc0NvbmZpZ0NoZWNrQm94QWxsID8/ICdweS1bNnB4XSBsaWJzLXVpLWJvcmRlci1ib3R0b20tZ2VuZXJhbCcpXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtY2hlY2tib3gtc2luZ2xlIFtsYWJlbF09XCJjb25maWdDaGVja0JveC5sYWJlbCA/PyAnaTE4bl9hbGwnXCJcbiAgICAgICAgICBbY2xhc3NMYWJlbEluY2x1ZGVdPVwiY29uZmlnQ2hlY2tCb3guY2xhc3NMYWJlbEluY2x1ZGUgfHwgJydcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIihtdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aCAmJiAobXVsdGlLZXlTZWxlY3RlZCgpPy5sZW5ndGggfHwwKSA+PSAoc3RvcmUoKS5sZW5ndGggfHwgLTEpKSB8fCBmYWxzZVwiXG4gICAgICAgICAgW3N0aWxsT3RoZXJPcHRpb25zXT1cIiEhbXVsdGlLZXlTZWxlY3RlZCgpPy5sZW5ndGggJiYgKG11bHRpS2V5U2VsZWN0ZWQoKT8ubGVuZ3RoIHx8MCkgPCAoc3RvcmUoKS5sZW5ndGggfHwgLTEpXCJcbiAgICAgICAgICBbZGlzYWJsZV09XCJsb2FkaW5nKCkgfHwgZGlzYWJsZSgpIHx8IGZhbHNlXCJcbiAgICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIpPSdoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpJ1xuICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlclNlbGVjdCgkZXZlbnQuY2hlY2tlZCwgdHJ1ZSlcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCIncmVsYXRpdmUgaC1mdWxsIHctZnVsbCAnICsoKCFpdGVtcygpIHx8ICFpdGVtcygpLmxlbmd0aCkgPyAnYmctWyNmZmZmZmZdJzogY29uZmlnVGVtcGxhdGVDaGVja2JveC5jbGFzc0xpc3RJbmNsdWRlIHx8ICcnKVwiPlxuICAgICAgQGlmIChpdGVtcygpICYmIGl0ZW1zKCkubGVuZ3RoKSB7XG4gICAgICAgIDxkaXYgI2VsZW1lbnRTY3JvbGxcbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFZpZXdQb3J0KCkgJiYgIWNvbmZpZygpPy5pZ25vcmVTaG93RGF0YVdoZW5Ob3RTZWFyY2ggPyBoZWlnaHRWaWV3UG9ydCgpKydweCc6JzEwMCUnXCJcbiAgICAgICAgICAob3V0U2Nyb2xsQm90dG9tKT1cImhhbmRsZXJTY3JvbGxCb3R0b20oKVwiPlxuICAgICAgICAgIDx2aXJ0dWFsLXNjcm9sbGVyICNzY3JvbGxcbiAgICAgICAgICAgIFtwYXJlbnRTY3JvbGxdPVwiZWxlbWVudFNjcm9sbFwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXMoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImgtZnVsbFwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBzY3JvbGwudmlld1BvcnRJdGVtczsgdHJhY2sgaXRlbSgpW2ZpZWxkS2V5KCldOyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cImxhc3QgPyAoY29uZmlnVGVtcGxhdGVDaGVja2JveC5jbGFzc0luY2x1ZGVMYXN0Vmlld0l0ZW0gfHwgJycpIDogJydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNpdGVtUmVmXG4gICAgICAgICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzTGlzdEhpZ2hsaWdodEtleVNlYXJjaERpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgW2lzSGlnaGxpZ2h0XT1cImNvbmZpZygpPy5oaWdobGlnaHRUZXh0U2VhcmNoSW5SZXN1bHRcIlxuICAgICAgICAgICAgICAgICAgW2tleVNlYXJjaF09XCJrZXlTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5jbGlja0V4YWN0bHldPVwiY2xpY2tFeGFjdGx5XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInbGlicy11aS1saXN0LXRlbXBsYXRlLWNoZWNrYm94LWl0ZW0gZmxleCAnICsgKGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guY2xhc3NJdGVtSW5jbHVkZSB8fCAnJylcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnctZnVsbF09XCIhY29uZmlnVGVtcGxhdGVDaGVja2JveC5pZ25vcmVJdGVtV2lkdGgxMDBcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmxpYnMtdWktYmctbGlzdC1ob3Zlcl09XCIhY2xpY2tFeGFjdGx5KClcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmxpYnMtdWktYmctbGlzdC1ob3Zlci1hY3RpdmVdPVwiIWNsaWNrRXhhY3RseSgpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy4hcGwtWzEycHhdXT1cInBhZGRpbmdMZWZ0SXRlbSgpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy4hcHktWzZweF1dPVwiY2xpY2tFeGFjdGx5KClcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLiFwci1bNHB4XV09XCJoYXNTY3JvbGwoKSAmJiBjb25maWdUZW1wbGF0ZUNoZWNrYm94LnJvd3NcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLiFwci1bMTJweF1dPVwiIWhhc1Njcm9sbCgpICYmIGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3gucm93c1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNoYW5nZSgkZXZlbnQsaXRlbSgpKVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbSgpLmZpZWxkTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWNoZWNrYm94LXNpbmdsZSBbbGFiZWxdPVwiaXRlbSgpLmZpZWxkTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F2YXRhckNvbmZpZ109XCIoaXRlbSgpLmF2YXRhckNvbmZpZ3xMaWJzVWlQaXBlc0NvbnZlcnRPYmplY3RUb1NpZ25hbFBpcGUpPy4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGlua0ltYWdlXT1cImNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guZ2V0SW1hZ2UgPyAoKCdhdmF0YXInIHwgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZTpjb25maWdUZW1wbGF0ZUNoZWNrYm94LmdldEltYWdlOml0ZW0oKSkgfCBhc3luYykgOiBpdGVtKClbY29uZmlnVGVtcGxhdGVDaGVja2JveC5maWVsZEdldEltYWdlIHx8ICcnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGlua0ltYWdlRXJyb3JdPVwiY29uZmlnVGVtcGxhdGVDaGVja2JveC5nZXRJbWFnZUVycm9yID8gKCgnYXZhdGFyX2Vycm9yJyB8IExpYnNVaVBpcGVzQ2FsbEZ1bmN0aW9uSW5UZW1wbGF0ZVBpcGU6Y29uZmlnVGVtcGxhdGVDaGVja2JveC5nZXRJbWFnZUVycm9yOml0ZW0oKSkgfCBhc3luYykgOiBpdGVtKClbY29uZmlnVGVtcGxhdGVDaGVja2JveC5maWVsZEdldExpbmtJbWFnZUVycm9yIHx8ICcnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NMYWJlbEluY2x1ZGVdPVwiaXRlbSgpLmNsYXNzTGFiZWxJbmNsdWRlIHx8IGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guY2xhc3NMYWJlbEluY2x1ZGUgfHwgJ2xpYnMtdWktZm9udC1oNXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt6SW5kZXhMYWJlbF09XCJjb25maWdUZW1wbGF0ZUNoZWNrYm94LnpJbmRleFBvcG92ZXIgPz8gMTIwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtKClbZmllbGRLZXkoKV0gfCBMaWJzVWlDaGVja1NlbGVjdGVkQnlLZXlQaXBlOm11bHRpS2V5U2VsZWN0ZWQoKTptdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBba2V5XT1cIml0ZW0oKVtmaWVsZEtleSgpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW1nVHlwZUljb25dPVwiY29uZmlnVGVtcGxhdGVDaGVja2JveC5oYXNBdmF0YXJHcm91cFNvY2lhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc0ltYWdlSW5jbHVkZV09XCJjb25maWdUZW1wbGF0ZUNoZWNrYm94LmNsYXNzSW5jbHVkZUltYWdlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtidWxsZXRdPVwiKGl0ZW0oKS5idWxsZXR8TGlic1VpUGlwZXNDb252ZXJ0T2JqZWN0VG9TaWduYWxQaXBlKT8uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVdPVwibG9hZGluZygpIHx8IGRpc2FibGUoKSB8fCAoaXRlbSgpW2ZpZWxkS2V5KCldIHwgTGlic1VpQ2hlY2tTZWxlY3RlZEJ5S2V5UGlwZTprZXlzRGlzYWJsZUl0ZW0oKTprZXlzRGlzYWJsZUl0ZW0oKT8ubGVuZ3RoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCIoaXRlbSgpLmRhdGFQb3BvdmVyfExpYnNVaVBpcGVzQ29udmVydE9iamVjdFRvU2lnbmFsUGlwZSk/LigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja0V4YWN0bHldPVwiY2xpY2tFeGFjdGx5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFDb21wb25lbnRPdXRsZXRdPVwiaXRlbSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRPdXRsZXRdPVwiKGl0ZW0oKXxMaWJzVWlQaXBlc0dldFZhbHVlT2ZPYmplY3RQaXBlOmZpZWxkS2V5KCk6dW5kZWZpbmVkOnRydWUgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guZ2V0Q29tcG9uZW50T3V0bGV0Oml0ZW0oKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyKT0naGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KSdcbiAgICAgICAgICAgICAgICAgICAgICAgIChvdXRDaGFuZ2UpPVwiaGFuZGxlckNoYW5nZSgnY2hlY2tib3gnLGl0ZW0oKSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29uZmlnVGVtcGxhdGVDaGVja2JveD8ucm93cykge1xuICAgICAgICAgICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtbGlzdC10ZW1wbGF0ZXNfcm93c1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyAhY29uZmlnVGVtcGxhdGVDaGVja2JveC5pZ25vcmVJdGVtV2lkdGgxMDAgPyAndy1mdWxsJyA6ICcnIH19IHt7IGNvbmZpZ1RlbXBsYXRlQ2hlY2tib3guY2xhc3NSb3dzV3JhcHBlciB8fCBjb25maWdUZW1wbGF0ZUNoZWNrYm94LmNsYXNzUm93cyA/PyAnJyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRLZXldPVwiZmllbGRLZXkoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBba2V5U2VsZWN0ZWRdPVwiKGl0ZW0oKVtmaWVsZEtleSgpXSB8IExpYnNVaUNoZWNrU2VsZWN0ZWRCeUtleVBpcGU6bXVsdGlLZXlTZWxlY3RlZCgpOm11bHRpS2V5U2VsZWN0ZWQoKT8ubGVuZ3RoKSA/IGl0ZW0oKVtmaWVsZEtleSgpXSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnVGVtcGxhdGVdPVwiY29uZmlnVGVtcGxhdGVDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob3V0RXZlbnQpPVwiaGFuZGxlckNoYW5nZSgnY2hlY2tib3gnLCRldmVudC5pdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3ZpcnR1YWwtc2Nyb2xsZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmICgoIWl0ZW1zKCkgfHwgIWl0ZW1zKCkubGVuZ3RoKSAmJiAoIWNvbmZpZygpPy5pZ25vcmVTaG93RGF0YVdoZW5Ob3RTZWFyY2ggfHwga2V5U2VhcmNoKCkpKSB7XG4gICAgICAgIDxkaXYgW2NsYXNzXT1cIidsaWJzLXVpLWZvbnQtaDVyIHRleHQtWyM5Y2EyYWRdICcrIChjb25maWcoKT8udGV4dE5vRGF0YUNsYXNzSW5jbHVkZSA/PyAncHktWzRweF0gcHgtWzEycHhdJylcIj5cbiAgICAgICAgICBAaWYgKGNvbmZpZygpPy5oYXNJY29uTm9EYXRhICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi1bMTZweF1cIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIihrZXlTZWFyY2goKSAgPyAnbm8tcmVzdWx0JyA6ICduby1kYXRhJykgfCBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlIHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICgha2V5U2VhcmNoKCkgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgICAgPHNwYW4+e3sgKGNvbmZpZygpPy50ZXh0Tm9EYXRhID8/ICdpMThuX2hhdmVfbm9fc2VsZWN0aW9uJykgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAodGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSAmJiBrZXlTZWFyY2goKSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEoKSB8fCBudWxsO2NvbnRleHQ6e2tleVNlYXJjaDprZXlTZWFyY2goKX1cIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCF0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpICYmIGtleVNlYXJjaCgpICYmICFsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IChjb25maWcoKT8udGV4dFNlYXJjaE5vRGF0YSA/PyAnaTE4bl9ub19yZXN1bHQnKSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxzcGFuPiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXNwaW5uZXIgW3NpemVdPVwiJ21lZGl1bSdcIiAvPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==