@trudb/tru-common-lib 0.1.479 → 0.1.481
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/card-column/classes/tru-card-column-data.mjs +2 -1
- package/esm2022/lib/components/card-column/tru-card-column.mjs +2 -1
- package/esm2022/lib/components/card-column/tru-card.mjs +2 -2
- package/fesm2022/trudb-tru-common-lib.mjs +3 -1
- package/fesm2022/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/components/card-column/classes/tru-card-column-data.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export class TruCardColumnData {
|
|
2
|
+
$entity;
|
|
2
3
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2FyZC1jb2x1bW4vY2xhc3Nlcy90cnUtY2FyZC1jb2x1bW4tZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQWdCLGlCQUFpQjtJQUNyQyxPQUFPLENBQVU7Q0FDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHkgfSBmcm9tIFwiYnJlZXplLWNsaWVudFwiO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRydUNhcmRDb2x1bW5EYXRhIHtcclxuICAkZW50aXR5PzogRW50aXR5O1xyXG59XHJcbiJdfQ==
|
|
@@ -66,6 +66,7 @@ export class TruCardColumn {
|
|
|
66
66
|
parentTableModel = null; //dataService.model.tables[parentTableName];
|
|
67
67
|
createDataForEntity = (entity) => {
|
|
68
68
|
var data = this.config.resultConfig.rowDataEnhancer();
|
|
69
|
+
data.$entity = entity;
|
|
69
70
|
return data;
|
|
70
71
|
};
|
|
71
72
|
hasUndefinedChildren = (entity) => {
|
|
@@ -716,4 +717,4 @@ class ColumnHeaderButton {
|
|
|
716
717
|
parentElement.appendChild(linkButtonContainer);
|
|
717
718
|
}
|
|
718
719
|
}
|
|
719
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL3RydS1jYXJkLWNvbHVtbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi90cnUtY2FyZC1jb2x1bW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtwQyxPQUFPLEVBQWdCLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7OztBQU9yQyxNQUFNLE9BQU8sYUFBYTtJQWlEZDtJQUNBO0lBQ0E7SUFDQTtJQW5ERCxNQUFNLENBQXVCO0lBQzdCLElBQUksQ0FBTztJQUV3QixNQUFNLENBQWM7SUFFeEQsc0JBQXNCLENBQVU7SUFDaEMsY0FBYyxDQUFVO0lBQ3hCLHFCQUFxQixDQUFVO0lBQy9CLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDbkIsWUFBWSxDQUFpQjtJQUU3QixnQkFBZ0IsQ0FBVTtJQUMxQixtQkFBbUIsQ0FBVztJQUM5QixtQkFBbUIsQ0FBVztJQUU5QixlQUFlLENBQVc7SUFDMUIsaUJBQWlCLENBQVc7SUFDNUIsaUJBQWlCLENBQVc7SUFFNUIsVUFBVSxDQUFzQztJQUNoRCxRQUFRLENBQW9DO0lB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QUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsbUJBQW1CLENBQUM7UUFFbEQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgYnJlZXplIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZSc7XHJcbmltcG9ydCB7IFRydU1vZGVsVHlwZUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC10eXBlLWxvb2t1cCc7XHJcbmltcG9ydCB7IElUcnVDYXJkQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL3RydS1jYXJkLWNvbHVtbi1jb25maWcnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZvcmtKb2luLCBza2lwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9iYXNlLXZpZXdzL3NlYXJjaC9zZXJ2aWNlcy90cnUtc2VhcmNoLXZpZXctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1Q2FyZCB9IGZyb20gJy4vdHJ1LWNhcmQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtY2FyZC1jb2x1bW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtY2FyZC1jb2x1bW4uaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWNhcmQtY29sdW1uLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDYXJkQ29sdW1uIHtcclxuICBASW5wdXQoKSBjb25maWchOiBJVHJ1Q2FyZENvbHVtbkNvbmZpZ1xyXG4gIEBJbnB1dCgpIG5hbWUhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhcmRQb3J0YWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9ydGFsITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBwYXJlbnRUYWJsZVBsdXJhbExhYmVsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgY2hpbGRUYWJsZU5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjaGlsZFRhYmxlUGx1cmFsTGFiZWwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwYXJlbnRRdWVyeSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2NrUHJvcGVydHkhOiBzdHJpbmcgfCBudWxsO1xyXG4gXHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkTG9ja2VkITogc3RyaW5nO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZERyYWdnYWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkRHJvcHBhYmxlITogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBpbmFjdGl2ZVZpc2libGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgaW5hY3RpdmVEcmFnZ2FibGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgaW5hY3RpdmVEcm9wcGFibGUhOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIGNvbHVtblNvcnQ6ICgoY29sdW1uczogYW55KSA9PiBhbnkpIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgY2FyZFNvcnQ6ICgoY2FyZHM6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSByZWxhdGVkUGFyZW50TmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIHJlbGF0ZWRDaGlsZE5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBpbnNlcnRCZWZvcmU6IGFueTtcclxuICBwcml2YXRlIHVuaXF1ZUlkITogc3RyaW5nO1xyXG4gIHByaXZhdGUgc3ViczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xyXG5cclxuICBwYXJlbnRUYWJsZU5hbWUhOiBzdHJpbmc7XHJcbiAgYnVzeU1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIGlzQnVzeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbHVtbnM6IGFueSA9IFtdO1xyXG4gIGNhcmRzOiBhbnkgPSBbXTtcclxuICBsb2NrZWRDb2x1bW5zOiBhbnkgPSBbXTtcclxuICBjb2x1bW5GaWx0ZXJSZWZzID0gW107XHJcbiAgY2FyZEZpbHRlclN0cjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRDYXJkczogQXJyYXk8VHJ1Q2FyZD4gPSBbXTtcclxuICBjb2xvciE6IHN0cmluZyB8IG51bGw7XHJcbiAgdW5hc3NpZ25lZENvbG9yITogc3RyaW5nIHwgbnVsbDtcclxuICBrZXkhOiBzdHJpbmc7XHJcbiAgdW5hc3NpZ25lZFZpc2libGUhOiBib29sZWFuO1xyXG4gIHVuYXNzaWduZWROYW1lITogc3RyaW5nIHwgbnVsbDtcclxuICB1c2VySGFzUGFyZW50VGFibGVSb2xlID0gdHJ1ZTsgLy9wYXJlbnRUYWJsZU1vZGVsLmNhbkRpc3BsYXk7XHJcbiAgdmlld01lbnVJdGVtczogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRWaWV3TWVudUl0ZW06IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIHBhcmVudFRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIHByaXZhdGUgc2VhcmNoVmlld0V2ZW50SGFuZGxlcjogVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgc2VhcmNoUmVzdWx0Vmlld01hbmFnZXI6IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcmVudFRhYmxlTW9kZWwgPSBudWxsOy8vZGF0YVNlcnZpY2UubW9kZWwudGFibGVzW3BhcmVudFRhYmxlTmFtZV07XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRGF0YUZvckVudGl0eSA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnJvd0RhdGFFbmhhbmNlcigpO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYXNVbmRlZmluZWRDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiAhZW50aXR5W2VudGl0eVByb3BlcnR5TmFtZV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0VtcHR5Q2hpbGRyZW4gPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICByZXR1cm4gIWVudGl0eVtlbnRpdHlQcm9wZXJ0eU5hbWVdLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzSW5hY3RpdmVDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiBfLmV2ZXJ5KFtlbnRpdHlQcm9wZXJ0eU5hbWVdLCAoY2hpbGQ6IGFueSkgPT4geyByZXR1cm4gIWNoaWxkLmFjdGl2ZTsgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FkZGVkVW5zYXZlZENoaWxkcmVuID0gKGVudGl0aWVzOiBBcnJheTxUcnVFbnRpdHlCYXNlPiwgcGFyZW50UmVmOiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiBfLnNvbWUoZW50aXRpZXMsIChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmtleSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICAgIHJldHVybiBlbnRpdHlbZW50aXR5UHJvcGVydHlOYW1lXSA9PT0gcGFyZW50UmVmXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXIgPSAoKSA9PiB7XHJcbiAgICB2YXIgbG9ja2VkQ29sdW1ucyA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICB2YXIgdW5sb2NrZWRDb2x1bW5zID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIHdoaWxlIChsb2NrZWRDb2x1bW5zICYmIGxvY2tlZENvbHVtbnMubGFzdENoaWxkKSB7IGxvY2tlZENvbHVtbnMucmVtb3ZlQ2hpbGQobG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpOyB9O1xyXG4gICAgd2hpbGUgKHVubG9ja2VkQ29sdW1ucyAmJiB1bmxvY2tlZENvbHVtbnMubGFzdENoaWxkKSB7IHVubG9ja2VkQ29sdW1ucy5yZW1vdmVDaGlsZCh1bmxvY2tlZENvbHVtbnMubGFzdENoaWxkKTsgfVxyXG4gICAgd2hpbGUgKHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGgpIHsgdGhpcy5zZWxlY3RlZENhcmRzLnBvcCgpOyB9O1xyXG4gICAgLy90aGlzLmNvbmZpZy5vblNlbGVjdGlvbkNoYW5nZWQoW10pO1xyXG4gICAgLy90aGlzLmNvbmZpZy5jbGVhckZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFsdWVGcm9tU29ydFBhdGggPSAoYXJnczogW2FueSwgc3RyaW5nW11dKTogYW55ID0+IHtcclxuICAgIGxldCBjdXJyZW50OiBhbnkgPSBhcmdzWzBdO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGFyZ3NbMV0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBhcnROYW1lOiBzdHJpbmc7XHJcbiAgICAgIGlmIChpICE9PSBhcmdzWzFdLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBwYXJ0TmFtZSA9ICdvJyArIGFyZ3NbMV1baV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFydE5hbWUgPSBhcmdzWzFdW2ldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY3VycmVudFtwYXJ0TmFtZV0pIHtcclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXJ0TmFtZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjdXJyZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJdGVtc1NvdXJjZShuZXdFbnRpdGllczogQXJyYXk8YW55PiwgcmV2ZXJ0OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcblxyXG4gICAgdGhpcy5idXN5TWVzc2FnZSA9ICdSZW5kZXJpbmcuLi4nXHJcblxyXG4gICAgaWYgKCFyZXZlcnQpXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzY3JvbGxfcG9zaXRpb24nICsgdXVpZHY0KCksICcwJyk7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJSZWZzID0gW107XHJcbiAgICB0aGlzLmNhcmRGaWx0ZXJTdHIgPSBudWxsO1xyXG5cclxuICAgIGlmICghbmV3RW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubG9ja2VkQ29sdW1ucyA9IFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBsb2NrZWRDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBsZXQgZW1wdHlQYXJlbnRzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBsZXQgY29sdW1uczogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICAgIGxldCBxdWVyeSA9IG5ldyBicmVlemUuRW50aXR5UXVlcnkoJ1F1ZXJ5JyArIHRoaXMucGFyZW50VGFibGVOYW1lKTtcclxuICAgIGxldCBwYXJlbnRSZWZzID0gbmV3RW50aXRpZXMubWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIGVbdGhpcy5wYXJlbnRUYWJsZU5hbWUgKyAnUmVmJ107IH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZENvbHVtblF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkQ29sdW1uUXVlcnkocXVlcnksIHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lKTtcclxuICAgIGVsc2VcclxuICAgICAgcXVlcnkgPSBxdWVyeS5leHBhbmQodGhpcy5jb25maWcucGFyZW50VG9DaGlsZFJlbGF0aW9uc2hpcE5hbWUpO1xyXG5cclxuICAgIGxldCB1bmlxdWVQYXJlbnRSZWZzID0gWy4uLm5ldyBTZXQocGFyZW50UmVmcyldXHJcbiAgICBxdWVyeSA9IHF1ZXJ5LndoZXJlKHRoaXMucGFyZW50VGFibGVOYW1lICsgJ1JlZicsICdpbicsIHVuaXF1ZVBhcmVudFJlZnMpO1xyXG5cclxuICAgIC8vaWYgKHRoaXMucGFyZW50UXVlcnkpXHJcbiAgICAvLyAgcXVlcnkgPSBxdWVyaWVzW3RoaXMucGFyZW50UXVlcnldKHF1ZXJ5KTtcclxuXHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmN1c3RvbVNlYXJjaCh0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMucGFyZW50VGFibGVOYW1lKSwgcXVlcnkpLnN1YnNjcmliZSgocGFyZW50cykgPT4ge1xyXG4gICAgICAvL3RoaXMuY29uZmlnLmFkZFBhcmVudHNUb0ZpbHRlcihwYXJlbnRzKTtcclxuXHJcbiAgICAgIGVtcHR5UGFyZW50cyA9IF8uZmlsdGVyKHBhcmVudHMsIChwYXJlbnQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5oYXNVbmRlZmluZWRDaGlsZHJlbihwYXJlbnQpIHx8IHRoaXMuaGFzRW1wdHlDaGlsZHJlbihwYXJlbnQpIHx8IHRoaXMuaGFzSW5hY3RpdmVDaGlsZHJlbihwYXJlbnQpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzQWRkZWRVbnNhdmVkQ2hpbGRyZW4obmV3RW50aXRpZXMsIHBhcmVudC5SZWYpKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFsnY2FyZHMnXSA9IFtdO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgbGV0IHF1ZXJ5YWJsZVBhcmVudFJlZnMgPSBfLnBsdWNrKHBhcmVudHMsIHRoaXMua2V5KVxyXG5cclxuICAgICAgbGV0IGluYWN0aXZlV2l0aFBhcmVudDogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICBsZXQgYWN0aXZlV2l0aG91dFBhcmVudDogQXJyYXk8YW55PiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB1bmFzc2lnbmVkOiB0cnVlLFxyXG4gICAgICAgICAgY2FyZHM6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICBdO1xyXG5cclxuICAgICAgcGFyZW50cy5mb3JFYWNoKChwYXJlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHBhcmVudFsnY2FyZHMnXSA9IFtdO1xyXG4gICAgICAgIGlmIChxdWVyeWFibGVQYXJlbnRSZWZzLmluZGV4T2YocGFyZW50W3RoaXMua2V5XSkgIT09IC0xKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5sb2NrUHJvcGVydHkgIT09IG51bGwgJiYgcGFyZW50W3RoaXMubG9ja1Byb3BlcnR5XSkge1xyXG4gICAgICAgICAgICBsb2NrZWRDb2x1bW5zLnB1c2gocGFyZW50KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2NrUHJvcGVydHkgPT09IG51bGwgfHwgIXBhcmVudFt0aGlzLmxvY2tQcm9wZXJ0eV0gJiYgIV8uY29udGFpbnMoZW1wdHlQYXJlbnRzLCBwYXJlbnQpKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChwYXJlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwYXJlbnRbJ2luYWN0aXZlJ10gPSB0cnVlO1xyXG4gICAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LnB1c2gocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbmV3RW50aXRpZXMuZm9yRWFjaCgoZW50aXR5KSA9PiB7XHJcbiAgICAgICAgdmFyIGVudGl0eVBhcmVudCA9IF8uZmluZChwYXJlbnRzLCAocCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXSlcclxuICAgICAgICAgICAgcmV0dXJuIHAuUmVmID09PSBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0uUmVmO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZW50aXR5UGFyZW50KSB7XHJcbiAgICAgICAgICBpZiAocXVlcnlhYmxlUGFyZW50UmVmcy5pbmRleE9mKGVudGl0eVBhcmVudFt0aGlzLmtleV0pICE9PSAtMSkge1xyXG4gICAgICAgICAgICBlbnRpdHlQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbnRpdHlQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICFlbnRpdHlQYXJlbnQgJiZcclxuICAgICAgICAgIGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXSAmJlxyXG4gICAgICAgICAgZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdLlJlZiA+IDApIHtcclxuICAgICAgICAgIGxldCBpbmFjdGl2ZVBhcmVudCA9IGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXTtcclxuICAgICAgICAgIGlmIChpbmFjdGl2ZVdpdGhQYXJlbnQuaW5kZXhPZihpbmFjdGl2ZVBhcmVudCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGluYWN0aXZlUGFyZW50WydjYXJkcyddID0gW107XHJcbiAgICAgICAgICAgIGluYWN0aXZlUGFyZW50WydpbmFjdGl2ZSddID0gdHJ1ZTtcclxuICAgICAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LnB1c2goaW5hY3RpdmVQYXJlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW5hY3RpdmVQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFjdGl2ZVdpdGhvdXRQYXJlbnRbMF0uY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbHVtblNvcnQpIHtcclxuICAgICAgICB2YXIgY29sdW1uU29ydFBhcnRzID0gWycnXTsgLy90aGlzLmNvbHVtblNvcnQuc3BsaXQoJy8nKTtcclxuXHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucyA9IF8uc29ydEJ5KGxvY2tlZENvbHVtbnMsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb2x1bW5zID0gXy5zb3J0QnkoY29sdW1ucywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGluYWN0aXZlV2l0aFBhcmVudCA9IF8uc29ydEJ5KGluYWN0aXZlV2l0aFBhcmVudCwgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGVtcHR5UGFyZW50cyA9IF8uc29ydEJ5KGVtcHR5UGFyZW50cywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLmNhcmRTb3J0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBhY3RpdmVXaXRob3V0UGFyZW50LmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmluYWN0aXZlVmlzaWJsZSlcclxuICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoaW5hY3RpdmVXaXRoUGFyZW50KTtcclxuXHJcbiAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChlbXB0eVBhcmVudHMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudW5hc3NpZ25lZFZpc2libGUgJiYgIXRoaXMudW5hc3NpZ25lZExvY2tlZClcclxuICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoYWN0aXZlV2l0aG91dFBhcmVudCk7XHJcblxyXG4gICAgICBpZiAodGhpcy51bmFzc2lnbmVkVmlzaWJsZSAmJiB0aGlzLnVuYXNzaWduZWRMb2NrZWQpXHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGxvY2tlZENvbHVtbnMpO1xyXG5cclxuICAgICAgdGhpcy5sb2NrZWRDb2x1bW5zID0gbG9ja2VkQ29sdW1ucztcclxuICAgICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICBuZXcgQ2FyZFZpZXcodGhpcywgdGhpcy5sb2NrZWRDb2x1bW5zLCB0aGlzLmNvbHVtbnMpO1xyXG5cclxuICAgICAgICBpZiAocmV2ZXJ0KSB7XHJcbiAgICAgICAgICBsZXQgY29sdW1uRWxlbWVudCA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jb2x1bW5zJylbMF07XHJcbiAgICAgICAgICBsZXQgcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzY3JvbGxfcG9zaXRpb24nICsgdXVpZHY0KCkpO1xyXG4gICAgICAgICAgY29sdW1uRWxlbWVudC5zY3JvbGxMZWZ0ID0gcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA/ICtwcmV2aW91c1Njcm9sbFBvc2l0aW9uIDogMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNCdXN5ID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblNlYXJjaCA9IChzZXR1cFF1ZXJ5OiBhbnkpID0+IHtcclxuICAgIHRoaXMuaXNCdXN5ID0gdHJ1ZTtcclxuICAgIHRoaXMuYnVzeU1lc3NhZ2UgPSAnU2VhcmNoaW5nIGZvciAnICsgdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWwgKyAnLi4uJztcclxuICAgIGxldCBqb2lucyA9IFtdO1xyXG5cclxuICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2goXHJcbiAgICAgIHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy5jaGlsZFRhYmxlTmFtZSksXHJcbiAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgIG51bGwsIGZhbHNlKSk7XHJcblxyXG4gICAgZm9ya0pvaW4oam9pbnMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3VsdHMgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZHMgPSByZXN1bHRzWzBdO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSXRlbXNTb3VyY2UocmVzdWx0c1swXSwgZmFsc2UpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge31cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uID0gKGNhcmQ6IFRydUNhcmQpID0+IHtcclxuICAgIGlmICghY2FyZC5zZWxlY3RlZCkge1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgICAgIGNhcmQuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtc2VsZWN0ZWQnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgICBpZiAoaW5kZXggPT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5wdXNoKGNhcmQpO1xyXG5cclxuICAgICAgY2FyZC5jYXJkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1zZWxlY3RlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2NvcGUuY29uZmlnLm9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3RlZENhcmRzKTtcclxuICB9XHJcblxyXG4gIGRyYWdTdGFydCA9IChlOiBhbnksIGNhcmQ6IFRydUNhcmQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgLy9zY29wZS5jb25maWcuY2xvc2VTZWFyY2hQYW5lbCgpO1xyXG5cclxuICAgIGlmICgoY2FyZC5jb2x1bW4uZGF0YS51bmFzc2lnbmVkICYmICF0aGlzLnVuYXNzaWduZWREcmFnZ2FibGUpIHx8XHJcbiAgICAgIChjYXJkLmNvbHVtbi5kYXRhLmluYWN0aXZlICYmICF0aGlzLmluYWN0aXZlRHJhZ2dhYmxlKSkge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnO1xyXG5cclxuICAgIGlmICghY2FyZC5zZWxlY3RlZCkge1xyXG4gICAgICBjYXJkLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oY2FyZClcclxuICAgIH0gICBcclxuXHJcbiAgICBsZXQgY2xvbmVkTm9kZSA9IGUudGFyZ2V0LmNsb25lTm9kZSh0cnVlKTtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLnRvcCA9IFwiMHB4XCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLmxlZnQgPSBcIi0xMDAwMHB4XCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLm92ZXJmbG93ID0gJ3Zpc2libGUnO1xyXG4gICAgY2xvbmVkTm9kZS5jbGFzc0xpc3QuYWRkKCdjbG9uZWQtY2FyZCcpO1xyXG5cclxuICAgIHZhciBpbm5lciA9IGNsb25lZE5vZGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRydS1jYXJkLXBvcnRhbC1jYXJkXCIpWzBdO1xyXG4gICAgaW5uZXIuc3R5bGUudHJhbnNmb3JtID0gXCJyb3RhdGUoLTEwZGVnKVwiO1xyXG4gICAgaW5uZXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xyXG4gICAgaW5uZXIuc3R5bGUuekluZGV4ID0gMTA7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZWROb2RlKTtcclxuICAgIGUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShjbG9uZWROb2RlLCA1MCwgNTApO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZHJhZ092ZXIgPSAoZTogYW55LCBjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcclxuICAgIGlmICghdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygndHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyJykgfHxcclxuICAgICAgKGNhcmQuY29sdW1uLmRhdGEudW5hc3NpZ25lZCAmJiAhdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlKSB8fFxyXG4gICAgICAoY2FyZC5jb2x1bW4uZGF0YS5pbmFjdGl2ZSAmJiAhdGhpcy5pbmFjdGl2ZURyb3BwYWJsZSkpIHtcclxuICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmFnRW5kID0gKGU6IGFueSkgPT4ge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBsZXQgZWxlbWVudHM6IEhUTUxDb2xsZWN0aW9uT2Y8RWxlbWVudD4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjbG9uZWQtY2FyZCcpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHJ1LWNhcmQtcGxhY2Vob2xkZXInKTtcclxuICAgIHdoaWxlIChlbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGVsZW1lbnRzWzBdLnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3AgPSAoZTogYW55LCBjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSB0aGlzLnNlbGVjdGVkQ2FyZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgbGV0IGluZGV4ID0gY2FyZC5jb2x1bW4uY2FyZHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkc1tpXS51cGRhdGVEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNhcmQuY29sdW1uLmRhdGEudW5hc3NpZ25lZCAmJiAhdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlIHx8XHJcbiAgICAgIGNhcmQuY29sdW1uLmRhdGEuaW5hY3RpdmUgJiYgIXRoaXMuaW5hY3RpdmVEcm9wcGFibGUgfHxcclxuICAgICAgIXRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGgpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZyA9PT0gbnVsbCkge1xyXG4gICAgICAvL3RoaXMuY29uZmlnLm9uRHJvcChjYXJkLCB0aGlzLnNlbGVjdGVkQ2FyZHMsIHRoaXMuY29uZmlnLCB0aGlzLnBvcnRhbCwgZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNhcmQuY29sdW1uLmFkZENhcmQodGhpcy5zZWxlY3RlZENhcmRzW2ldKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkc1tpXS5jb2x1bW4ucmVtb3ZlQ2FyZCh0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3aGlsZSAodGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCkgeyB0aGlzLnNlbGVjdGVkQ2FyZHMucG9wKCk7IH07XHJcbiAgICAgIFxyXG4gICAgICAvL2xldCBzYXZlUHJvbWlzZSA9IC5jb25maWcuc2F2ZSgpO1xyXG4gICAgICAvL2lmIChzYXZlUHJvbWlzZSkge1xyXG4gICAgICAvLyAgdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtZGlzYWJsZWQnKTtcclxuICAgICAgLy8gIGF3YWl0IHNhdmVQcm9taXNlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAvLyAgICB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1kaXNhYmxlZCcpO1xyXG4gICAgICAvLyAgfSkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAvLyAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIC8vICAgIHZhciBjb2x1bW5FbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMnKVswXTtcclxuICAgICAgLy8gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB0aGlzLnVuaXF1ZUlkLCBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQpO1xyXG4gICAgICAvLyAgICBzY29wZS5jb25maWcucmV2ZXJ0KCk7XHJcbiAgICAgIC8vICAgIHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWRpc2FibGVkJyk7XHJcbiAgICAgIC8vICB9KTtcclxuICAgICAgLy99IGVsc2Uge1xyXG4gICAgICAvLyAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAvLyAgdmFyIGNvbHVtbkVsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1ucycpWzBdO1xyXG4gICAgICAvLyAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB0aGlzLnVuaXF1ZUlkLCBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQpO1xyXG4gICAgICAvLyAgc2NvcGUuY29uZmlnLnJldmVydCgpO1xyXG4gICAgICAvL31cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmVudFRhYmxlTmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlTmFtZTtcclxuICAgIHRoaXMucGFyZW50VGFibGVQbHVyYWxMYWJlbCA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB0aGlzLmNoaWxkVGFibGVOYW1lID0gdGhpcy5jb25maWcuY2hpbGRUYWJsZU5hbWU7XHJcbiAgICB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbCA9IHRoaXMuY29uZmlnLmNoaWxkVGFibGVQbHVyYWxMYWJlbDtcclxuICAgIHRoaXMua2V5ID0gdGhpcy5jb25maWcua2V5O1xyXG4gICAgdGhpcy5wYXJlbnRRdWVyeSA9IG51bGxcclxuICAgIHRoaXMubG9ja1Byb3BlcnR5ID0gdGhpcy5jb25maWcubG9ja1Byb3BlcnR5O1xyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29uZmlnLmNvbG9yO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkVmlzaWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWRWaXNpYmxlO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkTmFtZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWROYW1lO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkTG9ja2VkID0gdGhpcy5jb25maWcudW5hc3NpZ25lZExvY2tlZDtcclxuICAgIHRoaXMudW5hc3NpZ25lZENvbG9yID0gdGhpcy5jb25maWcudW5hc3NpZ25lZENvbG9yO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkRHJhZ2dhYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZERyYWdnYWJsZTtcclxuICAgIHRoaXMudW5hc3NpZ25lZERyb3BwYWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWREcm9wcGFibGU7XHJcblxyXG4gICAgdGhpcy5pbmFjdGl2ZVZpc2libGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZVZpc2libGU7XHJcbiAgICB0aGlzLmluYWN0aXZlRHJhZ2dhYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVEcmFnZ2FibGU7XHJcbiAgICB0aGlzLmluYWN0aXZlRHJvcHBhYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVEcm9wcGFibGU7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5Tb3J0ID0gdGhpcy5jb25maWcuY29sdW1uU29ydDtcclxuICAgIHRoaXMuY2FyZFNvcnQgPSB0aGlzLmNvbmZpZy5jYXJkU29ydDtcclxuXHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmtleS5sYXN0SW5kZXhPZih0aGlzLnBhcmVudFRhYmxlTmFtZSk7XHJcbiAgICBsZXQgcHJlZml4ID0gdGhpcy5rZXkuc3Vic3RyaW5nKGluZGV4LCAtMSk7XHJcbiAgICBpZiAocHJlZml4KSB7XHJcbiAgICAgIHRoaXMucmVsYXRlZFBhcmVudE5hbWUgPSBwcmVmaXggKyB0aGlzLnBhcmVudFRhYmxlTmFtZTtcclxuICAgICAgdGhpcy5yZWxhdGVkQ2hpbGROYW1lID0gcHJlZml4ICsgdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lID0gdGhpcy5wYXJlbnRUYWJsZU5hbWU7XHJcbiAgICAgIHRoaXMucmVsYXRlZENoaWxkTmFtZSA9IHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5pcXVlSWQgPSB1dWlkdjQoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vc2V0VGltZW91dCB0byBwcmV2ZW50OiBFUlJPUiBFcnJvcjogTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLiBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbmZpZy52aWV3TWVudUNvbmZpZy5tZW51SXRlbXNFbmFibGVkID0gKCkgPT4geyByZXR1cm4gdGhpcy5jb2x1bW5zLmxlbmd0aDsgfTtcclxuICAgICAgdGhpcy5jb25maWcudmlld01lbnVDb25maWcuYWxsTWVudXMoKS5zdWJzY3JpYmUoKG1lbnU6IGFueSkgPT4geyB0aGlzLnZpZXdNZW51SXRlbXMgPSBtZW51OyB9KTtcclxuICAgICAgdGhpcy5wYXJlbnRUb29sYmFyVGVtcGxhdGUgPSB0aGlzLnNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyLnNlYXJjaFZpZXdUb29sYmFyVGVtcGxhdGU7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNlbGVjdGlvbiA9IChjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgIGNhcmQuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtc2VsZWN0ZWQnKTtcclxuXHJcbiAgICAvL3Njb3BlLmNvbmZpZy5vblNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWRDYXJkcyk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDYXJkVmlldyB7XHJcbiAgcHJpdmF0ZSBsb2NrZWRDb2x1bW5zRWxlbWVudDtcclxuICBwcml2YXRlIHVubG9ja2VkQ29sdW1uc0VsZW1lbnRcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sXHJcbiAgICBwcml2YXRlIGxvY2tlZENvbHVtbnM6IGFueSxcclxuICAgIHByaXZhdGUgY29sdW1uczogYW55KSB7XHJcbiAgICB0aGlzLmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgdGhpcy51bmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgaWYgKGxvY2tlZENvbHVtbnMgJiYgbG9ja2VkQ29sdW1ucy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuYWRkQ29sdW1ucyhsb2NrZWRDb2x1bW5zLCB0cnVlKTtcclxuXHJcbiAgICBpZiAoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aClcclxuICAgICAgdGhpcy5hZGRDb2x1bW5zKGNvbHVtbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sdW1uVmlld3M6IEFycmF5PENvbHVtbj4gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBhZGRDb2x1bW5zID0gKGNvbHVtbkRhdGE6IEFycmF5PGFueT4sIGxvY2tlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgbGV0IGNvbHVtbnNFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICAgIGlmIChsb2NrZWQpXHJcbiAgICAgIGNvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgZWxzZVxyXG4gICAgICBjb2x1bW5zRWxlbWVudCA9IHRoaXMuY2FyZENvbHVtbi5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIGxldCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5jb2x1bW5WaWV3cy5wdXNoKG5ldyBDb2x1bW4odGhpcy5jYXJkQ29sdW1uLCBjb2x1bW5EYXRhW2ldLCBjb2x1bW5zRWxlbWVudCwgbG9ja2VkLCBpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29sdW1uc0VsZW1lbnQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xyXG5cclxuICAgIHRoaXMuY2FyZENvbHVtbi5idXN5TWVzc2FnZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ29sdW1ucyA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmNhcmRDb2x1bW4uY29sdW1uRmlsdGVyUmVmcyAmJiB0aGlzLmNhcmRDb2x1bW4uY29sdW1uRmlsdGVyUmVmcy5sZW5ndGgpIHtcclxuICAgICAgbGV0IGZpbHRlcmVkQ29sdW1ucztcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1uc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKCFjb2x1bW4ubG9ja2VkICYmIGNvbHVtbi5kYXRhLmVudGl0eUFzcGVjdCkge1xyXG4gICAgICAgICAgdmFyIGZvdW5kID0gdGhpcy5jYXJkQ29sdW1uLmNvbHVtbkZpbHRlclJlZnMuZmlsdGVyKHggPT4geCA9PT0gY29sdW1uLmRhdGEuUmVmKS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbnNbaV07XHJcbiAgICAgICAgY29sdW1uLmNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1maWx0ZXJlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW4ge1xyXG4gIHByaXZhdGUgY2FyZHM6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIGxvY2tlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIHBhcmVudEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBjb2x1bW5FbGVtZW50O1xyXG4gIGRhdGE6IGFueTtcclxuICBjYXJkU2Nyb2xsUG9ydEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHNlbGVjdEFsbEJ1dHRvbiE6IEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FyZENvbHVtbjogVHJ1Q2FyZENvbHVtbixcclxuICAgIGRhdGE6IGFueSxcclxuICAgIHBhcmVudEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50LFxyXG4gICAgbG9ja2VkOiBib29sZWFuLFxyXG4gICAgaW5kZXg6IG51bWJlcikge1xyXG5cclxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLmxvY2tlZCA9IGxvY2tlZDtcclxuICAgIHRoaXMucGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnQ7XHJcblxyXG4gICAgbGV0IGNvbHVtbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbicpO1xyXG4gICAgY29sdW1uRWxlbWVudC5pZCA9IGluZGV4LnRvU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKGRhdGE/LmluYWN0aXZlKVxyXG4gICAgICBjb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taW5hY3RpdmUnKTtcclxuICAgIGNvbHVtbkVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLmNhcmRDb2x1bW4uY29uZmlnLndpZHRoICsgJ3B4JztcclxuICAgIHRoaXMuY29sdW1uRWxlbWVudCA9IGNvbHVtbkVsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLXNjcm9sbC1wb3J0Jyk7XHJcblxyXG4gICAgbmV3IENvbHVtbkhlYWRlcih0aGlzLmNhcmRDb2x1bW4sIHRoaXMpO1xyXG5cclxuICAgIHRoaXMuY29sdW1uRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNhcmRTY3JvbGxQb3J0RWxlbWVudCk7XHJcbiAgICB0aGlzLmNvbHVtbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZmlsdGVyLWNhcmRzJywgKGUpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVEYXRhQnlGaWx0ZXIoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xyXG5cclxuICAgIHRoaXMucGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbHVtbkVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRFbXB0eUNhcmQgPSAoKSA9PiB7XHJcbiAgICBsZXQgZW1wdHlDYXJkcyA9IF8uZmlsdGVyKHRoaXMuY2FyZHMsIGZ1bmN0aW9uIChjYXJkKSB7IHJldHVybiAhY2FyZC5kYXRhIH0pO1xyXG4gICAgaWYgKCFlbXB0eUNhcmRzLmxlbmd0aClcclxuICAgICAgdGhpcy5jYXJkcy5wdXNoKG5ldyBUcnVDYXJkKHRoaXMuY2FyZENvbHVtbiwgdGhpcywgbnVsbCwgZmFsc2UpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdEFsbEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVFbXB0eUNhcmQgPSAoKSA9PiB7XHJcbiAgICB2YXIgZW1wdHlDYXJkcyA9IF8uZmlsdGVyKHRoaXMuY2FyZHMsIChjYXJkKSA9PiB7IHJldHVybiAhY2FyZC5kYXRhIH0pO1xyXG4gICAgaWYgKGVtcHR5Q2FyZHMubGVuZ3RoKSB7XHJcbiAgICAgIHZhciBlbXB0eUNhcmQgPSBlbXB0eUNhcmRzWzBdO1xyXG4gICAgICB2YXIgZW1wdHlDYXJkRWxlbWVudCA9IGVtcHR5Q2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudDtcclxuICAgICAgZW1wdHlDYXJkRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVtcHR5Q2FyZEVsZW1lbnQpO1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLmNhcmRzLmluZGV4T2YoZW1wdHlDYXJkc1swXSk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgICAgdGhpcy5jYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0QWxsQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5Jc1Zpc3VhbGx5RW1wdHkgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXJkcy5ldmVyeShmdW5jdGlvbiAoY2FyZCkge1xyXG4gICAgICByZXR1cm4gY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2FyZCA9IChjYXJkOiBhbnkpID0+IHtcclxuICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjYXJkLmNhcmRDb250YWluZXJFbGVtZW50KTtcclxuXHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLmRhdGEuY2FyZHMuaW5kZXhPZihjYXJkLmRhdGEpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgdGhpcy5kYXRhLmNhcmRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpbmRleCA9IHRoaXMuY2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuY2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGlmICghdGhpcy5jYXJkcy5sZW5ndGggfHwgdGhpcy5jb2x1bW5Jc1Zpc3VhbGx5RW1wdHkoKSlcclxuICAgICAgdGhpcy5hZGRFbXB0eUNhcmQoKTtcclxuXHJcbiAgICBjYXJkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YUJ5RmlsdGVyID0gKCkgPT4ge1xyXG4gICAgbGV0IGNhcmRGaWx0ZXJTdHIgPSB0aGlzLmNhcmRDb2x1bW4uY2FyZEZpbHRlclN0cjtcclxuICAgIGlmIChjYXJkRmlsdGVyU3RyKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjYXJkID0gdGhpcy5jYXJkc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKGNhcmQuZGF0YSkge1xyXG4gICAgICAgICAgbGV0IGZpbHRlclBhcnRzID0gY2FyZEZpbHRlclN0ci5zcGxpdCgvKFxccyspLykuZmlsdGVyKGZ1bmN0aW9uIChzKSB7IHJldHVybiBzLnRyaW0oKS5sZW5ndGggPiAwOyB9KTtcclxuICAgICAgICAgIGxldCBjYXJkRmlsdGVyUmVzdWx0O1xyXG4gICAgICAgICAgLy9pZiAoc2NvcGUuY29uZmlnLmNhcmRJZCkge1xyXG4gICAgICAgICAgLy8gIGNhcmRGaWx0ZXJSZXN1bHQgPSBmaWx0ZXJQYXJ0cy5ldmVyeShmdW5jdGlvbiAocGFydCkge1xyXG4gICAgICAgICAgLy8gICAgcmV0dXJuIHNjb3BlLmNvbmZpZy5jYXJkSWQoY2FyZC5kYXRhLiRlbnRpdHkpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwYXJ0KSAhPSAtMTtcclxuICAgICAgICAgIC8vICB9KTtcclxuICAgICAgICAgIC8vfSBlbHNlIHtcclxuICAgICAgICAgIC8vICBjYXJkRmlsdGVyUmVzdWx0ID0gc2NvcGUuY29uZmlnLmNhcmRGaWx0ZXIoY2FyZC5kYXRhLCBjYXJkRmlsdGVyU3RyKVxyXG4gICAgICAgICAgLy99XHJcblxyXG4gICAgICAgICAgaWYgKGNhcmRGaWx0ZXJSZXN1bHQpIHtcclxuICAgICAgICAgICAgY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNhcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGNhcmQgPSB0aGlzLmNhcmRzW2ldO1xyXG4gICAgICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBjYXJkRWxlbWVudHMgPSB0aGlzLmNvbHVtbkVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jYXJkLWNvbnRhaW5lcjpub3QoLnRydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkKTpub3QoLmVtcHR5KScpO1xyXG4gICAgaWYgKGNhcmRFbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZW1vdmVFbXB0eUNhcmQoKTtcclxuICAgICAgaWYgKCF0aGlzLmxvY2tlZCkge1xyXG4gICAgICAgIHRoaXMucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5jb2x1bW5FbGVtZW50LCB0aGlzLnBhcmVudEVsZW1lbnQuZmlyc3RDaGlsZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkRW1wdHlDYXJkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgd2hpbGUgKHRoaXMuY2FyZHMubGVuZ3RoKSB7IHRoaXMuY2FyZHMucG9wKCk7IH07XHJcblxyXG4gICAgbGV0IGNvbHVtbkNhcmRzID0gdGhpcy5jYXJkQ29sdW1uLmNhcmRzLmZpbHRlcigoY2FyZERhdGE6IGFueSkgPT4geyByZXR1cm4gY2FyZERhdGFbdGhpcy5jYXJkQ29sdW1uLnBhcmVudFRhYmxlTmFtZSArICdSZWYnXSA9PT0gdGhpcy5kYXRhLlJlZiB9KVxyXG5cclxuICAgIGlmIChjb2x1bW5DYXJkcy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5DYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuY2FyZHMucHVzaChuZXcgVHJ1Q2FyZCh0aGlzLmNhcmRDb2x1bW4sIHRoaXMsIGNvbHVtbkNhcmRzW2ldLCBmYWxzZSkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEVtcHR5Q2FyZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsID0gKHNlbGVjdEFsbDogYm9vbGVhbikgPT4ge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNhcmRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICB0aGlzLmNhcmRzW2ldLnNlbGVjdEFsbChzZWxlY3RBbGwpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2FyZCA9IChjYXJkOiBhbnkpID0+IHtcclxuICAgIGNhcmQuZGF0YVt0aGlzLmNhcmRDb2x1bW4ua2V5XSA9IHRoaXMuZGF0YS5SZWY7XHJcbiAgICB0aGlzLmRhdGEuY2FyZHMudW5zaGlmdChjYXJkLmRhdGEpO1xyXG4gICAgdGhpcy5jYXJkcy51bnNoaWZ0KG5ldyBUcnVDYXJkKHRoaXMuY2FyZENvbHVtbiwgdGhpcywgY2FyZC5kYXRhLCB0cnVlKSk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW5IZWFkZXIge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FyZENvbHVtbjogVHJ1Q2FyZENvbHVtbiwgY29sdW1uOiBDb2x1bW4pIHtcclxuICAgIGxldCBjb2x1bW5IZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb2x1bW5IZWFkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVyJyk7XHJcblxyXG4gICAgbmV3IENvbHVtbkhlYWRlclRleHQoY2FyZENvbHVtbiwgY29sdW1uLCBjb2x1bW5IZWFkZXJFbGVtZW50KTtcclxuICAgIG5ldyBDb2x1bW5IZWFkZXJCdXR0b24oY29sdW1uLCBjb2x1bW5IZWFkZXJFbGVtZW50KTtcclxuXHJcbiAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5pbnNlcnRCZWZvcmUoY29sdW1uSGVhZGVyRWxlbWVudCwgY29sdW1uLmNvbHVtbkVsZW1lbnQuZmlyc3RDaGlsZCk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW5IZWFkZXJUZXh0IHtcclxuICBwcml2YXRlIGRhdGE6IGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sIGNvbHVtbjogQ29sdW1uLCBwYXJlbnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudCkge1xyXG4gICAgdGhpcy5kYXRhID0gY29sdW1uLmRhdGE7XHJcblxyXG4gICAgbGV0IGhlYWRlclRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICBoZWFkZXJUZXh0LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVydGV4dCcpO1xyXG5cclxuICAgIGlmICh0aGlzLmNhcmRDb2x1bW4udXNlckhhc1BhcmVudFRhYmxlUm9sZSkge1xyXG4gICAgICBoZWFkZXJUZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4geyBhbGVydCgnZ29Ub0RldGFpbCcpIH0pO1xyXG4gICAgICBoZWFkZXJUZXh0LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVydGV4dC1ob3ZlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5kYXRhPy51bmFzc2lnbmVkKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY2FyZENvbHVtbi5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRDb2x1bW5JZChjb2x1bW4uZGF0YSk7XHJcbiAgICAgIGlmICh2YWx1ZSlcclxuICAgICAgICBoZWFkZXJUZXh0LmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGE/LnVuYXNzaWduZWQgJiYgdGhpcy5jYXJkQ29sdW1uLnVuYXNzaWduZWRWaXNpYmxlKVxyXG4gICAgICBoZWFkZXJUZXh0LmlubmVySFRNTCA9IHRoaXMuY2FyZENvbHVtbi51bmFzc2lnbmVkTmFtZSA/IHRoaXMuY2FyZENvbHVtbi51bmFzc2lnbmVkTmFtZSA6ICdVbmFzc2lnbmVkJztcclxuXHJcbiAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRleHQpO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQ29sdW1uSGVhZGVyQnV0dG9uIHsgXHJcbiAgcHJpdmF0ZSBjb2x1bW46IENvbHVtbjtcclxuICBwcml2YXRlIHNlbGVjdEFsbCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb2x1bW46IENvbHVtbiwgcGFyZW50RWxlbWVudDogSFRNTERpdkVsZW1lbnQpIHtcclxuICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xyXG5cclxuICAgIHZhciBsaW5rQnV0dG9uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBsaW5rQnV0dG9uQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVyLWV4dHJhcycpO1xyXG5cclxuICAgIGxldCBsaW5rQnV0dG9uOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmtCdXR0b24uY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1oZWFkZXItZXh0cmEtYnV0dG9uJyk7XHJcbiAgICBsaW5rQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2RhcmstaG92ZXInKTtcclxuICAgIGxpbmtCdXR0b24uaHJlZiA9ICcjJztcclxuXHJcbiAgICBsZXQgbGlua0J1dHRvblRleHQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIGxpbmtCdXR0b25UZXh0LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLWljb24tc21hbGwnKTtcclxuICAgIGxpbmtCdXR0b25UZXh0LmNsYXNzTGlzdC5hZGQoJ2ljb24tY2hlY2stc3F1YXJlLW8nKTtcclxuXHJcbiAgICBsaW5rQnV0dG9uVGV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSAhdGhpcy5zZWxlY3RBbGw7XHJcbiAgICAgIHRoaXMuY29sdW1uLnNlbGVjdEFsbCh0aGlzLnNlbGVjdEFsbCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsaW5rQnV0dG9uLmFwcGVuZENoaWxkKGxpbmtCdXR0b25UZXh0KTtcclxuICAgIGxpbmtCdXR0b25Db250YWluZXIuYXBwZW5kQ2hpbGQobGlua0J1dHRvbik7XHJcblxyXG4gICAgdGhpcy5jb2x1bW4uc2VsZWN0QWxsQnV0dG9uID0gbGlua0J1dHRvbkNvbnRhaW5lcjtcclxuXHJcbiAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGxpbmtCdXR0b25Db250YWluZXIpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHJ1LWNhcmRcIj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNCdXN5XCJcclxuICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtYnVzeS1pbmRpY2F0b3JcIj5cclxuICAgIDxwPnt7YnVzeU1lc3NhZ2V9fTwvcD5cclxuICA8L2Rpdj5cclxuICA8dHJ1LXRvb2xiYXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyZW50VG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yICpuZ0lmPVwidmlld01lbnVJdGVtcy5sZW5ndGhcIj48L3RydS10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3TWVudUl0ZW1zLmxlbmd0aFwiPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItbWVudSAqbmdGb3I9XCJsZXQgdmlld01lbnVJdGVtIG9mIHZpZXdNZW51SXRlbXNcIiBbY29uZmlnXT1cInZpZXdNZW51SXRlbVwiPjwvdHJ1LXRvb2xiYXItbWVudT5cclxuICAgIDwvZGl2PlxyXG4gIDwvdHJ1LXRvb2xiYXI+XHJcbiAgPCEtLTx0cnUtdG9vbGJhciBbY29uZmlnXT1cImNvbmZpZy50b29sYmFyQ29uZmlnXCIgY2xhc3M9XCJtYWluLXRvb2xiYXJcIj48L3RydS10b29sYmFyPi0tPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWxcIiAjY2FyZFBvcnRhbD5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieyd3aWR0aCc6ICgoY29uZmlnLndpZHRoICogbG9ja2VkQ29sdW1ucy5sZW5ndGgpICsgKDEwICogbG9ja2VkQ29sdW1ucy5sZW5ndGggLSAxKSkgKyAncHgnIH1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyd0cnUtY2FyZC1wb3J0YWwtbG9ja2VkLWNvbHVtbnMtZGl2aWRlcic6IGxvY2tlZENvbHVtbnMubGVuZ3RofVwiXHJcbiAgICAgICAgICAqbmdJZj1cImxvY2tlZENvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtcG9ydGFsLWxvY2tlZC1jb2x1bW5zIGxvY2tlZC1jb2x1bW5zXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieydsZWZ0JzogbG9ja2VkQ29sdW1ucy5sZW5ndGggPyAoKGNvbmZpZy53aWR0aCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoKSArICgxMCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoIC0gMSkgKyAyMikgKyAncHgnIDogMCB9XCJcclxuICAgICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMgdW5sb2NrZWQtY29sdW1uc1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
720
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL3RydS1jYXJkLWNvbHVtbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi90cnUtY2FyZC1jb2x1bW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtwQyxPQUFPLEVBQWdCLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7OztBQU9yQyxNQUFNLE9BQU8sYUFBYTtJQWlEZDtJQUNBO0lBQ0E7SUFDQTtJQW5ERCxNQUFNLENBQXVCO0lBQzdCLElBQUksQ0FBTztJQUV3QixNQUFNLENBQWM7SUFFeEQsc0JBQXNCLENBQVU7SUFDaEMsY0FBYyxDQUFVO0lBQ3hCLHFCQUFxQixDQUFVO0lBQy9CLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDbkIsWUFBWSxDQUFpQjtJQUU3QixnQkFBZ0IsQ0FBVTtJQUMxQixtQkFBbUIsQ0FBVztJQUM5QixtQkFBbUIsQ0FBVztJQUU5QixlQUFlLENBQVc7SUFDMUIsaUJBQWlCLENBQVc7SUFDNUIsaUJBQWlCLENBQVc7SUFFNUIsVUFBVSxDQUFzQztJQUNoRCxRQUFRLENBQW9DO0lB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QUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsbUJBQW1CLENBQUM7UUFFbEQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgYnJlZXplIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZSc7XHJcbmltcG9ydCB7IFRydU1vZGVsVHlwZUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC10eXBlLWxvb2t1cCc7XHJcbmltcG9ydCB7IElUcnVDYXJkQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL3RydS1jYXJkLWNvbHVtbi1jb25maWcnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZvcmtKb2luLCBza2lwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9iYXNlLXZpZXdzL3NlYXJjaC9zZXJ2aWNlcy90cnUtc2VhcmNoLXZpZXctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1Q2FyZCB9IGZyb20gJy4vdHJ1LWNhcmQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtY2FyZC1jb2x1bW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtY2FyZC1jb2x1bW4uaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWNhcmQtY29sdW1uLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDYXJkQ29sdW1uIHtcclxuICBASW5wdXQoKSBjb25maWchOiBJVHJ1Q2FyZENvbHVtbkNvbmZpZ1xyXG4gIEBJbnB1dCgpIG5hbWUhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhcmRQb3J0YWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9ydGFsITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBwYXJlbnRUYWJsZVBsdXJhbExhYmVsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgY2hpbGRUYWJsZU5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjaGlsZFRhYmxlUGx1cmFsTGFiZWwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwYXJlbnRRdWVyeSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2NrUHJvcGVydHkhOiBzdHJpbmcgfCBudWxsO1xyXG4gXHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkTG9ja2VkITogc3RyaW5nO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZERyYWdnYWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkRHJvcHBhYmxlITogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBpbmFjdGl2ZVZpc2libGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgaW5hY3RpdmVEcmFnZ2FibGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgaW5hY3RpdmVEcm9wcGFibGUhOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIGNvbHVtblNvcnQ6ICgoY29sdW1uczogYW55KSA9PiBhbnkpIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgY2FyZFNvcnQ6ICgoY2FyZHM6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSByZWxhdGVkUGFyZW50TmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIHJlbGF0ZWRDaGlsZE5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBpbnNlcnRCZWZvcmU6IGFueTtcclxuICBwcml2YXRlIHVuaXF1ZUlkITogc3RyaW5nO1xyXG4gIHByaXZhdGUgc3ViczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xyXG5cclxuICBwYXJlbnRUYWJsZU5hbWUhOiBzdHJpbmc7XHJcbiAgYnVzeU1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIGlzQnVzeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbHVtbnM6IGFueSA9IFtdO1xyXG4gIGNhcmRzOiBhbnkgPSBbXTtcclxuICBsb2NrZWRDb2x1bW5zOiBhbnkgPSBbXTtcclxuICBjb2x1bW5GaWx0ZXJSZWZzID0gW107XHJcbiAgY2FyZEZpbHRlclN0cjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRDYXJkczogQXJyYXk8VHJ1Q2FyZD4gPSBbXTtcclxuICBjb2xvciE6IHN0cmluZyB8IG51bGw7XHJcbiAgdW5hc3NpZ25lZENvbG9yITogc3RyaW5nIHwgbnVsbDtcclxuICBrZXkhOiBzdHJpbmc7XHJcbiAgdW5hc3NpZ25lZFZpc2libGUhOiBib29sZWFuO1xyXG4gIHVuYXNzaWduZWROYW1lITogc3RyaW5nIHwgbnVsbDtcclxuICB1c2VySGFzUGFyZW50VGFibGVSb2xlID0gdHJ1ZTsgLy9wYXJlbnRUYWJsZU1vZGVsLmNhbkRpc3BsYXk7XHJcbiAgdmlld01lbnVJdGVtczogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRWaWV3TWVudUl0ZW06IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIHBhcmVudFRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIHByaXZhdGUgc2VhcmNoVmlld0V2ZW50SGFuZGxlcjogVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgc2VhcmNoUmVzdWx0Vmlld01hbmFnZXI6IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcmVudFRhYmxlTW9kZWwgPSBudWxsOy8vZGF0YVNlcnZpY2UubW9kZWwudGFibGVzW3BhcmVudFRhYmxlTmFtZV07XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRGF0YUZvckVudGl0eSA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnJvd0RhdGFFbmhhbmNlcigpO1xyXG4gICAgZGF0YS4kZW50aXR5ID0gZW50aXR5O1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYXNVbmRlZmluZWRDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiAhZW50aXR5W2VudGl0eVByb3BlcnR5TmFtZV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0VtcHR5Q2hpbGRyZW4gPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICByZXR1cm4gIWVudGl0eVtlbnRpdHlQcm9wZXJ0eU5hbWVdLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzSW5hY3RpdmVDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiBfLmV2ZXJ5KFtlbnRpdHlQcm9wZXJ0eU5hbWVdLCAoY2hpbGQ6IGFueSkgPT4geyByZXR1cm4gIWNoaWxkLmFjdGl2ZTsgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FkZGVkVW5zYXZlZENoaWxkcmVuID0gKGVudGl0aWVzOiBBcnJheTxUcnVFbnRpdHlCYXNlPiwgcGFyZW50UmVmOiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiBfLnNvbWUoZW50aXRpZXMsIChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmtleSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICAgIHJldHVybiBlbnRpdHlbZW50aXR5UHJvcGVydHlOYW1lXSA9PT0gcGFyZW50UmVmXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXIgPSAoKSA9PiB7XHJcbiAgICB2YXIgbG9ja2VkQ29sdW1ucyA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICB2YXIgdW5sb2NrZWRDb2x1bW5zID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIHdoaWxlIChsb2NrZWRDb2x1bW5zICYmIGxvY2tlZENvbHVtbnMubGFzdENoaWxkKSB7IGxvY2tlZENvbHVtbnMucmVtb3ZlQ2hpbGQobG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpOyB9O1xyXG4gICAgd2hpbGUgKHVubG9ja2VkQ29sdW1ucyAmJiB1bmxvY2tlZENvbHVtbnMubGFzdENoaWxkKSB7IHVubG9ja2VkQ29sdW1ucy5yZW1vdmVDaGlsZCh1bmxvY2tlZENvbHVtbnMubGFzdENoaWxkKTsgfVxyXG4gICAgd2hpbGUgKHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGgpIHsgdGhpcy5zZWxlY3RlZENhcmRzLnBvcCgpOyB9O1xyXG4gICAgLy90aGlzLmNvbmZpZy5vblNlbGVjdGlvbkNoYW5nZWQoW10pO1xyXG4gICAgLy90aGlzLmNvbmZpZy5jbGVhckZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFsdWVGcm9tU29ydFBhdGggPSAoYXJnczogW2FueSwgc3RyaW5nW11dKTogYW55ID0+IHtcclxuICAgIGxldCBjdXJyZW50OiBhbnkgPSBhcmdzWzBdO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGFyZ3NbMV0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBhcnROYW1lOiBzdHJpbmc7XHJcbiAgICAgIGlmIChpICE9PSBhcmdzWzFdLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBwYXJ0TmFtZSA9ICdvJyArIGFyZ3NbMV1baV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFydE5hbWUgPSBhcmdzWzFdW2ldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY3VycmVudFtwYXJ0TmFtZV0pIHtcclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXJ0TmFtZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjdXJyZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJdGVtc1NvdXJjZShuZXdFbnRpdGllczogQXJyYXk8YW55PiwgcmV2ZXJ0OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcblxyXG4gICAgdGhpcy5idXN5TWVzc2FnZSA9ICdSZW5kZXJpbmcuLi4nXHJcblxyXG4gICAgaWYgKCFyZXZlcnQpXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzY3JvbGxfcG9zaXRpb24nICsgdXVpZHY0KCksICcwJyk7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJSZWZzID0gW107XHJcbiAgICB0aGlzLmNhcmRGaWx0ZXJTdHIgPSBudWxsO1xyXG5cclxuICAgIGlmICghbmV3RW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubG9ja2VkQ29sdW1ucyA9IFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBsb2NrZWRDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBsZXQgZW1wdHlQYXJlbnRzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBsZXQgY29sdW1uczogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICAgIGxldCBxdWVyeSA9IG5ldyBicmVlemUuRW50aXR5UXVlcnkoJ1F1ZXJ5JyArIHRoaXMucGFyZW50VGFibGVOYW1lKTtcclxuICAgIGxldCBwYXJlbnRSZWZzID0gbmV3RW50aXRpZXMubWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIGVbdGhpcy5wYXJlbnRUYWJsZU5hbWUgKyAnUmVmJ107IH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZENvbHVtblF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkQ29sdW1uUXVlcnkocXVlcnksIHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lKTtcclxuICAgIGVsc2VcclxuICAgICAgcXVlcnkgPSBxdWVyeS5leHBhbmQodGhpcy5jb25maWcucGFyZW50VG9DaGlsZFJlbGF0aW9uc2hpcE5hbWUpO1xyXG5cclxuICAgIGxldCB1bmlxdWVQYXJlbnRSZWZzID0gWy4uLm5ldyBTZXQocGFyZW50UmVmcyldXHJcbiAgICBxdWVyeSA9IHF1ZXJ5LndoZXJlKHRoaXMucGFyZW50VGFibGVOYW1lICsgJ1JlZicsICdpbicsIHVuaXF1ZVBhcmVudFJlZnMpO1xyXG5cclxuICAgIC8vaWYgKHRoaXMucGFyZW50UXVlcnkpXHJcbiAgICAvLyAgcXVlcnkgPSBxdWVyaWVzW3RoaXMucGFyZW50UXVlcnldKHF1ZXJ5KTtcclxuXHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmN1c3RvbVNlYXJjaCh0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMucGFyZW50VGFibGVOYW1lKSwgcXVlcnkpLnN1YnNjcmliZSgocGFyZW50cykgPT4ge1xyXG4gICAgICAvL3RoaXMuY29uZmlnLmFkZFBhcmVudHNUb0ZpbHRlcihwYXJlbnRzKTtcclxuXHJcbiAgICAgIGVtcHR5UGFyZW50cyA9IF8uZmlsdGVyKHBhcmVudHMsIChwYXJlbnQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5oYXNVbmRlZmluZWRDaGlsZHJlbihwYXJlbnQpIHx8IHRoaXMuaGFzRW1wdHlDaGlsZHJlbihwYXJlbnQpIHx8IHRoaXMuaGFzSW5hY3RpdmVDaGlsZHJlbihwYXJlbnQpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzQWRkZWRVbnNhdmVkQ2hpbGRyZW4obmV3RW50aXRpZXMsIHBhcmVudC5SZWYpKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFsnY2FyZHMnXSA9IFtdO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgbGV0IHF1ZXJ5YWJsZVBhcmVudFJlZnMgPSBfLnBsdWNrKHBhcmVudHMsIHRoaXMua2V5KVxyXG5cclxuICAgICAgbGV0IGluYWN0aXZlV2l0aFBhcmVudDogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICBsZXQgYWN0aXZlV2l0aG91dFBhcmVudDogQXJyYXk8YW55PiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB1bmFzc2lnbmVkOiB0cnVlLFxyXG4gICAgICAgICAgY2FyZHM6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICBdO1xyXG5cclxuICAgICAgcGFyZW50cy5mb3JFYWNoKChwYXJlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHBhcmVudFsnY2FyZHMnXSA9IFtdO1xyXG4gICAgICAgIGlmIChxdWVyeWFibGVQYXJlbnRSZWZzLmluZGV4T2YocGFyZW50W3RoaXMua2V5XSkgIT09IC0xKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5sb2NrUHJvcGVydHkgIT09IG51bGwgJiYgcGFyZW50W3RoaXMubG9ja1Byb3BlcnR5XSkge1xyXG4gICAgICAgICAgICBsb2NrZWRDb2x1bW5zLnB1c2gocGFyZW50KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2NrUHJvcGVydHkgPT09IG51bGwgfHwgIXBhcmVudFt0aGlzLmxvY2tQcm9wZXJ0eV0gJiYgIV8uY29udGFpbnMoZW1wdHlQYXJlbnRzLCBwYXJlbnQpKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChwYXJlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwYXJlbnRbJ2luYWN0aXZlJ10gPSB0cnVlO1xyXG4gICAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LnB1c2gocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbmV3RW50aXRpZXMuZm9yRWFjaCgoZW50aXR5KSA9PiB7XHJcbiAgICAgICAgdmFyIGVudGl0eVBhcmVudCA9IF8uZmluZChwYXJlbnRzLCAocCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXSlcclxuICAgICAgICAgICAgcmV0dXJuIHAuUmVmID09PSBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0uUmVmO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZW50aXR5UGFyZW50KSB7XHJcbiAgICAgICAgICBpZiAocXVlcnlhYmxlUGFyZW50UmVmcy5pbmRleE9mKGVudGl0eVBhcmVudFt0aGlzLmtleV0pICE9PSAtMSkge1xyXG4gICAgICAgICAgICBlbnRpdHlQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbnRpdHlQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICFlbnRpdHlQYXJlbnQgJiZcclxuICAgICAgICAgIGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXSAmJlxyXG4gICAgICAgICAgZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdLlJlZiA+IDApIHtcclxuICAgICAgICAgIGxldCBpbmFjdGl2ZVBhcmVudCA9IGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXTtcclxuICAgICAgICAgIGlmIChpbmFjdGl2ZVdpdGhQYXJlbnQuaW5kZXhPZihpbmFjdGl2ZVBhcmVudCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGluYWN0aXZlUGFyZW50WydjYXJkcyddID0gW107XHJcbiAgICAgICAgICAgIGluYWN0aXZlUGFyZW50WydpbmFjdGl2ZSddID0gdHJ1ZTtcclxuICAgICAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LnB1c2goaW5hY3RpdmVQYXJlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW5hY3RpdmVQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFjdGl2ZVdpdGhvdXRQYXJlbnRbMF0uY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbHVtblNvcnQpIHtcclxuICAgICAgICB2YXIgY29sdW1uU29ydFBhcnRzID0gWycnXTsgLy90aGlzLmNvbHVtblNvcnQuc3BsaXQoJy8nKTtcclxuXHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucyA9IF8uc29ydEJ5KGxvY2tlZENvbHVtbnMsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb2x1bW5zID0gXy5zb3J0QnkoY29sdW1ucywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGluYWN0aXZlV2l0aFBhcmVudCA9IF8uc29ydEJ5KGluYWN0aXZlV2l0aFBhcmVudCwgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGVtcHR5UGFyZW50cyA9IF8uc29ydEJ5KGVtcHR5UGFyZW50cywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLmNhcmRTb3J0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBhY3RpdmVXaXRob3V0UGFyZW50LmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmluYWN0aXZlVmlzaWJsZSlcclxuICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoaW5hY3RpdmVXaXRoUGFyZW50KTtcclxuXHJcbiAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChlbXB0eVBhcmVudHMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudW5hc3NpZ25lZFZpc2libGUgJiYgIXRoaXMudW5hc3NpZ25lZExvY2tlZClcclxuICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoYWN0aXZlV2l0aG91dFBhcmVudCk7XHJcblxyXG4gICAgICBpZiAodGhpcy51bmFzc2lnbmVkVmlzaWJsZSAmJiB0aGlzLnVuYXNzaWduZWRMb2NrZWQpXHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGxvY2tlZENvbHVtbnMpO1xyXG5cclxuICAgICAgdGhpcy5sb2NrZWRDb2x1bW5zID0gbG9ja2VkQ29sdW1ucztcclxuICAgICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICBuZXcgQ2FyZFZpZXcodGhpcywgdGhpcy5sb2NrZWRDb2x1bW5zLCB0aGlzLmNvbHVtbnMpO1xyXG5cclxuICAgICAgICBpZiAocmV2ZXJ0KSB7XHJcbiAgICAgICAgICBsZXQgY29sdW1uRWxlbWVudCA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jb2x1bW5zJylbMF07XHJcbiAgICAgICAgICBsZXQgcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzY3JvbGxfcG9zaXRpb24nICsgdXVpZHY0KCkpO1xyXG4gICAgICAgICAgY29sdW1uRWxlbWVudC5zY3JvbGxMZWZ0ID0gcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA/ICtwcmV2aW91c1Njcm9sbFBvc2l0aW9uIDogMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNCdXN5ID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblNlYXJjaCA9IChzZXR1cFF1ZXJ5OiBhbnkpID0+IHtcclxuICAgIHRoaXMuaXNCdXN5ID0gdHJ1ZTtcclxuICAgIHRoaXMuYnVzeU1lc3NhZ2UgPSAnU2VhcmNoaW5nIGZvciAnICsgdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWwgKyAnLi4uJztcclxuICAgIGxldCBqb2lucyA9IFtdO1xyXG5cclxuICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2goXHJcbiAgICAgIHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy5jaGlsZFRhYmxlTmFtZSksXHJcbiAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgIG51bGwsIGZhbHNlKSk7XHJcblxyXG4gICAgZm9ya0pvaW4oam9pbnMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3VsdHMgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZHMgPSByZXN1bHRzWzBdO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSXRlbXNTb3VyY2UocmVzdWx0c1swXSwgZmFsc2UpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge31cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uID0gKGNhcmQ6IFRydUNhcmQpID0+IHtcclxuICAgIGlmICghY2FyZC5zZWxlY3RlZCkge1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgICAgIGNhcmQuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtc2VsZWN0ZWQnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgICBpZiAoaW5kZXggPT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5wdXNoKGNhcmQpO1xyXG5cclxuICAgICAgY2FyZC5jYXJkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1zZWxlY3RlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2NvcGUuY29uZmlnLm9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3RlZENhcmRzKTtcclxuICB9XHJcblxyXG4gIGRyYWdTdGFydCA9IChlOiBhbnksIGNhcmQ6IFRydUNhcmQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgLy9zY29wZS5jb25maWcuY2xvc2VTZWFyY2hQYW5lbCgpO1xyXG5cclxuICAgIGlmICgoY2FyZC5jb2x1bW4uZGF0YS51bmFzc2lnbmVkICYmICF0aGlzLnVuYXNzaWduZWREcmFnZ2FibGUpIHx8XHJcbiAgICAgIChjYXJkLmNvbHVtbi5kYXRhLmluYWN0aXZlICYmICF0aGlzLmluYWN0aXZlRHJhZ2dhYmxlKSkge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnO1xyXG5cclxuICAgIGlmICghY2FyZC5zZWxlY3RlZCkge1xyXG4gICAgICBjYXJkLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oY2FyZClcclxuICAgIH0gICBcclxuXHJcbiAgICBsZXQgY2xvbmVkTm9kZSA9IGUudGFyZ2V0LmNsb25lTm9kZSh0cnVlKTtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLnRvcCA9IFwiMHB4XCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLmxlZnQgPSBcIi0xMDAwMHB4XCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLm92ZXJmbG93ID0gJ3Zpc2libGUnO1xyXG4gICAgY2xvbmVkTm9kZS5jbGFzc0xpc3QuYWRkKCdjbG9uZWQtY2FyZCcpO1xyXG5cclxuICAgIHZhciBpbm5lciA9IGNsb25lZE5vZGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRydS1jYXJkLXBvcnRhbC1jYXJkXCIpWzBdO1xyXG4gICAgaW5uZXIuc3R5bGUudHJhbnNmb3JtID0gXCJyb3RhdGUoLTEwZGVnKVwiO1xyXG4gICAgaW5uZXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xyXG4gICAgaW5uZXIuc3R5bGUuekluZGV4ID0gMTA7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZWROb2RlKTtcclxuICAgIGUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShjbG9uZWROb2RlLCA1MCwgNTApO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZHJhZ092ZXIgPSAoZTogYW55LCBjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcclxuICAgIGlmICghdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygndHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyJykgfHxcclxuICAgICAgKGNhcmQuY29sdW1uLmRhdGEudW5hc3NpZ25lZCAmJiAhdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlKSB8fFxyXG4gICAgICAoY2FyZC5jb2x1bW4uZGF0YS5pbmFjdGl2ZSAmJiAhdGhpcy5pbmFjdGl2ZURyb3BwYWJsZSkpIHtcclxuICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmFnRW5kID0gKGU6IGFueSkgPT4ge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBsZXQgZWxlbWVudHM6IEhUTUxDb2xsZWN0aW9uT2Y8RWxlbWVudD4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjbG9uZWQtY2FyZCcpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHJ1LWNhcmQtcGxhY2Vob2xkZXInKTtcclxuICAgIHdoaWxlIChlbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGVsZW1lbnRzWzBdLnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3AgPSAoZTogYW55LCBjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSB0aGlzLnNlbGVjdGVkQ2FyZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgbGV0IGluZGV4ID0gY2FyZC5jb2x1bW4uY2FyZHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkc1tpXS51cGRhdGVEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNhcmQuY29sdW1uLmRhdGEudW5hc3NpZ25lZCAmJiAhdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlIHx8XHJcbiAgICAgIGNhcmQuY29sdW1uLmRhdGEuaW5hY3RpdmUgJiYgIXRoaXMuaW5hY3RpdmVEcm9wcGFibGUgfHxcclxuICAgICAgIXRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGgpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZyA9PT0gbnVsbCkge1xyXG4gICAgICAvL3RoaXMuY29uZmlnLm9uRHJvcChjYXJkLCB0aGlzLnNlbGVjdGVkQ2FyZHMsIHRoaXMuY29uZmlnLCB0aGlzLnBvcnRhbCwgZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNhcmQuY29sdW1uLmFkZENhcmQodGhpcy5zZWxlY3RlZENhcmRzW2ldKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkc1tpXS5jb2x1bW4ucmVtb3ZlQ2FyZCh0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3aGlsZSAodGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCkgeyB0aGlzLnNlbGVjdGVkQ2FyZHMucG9wKCk7IH07XHJcbiAgICAgIFxyXG4gICAgICAvL2xldCBzYXZlUHJvbWlzZSA9IC5jb25maWcuc2F2ZSgpO1xyXG4gICAgICAvL2lmIChzYXZlUHJvbWlzZSkge1xyXG4gICAgICAvLyAgdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtZGlzYWJsZWQnKTtcclxuICAgICAgLy8gIGF3YWl0IHNhdmVQcm9taXNlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAvLyAgICB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1kaXNhYmxlZCcpO1xyXG4gICAgICAvLyAgfSkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAvLyAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIC8vICAgIHZhciBjb2x1bW5FbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMnKVswXTtcclxuICAgICAgLy8gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB0aGlzLnVuaXF1ZUlkLCBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQpO1xyXG4gICAgICAvLyAgICBzY29wZS5jb25maWcucmV2ZXJ0KCk7XHJcbiAgICAgIC8vICAgIHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWRpc2FibGVkJyk7XHJcbiAgICAgIC8vICB9KTtcclxuICAgICAgLy99IGVsc2Uge1xyXG4gICAgICAvLyAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAvLyAgdmFyIGNvbHVtbkVsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1ucycpWzBdO1xyXG4gICAgICAvLyAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB0aGlzLnVuaXF1ZUlkLCBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQpO1xyXG4gICAgICAvLyAgc2NvcGUuY29uZmlnLnJldmVydCgpO1xyXG4gICAgICAvL31cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmVudFRhYmxlTmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlTmFtZTtcclxuICAgIHRoaXMucGFyZW50VGFibGVQbHVyYWxMYWJlbCA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB0aGlzLmNoaWxkVGFibGVOYW1lID0gdGhpcy5jb25maWcuY2hpbGRUYWJsZU5hbWU7XHJcbiAgICB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbCA9IHRoaXMuY29uZmlnLmNoaWxkVGFibGVQbHVyYWxMYWJlbDtcclxuICAgIHRoaXMua2V5ID0gdGhpcy5jb25maWcua2V5O1xyXG4gICAgdGhpcy5wYXJlbnRRdWVyeSA9IG51bGxcclxuICAgIHRoaXMubG9ja1Byb3BlcnR5ID0gdGhpcy5jb25maWcubG9ja1Byb3BlcnR5O1xyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29uZmlnLmNvbG9yO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkVmlzaWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWRWaXNpYmxlO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkTmFtZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWROYW1lO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkTG9ja2VkID0gdGhpcy5jb25maWcudW5hc3NpZ25lZExvY2tlZDtcclxuICAgIHRoaXMudW5hc3NpZ25lZENvbG9yID0gdGhpcy5jb25maWcudW5hc3NpZ25lZENvbG9yO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkRHJhZ2dhYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZERyYWdnYWJsZTtcclxuICAgIHRoaXMudW5hc3NpZ25lZERyb3BwYWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWREcm9wcGFibGU7XHJcblxyXG4gICAgdGhpcy5pbmFjdGl2ZVZpc2libGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZVZpc2libGU7XHJcbiAgICB0aGlzLmluYWN0aXZlRHJhZ2dhYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVEcmFnZ2FibGU7XHJcbiAgICB0aGlzLmluYWN0aXZlRHJvcHBhYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVEcm9wcGFibGU7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5Tb3J0ID0gdGhpcy5jb25maWcuY29sdW1uU29ydDtcclxuICAgIHRoaXMuY2FyZFNvcnQgPSB0aGlzLmNvbmZpZy5jYXJkU29ydDtcclxuXHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmtleS5sYXN0SW5kZXhPZih0aGlzLnBhcmVudFRhYmxlTmFtZSk7XHJcbiAgICBsZXQgcHJlZml4ID0gdGhpcy5rZXkuc3Vic3RyaW5nKGluZGV4LCAtMSk7XHJcbiAgICBpZiAocHJlZml4KSB7XHJcbiAgICAgIHRoaXMucmVsYXRlZFBhcmVudE5hbWUgPSBwcmVmaXggKyB0aGlzLnBhcmVudFRhYmxlTmFtZTtcclxuICAgICAgdGhpcy5yZWxhdGVkQ2hpbGROYW1lID0gcHJlZml4ICsgdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lID0gdGhpcy5wYXJlbnRUYWJsZU5hbWU7XHJcbiAgICAgIHRoaXMucmVsYXRlZENoaWxkTmFtZSA9IHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5pcXVlSWQgPSB1dWlkdjQoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vc2V0VGltZW91dCB0byBwcmV2ZW50OiBFUlJPUiBFcnJvcjogTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLiBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbmZpZy52aWV3TWVudUNvbmZpZy5tZW51SXRlbXNFbmFibGVkID0gKCkgPT4geyByZXR1cm4gdGhpcy5jb2x1bW5zLmxlbmd0aDsgfTtcclxuICAgICAgdGhpcy5jb25maWcudmlld01lbnVDb25maWcuYWxsTWVudXMoKS5zdWJzY3JpYmUoKG1lbnU6IGFueSkgPT4geyB0aGlzLnZpZXdNZW51SXRlbXMgPSBtZW51OyB9KTtcclxuICAgICAgdGhpcy5wYXJlbnRUb29sYmFyVGVtcGxhdGUgPSB0aGlzLnNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyLnNlYXJjaFZpZXdUb29sYmFyVGVtcGxhdGU7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNlbGVjdGlvbiA9IChjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgIGNhcmQuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtc2VsZWN0ZWQnKTtcclxuXHJcbiAgICAvL3Njb3BlLmNvbmZpZy5vblNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWRDYXJkcyk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDYXJkVmlldyB7XHJcbiAgcHJpdmF0ZSBsb2NrZWRDb2x1bW5zRWxlbWVudDtcclxuICBwcml2YXRlIHVubG9ja2VkQ29sdW1uc0VsZW1lbnRcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sXHJcbiAgICBwcml2YXRlIGxvY2tlZENvbHVtbnM6IGFueSxcclxuICAgIHByaXZhdGUgY29sdW1uczogYW55KSB7XHJcbiAgICB0aGlzLmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgdGhpcy51bmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgaWYgKGxvY2tlZENvbHVtbnMgJiYgbG9ja2VkQ29sdW1ucy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuYWRkQ29sdW1ucyhsb2NrZWRDb2x1bW5zLCB0cnVlKTtcclxuXHJcbiAgICBpZiAoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aClcclxuICAgICAgdGhpcy5hZGRDb2x1bW5zKGNvbHVtbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sdW1uVmlld3M6IEFycmF5PENvbHVtbj4gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBhZGRDb2x1bW5zID0gKGNvbHVtbkRhdGE6IEFycmF5PGFueT4sIGxvY2tlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgbGV0IGNvbHVtbnNFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICAgIGlmIChsb2NrZWQpXHJcbiAgICAgIGNvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgZWxzZVxyXG4gICAgICBjb2x1bW5zRWxlbWVudCA9IHRoaXMuY2FyZENvbHVtbi5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIGxldCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5jb2x1bW5WaWV3cy5wdXNoKG5ldyBDb2x1bW4odGhpcy5jYXJkQ29sdW1uLCBjb2x1bW5EYXRhW2ldLCBjb2x1bW5zRWxlbWVudCwgbG9ja2VkLCBpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29sdW1uc0VsZW1lbnQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xyXG5cclxuICAgIHRoaXMuY2FyZENvbHVtbi5idXN5TWVzc2FnZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ29sdW1ucyA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmNhcmRDb2x1bW4uY29sdW1uRmlsdGVyUmVmcyAmJiB0aGlzLmNhcmRDb2x1bW4uY29sdW1uRmlsdGVyUmVmcy5sZW5ndGgpIHtcclxuICAgICAgbGV0IGZpbHRlcmVkQ29sdW1ucztcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1uc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKCFjb2x1bW4ubG9ja2VkICYmIGNvbHVtbi5kYXRhLmVudGl0eUFzcGVjdCkge1xyXG4gICAgICAgICAgdmFyIGZvdW5kID0gdGhpcy5jYXJkQ29sdW1uLmNvbHVtbkZpbHRlclJlZnMuZmlsdGVyKHggPT4geCA9PT0gY29sdW1uLmRhdGEuUmVmKS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbnNbaV07XHJcbiAgICAgICAgY29sdW1uLmNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1maWx0ZXJlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW4ge1xyXG4gIHByaXZhdGUgY2FyZHM6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIGxvY2tlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIHBhcmVudEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBjb2x1bW5FbGVtZW50O1xyXG4gIGRhdGE6IGFueTtcclxuICBjYXJkU2Nyb2xsUG9ydEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHNlbGVjdEFsbEJ1dHRvbiE6IEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FyZENvbHVtbjogVHJ1Q2FyZENvbHVtbixcclxuICAgIGRhdGE6IGFueSxcclxuICAgIHBhcmVudEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50LFxyXG4gICAgbG9ja2VkOiBib29sZWFuLFxyXG4gICAgaW5kZXg6IG51bWJlcikge1xyXG5cclxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLmxvY2tlZCA9IGxvY2tlZDtcclxuICAgIHRoaXMucGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnQ7XHJcblxyXG4gICAgbGV0IGNvbHVtbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbicpO1xyXG4gICAgY29sdW1uRWxlbWVudC5pZCA9IGluZGV4LnRvU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKGRhdGE/LmluYWN0aXZlKVxyXG4gICAgICBjb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taW5hY3RpdmUnKTtcclxuICAgIGNvbHVtbkVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLmNhcmRDb2x1bW4uY29uZmlnLndpZHRoICsgJ3B4JztcclxuICAgIHRoaXMuY29sdW1uRWxlbWVudCA9IGNvbHVtbkVsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLXNjcm9sbC1wb3J0Jyk7XHJcblxyXG4gICAgbmV3IENvbHVtbkhlYWRlcih0aGlzLmNhcmRDb2x1bW4sIHRoaXMpO1xyXG5cclxuICAgIHRoaXMuY29sdW1uRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNhcmRTY3JvbGxQb3J0RWxlbWVudCk7XHJcbiAgICB0aGlzLmNvbHVtbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZmlsdGVyLWNhcmRzJywgKGUpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVEYXRhQnlGaWx0ZXIoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xyXG5cclxuICAgIHRoaXMucGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbHVtbkVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRFbXB0eUNhcmQgPSAoKSA9PiB7XHJcbiAgICBsZXQgZW1wdHlDYXJkcyA9IF8uZmlsdGVyKHRoaXMuY2FyZHMsIGZ1bmN0aW9uIChjYXJkKSB7IHJldHVybiAhY2FyZC5kYXRhIH0pO1xyXG4gICAgaWYgKCFlbXB0eUNhcmRzLmxlbmd0aClcclxuICAgICAgdGhpcy5jYXJkcy5wdXNoKG5ldyBUcnVDYXJkKHRoaXMuY2FyZENvbHVtbiwgdGhpcywgbnVsbCwgZmFsc2UpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdEFsbEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVFbXB0eUNhcmQgPSAoKSA9PiB7XHJcbiAgICB2YXIgZW1wdHlDYXJkcyA9IF8uZmlsdGVyKHRoaXMuY2FyZHMsIChjYXJkKSA9PiB7IHJldHVybiAhY2FyZC5kYXRhIH0pO1xyXG4gICAgaWYgKGVtcHR5Q2FyZHMubGVuZ3RoKSB7XHJcbiAgICAgIHZhciBlbXB0eUNhcmQgPSBlbXB0eUNhcmRzWzBdO1xyXG4gICAgICB2YXIgZW1wdHlDYXJkRWxlbWVudCA9IGVtcHR5Q2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudDtcclxuICAgICAgZW1wdHlDYXJkRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVtcHR5Q2FyZEVsZW1lbnQpO1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLmNhcmRzLmluZGV4T2YoZW1wdHlDYXJkc1swXSk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgICAgdGhpcy5jYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0QWxsQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5Jc1Zpc3VhbGx5RW1wdHkgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXJkcy5ldmVyeShmdW5jdGlvbiAoY2FyZCkge1xyXG4gICAgICByZXR1cm4gY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2FyZCA9IChjYXJkOiBhbnkpID0+IHtcclxuICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjYXJkLmNhcmRDb250YWluZXJFbGVtZW50KTtcclxuXHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLmRhdGEuY2FyZHMuaW5kZXhPZihjYXJkLmRhdGEpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgdGhpcy5kYXRhLmNhcmRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpbmRleCA9IHRoaXMuY2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuY2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGlmICghdGhpcy5jYXJkcy5sZW5ndGggfHwgdGhpcy5jb2x1bW5Jc1Zpc3VhbGx5RW1wdHkoKSlcclxuICAgICAgdGhpcy5hZGRFbXB0eUNhcmQoKTtcclxuXHJcbiAgICBjYXJkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YUJ5RmlsdGVyID0gKCkgPT4ge1xyXG4gICAgbGV0IGNhcmRGaWx0ZXJTdHIgPSB0aGlzLmNhcmRDb2x1bW4uY2FyZEZpbHRlclN0cjtcclxuICAgIGlmIChjYXJkRmlsdGVyU3RyKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjYXJkID0gdGhpcy5jYXJkc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKGNhcmQuZGF0YSkge1xyXG4gICAgICAgICAgbGV0IGZpbHRlclBhcnRzID0gY2FyZEZpbHRlclN0ci5zcGxpdCgvKFxccyspLykuZmlsdGVyKGZ1bmN0aW9uIChzKSB7IHJldHVybiBzLnRyaW0oKS5sZW5ndGggPiAwOyB9KTtcclxuICAgICAgICAgIGxldCBjYXJkRmlsdGVyUmVzdWx0O1xyXG4gICAgICAgICAgLy9pZiAoc2NvcGUuY29uZmlnLmNhcmRJZCkge1xyXG4gICAgICAgICAgLy8gIGNhcmRGaWx0ZXJSZXN1bHQgPSBmaWx0ZXJQYXJ0cy5ldmVyeShmdW5jdGlvbiAocGFydCkge1xyXG4gICAgICAgICAgLy8gICAgcmV0dXJuIHNjb3BlLmNvbmZpZy5jYXJkSWQoY2FyZC5kYXRhLiRlbnRpdHkpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwYXJ0KSAhPSAtMTtcclxuICAgICAgICAgIC8vICB9KTtcclxuICAgICAgICAgIC8vfSBlbHNlIHtcclxuICAgICAgICAgIC8vICBjYXJkRmlsdGVyUmVzdWx0ID0gc2NvcGUuY29uZmlnLmNhcmRGaWx0ZXIoY2FyZC5kYXRhLCBjYXJkRmlsdGVyU3RyKVxyXG4gICAgICAgICAgLy99XHJcblxyXG4gICAgICAgICAgaWYgKGNhcmRGaWx0ZXJSZXN1bHQpIHtcclxuICAgICAgICAgICAgY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNhcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGNhcmQgPSB0aGlzLmNhcmRzW2ldO1xyXG4gICAgICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBjYXJkRWxlbWVudHMgPSB0aGlzLmNvbHVtbkVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jYXJkLWNvbnRhaW5lcjpub3QoLnRydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkKTpub3QoLmVtcHR5KScpO1xyXG4gICAgaWYgKGNhcmRFbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yZW1vdmVFbXB0eUNhcmQoKTtcclxuICAgICAgaWYgKCF0aGlzLmxvY2tlZCkge1xyXG4gICAgICAgIHRoaXMucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5jb2x1bW5FbGVtZW50LCB0aGlzLnBhcmVudEVsZW1lbnQuZmlyc3RDaGlsZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkRW1wdHlDYXJkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgd2hpbGUgKHRoaXMuY2FyZHMubGVuZ3RoKSB7IHRoaXMuY2FyZHMucG9wKCk7IH07XHJcblxyXG4gICAgbGV0IGNvbHVtbkNhcmRzID0gdGhpcy5jYXJkQ29sdW1uLmNhcmRzLmZpbHRlcigoY2FyZERhdGE6IGFueSkgPT4geyByZXR1cm4gY2FyZERhdGFbdGhpcy5jYXJkQ29sdW1uLnBhcmVudFRhYmxlTmFtZSArICdSZWYnXSA9PT0gdGhpcy5kYXRhLlJlZiB9KVxyXG5cclxuICAgIGlmIChjb2x1bW5DYXJkcy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5DYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuY2FyZHMucHVzaChuZXcgVHJ1Q2FyZCh0aGlzLmNhcmRDb2x1bW4sIHRoaXMsIGNvbHVtbkNhcmRzW2ldLCBmYWxzZSkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEVtcHR5Q2FyZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsID0gKHNlbGVjdEFsbDogYm9vbGVhbikgPT4ge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNhcmRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICB0aGlzLmNhcmRzW2ldLnNlbGVjdEFsbChzZWxlY3RBbGwpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2FyZCA9IChjYXJkOiBhbnkpID0+IHtcclxuICAgIGNhcmQuZGF0YVt0aGlzLmNhcmRDb2x1bW4ua2V5XSA9IHRoaXMuZGF0YS5SZWY7XHJcbiAgICB0aGlzLmRhdGEuY2FyZHMudW5zaGlmdChjYXJkLmRhdGEpO1xyXG4gICAgdGhpcy5jYXJkcy51bnNoaWZ0KG5ldyBUcnVDYXJkKHRoaXMuY2FyZENvbHVtbiwgdGhpcywgY2FyZC5kYXRhLCB0cnVlKSk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW5IZWFkZXIge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FyZENvbHVtbjogVHJ1Q2FyZENvbHVtbiwgY29sdW1uOiBDb2x1bW4pIHtcclxuICAgIGxldCBjb2x1bW5IZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb2x1bW5IZWFkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVyJyk7XHJcblxyXG4gICAgbmV3IENvbHVtbkhlYWRlclRleHQoY2FyZENvbHVtbiwgY29sdW1uLCBjb2x1bW5IZWFkZXJFbGVtZW50KTtcclxuICAgIG5ldyBDb2x1bW5IZWFkZXJCdXR0b24oY29sdW1uLCBjb2x1bW5IZWFkZXJFbGVtZW50KTtcclxuXHJcbiAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5pbnNlcnRCZWZvcmUoY29sdW1uSGVhZGVyRWxlbWVudCwgY29sdW1uLmNvbHVtbkVsZW1lbnQuZmlyc3RDaGlsZCk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW5IZWFkZXJUZXh0IHtcclxuICBwcml2YXRlIGRhdGE6IGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sIGNvbHVtbjogQ29sdW1uLCBwYXJlbnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudCkge1xyXG4gICAgdGhpcy5kYXRhID0gY29sdW1uLmRhdGE7XHJcblxyXG4gICAgbGV0IGhlYWRlclRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICBoZWFkZXJUZXh0LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVydGV4dCcpO1xyXG5cclxuICAgIGlmICh0aGlzLmNhcmRDb2x1bW4udXNlckhhc1BhcmVudFRhYmxlUm9sZSkge1xyXG4gICAgICBoZWFkZXJUZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4geyBhbGVydCgnZ29Ub0RldGFpbCcpIH0pO1xyXG4gICAgICBoZWFkZXJUZXh0LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVydGV4dC1ob3ZlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5kYXRhPy51bmFzc2lnbmVkKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY2FyZENvbHVtbi5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRDb2x1bW5JZChjb2x1bW4uZGF0YSk7XHJcbiAgICAgIGlmICh2YWx1ZSlcclxuICAgICAgICBoZWFkZXJUZXh0LmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGE/LnVuYXNzaWduZWQgJiYgdGhpcy5jYXJkQ29sdW1uLnVuYXNzaWduZWRWaXNpYmxlKVxyXG4gICAgICBoZWFkZXJUZXh0LmlubmVySFRNTCA9IHRoaXMuY2FyZENvbHVtbi51bmFzc2lnbmVkTmFtZSA/IHRoaXMuY2FyZENvbHVtbi51bmFzc2lnbmVkTmFtZSA6ICdVbmFzc2lnbmVkJztcclxuXHJcbiAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRleHQpO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQ29sdW1uSGVhZGVyQnV0dG9uIHsgXHJcbiAgcHJpdmF0ZSBjb2x1bW46IENvbHVtbjtcclxuICBwcml2YXRlIHNlbGVjdEFsbCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb2x1bW46IENvbHVtbiwgcGFyZW50RWxlbWVudDogSFRNTERpdkVsZW1lbnQpIHtcclxuICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xyXG5cclxuICAgIHZhciBsaW5rQnV0dG9uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBsaW5rQnV0dG9uQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVyLWV4dHJhcycpO1xyXG5cclxuICAgIGxldCBsaW5rQnV0dG9uOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmtCdXR0b24uY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1oZWFkZXItZXh0cmEtYnV0dG9uJyk7XHJcbiAgICBsaW5rQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2RhcmstaG92ZXInKTtcclxuICAgIGxpbmtCdXR0b24uaHJlZiA9ICcjJztcclxuXHJcbiAgICBsZXQgbGlua0J1dHRvblRleHQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIGxpbmtCdXR0b25UZXh0LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLWljb24tc21hbGwnKTtcclxuICAgIGxpbmtCdXR0b25UZXh0LmNsYXNzTGlzdC5hZGQoJ2ljb24tY2hlY2stc3F1YXJlLW8nKTtcclxuXHJcbiAgICBsaW5rQnV0dG9uVGV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSAhdGhpcy5zZWxlY3RBbGw7XHJcbiAgICAgIHRoaXMuY29sdW1uLnNlbGVjdEFsbCh0aGlzLnNlbGVjdEFsbCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsaW5rQnV0dG9uLmFwcGVuZENoaWxkKGxpbmtCdXR0b25UZXh0KTtcclxuICAgIGxpbmtCdXR0b25Db250YWluZXIuYXBwZW5kQ2hpbGQobGlua0J1dHRvbik7XHJcblxyXG4gICAgdGhpcy5jb2x1bW4uc2VsZWN0QWxsQnV0dG9uID0gbGlua0J1dHRvbkNvbnRhaW5lcjtcclxuXHJcbiAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGxpbmtCdXR0b25Db250YWluZXIpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHJ1LWNhcmRcIj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNCdXN5XCJcclxuICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtYnVzeS1pbmRpY2F0b3JcIj5cclxuICAgIDxwPnt7YnVzeU1lc3NhZ2V9fTwvcD5cclxuICA8L2Rpdj5cclxuICA8dHJ1LXRvb2xiYXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyZW50VG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yICpuZ0lmPVwidmlld01lbnVJdGVtcy5sZW5ndGhcIj48L3RydS10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3TWVudUl0ZW1zLmxlbmd0aFwiPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItbWVudSAqbmdGb3I9XCJsZXQgdmlld01lbnVJdGVtIG9mIHZpZXdNZW51SXRlbXNcIiBbY29uZmlnXT1cInZpZXdNZW51SXRlbVwiPjwvdHJ1LXRvb2xiYXItbWVudT5cclxuICAgIDwvZGl2PlxyXG4gIDwvdHJ1LXRvb2xiYXI+XHJcbiAgPCEtLTx0cnUtdG9vbGJhciBbY29uZmlnXT1cImNvbmZpZy50b29sYmFyQ29uZmlnXCIgY2xhc3M9XCJtYWluLXRvb2xiYXJcIj48L3RydS10b29sYmFyPi0tPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWxcIiAjY2FyZFBvcnRhbD5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieyd3aWR0aCc6ICgoY29uZmlnLndpZHRoICogbG9ja2VkQ29sdW1ucy5sZW5ndGgpICsgKDEwICogbG9ja2VkQ29sdW1ucy5sZW5ndGggLSAxKSkgKyAncHgnIH1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyd0cnUtY2FyZC1wb3J0YWwtbG9ja2VkLWNvbHVtbnMtZGl2aWRlcic6IGxvY2tlZENvbHVtbnMubGVuZ3RofVwiXHJcbiAgICAgICAgICAqbmdJZj1cImxvY2tlZENvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtcG9ydGFsLWxvY2tlZC1jb2x1bW5zIGxvY2tlZC1jb2x1bW5zXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieydsZWZ0JzogbG9ja2VkQ29sdW1ucy5sZW5ndGggPyAoKGNvbmZpZy53aWR0aCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoKSArICgxMCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoIC0gMSkgKyAyMikgKyAncHgnIDogMCB9XCJcclxuICAgICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMgdW5sb2NrZWQtY29sdW1uc1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -104,11 +104,11 @@ export class TruCard {
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
let index = _.findIndex(cards, function (i) {
|
|
107
|
-
return i.Ref === ref;
|
|
107
|
+
return i.$entity.Ref === ref;
|
|
108
108
|
});
|
|
109
109
|
if (index === -1)
|
|
110
110
|
throw new Error('Card column does not have a valid card index.');
|
|
111
111
|
this.cardColumn.config.onCardDoubleClicked(cards, index);
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2FyZC1jb2x1bW4vdHJ1LWNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBRzNCLE1BQU0sT0FBTyxPQUFPO0lBU1I7SUFSRixvQkFBb0IsQ0FBaUI7SUFFN0MsSUFBSSxDQUFDO0lBQ0wsTUFBTSxDQUFDO0lBQ1AsV0FBVyxDQUFpQjtJQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLFlBQ1UsVUFBeUIsRUFDakMsTUFBVyxFQUNYLElBQVMsRUFDVCxPQUFnQjtRQUhSLGVBQVUsR0FBVixVQUFVLENBQWU7UUFLakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUUxRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxXQUFX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LENBQUMsQ0FBQztRQUMvRSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUN4QyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFBO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gXCJ1bmRlcnNjb3JlXCI7XHJcbmltcG9ydCB7IFRydUNhcmRDb2x1bW4gfSBmcm9tIFwiLi90cnUtY2FyZC1jb2x1bW5cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUcnVDYXJkIHtcclxuICBwcml2YXRlIGNhcmRDb250YWluZXJFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgZGF0YTtcclxuICBjb2x1bW47XHJcbiAgY2FyZEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHNlbGVjdGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXJkQ29sdW1uOiBUcnVDYXJkQ29sdW1uLFxyXG4gICAgY29sdW1uOiBhbnksXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBkcm9wcGVkOiBib29sZWFuKSB7XHJcblxyXG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XHJcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG5cclxuICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyJyk7XHJcblxyXG4gICAgaWYgKGRyb3BwZWQpIHtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhbmltYXRlZCcpO1xyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3J1YmJlckJhbmQnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnZHJhZ2dhYmxlJywgJ3RydWUnKTtcclxuICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKCdkcm9wcGFibGUnLCAndHJ1ZScpO1xyXG5cclxuICAgIHRoaXMuY2FyZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNhcmQnKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29sdW1uLmRhdGE/LnVuYXNzaWduZWQpXHJcbiAgICAgIHRoaXMuY2FyZEVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jYXJkQ29sdW1uLmNvbG9yID8gdGhpcy5jYXJkQ29sdW1uLmNvbG9yIDogJyNmZmYnO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNhcmRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY2FyZENvbHVtbi51bmFzc2lnbmVkQ29sb3IgPyB0aGlzLmNhcmRDb2x1bW4udW5hc3NpZ25lZENvbG9yIDogJyNmZmYnO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnU3RhcnQoZSwgdGhpcyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyYWdPdmVyKGUsIHRoaXMpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyYWdFbmQoZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4uZHJvcChlLCB0aGlzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4udXBkYXRlU2VsZWN0aW9uKHRoaXMpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nb1RvRGV0YWlsKHRoaXMuZGF0YS5SZWYpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnT3ZlcihlLCB0aGlzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnRW5kKGUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyb3AoZSwgdGhpcyk7XHJcbiAgICAgICAgaWYgKCFlLmRlZmF1bHRQcmV2ZW50ZWQpXHJcbiAgICAgICAgICB0aGlzLmNvbHVtbi5yZW1vdmVFbXB0eUNhcmQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZURhdGEoKTtcclxuICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jYXJkRWxlbWVudCk7XHJcblxyXG4gICAgaWYgKGRyb3BwZWQpXHJcbiAgICAgIHRoaXMuY29sdW1uLmNhcmRTY3JvbGxQb3J0RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudCwgdGhpcy5jb2x1bW4uY2FyZFNjcm9sbFBvcnRFbGVtZW50LmZpcnN0Q2hpbGQpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNvbHVtbi5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGwgPSAoc2VsZWN0QWxsOiBhbnkpID0+IHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RBbGw7XHJcbiAgICB0aGlzLmNhcmRDb2x1bW4udXBkYXRlU2VsZWN0aW9uKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGF0YSA9ICgpID0+IHtcclxuICAgIHRoaXMuY2FyZEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICB0aGlzLmNhcmRDb2x1bW4ucmVtb3ZlU2VsZWN0aW9uKHRoaXMpXHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAodGhpcy5jYXJkQ29sdW1uLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFZpZXcpIHtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4uY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkVmlldyh0aGlzLCB0aGlzLmNhcmRDb2x1bW4uY29uZmlnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgY2FyZFRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jYXJkQ29sdW1uLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZElkKHRoaXMuZGF0YSk7XHJcbiAgICAgICAgaWYgKHZhbHVlKVxyXG4gICAgICAgICAgY2FyZFRleHQuaW5uZXJIVE1MID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jYXJkRWxlbWVudC5hcHBlbmRDaGlsZChjYXJkVGV4dCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKCdkcmFnZ2FibGUnLCAnZmFsc2UnKTtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdlbXB0eScpO1xyXG4gICAgICB0aGlzLmNhcmRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2VtcHR5Jyk7XHJcblxyXG4gICAgICB2YXIgY2FyZENvbnRhaW5lckVtcHR5VGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcclxuICAgICAgY2FyZENvbnRhaW5lckVtcHR5VGV4dC5jbGFzc0xpc3QuYWRkKCdleGNsdWRlLWZyb20tZmlsdGVyJyk7XHJcbiAgICAgIGNhcmRDb250YWluZXJFbXB0eVRleHQuaW5uZXJIVE1MID0gJ0RyYWcgaXRlbXMgaGVyZSc7XHJcblxyXG4gICAgICB0aGlzLmNhcmRFbGVtZW50LmFwcGVuZENoaWxkKGNhcmRDb250YWluZXJFbXB0eVRleHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub0RldGFpbCA9IChyZWY6IG51bWJlcikgPT4ge1xyXG4gICAgbGV0IGFsbENvbHVtbnMgPSB0aGlzLmNhcmRDb2x1bW4ubG9ja2VkQ29sdW1ucy5jb25jYXQodGhpcy5jYXJkQ29sdW1uLmNvbHVtbnMpO1xyXG4gICAgbGV0IGNhcmRzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbENvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhbGxDb2x1bW5zW2ldLmNhcmRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgY2FyZHMucHVzaChhbGxDb2x1bW5zW2ldLmNhcmRzW2pdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbmRleCA9IF8uZmluZEluZGV4KGNhcmRzLCBmdW5jdGlvbiAoaSkge1xyXG4gICAgICByZXR1cm4gaS5SZWYgPT09IHJlZlxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGluZGV4ID09PSAtMSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYXJkIGNvbHVtbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY2FyZCBpbmRleC4nKTtcclxuXHJcbiAgICB0aGlzLmNhcmRDb2x1bW4uY29uZmlnLm9uQ2FyZERvdWJsZUNsaWNrZWQoY2FyZHMsIGluZGV4KTtcclxuICB9XHJcbn1cclxuIl19
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2FyZC1jb2x1bW4vdHJ1LWNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBRzNCLE1BQU0sT0FBTyxPQUFPO0lBU1I7SUFSRixvQkFBb0IsQ0FBaUI7SUFFN0MsSUFBSSxDQUFDO0lBQ0wsTUFBTSxDQUFDO0lBQ1AsV0FBVyxDQUFpQjtJQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLFlBQ1UsVUFBeUIsRUFDakMsTUFBVyxFQUNYLElBQVMsRUFDVCxPQUFnQjtRQUhSLGVBQVUsR0FBVixVQUFVLENBQWU7UUFLakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUUxRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxXQUFX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LENBQUMsQ0FBQztRQUMvRSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUN4QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tIFwidW5kZXJzY29yZVwiO1xyXG5pbXBvcnQgeyBUcnVDYXJkQ29sdW1uIH0gZnJvbSBcIi4vdHJ1LWNhcmQtY29sdW1uXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJ1Q2FyZCB7XHJcbiAgcHJpdmF0ZSBjYXJkQ29udGFpbmVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGRhdGE7XHJcbiAgY29sdW1uO1xyXG4gIGNhcmRFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICBzZWxlY3RlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FyZENvbHVtbjogVHJ1Q2FyZENvbHVtbixcclxuICAgIGNvbHVtbjogYW55LFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZHJvcHBlZDogYm9vbGVhbikge1xyXG5cclxuICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xyXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcclxuXHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWNvbnRhaW5lcicpO1xyXG5cclxuICAgIGlmIChkcm9wcGVkKSB7XHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYW5pbWF0ZWQnKTtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdydWJiZXJCYW5kJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RyYWdnYWJsZScsICd0cnVlJyk7XHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnZHJvcHBhYmxlJywgJ3RydWUnKTtcclxuXHJcbiAgICB0aGlzLmNhcmRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLmNhcmRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkJyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbHVtbi5kYXRhPy51bmFzc2lnbmVkKVxyXG4gICAgICB0aGlzLmNhcmRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY2FyZENvbHVtbi5jb2xvciA/IHRoaXMuY2FyZENvbHVtbi5jb2xvciA6ICcjZmZmJztcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jYXJkRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNhcmRDb2x1bW4udW5hc3NpZ25lZENvbG9yID8gdGhpcy5jYXJkQ29sdW1uLnVuYXNzaWduZWRDb2xvciA6ICcjZmZmJztcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0JywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4uZHJhZ1N0YXJ0KGUsIHRoaXMpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnT3ZlcihlLCB0aGlzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnRW5kKGUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyb3AoZSwgdGhpcyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLnVwZGF0ZVNlbGVjdGlvbih0aGlzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ29Ub0RldGFpbCh0aGlzLmRhdGEuUmVmKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4uZHJhZ092ZXIoZSwgdGhpcyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW5kJywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4uZHJhZ0VuZChlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcm9wKGUsIHRoaXMpO1xyXG4gICAgICAgIGlmICghZS5kZWZhdWx0UHJldmVudGVkKVxyXG4gICAgICAgICAgdGhpcy5jb2x1bW4ucmVtb3ZlRW1wdHlDYXJkKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2FyZEVsZW1lbnQpO1xyXG5cclxuICAgIGlmIChkcm9wcGVkKVxyXG4gICAgICB0aGlzLmNvbHVtbi5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQsIHRoaXMuY29sdW1uLmNhcmRTY3JvbGxQb3J0RWxlbWVudC5maXJzdENoaWxkKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jb2x1bW4uY2FyZFNjcm9sbFBvcnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsID0gKHNlbGVjdEFsbDogYW55KSA9PiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0QWxsO1xyXG4gICAgdGhpcy5jYXJkQ29sdW1uLnVwZGF0ZVNlbGVjdGlvbih0aGlzKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURhdGEgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNhcmRFbGVtZW50LmlubmVySFRNTCA9ICcnO1xyXG4gICAgdGhpcy5jYXJkQ29sdW1uLnJlbW92ZVNlbGVjdGlvbih0aGlzKVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2FyZENvbHVtbi5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRWaWV3KSB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFZpZXcodGhpcywgdGhpcy5jYXJkQ29sdW1uLmNvbmZpZyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIGNhcmRUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY2FyZENvbHVtbi5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRJZCh0aGlzLmRhdGEpO1xyXG4gICAgICAgIGlmICh2YWx1ZSlcclxuICAgICAgICAgIGNhcmRUZXh0LmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuY2FyZEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FyZFRleHQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnZHJhZ2dhYmxlJywgJ2ZhbHNlJyk7XHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZW1wdHknKTtcclxuICAgICAgdGhpcy5jYXJkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdlbXB0eScpO1xyXG5cclxuICAgICAgdmFyIGNhcmRDb250YWluZXJFbXB0eVRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICAgIGNhcmRDb250YWluZXJFbXB0eVRleHQuY2xhc3NMaXN0LmFkZCgnZXhjbHVkZS1mcm9tLWZpbHRlcicpO1xyXG4gICAgICBjYXJkQ29udGFpbmVyRW1wdHlUZXh0LmlubmVySFRNTCA9ICdEcmFnIGl0ZW1zIGhlcmUnO1xyXG5cclxuICAgICAgdGhpcy5jYXJkRWxlbWVudC5hcHBlbmRDaGlsZChjYXJkQ29udGFpbmVyRW1wdHlUZXh0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9EZXRhaWwgPSAocmVmOiBudW1iZXIpID0+IHtcclxuICAgIGxldCBhbGxDb2x1bW5zID0gdGhpcy5jYXJkQ29sdW1uLmxvY2tlZENvbHVtbnMuY29uY2F0KHRoaXMuY2FyZENvbHVtbi5jb2x1bW5zKTtcclxuICAgIGxldCBjYXJkcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxDb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWxsQ29sdW1uc1tpXS5jYXJkcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGNhcmRzLnB1c2goYWxsQ29sdW1uc1tpXS5jYXJkc1tqXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgaW5kZXggPSBfLmZpbmRJbmRleChjYXJkcywgZnVuY3Rpb24gKGkpIHtcclxuICAgICAgcmV0dXJuIGkuJGVudGl0eS5SZWYgPT09IHJlZlxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGluZGV4ID09PSAtMSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYXJkIGNvbHVtbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY2FyZCBpbmRleC4nKTtcclxuXHJcbiAgICB0aGlzLmNhcmRDb2x1bW4uY29uZmlnLm9uQ2FyZERvdWJsZUNsaWNrZWQoY2FyZHMsIGluZGV4KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -3646,6 +3646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
3646
3646
|
}] });
|
|
3647
3647
|
|
|
3648
3648
|
class TruCardColumnData {
|
|
3649
|
+
$entity;
|
|
3649
3650
|
}
|
|
3650
3651
|
|
|
3651
3652
|
class TruCardColumnSearchResultsConfigBase {
|
|
@@ -3756,7 +3757,7 @@ class TruCard {
|
|
|
3756
3757
|
}
|
|
3757
3758
|
}
|
|
3758
3759
|
let index = ___default.findIndex(cards, function (i) {
|
|
3759
|
-
return i.Ref === ref;
|
|
3760
|
+
return i.$entity.Ref === ref;
|
|
3760
3761
|
});
|
|
3761
3762
|
if (index === -1)
|
|
3762
3763
|
throw new Error('Card column does not have a valid card index.');
|
|
@@ -3944,6 +3945,7 @@ class TruCardColumn {
|
|
|
3944
3945
|
parentTableModel = null; //dataService.model.tables[parentTableName];
|
|
3945
3946
|
createDataForEntity = (entity) => {
|
|
3946
3947
|
var data = this.config.resultConfig.rowDataEnhancer();
|
|
3948
|
+
data.$entity = entity;
|
|
3947
3949
|
return data;
|
|
3948
3950
|
};
|
|
3949
3951
|
hasUndefinedChildren = (entity) => {
|