@smartbit4all/ng-client 3.2.30 → 3.2.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/smart-table/smarttable.model.mjs +2 -1
- package/esm2020/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
- package/esm2020/lib/smart-table/tables/table.mjs +7 -1
- package/fesm2015/smartbit4all-ng-client.mjs +9 -2
- package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
- package/fesm2020/smartbit4all-ng-client.mjs +9 -2
- package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-table/smarttable.model.d.ts +3 -0
- package/lib/smart-table/tables/table.d.ts +1 -0
- package/package.json +1 -1
- package/smartbit4all-ng-client-3.2.32.tgz +0 -0
- package/smartbit4all-ng-client-3.2.30.tgz +0 -0
|
@@ -41,6 +41,7 @@ export class SmartTable {
|
|
|
41
41
|
this.expandable = config.expandable;
|
|
42
42
|
this.expandedComponent = config.expandedComponent;
|
|
43
43
|
this.asyncOnExpand = config.asyncOnExpand;
|
|
44
|
+
this.highlightProperty = config.highlightProperty;
|
|
44
45
|
this.customSmartTableHeaders = config.customSmartTableHeaders;
|
|
45
46
|
if (this.expandable) {
|
|
46
47
|
this.customSmartTableHeaders?.push({
|
|
@@ -164,4 +165,4 @@ export class SmartTable {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0YWJsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL3NtYXJ0dGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzFELE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIseUNBQXVCLENBQUE7SUFDdkIsd0NBQXNCLENBQUE7SUFDdEIsMENBQXdCLENBQUE7QUFDMUIsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBUUQsTUFBTSxDQUFOLElBQVksNEJBS1g7QUFMRCxXQUFZLDRCQUE0QjtJQUN0QywrRUFBSSxDQUFBO0lBQ0osK0VBQUksQ0FBQTtJQUNKLHVGQUFRLENBQUE7SUFDUiwrRUFBSSxDQUFBO0FBQ04sQ0FBQyxFQUxXLDRCQUE0QixLQUE1Qiw0QkFBNEIsUUFLdkM7QUF1Q0QsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qiw4QkFBVyxDQUFBO0lBQ1gsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQWdCRCxNQUFNLENBQU4sSUFBWSxvQkFNWDtBQU5ELFdBQVksb0JBQW9CO0lBQzlCLHFDQUFhLENBQUE7SUFDYixxQ0FBYSxDQUFBO0lBQ2IseUNBQWlCLENBQUE7SUFDakIseUNBQWlCLENBQUE7SUFDakIsK0NBQXVCLENBQUE7QUFDekIsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0I7QUFFRCxNQUFNLENBQU4sSUFBWSwrQkFHWDtBQUhELFdBQVksK0JBQStCO0lBQ3pDLGlHQUFVLENBQUE7SUFDViw2RkFBUSxDQUFBO0FBQ1YsQ0FBQyxFQUhXLCtCQUErQixLQUEvQiwrQkFBK0IsUUFHMUM7QUFN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LElBQUksQ0FBQyxZQUFZLENBQUM7U0FDN0M7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5cclxuZXhwb3J0IGVudW0gU21hcnRUYWJsZVR5cGUge1xyXG4gIElOSEVSSVRFRCA9ICdJbmhlcml0ZWQnLFxyXG4gIENIRUNLX0JPWCA9ICdDaGVja0JveCcsXHJcbiAgUk9XX1NFTEVDVCA9ICdSb3dTZWxlY3QnLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGFibGVPcHRpb24ge1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBjYWxsYmFjazogKGlkOiBzdHJpbmcpID0+IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZSB7XHJcbiAgREFURSxcclxuICBUSU1FLFxyXG4gIERBVEVUSU1FLFxyXG4gIElDT04sXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUYWJsZUhlYWRlckljb25zIHtcclxuICBpY29uOiBzdHJpbmc7XHJcbiAgY29sb3I6IFRoZW1lUGFsZXR0ZTtcclxuICBzaG93SWNvbklmVmFsdWVFcXVhbHNXaXRoU3RyaW5nPzogc3RyaW5nO1xyXG4gIHNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhOdW1iZXI/OiBudW1iZXI7XHJcbiAgc2hvd0ljb25JZlZhbHVlU21hbGxlclRoYW5OdW1iZXI/OiBudW1iZXI7XHJcbiAgc2hvd0ljb25JZlZhbHVlQmlnZ2VyVGhhbk51bWJlcj86IG51bWJlcjtcclxuICBzaG93SWNvbklmVmFsdWVCb29sZWFuPzogYm9vbGVhbjtcclxuICBzaG93SWNvbklmVmFsdWVOdWxsPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0aWVzIHtcclxuICB0eXBlOiBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlO1xyXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XHJcbiAgaWNvbnM/OiBTbWFydFRhYmxlSGVhZGVySWNvbnNbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRhYmxlSWNvbiB7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGNvbG9yPzogVGhlbWVQYWxldHRlO1xyXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGFibGVIZWFkZXIge1xyXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgaXNIaWRkZW4/OiBib29sZWFuO1xyXG4gIHByb3BlcnRpZXM/OiBTbWFydFRhYmxlSGVhZGVyUHJvcGVydGllcztcclxuICBidXR0b25zPzogU21hcnRUYWJsZUJ1dHRvbltdO1xyXG4gIGljb24/OiBTbWFydFRhYmxlSWNvbjtcclxuICB0cmFuc2xhdG9yPzogKCh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmcpIHwgKCh2YWx1ZTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz4pO1xyXG4gIHNob3dDaGVja2JveEluSGVhZGVyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBvcmRlcj86IFNtYXJ0VGFibGVPcmRlcjtcclxuICBvcmRlck51bWJlcj86IG51bWJlcjtcclxuICBpc1NvcnRhYmxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU21hcnRUYWJsZU9yZGVyIHtcclxuICBBU0MgPSAnQVNDJyxcclxuICBERVNDID0gJ0RFU0MnLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGFibGVCdXR0b24ge1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgY29sb3I/OiBUaGVtZVBhbGV0dGU7XHJcbiAgY29kZT86IHN0cmluZztcclxuICB0eXBlOiBTbWFydFRhYmxlQnV0dG9uVHlwZTtcclxuICBtZW51SXRlbUJ1dHRvbnM/OiBTbWFydFRhYmxlQnV0dG9uW107XHJcbiAgbWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lPzogc3RyaW5nO1xyXG4gIHRyYW5zbGF0b3I/OiAoKGxhYmVsOiBzdHJpbmcpID0+IHN0cmluZykgfCAoKGxhYmVsOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPik7XHJcbiAgY2FsbGJhY2s/OiAoLi4uYXJnczogYW55W10pID0+IGFueTtcclxuICBhcmdzPzogYW55W107XHJcbiAgc2hvd0J1dHRvbklmPzogKHJvdzogYW55KSA9PiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTbWFydFRhYmxlQnV0dG9uVHlwZSB7XHJcbiAgTUVOVSA9ICdNRU5VJyxcclxuICBJQ09OID0gJ0lDT04nLFxyXG4gIE5PUk1BTCA9ICdOT1JNQUwnLFxyXG4gIFJBSVNFRCA9ICdSQUlTRUQnLFxyXG4gIFNFUEFSQVRPUiA9ICdTRVBBUkFUT1InLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBTbWFydFRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uIHtcclxuICBIT1JJWk9OVEFMLFxyXG4gIFZFUlRJQ0FMLFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIFNtYXJ0VGFibGVJbnRlcmZhY2VUeXBlPFQ+ID1cclxuICB8IFNtYXJ0VGFibGVJbnRlcmZhY2U8VD5cclxuICB8IFNtYXJ0VGFibGVHcmlkSW50ZXJmYWNlPFQ+O1xyXG5cclxuZXhwb3J0IGVudW0gU21hcnRUYWJsZUludGVyZmFjZVR5cGVFbnVtIHtcclxuICBOT1JNQUwsXHJcbiAgR1JJRCxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRhYmxlSW50ZXJmYWNlPFQ+IHtcclxuICB0eXBlOiBTbWFydFRhYmxlSW50ZXJmYWNlVHlwZUVudW0uTk9STUFMO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHRhYmxlSGVhZGVycz86IHN0cmluZ1tdO1xyXG4gIGN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPzogU21hcnRUYWJsZUhlYWRlcltdO1xyXG4gIGN1c3RvbVRhYmxlSGVhZGVycz86IHN0cmluZ1tdO1xyXG4gIHRhYmxlUm93czogVFtdO1xyXG4gIHRhYmxlVHlwZTogU21hcnRUYWJsZVR5cGU7XHJcbiAgb3B0aW9ucz86IFNtYXJ0VGFibGVPcHRpb25bXTtcclxuICB0YWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbj86IFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb247XHJcbiAgb25Sb3dDbGljaz86IChyb3c6IFQpID0+IHZvaWQ7XHJcbiAgb25Sb3dEb3VibGVDbGljaz86IChyb3c6IFQpID0+IHZvaWQ7XHJcbiAgZGVmYXVsdEFjdGlvbkNvZGVzPzogc3RyaW5nW107XHJcbiAgZGVmYXVsdEFjdGlvbnM/OiBTbWFydFRhYmxlQnV0dG9uW107XHJcbiAgaGlnaGxpZ2h0T25Sb3dDbGljaz86IGJvb2xlYW47XHJcbiAgaGlnaGxpZ2h0Q2xhc3M/OiBzdHJpbmc7XHJcbiAgaG92ZXI/OiBib29sZWFuO1xyXG4gIGV4cGFuZGFibGU/OiBib29sZWFuO1xyXG4gIGV4cGFuZGVkQ29tcG9uZW50PzogYW55O1xyXG4gIGFzeW5jT25FeHBhbmQ/OiBib29sZWFuO1xyXG4gIHNvcnRJY29uQXNjPzogc3RyaW5nO1xyXG4gIHNvcnRJY29uRGVzYz86IHN0cmluZztcclxuICBzb3J0SWNvbk5ldXRyYWw/OiBzdHJpbmc7XHJcbiAgc29ydGFibGU/OiBib29sZWFuO1xyXG4gIG1heE51bU9mU2VsZWN0YWJsZVJvd3M/OiBudW1iZXI7XHJcbiAgc2VsZWN0aW9uUHJvcGVydHk/OiBzdHJpbmc7XHJcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XHJcbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uTW9kZWw8YW55PjtcclxuICBzaG93Q2hlY2tib3hJbkhlYWRlcj86IGJvb2xlYW47XHJcbiAgaXNSb3dEaXNhYmxlZFByb3BlcnR5TmFtZT86IHN0cmluZztcclxuICBzZWxlY3RhYmxlUHJvcGVydHlOYW1lPzogc3RyaW5nO1xyXG4gIG9uU2VsZWN0aW9uPzogKHJvdzogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gIG9uQWxsU2VsZWN0aW9uPzogKHNlbGVjdGVkOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gIHJvd0V4cGFuZGVyPzogU21hcnRUYWJsZVJvd0V4cGFuZGVyPFQ+O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUYWJsZUdyaWRJbnRlcmZhY2U8VD4ge1xyXG4gIHR5cGU6IFNtYXJ0VGFibGVJbnRlcmZhY2VUeXBlRW51bS5HUklEO1xyXG4gIGN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzPzogU21hcnRUYWJsZUhlYWRlcltdO1xyXG4gIHRhYmxlVHlwZTogU21hcnRUYWJsZVR5cGU7XHJcbiAgb3B0aW9ucz86IFNtYXJ0VGFibGVPcHRpb25bXTtcclxuICB0YWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbj86IFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb247XHJcbiAgb25Sb3dDbGljaz86IChyb3c6IFQpID0+IHZvaWQ7XHJcbiAgb25Sb3dEb3VibGVDbGljaz86IChyb3c6IFQpID0+IHZvaWQ7XHJcbiAgZGVmYXVsdEFjdGlvbkNvZGVzPzogc3RyaW5nW107XHJcbiAgZGVmYXVsdEFjdGlvbnM/OiBTbWFydFRhYmxlQnV0dG9uW107XHJcbiAgaGlnaGxpZ2h0T25Sb3dDbGljaz86IGJvb2xlYW47XHJcbiAgaGlnaGxpZ2h0Q2xhc3M/OiBzdHJpbmc7XHJcbiAgaG92ZXI/OiBib29sZWFuO1xyXG4gIHNvcnRJY29uQXNjPzogc3RyaW5nO1xyXG4gIHNvcnRJY29uRGVzYz86IHN0cmluZztcclxuICBzb3J0SWNvbk5ldXRyYWw/OiBzdHJpbmc7XHJcbiAgc29ydGFibGU/OiBib29sZWFuO1xyXG4gIG1heE51bU9mU2VsZWN0YWJsZVJvd3M/OiBudW1iZXI7XHJcbiAgc2VsZWN0aW9uUHJvcGVydHk/OiBzdHJpbmc7XHJcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XHJcbiAgc2VsZWN0aW9uPzogU2VsZWN0aW9uTW9kZWw8YW55PjtcclxuICBzaG93Q2hlY2tib3hJbkhlYWRlcj86IGJvb2xlYW47XHJcbiAgaXNSb3dEaXNhYmxlZFByb3BlcnR5TmFtZT86IHN0cmluZztcclxuICBzZWxlY3RhYmxlUHJvcGVydHlOYW1lPzogc3RyaW5nO1xyXG4gIG9uU2VsZWN0aW9uPzogKHJvdzogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gIG9uQWxsU2VsZWN0aW9uPzogKHNlbGVjdGVkOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gIGFzeW5jT25FeHBhbmQ/OiBib29sZWFuO1xyXG4gIHJvd0V4cGFuZGVyPzogU21hcnRUYWJsZVJvd0V4cGFuZGVyPFQ+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGFibGVSb3dFeHBhbmRlcjxUPiB7XHJcbiAgZXhwYW5kKHJvd0lkOiBudW1iZXIpOiBUO1xyXG4gIGV4cGFuZEFzeW5jKHJvd0lkOiBudW1iZXIpOiBQcm9taXNlPFQ+O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU21hcnRUYWJsZTxUPiBpbXBsZW1lbnRzIFNtYXJ0VGFibGVJbnRlcmZhY2U8VD4ge1xyXG4gIHR5cGU6IFNtYXJ0VGFibGVJbnRlcmZhY2VUeXBlRW51bS5OT1JNQUwgPSBTbWFydFRhYmxlSW50ZXJmYWNlVHlwZUVudW0uTk9STUFMO1xyXG4gIHRpdGxlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHRhYmxlSGVhZGVyczogc3RyaW5nW107XHJcbiAgY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/OiBTbWFydFRhYmxlSGVhZGVyW107XHJcbiAgY3VzdG9tVGFibGVIZWFkZXJzITogc3RyaW5nW107XHJcbiAgdGFibGVSb3dzOiBUW107XHJcbiAgdGFibGVUeXBlOiBTbWFydFRhYmxlVHlwZTtcclxuICBzZWxlY3Rpb24/OiBTZWxlY3Rpb25Nb2RlbDxhbnk+O1xyXG4gIGlzTXVsdGlwbGU/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiBTbWFydFRhYmxlT3B0aW9uW107XHJcbiAgdGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24/OiBTbWFydFRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uO1xyXG4gIG9uUm93Q2xpY2s/OiAocm93OiBUKSA9PiB2b2lkO1xyXG4gIG9uUm93RG91YmxlQ2xpY2s/OiAocm93OiBUKSA9PiB2b2lkO1xyXG4gIGRlZmF1bHRBY3Rpb25Db2Rlcz86IHN0cmluZ1tdO1xyXG4gIGRlZmF1bHRBY3Rpb25zPzogU21hcnRUYWJsZUJ1dHRvbltdO1xyXG4gIGhpZ2hsaWdodE9uUm93Q2xpY2s/OiBib29sZWFuO1xyXG4gIGhpZ2hsaWdodENsYXNzPzogc3RyaW5nO1xyXG4gIGhvdmVyPzogYm9vbGVhbjtcclxuICBleHBhbmRhYmxlPzogYm9vbGVhbjtcclxuICBleHBhbmRlZENvbXBvbmVudD86IGFueTtcclxuICBhc3luY09uRXhwYW5kPzogYm9vbGVhbjtcclxuICBzb3J0SWNvbkFzYz86IHN0cmluZztcclxuICBzb3J0SWNvbkRlc2M/OiBzdHJpbmc7XHJcbiAgc29ydEljb25OZXV0cmFsPzogc3RyaW5nO1xyXG4gIHNvcnRhYmxlPzogYm9vbGVhbjtcclxuICBtYXhOdW1PZlNlbGVjdGFibGVSb3dzPzogbnVtYmVyO1xyXG4gIHNlbGVjdGlvblByb3BlcnR5Pzogc3RyaW5nO1xyXG4gIGlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XHJcbiAgc2VsZWN0YWJsZVByb3BlcnR5TmFtZT86IHN0cmluZztcclxuICBvblNlbGVjdGlvbj86IChyb3c6IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcclxuICBvbkFsbFNlbGVjdGlvbj86IChzZWxlY3RlZDogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPjtcclxuICByb3dFeHBhbmRlcj86IFNtYXJ0VGFibGVSb3dFeHBhbmRlcjxUPjtcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlnOiBTbWFydFRhYmxlSW50ZXJmYWNlPFQ+KSB7XHJcbiAgICB0aGlzLmV4cGFuZGFibGUgPSBjb25maWcuZXhwYW5kYWJsZTtcclxuICAgIHRoaXMuZXhwYW5kZWRDb21wb25lbnQgPSBjb25maWcuZXhwYW5kZWRDb21wb25lbnQ7XHJcbiAgICB0aGlzLmFzeW5jT25FeHBhbmQgPSBjb25maWcuYXN5bmNPbkV4cGFuZDtcclxuXHJcbiAgICB0aGlzLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzID0gY29uZmlnLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzO1xyXG5cclxuICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcclxuICAgICAgdGhpcy5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8ucHVzaCh7XHJcbiAgICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICAgIHByb3BlcnR5TmFtZTogJ2V4cGFuZCcsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZVR5cGUgPSBjb25maWcudGFibGVUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuQ0hFQ0tfQk9YKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICAgICAgcHJvcGVydHlOYW1lOiAnc2VsZWN0JyxcclxuICAgICAgICAgIHNob3dDaGVja2JveEluSGVhZGVyOlxyXG4gICAgICAgICAgICB0eXBlb2YgY29uZmlnLnNob3dDaGVja2JveEluSGVhZGVyID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBjb25maWcuc2hvd0NoZWNrYm94SW5IZWFkZXIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzISxcclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLkNIRUNLX0JPWCB8fFxyXG4gICAgICB0aGlzLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuUk9XX1NFTEVDVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNNdWx0aXBsZSA9IGNvbmZpZy5pc011bHRpcGxlO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3Rpb25Qcm9wZXJ0eSA9IGNvbmZpZy5zZWxlY3Rpb25Qcm9wZXJ0eTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gPSBjb25maWcuc2VsZWN0aW9uID8/IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0aGlzLmlzTXVsdGlwbGUsIFtdKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhYmxlSGVhZGVycyA9IHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShjb25maWcudGFibGVSb3dzWzBdKTtcclxuXHJcbiAgICB0aGlzLnNldFRhYmxlSGVhZGVycygpO1xyXG5cclxuICAgIHRoaXMudGFibGVSb3dzID0gY29uZmlnLnRhYmxlUm93cztcclxuICAgIHRoaXMudGl0bGUgPSBjb25maWcudGl0bGU7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBjb25maWcub3B0aW9ucztcclxuICAgIHRoaXMudGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24gPSBjb25maWcudGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb247XHJcbiAgICB0aGlzLm9uUm93Q2xpY2sgPSBjb25maWcub25Sb3dDbGljaztcclxuICAgIHRoaXMub25Sb3dEb3VibGVDbGljayA9IGNvbmZpZy5vblJvd0RvdWJsZUNsaWNrO1xyXG4gICAgdGhpcy5kZWZhdWx0QWN0aW9ucyA9IGNvbmZpZy5kZWZhdWx0QWN0aW9ucztcclxuICAgIHRoaXMuZGVmYXVsdEFjdGlvbkNvZGVzID0gY29uZmlnLmRlZmF1bHRBY3Rpb25Db2RlcztcclxuICAgIHRoaXMuaGlnaGxpZ2h0T25Sb3dDbGljayA9IGNvbmZpZy5oaWdobGlnaHRPblJvd0NsaWNrO1xyXG4gICAgdGhpcy5oaWdobGlnaHRDbGFzcyA9IGNvbmZpZy5oaWdobGlnaHRDbGFzcztcclxuICAgIHRoaXMuaG92ZXIgPSBjb25maWcuaG92ZXI7XHJcbiAgICB0aGlzLnNvcnRJY29uQXNjID0gY29uZmlnLnNvcnRJY29uQXNjO1xyXG4gICAgdGhpcy5zb3J0SWNvbkRlc2MgPSBjb25maWcuc29ydEljb25EZXNjO1xyXG4gICAgdGhpcy5zb3J0SWNvbk5ldXRyYWwgPSBjb25maWcuc29ydEljb25OZXV0cmFsO1xyXG4gICAgdGhpcy5zb3J0YWJsZSA9IGNvbmZpZy5zb3J0YWJsZTtcclxuICAgIHRoaXMubWF4TnVtT2ZTZWxlY3RhYmxlUm93cyA9IGNvbmZpZy5tYXhOdW1PZlNlbGVjdGFibGVSb3dzO1xyXG4gICAgdGhpcy5pc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lID0gY29uZmlnLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWU7XHJcbiAgICB0aGlzLnNlbGVjdGFibGVQcm9wZXJ0eU5hbWUgPSBjb25maWcuc2VsZWN0YWJsZVByb3BlcnR5TmFtZTtcclxuICAgIHRoaXMub25TZWxlY3Rpb24gPSBjb25maWcub25TZWxlY3Rpb247XHJcbiAgICB0aGlzLm9uQWxsU2VsZWN0aW9uID0gY29uZmlnLm9uQWxsU2VsZWN0aW9uO1xyXG4gICAgdGhpcy5yb3dFeHBhbmRlciA9IGNvbmZpZy5yb3dFeHBhbmRlcjtcclxuXHJcbiAgICB0aGlzLnB1c2hPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9wZXJ0eU5hbWVzRGVlcGx5KGVsZW1lbnQ6IGFueSk6IHN0cmluZ1tdIHtcclxuICAgIGlmIChlbGVtZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhlbGVtZW50KTtcclxuICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsZW1lbnQgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ3N0cmluZycgfHxcclxuICAgICAgICB0eXBlb2YgZWxlbWVudFtwcm9wZXJ0eV0gPT09ICdib29sZWFuJyB8fFxyXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ251bWJlcicgfHxcclxuICAgICAgICBlbGVtZW50W3Byb3BlcnR5XSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPT09IG51bGwgfHxcclxuICAgICAgICAhZWxlbWVudFtwcm9wZXJ0eV0gfHxcclxuICAgICAgICAhZWxlbWVudFxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGlubmVyUHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShlbGVtZW50W3Byb3BlcnR5XSk7XHJcbiAgICAgIHByb3BlcnRpZXMucHVzaCguLi5pbm5lclByb3BlcnRpZXMpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJvcGVydGllcztcclxuICB9XHJcblxyXG4gIGdldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcclxuICAgIGxldCBzcGxpdHRlZEtleSA9IGtleS5zcGxpdCgnLicpO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcblxyXG4gICAgc3BsaXR0ZWRLZXkuZm9yRWFjaCgoazogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB2YWx1ZSA9IG1vZGVsW2tdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVba10gPT09IHVuZGVmaW5lZCB8fCB2YWx1ZVtrXSA9PT0gbnVsbCB8fCAhdmFsdWUpIHtcclxuICAgICAgICAgIHZhbHVlID0gJyc7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbHVlID0gdmFsdWVba107XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1c2hPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudGFibGVIZWFkZXJzLnB1c2goJ29wdGlvbnMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRhYmxlSGVhZGVycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmIHRoaXMuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBvcmlnaW5hbEhlYWRlcnMgPSB0aGlzLnRhYmxlSGVhZGVycztcclxuICAgICAgdGhpcy50YWJsZUhlYWRlcnMgPSBbXTtcclxuICAgICAgdGhpcy5jdXN0b21UYWJsZUhlYWRlcnMgPSBbXTtcclxuICAgICAgdGhpcy5jdXN0b21TbWFydFRhYmxlSGVhZGVycy5mb3JFYWNoKCh0YWJsZUhlYWRlcikgPT4ge1xyXG4gICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lLnNwbGl0KCcuJyk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcHJvcGVydHlOYW1lcy5maWx0ZXIoKHByb3BlcnR5KSA9PiBvcmlnaW5hbEhlYWRlcnMuaW5jbHVkZXMocHJvcGVydHkpKSAmJlxyXG4gICAgICAgICAgIXRhYmxlSGVhZGVyLmlzSGlkZGVuXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlSGVhZGVycy5wdXNoKHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICB0aGlzLmN1c3RvbVRhYmxlSGVhZGVycy5wdXNoKHRhYmxlSGVhZGVyLmxhYmVsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgdGFibGVIZWFkZXIuYnV0dG9ucyB8fFxyXG4gICAgICAgICAgdGFibGVIZWFkZXIuaWNvbiB8fFxyXG4gICAgICAgICAgdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSAnZXhwYW5kJyB8fFxyXG4gICAgICAgICAgdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSAnc2VsZWN0J1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZUhlYWRlcnMucHVzaCh0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5jdXN0b21UYWJsZUhlYWRlcnMucHVzaCh0YWJsZUhlYWRlci5sYWJlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tVGFibGVIZWFkZXJzID0gdGhpcy50YWJsZUhlYWRlcnM7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0YWJsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL3NtYXJ0dGFibGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzFELE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIseUNBQXVCLENBQUE7SUFDdkIsd0NBQXNCLENBQUE7SUFDdEIsMENBQXdCLENBQUE7QUFDMUIsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBUUQsTUFBTSxDQUFOLElBQVksNEJBS1g7QUFMRCxXQUFZLDRCQUE0QjtJQUN0QywrRUFBSSxDQUFBO0lBQ0osK0VBQUksQ0FBQTtJQUNKLHVGQUFRLENBQUE7SUFDUiwrRUFBSSxDQUFBO0FBQ04sQ0FBQyxFQUxXLDRCQUE0QixLQUE1Qiw0QkFBNEIsUUFLdkM7QUF1Q0QsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qiw4QkFBVyxDQUFBO0lBQ1gsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQWdCRCxNQUFNLENBQU4sSUFBWSxvQkFNWDtBQU5ELFdBQVksb0JBQW9CO0lBQzlCLHFDQUFhLENBQUE7SUFDYixxQ0FBYSxDQUFBO0lBQ2IseUNBQWlCLENBQUE7SUFDakIseUNBQWlCLENBQUE7SUFDakIsK0NBQXVCLENBQUE7QUFDekIsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0I7QUFFRCxNQUFNLENBQU4sSUFBWSwrQkFHWDtBQUhELFdBQVksK0JBQStCO0lBQ3pDLGlHQUFVLENBQUE7SUFDViw2RkFBUSxDQUFBO0FBQ1YsQ0FBQyxFQUhXLCtCQUErQixLQUEvQiwrQkFBK0IsUUFHMUM7QUFN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QUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUM3QztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcblxyXG5leHBvcnQgZW51bSBTbWFydFRhYmxlVHlwZSB7XHJcbiAgSU5IRVJJVEVEID0gJ0luaGVyaXRlZCcsXHJcbiAgQ0hFQ0tfQk9YID0gJ0NoZWNrQm94JyxcclxuICBST1dfU0VMRUNUID0gJ1Jvd1NlbGVjdCcsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUYWJsZU9wdGlvbiB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGNhbGxiYWNrOiAoaWQ6IHN0cmluZykgPT4gYW55O1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlIHtcclxuICBEQVRFLFxyXG4gIFRJTUUsXHJcbiAgREFURVRJTUUsXHJcbiAgSUNPTixcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRhYmxlSGVhZGVySWNvbnMge1xyXG4gIGljb246IHN0cmluZztcclxuICBjb2xvcjogVGhlbWVQYWxldHRlO1xyXG4gIHNob3dJY29uSWZWYWx1ZUVxdWFsc1dpdGhTdHJpbmc/OiBzdHJpbmc7XHJcbiAgc2hvd0ljb25JZlZhbHVlRXF1YWxzV2l0aE51bWJlcj86IG51bWJlcjtcclxuICBzaG93SWNvbklmVmFsdWVTbWFsbGVyVGhhbk51bWJlcj86IG51bWJlcjtcclxuICBzaG93SWNvbklmVmFsdWVCaWdnZXJUaGFuTnVtYmVyPzogbnVtYmVyO1xyXG4gIHNob3dJY29uSWZWYWx1ZUJvb2xlYW4/OiBib29sZWFuO1xyXG4gIHNob3dJY29uSWZWYWx1ZU51bGw/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUYWJsZUhlYWRlclByb3BlcnRpZXMge1xyXG4gIHR5cGU6IFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGU7XHJcbiAgZGF0ZUZvcm1hdD86IHN0cmluZztcclxuICBpY29ucz86IFNtYXJ0VGFibGVIZWFkZXJJY29uc1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGFibGVJY29uIHtcclxuICBpY29uOiBzdHJpbmc7XHJcbiAgY29sb3I/OiBUaGVtZVBhbGV0dGU7XHJcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUYWJsZUhlYWRlciB7XHJcbiAgcHJvcGVydHlOYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpc0hpZGRlbj86IGJvb2xlYW47XHJcbiAgcHJvcGVydGllcz86IFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0aWVzO1xyXG4gIGJ1dHRvbnM/OiBTbWFydFRhYmxlQnV0dG9uW107XHJcbiAgaWNvbj86IFNtYXJ0VGFibGVJY29uO1xyXG4gIHRyYW5zbGF0b3I/OiAoKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZykgfCAoKHZhbHVlOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPik7XHJcbiAgc2hvd0NoZWNrYm94SW5IZWFkZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIG9yZGVyPzogU21hcnRUYWJsZU9yZGVyO1xyXG4gIG9yZGVyTnVtYmVyPzogbnVtYmVyO1xyXG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTbWFydFRhYmxlT3JkZXIge1xyXG4gIEFTQyA9ICdBU0MnLFxyXG4gIERFU0MgPSAnREVTQycsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUYWJsZUJ1dHRvbiB7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBsYWJlbD86IHN0cmluZztcclxuICBjb2xvcj86IFRoZW1lUGFsZXR0ZTtcclxuICBjb2RlPzogc3RyaW5nO1xyXG4gIHR5cGU6IFNtYXJ0VGFibGVCdXR0b25UeXBlO1xyXG4gIG1lbnVJdGVtQnV0dG9ucz86IFNtYXJ0VGFibGVCdXR0b25bXTtcclxuICBtZW51SXRlbUJ1dHRvbnNQcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XHJcbiAgdHJhbnNsYXRvcj86ICgobGFiZWw6IHN0cmluZykgPT4gc3RyaW5nKSB8ICgobGFiZWw6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+KTtcclxuICBjYWxsYmFjaz86ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xyXG4gIGFyZ3M/OiBhbnlbXTtcclxuICBzaG93QnV0dG9uSWY/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFNtYXJ0VGFibGVCdXR0b25UeXBlIHtcclxuICBNRU5VID0gJ01FTlUnLFxyXG4gIElDT04gPSAnSUNPTicsXHJcbiAgTk9STUFMID0gJ05PUk1BTCcsXHJcbiAgUkFJU0VEID0gJ1JBSVNFRCcsXHJcbiAgU0VQQVJBVE9SID0gJ1NFUEFSQVRPUicsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24ge1xyXG4gIEhPUklaT05UQUwsXHJcbiAgVkVSVElDQUwsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgU21hcnRUYWJsZUludGVyZmFjZVR5cGU8VD4gPVxyXG4gIHwgU21hcnRUYWJsZUludGVyZmFjZTxUPlxyXG4gIHwgU21hcnRUYWJsZUdyaWRJbnRlcmZhY2U8VD47XHJcblxyXG5leHBvcnQgZW51bSBTbWFydFRhYmxlSW50ZXJmYWNlVHlwZUVudW0ge1xyXG4gIE5PUk1BTCxcclxuICBHUklELFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0VGFibGVJbnRlcmZhY2U8VD4ge1xyXG4gIHR5cGU6IFNtYXJ0VGFibGVJbnRlcmZhY2VUeXBlRW51bS5OT1JNQUw7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgdGFibGVIZWFkZXJzPzogc3RyaW5nW107XHJcbiAgY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/OiBTbWFydFRhYmxlSGVhZGVyW107XHJcbiAgY3VzdG9tVGFibGVIZWFkZXJzPzogc3RyaW5nW107XHJcbiAgdGFibGVSb3dzOiBUW107XHJcbiAgdGFibGVUeXBlOiBTbWFydFRhYmxlVHlwZTtcclxuICBvcHRpb25zPzogU21hcnRUYWJsZU9wdGlvbltdO1xyXG4gIHRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uPzogU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbjtcclxuICBvblJvd0NsaWNrPzogKHJvdzogVCkgPT4gdm9pZDtcclxuICBvblJvd0RvdWJsZUNsaWNrPzogKHJvdzogVCkgPT4gdm9pZDtcclxuICBkZWZhdWx0QWN0aW9uQ29kZXM/OiBzdHJpbmdbXTtcclxuICBkZWZhdWx0QWN0aW9ucz86IFNtYXJ0VGFibGVCdXR0b25bXTtcclxuICBoaWdobGlnaHRPblJvd0NsaWNrPzogYm9vbGVhbjtcclxuICBoaWdobGlnaHRDbGFzcz86IHN0cmluZztcclxuICBob3Zlcj86IGJvb2xlYW47XHJcbiAgZXhwYW5kYWJsZT86IGJvb2xlYW47XHJcbiAgZXhwYW5kZWRDb21wb25lbnQ/OiBhbnk7XHJcbiAgYXN5bmNPbkV4cGFuZD86IGJvb2xlYW47XHJcbiAgc29ydEljb25Bc2M/OiBzdHJpbmc7XHJcbiAgc29ydEljb25EZXNjPzogc3RyaW5nO1xyXG4gIHNvcnRJY29uTmV1dHJhbD86IHN0cmluZztcclxuICBzb3J0YWJsZT86IGJvb2xlYW47XHJcbiAgbWF4TnVtT2ZTZWxlY3RhYmxlUm93cz86IG51bWJlcjtcclxuICBzZWxlY3Rpb25Qcm9wZXJ0eT86IHN0cmluZztcclxuICBpc011bHRpcGxlPzogYm9vbGVhbjtcclxuICBzZWxlY3Rpb24/OiBTZWxlY3Rpb25Nb2RlbDxhbnk+O1xyXG4gIHNob3dDaGVja2JveEluSGVhZGVyPzogYm9vbGVhbjtcclxuICBpc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lPzogc3RyaW5nO1xyXG4gIHNlbGVjdGFibGVQcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XHJcbiAgb25TZWxlY3Rpb24/OiAocm93OiBhbnkpID0+IFByb21pc2U8dm9pZD47XHJcbiAgb25BbGxTZWxlY3Rpb24/OiAoc2VsZWN0ZWQ6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XHJcbiAgcm93RXhwYW5kZXI/OiBTbWFydFRhYmxlUm93RXhwYW5kZXI8VD47XHJcbiAgaGlnaGxpZ2h0UHJvcGVydHk/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydFRhYmxlR3JpZEludGVyZmFjZTxUPiB7XHJcbiAgdHlwZTogU21hcnRUYWJsZUludGVyZmFjZVR5cGVFbnVtLkdSSUQ7XHJcbiAgY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/OiBTbWFydFRhYmxlSGVhZGVyW107XHJcbiAgdGFibGVUeXBlOiBTbWFydFRhYmxlVHlwZTtcclxuICBvcHRpb25zPzogU21hcnRUYWJsZU9wdGlvbltdO1xyXG4gIHRhYmxlT3B0aW9uQnV0dG9uRGlyZWN0aW9uPzogU21hcnRUYWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbjtcclxuICBvblJvd0NsaWNrPzogKHJvdzogVCkgPT4gdm9pZDtcclxuICBvblJvd0RvdWJsZUNsaWNrPzogKHJvdzogVCkgPT4gdm9pZDtcclxuICBkZWZhdWx0QWN0aW9uQ29kZXM/OiBzdHJpbmdbXTtcclxuICBkZWZhdWx0QWN0aW9ucz86IFNtYXJ0VGFibGVCdXR0b25bXTtcclxuICBoaWdobGlnaHRPblJvd0NsaWNrPzogYm9vbGVhbjtcclxuICBoaWdobGlnaHRDbGFzcz86IHN0cmluZztcclxuICBob3Zlcj86IGJvb2xlYW47XHJcbiAgc29ydEljb25Bc2M/OiBzdHJpbmc7XHJcbiAgc29ydEljb25EZXNjPzogc3RyaW5nO1xyXG4gIHNvcnRJY29uTmV1dHJhbD86IHN0cmluZztcclxuICBzb3J0YWJsZT86IGJvb2xlYW47XHJcbiAgbWF4TnVtT2ZTZWxlY3RhYmxlUm93cz86IG51bWJlcjtcclxuICBzZWxlY3Rpb25Qcm9wZXJ0eT86IHN0cmluZztcclxuICBpc011bHRpcGxlPzogYm9vbGVhbjtcclxuICBzZWxlY3Rpb24/OiBTZWxlY3Rpb25Nb2RlbDxhbnk+O1xyXG4gIHNob3dDaGVja2JveEluSGVhZGVyPzogYm9vbGVhbjtcclxuICBpc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lPzogc3RyaW5nO1xyXG4gIHNlbGVjdGFibGVQcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XHJcbiAgb25TZWxlY3Rpb24/OiAocm93OiBhbnkpID0+IFByb21pc2U8dm9pZD47XHJcbiAgb25BbGxTZWxlY3Rpb24/OiAoc2VsZWN0ZWQ6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XHJcbiAgYXN5bmNPbkV4cGFuZD86IGJvb2xlYW47XHJcbiAgcm93RXhwYW5kZXI/OiBTbWFydFRhYmxlUm93RXhwYW5kZXI8VD47XHJcbiAgaGlnaGxpZ2h0UHJvcGVydHk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUYWJsZVJvd0V4cGFuZGVyPFQ+IHtcclxuICBleHBhbmQocm93SWQ6IG51bWJlcik6IFQ7XHJcbiAgZXhwYW5kQXN5bmMocm93SWQ6IG51bWJlcik6IFByb21pc2U8VD47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTbWFydFRhYmxlPFQ+IGltcGxlbWVudHMgU21hcnRUYWJsZUludGVyZmFjZTxUPiB7XHJcbiAgdHlwZTogU21hcnRUYWJsZUludGVyZmFjZVR5cGVFbnVtLk5PUk1BTCA9IFNtYXJ0VGFibGVJbnRlcmZhY2VUeXBlRW51bS5OT1JNQUw7XHJcbiAgdGl0bGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgdGFibGVIZWFkZXJzOiBzdHJpbmdbXTtcclxuICBjdXN0b21TbWFydFRhYmxlSGVhZGVycz86IFNtYXJ0VGFibGVIZWFkZXJbXTtcclxuICBjdXN0b21UYWJsZUhlYWRlcnMhOiBzdHJpbmdbXTtcclxuICB0YWJsZVJvd3M6IFRbXTtcclxuICB0YWJsZVR5cGU6IFNtYXJ0VGFibGVUeXBlO1xyXG4gIHNlbGVjdGlvbj86IFNlbGVjdGlvbk1vZGVsPGFueT47XHJcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XHJcbiAgb3B0aW9ucz86IFNtYXJ0VGFibGVPcHRpb25bXTtcclxuICB0YWJsZU9wdGlvbkJ1dHRvbkRpcmVjdGlvbj86IFNtYXJ0VGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb247XHJcbiAgb25Sb3dDbGljaz86IChyb3c6IFQpID0+IHZvaWQ7XHJcbiAgb25Sb3dEb3VibGVDbGljaz86IChyb3c6IFQpID0+IHZvaWQ7XHJcbiAgZGVmYXVsdEFjdGlvbkNvZGVzPzogc3RyaW5nW107XHJcbiAgZGVmYXVsdEFjdGlvbnM/OiBTbWFydFRhYmxlQnV0dG9uW107XHJcbiAgaGlnaGxpZ2h0T25Sb3dDbGljaz86IGJvb2xlYW47XHJcbiAgaGlnaGxpZ2h0Q2xhc3M/OiBzdHJpbmc7XHJcbiAgaG92ZXI/OiBib29sZWFuO1xyXG4gIGV4cGFuZGFibGU/OiBib29sZWFuO1xyXG4gIGV4cGFuZGVkQ29tcG9uZW50PzogYW55O1xyXG4gIGFzeW5jT25FeHBhbmQ/OiBib29sZWFuO1xyXG4gIHNvcnRJY29uQXNjPzogc3RyaW5nO1xyXG4gIHNvcnRJY29uRGVzYz86IHN0cmluZztcclxuICBzb3J0SWNvbk5ldXRyYWw/OiBzdHJpbmc7XHJcbiAgc29ydGFibGU/OiBib29sZWFuO1xyXG4gIG1heE51bU9mU2VsZWN0YWJsZVJvd3M/OiBudW1iZXI7XHJcbiAgc2VsZWN0aW9uUHJvcGVydHk/OiBzdHJpbmc7XHJcbiAgaXNSb3dEaXNhYmxlZFByb3BlcnR5TmFtZT86IHN0cmluZztcclxuICBzZWxlY3RhYmxlUHJvcGVydHlOYW1lPzogc3RyaW5nO1xyXG4gIG9uU2VsZWN0aW9uPzogKHJvdzogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gIG9uQWxsU2VsZWN0aW9uPzogKHNlbGVjdGVkOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+O1xyXG4gIHJvd0V4cGFuZGVyPzogU21hcnRUYWJsZVJvd0V4cGFuZGVyPFQ+O1xyXG4gIGhpZ2hsaWdodFByb3BlcnR5Pzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFNtYXJ0VGFibGVJbnRlcmZhY2U8VD4pIHtcclxuICAgIHRoaXMuZXhwYW5kYWJsZSA9IGNvbmZpZy5leHBhbmRhYmxlO1xyXG4gICAgdGhpcy5leHBhbmRlZENvbXBvbmVudCA9IGNvbmZpZy5leHBhbmRlZENvbXBvbmVudDtcclxuICAgIHRoaXMuYXN5bmNPbkV4cGFuZCA9IGNvbmZpZy5hc3luY09uRXhwYW5kO1xyXG4gICAgdGhpcy5oaWdobGlnaHRQcm9wZXJ0eSA9IGNvbmZpZy5oaWdobGlnaHRQcm9wZXJ0eTtcclxuXHJcbiAgICB0aGlzLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzID0gY29uZmlnLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzO1xyXG5cclxuICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcclxuICAgICAgdGhpcy5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8ucHVzaCh7XHJcbiAgICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICAgIHByb3BlcnR5TmFtZTogJ2V4cGFuZCcsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZVR5cGUgPSBjb25maWcudGFibGVUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuQ0hFQ0tfQk9YKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICAgICAgcHJvcGVydHlOYW1lOiAnc2VsZWN0JyxcclxuICAgICAgICAgIHNob3dDaGVja2JveEluSGVhZGVyOlxyXG4gICAgICAgICAgICB0eXBlb2YgY29uZmlnLnNob3dDaGVja2JveEluSGVhZGVyID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBjb25maWcuc2hvd0NoZWNrYm94SW5IZWFkZXIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzISxcclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy50YWJsZVR5cGUgPT09IFNtYXJ0VGFibGVUeXBlLkNIRUNLX0JPWCB8fFxyXG4gICAgICB0aGlzLnRhYmxlVHlwZSA9PT0gU21hcnRUYWJsZVR5cGUuUk9XX1NFTEVDVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNNdWx0aXBsZSA9IGNvbmZpZy5pc011bHRpcGxlO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3Rpb25Qcm9wZXJ0eSA9IGNvbmZpZy5zZWxlY3Rpb25Qcm9wZXJ0eTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gPSBjb25maWcuc2VsZWN0aW9uID8/IG5ldyBTZWxlY3Rpb25Nb2RlbDxUPih0aGlzLmlzTXVsdGlwbGUsIFtdKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhYmxlSGVhZGVycyA9IHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShjb25maWcudGFibGVSb3dzWzBdKTtcclxuXHJcbiAgICB0aGlzLnNldFRhYmxlSGVhZGVycygpO1xyXG5cclxuICAgIHRoaXMudGFibGVSb3dzID0gY29uZmlnLnRhYmxlUm93cztcclxuICAgIHRoaXMudGl0bGUgPSBjb25maWcudGl0bGU7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBjb25maWcub3B0aW9ucztcclxuICAgIHRoaXMudGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb24gPSBjb25maWcudGFibGVPcHRpb25CdXR0b25EaXJlY3Rpb247XHJcbiAgICB0aGlzLm9uUm93Q2xpY2sgPSBjb25maWcub25Sb3dDbGljaztcclxuICAgIHRoaXMub25Sb3dEb3VibGVDbGljayA9IGNvbmZpZy5vblJvd0RvdWJsZUNsaWNrO1xyXG4gICAgdGhpcy5kZWZhdWx0QWN0aW9ucyA9IGNvbmZpZy5kZWZhdWx0QWN0aW9ucztcclxuICAgIHRoaXMuZGVmYXVsdEFjdGlvbkNvZGVzID0gY29uZmlnLmRlZmF1bHRBY3Rpb25Db2RlcztcclxuICAgIHRoaXMuaGlnaGxpZ2h0T25Sb3dDbGljayA9IGNvbmZpZy5oaWdobGlnaHRPblJvd0NsaWNrO1xyXG4gICAgdGhpcy5oaWdobGlnaHRDbGFzcyA9IGNvbmZpZy5oaWdobGlnaHRDbGFzcztcclxuICAgIHRoaXMuaG92ZXIgPSBjb25maWcuaG92ZXI7XHJcbiAgICB0aGlzLnNvcnRJY29uQXNjID0gY29uZmlnLnNvcnRJY29uQXNjO1xyXG4gICAgdGhpcy5zb3J0SWNvbkRlc2MgPSBjb25maWcuc29ydEljb25EZXNjO1xyXG4gICAgdGhpcy5zb3J0SWNvbk5ldXRyYWwgPSBjb25maWcuc29ydEljb25OZXV0cmFsO1xyXG4gICAgdGhpcy5zb3J0YWJsZSA9IGNvbmZpZy5zb3J0YWJsZTtcclxuICAgIHRoaXMubWF4TnVtT2ZTZWxlY3RhYmxlUm93cyA9IGNvbmZpZy5tYXhOdW1PZlNlbGVjdGFibGVSb3dzO1xyXG4gICAgdGhpcy5pc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lID0gY29uZmlnLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWU7XHJcbiAgICB0aGlzLnNlbGVjdGFibGVQcm9wZXJ0eU5hbWUgPSBjb25maWcuc2VsZWN0YWJsZVByb3BlcnR5TmFtZTtcclxuICAgIHRoaXMub25TZWxlY3Rpb24gPSBjb25maWcub25TZWxlY3Rpb247XHJcbiAgICB0aGlzLm9uQWxsU2VsZWN0aW9uID0gY29uZmlnLm9uQWxsU2VsZWN0aW9uO1xyXG4gICAgdGhpcy5yb3dFeHBhbmRlciA9IGNvbmZpZy5yb3dFeHBhbmRlcjtcclxuXHJcbiAgICB0aGlzLnB1c2hPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9wZXJ0eU5hbWVzRGVlcGx5KGVsZW1lbnQ6IGFueSk6IHN0cmluZ1tdIHtcclxuICAgIGlmIChlbGVtZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhlbGVtZW50KTtcclxuICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsZW1lbnQgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ3N0cmluZycgfHxcclxuICAgICAgICB0eXBlb2YgZWxlbWVudFtwcm9wZXJ0eV0gPT09ICdib29sZWFuJyB8fFxyXG4gICAgICAgIHR5cGVvZiBlbGVtZW50W3Byb3BlcnR5XSA9PT0gJ251bWJlcicgfHxcclxuICAgICAgICBlbGVtZW50W3Byb3BlcnR5XSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPT09IG51bGwgfHxcclxuICAgICAgICAhZWxlbWVudFtwcm9wZXJ0eV0gfHxcclxuICAgICAgICAhZWxlbWVudFxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGlubmVyUHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydHlOYW1lc0RlZXBseShlbGVtZW50W3Byb3BlcnR5XSk7XHJcbiAgICAgIHByb3BlcnRpZXMucHVzaCguLi5pbm5lclByb3BlcnRpZXMpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJvcGVydGllcztcclxuICB9XHJcblxyXG4gIGdldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcclxuICAgIGxldCBzcGxpdHRlZEtleSA9IGtleS5zcGxpdCgnLicpO1xyXG4gICAgbGV0IHZhbHVlOiBhbnk7XHJcblxyXG4gICAgc3BsaXR0ZWRLZXkuZm9yRWFjaCgoazogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB2YWx1ZSA9IG1vZGVsW2tdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVba10gPT09IHVuZGVmaW5lZCB8fCB2YWx1ZVtrXSA9PT0gbnVsbCB8fCAhdmFsdWUpIHtcclxuICAgICAgICAgIHZhbHVlID0gJyc7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbHVlID0gdmFsdWVba107XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1c2hPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudGFibGVIZWFkZXJzLnB1c2goJ29wdGlvbnMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRhYmxlSGVhZGVycygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmIHRoaXMuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBvcmlnaW5hbEhlYWRlcnMgPSB0aGlzLnRhYmxlSGVhZGVycztcclxuICAgICAgdGhpcy50YWJsZUhlYWRlcnMgPSBbXTtcclxuICAgICAgdGhpcy5jdXN0b21UYWJsZUhlYWRlcnMgPSBbXTtcclxuICAgICAgdGhpcy5jdXN0b21TbWFydFRhYmxlSGVhZGVycy5mb3JFYWNoKCh0YWJsZUhlYWRlcikgPT4ge1xyXG4gICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gdGFibGVIZWFkZXIucHJvcGVydHlOYW1lLnNwbGl0KCcuJyk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcHJvcGVydHlOYW1lcy5maWx0ZXIoKHByb3BlcnR5KSA9PiBvcmlnaW5hbEhlYWRlcnMuaW5jbHVkZXMocHJvcGVydHkpKSAmJlxyXG4gICAgICAgICAgIXRhYmxlSGVhZGVyLmlzSGlkZGVuXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlSGVhZGVycy5wdXNoKHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICB0aGlzLmN1c3RvbVRhYmxlSGVhZGVycy5wdXNoKHRhYmxlSGVhZGVyLmxhYmVsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgdGFibGVIZWFkZXIuYnV0dG9ucyB8fFxyXG4gICAgICAgICAgdGFibGVIZWFkZXIuaWNvbiB8fFxyXG4gICAgICAgICAgdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSAnZXhwYW5kJyB8fFxyXG4gICAgICAgICAgdGFibGVIZWFkZXIucHJvcGVydHlOYW1lID09PSAnc2VsZWN0J1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZUhlYWRlcnMucHVzaCh0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5jdXN0b21UYWJsZUhlYWRlcnMucHVzaCh0YWJsZUhlYWRlci5sYWJlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tVGFibGVIZWFkZXJzID0gdGhpcy50YWJsZUhlYWRlcnM7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -18,7 +18,7 @@ export class MaterialTableComponent extends Table {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
MaterialTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MaterialTableComponent, deps: [{ token: i1.ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
-
MaterialTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MaterialTableComponent, selector: "lib-material-table", usesInheritance: true, ngImport: i0, template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isImageResource(element, header)\">\r\n <smart-icon\r\n [icon]=\"getImageResourceIcon(element, header)\"\r\n [color]=\"getImageResourceColor(element, header)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon *ngIf=\"btn.icon\" [icon]=\"btn.icon\"></smart-icon>\r\n {{ btn.label }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getValue(element, button.menuItemButtonsPropertyName)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n >\r\n {{ button.translator!(btn) }}\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n <div *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\">\r\n <lib-default-actions-popup\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let element; columns: smartTable.tableHeaders\"\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"[\r\n isHighlighted(element) ? smartTable.highlightClass! : 'unselected',\r\n smartTable.hover ? 'smartTableRowHover' : '',\r\n isSelected(element) ? 'selected' : ''\r\n ]\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick(element)\"\r\n ></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:whitesmoke}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}\n"], components: [{ type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i8.DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: ["buttons", "row"] }, { type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatCellDef, selector: "[matCellDef]" }, { type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "smartDateTime": i10.SmartDateTimePipe, "smartDate": i10.SmartDatePipe, "smartTime": i10.SmartTimePipe }, animations: [
|
|
21
|
+
MaterialTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MaterialTableComponent, selector: "lib-material-table", usesInheritance: true, ngImport: i0, template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"isImageResource(element, header)\"\r\n [ngStyle]=\"getImageResourceStyle(element, header)\"\r\n >\r\n <smart-icon\r\n [icon]=\"getImageResourceIcon(element, header)\"\r\n [color]=\"getImageResourceColor(element, header)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon *ngIf=\"btn.icon\" [icon]=\"btn.icon\"></smart-icon>\r\n {{ btn.label }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getValue(element, button.menuItemButtonsPropertyName)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n >\r\n {{ button.translator!(btn) }}\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n <div *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\">\r\n <lib-default-actions-popup\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let element; columns: smartTable.tableHeaders\"\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"[\r\n isHighlighted(element) ? smartTable.highlightClass! : 'unselected',\r\n smartTable.hover ? 'smartTableRowHover' : '',\r\n isSelected(element) ? 'selected' : ''\r\n ]\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick(element)\"\r\n ></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:whitesmoke}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}\n"], components: [{ type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i8.DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: ["buttons", "row"] }, { type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], directives: [{ type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatCellDef, selector: "[matCellDef]" }, { type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "smartDateTime": i10.SmartDateTimePipe, "smartDate": i10.SmartDatePipe, "smartTime": i10.SmartTimePipe }, animations: [
|
|
22
22
|
trigger('detailExpand', [
|
|
23
23
|
state('collapsed', style({ height: '0px', minHeight: '0' })),
|
|
24
24
|
state('expanded', style({ height: '*' })),
|
|
@@ -33,6 +33,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
33
33
|
state('expanded', style({ height: '*' })),
|
|
34
34
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
35
35
|
]),
|
|
36
|
-
], template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isImageResource(element, header)\">\r\n <smart-icon\r\n [icon]=\"getImageResourceIcon(element, header)\"\r\n [color]=\"getImageResourceColor(element, header)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon *ngIf=\"btn.icon\" [icon]=\"btn.icon\"></smart-icon>\r\n {{ btn.label }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getValue(element, button.menuItemButtonsPropertyName)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n >\r\n {{ button.translator!(btn) }}\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n <div *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\">\r\n <lib-default-actions-popup\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let element; columns: smartTable.tableHeaders\"\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"[\r\n isHighlighted(element) ? smartTable.highlightClass! : 'unselected',\r\n smartTable.hover ? 'smartTableRowHover' : '',\r\n isSelected(element) ? 'selected' : ''\r\n ]\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick(element)\"\r\n ></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:whitesmoke}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}\n"] }]
|
|
36
|
+
], template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"isImageResource(element, header)\"\r\n [ngStyle]=\"getImageResourceStyle(element, header)\"\r\n >\r\n <smart-icon\r\n [icon]=\"getImageResourceIcon(element, header)\"\r\n [color]=\"getImageResourceColor(element, header)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element) : '') }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon *ngIf=\"btn.icon\" [icon]=\"btn.icon\"></smart-icon>\r\n {{ btn.label }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getValue(element, button.menuItemButtonsPropertyName)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n >\r\n {{ button.translator!(btn) }}\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n <div *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\">\r\n <lib-default-actions-popup\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let element; columns: smartTable.tableHeaders\"\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"[\r\n isHighlighted(element) ? smartTable.highlightClass! : 'unselected',\r\n smartTable.hover ? 'smartTableRowHover' : '',\r\n isSelected(element) ? 'selected' : ''\r\n ]\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick(element)\"\r\n ></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:whitesmoke}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}\n"] }]
|
|
37
37
|
}], ctorParameters: function () { return [{ type: i1.ComponentFactoryService }]; } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtdGFibGUvdGFibGVzL21hdGVyaWFsLXRhYmxlL21hdGVyaWFsLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL3RhYmxlcy9tYXRlcmlhbC10YWJsZS9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBZWpGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxLQUFLO0lBQy9DLFlBQVksU0FBa0M7UUFDNUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7O21IQUhVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLGlGQ2pCbkMsdThaQXlUQSw4L0dEaFRjO1FBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUN0QixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN6QyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDdEYsQ0FBQztLQUNIOzJGQUVVLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEI7d0JBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTs0QkFDdEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDOzRCQUM1RCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDOzRCQUN6QyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7eUJBQ3RGLENBQUM7cUJBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbWF0ZXJpYWwtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LmNzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxyXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgVGFibGUge1xyXG4gIGNvbnN0cnVjdG9yKGNmU2VydmljZTogQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNmU2VydmljZSk7XHJcbiAgfVxyXG59XHJcbiIsIjx0YWJsZVxyXG4gICNteVRhYmxlXHJcbiAgbWF0LXRhYmxlXHJcbiAgW2RhdGFTb3VyY2VdPVwic21hcnRUYWJsZS50YWJsZVJvd3NcIlxyXG4gIGNsYXNzPVwiZnVsbC13aWR0aFwiXHJcbiAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXHJcbj5cclxuICA8IS0tIENvbHVtbiBEZXNjcmlwdG9yIC0tPlxyXG4gIDxuZy1jb250YWluZXJcclxuICAgICpuZ0Zvcj1cImxldCBoZWFkZXIgb2Ygc21hcnRUYWJsZS50YWJsZUhlYWRlcnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgbWF0Q29sdW1uRGVmPVwie3sgaGVhZGVyIH19XCJcclxuICA+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJoZWFkZXIgPT09ICdpY29uJyB8fCBoZWFkZXIgPT09ICdpbWcnIHx8IGhlYWRlciA9PT0gJ29wdGlvbnMnIHx8IGhlYWRlciA9PT0gJ2J1dHRvbidcIlxyXG4gICAgICA+PC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIgPT09ICdzZWxlY3QnXCI+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgKm5nSWY9XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzIVtpXS5zaG93Q2hlY2tib3hJbkhlYWRlclwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHRvZ2dsZUFsbFJvd3MoKSA6IG51bGxcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic21hcnRUYWJsZS5zZWxlY3Rpb24hLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNtYXJ0VGFibGUuc2VsZWN0aW9uIS5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY2hlY2tib3hMYWJlbCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzIVtpXS5zaG93Q2hlY2tib3hJbkhlYWRlclwiPlxyXG4gICAgICAgICAge3sgc21hcnRUYWJsZS5jdXN0b21UYWJsZUhlYWRlcnNbaV0gfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgaGVhZGVyICE9PSAnaWNvbicgJiZcclxuICAgICAgICAgIGhlYWRlciAhPT0gJ2ltZycgJiZcclxuICAgICAgICAgIGhlYWRlciAhPT0gJ29wdGlvbnMnICYmXHJcbiAgICAgICAgICBoZWFkZXIgIT09ICdidXR0b24nICYmXHJcbiAgICAgICAgICBoZWFkZXIgIT09ICdzZWxlY3QnICYmXHJcbiAgICAgICAgICBoZWFkZXIgIT09ICdleHBhbmQnICYmXHJcbiAgICAgICAgICBoZWFkZXIgIT09ICdhY3Rpb25zJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5zb3J0YWJsZTsgdGhlbiBzb3J0YWJsZTsgZWxzZSBub3RTb3J0YWJsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc29ydGFibGU+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzb3J0QnV0dG9uQ2xpY2tlZCgkZXZlbnQsIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMhW2ldKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic21hcnRUYWJsZS5zb3J0YWJsZSAmJiBpc1NvcnRhYmxlKHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMhW2ldKVwiXHJcbiAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJzb3J0YWJsZUhlYWRlckJ1dHRvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHNtYXJ0VGFibGUuY3VzdG9tVGFibGVIZWFkZXJzW2ldIH19XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0YWJsZUhlYWRlckJ1dHRvbkljb25cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZ2V0U29ydEljb24oaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJzb3J0XCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJnZXRTb3J0SWNvbihoZWFkZXIpIVwiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0YWJsZUhlYWRlckJ1dHRvbkljb25cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzU29ydE51bUljb24oaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJzb3J0XCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJnZXRTb3J0TnVtSWNvbihoZWFkZXIpXCJcclxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cclxuICAgICAgICAgIHt7IHNtYXJ0VGFibGUuY3VzdG9tVGFibGVIZWFkZXJzW2ldIH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbbmdDbGFzc109XCJpc0Rpc2FibGVkKGVsZW1lbnQpID8gJ2Rpc2FibGVkUm93JyA6ICcnXCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyAmJlxyXG4gICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0eU5hbWUgPT09ICdzZWxlY3QnICYmXHJcbiAgICAgICAgICAhaXNEaXNhYmxlZChlbGVtZW50KVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICRldmVudFxyXG4gICAgICAgICAgICA/IHNldFNlbGVjdGlvbihcclxuICAgICAgICAgICAgICAgIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgICAgICAgICAgPyBzbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChlbGVtZW50KVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICBzbWFydFRhYmxlLnNlbGVjdGlvbiEuaXNTZWxlY3RlZChcclxuICAgICAgICAgICAgc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgICAgID8gc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCBzbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2FyaWEtbGFiZWxdPVwiXHJcbiAgICAgICAgICBjaGVja2JveExhYmVsKFxyXG4gICAgICAgICAgICBzbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICAgICAgPyBzbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgICAgOiBlbGVtZW50XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllc1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuREFURVRJTUVcIj5cclxuICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgIGdldFZhbHVlKGVsZW1lbnQsIGhlYWRlcilcclxuICAgICAgICAgICAgICB8IHNtYXJ0RGF0ZVRpbWUgOiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnRpZXM/LmRhdGVGb3JtYXRcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8udHlwZSA9PT0gdHlwZSgpLkRBVEVcIj5cclxuICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgIGdldFZhbHVlKGVsZW1lbnQsIGhlYWRlcilcclxuICAgICAgICAgICAgICB8IHNtYXJ0RGF0ZSA6IHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8uZGF0ZUZvcm1hdFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuVElNRVwiPlxyXG4gICAgICAgICAge3tcclxuICAgICAgICAgICAgZ2V0VmFsdWUoZWxlbWVudCwgaGVhZGVyKVxyXG4gICAgICAgICAgICAgIHwgc21hcnRUaW1lIDogc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy5kYXRlRm9ybWF0XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8udHlwZSA9PT0gdHlwZSgpLklDT04gJiZcclxuICAgICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy5pY29ucz8ubGVuZ3RoXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgIFtpY29uXT1cImdldEljb24oZ2V0VmFsdWUoZWxlbWVudCwgaGVhZGVyKSwgaSkhXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cImdldENvbG9yKGdldFZhbHVlKGVsZW1lbnQsIGhlYWRlciksIGkpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvc21hcnQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJpc0ltYWdlUmVzb3VyY2UoZWxlbWVudCwgaGVhZGVyKVwiPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICBbaWNvbl09XCJnZXRJbWFnZVJlc291cmNlSWNvbihlbGVtZW50LCBoZWFkZXIpXCJcclxuICAgICAgICAgIFtjb2xvcl09XCJnZXRJbWFnZVJlc291cmNlQ29sb3IoZWxlbWVudCwgaGVhZGVyKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvc21hcnQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgJiYgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5idXR0b25zXCJcclxuICAgICAgICBjbGFzcz1cInNtYXJ0LXRhYmxlLWJ1dHRvbnMtY29sXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmJ1dHRvbnNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QnV0dG9uKGJ1dHRvbiwgZWxlbWVudClcIiBbbmdTd2l0Y2hdPVwiYnV0dG9uLnR5cGVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCBlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInNtYXJ0VGFibGVCdXR0b25UeXBlLklDT05cIlxyXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzbWFydC1pY29uIHRpdGxlPVwie3sgYnV0dG9uLmxhYmVsIH19XCIgW2ljb25dPVwiYnV0dG9uLmljb24hXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCBlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInNtYXJ0VGFibGVCdXR0b25UeXBlLk5PUk1BTFwiXHJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwiYnV0dG9uLmljb25cIiBbaWNvbl09XCJidXR0b24uaWNvblwiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgPz8gKGJ1dHRvbi50cmFuc2xhdG9yID8gYnV0dG9uLnRyYW5zbGF0b3IoZWxlbWVudCkgOiAnJykgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tQnV0dG9uQ2xpY2tlZCgkZXZlbnQsIGJ1dHRvbiwgZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJzbWFydFRhYmxlQnV0dG9uVHlwZS5SQUlTRURcIlxyXG4gICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJ7eyBidXR0b24uY29sb3IgfX1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJidXR0b24uaWNvblwiIFtpY29uXT1cImJ1dHRvbi5pY29uXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAgICAgIHt7IGJ1dHRvbi5sYWJlbCA/PyAoYnV0dG9uLnRyYW5zbGF0b3IgPyBidXR0b24udHJhbnNsYXRvcihlbGVtZW50KSA6ICcnKSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwic21hcnRUYWJsZUJ1dHRvblR5cGUuTUVOVVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd01lbnVCdXR0b24oZWxlbWVudCwgYnV0dG9uKVwiXHJcbiAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tQnV0dG9uQ2xpY2tlZCgkZXZlbnQsIGJ1dHRvbiwgZWxlbWVudCwgdW5kZWZpbmVkLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInt7IGJ1dHRvbi5jb2xvciB9fVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJidXR0b24uaWNvblwiIFtpY29uXT1cImJ1dHRvbi5pY29uXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsID8/IChidXR0b24udHJhbnNsYXRvciA/IGJ1dHRvbi50cmFuc2xhdG9yKGVsZW1lbnQpIDogJycpIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImJ1dHRvbi5tZW51SXRlbUJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBidG4gb2YgYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidG4sIGVsZW1lbnQsIHVuZGVmaW5lZCwgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwiYnRuLmljb25cIiBbaWNvbl09XCJidG4uaWNvblwiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBidG4ubGFiZWwgfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJ0biBvZiBnZXRWYWx1ZShlbGVtZW50LCBidXR0b24ubWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYnRuLmNvZGUgIT09IEFDVElPTl9TRVBFUkFUT1JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidXR0b24sIGVsZW1lbnQsIGJ0biwgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGJ1dHRvbi50cmFuc2xhdG9yIShidG4pIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiYnRuLmNvZGUgPT09IEFDVElPTl9TRVBFUkFUT1JcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyAmJiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmljb25cIj5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmljb24/Lmljb25cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uPy5jc3NDbGFzcyA/PyAnJ1wiXHJcbiAgICAgICAgICBbY29sb3JdPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uPy5jb2xvclwiXHJcbiAgICAgICAgICBbaWNvbl09XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmljb24hLmljb25cIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3NtYXJ0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgJiZcclxuICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0udHJhbnNsYXRvciAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0udHJhbnNsYXRvciEoZ2V0VmFsdWUoZWxlbWVudCwgaGVhZGVyKSkgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyAmJlxyXG4gICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0eU5hbWUgPT09ICdleHBhbmQnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBhcmlhLWxhYmVsPVwiZXhwYW5kIHJvd1wiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlKGVsZW1lbnQsICRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJleHBhbmRlZEVsZW1lbnQgIT09IGVsZW1lbnRcIiBbaWNvbl09XCIna2V5Ym9hcmRfYXJyb3dfZG93bidcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJleHBhbmRlZEVsZW1lbnQgPT09IGVsZW1lbnRcIiBbaWNvbl09XCIna2V5Ym9hcmRfYXJyb3dfdXAnXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAhc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyB8fFxyXG4gICAgICAgICAgKHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgJiZcclxuICAgICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgICAhc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uICYmXHJcbiAgICAgICAgICAgICFzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLmJ1dHRvbnMgJiZcclxuICAgICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0udHJhbnNsYXRvciAmJlxyXG4gICAgICAgICAgICAhKHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydHlOYW1lID09PSAnc2VsZWN0JykgJiZcclxuICAgICAgICAgICAgIShzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnR5TmFtZSA9PT0gJ2V4cGFuZCcpKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c21hcnQtaWNvbiAqbmdJZj1cImhlYWRlciA9PT0gJ2ljb24nXCIgW2ljb25dPVwiZ2V0VmFsdWUoZWxlbWVudCwgaGVhZGVyKSFcIj4gPC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICpuZ0lmPVwiaGVhZGVyID09PSAnaW1nJ1wiXHJcbiAgICAgICAgICBbc3JjXT1cImdldFZhbHVlKGVsZW1lbnQsIGhlYWRlcilcIlxyXG4gICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgIGNsYXNzPVwic21hcnR0YWJsZUltZ1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICBoZWFkZXIgIT09ICdpY29uJyAmJlxyXG4gICAgICAgICAgICBoZWFkZXIgIT09ICdpbWcnICYmXHJcbiAgICAgICAgICAgIGhlYWRlciAhPT0gJ29wdGlvbicgJiZcclxuICAgICAgICAgICAgaGVhZGVyICE9PSAnYnV0dG9uJyAmJlxyXG4gICAgICAgICAgICAhaXNJbWFnZVJlc291cmNlKGVsZW1lbnQsIGhlYWRlcilcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbaW5uZXJIdG1sXT1cImdldFZhbHVlKGVsZW1lbnQsIGhlYWRlcilcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25Db2RlcyAmJiBzbWFydFRhYmxlLmRlZmF1bHRBY3Rpb25Db2Rlcy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGxpYi1kZWZhdWx0LWFjdGlvbnMtcG9wdXBcclxuICAgICAgICAgICNkZWZhdWx0QWN0aW9uTWVudVxyXG4gICAgICAgICAgW2J1dHRvbnNdPVwiZ2V0RGVmYXVsdEFjdGlvbnNGb3JSb3coZWxlbWVudCkhXCJcclxuICAgICAgICAgIFtyb3ddPVwiZWxlbWVudFwiXHJcbiAgICAgICAgPjwvbGliLWRlZmF1bHQtYWN0aW9ucy1wb3B1cD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgQ29sdW1uIC0gVGhlIGRldGFpbCByb3cgaXMgbWFkZSB1cCBvZiB0aGlzIG9uZSBjb2x1bW4gdGhhdCBzcGFucyBhY3Jvc3MgYWxsIGNvbHVtbnMgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZERldGFpbFwiPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbYXR0ci5jb2xzcGFuXT1cInNtYXJ0VGFibGUudGFibGVIZWFkZXJzLmxlbmd0aFwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJleGFtcGxlLWVsZW1lbnQtZGV0YWlsXCJcclxuICAgICAgICBbQGRldGFpbEV4cGFuZF09XCJlbGVtZW50ID09IGV4cGFuZGVkRWxlbWVudCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2V4cGFuZGVkQXJlYT48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwic21hcnRUYWJsZS50YWJsZUhlYWRlcnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XHJcbiAgPHRyXHJcbiAgICBtYXQtcm93XHJcbiAgICAqbWF0Um93RGVmPVwibGV0IGVsZW1lbnQ7IGNvbHVtbnM6IHNtYXJ0VGFibGUudGFibGVIZWFkZXJzXCJcclxuICAgIGNsYXNzPVwiZXhhbXBsZS1lbGVtZW50LXJvd1wiXHJcbiAgICBbY2xhc3MuZXhhbXBsZS1leHBhbmRlZC1yb3ddPVwiZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50XCJcclxuICAgIFtuZ0NsYXNzXT1cIltcclxuICAgICAgaXNIaWdobGlnaHRlZChlbGVtZW50KSA/IHNtYXJ0VGFibGUuaGlnaGxpZ2h0Q2xhc3MhIDogJ3Vuc2VsZWN0ZWQnLFxyXG4gICAgICBzbWFydFRhYmxlLmhvdmVyID8gJ3NtYXJ0VGFibGVSb3dIb3ZlcicgOiAnJyxcclxuICAgICAgaXNTZWxlY3RlZChlbGVtZW50KSA/ICdzZWxlY3RlZCcgOiAnJ1xyXG4gICAgXVwiXHJcbiAgICAoY2xpY2spPVwiaGFuZGxlT25Sb3dDbGljayhlbGVtZW50KVwiXHJcbiAgICAoZGJsY2xpY2spPVwiaGFuZGxlT25Sb3dEb3VibGVDbGljayhlbGVtZW50KVwiXHJcbiAgPjwvdHI+XHJcbiAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXVwiIGNsYXNzPVwiZXhhbXBsZS1kZXRhaWwtcm93XCI+PC90cj5cclxuPC90YWJsZT5cclxuIl19
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtdGFibGUvdGFibGVzL21hdGVyaWFsLXRhYmxlL21hdGVyaWFsLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL3RhYmxlcy9tYXRlcmlhbC10YWJsZS9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBZWpGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxLQUFLO0lBQy9DLFlBQVksU0FBa0M7UUFDNUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7O21IQUhVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLGlGQ2pCbkMsNGhhQTRUQSxna0hEblRjO1FBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUN0QixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN6QyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDdEYsQ0FBQztLQUNIOzJGQUVVLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEI7d0JBQ1YsT0FBTyxDQUFDLGNBQWMsRUFBRTs0QkFDdEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDOzRCQUM1RCxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDOzRCQUN6QyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7eUJBQ3RGLENBQUM7cUJBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbWF0ZXJpYWwtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LmNzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxyXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgVGFibGUge1xyXG4gIGNvbnN0cnVjdG9yKGNmU2VydmljZTogQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNmU2VydmljZSk7XHJcbiAgfVxyXG59XHJcbiIsIjx0YWJsZVxyXG4gICNteVRhYmxlXHJcbiAgbWF0LXRhYmxlXHJcbiAgW2RhdGFTb3VyY2VdPVwic21hcnRUYWJsZS50YWJsZVJvd3NcIlxyXG4gIGNsYXNzPVwiZnVsbC13aWR0aFwiXHJcbiAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXHJcbj5cclxuICA8IS0tIENvbHVtbiBEZXNjcmlwdG9yIC0tPlxyXG4gIDxuZy1jb250YWluZXJcclxuICAgICpuZ0Zvcj1cImxldCBoZWFkZXIgb2Ygc21hcnRUYWJsZS50YWJsZUhlYWRlcnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgbWF0Q29sdW1uRGVmPVwie3sgaGVhZGVyIH19XCJcclxuICA+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJoZWFkZXIgPT09ICdpY29uJyB8fCBoZWFkZXIgPT09ICdpbWcnIHx8IGhlYWRlciA9PT0gJ29wdGlvbnMnIHx8IGhlYWRlciA9PT0gJ2J1dHRvbidcIlxyXG4gICAgICA+PC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXIgPT09ICdzZWxlY3QnXCI+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgKm5nSWY9XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzIVtpXS5zaG93Q2hlY2tib3hJbkhlYWRlclwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHRvZ2dsZUFsbFJvd3MoKSA6IG51bGxcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic21hcnRUYWJsZS5zZWxlY3Rpb24hLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNtYXJ0VGFibGUuc2VsZWN0aW9uIS5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY2hlY2tib3hMYWJlbCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzIVtpXS5zaG93Q2hlY2tib3hJbkhlYWRlclwiPlxyXG4gICAgICAgICAge3sgc21hcnRUYWJsZS5jdXN0b21UYWJsZUhlYWRlcnNbaV0gfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgaGVhZGVyICE9PSAnaWNvbicgJiZcclxuICAgICAgICAgIGhlYWRlciAhPT0gJ2ltZycgJiZcclxuICAgICAgICAgIGhlYWRlciAhPT0gJ29wdGlvbnMnICYmXHJcbiAgICAgICAgICBoZWFkZXIgIT09ICdidXR0b24nICYmXHJcbiAgICAgICAgICBoZWFkZXIgIT09ICdzZWxlY3QnICYmXHJcbiAgICAgICAgICBoZWFkZXIgIT09ICdleHBhbmQnICYmXHJcbiAgICAgICAgICBoZWFkZXIgIT09ICdhY3Rpb25zJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5zb3J0YWJsZTsgdGhlbiBzb3J0YWJsZTsgZWxzZSBub3RTb3J0YWJsZVwiPjwvZGl2PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc29ydGFibGU+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzb3J0QnV0dG9uQ2xpY2tlZCgkZXZlbnQsIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMhW2ldKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic21hcnRUYWJsZS5zb3J0YWJsZSAmJiBpc1NvcnRhYmxlKHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMhW2ldKVwiXHJcbiAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJzb3J0YWJsZUhlYWRlckJ1dHRvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHNtYXJ0VGFibGUuY3VzdG9tVGFibGVIZWFkZXJzW2ldIH19XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0YWJsZUhlYWRlckJ1dHRvbkljb25cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZ2V0U29ydEljb24oaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJzb3J0XCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJnZXRTb3J0SWNvbihoZWFkZXIpIVwiXHJcbiAgICAgICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzb3J0YWJsZUhlYWRlckJ1dHRvbkljb25cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzU29ydE51bUljb24oaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJzb3J0XCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJnZXRTb3J0TnVtSWNvbihoZWFkZXIpXCJcclxuICAgICAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cclxuICAgICAgICAgIHt7IHNtYXJ0VGFibGUuY3VzdG9tVGFibGVIZWFkZXJzW2ldIH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbbmdDbGFzc109XCJpc0Rpc2FibGVkKGVsZW1lbnQpID8gJ2Rpc2FibGVkUm93JyA6ICcnXCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVycyAmJlxyXG4gICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0eU5hbWUgPT09ICdzZWxlY3QnICYmXHJcbiAgICAgICAgICAhaXNEaXNhYmxlZChlbGVtZW50KVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICRldmVudFxyXG4gICAgICAgICAgICA/IHNldFNlbGVjdGlvbihcclxuICAgICAgICAgICAgICAgIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHlcclxuICAgICAgICAgICAgICAgICAgPyBzbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChlbGVtZW50KVwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICBzbWFydFRhYmxlLnNlbGVjdGlvbiEuaXNTZWxlY3RlZChcclxuICAgICAgICAgICAgc21hcnRUYWJsZS5zZWxlY3Rpb25Qcm9wZXJ0eVxyXG4gICAgICAgICAgICAgID8gc21hcnRUYWJsZS5nZXRWYWx1ZURlZXBseShlbGVtZW50LCBzbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5KVxyXG4gICAgICAgICAgICAgIDogZWxlbWVudFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2FyaWEtbGFiZWxdPVwiXHJcbiAgICAgICAgICBjaGVja2JveExhYmVsKFxyXG4gICAgICAgICAgICBzbWFydFRhYmxlLnNlbGVjdGlvblByb3BlcnR5XHJcbiAgICAgICAgICAgICAgPyBzbWFydFRhYmxlLmdldFZhbHVlRGVlcGx5KGVsZW1lbnQsIHNtYXJ0VGFibGUuc2VsZWN0aW9uUHJvcGVydHkpXHJcbiAgICAgICAgICAgICAgOiBlbGVtZW50XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllc1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuREFURVRJTUVcIj5cclxuICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgIGdldFZhbHVlKGVsZW1lbnQsIGhlYWRlcilcclxuICAgICAgICAgICAgICB8IHNtYXJ0RGF0ZVRpbWUgOiBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnRpZXM/LmRhdGVGb3JtYXRcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8udHlwZSA9PT0gdHlwZSgpLkRBVEVcIj5cclxuICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgIGdldFZhbHVlKGVsZW1lbnQsIGhlYWRlcilcclxuICAgICAgICAgICAgICB8IHNtYXJ0RGF0ZSA6IHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8uZGF0ZUZvcm1hdFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy50eXBlID09PSB0eXBlKCkuVElNRVwiPlxyXG4gICAgICAgICAge3tcclxuICAgICAgICAgICAgZ2V0VmFsdWUoZWxlbWVudCwgaGVhZGVyKVxyXG4gICAgICAgICAgICAgIHwgc21hcnRUaW1lIDogc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy5kYXRlRm9ybWF0XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydGllcz8udHlwZSA9PT0gdHlwZSgpLklDT04gJiZcclxuICAgICAgICAgICAgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0aWVzPy5pY29ucz8ubGVuZ3RoXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICAgIFtpY29uXT1cImdldEljb24oZ2V0VmFsdWUoZWxlbWVudCwgaGVhZGVyKSwgaSkhXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cImdldENvbG9yKGdldFZhbHVlKGVsZW1lbnQsIGhlYWRlciksIGkpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvc21hcnQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImlzSW1hZ2VSZXNvdXJjZShlbGVtZW50LCBoZWFkZXIpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJnZXRJbWFnZVJlc291cmNlU3R5bGUoZWxlbWVudCwgaGVhZGVyKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c21hcnQtaWNvblxyXG4gICAgICAgICAgW2ljb25dPVwiZ2V0SW1hZ2VSZXNvdXJjZUljb24oZWxlbWVudCwgaGVhZGVyKVwiXHJcbiAgICAgICAgICBbY29sb3JdPVwiZ2V0SW1hZ2VSZXNvdXJjZUNvbG9yKGVsZW1lbnQsIGhlYWRlcilcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3NtYXJ0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uYnV0dG9uc1wiXHJcbiAgICAgICAgY2xhc3M9XCJzbWFydC10YWJsZS1idXR0b25zLWNvbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5idXR0b25zXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0J1dHRvbihidXR0b24sIGVsZW1lbnQpXCIgW25nU3dpdGNoXT1cImJ1dHRvbi50eXBlXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tQnV0dG9uQ2xpY2tlZCgkZXZlbnQsIGJ1dHRvbiwgZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJzbWFydFRhYmxlQnV0dG9uVHlwZS5JQ09OXCJcclxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBjb2xvcj1cInt7IGJ1dHRvbi5jb2xvciB9fVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c21hcnQtaWNvbiB0aXRsZT1cInt7IGJ1dHRvbi5sYWJlbCB9fVwiIFtpY29uXT1cImJ1dHRvbi5pY29uIVwiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tQnV0dG9uQ2xpY2tlZCgkZXZlbnQsIGJ1dHRvbiwgZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJzbWFydFRhYmxlQnV0dG9uVHlwZS5OT1JNQUxcIlxyXG4gICAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgICBjb2xvcj1cInt7IGJ1dHRvbi5jb2xvciB9fVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c21hcnQtaWNvbiAqbmdJZj1cImJ1dHRvbi5pY29uXCIgW2ljb25dPVwiYnV0dG9uLmljb25cIj48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsID8/IChidXR0b24udHJhbnNsYXRvciA/IGJ1dHRvbi50cmFuc2xhdG9yKGVsZW1lbnQpIDogJycpIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidXR0b24sIGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwic21hcnRUYWJsZUJ1dHRvblR5cGUuUkFJU0VEXCJcclxuICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgICAgICAgIGNvbG9yPVwie3sgYnV0dG9uLmNvbG9yIH19XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwiYnV0dG9uLmljb25cIiBbaWNvbl09XCJidXR0b24uaWNvblwiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgPz8gKGJ1dHRvbi50cmFuc2xhdG9yID8gYnV0dG9uLnRyYW5zbGF0b3IoZWxlbWVudCkgOiAnJykgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cInNtYXJ0VGFibGVCdXR0b25UeXBlLk1FTlVcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dNZW51QnV0dG9uKGVsZW1lbnQsIGJ1dHRvbilcIlxyXG4gICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidXR0b24sIGVsZW1lbnQsIHVuZGVmaW5lZCwgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ7eyBidXR0b24uY29sb3IgfX1cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwiYnV0dG9uLmljb25cIiBbaWNvbl09XCJidXR0b24uaWNvblwiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICAgICAgICAgIHt7IGJ1dHRvbi5sYWJlbCA/PyAoYnV0dG9uLnRyYW5zbGF0b3IgPyBidXR0b24udHJhbnNsYXRvcihlbGVtZW50KSA6ICcnKSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJidXR0b24ubWVudUl0ZW1CdXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbi5tZW51SXRlbUJ1dHRvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnRuLCBlbGVtZW50LCB1bmRlZmluZWQsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c21hcnQtaWNvbiAqbmdJZj1cImJ0bi5pY29uXCIgW2ljb25dPVwiYnRuLmljb25cIj48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgYnRuLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidG4gb2YgZ2V0VmFsdWUoZWxlbWVudCwgYnV0dG9uLm1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJ0bi5jb2RlICE9PSBBQ1RJT05fU0VQRVJBVE9SXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCBlbGVtZW50LCBidG4sIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBidXR0b24udHJhbnNsYXRvciEoYnRuKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cImJ0bi5jb2RlID09PSBBQ1RJT05fU0VQRVJBVE9SXCI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgJiYgc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uXCI+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgICpuZ0lmPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uPy5pY29uXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uaWNvbj8uY3NzQ2xhc3MgPz8gJydcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cInNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uaWNvbj8uY29sb3JcIlxyXG4gICAgICAgICAgW2ljb25dPVwic21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5pY29uIS5pY29uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9zbWFydC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmXHJcbiAgICAgICAgICBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnRyYW5zbGF0b3IgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnRyYW5zbGF0b3IhKGdldFZhbHVlKGVsZW1lbnQsIGhlYWRlcikpIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgJiZcclxuICAgICAgICAgIHNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0ucHJvcGVydHlOYW1lID09PSAnZXhwYW5kJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cImV4cGFuZCByb3dcIlxyXG4gICAgICAgIChjbGljayk9XCJvblRvZ2dsZShlbGVtZW50LCAkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwiZXhwYW5kZWRFbGVtZW50ICE9PSBlbGVtZW50XCIgW2ljb25dPVwiJ2tleWJvYXJkX2Fycm93X2Rvd24nXCI+PC9zbWFydC1pY29uPlxyXG4gICAgICAgIDxzbWFydC1pY29uICpuZ0lmPVwiZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50XCIgW2ljb25dPVwiJ2tleWJvYXJkX2Fycm93X3VwJ1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnMgfHxcclxuICAgICAgICAgIChzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzICYmXHJcbiAgICAgICAgICAgICFzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnRpZXMgJiZcclxuICAgICAgICAgICAgIXNtYXJ0VGFibGUuY3VzdG9tU21hcnRUYWJsZUhlYWRlcnNbaV0uaWNvbiAmJlxyXG4gICAgICAgICAgICAhc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5idXR0b25zICYmXHJcbiAgICAgICAgICAgICFzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnRyYW5zbGF0b3IgJiZcclxuICAgICAgICAgICAgIShzbWFydFRhYmxlLmN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzW2ldLnByb3BlcnR5TmFtZSA9PT0gJ3NlbGVjdCcpICYmXHJcbiAgICAgICAgICAgICEoc21hcnRUYWJsZS5jdXN0b21TbWFydFRhYmxlSGVhZGVyc1tpXS5wcm9wZXJ0eU5hbWUgPT09ICdleHBhbmQnKSlcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJoZWFkZXIgPT09ICdpY29uJ1wiIFtpY29uXT1cImdldFZhbHVlKGVsZW1lbnQsIGhlYWRlcikhXCI+IDwvc21hcnQtaWNvbj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAqbmdJZj1cImhlYWRlciA9PT0gJ2ltZydcIlxyXG4gICAgICAgICAgW3NyY109XCJnZXRWYWx1ZShlbGVtZW50LCBoZWFkZXIpXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICBjbGFzcz1cInNtYXJ0dGFibGVJbWdcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgaGVhZGVyICE9PSAnaWNvbicgJiZcclxuICAgICAgICAgICAgaGVhZGVyICE9PSAnaW1nJyAmJlxyXG4gICAgICAgICAgICBoZWFkZXIgIT09ICdvcHRpb24nICYmXHJcbiAgICAgICAgICAgIGhlYWRlciAhPT0gJ2J1dHRvbicgJiZcclxuICAgICAgICAgICAgIWlzSW1hZ2VSZXNvdXJjZShlbGVtZW50LCBoZWFkZXIpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW2lubmVySHRtbF09XCJnZXRWYWx1ZShlbGVtZW50LCBoZWFkZXIpXCJcclxuICAgICAgICA+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic21hcnRUYWJsZS5kZWZhdWx0QWN0aW9uQ29kZXMgJiYgc21hcnRUYWJsZS5kZWZhdWx0QWN0aW9uQ29kZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxsaWItZGVmYXVsdC1hY3Rpb25zLXBvcHVwXHJcbiAgICAgICAgICAjZGVmYXVsdEFjdGlvbk1lbnVcclxuICAgICAgICAgIFtidXR0b25zXT1cImdldERlZmF1bHRBY3Rpb25zRm9yUm93KGVsZW1lbnQpIVwiXHJcbiAgICAgICAgICBbcm93XT1cImVsZW1lbnRcIlxyXG4gICAgICAgID48L2xpYi1kZWZhdWx0LWFjdGlvbnMtcG9wdXA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBFeHBhbmRlZCBDb250ZW50IENvbHVtbiAtIFRoZSBkZXRhaWwgcm93IGlzIG1hZGUgdXAgb2YgdGhpcyBvbmUgY29sdW1uIHRoYXQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zIC0tPlxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgW2F0dHIuY29sc3Bhbl09XCJzbWFydFRhYmxlLnRhYmxlSGVhZGVycy5sZW5ndGhcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZXhhbXBsZS1lbGVtZW50LWRldGFpbFwiXHJcbiAgICAgICAgW0BkZXRhaWxFeHBhbmRdPVwiZWxlbWVudCA9PSBleHBhbmRlZEVsZW1lbnQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNleHBhbmRlZEFyZWE+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cInNtYXJ0VGFibGUudGFibGVIZWFkZXJzOyBzdGlja3k6IHRydWVcIj48L3RyPlxyXG4gIDx0clxyXG4gICAgbWF0LXJvd1xyXG4gICAgKm1hdFJvd0RlZj1cImxldCBlbGVtZW50OyBjb2x1bW5zOiBzbWFydFRhYmxlLnRhYmxlSGVhZGVyc1wiXHJcbiAgICBjbGFzcz1cImV4YW1wbGUtZWxlbWVudC1yb3dcIlxyXG4gICAgW2NsYXNzLmV4YW1wbGUtZXhwYW5kZWQtcm93XT1cImV4cGFuZGVkRWxlbWVudCA9PT0gZWxlbWVudFwiXHJcbiAgICBbbmdDbGFzc109XCJbXHJcbiAgICAgIGlzSGlnaGxpZ2h0ZWQoZWxlbWVudCkgPyBzbWFydFRhYmxlLmhpZ2hsaWdodENsYXNzISA6ICd1bnNlbGVjdGVkJyxcclxuICAgICAgc21hcnRUYWJsZS5ob3ZlciA/ICdzbWFydFRhYmxlUm93SG92ZXInIDogJycsXHJcbiAgICAgIGlzU2VsZWN0ZWQoZWxlbWVudCkgPyAnc2VsZWN0ZWQnIDogJydcclxuICAgIF1cIlxyXG4gICAgKGNsaWNrKT1cImhhbmRsZU9uUm93Q2xpY2soZWxlbWVudClcIlxyXG4gICAgKGRibGNsaWNrKT1cImhhbmRsZU9uUm93RG91YmxlQ2xpY2soZWxlbWVudClcIlxyXG4gID48L3RyPlxyXG4gIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImV4YW1wbGUtZGV0YWlsLXJvd1wiPjwvdHI+XHJcbjwvdGFibGU+XHJcbiJdfQ==
|