@trudb/tru-common-lib 0.1.511 → 0.1.513
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/base-views/search-result/tru-search-result-view-base.mjs +12 -1
- package/esm2022/lib/components/card-column/classes/tru-card-column-config.mjs +1 -1
- package/esm2022/lib/components/card-column/tru-card-column.mjs +2 -2
- package/esm2022/lib/components/toolbar/button/tru-toolbar-button.mjs +2 -2
- package/esm2022/lib/components/toolbar/context-filter/tru-toolbar-context-filter.mjs +2 -2
- package/esm2022/lib/components/toolbar/dropdown/tru-toolbar-dropdown.mjs +2 -2
- package/esm2022/lib/components/toolbar/text/tru-toolbar-text.mjs +2 -2
- package/esm2022/lib/components/toolbar/textbox/tru-toolbar-textbox.mjs +2 -2
- package/esm2022/lib/components/toolbar/tru-toolbar.mjs +2 -2
- package/fesm2022/trudb-tru-common-lib.mjs +24 -13
- package/fesm2022/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/base-views/search-result/tru-search-result-view-base.d.ts +1 -0
- package/lib/components/card-column/classes/tru-card-column-config.d.ts +1 -0
- package/package.json +1 -1
|
@@ -39,6 +39,17 @@ export class TruSearchResultViewBase {
|
|
|
39
39
|
this.uiNotification.confirm('No Detail View', this.tablePluralLabel + ' does not have a detail view.', false, true, "", "Ok").then(() => { });
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
+
onCardColumnClicked = (entities) => {
|
|
43
|
+
if (this.hasDetailView) {
|
|
44
|
+
let windowAddViewEventArgs = new TruDesktopViewConfig();
|
|
45
|
+
windowAddViewEventArgs.entities = entities;
|
|
46
|
+
windowAddViewEventArgs.componentName = this.tableName + 'DetailView';
|
|
47
|
+
this.truWindowEventHandler.addView(windowAddViewEventArgs);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.uiNotification.confirm('No Detail View', this.tablePluralLabel + ' does not have a detail view.', false, true, "", "Ok").then(() => { });
|
|
51
|
+
}
|
|
52
|
+
};
|
|
42
53
|
onCardDoubleClicked = (entities, index) => {
|
|
43
54
|
if (this.hasDetailView) {
|
|
44
55
|
let windowAddViewEventArgs = new TruDesktopViewConfig();
|
|
@@ -60,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
60
71
|
}], ctorParameters: () => [{ type: i1.TruUiNotification }, { type: i2.TruWindowEventHandler }], propDecorators: { view: [{
|
|
61
72
|
type: Input
|
|
62
73
|
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLXZpZXdzL3NlYXJjaC1yZXN1bHQvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1iYXNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLXZpZXdzL3NlYXJjaC1yZXN1bHQvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1iYXNlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMERBQTBELENBQUM7Ozs7QUFRaEcsTUFBTSxPQUFPLHVCQUF1QjtJQWtCeEI7SUFDQTtJQWxCRCxJQUFJLENBQU07SUFFVCxTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLGVBQWUsR0FBVyxFQUFFLENBQUM7SUFDN0IsZ0JBQWdCLEdBQVcsRUFBRSxDQUFDO0lBQzlCLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFFeEMsaUJBQWlCLEdBQUc7UUFDbEIsSUFBSSxFQUFFLE9BQU87UUFDYixNQUFNLEVBQUUsSUFBSTtRQUNaLElBQUksRUFBRSxJQUFJO1FBQ1YsV0FBVyxFQUFFLEVBQUU7UUFDZixJQUFJLEVBQUUsR0FBRztRQUNULE1BQU0sRUFBRSxLQUFLO0tBQ2QsQ0FBQTtJQUVELFlBQ1UsY0FBaUMsRUFDakMscUJBQTRDO1FBRDVDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO0lBQ3RELENBQUM7SUFFRCx1QkFBdUIsR0FBRyxDQUFDLFVBQWUsRUFBRSxFQUFFO1FBQzVDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lB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ICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydURlc2t0b3BWaWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNrdG9wL2NsYXNzZXMvdHJ1LWRlc2t0b3Atdmlldy1jb25maWcnO1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS11aS1ub3RpZmljYXRpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtc2VhcmNoLXJlc3VsdC12aWV3LWJhc2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtc2VhcmNoLXJlc3VsdC12aWV3LWJhc2UuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1iYXNlLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVTZWFyY2hSZXN1bHRWaWV3QmFzZSB7XHJcbiAgQElucHV0KCkgdmlldzogYW55O1xyXG5cclxuICBwcm90ZWN0ZWQgdGFibGVOYW1lOiBzdHJpbmcgPSAnJztcclxuICBwcm90ZWN0ZWQgdGFibGVQbHVyYWxOYW1lOiBzdHJpbmcgPSAnJztcclxuICBwcm90ZWN0ZWQgdGFibGVQbHVyYWxMYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIGhhc0RldGFpbFZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBzZWFyY2hQYW5lbENvbmZpZyA9IHtcclxuICAgIHNpZGU6ICdyaWdodCcsXHJcbiAgICBhY3RpdmU6IHRydWUsXHJcbiAgICBvcGVuOiB0cnVlLFxyXG4gICAgbW9kS2V5TGFiZWw6ICcnLFxyXG4gICAgc2l6ZTogNTAwLFxyXG4gICAgcGlubmVkOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIHByaXZhdGUgdHJ1V2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIpIHtcclxuICB9XHJcblxyXG4gIG9uUGtleUNlbGxEb3VibGVDbGlja2VkID0gKGdyaWRDb25maWc6IGFueSkgPT4ge1xyXG4gICAgaWYgKHRoaXMuaGFzRGV0YWlsVmlldykge1xyXG4gICAgICBsZXQgZW50aXRpZXM6IGFueSA9IFtdO1xyXG4gICAgICBncmlkQ29uZmlnLmFwaS5mb3JFYWNoTm9kZUFmdGVyRmlsdGVyQW5kU29ydCgocm93Tm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgZW50aXRpZXMucHVzaChyb3dOb2RlLmRhdGEuJGVudGl0eSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgd2luZG93QWRkVmlld0V2ZW50QXJncyA9IG5ldyBUcnVEZXNrdG9wVmlld0NvbmZpZygpO1xyXG4gICAgICB3aW5kb3dBZGRWaWV3RXZlbnRBcmdzLmVudGl0aWVzID0gZW50aXRpZXM7XHJcbiAgICAgIHdpbmRvd0FkZFZpZXdFdmVudEFyZ3MuZW50aXR5SW5kZXggPSBncmlkQ29uZmlnLnJvd0luZGV4O1xyXG4gICAgICB3aW5kb3dBZGRWaWV3RXZlbnRBcmdzLmNvbXBvbmVudE5hbWUgPSB0aGlzLnRhYmxlTmFtZSArICdEZXRhaWxWaWV3JztcclxuICAgICAgdGhpcy50cnVXaW5kb3dFdmVudEhhbmRsZXIuYWRkVmlldyh3aW5kb3dBZGRWaWV3RXZlbnRBcmdzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uY29uZmlybSgnTm8gRGV0YWlsIFZpZXcnLCB0aGlzLnRhYmxlUGx1cmFsTGFiZWwgKyAnIGRvZXMgbm90IGhhdmUgYSBkZXRhaWwgdmlldy4nLCBmYWxzZSwgdHJ1ZSwgXCJcIiwgXCJPa1wiKS50aGVuKCgpID0+IHsgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNhcmRDb2x1bW5DbGlja2VkID0gKGVudGl0aWVzOiBhbnkpID0+IHtcclxuICAgIGlmICh0aGlzLmhhc0RldGFpbFZpZXcpIHtcclxuICAgICAgbGV0IHdpbmRvd0FkZFZpZXdFdmVudEFyZ3MgPSBuZXcgVHJ1RGVza3RvcFZpZXdDb25maWcoKTtcclxuICAgICAgd2luZG93QWRkVmlld0V2ZW50QXJncy5lbnRpdGllcyA9IGVudGl0aWVzO1xyXG4gICAgICB3aW5kb3dBZGRWaWV3RXZlbnRBcmdzLmNvbXBvbmVudE5hbWUgPSB0aGlzLnRhYmxlTmFtZSArICdEZXRhaWxWaWV3JztcclxuICAgICAgdGhpcy50cnVXaW5kb3dFdmVudEhhbmRsZXIuYWRkVmlldyh3aW5kb3dBZGRWaWV3RXZlbnRBcmdzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uY29uZmlybSgnTm8gRGV0YWlsIFZpZXcnLCB0aGlzLnRhYmxlUGx1cmFsTGFiZWwgKyAnIGRvZXMgbm90IGhhdmUgYSBkZXRhaWwgdmlldy4nLCBmYWxzZSwgdHJ1ZSwgXCJcIiwgXCJPa1wiKS50aGVuKCgpID0+IHsgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNhcmREb3VibGVDbGlja2VkID0gKGVudGl0aWVzOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgIGlmICh0aGlzLmhhc0RldGFpbFZpZXcpIHtcclxuICAgICAgbGV0IHdpbmRvd0FkZFZpZXdFdmVudEFyZ3MgPSBuZXcgVHJ1RGVza3RvcFZpZXdDb25maWcoKTtcclxuICAgICAgd2luZG93QWRkVmlld0V2ZW50QXJncy5lbnRpdGllcyA9IGVudGl0aWVzO1xyXG4gICAgICB3aW5kb3dBZGRWaWV3RXZlbnRBcmdzLmVudGl0eUluZGV4ID0gaW5kZXg7XHJcbiAgICAgIHdpbmRvd0FkZFZpZXdFdmVudEFyZ3MuY29tcG9uZW50TmFtZSA9IHRoaXMudGFibGVOYW1lICsgJ0RldGFpbFZpZXcnO1xyXG4gICAgICB0aGlzLnRydVdpbmRvd0V2ZW50SGFuZGxlci5hZGRWaWV3KHdpbmRvd0FkZFZpZXdFdmVudEFyZ3MpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5jb25maXJtKCdObyBEZXRhaWwgVmlldycsIHRoaXMudGFibGVQbHVyYWxMYWJlbCArICcgZG9lcyBub3QgaGF2ZSBhIGRldGFpbCB2aWV3LicsIGZhbHNlLCB0cnVlLCBcIlwiLCBcIk9rXCIpLnRoZW4oKCkgPT4geyB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi9jbGFzc2VzL3RydS1jYXJkLWNvbHVtbi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBUcnVUYWJsZUNvbmZpZ0Jhc2UgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1jbGFzc2VzL3RydS10YWJsZS1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVWaWV3TWVudUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL3RydS12aWV3LW1lbnUtY29uZmlnXCI7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVDYXJkQ29sdW1uRGF0YSB9IGZyb20gXCIuL3RydS1jYXJkLWNvbHVtbi1kYXRhXCI7XHJcbmltcG9ydCB7IEVudGl0eVF1ZXJ5IH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgVHJ1Q29tcG9uZW50Q29uZmlnQmFzZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlLWNsYXNzZXMvdHJ1LWNvbXBvbmVudC1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVDYXJkQ29sdW1uU2VhcmNoUmVzdWx0c0NvbmZpZ0Jhc2UgfSBmcm9tIFwiLi90cnUtY2FyZC1jb2x1bW4tc2VhcmNoLXJlc3VsdHMtY29uZmlnLWJhc2VcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRydUNhcmRDb2x1bW5Db25maWcge1xyXG4gIHBhcmVudFRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIHBhcmVudFRhYmxlUGx1cmFsTGFiZWw6IHN0cmluZztcclxuICBwYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZTogc3RyaW5nO1xyXG4gIGNoaWxkVGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgY2hpbGRUYWJsZVBsdXJhbExhYmVsOiBzdHJpbmc7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgbG9ja1Byb3BlcnR5OiBzdHJpbmcgfCBudWxsO1xyXG4gIHByZXZlbnRBZGQ6IGJvb2xlYW47XHJcbiAgY29sb3I6IHN0cmluZyB8IG51bGw7XHJcbiAgdW5hc3NpZ25lZFZpc2libGU6IGFueTtcclxuICB1bmFzc2lnbmVkTmFtZTogc3RyaW5nIHwgbnVsbDtcclxuICB1bmFzc2lnbmVkTG9ja2VkOiBhbnk7XHJcbiAgdW5hc3NpZ25lZENvbG9yOiBzdHJpbmcgfCBudWxsO1xyXG4gIHVuYXNzaWduZWREcmFnZ2FibGU6IGJvb2xlYW47XHJcbiAgdW5hc3NpZ25lZERyb3BwYWJsZTogYm9vbGVhbjtcclxuICBpbmFjdGl2ZVZpc2libGU6IGJvb2xlYW47XHJcbiAgaW5hY3RpdmVEcmFnZ2FibGU6IGJvb2xlYW47XHJcbiAgaW5hY3RpdmVEcm9wcGFibGU6IGJvb2xlYW47XHJcbiAgcmVzdWx0Q29uZmlnOiBUcnVDYXJkQ29sdW1uU2VhcmNoUmVzdWx0c0NvbmZpZ0Jhc2U7XHJcbiAgdmlld01lbnVDb25maWc6IFRydVZpZXdNZW51Q29uZmlnO1xyXG4gIHdpZHRoOiBudW1iZXI7XHJcblxyXG4gIGNvbHVtblNvcnQ/OiAoY29sdW1uczogQXJyYXk8YW55PikgPT4gYW55O1xyXG4gIGNhcmRTb3J0PzogKGNhcmRzOiBBcnJheTxhbnk+KSA9PiBhbnk7XHJcbiAgZGF0YT86IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IFRydUNhcmRDb2x1bW5EYXRhO1xyXG4gIHF1ZXJ5PzogKGJyZWV6ZVF1ZXJ5OiBFbnRpdHlRdWVyeSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpID0+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi9jbGFzc2VzL3RydS1jYXJkLWNvbHVtbi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBUcnVUYWJsZUNvbmZpZ0Jhc2UgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1jbGFzc2VzL3RydS10YWJsZS1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVWaWV3TWVudUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL3RydS12aWV3LW1lbnUtY29uZmlnXCI7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVDYXJkQ29sdW1uRGF0YSB9IGZyb20gXCIuL3RydS1jYXJkLWNvbHVtbi1kYXRhXCI7XHJcbmltcG9ydCB7IEVudGl0eVF1ZXJ5IH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgVHJ1Q29tcG9uZW50Q29uZmlnQmFzZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlLWNsYXNzZXMvdHJ1LWNvbXBvbmVudC1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVDYXJkQ29sdW1uU2VhcmNoUmVzdWx0c0NvbmZpZ0Jhc2UgfSBmcm9tIFwiLi90cnUtY2FyZC1jb2x1bW4tc2VhcmNoLXJlc3VsdHMtY29uZmlnLWJhc2VcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRydUNhcmRDb2x1bW5Db25maWcge1xyXG4gIHBhcmVudFRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIHBhcmVudFRhYmxlUGx1cmFsTGFiZWw6IHN0cmluZztcclxuICBwYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZTogc3RyaW5nO1xyXG4gIGNoaWxkVGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgY2hpbGRUYWJsZVBsdXJhbExhYmVsOiBzdHJpbmc7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgbG9ja1Byb3BlcnR5OiBzdHJpbmcgfCBudWxsO1xyXG4gIHByZXZlbnRBZGQ6IGJvb2xlYW47XHJcbiAgY29sb3I6IHN0cmluZyB8IG51bGw7XHJcbiAgdW5hc3NpZ25lZFZpc2libGU6IGFueTtcclxuICB1bmFzc2lnbmVkTmFtZTogc3RyaW5nIHwgbnVsbDtcclxuICB1bmFzc2lnbmVkTG9ja2VkOiBhbnk7XHJcbiAgdW5hc3NpZ25lZENvbG9yOiBzdHJpbmcgfCBudWxsO1xyXG4gIHVuYXNzaWduZWREcmFnZ2FibGU6IGJvb2xlYW47XHJcbiAgdW5hc3NpZ25lZERyb3BwYWJsZTogYm9vbGVhbjtcclxuICBpbmFjdGl2ZVZpc2libGU6IGJvb2xlYW47XHJcbiAgaW5hY3RpdmVEcmFnZ2FibGU6IGJvb2xlYW47XHJcbiAgaW5hY3RpdmVEcm9wcGFibGU6IGJvb2xlYW47XHJcbiAgcmVzdWx0Q29uZmlnOiBUcnVDYXJkQ29sdW1uU2VhcmNoUmVzdWx0c0NvbmZpZ0Jhc2U7XHJcbiAgdmlld01lbnVDb25maWc6IFRydVZpZXdNZW51Q29uZmlnO1xyXG4gIHdpZHRoOiBudW1iZXI7XHJcblxyXG4gIGNvbHVtblNvcnQ/OiAoY29sdW1uczogQXJyYXk8YW55PikgPT4gYW55O1xyXG4gIGNhcmRTb3J0PzogKGNhcmRzOiBBcnJheTxhbnk+KSA9PiBhbnk7XHJcbiAgZGF0YT86IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IFRydUNhcmRDb2x1bW5EYXRhO1xyXG4gIHF1ZXJ5PzogKGJyZWV6ZVF1ZXJ5OiBFbnRpdHlRdWVyeSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpID0+IGFueTtcclxuXHJcbiAgb25DYXJkQ29sdW1uQ2xpY2tlZDogKGVudGl0aWVzOiBhbnkpID0+IHZvaWQ7XHJcbiAgb25DYXJkRG91YmxlQ2xpY2tlZDogKGVudGl0aWVzOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XHJcbn1cclxuIl19
|
|
@@ -756,7 +756,7 @@ class ColumnHeaderText {
|
|
|
756
756
|
let headerText = document.createElement('p');
|
|
757
757
|
headerText.classList.add('tru-card-portal-column-headertext');
|
|
758
758
|
if (this.cardColumn.userHasParentTableRole) {
|
|
759
|
-
headerText.addEventListener('click', () => {
|
|
759
|
+
headerText.addEventListener('click', () => { cardColumn.config.onCardColumnClicked(column.data); });
|
|
760
760
|
headerText.classList.add('tru-card-portal-column-headertext-hover');
|
|
761
761
|
}
|
|
762
762
|
if (!this.data?.unassigned) {
|
|
@@ -793,4 +793,4 @@ class ColumnHeaderButton {
|
|
|
793
793
|
parentElement.appendChild(linkButtonContainer);
|
|
794
794
|
}
|
|
795
795
|
}
|
|
796
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL3RydS1jYXJkLWNvbHVtbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi90cnUtY2FyZC1jb2x1bW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtwQyxPQUFPLEVBQWdCLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7O0FBUXJDLE1BQU0sT0FBTyxhQUFhO0lBb0RkO0lBQ0E7SUFDQTtJQUNBO0lBdERELE1BQU0sQ0FBdUI7SUFDN0IsSUFBSSxDQUFPO0lBRXdCLE1BQU0sQ0FBYztJQUV4RCxzQkFBc0IsQ0FBVTtJQUNoQyxjQUFjLENBQVU7SUFDeEIsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixZQUFZLENBQWlCO0lBRTdCLGdCQUFnQixDQUFVO0lBQzFCLG1CQUFtQixDQUFXO0lBQzlCLG1CQUFtQixDQUFXO0lBRTlCLGVBQWUsQ0FBVztJQUMxQixpQkFBaUIsQ0FBVztJQUM1QixpQkFBaUIsQ0FBVztJQUU1QixVQUFVLENBQXNDO0lBQ2hELFFBQVEsQ0FBb0M7SUFFNUMsaUJBQWlCLENBQVU7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QyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsbUJBQW1CLENBQUM7UUFFbEQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgYnJlZXplIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZSc7XHJcbmltcG9ydCB7IFRydU1vZGVsVHlwZUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC10eXBlLWxvb2t1cCc7XHJcbmltcG9ydCB7IElUcnVDYXJkQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL3RydS1jYXJkLWNvbHVtbi1jb25maWcnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZvcmtKb2luLCBza2lwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9iYXNlLXZpZXdzL3NlYXJjaC9zZXJ2aWNlcy90cnUtc2VhcmNoLXZpZXctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1Q2FyZCB9IGZyb20gJy4vdHJ1LWNhcmQnO1xyXG5pbXBvcnQgeyBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vdG9vbGJhci9jbGFzc2VzL3RydS10b29sYmFyLWRyb3Bkb3duLW9wdGlvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1jYXJkLWNvbHVtbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1jYXJkLWNvbHVtbi5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtY2FyZC1jb2x1bW4uY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUNhcmRDb2x1bW4ge1xyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IElUcnVDYXJkQ29sdW1uQ29uZmlnXHJcbiAgQElucHV0KCkgbmFtZSE6IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2FyZFBvcnRhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3J0YWwhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIHBhcmVudFRhYmxlUGx1cmFsTGFiZWwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjaGlsZFRhYmxlTmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIHBhcmVudFF1ZXJ5ID0gbnVsbDtcclxuICBwcml2YXRlIGxvY2tQcm9wZXJ0eSE6IHN0cmluZyB8IG51bGw7XHJcbiBcclxuICBwcml2YXRlIHVuYXNzaWduZWRMb2NrZWQhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkRHJhZ2dhYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIHVuYXNzaWduZWREcm9wcGFibGUhOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIGluYWN0aXZlVmlzaWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBpbmFjdGl2ZURyYWdnYWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBpbmFjdGl2ZURyb3BwYWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgY29sdW1uU29ydDogKChjb2x1bW5zOiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBjYXJkU29ydDogKChjYXJkczogYW55KSA9PiBhbnkpIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIHJlbGF0ZWRQYXJlbnROYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVsYXRlZENoaWxkTmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIGluc2VydEJlZm9yZTogYW55O1xyXG4gIHByaXZhdGUgdW5pcXVlSWQhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBzdWJzOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XHJcblxyXG4gIHBhcmVudFRhYmxlTmFtZSE6IHN0cmluZztcclxuICBjaGlsZFRhYmxlUGx1cmFsTGFiZWwhOiBzdHJpbmc7XHJcbiAgYnVzeU1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIGlzQnVzeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbHVtbnM6IGFueSA9IFtdO1xyXG4gIGNhcmRzOiBhbnkgPSBbXTtcclxuICBsb2NrZWRDb2x1bW5zOiBhbnkgPSBbXTtcclxuICBjb2x1bW5GaWx0ZXJDaG9pY2VzOiBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPiB8IG51bGwgPSBbXTtcclxuICBjb2x1bW5GaWx0ZXJSZWZzOiBBcnJheTxudW1iZXI+ID0gW107XHJcbiAgY2FyZEZpbHRlclN0cjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRDYXJkczogQXJyYXk8VHJ1Q2FyZD4gPSBbXTtcclxuICBjb2xvciE6IHN0cmluZyB8IG51bGw7XHJcbiAgdW5hc3NpZ25lZENvbG9yITogc3RyaW5nIHwgbnVsbDtcclxuICBrZXkhOiBzdHJpbmc7XHJcbiAgdW5hc3NpZ25lZFZpc2libGUhOiBib29sZWFuO1xyXG4gIHVuYXNzaWduZWROYW1lITogc3RyaW5nIHwgbnVsbDtcclxuICB1c2VySGFzUGFyZW50VGFibGVSb2xlID0gdHJ1ZTsgLy9wYXJlbnRUYWJsZU1vZGVsLmNhbkRpc3BsYXk7XHJcbiAgdmlld01lbnVJdGVtczogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRWaWV3TWVudUl0ZW06IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIHBhcmVudFRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG4gIGNvbHVtbkZpbHRlclRvb2x0aXA6IHN0cmluZyA9ICcnO1xyXG4gIGNhcmRGaWx0ZXJUb29sdGlwOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgbW9kZWxUeXBlTG9va3VwOiBUcnVNb2RlbFR5cGVMb29rdXAsXHJcbiAgICBwcml2YXRlIHNlYXJjaFZpZXdFdmVudEhhbmRsZXI6IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIsXHJcbiAgICBwcml2YXRlIHNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyOiBUcnVTZWFyY2hSZXN1bHRWaWV3TWFuYWdlcikge1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcmVudFRhYmxlTW9kZWwgPSBudWxsOy8vZGF0YVNlcnZpY2UubW9kZWwudGFibGVzW3BhcmVudFRhYmxlTmFtZV07XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRGF0YUZvckVudGl0eSA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnJvd0RhdGFFbmhhbmNlcihlbnRpdHkpO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYXNVbmRlZmluZWRDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiAhZW50aXR5W2VudGl0eVByb3BlcnR5TmFtZV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0VtcHR5Q2hpbGRyZW4gPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICByZXR1cm4gIWVudGl0eVtlbnRpdHlQcm9wZXJ0eU5hbWVdLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzSW5hY3RpdmVDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiBfLmV2ZXJ5KFtlbnRpdHlQcm9wZXJ0eU5hbWVdLCAoY2hpbGQ6IGFueSkgPT4geyByZXR1cm4gIWNoaWxkLmFjdGl2ZTsgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FkZGVkVW5zYXZlZENoaWxkcmVuID0gKGVudGl0aWVzOiBBcnJheTxUcnVFbnRpdHlCYXNlPiwgcGFyZW50UmVmOiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiBfLnNvbWUoZW50aXRpZXMsIChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmtleSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICAgIHJldHVybiBlbnRpdHlbZW50aXR5UHJvcGVydHlOYW1lXSA9PT0gcGFyZW50UmVmXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXIgPSAoKSA9PiB7XHJcbiAgICB2YXIgbG9ja2VkQ29sdW1ucyA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICB2YXIgdW5sb2NrZWRDb2x1bW5zID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIHdoaWxlIChsb2NrZWRDb2x1bW5zICYmIGxvY2tlZENvbHVtbnMubGFzdENoaWxkKSB7IGxvY2tlZENvbHVtbnMucmVtb3ZlQ2hpbGQobG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpOyB9O1xyXG4gICAgd2hpbGUgKHVubG9ja2VkQ29sdW1ucyAmJiB1bmxvY2tlZENvbHVtbnMubGFzdENoaWxkKSB7IHVubG9ja2VkQ29sdW1ucy5yZW1vdmVDaGlsZCh1bmxvY2tlZENvbHVtbnMubGFzdENoaWxkKTsgfVxyXG4gICAgd2hpbGUgKHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGgpIHsgdGhpcy5zZWxlY3RlZENhcmRzLnBvcCgpOyB9O1xyXG4gICAgLy90aGlzLmNvbmZpZy5vblNlbGVjdGlvbkNoYW5nZWQoW10pO1xyXG4gICAgLy90aGlzLmNvbmZpZy5jbGVhckZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFsdWVGcm9tU29ydFBhdGggPSAoYXJnczogW2FueSwgc3RyaW5nW11dKTogYW55ID0+IHtcclxuICAgIGxldCBjdXJyZW50OiBhbnkgPSBhcmdzWzBdO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGFyZ3NbMV0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBhcnROYW1lOiBzdHJpbmc7XHJcbiAgICAgIGlmIChpICE9PSBhcmdzWzFdLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBwYXJ0TmFtZSA9ICdvJyArIGFyZ3NbMV1baV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFydE5hbWUgPSBhcmdzWzFdW2ldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY3VycmVudFtwYXJ0TmFtZV0pIHtcclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXJ0TmFtZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjdXJyZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJdGVtc1NvdXJjZShuZXdFbnRpdGllczogQXJyYXk8YW55PiwgcmV2ZXJ0OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcblxyXG4gICAgdGhpcy5idXN5TWVzc2FnZSA9ICdSZW5kZXJpbmcuLi4nXHJcbiAgIFxyXG4gICAgaWYgKCFyZXZlcnQpXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzY3JvbGxfcG9zaXRpb24nICsgdXVpZHY0KCksICcwJyk7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJDaG9pY2VzID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkZpbHRlclJlZnMgPSBbXTtcclxuICAgIHRoaXMuY2FyZEZpbHRlclN0ciA9IG51bGw7XHJcblxyXG4gICAgaWYgKCFuZXdFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5sb2NrZWRDb2x1bW5zID0gW107XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGxvY2tlZENvbHVtbnM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGxldCBlbXB0eVBhcmVudHM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGxldCBjb2x1bW5zOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gICAgbGV0IHF1ZXJ5ID0gbmV3IGJyZWV6ZS5FbnRpdHlRdWVyeSgnUXVlcnknICsgdGhpcy5wYXJlbnRUYWJsZU5hbWUpO1xyXG4gICAgbGV0IHBhcmVudFJlZnMgPSBuZXdFbnRpdGllcy5tYXAoKGU6IGFueSkgPT4geyByZXR1cm4gZVt0aGlzLnBhcmVudFRhYmxlTmFtZSArICdSZWYnXTsgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkQ29sdW1uUXVlcnkpXHJcbiAgICAgIHF1ZXJ5ID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRDb2x1bW5RdWVyeShxdWVyeSwgdGhpcy5jb25maWcucGFyZW50VG9DaGlsZFJlbGF0aW9uc2hpcE5hbWUpO1xyXG4gICAgZWxzZVxyXG4gICAgICBxdWVyeSA9IHF1ZXJ5LmV4cGFuZCh0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSk7XHJcblxyXG4gICAgbGV0IHVuaXF1ZVBhcmVudFJlZnMgPSBbLi4ubmV3IFNldChwYXJlbnRSZWZzKV1cclxuICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUodGhpcy5wYXJlbnRUYWJsZU5hbWUgKyAnUmVmJywgJ2luJywgdW5pcXVlUGFyZW50UmVmcyk7XHJcblxyXG4gICAgLy9pZiAodGhpcy5wYXJlbnRRdWVyeSlcclxuICAgIC8vICBxdWVyeSA9IHF1ZXJpZXNbdGhpcy5wYXJlbnRRdWVyeV0ocXVlcnkpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuY3VzdG9tU2VhcmNoKHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy5wYXJlbnRUYWJsZU5hbWUpLCBxdWVyeSkuc3Vic2NyaWJlKChwYXJlbnRzKSA9PiB7XHJcbiAgICAgIC8vdGhpcy5jb25maWcuYWRkUGFyZW50c1RvRmlsdGVyKHBhcmVudHMpO1xyXG5cclxuICAgICAgZW1wdHlQYXJlbnRzID0gXy5maWx0ZXIocGFyZW50cywgKHBhcmVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1VuZGVmaW5lZENoaWxkcmVuKHBhcmVudCkgfHwgdGhpcy5oYXNFbXB0eUNoaWxkcmVuKHBhcmVudCkgfHwgdGhpcy5oYXNJbmFjdGl2ZUNoaWxkcmVuKHBhcmVudCkpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5oYXNBZGRlZFVuc2F2ZWRDaGlsZHJlbihuZXdFbnRpdGllcywgcGFyZW50LlJlZikpIHtcclxuICAgICAgICAgICAgcGFyZW50WydjYXJkcyddID0gW107XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgcXVlcnlhYmxlUGFyZW50UmVmcyA9IF8ucGx1Y2socGFyZW50cywgdGhpcy5rZXkpXHJcblxyXG4gICAgICBsZXQgaW5hY3RpdmVXaXRoUGFyZW50OiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAgIGxldCBhY3RpdmVXaXRob3V0UGFyZW50OiBBcnJheTxhbnk+ID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVuYXNzaWduZWQ6IHRydWUsXHJcbiAgICAgICAgICBjYXJkczogW11cclxuICAgICAgICB9XHJcbiAgICAgIF07XHJcblxyXG4gICAgICBwYXJlbnRzLmZvckVhY2goKHBhcmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgcGFyZW50WydjYXJkcyddID0gW107XHJcbiAgICAgICAgaWYgKHF1ZXJ5YWJsZVBhcmVudFJlZnMuaW5kZXhPZihwYXJlbnRbdGhpcy5rZXldKSAhPT0gLTEpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmxvY2tQcm9wZXJ0eSAhPT0gbnVsbCAmJiBwYXJlbnRbdGhpcy5sb2NrUHJvcGVydHldKSB7XHJcbiAgICAgICAgICAgIGxvY2tlZENvbHVtbnMucHVzaChwYXJlbnQpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxvY2tQcm9wZXJ0eSA9PT0gbnVsbCB8fCAhcGFyZW50W3RoaXMubG9ja1Byb3BlcnR5XSAmJiAhXy5jb250YWlucyhlbXB0eVBhcmVudHMsIHBhcmVudCkpIHtcclxuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBhcmVudFsnaW5hY3RpdmUnXSA9IHRydWU7XHJcbiAgICAgICAgICBpbmFjdGl2ZVdpdGhQYXJlbnQucHVzaChwYXJlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBwYXJlbnRzLmZvckVhY2goKHBhcmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgdmFyIGNob2ljZSA9IHtcclxuICAgICAgICAgIHZhbHVlOiBwYXJlbnQuUmVmLFxyXG4gICAgICAgICAgbGFiZWw6IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkQ29sdW1uSWQocGFyZW50KSBhcyBzdHJpbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJDaG9pY2VzIS5wdXNoKGNob2ljZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbmV3RW50aXRpZXMuZm9yRWFjaCgoZW50aXR5KSA9PiB7XHJcbiAgICAgICAgdmFyIGVudGl0eVBhcmVudCA9IF8uZmluZChwYXJlbnRzLCAocCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXSlcclxuICAgICAgICAgICAgcmV0dXJuIHAuUmVmID09PSBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0uUmVmO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZW50aXR5UGFyZW50KSB7XHJcbiAgICAgICAgICBpZiAocXVlcnlhYmxlUGFyZW50UmVmcy5pbmRleE9mKGVudGl0eVBhcmVudFt0aGlzLmtleV0pICE9PSAtMSkge1xyXG4gICAgICAgICAgICBlbnRpdHlQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbnRpdHlQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICFlbnRpdHlQYXJlbnQgJiZcclxuICAgICAgICAgIGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXSAmJlxyXG4gICAgICAgICAgZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdLlJlZiA+IDApIHtcclxuICAgICAgICAgIGxldCBpbmFjdGl2ZVBhcmVudCA9IGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXTtcclxuICAgICAgICAgIGlmIChpbmFjdGl2ZVdpdGhQYXJlbnQuaW5kZXhPZihpbmFjdGl2ZVBhcmVudCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGluYWN0aXZlUGFyZW50WydjYXJkcyddID0gW107XHJcbiAgICAgICAgICAgIGluYWN0aXZlUGFyZW50WydpbmFjdGl2ZSddID0gdHJ1ZTtcclxuICAgICAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LnB1c2goaW5hY3RpdmVQYXJlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW5hY3RpdmVQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFjdGl2ZVdpdGhvdXRQYXJlbnRbMF0uY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbHVtblNvcnQpIHtcclxuICAgICAgICB2YXIgY29sdW1uU29ydFBhcnRzID0gWycnXTsgLy90aGlzLmNvbHVtblNvcnQuc3BsaXQoJy8nKTtcclxuXHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucyA9IF8uc29ydEJ5KGxvY2tlZENvbHVtbnMsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb2x1bW5zID0gXy5zb3J0QnkoY29sdW1ucywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGluYWN0aXZlV2l0aFBhcmVudCA9IF8uc29ydEJ5KGluYWN0aXZlV2l0aFBhcmVudCwgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGVtcHR5UGFyZW50cyA9IF8uc29ydEJ5KGVtcHR5UGFyZW50cywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLmNhcmRTb3J0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBhY3RpdmVXaXRob3V0UGFyZW50LmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmluYWN0aXZlVmlzaWJsZSlcclxuICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoaW5hY3RpdmVXaXRoUGFyZW50KTtcclxuXHJcbiAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChlbXB0eVBhcmVudHMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudW5hc3NpZ25lZFZpc2libGUgJiYgIXRoaXMudW5hc3NpZ25lZExvY2tlZClcclxuICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoYWN0aXZlV2l0aG91dFBhcmVudCk7XHJcblxyXG4gICAgICBpZiAodGhpcy51bmFzc2lnbmVkVmlzaWJsZSAmJiB0aGlzLnVuYXNzaWduZWRMb2NrZWQpXHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGxvY2tlZENvbHVtbnMpO1xyXG5cclxuICAgICAgdGhpcy5sb2NrZWRDb2x1bW5zID0gbG9ja2VkQ29sdW1ucztcclxuICAgICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICBuZXcgQ2FyZFZpZXcodGhpcywgdGhpcy5sb2NrZWRDb2x1bW5zLCB0aGlzLmNvbHVtbnMpO1xyXG5cclxuICAgICAgICBpZiAocmV2ZXJ0KSB7XHJcbiAgICAgICAgICBsZXQgY29sdW1uRWxlbWVudCA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jb2x1bW5zJylbMF07XHJcbiAgICAgICAgICBsZXQgcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzY3JvbGxfcG9zaXRpb24nICsgdXVpZHY0KCkpO1xyXG4gICAgICAgICAgY29sdW1uRWxlbWVudC5zY3JvbGxMZWZ0ID0gcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA/ICtwcmV2aW91c1Njcm9sbFBvc2l0aW9uIDogMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNCdXN5ID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblNlYXJjaCA9IChzZXR1cFF1ZXJ5OiBhbnkpID0+IHtcclxuICAgIHRoaXMuaXNCdXN5ID0gdHJ1ZTtcclxuICAgIHRoaXMuYnVzeU1lc3NhZ2UgPSAnU2VhcmNoaW5nIGZvciAnICsgdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWwgKyAnLi4uJztcclxuICAgIGxldCBqb2lucyA9IFtdO1xyXG5cclxuICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2goXHJcbiAgICAgIHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy5jaGlsZFRhYmxlTmFtZSksXHJcbiAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgIG51bGwsIGZhbHNlKSk7XHJcblxyXG4gICAgZm9ya0pvaW4oam9pbnMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3VsdHMgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZHMgPSByZXN1bHRzWzBdO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSXRlbXNTb3VyY2UocmVzdWx0c1swXSwgZmFsc2UpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge31cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyQ29sdW1ucyA9IChzZWxlY3RlZE9wdGlvbnM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+IHwgbnVsbCkgPT4ge1xyXG4gICAgbGV0IHJlZnMgPSBzZWxlY3RlZE9wdGlvbnMhLmZpbHRlcigob3B0aW9uOiBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uKSA9PiB7IHJldHVybiBvcHRpb24udmFsdWUgfSlcclxuXHJcbiAgICB2YXIgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2ZpbHRlci1jb2x1bW5zJywge1xyXG4gICAgICBidWJibGVzOiB0cnVlLFxyXG4gICAgICBkZXRhaWw6IHJlZnNcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciB1bmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIHVubG9ja2VkQ29sdW1uc0VsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcblxyXG4gICAgdmFyIHVubG9ja2VkQ29sdW1uc0VsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICB2YXIgY29sdW1uRWxlbWVudHMgPSB1bmxvY2tlZENvbHVtbnNFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1uJyk7XHJcbiAgICB2YXIgYXJyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29sdW1uRWxlbWVudHMpO1xyXG4gICAgYXJyLnNvcnQoKGEsIGIpID0+IGEuaWQgLSBiLmlkKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgIHVubG9ja2VkQ29sdW1uc0VsZW1lbnQuaW5zZXJ0QmVmb3JlKGFycltpXSwgdW5sb2NrZWRDb2x1bW5zRWxlbWVudC5maXJzdENoaWxkKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmaWx0ZXJDYXJkcyA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgdGhpcy5jYXJkRmlsdGVyU3RyID0gdmFsdWUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogJyc7XHJcblxyXG4gICAgdmFyIGV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdmaWx0ZXItY2FyZHMnLCB7XHJcbiAgICAgIGJ1YmJsZXM6IHRydWUsXHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgY29sdW1uRWxlbWVudHMgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1uJyk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1bW5FbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb2x1bW5FbGVtZW50c1tpXS5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jYXJkRmlsdGVyU3RyKSB7XHJcbiAgICAgIHZhciB1bmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgICB2YXIgY29sdW1uRWxlbWVudHMgPSB1bmxvY2tlZENvbHVtbnNFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1uJyk7XHJcbiAgICAgIHZhciBjb2x1bW5zV2l0aENhcmRzID0gW107XHJcbiAgICAgIHZhciBjb2x1bW5zV2l0aG91dENhcmRzID0gW107XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29sdW1uRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgY2FyZEVsZW1lbnRzID0gY29sdW1uRWxlbWVudHNbaV0ucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jYXJkLWNvbnRhaW5lcjpub3QoLnRydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkKTpub3QoLmVtcHR5KScpO1xyXG4gICAgICAgIGlmIChjYXJkRWxlbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb2x1bW5zV2l0aENhcmRzLnB1c2goY29sdW1uRWxlbWVudHNbaV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb2x1bW5zV2l0aG91dENhcmRzLnB1c2goY29sdW1uRWxlbWVudHNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb2x1bW5zV2l0aENhcmRzLnNvcnQoKGEsIGIpID0+IGEuaWQgLSBiLmlkKTtcclxuICAgICAgY29sdW1uc1dpdGhvdXRDYXJkcy5zb3J0KChhLCBiKSA9PiBhLmlkIC0gYi5pZCk7XHJcbiAgICAgIGZvciAodmFyIGkgPSBjb2x1bW5zV2l0aG91dENhcmRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgdW5sb2NrZWRDb2x1bW5zRWxlbWVudC5pbnNlcnRCZWZvcmUoY29sdW1uc1dpdGhvdXRDYXJkc1tpXSwgdW5sb2NrZWRDb2x1bW5zRWxlbWVudC5maXJzdENoaWxkKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IGNvbHVtbnNXaXRoQ2FyZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICB1bmxvY2tlZENvbHVtbnNFbGVtZW50Lmluc2VydEJlZm9yZShjb2x1bW5zV2l0aENhcmRzW2ldLCB1bmxvY2tlZENvbHVtbnNFbGVtZW50LmZpcnN0Q2hpbGQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgdW5sb2NrZWRDb2x1bW5zRWxlbWVudCA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnVubG9ja2VkLWNvbHVtbnMnKVswXTtcclxuICAgICAgdmFyIGNvbHVtbkVsZW1lbnRzID0gdW5sb2NrZWRDb2x1bW5zRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNvbHVtbicpO1xyXG4gICAgICB2YXIgYXJyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29sdW1uRWxlbWVudHMpO1xyXG4gICAgICBhcnIuc29ydCgoYSwgYikgPT4gYS5pZCAtIGIuaWQpO1xyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IGFyci5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIHVubG9ja2VkQ29sdW1uc0VsZW1lbnQuaW5zZXJ0QmVmb3JlKGFycltpXSwgdW5sb2NrZWRDb2x1bW5zRWxlbWVudC5maXJzdENoaWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uID0gKGNhcmQ6IFRydUNhcmQpID0+IHtcclxuICAgIGlmICghY2FyZC5zZWxlY3RlZCkge1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgICAgIGNhcmQuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtc2VsZWN0ZWQnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgICBpZiAoaW5kZXggPT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5wdXNoKGNhcmQpO1xyXG5cclxuICAgICAgY2FyZC5jYXJkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1zZWxlY3RlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2NvcGUuY29uZmlnLm9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3RlZENhcmRzKTtcclxuICB9XHJcblxyXG4gIGRyYWdTdGFydCA9IChlOiBhbnksIGNhcmQ6IFRydUNhcmQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgLy9zY29wZS5jb25maWcuY2xvc2VTZWFyY2hQYW5lbCgpO1xyXG5cclxuICAgIGlmICgoY2FyZC5jb2x1bW4uZGF0YS51bmFzc2lnbmVkICYmICF0aGlzLnVuYXNzaWduZWREcmFnZ2FibGUpIHx8XHJcbiAgICAgIChjYXJkLmNvbHVtbi5kYXRhLmluYWN0aXZlICYmICF0aGlzLmluYWN0aXZlRHJhZ2dhYmxlKSkge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnO1xyXG5cclxuICAgIGlmICghY2FyZC5zZWxlY3RlZCkge1xyXG4gICAgICBjYXJkLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oY2FyZClcclxuICAgIH0gICBcclxuXHJcbiAgICBsZXQgY2xvbmVkTm9kZSA9IGUudGFyZ2V0LmNsb25lTm9kZSh0cnVlKTtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLnRvcCA9IFwiMHB4XCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLmxlZnQgPSBcIi0xMDAwMHB4XCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLm92ZXJmbG93ID0gJ3Zpc2libGUnO1xyXG4gICAgY2xvbmVkTm9kZS5jbGFzc0xpc3QuYWRkKCdjbG9uZWQtY2FyZCcpO1xyXG5cclxuICAgIHZhciBpbm5lciA9IGNsb25lZE5vZGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRydS1jYXJkLXBvcnRhbC1jYXJkXCIpWzBdO1xyXG4gICAgaW5uZXIuc3R5bGUudHJhbnNmb3JtID0gXCJyb3RhdGUoLTEwZGVnKVwiO1xyXG4gICAgaW5uZXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xyXG4gICAgaW5uZXIuc3R5bGUuekluZGV4ID0gMTA7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZWROb2RlKTtcclxuICAgIGUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShjbG9uZWROb2RlLCA1MCwgNTApO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZHJhZ092ZXIgPSAoZTogYW55LCBjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcclxuICAgIGlmICghdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygndHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyJykgfHxcclxuICAgICAgKGNhcmQuY29sdW1uLmRhdGEudW5hc3NpZ25lZCAmJiAhdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlKSB8fFxyXG4gICAgICAoY2FyZC5jb2x1bW4uZGF0YS5pbmFjdGl2ZSAmJiAhdGhpcy5pbmFjdGl2ZURyb3BwYWJsZSkpIHtcclxuICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmFnRW5kID0gKGU6IGFueSkgPT4ge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBsZXQgZWxlbWVudHM6IEhUTUxDb2xsZWN0aW9uT2Y8RWxlbWVudD4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjbG9uZWQtY2FyZCcpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHJ1LWNhcmQtcGxhY2Vob2xkZXInKTtcclxuICAgIHdoaWxlIChlbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGVsZW1lbnRzWzBdLnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3AgPSAoZTogYW55LCBjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSB0aGlzLnNlbGVjdGVkQ2FyZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgbGV0IGluZGV4ID0gY2FyZC5jb2x1bW4uY2FyZHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkc1tpXS51cGRhdGVEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNhcmQuY29sdW1uLmRhdGEudW5hc3NpZ25lZCAmJiAhdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlIHx8XHJcbiAgICAgIGNhcmQuY29sdW1uLmRhdGEuaW5hY3RpdmUgJiYgIXRoaXMuaW5hY3RpdmVEcm9wcGFibGUgfHxcclxuICAgICAgIXRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGgpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZyA9PT0gbnVsbCkge1xyXG4gICAgICAvL3RoaXMuY29uZmlnLm9uRHJvcChjYXJkLCB0aGlzLnNlbGVjdGVkQ2FyZHMsIHRoaXMuY29uZmlnLCB0aGlzLnBvcnRhbCwgZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNhcmQuY29sdW1uLmFkZENhcmQodGhpcy5zZWxlY3RlZENhcmRzW2ldKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkc1tpXS5jb2x1bW4ucmVtb3ZlQ2FyZCh0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3aGlsZSAodGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCkgeyB0aGlzLnNlbGVjdGVkQ2FyZHMucG9wKCk7IH07XHJcbiAgICAgIFxyXG4gICAgICAvL2xldCBzYXZlUHJvbWlzZSA9IC5jb25maWcuc2F2ZSgpO1xyXG4gICAgICAvL2lmIChzYXZlUHJvbWlzZSkge1xyXG4gICAgICAvLyAgdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtZGlzYWJsZWQnKTtcclxuICAgICAgLy8gIGF3YWl0IHNhdmVQcm9taXNlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAvLyAgICB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1kaXNhYmxlZCcpO1xyXG4gICAgICAvLyAgfSkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAvLyAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIC8vICAgIHZhciBjb2x1bW5FbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMnKVswXTtcclxuICAgICAgLy8gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB0aGlzLnVuaXF1ZUlkLCBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQpO1xyXG4gICAgICAvLyAgICBzY29wZS5jb25maWcucmV2ZXJ0KCk7XHJcbiAgICAgIC8vICAgIHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWRpc2FibGVkJyk7XHJcbiAgICAgIC8vICB9KTtcclxuICAgICAgLy99IGVsc2Uge1xyXG4gICAgICAvLyAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAvLyAgdmFyIGNvbHVtbkVsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1ucycpWzBdO1xyXG4gICAgICAvLyAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB0aGlzLnVuaXF1ZUlkLCBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQpO1xyXG4gICAgICAvLyAgc2NvcGUuY29uZmlnLnJldmVydCgpO1xyXG4gICAgICAvL31cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmVudFRhYmxlTmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlTmFtZTtcclxuICAgIHRoaXMucGFyZW50VGFibGVQbHVyYWxMYWJlbCA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB0aGlzLmNoaWxkVGFibGVOYW1lID0gdGhpcy5jb25maWcuY2hpbGRUYWJsZU5hbWU7XHJcbiAgICB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbCA9IHRoaXMuY29uZmlnLmNoaWxkVGFibGVQbHVyYWxMYWJlbDtcclxuICAgIHRoaXMua2V5ID0gdGhpcy5jb25maWcua2V5O1xyXG4gICAgdGhpcy5wYXJlbnRRdWVyeSA9IG51bGxcclxuICAgIHRoaXMubG9ja1Byb3BlcnR5ID0gdGhpcy5jb25maWcubG9ja1Byb3BlcnR5O1xyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29uZmlnLmNvbG9yO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkVmlzaWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWRWaXNpYmxlO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkTmFtZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWROYW1lO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkTG9ja2VkID0gdGhpcy5jb25maWcudW5hc3NpZ25lZExvY2tlZDtcclxuICAgIHRoaXMudW5hc3NpZ25lZENvbG9yID0gdGhpcy5jb25maWcudW5hc3NpZ25lZENvbG9yO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkRHJhZ2dhYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZERyYWdnYWJsZTtcclxuICAgIHRoaXMudW5hc3NpZ25lZERyb3BwYWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWREcm9wcGFibGU7XHJcblxyXG4gICAgdGhpcy5pbmFjdGl2ZVZpc2libGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZVZpc2libGU7XHJcbiAgICB0aGlzLmluYWN0aXZlRHJhZ2dhYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVEcmFnZ2FibGU7XHJcbiAgICB0aGlzLmluYWN0aXZlRHJvcHBhYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVEcm9wcGFibGU7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5Tb3J0ID0gdGhpcy5jb25maWcuY29sdW1uU29ydDtcclxuICAgIHRoaXMuY2FyZFNvcnQgPSB0aGlzLmNvbmZpZy5jYXJkU29ydDtcclxuICAgIHRoaXMuY29sdW1uRmlsdGVyVG9vbHRpcCA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlUGx1cmFsTGFiZWwgPyB0aGlzLmNvbmZpZy5wYXJlbnRUYWJsZVBsdXJhbExhYmVsICsgJyBGaWx0ZXInIDogJ0ZpbHRlcic7XHJcbiAgICB0aGlzLmNhcmRGaWx0ZXJUb29sdGlwID0gdGhpcy5jb25maWcuY2hpbGRUYWJsZVBsdXJhbExhYmVsID8gdGhpcy5jb25maWcuY2hpbGRUYWJsZVBsdXJhbExhYmVsICsgJyBGaWx0ZXInIDogJ0ZpbHRlcic7XHJcblxyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5rZXkubGFzdEluZGV4T2YodGhpcy5wYXJlbnRUYWJsZU5hbWUpO1xyXG4gICAgbGV0IHByZWZpeCA9IHRoaXMua2V5LnN1YnN0cmluZyhpbmRleCwgLTEpO1xyXG4gICAgaWYgKHByZWZpeCkge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lID0gcHJlZml4ICsgdGhpcy5wYXJlbnRUYWJsZU5hbWU7XHJcbiAgICAgIHRoaXMucmVsYXRlZENoaWxkTmFtZSA9IHByZWZpeCArIHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZWxhdGVkUGFyZW50TmFtZSA9IHRoaXMucGFyZW50VGFibGVOYW1lO1xyXG4gICAgICB0aGlzLnJlbGF0ZWRDaGlsZE5hbWUgPSB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVuaXF1ZUlkID0gdXVpZHY0KCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvL3NldFRpbWVvdXQgdG8gcHJldmVudDogRVJST1IgRXJyb3I6IE5HMDEwMDogRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvci4gXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jb25maWcudmlld01lbnVDb25maWcubWVudUl0ZW1zRW5hYmxlZCA9ICgpID0+IHsgcmV0dXJuIHRoaXMuY29sdW1ucy5sZW5ndGg7IH07XHJcbiAgICAgIHRoaXMuY29uZmlnLnZpZXdNZW51Q29uZmlnLmFsbE1lbnVzKCkuc3Vic2NyaWJlKChtZW51OiBhbnkpID0+IHsgdGhpcy52aWV3TWVudUl0ZW1zID0gbWVudTsgfSk7XHJcbiAgICAgIHRoaXMucGFyZW50VG9vbGJhclRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRWaWV3TWFuYWdlci5zZWFyY2hWaWV3VG9vbGJhclRlbXBsYXRlO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTZWxlY3Rpb24gPSAoY2FyZDogVHJ1Q2FyZCkgPT4ge1xyXG4gICAgdmFyIGluZGV4ID0gdGhpcy5zZWxlY3RlZENhcmRzLmluZGV4T2YoY2FyZCk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgICBjYXJkLmNhcmRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXNlbGVjdGVkJyk7XHJcblxyXG4gICAgLy9zY29wZS5jb25maWcub25TZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGVkQ2FyZHMpO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQ2FyZFZpZXcge1xyXG4gIHByaXZhdGUgbG9ja2VkQ29sdW1uc0VsZW1lbnQ7XHJcbiAgcHJpdmF0ZSB1bmxvY2tlZENvbHVtbnNFbGVtZW50XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXJkQ29sdW1uOiBUcnVDYXJkQ29sdW1uLFxyXG4gICAgcHJpdmF0ZSBsb2NrZWRDb2x1bW5zOiBhbnksXHJcbiAgICBwcml2YXRlIGNvbHVtbnM6IGFueSkge1xyXG4gICAgdGhpcy5sb2NrZWRDb2x1bW5zRWxlbWVudCA9IHRoaXMuY2FyZENvbHVtbi5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubG9ja2VkLWNvbHVtbnMnKVswXTtcclxuICAgIHRoaXMudW5sb2NrZWRDb2x1bW5zRWxlbWVudCA9IHRoaXMuY2FyZENvbHVtbi5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIGlmIChsb2NrZWRDb2x1bW5zICYmIGxvY2tlZENvbHVtbnMubGVuZ3RoKVxyXG4gICAgICB0aGlzLmFkZENvbHVtbnMobG9ja2VkQ29sdW1ucywgdHJ1ZSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbnMgJiYgY29sdW1ucy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuYWRkQ29sdW1ucyhjb2x1bW5zLCBmYWxzZSk7XHJcblxyXG4gICAgdGhpcy51bmxvY2tlZENvbHVtbnNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZpbHRlci1jb2x1bW5zJywgKGU6IEN1c3RvbUV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1ucyhlLmRldGFpbCBhcyBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sdW1uVmlld3M6IEFycmF5PENvbHVtbj4gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBhZGRDb2x1bW5zID0gKGNvbHVtbkRhdGE6IEFycmF5PGFueT4sIGxvY2tlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgbGV0IGNvbHVtbnNFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICAgIGlmIChsb2NrZWQpXHJcbiAgICAgIGNvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgZWxzZVxyXG4gICAgICBjb2x1bW5zRWxlbWVudCA9IHRoaXMuY2FyZENvbHVtbi5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIGxldCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5jb2x1bW5WaWV3cy5wdXNoKG5ldyBDb2x1bW4odGhpcy5jYXJkQ29sdW1uLCBjb2x1bW5EYXRhW2ldLCBjb2x1bW5zRWxlbWVudCwgbG9ja2VkLCBpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29sdW1uc0VsZW1lbnQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xyXG5cclxuICAgIHRoaXMuY2FyZENvbHVtbi5idXN5TWVzc2FnZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ29sdW1ucyA9IChvcHRpb25zOiBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPikgPT4ge1xyXG4gICAgbGV0IHJlZnMgPSBvcHRpb25zLm1hcCgob3B0aW9uOiBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uKSA9PiB7IHJldHVybiBvcHRpb24udmFsdWUgfSk7XHJcblxyXG4gICAgaWYgKHJlZnMgJiYgcmVmcy5sZW5ndGgpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY29sdW1uID0gdGhpcy5jb2x1bW5WaWV3c1tpXTtcclxuXHJcbiAgICAgICAgaWYgKCFjb2x1bW4ubG9ja2VkICYmIGNvbHVtbi5kYXRhLmVudGl0eUFzcGVjdCkge1xyXG4gICAgICAgICAgdmFyIGZvdW5kID0gcmVmcy5maWx0ZXIoeCA9PiB4ID09PSBjb2x1bW4uZGF0YS5SZWYpLmxlbmd0aCA+IDA7XHJcblxyXG4gICAgICAgICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbi5jb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4tZmlsdGVyZWQnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbHVtbi5jb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4tZmlsdGVyZWQnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5WaWV3cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLmNvbHVtblZpZXdzW2ldO1xyXG4gICAgICAgIGNvbHVtbi5jb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4tZmlsdGVyZWQnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQ29sdW1uIHtcclxuICBwcml2YXRlIGNhcmRzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcHJpdmF0ZSBwYXJlbnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgY29sdW1uRWxlbWVudDtcclxuICBsb2NrZWQ6IGJvb2xlYW47XHJcbiAgZGF0YTogYW55O1xyXG4gIGNhcmRTY3JvbGxQb3J0RWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XHJcbiAgc2VsZWN0QWxsQnV0dG9uITogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXJkQ29sdW1uOiBUcnVDYXJkQ29sdW1uLFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgcGFyZW50RWxlbWVudDogSFRNTERpdkVsZW1lbnQsXHJcbiAgICBsb2NrZWQ6IGJvb2xlYW4sXHJcbiAgICBpbmRleDogbnVtYmVyKSB7XHJcblxyXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgIHRoaXMubG9ja2VkID0gbG9ja2VkO1xyXG4gICAgdGhpcy5wYXJlbnRFbGVtZW50ID0gcGFyZW50RWxlbWVudDtcclxuXHJcbiAgICBsZXQgY29sdW1uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgY29sdW1uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uJyk7XHJcbiAgICBjb2x1bW5FbGVtZW50LmlkID0gaW5kZXgudG9TdHJpbmcoKTtcclxuXHJcbiAgICBpZiAoZGF0YT8uaW5hY3RpdmUpXHJcbiAgICAgIGNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1pbmFjdGl2ZScpO1xyXG4gICAgY29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuY2FyZENvbHVtbi5jb25maWcud2lkdGggKyAncHgnO1xyXG4gICAgdGhpcy5jb2x1bW5FbGVtZW50ID0gY29sdW1uRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmNhcmRTY3JvbGxQb3J0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtc2Nyb2xsLXBvcnQnKTtcclxuXHJcbiAgICBuZXcgQ29sdW1uSGVhZGVyKHRoaXMuY2FyZENvbHVtbiwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50KTtcclxuICAgIHRoaXMuY29sdW1uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmaWx0ZXItY2FyZHMnLCAoZSkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZURhdGFCeUZpbHRlcigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XHJcblxyXG4gICAgdGhpcy5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29sdW1uRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEVtcHR5Q2FyZCA9ICgpID0+IHtcclxuICAgIGxldCBlbXB0eUNhcmRzID0gXy5maWx0ZXIodGhpcy5jYXJkcywgZnVuY3Rpb24gKGNhcmQpIHsgcmV0dXJuICFjYXJkLmRhdGEgfSk7XHJcbiAgICBpZiAoIWVtcHR5Q2FyZHMubGVuZ3RoKVxyXG4gICAgICB0aGlzLmNhcmRzLnB1c2gobmV3IFRydUNhcmQodGhpcy5jYXJkQ29sdW1uLCB0aGlzLCBudWxsLCBmYWxzZSkpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0QWxsQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUVtcHR5Q2FyZCA9ICgpID0+IHtcclxuICAgIHZhciBlbXB0eUNhcmRzID0gXy5maWx0ZXIodGhpcy5jYXJkcywgKGNhcmQpID0+IHsgcmV0dXJuICFjYXJkLmRhdGEgfSk7XHJcbiAgICBpZiAoZW1wdHlDYXJkcy5sZW5ndGgpIHtcclxuICAgICAgdmFyIGVtcHR5Q2FyZCA9IGVtcHR5Q2FyZHNbMF07XHJcbiAgICAgIHZhciBlbXB0eUNhcmRFbGVtZW50ID0gZW1wdHlDYXJkLmNhcmRDb250YWluZXJFbGVtZW50O1xyXG4gICAgICBlbXB0eUNhcmRFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZW1wdHlDYXJkRWxlbWVudCk7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuY2FyZHMuaW5kZXhPZihlbXB0eUNhcmRzWzBdKTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgICB0aGlzLmNhcmRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RBbGxCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbHVtbklzVmlzdWFsbHlFbXB0eSA9ICgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNhcmRzLmV2ZXJ5KGZ1bmN0aW9uIChjYXJkKSB7XHJcbiAgICAgIHJldHVybiBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQnKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVDYXJkID0gKGNhcmQ6IGFueSkgPT4ge1xyXG4gICAgY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQpO1xyXG5cclxuICAgIHZhciBpbmRleCA9IHRoaXMuZGF0YS5jYXJkcy5pbmRleE9mKGNhcmQuZGF0YSk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICB0aGlzLmRhdGEuY2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGluZGV4ID0gdGhpcy5jYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgdGhpcy5jYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgaWYgKCF0aGlzLmNhcmRzLmxlbmd0aCB8fCB0aGlzLmNvbHVtbklzVmlzdWFsbHlFbXB0eSgpKVxyXG4gICAgICB0aGlzLmFkZEVtcHR5Q2FyZCgpO1xyXG5cclxuICAgIGNhcmQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVEYXRhQnlGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICBsZXQgY2FyZEZpbHRlclN0ciA9IHRoaXMuY2FyZENvbHVtbi5jYXJkRmlsdGVyU3RyO1xyXG4gICAgaWYgKGNhcmRGaWx0ZXJTdHIpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNhcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGNhcmQgPSB0aGlzLmNhcmRzW2ldO1xyXG5cclxuICAgICAgICBpZiAoY2FyZC5kYXRhKSB7XHJcbiAgICAgICAgICBsZXQgZmlsdGVyUGFydHMgPSBjYXJkRmlsdGVyU3RyLnNwbGl0KC8oXFxzKykvKS5maWx0ZXIoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIHMudHJpbSgpLmxlbmd0aCA+IDA7IH0pO1xyXG4gICAgICAgICAgbGV0IGNhcmRGaWx0ZXJSZXN1bHQ7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FyZENvbHVtbi5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRJZCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBjYXJkRmlsdGVyUmVzdWx0ID0gZmlsdGVyUGFydHMuZXZlcnkoKHBhcnQpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYXJkQ29sdW1uLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZElkKGNhcmQuZGF0YSkhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwYXJ0KSAhPSAtMTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYXJkRmlsdGVyUmVzdWx0ID0gY2FyZC5jYXJkRmlsdGVyKGNhcmQuZGF0YSwgY2FyZEZpbHRlclN0cilcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoY2FyZEZpbHRlclJlc3VsdCkge1xyXG4gICAgICAgICAgICBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2FyZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2FyZCA9IHRoaXMuY2FyZHNbaV07XHJcbiAgICAgICAgY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNhcmRFbGVtZW50cyA9IHRoaXMuY29sdW1uRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyOm5vdCgudHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQpOm5vdCguZW1wdHkpJyk7XHJcbiAgICBpZiAoY2FyZEVsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnJlbW92ZUVtcHR5Q2FyZCgpO1xyXG4gICAgICBpZiAoIXRoaXMubG9ja2VkKSB7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLmNvbHVtbkVsZW1lbnQsIHRoaXMucGFyZW50RWxlbWVudC5maXJzdENoaWxkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRFbXB0eUNhcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZURhdGEgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNhcmRTY3JvbGxQb3J0RWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuXHJcbiAgICB3aGlsZSAodGhpcy5jYXJkcy5sZW5ndGgpIHsgdGhpcy5jYXJkcy5wb3AoKTsgfTtcclxuXHJcbiAgICBsZXQgY29sdW1uQ2FyZHMgPSB0aGlzLmNhcmRDb2x1bW4uY2FyZHMuZmlsdGVyKChjYXJkRGF0YTogYW55KSA9PiB7IHJldHVybiBjYXJkRGF0YVt0aGlzLmNhcmRDb2x1bW4ucGFyZW50VGFibGVOYW1lICsgJ1JlZiddID09PSB0aGlzLmRhdGEuUmVmIH0pXHJcblxyXG4gICAgaWYgKGNvbHVtbkNhcmRzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkNhcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5jYXJkcy5wdXNoKG5ldyBUcnVDYXJkKHRoaXMuY2FyZENvbHVtbiwgdGhpcywgY29sdW1uQ2FyZHNbaV0sIGZhbHNlKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkRW1wdHlDYXJkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGwgPSAoc2VsZWN0QWxsOiBib29sZWFuKSA9PiB7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2FyZHMubGVuZ3RoOyBpKyspXHJcbiAgICAgIHRoaXMuY2FyZHNbaV0uc2VsZWN0QWxsKHNlbGVjdEFsbCk7XHJcbiAgfVxyXG5cclxuICBhZGRDYXJkID0gKGNhcmQ6IGFueSkgPT4ge1xyXG4gICAgY2FyZC5kYXRhW3RoaXMuY2FyZENvbHVtbi5rZXldID0gdGhpcy5kYXRhLlJlZjtcclxuICAgIHRoaXMuZGF0YS5jYXJkcy51bnNoaWZ0KGNhcmQuZGF0YSk7XHJcbiAgICB0aGlzLmNhcmRzLnVuc2hpZnQobmV3IFRydUNhcmQodGhpcy5jYXJkQ29sdW1uLCB0aGlzLCBjYXJkLmRhdGEsIHRydWUpKTtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIENvbHVtbkhlYWRlciB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXJkQ29sdW1uOiBUcnVDYXJkQ29sdW1uLCBjb2x1bW46IENvbHVtbikge1xyXG4gICAgbGV0IGNvbHVtbkhlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbHVtbkhlYWRlckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1oZWFkZXInKTtcclxuXHJcbiAgICBuZXcgQ29sdW1uSGVhZGVyVGV4dChjYXJkQ29sdW1uLCBjb2x1bW4sIGNvbHVtbkhlYWRlckVsZW1lbnQpO1xyXG4gICAgbmV3IENvbHVtbkhlYWRlckJ1dHRvbihjb2x1bW4sIGNvbHVtbkhlYWRlckVsZW1lbnQpO1xyXG5cclxuICAgIGNvbHVtbi5jb2x1bW5FbGVtZW50Lmluc2VydEJlZm9yZShjb2x1bW5IZWFkZXJFbGVtZW50LCBjb2x1bW4uY29sdW1uRWxlbWVudC5maXJzdENoaWxkKTtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIENvbHVtbkhlYWRlclRleHQge1xyXG4gIHByaXZhdGUgZGF0YTogYW55O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FyZENvbHVtbjogVHJ1Q2FyZENvbHVtbiwgY29sdW1uOiBDb2x1bW4sIHBhcmVudEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KSB7XHJcbiAgICB0aGlzLmRhdGEgPSBjb2x1bW4uZGF0YTtcclxuXHJcbiAgICBsZXQgaGVhZGVyVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcclxuICAgIGhlYWRlclRleHQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1oZWFkZXJ0ZXh0Jyk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2FyZENvbHVtbi51c2VySGFzUGFyZW50VGFibGVSb2xlKSB7XHJcbiAgICAgIGhlYWRlclRleHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7IGFsZXJ0KCdnb1RvRGV0YWlsJykgfSk7XHJcbiAgICAgIGhlYWRlclRleHQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1oZWFkZXJ0ZXh0LWhvdmVyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGE/LnVuYXNzaWduZWQpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5jYXJkQ29sdW1uLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZENvbHVtbklkKGNvbHVtbi5kYXRhKTtcclxuICAgICAgaWYgKHZhbHVlKVxyXG4gICAgICAgIGhlYWRlclRleHQuaW5uZXJIVE1MID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YT8udW5hc3NpZ25lZCAmJiB0aGlzLmNhcmRDb2x1bW4udW5hc3NpZ25lZFZpc2libGUpXHJcbiAgICAgIGhlYWRlclRleHQuaW5uZXJIVE1MID0gdGhpcy5jYXJkQ29sdW1uLnVuYXNzaWduZWROYW1lID8gdGhpcy5jYXJkQ29sdW1uLnVuYXNzaWduZWROYW1lIDogJ1VuYXNzaWduZWQnO1xyXG5cclxuICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVGV4dCk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW5IZWFkZXJCdXR0b24geyBcclxuICBwcml2YXRlIGNvbHVtbjogQ29sdW1uO1xyXG4gIHByaXZhdGUgc2VsZWN0QWxsID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbHVtbjogQ29sdW1uLCBwYXJlbnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudCkge1xyXG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XHJcblxyXG4gICAgdmFyIGxpbmtCdXR0b25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGxpbmtCdXR0b25Db250YWluZXIuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1oZWFkZXItZXh0cmFzJyk7XHJcblxyXG4gICAgbGV0IGxpbmtCdXR0b246IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGlua0J1dHRvbi5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWhlYWRlci1leHRyYS1idXR0b24nKTtcclxuICAgIGxpbmtCdXR0b24uY2xhc3NMaXN0LmFkZCgnZGFyay1ob3ZlcicpO1xyXG4gICAgbGlua0J1dHRvbi5ocmVmID0gJyMnO1xyXG5cclxuICAgIGxldCBsaW5rQnV0dG9uVGV4dDogSFRNTFNwYW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgbGlua0J1dHRvblRleHQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtaWNvbi1zbWFsbCcpO1xyXG4gICAgbGlua0J1dHRvblRleHQuY2xhc3NMaXN0LmFkZCgnaWNvbi1jaGVjay1zcXVhcmUtbycpO1xyXG5cclxuICAgIGxpbmtCdXR0b25UZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9ICF0aGlzLnNlbGVjdEFsbDtcclxuICAgICAgdGhpcy5jb2x1bW4uc2VsZWN0QWxsKHRoaXMuc2VsZWN0QWxsKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxpbmtCdXR0b24uYXBwZW5kQ2hpbGQobGlua0J1dHRvblRleHQpO1xyXG4gICAgbGlua0J1dHRvbkNvbnRhaW5lci5hcHBlbmRDaGlsZChsaW5rQnV0dG9uKTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbi5zZWxlY3RBbGxCdXR0b24gPSBsaW5rQnV0dG9uQ29udGFpbmVyO1xyXG5cclxuICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQobGlua0J1dHRvbkNvbnRhaW5lcik7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0cnUtY2FyZFwiPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0J1c3lcIlxyXG4gICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1idXN5LWluZGljYXRvclwiPlxyXG4gICAgPHA+e3tidXN5TWVzc2FnZX19PC9wPlxyXG4gIDwvZGl2PlxyXG4gIDx0cnUtdG9vbGJhcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYXJlbnRUb29sYmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDx0cnUtdG9vbGJhci1zZXBhcmF0b3I+PC90cnUtdG9vbGJhci1zZXBhcmF0b3I+XHJcbiAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW3Rvb2x0aXBdPVwiY29sdW1uRmlsdGVyVG9vbHRpcFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyQ29sdW1ucygkZXZlbnQpXCIgW29wdGlvbnNdPVwiY29sdW1uRmlsdGVyQ2hvaWNlc1wiIFttdWx0aXBsZV09XCJ0cnVlXCI+PC90cnUtdG9vbGJhci1kcm9wZG93bj5cclxuICAgIDx0cnUtdG9vbGJhci10ZXh0Ym94IFt0b29sdGlwXT1cImNhcmRGaWx0ZXJUb29sdGlwXCIgKHZhbHVlQ2hhbmdlKT1cImZpbHRlckNhcmRzKCRldmVudClcIj48L3RydS10b29sYmFyLXRleHRib3g+XHJcbiAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yICpuZ0lmPVwidmlld01lbnVJdGVtcy5sZW5ndGhcIj48L3RydS10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3TWVudUl0ZW1zLmxlbmd0aFwiPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItbWVudSAqbmdGb3I9XCJsZXQgdmlld01lbnVJdGVtIG9mIHZpZXdNZW51SXRlbXNcIiBbY29uZmlnXT1cInZpZXdNZW51SXRlbVwiPjwvdHJ1LXRvb2xiYXItbWVudT5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L3RydS10b29sYmFyPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWxcIiAjY2FyZFBvcnRhbD5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieyd3aWR0aCc6ICgoY29uZmlnLndpZHRoICogbG9ja2VkQ29sdW1ucy5sZW5ndGgpICsgKDEwICogbG9ja2VkQ29sdW1ucy5sZW5ndGggLSAxKSkgKyAncHgnIH1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyd0cnUtY2FyZC1wb3J0YWwtbG9ja2VkLWNvbHVtbnMtZGl2aWRlcic6IGxvY2tlZENvbHVtbnMubGVuZ3RofVwiXHJcbiAgICAgICAgICAqbmdJZj1cImxvY2tlZENvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtcG9ydGFsLWxvY2tlZC1jb2x1bW5zIGxvY2tlZC1jb2x1bW5zXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieydsZWZ0JzogbG9ja2VkQ29sdW1ucy5sZW5ndGggPyAoKGNvbmZpZy53aWR0aCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoKSArICgxMCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoIC0gMSkgKyAyMikgKyAncHgnIDogMCB9XCJcclxuICAgICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMgdW5sb2NrZWQtY29sdW1uc1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
796
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL3RydS1jYXJkLWNvbHVtbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi90cnUtY2FyZC1jb2x1bW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtwQyxPQUFPLEVBQWdCLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7O0FBUXJDLE1BQU0sT0FBTyxhQUFhO0lBb0RkO0lBQ0E7SUFDQTtJQUNBO0lBdERELE1BQU0sQ0FBdUI7SUFDN0IsSUFBSSxDQUFPO0lBRXdCLE1BQU0sQ0FBYztJQUV4RCxzQkFBc0IsQ0FBVTtJQUNoQyxjQUFjLENBQVU7SUFDeEIsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixZQUFZLENBQWlCO0lBRTdCLGdCQUFnQixDQUFVO0lBQzFCLG1CQUFtQixDQUFXO0lBQzlCLG1CQUFtQixDQUFXO0lBRTlCLGVBQWUsQ0FBVztJQUMxQixpQkFBaUIsQ0FBVztJQUM1QixpQkFBaUIsQ0FBVztJQUU1QixVQUFVLENBQXNDO0lBQ2hELFFBQVEsQ0FBb0M7SUFFNUMsaUJBQWlCLENBQVU7SUFDM0IsZ0JBQWdCLENBQVU7SUFDMUIsWUFBWSxDQUFNO0lBQ2xCLFFBQVEsQ0FBVTtJQUNsQixJQUFJLEdBQXdCLEVBQUUsQ0FBQztJQUV2QyxlQUFlLENBQVU7SUFDekIscUJBQXFCLENBQVU7SUFDL0IsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixNQUFNLEdBQVksS0FBSyxDQUFDO0lBQ3hCLE9BQU8sR0FBUSxFQUFFLENBQUM7SUFDbEIsS0FBSyxHQUFRLEVBQUUsQ0FBQztJQUNoQixhQUFhLEdBQVEsRUFBRSxDQUFDO0lBQ3hCLG1CQUFtQixHQUE0QyxFQUFFLENBQUM7SUFDbEUsZ0JBQWdCLEdBQWtCLEVBQUUsQ0FBQztJQUNyQyxhQUFhLEdBQThCLElBQUksQ0FBQztJQUNoRCxhQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUNuQyxLQUFLLENBQWlCO0lBQ3RCLGVBQWUsQ0FBaUI7SUFDaEMsR0FBRyxDQUFVO0lBQ2IsaUJBQWlCLENBQVc7SUFDNUIsY0FBYyxDQUFpQjtJQUMvQixzQkFBc0IsR0FBRyxJQUFJLENBQUMsQ0FBQyw4QkFBOEI7SUFDN0QsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixvQkFBb0IsR0FBZSxJQUFJLENBQUM7SUFDeEMscUJBQXFCLEdBQTRCLElBQUksQ0FBQztJQUN0RCxtQkFBbUIsR0FBVyxFQUFFLENBQUM7SUFDakMsaUJBQWlCLEdBQVcsRUFBRSxDQUFDO0lBRS9CLFlBQ1UsV0FBMkIsRUFDM0IsZUFBbUMsRUFDbkMsc0JBQWlELEVBQ2pELHVCQUFtRDtRQUhuRCxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQW9CO1FBQ25DLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMkI7UUFDakQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtJQUU3RCxDQUFDO0lBRU8sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUEsNENBQTRDO0lBRXBFLG1CQUFtQixHQUFHLENBQUMsTUFBcUIsRUFBRSxFQUFFO1FBQ3RELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVNLG9CQUFvQixHQUFHLENBQUMsTUFBcUIsRUFBRSxFQUFFO1FBRXZELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyw2QkFBZ0QsQ0FBQztRQUN4RixPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFBO0lBRU8sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFxQixFQUFFLEVBQUU7UUFFbkQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLDZCQUFnRCxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUMsQ0FBQyxDQUFBO0lBRU8sbUJBQW1CLEdBQUcsQ0FBQyxNQUFxQixFQUFFLEVBQUU7UUFFdEQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLDZCQUFnRCxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFBO0lBRU8sdUJBQXVCLEdBQUcsQ0FBQyxRQUE4QixFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUN0RixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBcUIsRUFBRSxFQUFFO1lBRWhELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQXNCLENBQUM7WUFDdkQsT0FBTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxTQUFTLENBQUE7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFTyxLQUFLLEdBQUcsR0FBRyxFQUFFO1FBQ25CLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6RixPQUFPLGFBQWEsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUM7UUFBQSxDQUFDO1FBQ3pHLE9BQU8sZUFBZSxJQUFJLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUNoSCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUFBLENBQUM7UUFDaEUscUNBQXFDO1FBQ3JDLDZCQUE2QjtJQUMvQixDQUFDLENBQUE7SUFFTyxvQkFBb0IsR0FBRyxDQUFDLElBQXFCLEVBQU8sRUFBRTtRQUM1RCxJQUFJLE9BQU8sR0FBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoRCxJQUFJLFFBQWdCLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUE7SUFFTyxpQkFBaUIsQ0FBQyxXQUF1QixFQUFFLE1BQWU7UUFDaEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUE7UUFFakMsSUFBSSxDQUFDLE1BQU07WUFDVCxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxhQUFhLEdBQWUsRUFBRSxDQUFDO1FBQ25DLElBQUksWUFBWSxHQUFlLEVBQUUsQ0FBQztRQUNsQyxJQUFJLE9BQU8sR0FBZSxFQUFFLENBQUM7UUFFN0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkUsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZTtZQUMxQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7O1lBRW5HLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUVsRSxJQUFJLGdCQUFnQixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBQy9DLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFFLHVCQUF1QjtRQUN2Qiw2Q0FBNkM7UUFFN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzVILDBDQUEwQztZQUUxQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDMUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUMzRyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDM0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDckIsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUVwRCxJQUFJLGtCQUFrQixHQUFlLEVBQUUsQ0FBQztZQUN4QyxJQUFJLG1CQUFtQixHQUFlO2dCQUNwQztvQkFDRSxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsS0FBSyxFQUFFLEVBQUU7aUJBQ1Y7YUFDRixDQUFDO1lBRUYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7d0JBQzVELGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzdCLENBQUM7eUJBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUN6RyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2QixDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUMxQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxNQUFNLEdBQUc7b0JBQ1gsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHO29CQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBVztpQkFDL0QsQ0FBQTtnQkFDRCxJQUFJLENBQUMsbUJBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1lBRUgsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM3QixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN2QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO3dCQUN0QyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQzVELE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMvRCxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7cUJBQU0sSUFDTCxDQUFDLFlBQVk7b0JBQ2IsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMvQyxJQUFJLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMxRCxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUN0RCxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUM3QixjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO3dCQUNsQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzFDLENBQUM7b0JBQ0QsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlELENBQUM7cUJBQU0sQ0FBQztvQkFDTixtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtnQkFFekQsYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxJQUFJLENBQUM7d0JBQ0gsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7d0JBRXBDLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQzt3QkFDSCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzt3QkFFcEMsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDdEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQzt3QkFDSCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzt3QkFFcEMsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMxQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDO3dCQUNILE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O3dCQUVwQyxPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMvQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQy9CLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUN6QixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUVILGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNwQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUVILG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNyQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQ3RCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFFL0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdkMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO2dCQUNsRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRWhELElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ2pELGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRWhELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBRXZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFckQsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5RixJQUFJLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFDaEYsYUFBYSxDQUFDLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRixDQUFDO2dCQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFO1lBQ2hHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQTtJQUVPLFFBQVEsR0FBRyxDQUFDLFVBQWUsRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUN6RSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFZixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQ2pELFVBQVUsRUFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVoQixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0lBRUQsYUFBYSxHQUFHLENBQUMsZUFBd0QsRUFBRSxFQUFFO1FBQzNFLElBQUksSUFBSSxHQUFHLGVBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBaUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFbEcsSUFBSSxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUMsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztRQUVILElBQUksc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUMsSUFBSSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksY0FBYyxHQUFHLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDeEYsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JELEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVoQyxLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixXQUFXLEdBQUcsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXRELElBQUksS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRTtZQUMxQyxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUVILElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFM0YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLHNCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEcsSUFBSSxjQUFjLEdBQUcsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUN4RixJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztZQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLFlBQVksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsaUZBQWlGLENBQUMsQ0FBQztnQkFDekksSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3hCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUM7WUFDRCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRCxLQUFLLElBQUksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN6RCxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakcsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELHNCQUFzQixDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLHNCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEcsSUFBSSxjQUFjLEdBQUcsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUN4RixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckQsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsZUFBZSxHQUFHLENBQUMsSUFBYSxFQUFFLEVBQUU7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXRDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWhDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxpREFBaUQ7SUFDbkQsQ0FBQyxDQUFBO0lBRUQsU0FBUyxHQUFHLENBQUMsQ0FBTSxFQUFFLElBQWEsRUFBRSxFQUFFO1FBQ3BDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVwQixrQ0FBa0M7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUM1RCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDekQsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDNUIsQ0FBQztRQUVELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUN2QyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDN0IsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBQ25DLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUN0QyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4QyxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRXhCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFaEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUE7SUFFRCxRQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsSUFBYSxFQUFFLEVBQUU7UUFDbkMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVuQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQztZQUM5RCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUMxRCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDekQsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxPQUFPLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFcEIsSUFBSSxRQUFRLEdBQThCLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RixPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELFFBQVEsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNuRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELElBQUksR0FBRyxDQUFDLENBQU0sRUFBRSxJQUFhLEVBQUUsRUFBRTtRQUMvQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3hELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQ3BELENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQUEsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6Qiw0RUFBNEU7UUFDOUUsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQUMsQ0FBQztZQUFBLENBQUM7WUFFaEUsbUNBQW1DO1lBQ25DLG9CQUFvQjtZQUNwQix3RUFBd0U7WUFDeEUsa0NBQWtDO1lBQ2xDLDZFQUE2RTtZQUM3RSxvQkFBb0I7WUFDcEIseUJBQXlCO1lBQ3pCLG9HQUFvRztZQUNwRyx3RkFBd0Y7WUFDeEYsNEJBQTRCO1lBQzVCLDZFQUE2RTtZQUM3RSxPQUFPO1lBQ1AsVUFBVTtZQUNWLHVCQUF1QjtZQUN2QixrR0FBa0c7WUFDbEcsc0ZBQXNGO1lBQ3RGLDBCQUEwQjtZQUMxQixHQUFHO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFBO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDbkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUNqRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztRQUMvRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDbkQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFFM0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUV2RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDMUgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFFdEgsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDOUQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZTtRQUNiLDJGQUEyRjtRQUMzRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx5QkFBeUIsQ0FBQztRQUN0RixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsZUFBZSxHQUFHLENBQUMsSUFBYSxFQUFFLEVBQUU7UUFDbEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXZELGlEQUFpRDtJQUNuRCxDQUFDLENBQUE7dUdBbGxCVSxhQUFhOzJGQUFiLGFBQWEseU1DbkIxQiwwL0NBMkJBOzsyRkRSYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLGlCQUFpQjtxTUFLbEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFc0MsTUFBTTtzQkFBakQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztBQWlsQjVDLE1BQU0sUUFBUTtJQUtGO0lBQ0E7SUFDQTtJQU5GLG9CQUFvQixDQUFDO0lBQ3JCLHNCQUFzQixDQUFBO0lBRTlCLFlBQ1UsVUFBeUIsRUFDekIsYUFBa0IsRUFDbEIsT0FBWTtRQUZaLGVBQVUsR0FBVixVQUFVLENBQWU7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQUs7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBSztRQUNwQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVHLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxNQUFNO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQWMsRUFBRSxFQUFFO1lBQ2hGLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQTBDLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLEdBQWtCLEVBQUUsQ0FBQztJQUVoQyxVQUFVLEdBQUcsQ0FBQyxVQUFzQixFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQy9ELElBQUksY0FBOEIsQ0FBQztRQUNuQyxJQUFJLE1BQU07WUFDUixjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBRTdGLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsY0FBYyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDbkMsQ0FBQyxDQUFBO0lBRUQsYUFBYSxHQUFHLENBQUMsT0FBeUMsRUFBRSxFQUFFO1FBQzVELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFpQyxFQUFFLEVBQUUsR0FBRyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzdDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRWpDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQy9DLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUUvRCxJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNWLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO29CQUMzRSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7b0JBQ3hFLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGO0FBRUQsTUFBTSxNQUFNO0lBV0E7SUFWRixLQUFLLEdBQWUsRUFBRSxDQUFDO0lBQ3ZCLGFBQWEsQ0FBaUI7SUFFdEMsYUFBYSxDQUFDO0lBQ2QsTUFBTSxDQUFVO0lBQ2hCLElBQUksQ0FBTTtJQUNWLHFCQUFxQixDQUFpQjtJQUN0QyxlQUFlLENBQWtCO0lBRWpDLFlBQ1UsVUFBeUIsRUFDakMsSUFBUyxFQUNULGFBQTZCLEVBQzdCLE1BQWUsRUFDZixLQUFhO1FBSkwsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQU1qQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDdEQsYUFBYSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFcEMsSUFBSSxJQUFJLEVBQUUsUUFBUTtZQUNoQixhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ2pFLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDaEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFFbkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUU3RSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxZQUFZLEdBQUcsR0FBRyxFQUFFO1FBQzFCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzlDLENBQUMsQ0FBQTtJQUVPLGVBQWUsR0FBRyxHQUFHLEVBQUU7UUFDN0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQztZQUN0RCxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDMUQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMvQyxDQUFDLENBQUE7SUFFTyxxQkFBcUIsR0FBRyxHQUFHLEVBQUU7UUFDbkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUk7WUFDcEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0lBRU8sVUFBVSxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUU7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFNUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25DLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUNwRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdEIsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQTtJQUVPLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtRQUNoQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNsRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV6QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDZCxJQUFJLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BHLElBQUksZ0JBQWdCLENBQUM7b0JBQ3JCLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO3dCQUNyRSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7NEJBQzVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNsRyxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFBO29CQUM5RCxDQUFDO29CQUVELElBQUksZ0JBQWdCLEVBQUUsQ0FBQzt3QkFDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztvQkFDOUUsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7b0JBQzNFLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzlFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxpRkFBaUYsQ0FBQyxDQUFDO1FBQzFJLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckYsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxVQUFVLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRTFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQUEsQ0FBQztRQUVoRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFakosSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDN0UsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxTQUFTLEdBQUcsQ0FBQyxTQUFrQixFQUFFLEVBQUU7UUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUE7SUFFRCxPQUFPLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFBO0NBQ0Y7QUFFRCxNQUFNLFlBQVk7SUFDSTtJQUFwQixZQUFvQixVQUF5QixFQUFFLE1BQWM7UUFBekMsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUMzQyxJQUFJLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRW5FLElBQUksZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlELElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFcEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGdCQUFnQjtJQUVBO0lBRFosSUFBSSxDQUFNO0lBQ2xCLFlBQW9CLFVBQXlCLEVBQUUsTUFBYyxFQUFFLGFBQTZCO1FBQXhFLGVBQVUsR0FBVixVQUFVLENBQWU7UUFDM0MsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRXhCLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUU5RCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUMzQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDM0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUUsSUFBSSxLQUFLO2dCQUNQLFVBQVUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCO1lBQzVELFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFFeEcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLGtCQUFrQjtJQUNkLE1BQU0sQ0FBUztJQUNmLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFMUIsWUFBWSxNQUFjLEVBQUUsYUFBNkI7UUFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsSUFBSSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUUxRSxJQUFJLFVBQVUsR0FBc0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ3ZFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBRXRCLElBQUksY0FBYyxHQUFvQixRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDcEQsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUVwRCxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQztRQUVsRCxhQUFhLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5pbXBvcnQgeyBicmVlemUgfSBmcm9tICdicmVlemUtY2xpZW50JztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tICcuLi8uLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxUeXBlTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXR5cGUtbG9va3VwJztcclxuaW1wb3J0IHsgSVRydUNhcmRDb2x1bW5Db25maWcgfSBmcm9tICcuL2NsYXNzZXMvdHJ1LWNhcmQtY29sdW1uLWNvbmZpZyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZm9ya0pvaW4sIHNraXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3Mvc2VhcmNoL3NlcnZpY2VzL3RydS1zZWFyY2gtdmlldy1ldmVudC1oYW5kbGVyJztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoUmVzdWx0Vmlld01hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtc2VhcmNoLXJlc3VsdC12aWV3LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVDYXJkIH0gZnJvbSAnLi90cnUtY2FyZCc7XHJcbmltcG9ydCB7IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi90b29sYmFyL2NsYXNzZXMvdHJ1LXRvb2xiYXItZHJvcGRvd24tb3B0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWNhcmQtY29sdW1uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWNhcmQtY29sdW1uLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jYXJkLWNvbHVtbi5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1Q2FyZENvbHVtbiB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydUNhcmRDb2x1bW5Db25maWdcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCdjYXJkUG9ydGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBvcnRhbCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHByaXZhdGUgcGFyZW50VGFibGVQbHVyYWxMYWJlbCE6IHN0cmluZztcclxuICBwcml2YXRlIGNoaWxkVGFibGVOYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcGFyZW50UXVlcnkgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9ja1Byb3BlcnR5ITogc3RyaW5nIHwgbnVsbDtcclxuIFxyXG4gIHByaXZhdGUgdW5hc3NpZ25lZExvY2tlZCE6IHN0cmluZztcclxuICBwcml2YXRlIHVuYXNzaWduZWREcmFnZ2FibGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZERyb3BwYWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgaW5hY3RpdmVWaXNpYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIGluYWN0aXZlRHJhZ2dhYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIGluYWN0aXZlRHJvcHBhYmxlITogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5Tb3J0OiAoKGNvbHVtbnM6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGNhcmRTb3J0OiAoKGNhcmRzOiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgcmVsYXRlZFBhcmVudE5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWxhdGVkQ2hpbGROYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgaW5zZXJ0QmVmb3JlOiBhbnk7XHJcbiAgcHJpdmF0ZSB1bmlxdWVJZCE6IHN0cmluZztcclxuICBwcml2YXRlIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuXHJcbiAgcGFyZW50VGFibGVOYW1lITogc3RyaW5nO1xyXG4gIGNoaWxkVGFibGVQbHVyYWxMYWJlbCE6IHN0cmluZztcclxuICBidXN5TWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgaXNCdXN5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29sdW1uczogYW55ID0gW107XHJcbiAgY2FyZHM6IGFueSA9IFtdO1xyXG4gIGxvY2tlZENvbHVtbnM6IGFueSA9IFtdO1xyXG4gIGNvbHVtbkZpbHRlckNob2ljZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+IHwgbnVsbCA9IFtdO1xyXG4gIGNvbHVtbkZpbHRlclJlZnM6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICBjYXJkRmlsdGVyU3RyOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcclxuICBzZWxlY3RlZENhcmRzOiBBcnJheTxUcnVDYXJkPiA9IFtdO1xyXG4gIGNvbG9yITogc3RyaW5nIHwgbnVsbDtcclxuICB1bmFzc2lnbmVkQ29sb3IhOiBzdHJpbmcgfCBudWxsO1xyXG4gIGtleSE6IHN0cmluZztcclxuICB1bmFzc2lnbmVkVmlzaWJsZSE6IGJvb2xlYW47XHJcbiAgdW5hc3NpZ25lZE5hbWUhOiBzdHJpbmcgfCBudWxsO1xyXG4gIHVzZXJIYXNQYXJlbnRUYWJsZVJvbGUgPSB0cnVlOyAvL3BhcmVudFRhYmxlTW9kZWwuY2FuRGlzcGxheTtcclxuICB2aWV3TWVudUl0ZW1zOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZFZpZXdNZW51SXRlbTogYW55IHwgbnVsbCA9IG51bGw7XHJcbiAgcGFyZW50VG9vbGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcbiAgY29sdW1uRmlsdGVyVG9vbHRpcDogc3RyaW5nID0gJyc7XHJcbiAgY2FyZEZpbHRlclRvb2x0aXA6IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIHByaXZhdGUgc2VhcmNoVmlld0V2ZW50SGFuZGxlcjogVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgc2VhcmNoUmVzdWx0Vmlld01hbmFnZXI6IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyKSB7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyZW50VGFibGVNb2RlbCA9IG51bGw7Ly9kYXRhU2VydmljZS5tb2RlbC50YWJsZXNbcGFyZW50VGFibGVOYW1lXTtcclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEYXRhRm9yRW50aXR5ID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgdmFyIGRhdGEgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcucm93RGF0YUVuaGFuY2VyKGVudGl0eSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGhhc1VuZGVmaW5lZENoaWxkcmVuID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgY29uc3QgZW50aXR5UHJvcGVydHlOYW1lID0gdGhpcy5jb25maWcucGFyZW50VG9DaGlsZFJlbGF0aW9uc2hpcE5hbWUgYXMgRW50aXR5T2JqZWN0S2V5O1xyXG4gICAgcmV0dXJuICFlbnRpdHlbZW50aXR5UHJvcGVydHlOYW1lXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzRW1wdHlDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiAhZW50aXR5W2VudGl0eVByb3BlcnR5TmFtZV0ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNJbmFjdGl2ZUNoaWxkcmVuID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgY29uc3QgZW50aXR5UHJvcGVydHlOYW1lID0gdGhpcy5jb25maWcucGFyZW50VG9DaGlsZFJlbGF0aW9uc2hpcE5hbWUgYXMgRW50aXR5T2JqZWN0S2V5O1xyXG4gICAgcmV0dXJuIF8uZXZlcnkoW2VudGl0eVByb3BlcnR5TmFtZV0sIChjaGlsZDogYW55KSA9PiB7IHJldHVybiAhY2hpbGQuYWN0aXZlOyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQWRkZWRVbnNhdmVkQ2hpbGRyZW4gPSAoZW50aXRpZXM6IEFycmF5PFRydUVudGl0eUJhc2U+LCBwYXJlbnRSZWY6IG51bWJlcikgPT4ge1xyXG4gICAgcmV0dXJuIF8uc29tZShlbnRpdGllcywgKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMua2V5IGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgICAgcmV0dXJuIGVudGl0eVtlbnRpdHlQcm9wZXJ0eU5hbWVdID09PSBwYXJlbnRSZWZcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhciA9ICgpID0+IHtcclxuICAgIHZhciBsb2NrZWRDb2x1bW5zID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubG9ja2VkLWNvbHVtbnMnKVswXTtcclxuICAgIHZhciB1bmxvY2tlZENvbHVtbnMgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgd2hpbGUgKGxvY2tlZENvbHVtbnMgJiYgbG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpIHsgbG9ja2VkQ29sdW1ucy5yZW1vdmVDaGlsZChsb2NrZWRDb2x1bW5zLmxhc3RDaGlsZCk7IH07XHJcbiAgICB3aGlsZSAodW5sb2NrZWRDb2x1bW5zICYmIHVubG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpIHsgdW5sb2NrZWRDb2x1bW5zLnJlbW92ZUNoaWxkKHVubG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpOyB9XHJcbiAgICB3aGlsZSAodGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCkgeyB0aGlzLnNlbGVjdGVkQ2FyZHMucG9wKCk7IH07XHJcbiAgICAvL3RoaXMuY29uZmlnLm9uU2VsZWN0aW9uQ2hhbmdlZChbXSk7XHJcbiAgICAvL3RoaXMuY29uZmlnLmNsZWFyRmlsdGVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21Tb3J0UGF0aCA9IChhcmdzOiBbYW55LCBzdHJpbmdbXV0pOiBhbnkgPT4ge1xyXG4gICAgbGV0IGN1cnJlbnQ6IGFueSA9IGFyZ3NbMF07XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYXJnc1sxXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcGFydE5hbWU6IHN0cmluZztcclxuICAgICAgaWYgKGkgIT09IGFyZ3NbMV0ubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHBhcnROYW1lID0gJ28nICsgYXJnc1sxXVtpXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJ0TmFtZSA9IGFyZ3NbMV1baV07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjdXJyZW50W3BhcnROYW1lXSkge1xyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3BhcnROYW1lXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN1cnJlbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUl0ZW1zU291cmNlKG5ld0VudGl0aWVzOiBBcnJheTxhbnk+LCByZXZlcnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuXHJcbiAgICB0aGlzLmJ1c3lNZXNzYWdlID0gJ1JlbmRlcmluZy4uLidcclxuICAgXHJcbiAgICBpZiAoIXJldmVydClcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB1dWlkdjQoKSwgJzAnKTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbkZpbHRlckNob2ljZXMgPSBbXTtcclxuICAgIHRoaXMuY29sdW1uRmlsdGVyUmVmcyA9IFtdO1xyXG4gICAgdGhpcy5jYXJkRmlsdGVyU3RyID0gbnVsbDtcclxuXHJcbiAgICBpZiAoIW5ld0VudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmxvY2tlZENvbHVtbnMgPSBbXTtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbG9ja2VkQ29sdW1uczogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgbGV0IGVtcHR5UGFyZW50czogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgbGV0IGNvbHVtbnM6IEFycmF5PGFueT4gPSBbXTtcclxuXHJcbiAgICBsZXQgcXVlcnkgPSBuZXcgYnJlZXplLkVudGl0eVF1ZXJ5KCdRdWVyeScgKyB0aGlzLnBhcmVudFRhYmxlTmFtZSk7XHJcbiAgICBsZXQgcGFyZW50UmVmcyA9IG5ld0VudGl0aWVzLm1hcCgoZTogYW55KSA9PiB7IHJldHVybiBlW3RoaXMucGFyZW50VGFibGVOYW1lICsgJ1JlZiddOyB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRDb2x1bW5RdWVyeSlcclxuICAgICAgcXVlcnkgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZENvbHVtblF1ZXJ5KHF1ZXJ5LCB0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHF1ZXJ5ID0gcXVlcnkuZXhwYW5kKHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lKTtcclxuXHJcbiAgICBsZXQgdW5pcXVlUGFyZW50UmVmcyA9IFsuLi5uZXcgU2V0KHBhcmVudFJlZnMpXVxyXG4gICAgcXVlcnkgPSBxdWVyeS53aGVyZSh0aGlzLnBhcmVudFRhYmxlTmFtZSArICdSZWYnLCAnaW4nLCB1bmlxdWVQYXJlbnRSZWZzKTtcclxuXHJcbiAgICAvL2lmICh0aGlzLnBhcmVudFF1ZXJ5KVxyXG4gICAgLy8gIHF1ZXJ5ID0gcXVlcmllc1t0aGlzLnBhcmVudFF1ZXJ5XShxdWVyeSk7XHJcblxyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5jdXN0b21TZWFyY2godGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnBhcmVudFRhYmxlTmFtZSksIHF1ZXJ5KS5zdWJzY3JpYmUoKHBhcmVudHMpID0+IHtcclxuICAgICAgLy90aGlzLmNvbmZpZy5hZGRQYXJlbnRzVG9GaWx0ZXIocGFyZW50cyk7XHJcblxyXG4gICAgICBlbXB0eVBhcmVudHMgPSBfLmZpbHRlcihwYXJlbnRzLCAocGFyZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzVW5kZWZpbmVkQ2hpbGRyZW4ocGFyZW50KSB8fCB0aGlzLmhhc0VtcHR5Q2hpbGRyZW4ocGFyZW50KSB8fCB0aGlzLmhhc0luYWN0aXZlQ2hpbGRyZW4ocGFyZW50KSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmhhc0FkZGVkVW5zYXZlZENoaWxkcmVuKG5ld0VudGl0aWVzLCBwYXJlbnQuUmVmKSkge1xyXG4gICAgICAgICAgICBwYXJlbnRbJ2NhcmRzJ10gPSBbXTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBxdWVyeWFibGVQYXJlbnRSZWZzID0gXy5wbHVjayhwYXJlbnRzLCB0aGlzLmtleSlcclxuXHJcbiAgICAgIGxldCBpbmFjdGl2ZVdpdGhQYXJlbnQ6IEFycmF5PGFueT4gPSBbXTtcclxuICAgICAgbGV0IGFjdGl2ZVdpdGhvdXRQYXJlbnQ6IEFycmF5PGFueT4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdW5hc3NpZ25lZDogdHJ1ZSxcclxuICAgICAgICAgIGNhcmRzOiBbXVxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuXHJcbiAgICAgIHBhcmVudHMuZm9yRWFjaCgocGFyZW50OiBhbnkpID0+IHtcclxuICAgICAgICBwYXJlbnRbJ2NhcmRzJ10gPSBbXTtcclxuICAgICAgICBpZiAocXVlcnlhYmxlUGFyZW50UmVmcy5pbmRleE9mKHBhcmVudFt0aGlzLmtleV0pICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9ja1Byb3BlcnR5ICE9PSBudWxsICYmIHBhcmVudFt0aGlzLmxvY2tQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgbG9ja2VkQ29sdW1ucy5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubG9ja1Byb3BlcnR5ID09PSBudWxsIHx8ICFwYXJlbnRbdGhpcy5sb2NrUHJvcGVydHldICYmICFfLmNvbnRhaW5zKGVtcHR5UGFyZW50cywgcGFyZW50KSkge1xyXG4gICAgICAgICAgICBjb2x1bW5zLnB1c2gocGFyZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyZW50WydpbmFjdGl2ZSddID0gdHJ1ZTtcclxuICAgICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHBhcmVudHMuZm9yRWFjaCgocGFyZW50OiBhbnkpID0+IHtcclxuICAgICAgICB2YXIgY2hvaWNlID0ge1xyXG4gICAgICAgICAgdmFsdWU6IHBhcmVudC5SZWYsXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRDb2x1bW5JZChwYXJlbnQpIGFzIHN0cmluZ1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbHVtbkZpbHRlckNob2ljZXMhLnB1c2goY2hvaWNlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBuZXdFbnRpdGllcy5mb3JFYWNoKChlbnRpdHkpID0+IHtcclxuICAgICAgICB2YXIgZW50aXR5UGFyZW50ID0gXy5maW5kKHBhcmVudHMsIChwKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdKVxyXG4gICAgICAgICAgICByZXR1cm4gcC5SZWYgPT09IGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXS5SZWY7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHlQYXJlbnQpIHtcclxuICAgICAgICAgIGlmIChxdWVyeWFibGVQYXJlbnRSZWZzLmluZGV4T2YoZW50aXR5UGFyZW50W3RoaXMua2V5XSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGVudGl0eVBhcmVudC5jYXJkcy5wdXNoKHRoaXMuY3JlYXRlRGF0YUZvckVudGl0eShlbnRpdHkpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVudGl0eVBhcmVudC5jYXJkcy5wdXNoKHRoaXMuY3JlYXRlRGF0YUZvckVudGl0eShlbnRpdHkpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgIWVudGl0eVBhcmVudCAmJlxyXG4gICAgICAgICAgZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdICYmXHJcbiAgICAgICAgICBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0uUmVmID4gMCkge1xyXG4gICAgICAgICAgbGV0IGluYWN0aXZlUGFyZW50ID0gZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdO1xyXG4gICAgICAgICAgaWYgKGluYWN0aXZlV2l0aFBhcmVudC5pbmRleE9mKGluYWN0aXZlUGFyZW50KSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgaW5hY3RpdmVQYXJlbnRbJ2NhcmRzJ10gPSBbXTtcclxuICAgICAgICAgICAgaW5hY3RpdmVQYXJlbnRbJ2luYWN0aXZlJ10gPSB0cnVlO1xyXG4gICAgICAgICAgICBpbmFjdGl2ZVdpdGhQYXJlbnQucHVzaChpbmFjdGl2ZVBhcmVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbmFjdGl2ZVBhcmVudC5jYXJkcy5wdXNoKHRoaXMuY3JlYXRlRGF0YUZvckVudGl0eShlbnRpdHkpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYWN0aXZlV2l0aG91dFBhcmVudFswXS5jYXJkcy5wdXNoKHRoaXMuY3JlYXRlRGF0YUZvckVudGl0eShlbnRpdHkpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29sdW1uU29ydCkge1xyXG4gICAgICAgIHZhciBjb2x1bW5Tb3J0UGFydHMgPSBbJyddOyAvL3RoaXMuY29sdW1uU29ydC5zcGxpdCgnLycpO1xyXG5cclxuICAgICAgICBsb2NrZWRDb2x1bW5zID0gXy5zb3J0QnkobG9ja2VkQ29sdW1ucywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbHVtbnMgPSBfLnNvcnRCeShjb2x1bW5zLCAobykgPT4ge1xyXG4gICAgICAgICAgdmFyIHYgPSB0aGlzLmdldFZhbHVlRnJvbVNvcnRQYXRoKFtvLCBjb2x1bW5Tb3J0UGFydHNdKTtcclxuICAgICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgICByZXR1cm4gXy5pc1N0cmluZyh2KSA/IHYudHJpbSgpIDogdjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50ID0gXy5zb3J0QnkoaW5hY3RpdmVXaXRoUGFyZW50LCAobykgPT4ge1xyXG4gICAgICAgICAgdmFyIHYgPSB0aGlzLmdldFZhbHVlRnJvbVNvcnRQYXRoKFtvLCBjb2x1bW5Tb3J0UGFydHNdKTtcclxuICAgICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgICByZXR1cm4gXy5pc1N0cmluZyh2KSA/IHYudHJpbSgpIDogdjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZW1wdHlQYXJlbnRzID0gXy5zb3J0QnkoZW1wdHlQYXJlbnRzLCAobykgPT4ge1xyXG4gICAgICAgICAgdmFyIHYgPSB0aGlzLmdldFZhbHVlRnJvbVNvcnRQYXRoKFtvLCBjb2x1bW5Tb3J0UGFydHNdKTtcclxuICAgICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgICByZXR1cm4gXy5pc1N0cmluZyh2KSA/IHYudHJpbSgpIDogdjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcuY2FyZFNvcnQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBsb2NrZWRDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uY2FyZHMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFNvcnQoY29sdW1uLmNhcmRzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGFjdGl2ZVdpdGhvdXRQYXJlbnQuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uY2FyZHMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFNvcnQoY29sdW1uLmNhcmRzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaW5hY3RpdmVWaXNpYmxlKVxyXG4gICAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChpbmFjdGl2ZVdpdGhQYXJlbnQpO1xyXG5cclxuICAgICAgY29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGVtcHR5UGFyZW50cyk7XHJcblxyXG4gICAgICBpZiAodGhpcy51bmFzc2lnbmVkVmlzaWJsZSAmJiAhdGhpcy51bmFzc2lnbmVkTG9ja2VkKVxyXG4gICAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChhY3RpdmVXaXRob3V0UGFyZW50KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnVuYXNzaWduZWRWaXNpYmxlICYmIHRoaXMudW5hc3NpZ25lZExvY2tlZClcclxuICAgICAgICBsb2NrZWRDb2x1bW5zID0gY29sdW1ucy5jb25jYXQobG9ja2VkQ29sdW1ucyk7XHJcblxyXG4gICAgICB0aGlzLmxvY2tlZENvbHVtbnMgPSBsb2NrZWRDb2x1bW5zO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBjb2x1bW5zO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgIG5ldyBDYXJkVmlldyh0aGlzLCB0aGlzLmxvY2tlZENvbHVtbnMsIHRoaXMuY29sdW1ucyk7XHJcblxyXG4gICAgICAgIGlmIChyZXZlcnQpIHtcclxuICAgICAgICAgIGxldCBjb2x1bW5FbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMnKVswXTtcclxuICAgICAgICAgIGxldCBwcmV2aW91c1Njcm9sbFBvc2l0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB1dWlkdjQoKSk7XHJcbiAgICAgICAgICBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQgPSBwcmV2aW91c1Njcm9sbFBvc2l0aW9uID8gK3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24gOiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc0J1c3kgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG8gPSAoKSA9PiB7XHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLnNlYXJjaFZpZXdFdmVudEhhbmRsZXIub25TZWFyY2goKS5waXBlKHNraXAoMSkpLnN1YnNjcmliZSgoc2V0dXBRdWVyeTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub25TZWFyY2goc2V0dXBRdWVyeSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU2VhcmNoID0gKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgdGhpcy5pc0J1c3kgPSB0cnVlO1xyXG4gICAgdGhpcy5idXN5TWVzc2FnZSA9ICdTZWFyY2hpbmcgZm9yICcgKyB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbCArICcuLi4nO1xyXG4gICAgbGV0IGpvaW5zID0gW107XHJcblxyXG4gICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaChcclxuICAgICAgdGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLmNoaWxkVGFibGVOYW1lKSxcclxuICAgICAgc2V0dXBRdWVyeSxcclxuICAgICAgbnVsbCwgZmFsc2UpKTtcclxuXHJcbiAgICBmb3JrSm9pbihqb2lucykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzdWx0cyA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkcyA9IHJlc3VsdHNbMF07XHJcbiAgICAgICAgdGhpcy51cGRhdGVJdGVtc1NvdXJjZShyZXN1bHRzWzBdLCBmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJDb2x1bW5zID0gKHNlbGVjdGVkT3B0aW9uczogQXJyYXk8SVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbj4gfCBudWxsKSA9PiB7XHJcbiAgICBsZXQgcmVmcyA9IHNlbGVjdGVkT3B0aW9ucyEuZmlsdGVyKChvcHRpb246IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24pID0+IHsgcmV0dXJuIG9wdGlvbi52YWx1ZSB9KVxyXG5cclxuICAgIHZhciBldmVudCA9IG5ldyBDdXN0b21FdmVudCgnZmlsdGVyLWNvbHVtbnMnLCB7XHJcbiAgICAgIGJ1YmJsZXM6IHRydWUsXHJcbiAgICAgIGRldGFpbDogcmVmc1xyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIHVubG9ja2VkQ29sdW1uc0VsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgdW5sb2NrZWRDb2x1bW5zRWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuXHJcbiAgICB2YXIgdW5sb2NrZWRDb2x1bW5zRWxlbWVudCA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnVubG9ja2VkLWNvbHVtbnMnKVswXTtcclxuICAgIHZhciBjb2x1bW5FbGVtZW50cyA9IHVubG9ja2VkQ29sdW1uc0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jb2x1bW4nKTtcclxuICAgIHZhciBhcnIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb2x1bW5FbGVtZW50cyk7XHJcbiAgICBhcnIuc29ydCgoYSwgYikgPT4gYS5pZCAtIGIuaWQpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSBhcnIubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgdW5sb2NrZWRDb2x1bW5zRWxlbWVudC5pbnNlcnRCZWZvcmUoYXJyW2ldLCB1bmxvY2tlZENvbHVtbnNFbGVtZW50LmZpcnN0Q2hpbGQpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGZpbHRlckNhcmRzID0gKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICB0aGlzLmNhcmRGaWx0ZXJTdHIgPSB2YWx1ZSA/IHZhbHVlLnRvTG93ZXJDYXNlKCkgOiAnJztcclxuXHJcbiAgICB2YXIgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2ZpbHRlci1jYXJkcycsIHtcclxuICAgICAgYnViYmxlczogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBjb2x1bW5FbGVtZW50cyA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jb2x1bW4nKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbkVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbHVtbkVsZW1lbnRzW2ldLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNhcmRGaWx0ZXJTdHIpIHtcclxuICAgICAgdmFyIHVubG9ja2VkQ29sdW1uc0VsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICAgIHZhciBjb2x1bW5FbGVtZW50cyA9IHVubG9ja2VkQ29sdW1uc0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jb2x1bW4nKTtcclxuICAgICAgdmFyIGNvbHVtbnNXaXRoQ2FyZHMgPSBbXTtcclxuICAgICAgdmFyIGNvbHVtbnNXaXRob3V0Q2FyZHMgPSBbXTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1bW5FbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjYXJkRWxlbWVudHMgPSBjb2x1bW5FbGVtZW50c1tpXS5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyOm5vdCgudHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQpOm5vdCguZW1wdHkpJyk7XHJcbiAgICAgICAgaWYgKGNhcmRFbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbHVtbnNXaXRoQ2FyZHMucHVzaChjb2x1bW5FbGVtZW50c1tpXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbHVtbnNXaXRob3V0Q2FyZHMucHVzaChjb2x1bW5FbGVtZW50c1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbHVtbnNXaXRoQ2FyZHMuc29ydCgoYSwgYikgPT4gYS5pZCAtIGIuaWQpO1xyXG4gICAgICBjb2x1bW5zV2l0aG91dENhcmRzLnNvcnQoKGEsIGIpID0+IGEuaWQgLSBiLmlkKTtcclxuICAgICAgZm9yICh2YXIgaSA9IGNvbHVtbnNXaXRob3V0Q2FyZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICB1bmxvY2tlZENvbHVtbnNFbGVtZW50Lmluc2VydEJlZm9yZShjb2x1bW5zV2l0aG91dENhcmRzW2ldLCB1bmxvY2tlZENvbHVtbnNFbGVtZW50LmZpcnN0Q2hpbGQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gY29sdW1uc1dpdGhDYXJkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIHVubG9ja2VkQ29sdW1uc0VsZW1lbnQuaW5zZXJ0QmVmb3JlKGNvbHVtbnNXaXRoQ2FyZHNbaV0sIHVubG9ja2VkQ29sdW1uc0VsZW1lbnQuZmlyc3RDaGlsZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciB1bmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgICB2YXIgY29sdW1uRWxlbWVudHMgPSB1bmxvY2tlZENvbHVtbnNFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1uJyk7XHJcbiAgICAgIHZhciBhcnIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb2x1bW5FbGVtZW50cyk7XHJcbiAgICAgIGFyci5zb3J0KChhLCBiKSA9PiBhLmlkIC0gYi5pZCk7XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgdW5sb2NrZWRDb2x1bW5zRWxlbWVudC5pbnNlcnRCZWZvcmUoYXJyW2ldLCB1bmxvY2tlZENvbHVtbnNFbGVtZW50LmZpcnN0Q2hpbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3Rpb24gPSAoY2FyZDogVHJ1Q2FyZCkgPT4ge1xyXG4gICAgaWYgKCFjYXJkLnNlbGVjdGVkKSB7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgICAgY2FyZC5jYXJkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1zZWxlY3RlZCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5zZWxlY3RlZENhcmRzLmluZGV4T2YoY2FyZCk7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhcmRzLnB1c2goY2FyZCk7XHJcblxyXG4gICAgICBjYXJkLmNhcmRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXNlbGVjdGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9zY29wZS5jb25maWcub25TZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGVkQ2FyZHMpO1xyXG4gIH1cclxuXHJcbiAgZHJhZ1N0YXJ0ID0gKGU6IGFueSwgY2FyZDogVHJ1Q2FyZCkgPT4ge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAvL3Njb3BlLmNvbmZpZy5jbG9zZVNlYXJjaFBhbmVsKCk7XHJcblxyXG4gICAgaWYgKChjYXJkLmNvbHVtbi5kYXRhLnVuYXNzaWduZWQgJiYgIXRoaXMudW5hc3NpZ25lZERyYWdnYWJsZSkgfHxcclxuICAgICAgKGNhcmQuY29sdW1uLmRhdGEuaW5hY3RpdmUgJiYgIXRoaXMuaW5hY3RpdmVEcmFnZ2FibGUpKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XHJcblxyXG4gICAgaWYgKCFjYXJkLnNlbGVjdGVkKSB7XHJcbiAgICAgIGNhcmQuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbihjYXJkKVxyXG4gICAgfSAgIFxyXG5cclxuICAgIGxldCBjbG9uZWROb2RlID0gZS50YXJnZXQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgY2xvbmVkTm9kZS5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUudG9wID0gXCIwcHhcIjtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUubGVmdCA9IFwiLTEwMDAwcHhcIjtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUub3ZlcmZsb3cgPSAndmlzaWJsZSc7XHJcbiAgICBjbG9uZWROb2RlLmNsYXNzTGlzdC5hZGQoJ2Nsb25lZC1jYXJkJyk7XHJcblxyXG4gICAgdmFyIGlubmVyID0gY2xvbmVkTm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidHJ1LWNhcmQtcG9ydGFsLWNhcmRcIilbMF07XHJcbiAgICBpbm5lci5zdHlsZS50cmFuc2Zvcm0gPSBcInJvdGF0ZSgtMTBkZWcpXCI7XHJcbiAgICBpbm5lci5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XHJcbiAgICBpbm5lci5zdHlsZS56SW5kZXggPSAxMDtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNsb25lZE5vZGUpO1xyXG4gICAgZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGNsb25lZE5vZGUsIDUwLCA1MCk7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBkcmFnT3ZlciA9IChlOiBhbnksIGNhcmQ6IFRydUNhcmQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xyXG4gICAgaWYgKCF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1jb250YWluZXInKSB8fFxyXG4gICAgICAoY2FyZC5jb2x1bW4uZGF0YS51bmFzc2lnbmVkICYmICF0aGlzLnVuYXNzaWduZWREcm9wcGFibGUpIHx8XHJcbiAgICAgIChjYXJkLmNvbHVtbi5kYXRhLmluYWN0aXZlICYmICF0aGlzLmluYWN0aXZlRHJvcHBhYmxlKSkge1xyXG4gICAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdtb3ZlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYWdFbmQgPSAoZTogYW55KSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGxldCBlbGVtZW50czogSFRNTENvbGxlY3Rpb25PZjxFbGVtZW50PiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nsb25lZC1jYXJkJyk7XHJcbiAgICB3aGlsZSAoZWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBlbGVtZW50c1swXS5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cnUtY2FyZC1wbGFjZWhvbGRlcicpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJvcCA9IChlOiBhbnksIGNhcmQ6IFRydUNhcmQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICBsZXQgaW5kZXggPSBjYXJkLmNvbHVtbi5jYXJkcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRDYXJkc1tpXSk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhcmRzW2ldLnVwZGF0ZURhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2FyZC5jb2x1bW4uZGF0YS51bmFzc2lnbmVkICYmICF0aGlzLnVuYXNzaWduZWREcm9wcGFibGUgfHxcclxuICAgICAgY2FyZC5jb2x1bW4uZGF0YS5pbmFjdGl2ZSAmJiAhdGhpcy5pbmFjdGl2ZURyb3BwYWJsZSB8fFxyXG4gICAgICAhdGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCkge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnID09PSBudWxsKSB7XHJcbiAgICAgIC8vdGhpcy5jb25maWcub25Ecm9wKGNhcmQsIHRoaXMuc2VsZWN0ZWRDYXJkcywgdGhpcy5jb25maWcsIHRoaXMucG9ydGFsLCBlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY2FyZC5jb2x1bW4uYWRkQ2FyZCh0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhcmRzW2ldLmNvbHVtbi5yZW1vdmVDYXJkKHRoaXMuc2VsZWN0ZWRDYXJkc1tpXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdoaWxlICh0aGlzLnNlbGVjdGVkQ2FyZHMubGVuZ3RoKSB7IHRoaXMuc2VsZWN0ZWRDYXJkcy5wb3AoKTsgfTtcclxuICAgICAgXHJcbiAgICAgIC8vbGV0IHNhdmVQcm9taXNlID0gLmNvbmZpZy5zYXZlKCk7XHJcbiAgICAgIC8vaWYgKHNhdmVQcm9taXNlKSB7XHJcbiAgICAgIC8vICB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1kaXNhYmxlZCcpO1xyXG4gICAgICAvLyAgYXdhaXQgc2F2ZVByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgIC8vICAgIHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWRpc2FibGVkJyk7XHJcbiAgICAgIC8vICB9KS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgIC8vICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgLy8gICAgdmFyIGNvbHVtbkVsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1ucycpWzBdO1xyXG4gICAgICAvLyAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2Nyb2xsX3Bvc2l0aW9uJyArIHRoaXMudW5pcXVlSWQsIGNvbHVtbkVsZW1lbnQuc2Nyb2xsTGVmdCk7XHJcbiAgICAgIC8vICAgIHNjb3BlLmNvbmZpZy5yZXZlcnQoKTtcclxuICAgICAgLy8gICAgdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtZGlzYWJsZWQnKTtcclxuICAgICAgLy8gIH0pO1xyXG4gICAgICAvL30gZWxzZSB7XHJcbiAgICAgIC8vICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIC8vICB2YXIgY29sdW1uRWxlbWVudCA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jb2x1bW5zJylbMF07XHJcbiAgICAgIC8vICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2Nyb2xsX3Bvc2l0aW9uJyArIHRoaXMudW5pcXVlSWQsIGNvbHVtbkVsZW1lbnQuc2Nyb2xsTGVmdCk7XHJcbiAgICAgIC8vICBzY29wZS5jb25maWcucmV2ZXJ0KCk7XHJcbiAgICAgIC8vfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyZW50VGFibGVOYW1lID0gdGhpcy5jb25maWcucGFyZW50VGFibGVOYW1lO1xyXG4gICAgdGhpcy5wYXJlbnRUYWJsZVBsdXJhbExhYmVsID0gdGhpcy5jb25maWcucGFyZW50VGFibGVQbHVyYWxMYWJlbDtcclxuICAgIHRoaXMuY2hpbGRUYWJsZU5hbWUgPSB0aGlzLmNvbmZpZy5jaGlsZFRhYmxlTmFtZTtcclxuICAgIHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsID0gdGhpcy5jb25maWcuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgdGhpcy5rZXkgPSB0aGlzLmNvbmZpZy5rZXk7XHJcbiAgICB0aGlzLnBhcmVudFF1ZXJ5ID0gbnVsbFxyXG4gICAgdGhpcy5sb2NrUHJvcGVydHkgPSB0aGlzLmNvbmZpZy5sb2NrUHJvcGVydHk7XHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5jb25maWcuY29sb3I7XHJcbiAgICB0aGlzLnVuYXNzaWduZWRWaXNpYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZFZpc2libGU7XHJcbiAgICB0aGlzLnVuYXNzaWduZWROYW1lID0gdGhpcy5jb25maWcudW5hc3NpZ25lZE5hbWU7XHJcbiAgICB0aGlzLnVuYXNzaWduZWRMb2NrZWQgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkTG9ja2VkO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkQ29sb3IgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkQ29sb3I7XHJcbiAgICB0aGlzLnVuYXNzaWduZWREcmFnZ2FibGUgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkRHJhZ2dhYmxlO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZERyb3BwYWJsZTtcclxuXHJcbiAgICB0aGlzLmluYWN0aXZlVmlzaWJsZSA9IHRoaXMuY29uZmlnLmluYWN0aXZlVmlzaWJsZTtcclxuICAgIHRoaXMuaW5hY3RpdmVEcmFnZ2FibGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZURyYWdnYWJsZTtcclxuICAgIHRoaXMuaW5hY3RpdmVEcm9wcGFibGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZURyb3BwYWJsZTtcclxuXHJcbiAgICB0aGlzLmNvbHVtblNvcnQgPSB0aGlzLmNvbmZpZy5jb2x1bW5Tb3J0O1xyXG4gICAgdGhpcy5jYXJkU29ydCA9IHRoaXMuY29uZmlnLmNhcmRTb3J0O1xyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJUb29sdGlwID0gdGhpcy5jb25maWcucGFyZW50VGFibGVQbHVyYWxMYWJlbCA/IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlUGx1cmFsTGFiZWwgKyAnIEZpbHRlcicgOiAnRmlsdGVyJztcclxuICAgIHRoaXMuY2FyZEZpbHRlclRvb2x0aXAgPSB0aGlzLmNvbmZpZy5jaGlsZFRhYmxlUGx1cmFsTGFiZWwgPyB0aGlzLmNvbmZpZy5jaGlsZFRhYmxlUGx1cmFsTGFiZWwgKyAnIEZpbHRlcicgOiAnRmlsdGVyJztcclxuXHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmtleS5sYXN0SW5kZXhPZih0aGlzLnBhcmVudFRhYmxlTmFtZSk7XHJcbiAgICBsZXQgcHJlZml4ID0gdGhpcy5rZXkuc3Vic3RyaW5nKGluZGV4LCAtMSk7XHJcbiAgICBpZiAocHJlZml4KSB7XHJcbiAgICAgIHRoaXMucmVsYXRlZFBhcmVudE5hbWUgPSBwcmVmaXggKyB0aGlzLnBhcmVudFRhYmxlTmFtZTtcclxuICAgICAgdGhpcy5yZWxhdGVkQ2hpbGROYW1lID0gcHJlZml4ICsgdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lID0gdGhpcy5wYXJlbnRUYWJsZU5hbWU7XHJcbiAgICAgIHRoaXMucmVsYXRlZENoaWxkTmFtZSA9IHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5pcXVlSWQgPSB1dWlkdjQoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vc2V0VGltZW91dCB0byBwcmV2ZW50OiBFUlJPUiBFcnJvcjogTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLiBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbmZpZy52aWV3TWVudUNvbmZpZy5tZW51SXRlbXNFbmFibGVkID0gKCkgPT4geyByZXR1cm4gdGhpcy5jb2x1bW5zLmxlbmd0aDsgfTtcclxuICAgICAgdGhpcy5jb25maWcudmlld01lbnVDb25maWcuYWxsTWVudXMoKS5zdWJzY3JpYmUoKG1lbnU6IGFueSkgPT4geyB0aGlzLnZpZXdNZW51SXRlbXMgPSBtZW51OyB9KTtcclxuICAgICAgdGhpcy5wYXJlbnRUb29sYmFyVGVtcGxhdGUgPSB0aGlzLnNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyLnNlYXJjaFZpZXdUb29sYmFyVGVtcGxhdGU7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNlbGVjdGlvbiA9IChjYXJkOiBUcnVDYXJkKSA9PiB7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgIGNhcmQuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtc2VsZWN0ZWQnKTtcclxuXHJcbiAgICAvL3Njb3BlLmNvbmZpZy5vblNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWRDYXJkcyk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDYXJkVmlldyB7XHJcbiAgcHJpdmF0ZSBsb2NrZWRDb2x1bW5zRWxlbWVudDtcclxuICBwcml2YXRlIHVubG9ja2VkQ29sdW1uc0VsZW1lbnRcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sXHJcbiAgICBwcml2YXRlIGxvY2tlZENvbHVtbnM6IGFueSxcclxuICAgIHByaXZhdGUgY29sdW1uczogYW55KSB7XHJcbiAgICB0aGlzLmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgdGhpcy51bmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgaWYgKGxvY2tlZENvbHVtbnMgJiYgbG9ja2VkQ29sdW1ucy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuYWRkQ29sdW1ucyhsb2NrZWRDb2x1bW5zLCB0cnVlKTtcclxuXHJcbiAgICBpZiAoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aClcclxuICAgICAgdGhpcy5hZGRDb2x1bW5zKGNvbHVtbnMsIGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLnVubG9ja2VkQ29sdW1uc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZmlsdGVyLWNvbHVtbnMnLCAoZTogQ3VzdG9tRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5zKGUuZGV0YWlsIGFzIEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5WaWV3czogQXJyYXk8Q29sdW1uPiA9IFtdO1xyXG5cclxuICBwcml2YXRlIGFkZENvbHVtbnMgPSAoY29sdW1uRGF0YTogQXJyYXk8YW55PiwgbG9ja2VkOiBib29sZWFuKSA9PiB7XHJcbiAgICBsZXQgY29sdW1uc0VsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgaWYgKGxvY2tlZClcclxuICAgICAgY29sdW1uc0VsZW1lbnQgPSB0aGlzLmNhcmRDb2x1bW4ucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICBlbHNlXHJcbiAgICAgIGNvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgbGV0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLmNvbHVtblZpZXdzLnB1c2gobmV3IENvbHVtbih0aGlzLmNhcmRDb2x1bW4sIGNvbHVtbkRhdGFbaV0sIGNvbHVtbnNFbGVtZW50LCBsb2NrZWQsIGkpKTtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5zRWxlbWVudC5hcHBlbmRDaGlsZChmcmFnbWVudCk7XHJcblxyXG4gICAgdGhpcy5jYXJkQ29sdW1uLmJ1c3lNZXNzYWdlID0gJyc7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDb2x1bW5zID0gKG9wdGlvbnM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+KSA9PiB7XHJcbiAgICBsZXQgcmVmcyA9IG9wdGlvbnMubWFwKChvcHRpb246IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24pID0+IHsgcmV0dXJuIG9wdGlvbi52YWx1ZSB9KTtcclxuXHJcbiAgICBpZiAocmVmcyAmJiByZWZzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLmNvbHVtblZpZXdzW2ldO1xyXG5cclxuICAgICAgICBpZiAoIWNvbHVtbi5sb2NrZWQgJiYgY29sdW1uLmRhdGEuZW50aXR5QXNwZWN0KSB7XHJcbiAgICAgICAgICB2YXIgZm91bmQgPSByZWZzLmZpbHRlcih4ID0+IHggPT09IGNvbHVtbi5kYXRhLlJlZikubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgICBpZiAoZm91bmQpIHtcclxuICAgICAgICAgICAgY29sdW1uLmNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1maWx0ZXJlZCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29sdW1uLmNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1maWx0ZXJlZCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNvbHVtblZpZXdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGNvbHVtbiA9IHRoaXMuY29sdW1uVmlld3NbaV07XHJcbiAgICAgICAgY29sdW1uLmNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1maWx0ZXJlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW4ge1xyXG4gIHByaXZhdGUgY2FyZHM6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIHBhcmVudEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBjb2x1bW5FbGVtZW50O1xyXG4gIGxvY2tlZDogYm9vbGVhbjtcclxuICBkYXRhOiBhbnk7XHJcbiAgY2FyZFNjcm9sbFBvcnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICBzZWxlY3RBbGxCdXR0b24hOiBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBwYXJlbnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudCxcclxuICAgIGxvY2tlZDogYm9vbGVhbixcclxuICAgIGluZGV4OiBudW1iZXIpIHtcclxuXHJcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5sb2NrZWQgPSBsb2NrZWQ7XHJcbiAgICB0aGlzLnBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50O1xyXG5cclxuICAgIGxldCBjb2x1bW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4nKTtcclxuICAgIGNvbHVtbkVsZW1lbnQuaWQgPSBpbmRleC50b1N0cmluZygpO1xyXG5cclxuICAgIGlmIChkYXRhPy5pbmFjdGl2ZSlcclxuICAgICAgY29sdW1uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWluYWN0aXZlJyk7XHJcbiAgICBjb2x1bW5FbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5jYXJkQ29sdW1uLmNvbmZpZy53aWR0aCArICdweCc7XHJcbiAgICB0aGlzLmNvbHVtbkVsZW1lbnQgPSBjb2x1bW5FbGVtZW50O1xyXG5cclxuICAgIHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLmNhcmRTY3JvbGxQb3J0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1zY3JvbGwtcG9ydCcpO1xyXG5cclxuICAgIG5ldyBDb2x1bW5IZWFkZXIodGhpcy5jYXJkQ29sdW1uLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQpO1xyXG4gICAgdGhpcy5jb2x1bW5FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZpbHRlci1jYXJkcycsIChlKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0YUJ5RmlsdGVyKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZURhdGEoKTtcclxuXHJcbiAgICB0aGlzLnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb2x1bW5FbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRW1wdHlDYXJkID0gKCkgPT4ge1xyXG4gICAgbGV0IGVtcHR5Q2FyZHMgPSBfLmZpbHRlcih0aGlzLmNhcmRzLCBmdW5jdGlvbiAoY2FyZCkgeyByZXR1cm4gIWNhcmQuZGF0YSB9KTtcclxuICAgIGlmICghZW1wdHlDYXJkcy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuY2FyZHMucHVzaChuZXcgVHJ1Q2FyZCh0aGlzLmNhcmRDb2x1bW4sIHRoaXMsIG51bGwsIGZhbHNlKSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RBbGxCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRW1wdHlDYXJkID0gKCkgPT4ge1xyXG4gICAgdmFyIGVtcHR5Q2FyZHMgPSBfLmZpbHRlcih0aGlzLmNhcmRzLCAoY2FyZCkgPT4geyByZXR1cm4gIWNhcmQuZGF0YSB9KTtcclxuICAgIGlmIChlbXB0eUNhcmRzLmxlbmd0aCkge1xyXG4gICAgICB2YXIgZW1wdHlDYXJkID0gZW1wdHlDYXJkc1swXTtcclxuICAgICAgdmFyIGVtcHR5Q2FyZEVsZW1lbnQgPSBlbXB0eUNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQ7XHJcbiAgICAgIGVtcHR5Q2FyZEVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbXB0eUNhcmRFbGVtZW50KTtcclxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5jYXJkcy5pbmRleE9mKGVtcHR5Q2FyZHNbMF0pO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICAgIHRoaXMuY2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdEFsbEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sdW1uSXNWaXN1YWxseUVtcHR5ID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FyZHMuZXZlcnkoZnVuY3Rpb24gKGNhcmQpIHtcclxuICAgICAgcmV0dXJuIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUNhcmQgPSAoY2FyZDogYW55KSA9PiB7XHJcbiAgICBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudCk7XHJcblxyXG4gICAgdmFyIGluZGV4ID0gdGhpcy5kYXRhLmNhcmRzLmluZGV4T2YoY2FyZC5kYXRhKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuZGF0YS5jYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgaW5kZXggPSB0aGlzLmNhcmRzLmluZGV4T2YoY2FyZCk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICB0aGlzLmNhcmRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpZiAoIXRoaXMuY2FyZHMubGVuZ3RoIHx8IHRoaXMuY29sdW1uSXNWaXN1YWxseUVtcHR5KCkpXHJcbiAgICAgIHRoaXMuYWRkRW1wdHlDYXJkKCk7XHJcblxyXG4gICAgY2FyZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZURhdGFCeUZpbHRlciA9ICgpID0+IHtcclxuICAgIGxldCBjYXJkRmlsdGVyU3RyID0gdGhpcy5jYXJkQ29sdW1uLmNhcmRGaWx0ZXJTdHI7XHJcbiAgICBpZiAoY2FyZEZpbHRlclN0cikge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2FyZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgY2FyZCA9IHRoaXMuY2FyZHNbaV07XHJcblxyXG4gICAgICAgIGlmIChjYXJkLmRhdGEpIHtcclxuICAgICAgICAgIGxldCBmaWx0ZXJQYXJ0cyA9IGNhcmRGaWx0ZXJTdHIuc3BsaXQoLyhcXHMrKS8pLmZpbHRlcihmdW5jdGlvbiAocykgeyByZXR1cm4gcy50cmltKCkubGVuZ3RoID4gMDsgfSk7XHJcbiAgICAgICAgICBsZXQgY2FyZEZpbHRlclJlc3VsdDtcclxuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYXJkQ29sdW1uLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZElkID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGNhcmRGaWx0ZXJSZXN1bHQgPSBmaWx0ZXJQYXJ0cy5ldmVyeSgocGFydCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhcmRDb2x1bW4uY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkSWQoY2FyZC5kYXRhKSEudG9Mb3dlckNhc2UoKS5pbmRleE9mKHBhcnQpICE9IC0xO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhcmRGaWx0ZXJSZXN1bHQgPSBjYXJkLmNhcmRGaWx0ZXIoY2FyZC5kYXRhLCBjYXJkRmlsdGVyU3RyKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChjYXJkRmlsdGVyUmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjYXJkID0gdGhpcy5jYXJkc1tpXTtcclxuICAgICAgICBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgY2FyZEVsZW1lbnRzID0gdGhpcy5jb2x1bW5FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY2FyZC1jb250YWluZXI6bm90KC50cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCk6bm90KC5lbXB0eSknKTtcclxuICAgIGlmIChjYXJkRWxlbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlRW1wdHlDYXJkKCk7XHJcbiAgICAgIGlmICghdGhpcy5sb2NrZWQpIHtcclxuICAgICAgICB0aGlzLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuY29sdW1uRWxlbWVudCwgdGhpcy5wYXJlbnRFbGVtZW50LmZpcnN0Q2hpbGQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEVtcHR5Q2FyZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGF0YSA9ICgpID0+IHtcclxuICAgIHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50LmlubmVySFRNTCA9ICcnO1xyXG5cclxuICAgIHdoaWxlICh0aGlzLmNhcmRzLmxlbmd0aCkgeyB0aGlzLmNhcmRzLnBvcCgpOyB9O1xyXG5cclxuICAgIGxldCBjb2x1bW5DYXJkcyA9IHRoaXMuY2FyZENvbHVtbi5jYXJkcy5maWx0ZXIoKGNhcmREYXRhOiBhbnkpID0+IHsgcmV0dXJuIGNhcmREYXRhW3RoaXMuY2FyZENvbHVtbi5wYXJlbnRUYWJsZU5hbWUgKyAnUmVmJ10gPT09IHRoaXMuZGF0YS5SZWYgfSlcclxuXHJcbiAgICBpZiAoY29sdW1uQ2FyZHMubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uQ2FyZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmNhcmRzLnB1c2gobmV3IFRydUNhcmQodGhpcy5jYXJkQ29sdW1uLCB0aGlzLCBjb2x1bW5DYXJkc1tpXSwgZmFsc2UpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRFbXB0eUNhcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbCA9IChzZWxlY3RBbGw6IGJvb2xlYW4pID0+IHtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jYXJkcy5sZW5ndGg7IGkrKylcclxuICAgICAgdGhpcy5jYXJkc1tpXS5zZWxlY3RBbGwoc2VsZWN0QWxsKTtcclxuICB9XHJcblxyXG4gIGFkZENhcmQgPSAoY2FyZDogYW55KSA9PiB7XHJcbiAgICBjYXJkLmRhdGFbdGhpcy5jYXJkQ29sdW1uLmtleV0gPSB0aGlzLmRhdGEuUmVmO1xyXG4gICAgdGhpcy5kYXRhLmNhcmRzLnVuc2hpZnQoY2FyZC5kYXRhKTtcclxuICAgIHRoaXMuY2FyZHMudW5zaGlmdChuZXcgVHJ1Q2FyZCh0aGlzLmNhcmRDb2x1bW4sIHRoaXMsIGNhcmQuZGF0YSwgdHJ1ZSkpO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQ29sdW1uSGVhZGVyIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sIGNvbHVtbjogQ29sdW1uKSB7XHJcbiAgICBsZXQgY29sdW1uSGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgY29sdW1uSGVhZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWhlYWRlcicpO1xyXG5cclxuICAgIG5ldyBDb2x1bW5IZWFkZXJUZXh0KGNhcmRDb2x1bW4sIGNvbHVtbiwgY29sdW1uSGVhZGVyRWxlbWVudCk7XHJcbiAgICBuZXcgQ29sdW1uSGVhZGVyQnV0dG9uKGNvbHVtbiwgY29sdW1uSGVhZGVyRWxlbWVudCk7XHJcblxyXG4gICAgY29sdW1uLmNvbHVtbkVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNvbHVtbkhlYWRlckVsZW1lbnQsIGNvbHVtbi5jb2x1bW5FbGVtZW50LmZpcnN0Q2hpbGQpO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQ29sdW1uSGVhZGVyVGV4dCB7XHJcbiAgcHJpdmF0ZSBkYXRhOiBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXJkQ29sdW1uOiBUcnVDYXJkQ29sdW1uLCBjb2x1bW46IENvbHVtbiwgcGFyZW50RWxlbWVudDogSFRNTERpdkVsZW1lbnQpIHtcclxuICAgIHRoaXMuZGF0YSA9IGNvbHVtbi5kYXRhO1xyXG5cclxuICAgIGxldCBoZWFkZXJUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xyXG4gICAgaGVhZGVyVGV4dC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWhlYWRlcnRleHQnKTtcclxuXHJcbiAgICBpZiAodGhpcy5jYXJkQ29sdW1uLnVzZXJIYXNQYXJlbnRUYWJsZVJvbGUpIHtcclxuICAgICAgaGVhZGVyVGV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsgY2FyZENvbHVtbi5jb25maWcub25DYXJkQ29sdW1uQ2xpY2tlZChjb2x1bW4uZGF0YSk7IH0pO1xyXG4gICAgICBoZWFkZXJUZXh0LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVydGV4dC1ob3ZlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5kYXRhPy51bmFzc2lnbmVkKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY2FyZENvbHVtbi5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRDb2x1bW5JZChjb2x1bW4uZGF0YSk7XHJcbiAgICAgIGlmICh2YWx1ZSlcclxuICAgICAgICBoZWFkZXJUZXh0LmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGE/LnVuYXNzaWduZWQgJiYgdGhpcy5jYXJkQ29sdW1uLnVuYXNzaWduZWRWaXNpYmxlKVxyXG4gICAgICBoZWFkZXJUZXh0LmlubmVySFRNTCA9IHRoaXMuY2FyZENvbHVtbi51bmFzc2lnbmVkTmFtZSA/IHRoaXMuY2FyZENvbHVtbi51bmFzc2lnbmVkTmFtZSA6ICdVbmFzc2lnbmVkJztcclxuXHJcbiAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRleHQpO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQ29sdW1uSGVhZGVyQnV0dG9uIHsgXHJcbiAgcHJpdmF0ZSBjb2x1bW46IENvbHVtbjtcclxuICBwcml2YXRlIHNlbGVjdEFsbCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb2x1bW46IENvbHVtbiwgcGFyZW50RWxlbWVudDogSFRNTERpdkVsZW1lbnQpIHtcclxuICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xyXG5cclxuICAgIHZhciBsaW5rQnV0dG9uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBsaW5rQnV0dG9uQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taGVhZGVyLWV4dHJhcycpO1xyXG5cclxuICAgIGxldCBsaW5rQnV0dG9uOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmtCdXR0b24uY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1oZWFkZXItZXh0cmEtYnV0dG9uJyk7XHJcbiAgICBsaW5rQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2RhcmstaG92ZXInKTtcclxuICAgIGxpbmtCdXR0b24uaHJlZiA9ICcjJztcclxuXHJcbiAgICBsZXQgbGlua0J1dHRvblRleHQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIGxpbmtCdXR0b25UZXh0LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLWljb24tc21hbGwnKTtcclxuICAgIGxpbmtCdXR0b25UZXh0LmNsYXNzTGlzdC5hZGQoJ2ljb24tY2hlY2stc3F1YXJlLW8nKTtcclxuXHJcbiAgICBsaW5rQnV0dG9uVGV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSAhdGhpcy5zZWxlY3RBbGw7XHJcbiAgICAgIHRoaXMuY29sdW1uLnNlbGVjdEFsbCh0aGlzLnNlbGVjdEFsbCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsaW5rQnV0dG9uLmFwcGVuZENoaWxkKGxpbmtCdXR0b25UZXh0KTtcclxuICAgIGxpbmtCdXR0b25Db250YWluZXIuYXBwZW5kQ2hpbGQobGlua0J1dHRvbik7XHJcblxyXG4gICAgdGhpcy5jb2x1bW4uc2VsZWN0QWxsQnV0dG9uID0gbGlua0J1dHRvbkNvbnRhaW5lcjtcclxuXHJcbiAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGxpbmtCdXR0b25Db250YWluZXIpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHJ1LWNhcmRcIj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNCdXN5XCJcclxuICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtYnVzeS1pbmRpY2F0b3JcIj5cclxuICAgIDxwPnt7YnVzeU1lc3NhZ2V9fTwvcD5cclxuICA8L2Rpdj5cclxuICA8dHJ1LXRvb2xiYXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyZW50VG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgPHRydS10b29sYmFyLWRyb3Bkb3duIFt0b29sdGlwXT1cImNvbHVtbkZpbHRlclRvb2x0aXBcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImZpbHRlckNvbHVtbnMoJGV2ZW50KVwiIFtvcHRpb25zXT1cImNvbHVtbkZpbHRlckNob2ljZXNcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiPjwvdHJ1LXRvb2xiYXItZHJvcGRvd24+XHJcbiAgICA8dHJ1LXRvb2xiYXItdGV4dGJveCBbdG9vbHRpcF09XCJjYXJkRmlsdGVyVG9vbHRpcFwiICh2YWx1ZUNoYW5nZSk9XCJmaWx0ZXJDYXJkcygkZXZlbnQpXCI+PC90cnUtdG9vbGJhci10ZXh0Ym94PlxyXG4gICAgPHRydS10b29sYmFyLXNlcGFyYXRvciAqbmdJZj1cInZpZXdNZW51SXRlbXMubGVuZ3RoXCI+PC90cnUtdG9vbGJhci1zZXBhcmF0b3I+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidmlld01lbnVJdGVtcy5sZW5ndGhcIj5cclxuICAgICAgPHRydS10b29sYmFyLW1lbnUgKm5nRm9yPVwibGV0IHZpZXdNZW51SXRlbSBvZiB2aWV3TWVudUl0ZW1zXCIgW2NvbmZpZ109XCJ2aWV3TWVudUl0ZW1cIj48L3RydS10b29sYmFyLW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC90cnUtdG9vbGJhcj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWNhcmQtcG9ydGFsXCIgI2NhcmRQb3J0YWw+XHJcbiAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnd2lkdGgnOiAoKGNvbmZpZy53aWR0aCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoKSArICgxMCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoIC0gMSkpICsgJ3B4JyB9XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJ1LWNhcmQtcG9ydGFsLWxvY2tlZC1jb2x1bW5zLWRpdmlkZXInOiBsb2NrZWRDb2x1bW5zLmxlbmd0aH1cIlxyXG4gICAgICAgICAgKm5nSWY9XCJsb2NrZWRDb2x1bW5zLmxlbmd0aFwiXHJcbiAgICAgICAgICBjbGFzcz1cInRydS1jYXJkLXBvcnRhbC1sb2NrZWQtY29sdW1ucyBsb2NrZWQtY29sdW1uc1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnbGVmdCc6IGxvY2tlZENvbHVtbnMubGVuZ3RoID8gKChjb25maWcud2lkdGggKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCkgKyAoMTAgKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCAtIDEpICsgMjIpICsgJ3B4JyA6IDAgfVwiXHJcbiAgICAgICAgICBjbGFzcz1cInRydS1jYXJkLXBvcnRhbC1jb2x1bW5zIHVubG9ja2VkLWNvbHVtbnNcIj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -15,11 +15,11 @@ export class TruToolbarButton {
|
|
|
15
15
|
ngOnInit() {
|
|
16
16
|
}
|
|
17
17
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruToolbarButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruToolbarButton, selector: "tru-toolbar-button", inputs: { config: "config", icon: "icon", text: "text", disabled: "disabled", tooltip: "tooltip", type: "type" }, outputs: { onClick: "onClick", onKeydown: "onKeydown" }, ngImport: i0, template: "<button\r\n class=\"toolbar-btn toolbar-btn-default\"\r\n title=\"{{ tooltip }}\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick.emit($event)\"\r\n (keydown)=\"onKeydown.emit($event)\"\r\n type=\"{{type}}\">\r\n <span class=\"toolbar-btn-icon\" *ngIf=\"icon\"><mat-icon [svgIcon]=\"icon\"></mat-icon></span>\r\n <span class=\"toolbar-btn-text\" *ngIf=\"text\">{{text}}</span>\r\n</button>\r\n", styles: [".toolbar{height:25px}.toolbar p{font-size:12px}.toolbar .toolbar-btn{height:26px}.toolbar .mat-mdc-form-field{display:block;height:25px;width:auto}.toolbar .mat-mdc-text-field-wrapper{margin-top:1px;height:23px}.toolbar .mat-mdc-form-field-infix{padding:0;border-top:0;width:auto;height:25px}.mat-mdc-option{height:25px;font-size:14px}.toolbar .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix .toolbar .mat-mdc-select-arrow-wrapper{padding:0!important}.toolbar .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding:0!important}.toolbar .mat-mdc-select-arrow{padding-left:5px}.toolbar .mat-mdc-select-value-text{font-size:12px}.toolbar-group,.toolbar-group-vertical{position:relative;display:flex;vertical-align:middle;height:25px}.toolbar-group>.toolbar-btn,.toolbar-group-vertical>.toolbar-btn{position:relative;float:left}.toolbar-group>.toolbar-btn:hover,.toolbar-group-vertical>.toolbar-btn:hover,.toolbar-group>.toolbar-btn:focus,.toolbar-group-vertical>.toolbar-btn:focus,.toolbar-group>.toolbar-btn:active,.toolbar-group-vertical>.toolbar-btn:active,.toolbar-group>.toolbar-btn.active,.toolbar-group-vertical>.toolbar-btn.active{z-index:2}.toolbar-group .toolbar-btn+.toolbar-btn,.toolbar-group .toolbar-btn+.toolbar-group,.toolbar-group .toolbar-group+.toolbar-btn,.toolbar-group .toolbar-group+.toolbar-group{margin-left:-1px}.toolbar-group>.toolbar-btn:not(:first-child):not(:last-child){border-radius:0}.toolbar-group>.toolbar-btn:first-child{margin-left:0}.toolbar-group>.toolbar-btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.toolbar-group>.toolbar-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.toolbar-group>.toolbar-btn{padding:1px 5px;font-size:12px;line-height:1;border-radius:0}.toolbar-group .btn_iconOnly{padding:0;margin:0}.toolbar-group .btn_iconOnly i{vertical-align:15%}.toolbar-group div{padding:0;margin:0}.toolbar-group button{padding:0!important}.toolbar-group span,.toolbar-group i{padding:0;margin:0}.toolbar-group button{vertical-align:top}::ng-deep .toolbar .mat-mdc-option{min-height:unset;height:35px}::ng-deep .toolbar ::placeholder{font-size:12px;opacity:.75}::ng-deep .toolbar .mat-mdc-select-placeholder{font-size:12px;opacity:.75}\n", ".toolbar-btn{margin:0;text-transform:none;font-family:inherit;display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-appearance:button}.toolbar-btn.disabled,.toolbar-btn[disabled],fieldset[disabled] .btn{cursor:default;opacity:.3;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.toolbar-btn.disabled:hover,.toolbar-btn[disabled]:hover,fieldset[disabled] .btn:hover{cursor:default;opacity:.3;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;background-color:#f8f8f8;border-color:transparent;pointer-events:none}.toolbar-btn:hover,.toolbar-btn:focus{color:#333;text-decoration:none}.toolbar-btn-default{color:#333;background-color:transparent;border-color:transparent}.toolbar-btn-default:hover,.toolbar-btn-default:focus,.toolbar-btn-default:active,.toolbar-btn-default.active{color:#333;background-color:#ebebeb;border-color:transparent}.toolbar-btn-text{padding:5px!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruToolbarButton, selector: "tru-toolbar-button", inputs: { config: "config", icon: "icon", text: "text", disabled: "disabled", tooltip: "tooltip", type: "type" }, outputs: { onClick: "onClick", onKeydown: "onKeydown" }, ngImport: i0, template: "<button\r\n class=\"toolbar-btn toolbar-btn-default\"\r\n title=\"{{ tooltip }}\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick.emit($event)\"\r\n (keydown)=\"onKeydown.emit($event)\"\r\n type=\"{{type}}\">\r\n <span class=\"toolbar-btn-icon\" *ngIf=\"icon\"><mat-icon [svgIcon]=\"icon\"></mat-icon></span>\r\n <span class=\"toolbar-btn-text\" *ngIf=\"text\">{{text}}</span>\r\n</button>\r\n", styles: [".toolbar{height:25px}.toolbar p{font-size:12px}.toolbar .toolbar-btn{height:26px}.toolbar .mat-mdc-form-field{display:block;height:25px;width:auto}.toolbar .mat-mdc-text-field-wrapper{margin-top:1px;height:23px}.toolbar .mat-mdc-form-field-infix{padding:0;border-top:0;width:auto;height:25px}.mat-mdc-option{height:25px;font-size:14px}.toolbar .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix .toolbar .mat-mdc-select-arrow-wrapper{padding:0!important}.toolbar .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding:0!important}.toolbar .mat-mdc-select-arrow{padding-left:5px}.toolbar .mat-mdc-select-value-text{font-size:12px}.toolbar-group,.toolbar-group-vertical{position:relative;display:flex;vertical-align:middle;height:25px}.toolbar-group>.toolbar-btn,.toolbar-group-vertical>.toolbar-btn{position:relative;float:left}.toolbar-group>.toolbar-btn:hover,.toolbar-group-vertical>.toolbar-btn:hover,.toolbar-group>.toolbar-btn:focus,.toolbar-group-vertical>.toolbar-btn:focus,.toolbar-group>.toolbar-btn:active,.toolbar-group-vertical>.toolbar-btn:active,.toolbar-group>.toolbar-btn.active,.toolbar-group-vertical>.toolbar-btn.active{z-index:2}.toolbar-group .toolbar-btn+.toolbar-btn,.toolbar-group .toolbar-btn+.toolbar-group,.toolbar-group .toolbar-group+.toolbar-btn,.toolbar-group .toolbar-group+.toolbar-group{margin-left:-1px}.toolbar-group>.toolbar-btn:not(:first-child):not(:last-child){border-radius:0}.toolbar-group>.toolbar-btn:first-child{margin-left:0}.toolbar-group>.toolbar-btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.toolbar-group>.toolbar-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.toolbar-group>.toolbar-btn{padding:1px 5px;font-size:12px;line-height:1;border-radius:0}.toolbar-group .btn_iconOnly{padding:0;margin:0}.toolbar-group .btn_iconOnly i{vertical-align:15%}.toolbar-group div{padding:0;margin:0}.toolbar-group button{padding:0!important}.toolbar-group span,.toolbar-group i{padding:0;margin:0}.toolbar-group button{vertical-align:top}::ng-deep .toolbar .mat-mdc-option{min-height:unset;height:35px}::ng-deep .toolbar input::placeholder{font-size:12px;opacity:.75}::ng-deep .toolbar .mat-mdc-select-placeholder{font-size:12px;opacity:.75}\n", ".toolbar-btn{margin:0;text-transform:none;font-family:inherit;display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-appearance:button}.toolbar-btn.disabled,.toolbar-btn[disabled],fieldset[disabled] .btn{cursor:default;opacity:.3;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.toolbar-btn.disabled:hover,.toolbar-btn[disabled]:hover,fieldset[disabled] .btn:hover{cursor:default;opacity:.3;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;background-color:#f8f8f8;border-color:transparent;pointer-events:none}.toolbar-btn:hover,.toolbar-btn:focus{color:#333;text-decoration:none}.toolbar-btn-default{color:#333;background-color:transparent;border-color:transparent}.toolbar-btn-default:hover,.toolbar-btn-default:focus,.toolbar-btn-default:active,.toolbar-btn-default.active{color:#333;background-color:#ebebeb;border-color:transparent}.toolbar-btn-text{padding:5px!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
19
19
|
}
|
|
20
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruToolbarButton, decorators: [{
|
|
21
21
|
type: Component,
|
|
22
|
-
args: [{ selector: 'tru-toolbar-button', encapsulation: ViewEncapsulation.None, template: "<button\r\n class=\"toolbar-btn toolbar-btn-default\"\r\n title=\"{{ tooltip }}\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick.emit($event)\"\r\n (keydown)=\"onKeydown.emit($event)\"\r\n type=\"{{type}}\">\r\n <span class=\"toolbar-btn-icon\" *ngIf=\"icon\"><mat-icon [svgIcon]=\"icon\"></mat-icon></span>\r\n <span class=\"toolbar-btn-text\" *ngIf=\"text\">{{text}}</span>\r\n</button>\r\n", styles: [".toolbar{height:25px}.toolbar p{font-size:12px}.toolbar .toolbar-btn{height:26px}.toolbar .mat-mdc-form-field{display:block;height:25px;width:auto}.toolbar .mat-mdc-text-field-wrapper{margin-top:1px;height:23px}.toolbar .mat-mdc-form-field-infix{padding:0;border-top:0;width:auto;height:25px}.mat-mdc-option{height:25px;font-size:14px}.toolbar .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix .toolbar .mat-mdc-select-arrow-wrapper{padding:0!important}.toolbar .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding:0!important}.toolbar .mat-mdc-select-arrow{padding-left:5px}.toolbar .mat-mdc-select-value-text{font-size:12px}.toolbar-group,.toolbar-group-vertical{position:relative;display:flex;vertical-align:middle;height:25px}.toolbar-group>.toolbar-btn,.toolbar-group-vertical>.toolbar-btn{position:relative;float:left}.toolbar-group>.toolbar-btn:hover,.toolbar-group-vertical>.toolbar-btn:hover,.toolbar-group>.toolbar-btn:focus,.toolbar-group-vertical>.toolbar-btn:focus,.toolbar-group>.toolbar-btn:active,.toolbar-group-vertical>.toolbar-btn:active,.toolbar-group>.toolbar-btn.active,.toolbar-group-vertical>.toolbar-btn.active{z-index:2}.toolbar-group .toolbar-btn+.toolbar-btn,.toolbar-group .toolbar-btn+.toolbar-group,.toolbar-group .toolbar-group+.toolbar-btn,.toolbar-group .toolbar-group+.toolbar-group{margin-left:-1px}.toolbar-group>.toolbar-btn:not(:first-child):not(:last-child){border-radius:0}.toolbar-group>.toolbar-btn:first-child{margin-left:0}.toolbar-group>.toolbar-btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.toolbar-group>.toolbar-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.toolbar-group>.toolbar-btn{padding:1px 5px;font-size:12px;line-height:1;border-radius:0}.toolbar-group .btn_iconOnly{padding:0;margin:0}.toolbar-group .btn_iconOnly i{vertical-align:15%}.toolbar-group div{padding:0;margin:0}.toolbar-group button{padding:0!important}.toolbar-group span,.toolbar-group i{padding:0;margin:0}.toolbar-group button{vertical-align:top}::ng-deep .toolbar .mat-mdc-option{min-height:unset;height:35px}::ng-deep .toolbar ::placeholder{font-size:12px;opacity:.75}::ng-deep .toolbar .mat-mdc-select-placeholder{font-size:12px;opacity:.75}\n", ".toolbar-btn{margin:0;text-transform:none;font-family:inherit;display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-appearance:button}.toolbar-btn.disabled,.toolbar-btn[disabled],fieldset[disabled] .btn{cursor:default;opacity:.3;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.toolbar-btn.disabled:hover,.toolbar-btn[disabled]:hover,fieldset[disabled] .btn:hover{cursor:default;opacity:.3;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;background-color:#f8f8f8;border-color:transparent;pointer-events:none}.toolbar-btn:hover,.toolbar-btn:focus{color:#333;text-decoration:none}.toolbar-btn-default{color:#333;background-color:transparent;border-color:transparent}.toolbar-btn-default:hover,.toolbar-btn-default:focus,.toolbar-btn-default:active,.toolbar-btn-default.active{color:#333;background-color:#ebebeb;border-color:transparent}.toolbar-btn-text{padding:5px!important}\n"] }]
|
|
22
|
+
args: [{ selector: 'tru-toolbar-button', encapsulation: ViewEncapsulation.None, template: "<button\r\n class=\"toolbar-btn toolbar-btn-default\"\r\n title=\"{{ tooltip }}\"\r\n tabindex=\"-1\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick.emit($event)\"\r\n (keydown)=\"onKeydown.emit($event)\"\r\n type=\"{{type}}\">\r\n <span class=\"toolbar-btn-icon\" *ngIf=\"icon\"><mat-icon [svgIcon]=\"icon\"></mat-icon></span>\r\n <span class=\"toolbar-btn-text\" *ngIf=\"text\">{{text}}</span>\r\n</button>\r\n", styles: [".toolbar{height:25px}.toolbar p{font-size:12px}.toolbar .toolbar-btn{height:26px}.toolbar .mat-mdc-form-field{display:block;height:25px;width:auto}.toolbar .mat-mdc-text-field-wrapper{margin-top:1px;height:23px}.toolbar .mat-mdc-form-field-infix{padding:0;border-top:0;width:auto;height:25px}.mat-mdc-option{height:25px;font-size:14px}.toolbar .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix .toolbar .mat-mdc-select-arrow-wrapper{padding:0!important}.toolbar .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding:0!important}.toolbar .mat-mdc-select-arrow{padding-left:5px}.toolbar .mat-mdc-select-value-text{font-size:12px}.toolbar-group,.toolbar-group-vertical{position:relative;display:flex;vertical-align:middle;height:25px}.toolbar-group>.toolbar-btn,.toolbar-group-vertical>.toolbar-btn{position:relative;float:left}.toolbar-group>.toolbar-btn:hover,.toolbar-group-vertical>.toolbar-btn:hover,.toolbar-group>.toolbar-btn:focus,.toolbar-group-vertical>.toolbar-btn:focus,.toolbar-group>.toolbar-btn:active,.toolbar-group-vertical>.toolbar-btn:active,.toolbar-group>.toolbar-btn.active,.toolbar-group-vertical>.toolbar-btn.active{z-index:2}.toolbar-group .toolbar-btn+.toolbar-btn,.toolbar-group .toolbar-btn+.toolbar-group,.toolbar-group .toolbar-group+.toolbar-btn,.toolbar-group .toolbar-group+.toolbar-group{margin-left:-1px}.toolbar-group>.toolbar-btn:not(:first-child):not(:last-child){border-radius:0}.toolbar-group>.toolbar-btn:first-child{margin-left:0}.toolbar-group>.toolbar-btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.toolbar-group>.toolbar-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.toolbar-group>.toolbar-btn{padding:1px 5px;font-size:12px;line-height:1;border-radius:0}.toolbar-group .btn_iconOnly{padding:0;margin:0}.toolbar-group .btn_iconOnly i{vertical-align:15%}.toolbar-group div{padding:0;margin:0}.toolbar-group button{padding:0!important}.toolbar-group span,.toolbar-group i{padding:0;margin:0}.toolbar-group button{vertical-align:top}::ng-deep .toolbar .mat-mdc-option{min-height:unset;height:35px}::ng-deep .toolbar input::placeholder{font-size:12px;opacity:.75}::ng-deep .toolbar .mat-mdc-select-placeholder{font-size:12px;opacity:.75}\n", ".toolbar-btn{margin:0;text-transform:none;font-family:inherit;display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-appearance:button}.toolbar-btn.disabled,.toolbar-btn[disabled],fieldset[disabled] .btn{cursor:default;opacity:.3;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.toolbar-btn.disabled:hover,.toolbar-btn[disabled]:hover,fieldset[disabled] .btn:hover{cursor:default;opacity:.3;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;background-color:#f8f8f8;border-color:transparent;pointer-events:none}.toolbar-btn:hover,.toolbar-btn:focus{color:#333;text-decoration:none}.toolbar-btn-default{color:#333;background-color:transparent;border-color:transparent}.toolbar-btn-default:hover,.toolbar-btn-default:focus,.toolbar-btn-default:active,.toolbar-btn-default.active{color:#333;background-color:#ebebeb;border-color:transparent}.toolbar-btn-text{padding:5px!important}\n"] }]
|
|
23
23
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
24
24
|
type: Input
|
|
25
25
|
}], icon: [{
|