@provoly/dashboard 1.2.0 → 1.2.2
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/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.d.ts +3 -3
- package/components/sinceDate/sinceDate.pipe.d.ts +2 -0
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +6 -6
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +27 -10
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +28 -21
- package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +25 -37
- package/esm2022/lib/core/components/share/share.model.mjs +2 -7
- package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +3 -2
- package/esm2022/lib/core/model/widget-analytic-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/model/widget.interface.mjs +1 -1
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +1 -1
- package/esm2022/lib/core/store/data-source/data-source.model.mjs +7 -2
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +3 -6
- package/esm2022/restitution/components/restitution/restitution.component.mjs +8 -12
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +4 -5
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +2 -2
- package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +4 -5
- package/esm2022/search/components/save-query/save-query.component.mjs +2 -2
- package/esm2022/search/search-tools/search-tools.component.mjs +1 -1
- package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +88 -14
- package/esm2022/widgets/widget-analytic/i18n/en.translations.mjs +7 -2
- package/esm2022/widgets/widget-analytic/i18n/fr.translations.mjs +7 -2
- package/esm2022/widgets/widget-analytic/style/css.component.mjs +2 -2
- package/esm2022/widgets/widget-analytic/widget-analytic.module.mjs +12 -8
- package/fesm2022/provoly-dashboard-admin.mjs +5 -5
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +26 -9
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +11 -17
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +2 -2
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +112 -24
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +105 -108
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/share/group-share/group-share.component.d.ts +15 -10
- package/lib/core/components/share/legacy-share/share.component.d.ts +8 -14
- package/lib/core/components/share/share.model.d.ts +0 -9
- package/lib/core/i18n/en.translations.d.ts +2 -1
- package/lib/core/i18n/fr.translations.d.ts +2 -1
- package/lib/core/model/widget-analytic-manifest.interface.d.ts +8 -1
- package/lib/core/model/widget.interface.d.ts +1 -2
- package/lib/core/store/data-source/data-source.actions.d.ts +9 -4
- package/lib/core/store/data-source/data-source.model.d.ts +9 -2
- package/lib/core/toolbox/toolbox-menu.service.d.ts +1 -3
- package/package.json +7 -7
- package/restitution/components/restitution/restitution.component.d.ts +2 -3
- package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +1 -2
- package/restitution/components/restitution-list-item/restitution-list-item.component.d.ts +1 -2
- package/search/components/save-query/save-query.component.d.ts +5 -2
- package/search/search-fulltext/store/search-fulltext.effects.d.ts +4 -1
- package/search/search-mono-class/store/search-mono-class.effects.d.ts +4 -1
- package/search/search-multi-class/store/search-multi-class.effects.d.ts +4 -1
- package/widgets/widget-analytic/component/widget-analytic.component.d.ts +18 -0
- package/widgets/widget-analytic/i18n/en.translations.d.ts +5 -0
- package/widgets/widget-analytic/i18n/fr.translations.d.ts +5 -0
- package/widgets/widget-analytic/style/_o-widget-analytic.scss +48 -0
- package/widgets/widget-analytic/widget-analytic.module.d.ts +3 -2
|
@@ -81,7 +81,7 @@ export class ToolboxMenuService {
|
|
|
81
81
|
type: widget.id,
|
|
82
82
|
description: widget.description,
|
|
83
83
|
isCustom: true,
|
|
84
|
-
|
|
84
|
+
groups: widget.groups
|
|
85
85
|
}))
|
|
86
86
|
]
|
|
87
87
|
})));
|
|
@@ -140,9 +140,6 @@ export class ToolboxMenuService {
|
|
|
140
140
|
menu.sub.push({ icon, label, type });
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
-
setMenuStructure(structure) {
|
|
144
|
-
this._menuStructure$.next(structure);
|
|
145
|
-
}
|
|
146
143
|
addToCatalog(widget, index) {
|
|
147
144
|
if (this.isValidForCatalog(widget.name)) {
|
|
148
145
|
const manifest = JSON.parse(widget.content);
|
|
@@ -151,7 +148,7 @@ export class ToolboxMenuService {
|
|
|
151
148
|
this.toolboxManifestService.set(widget.id, manifest);
|
|
152
149
|
}
|
|
153
150
|
else {
|
|
154
|
-
console.error(`Trying to add existing type "${name}"`);
|
|
151
|
+
console.error(`Trying to add existing type "${widget.name}"`);
|
|
155
152
|
}
|
|
156
153
|
}
|
|
157
154
|
isValidForCatalog(name) {
|
|
@@ -166,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
166
163
|
providedIn: 'root'
|
|
167
164
|
}]
|
|
168
165
|
}], ctorParameters: () => [{ type: i1.WidgetFactoryService }, { type: i2.ToolboxManifestService }, { type: i3.Store }] });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS90b29sYm94L3Rvb2xib3gtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7O0FBdUI5RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBNEI7SUFDM0Q7UUFDRSxJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsTUFBTSxFQUFFLEtBQUs7UUFDYixHQUFHLEVBQUU7WUFDSCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDbkUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDN0UsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3RFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtTQUN0RTtLQUNGO0lBQ0Q7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IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXaWRnZXRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvd2lkZ2V0LWluc3RhbmNpYXRvci93aWRnZXQtZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9kYXNoYm9hcmQvc3RvcmUvZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHsgUHJ5VmlzaWJpbGl0eSB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2hhcmUvc2hhcmUubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0IH0gZnJvbSAnLi4vbW9kZWwvd2lkZ2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25maWdBY3Rpb25zIH0gZnJvbSAnLi4vc3RvcmUvY29uZmlnL2NvbmZpZy5hY3Rpb25zJztcbmltcG9ydCB7IENvbmZpZ1NlbGVjdG9ycyB9IGZyb20gJy4uL3N0b3JlL2NvbmZpZy9jb25maWcuc2VsZWN0b3JzJztcbmltcG9ydCB7IERFRkFVTFRfSUNPTl9VUkwgfSBmcm9tICcuLi9zdG9yZS9jb25maWcvaWNvbi1kZWZpbml0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVG9vbGJveE1hbmlmZXN0U2VydmljZSB9IGZyb20gJy4vdG9vbGJveC1tYW5pZmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldE1hbmlmZXN0IH0gZnJvbSAnLi4vbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgV2lkZ2V0RGVzY3JpcHRpb25CYXNlID0ge1xuICBpY29uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBXaWRnZXREZXNjcmlwdGlvbk1lbnUgPSBXaWRnZXREZXNjcmlwdGlvbkJhc2UgJiB7XG4gIG9wZW5lZDogYm9vbGVhbjtcbiAgc3ViOiBDYXRhbG9nRW50cnlbXTtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGFsb2dFbnRyeSA9IFdpZGdldERlc2NyaXB0aW9uQmFzZSAmIHtcbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlzQ3VzdG9tPzogYm9vbGVhbjtcbiAgdmlzaWJpbGl0eT86IFByeVZpc2liaWxpdHk7XG4gIGNvdmVyPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TWVudVN0cnVjdHVyZTogV2lkZ2V0RGVzY3JpcHRpb25NZW51W10gPSBbXG4gIHtcbiAgICBpY29uOiAnc2hhcmVfbG9jYXRpb24nLFxuICAgIGxhYmVsOiAnQHByeS50b29sYm94LnN1Yi5tYXAnLFxuICAgIG9wZW5lZDogZmFsc2UsXG4gICAgc3ViOiBbXG4gICAgICB7IGljb246ICdtYXAnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5zaW1wbGVtYXAnLCB0eXBlOiAnc2ltcGxlbWFwJyB9LFxuICAgICAgeyBpY29uOiAnYnViYmxlLWNoYXJ0LWxpbmUnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5oZWF0bWFwJywgdHlwZTogJ2hlYXRtYXAnIH0sXG4gICAgICB7IGljb246ICdidWxsZXMnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5idWJibGVtYXAnLCB0eXBlOiAnYnViYmxlbWFwJyB9LFxuICAgICAgeyBpY29uOiAncGxhY2UnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5tYXJrZXJtYXAnLCB0eXBlOiAnbWFya2VybWFwJyB9XG4gICAgXVxuICB9LFxuICB7XG4gICAgaWNvbjogJ3Nob3dfY2hhcnQnLFxuICAgIGxhYmVsOiAnQHByeS50b29sYm94LnN1Yi5jaGFydCcsXG4gICAgb3BlbmVkOiBmYWxzZSxcbiAgICBzdWI6IFtcbiAgICAgIHsgaWNvbjogJ2Jhcl9jaGFydCcsIGxhYmVsOiAnQHByeS50b29sYm94LmJhcmNoYXJ0JywgdHlwZTogJ2JhcmNoYXJ0JyB9LFxuICAgICAgeyBpY29uOiAnYmFyX2NoYXJ0JywgbGFiZWw6ICdAcHJ5LnRvb2xib3guaGlzdG9ncmFtJywgdHlwZTogJ2hpc3RvZ3JhbScgfSxcbiAgICAgIHsgaWNvbjogJ3Nob3dfY2hhcnQnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5saW5lY2hhcnQnLCB0eXBlOiAnbGluZWNoYXJ0JyB9LFxuICAgICAgeyBpY29uOiAnYXV0b19ncmFwaCcsIGxhYmVsOiAnQHByeS50b29sYm94LnBvaW50Y2hhcnQnLCB0eXBlOiAncG9pbnRjaGFydCcgfSxcbiAgICAgIHsgaWNvbjogJ2FyZWFfY2hhcnQnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5hcmVhY2hhcnQnLCB0eXBlOiAnYXJlYWNoYXJ0JyB9LFxuICAgICAgeyBpY29uOiAnZG9udXRfbGFyZ2UnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5hcmNjaGFydCcsIHR5cGU6ICdhcmNjaGFydCcgfSxcbiAgICAgIHsgaWNvbjogJ2Jhcl9jaGFydCcsIGxhYmVsOiAnQHByeS50b29sYm94LnZlZ2EnLCB0eXBlOiAndmVnYScgfVxuICAgIF1cbiAgfSxcbiAge1xuICAgIGljb246ICd0b2MnLFxuICAgIGxhYmVsOiAnQHByeS50b29sYm94LnN1Yi5vdGhlcicsXG4gICAgb3BlbmVkOiBmYWxzZSxcbiAgICBzdWI6IFtcbiAgICAgIHsgaWNvbjogJ3RhYmxlX2NoYXJ0JywgbGFiZWw6ICdAcHJ5LnRvb2xib3gudGFibGUnLCB0eXBlOiAndGFibGUnIH0sXG4gICAgICB7IGljb246ICd0b2MnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5kZXRhaWwnLCB0eXBlOiAnZGV0YWlsJyB9LFxuICAgICAgeyBpY29uOiAnZ3JhcGgnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5ncmFwaCcsIHR5cGU6ICdncmFwaCcgfSxcbiAgICAgIHsgaWNvbjogJ3NldHRpbmdzX2FwcGxpY2F0aW9ucycsIGxhYmVsOiAnQHByeS50b29sYm94LmlmcmFtZScsIHR5cGU6ICdpZnJhbWUnIH0sXG4gICAgICB7IGljb246ICd0aWxlJywgbGFiZWw6ICdAcHJ5LnRvb2xib3gudGlsZScsIHR5cGU6ICd0aWxlJyB9LFxuICAgICAgeyBpY29uOiAnY29kZS1ib3gnLCBsYWJlbDogJ0BwcnkudG9vbGJveC50ZW1wbGF0ZScsIHR5cGU6ICd0ZW1wbGF0ZScgfSxcbiAgICAgIHsgaWNvbjogJ2FuYWx5dGljJywgbGFiZWw6ICdAcHJ5LnRvb2xib3guYW5hbHl0aWMnLCB0eXBlOiAnYW5hbHl0aWMnIH1cbiAgICBdXG4gIH1cbl07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xib3hNZW51U2VydmljZSB7XG4gIF9tZW51U3RydWN0dXJlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2lkZ2V0RGVzY3JpcHRpb25NZW51W10+KGRlZmF1bHRNZW51U3RydWN0dXJlKTtcbiAgbWVudVN0cnVjdHVyZSQ6IE9ic2VydmFibGU8V2lkZ2V0RGVzY3JpcHRpb25NZW51W10+O1xuICBtZW51TGlzdCQ6IE9ic2VydmFibGU8Q2F0YWxvZ0VudHJ5W10+O1xuICB0eXBlcyQ6IE9ic2VydmFibGU8eyBpY29uOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgbWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IH1bXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB3aWRnZXRGYWN0b3J5U2VydmljZTogV2lkZ2V0RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b29sYm94TWFuaWZlc3RTZXJ2aWNlOiBUb29sYm94TWFuaWZlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlXG4gICkge1xuICAgIHRoaXMubWVudVN0cnVjdHVyZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuX21lbnVTdHJ1Y3R1cmUkLFxuICAgICAgdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5yZWZlcmVuY2UkLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmNhdGFsb2cpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW21lbnVTdHJ1Y3R1cmUsIHJlZmVyZW5jZSwgY2F0YWxvZ10pID0+XG4gICAgICAgIC8vIEdlbmVyaWMgd2lkZ2V0c1xuICAgICAgICBtZW51U3RydWN0dXJlXG4gICAgICAgICAgLmZpbHRlcigobWVudSkgPT4gbWVudS5zdWIuZmluZCgoc3ViKSA9PiByZWZlcmVuY2VbdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmdldChzdWIudHlwZSkudHlwZV0pKVxuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAobWVudSkgPT5cbiAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAuLi5tZW51LFxuICAgICAgICAgICAgICAgIHN1YjogbWVudS5zdWJcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHN1YikgPT4gcmVmZXJlbmNlW3RoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5nZXQoc3ViLnR5cGUpLnR5cGVdKVxuICAgICAgICAgICAgICAgICAgLm1hcCgoZW50cnkpID0+ICh7IC4uLmVudHJ5LCBpY29uOiAnYXNzZXRzL3N2Z3MvJyArIGVudHJ5Lmljb24gKyAnLnN2ZycgfSkpIGFzIENhdGFsb2dFbnRyeVtdXG4gICAgICAgICAgICAgIH0pIGFzIFdpZGdldERlc2NyaXB0aW9uTWVudVxuICAgICAgICAgIClcbiAgICAgICAgICAvLyBVc2VyIGRlZmluZWQgd2lkZ2V0IGNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgLmNvbmNhdCh7XG4gICAgICAgICAgICBpY29uOiAnbGlicmFyeV9hZGQnLFxuICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3guY2F0YWxvZy50aXRsZScsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc3ViOiBbXG4gICAgICAgICAgICAgIC4uLmNhdGFsb2cubWFwKCh3aWRnZXQpID0+ICh7XG4gICAgICAgICAgICAgICAgaWNvbjogd2lkZ2V0LmltYWdlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB3aWRnZXQubmFtZSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aWRnZXQuaWQsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHdpZGdldC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpc0N1c3RvbTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiB3aWRnZXQudmlzaWJpbGl0eVxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLm1lbnVMaXN0JCA9IHRoaXMubWVudVN0cnVjdHVyZSQucGlwZShcbiAgICAgIG1hcCgobWVudURlc2NyaXB0aW9uKSA9PlxuICAgICAgICBtZW51RGVzY3JpcHRpb25cbiAgICAgICAgICAubWFwKChtZW51KSA9PlxuICAgICAgICAgICAgbWVudS5zdWIubWFwKChzdWJNZW51KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5zdWJNZW51LFxuICAgICAgICAgICAgICBjYXRlZ29yeTogbWVudS5sYWJlbFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMudHlwZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuaW5pdGlhbE1hbmlmZXN0cyQsXG4gICAgICB0aGlzLm1lbnVTdHJ1Y3R1cmUkLFxuICAgICAgdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5yZWZlcmVuY2UkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW21hbmlmZXN0cywgbWVudVN0cnVjdHVyZSwgcmVmZXJlbmNlXSkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlcyA9IFtcbiAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhtYW5pZmVzdHMpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKG1hbmlmZXN0KSA9PiByZWZlcmVuY2VbbWFuaWZlc3QudHlwZV0pXG4gICAgICAgICAgICAgIC5tYXAoKG1hbmlmZXN0KSA9PiBtYW5pZmVzdC50eXBlKVxuICAgICAgICAgIClcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIHR5cGVzLm1hcCgodHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nTWVudSA9IG1lbnVTdHJ1Y3R1cmUuZmluZChcbiAgICAgICAgICAgIChtZW51KSA9PiBtZW51LmxhYmVsLnJlcGxhY2UoJ0BwcnkudG9vbGJveC5zdWIuJywgJycpLmluZGV4T2YodHlwZSkgPj0gMFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCEhbWF0Y2hpbmdNZW51KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICBsYWJlbDogbWF0Y2hpbmdNZW51LmxhYmVsLFxuICAgICAgICAgICAgICBpY29uOiBtYXRjaGluZ01lbnUuaWNvbixcbiAgICAgICAgICAgICAgbWFuaWZlc3Q6IE9iamVjdC52YWx1ZXMobWFuaWZlc3RzKS5maW5kKChtYW5pZmVzdCkgPT4gbWFuaWZlc3QudHlwZSA9PT0gdHlwZSkgYXMgV2lkZ2V0TWFuaWZlc3RcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nU3ViTWVudSA9IG1lbnVTdHJ1Y3R1cmVcbiAgICAgICAgICAgIC5tYXAoKG1lbnUpID0+IG1lbnUuc3ViLmZpbmQoKHN1YikgPT4gc3ViLmxhYmVsLnJlcGxhY2UoJ0BwcnkudG9vbGJveC4nLCAnJykuaW5kZXhPZih0eXBlKSA+PSAwKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKG1hdGNoaW5nKSA9PiAhIW1hdGNoaW5nKVswXTtcbiAgICAgICAgICBpZiAoISFtYXRjaGluZ1N1Yk1lbnUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgIGxhYmVsOiBtYXRjaGluZ1N1Yk1lbnUubGFiZWwsXG4gICAgICAgICAgICAgIGljb246IG1hdGNoaW5nU3ViTWVudS5pY29uLnJlcGxhY2UoJ2Fzc2V0cy9zdmdzLycsICcnKS5yZXBsYWNlKC8uc3ZnJC8sICcnKSxcbiAgICAgICAgICAgICAgbWFuaWZlc3Q6IE9iamVjdC52YWx1ZXMobWFuaWZlc3RzKS5maW5kKChtYW5pZmVzdCkgPT4gbWFuaWZlc3QudHlwZSA9PT0gdHlwZSkgYXMgV2lkZ2V0TWFuaWZlc3RcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IHR5cGUsIGxhYmVsOiB0eXBlLCBpY29uOiBERUZBVUxUX0lDT05fVVJMLCBtYW5pZmVzdDoge30gYXMgV2lkZ2V0TWFuaWZlc3QgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhZGRNZW51KGljb246IHN0cmluZywgbGFiZWw6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5fbWVudVN0cnVjdHVyZSQuZ2V0VmFsdWUoKS5maW5kKChtZW51KSA9PiBtZW51LmxhYmVsID09PSBsYWJlbCkpIHtcbiAgICAgIHRoaXMuX21lbnVTdHJ1Y3R1cmUkLm5leHQodGhpcy5fbWVudVN0cnVjdHVyZSQuZ2V0VmFsdWUoKS5jb25jYXQoeyBpY29uLCBsYWJlbCwgb3BlbmVkOiBmYWxzZSwgc3ViOiBbXSB9KSk7XG4gICAgfVxuICB9XG5cbiAgYWRkV2lkZ2V0KG1lbnVMYWJlbDogc3RyaW5nLCBpY29uOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IG1lbnUgPSB0aGlzLl9tZW51U3RydWN0dXJlJC5nZXRWYWx1ZSgpLmZpbmQoKG1lbnUpID0+IG1lbnUubGFiZWwgPT09IG1lbnVMYWJlbCk7XG4gICAgaWYgKCFtZW51KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNZW51IHdpdGggbGFiZWwgJHttZW51TGFiZWx9IGhhcyBub3QgYmVlbiBmb3VuZGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZW51LnN1Yi5wdXNoKHsgaWNvbiwgbGFiZWwsIHR5cGUgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TWVudVN0cnVjdHVyZShzdHJ1Y3R1cmU6IFdpZGdldERlc2NyaXB0aW9uTWVudVtdKSB7XG4gICAgdGhpcy5fbWVudVN0cnVjdHVyZSQubmV4dChzdHJ1Y3R1cmUpO1xuICB9XG5cbiAgYWRkVG9DYXRhbG9nKHdpZGdldDogV2lkZ2V0LCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZEZvckNhdGFsb2cod2lkZ2V0Lm5hbWUpKSB7XG4gICAgICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2Uod2lkZ2V0LmNvbnRlbnQpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldE1hbmlmZXN0KHsgbWFuaWZlc3QsIGluZGV4IH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5zYXZlV2lkZ2V0KHsgd2lkZ2V0IH0pKTtcbiAgICAgIHRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5zZXQod2lkZ2V0LmlkLCBtYW5pZmVzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFRyeWluZyB0byBhZGQgZXhpc3RpbmcgdHlwZSBcIiR7bmFtZX1cImApO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRGb3JDYXRhbG9nKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiAhIW5hbWUgJiYgbmFtZS5sZW5ndGggPiAzICYmICF0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KG5hbWUpO1xuICB9XG59XG4iXX0=
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS90b29sYm94L3Rvb2xib3gtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7O0FBdUI5RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBNEI7SUFDM0Q7UUFDRSxJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsTUFBTSxFQUFFLEtBQUs7UUFDYixHQUFHLEVBQUU7WUFDSCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDbkUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDN0UsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3RFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtTQUN0RTtLQUNGO0lBQ0Q7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Q3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxLQUFhO1FBQ3hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWTtRQUM1QixPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdFLENBQUM7OEdBbklVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXaWRnZXRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvd2lkZ2V0LWluc3RhbmNpYXRvci93aWRnZXQtZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9kYXNoYm9hcmQvc3RvcmUvZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHsgV2lkZ2V0IH0gZnJvbSAnLi4vbW9kZWwvd2lkZ2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25maWdBY3Rpb25zIH0gZnJvbSAnLi4vc3RvcmUvY29uZmlnL2NvbmZpZy5hY3Rpb25zJztcbmltcG9ydCB7IENvbmZpZ1NlbGVjdG9ycyB9IGZyb20gJy4uL3N0b3JlL2NvbmZpZy9jb25maWcuc2VsZWN0b3JzJztcbmltcG9ydCB7IERFRkFVTFRfSUNPTl9VUkwgfSBmcm9tICcuLi9zdG9yZS9jb25maWcvaWNvbi1kZWZpbml0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVG9vbGJveE1hbmlmZXN0U2VydmljZSB9IGZyb20gJy4vdG9vbGJveC1tYW5pZmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldE1hbmlmZXN0IH0gZnJvbSAnLi4vbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgV2lkZ2V0RGVzY3JpcHRpb25CYXNlID0ge1xuICBpY29uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBXaWRnZXREZXNjcmlwdGlvbk1lbnUgPSBXaWRnZXREZXNjcmlwdGlvbkJhc2UgJiB7XG4gIG9wZW5lZDogYm9vbGVhbjtcbiAgc3ViOiBDYXRhbG9nRW50cnlbXTtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGFsb2dFbnRyeSA9IFdpZGdldERlc2NyaXB0aW9uQmFzZSAmIHtcbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlzQ3VzdG9tPzogYm9vbGVhbjtcbiAgZ3JvdXBzPzogc3RyaW5nW107XG4gIGNvdmVyPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TWVudVN0cnVjdHVyZTogV2lkZ2V0RGVzY3JpcHRpb25NZW51W10gPSBbXG4gIHtcbiAgICBpY29uOiAnc2hhcmVfbG9jYXRpb24nLFxuICAgIGxhYmVsOiAnQHByeS50b29sYm94LnN1Yi5tYXAnLFxuICAgIG9wZW5lZDogZmFsc2UsXG4gICAgc3ViOiBbXG4gICAgICB7IGljb246ICdtYXAnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5zaW1wbGVtYXAnLCB0eXBlOiAnc2ltcGxlbWFwJyB9LFxuICAgICAgeyBpY29uOiAnYnViYmxlLWNoYXJ0LWxpbmUnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5oZWF0bWFwJywgdHlwZTogJ2hlYXRtYXAnIH0sXG4gICAgICB7IGljb246ICdidWxsZXMnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5idWJibGVtYXAnLCB0eXBlOiAnYnViYmxlbWFwJyB9LFxuICAgICAgeyBpY29uOiAncGxhY2UnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5tYXJrZXJtYXAnLCB0eXBlOiAnbWFya2VybWFwJyB9XG4gICAgXVxuICB9LFxuICB7XG4gICAgaWNvbjogJ3Nob3dfY2hhcnQnLFxuICAgIGxhYmVsOiAnQHByeS50b29sYm94LnN1Yi5jaGFydCcsXG4gICAgb3BlbmVkOiBmYWxzZSxcbiAgICBzdWI6IFtcbiAgICAgIHsgaWNvbjogJ2Jhcl9jaGFydCcsIGxhYmVsOiAnQHByeS50b29sYm94LmJhcmNoYXJ0JywgdHlwZTogJ2JhcmNoYXJ0JyB9LFxuICAgICAgeyBpY29uOiAnYmFyX2NoYXJ0JywgbGFiZWw6ICdAcHJ5LnRvb2xib3guaGlzdG9ncmFtJywgdHlwZTogJ2hpc3RvZ3JhbScgfSxcbiAgICAgIHsgaWNvbjogJ3Nob3dfY2hhcnQnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5saW5lY2hhcnQnLCB0eXBlOiAnbGluZWNoYXJ0JyB9LFxuICAgICAgeyBpY29uOiAnYXV0b19ncmFwaCcsIGxhYmVsOiAnQHByeS50b29sYm94LnBvaW50Y2hhcnQnLCB0eXBlOiAncG9pbnRjaGFydCcgfSxcbiAgICAgIHsgaWNvbjogJ2FyZWFfY2hhcnQnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5hcmVhY2hhcnQnLCB0eXBlOiAnYXJlYWNoYXJ0JyB9LFxuICAgICAgeyBpY29uOiAnZG9udXRfbGFyZ2UnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5hcmNjaGFydCcsIHR5cGU6ICdhcmNjaGFydCcgfSxcbiAgICAgIHsgaWNvbjogJ2Jhcl9jaGFydCcsIGxhYmVsOiAnQHByeS50b29sYm94LnZlZ2EnLCB0eXBlOiAndmVnYScgfVxuICAgIF1cbiAgfSxcbiAge1xuICAgIGljb246ICd0b2MnLFxuICAgIGxhYmVsOiAnQHByeS50b29sYm94LnN1Yi5vdGhlcicsXG4gICAgb3BlbmVkOiBmYWxzZSxcbiAgICBzdWI6IFtcbiAgICAgIHsgaWNvbjogJ3RhYmxlX2NoYXJ0JywgbGFiZWw6ICdAcHJ5LnRvb2xib3gudGFibGUnLCB0eXBlOiAndGFibGUnIH0sXG4gICAgICB7IGljb246ICd0b2MnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5kZXRhaWwnLCB0eXBlOiAnZGV0YWlsJyB9LFxuICAgICAgeyBpY29uOiAnZ3JhcGgnLCBsYWJlbDogJ0BwcnkudG9vbGJveC5ncmFwaCcsIHR5cGU6ICdncmFwaCcgfSxcbiAgICAgIHsgaWNvbjogJ3NldHRpbmdzX2FwcGxpY2F0aW9ucycsIGxhYmVsOiAnQHByeS50b29sYm94LmlmcmFtZScsIHR5cGU6ICdpZnJhbWUnIH0sXG4gICAgICB7IGljb246ICd0aWxlJywgbGFiZWw6ICdAcHJ5LnRvb2xib3gudGlsZScsIHR5cGU6ICd0aWxlJyB9LFxuICAgICAgeyBpY29uOiAnY29kZS1ib3gnLCBsYWJlbDogJ0BwcnkudG9vbGJveC50ZW1wbGF0ZScsIHR5cGU6ICd0ZW1wbGF0ZScgfSxcbiAgICAgIHsgaWNvbjogJ2FuYWx5dGljJywgbGFiZWw6ICdAcHJ5LnRvb2xib3guYW5hbHl0aWMnLCB0eXBlOiAnYW5hbHl0aWMnIH1cbiAgICBdXG4gIH1cbl07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xib3hNZW51U2VydmljZSB7XG4gIF9tZW51U3RydWN0dXJlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2lkZ2V0RGVzY3JpcHRpb25NZW51W10+KGRlZmF1bHRNZW51U3RydWN0dXJlKTtcbiAgbWVudVN0cnVjdHVyZSQ6IE9ic2VydmFibGU8V2lkZ2V0RGVzY3JpcHRpb25NZW51W10+O1xuICBtZW51TGlzdCQ6IE9ic2VydmFibGU8Q2F0YWxvZ0VudHJ5W10+O1xuICB0eXBlcyQ6IE9ic2VydmFibGU8eyBpY29uOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgbWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IH1bXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB3aWRnZXRGYWN0b3J5U2VydmljZTogV2lkZ2V0RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b29sYm94TWFuaWZlc3RTZXJ2aWNlOiBUb29sYm94TWFuaWZlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlXG4gICkge1xuICAgIHRoaXMubWVudVN0cnVjdHVyZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuX21lbnVTdHJ1Y3R1cmUkLFxuICAgICAgdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5yZWZlcmVuY2UkLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmNhdGFsb2cpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW21lbnVTdHJ1Y3R1cmUsIHJlZmVyZW5jZSwgY2F0YWxvZ10pID0+XG4gICAgICAgIC8vIEdlbmVyaWMgd2lkZ2V0c1xuICAgICAgICBtZW51U3RydWN0dXJlXG4gICAgICAgICAgLmZpbHRlcigobWVudSkgPT4gbWVudS5zdWIuZmluZCgoc3ViKSA9PiByZWZlcmVuY2VbdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmdldChzdWIudHlwZSkudHlwZV0pKVxuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAobWVudSkgPT5cbiAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAuLi5tZW51LFxuICAgICAgICAgICAgICAgIHN1YjogbWVudS5zdWJcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHN1YikgPT4gcmVmZXJlbmNlW3RoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5nZXQoc3ViLnR5cGUpLnR5cGVdKVxuICAgICAgICAgICAgICAgICAgLm1hcCgoZW50cnkpID0+ICh7IC4uLmVudHJ5LCBpY29uOiAnYXNzZXRzL3N2Z3MvJyArIGVudHJ5Lmljb24gKyAnLnN2ZycgfSkpIGFzIENhdGFsb2dFbnRyeVtdXG4gICAgICAgICAgICAgIH0pIGFzIFdpZGdldERlc2NyaXB0aW9uTWVudVxuICAgICAgICAgIClcbiAgICAgICAgICAvLyBVc2VyIGRlZmluZWQgd2lkZ2V0IGNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgLmNvbmNhdCh7XG4gICAgICAgICAgICBpY29uOiAnbGlicmFyeV9hZGQnLFxuICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3guY2F0YWxvZy50aXRsZScsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc3ViOiBbXG4gICAgICAgICAgICAgIC4uLmNhdGFsb2cubWFwKCh3aWRnZXQpID0+ICh7XG4gICAgICAgICAgICAgICAgaWNvbjogd2lkZ2V0LmltYWdlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB3aWRnZXQubmFtZSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aWRnZXQuaWQsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHdpZGdldC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpc0N1c3RvbTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBncm91cHM6IHdpZGdldC5ncm91cHNcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5tZW51TGlzdCQgPSB0aGlzLm1lbnVTdHJ1Y3R1cmUkLnBpcGUoXG4gICAgICBtYXAoKG1lbnVEZXNjcmlwdGlvbikgPT5cbiAgICAgICAgbWVudURlc2NyaXB0aW9uXG4gICAgICAgICAgLm1hcCgobWVudSkgPT5cbiAgICAgICAgICAgIG1lbnUuc3ViLm1hcCgoc3ViTWVudSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uc3ViTWVudSxcbiAgICAgICAgICAgICAgY2F0ZWdvcnk6IG1lbnUubGFiZWxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIClcbiAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnR5cGVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmluaXRpYWxNYW5pZmVzdHMkLFxuICAgICAgdGhpcy5tZW51U3RydWN0dXJlJCxcbiAgICAgIHRoaXMud2lkZ2V0RmFjdG9yeVNlcnZpY2UucmVmZXJlbmNlJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFttYW5pZmVzdHMsIG1lbnVTdHJ1Y3R1cmUsIHJlZmVyZW5jZV0pID0+IHtcbiAgICAgICAgY29uc3QgdHlwZXMgPSBbXG4gICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMobWFuaWZlc3RzKVxuICAgICAgICAgICAgICAuZmlsdGVyKChtYW5pZmVzdCkgPT4gcmVmZXJlbmNlW21hbmlmZXN0LnR5cGVdKVxuICAgICAgICAgICAgICAubWFwKChtYW5pZmVzdCkgPT4gbWFuaWZlc3QudHlwZSlcbiAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ01lbnUgPSBtZW51U3RydWN0dXJlLmZpbmQoXG4gICAgICAgICAgICAobWVudSkgPT4gbWVudS5sYWJlbC5yZXBsYWNlKCdAcHJ5LnRvb2xib3guc3ViLicsICcnKS5pbmRleE9mKHR5cGUpID49IDBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghIW1hdGNoaW5nTWVudSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgbGFiZWw6IG1hdGNoaW5nTWVudS5sYWJlbCxcbiAgICAgICAgICAgICAgaWNvbjogbWF0Y2hpbmdNZW51Lmljb24sXG4gICAgICAgICAgICAgIG1hbmlmZXN0OiBPYmplY3QudmFsdWVzKG1hbmlmZXN0cykuZmluZCgobWFuaWZlc3QpID0+IG1hbmlmZXN0LnR5cGUgPT09IHR5cGUpIGFzIFdpZGdldE1hbmlmZXN0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBtYXRjaGluZ1N1Yk1lbnUgPSBtZW51U3RydWN0dXJlXG4gICAgICAgICAgICAubWFwKChtZW51KSA9PiBtZW51LnN1Yi5maW5kKChzdWIpID0+IHN1Yi5sYWJlbC5yZXBsYWNlKCdAcHJ5LnRvb2xib3guJywgJycpLmluZGV4T2YodHlwZSkgPj0gMCkpXG4gICAgICAgICAgICAuZmlsdGVyKChtYXRjaGluZykgPT4gISFtYXRjaGluZylbMF07XG4gICAgICAgICAgaWYgKCEhbWF0Y2hpbmdTdWJNZW51KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICBsYWJlbDogbWF0Y2hpbmdTdWJNZW51LmxhYmVsLFxuICAgICAgICAgICAgICBpY29uOiBtYXRjaGluZ1N1Yk1lbnUuaWNvbi5yZXBsYWNlKCdhc3NldHMvc3Zncy8nLCAnJykucmVwbGFjZSgvLnN2ZyQvLCAnJyksXG4gICAgICAgICAgICAgIG1hbmlmZXN0OiBPYmplY3QudmFsdWVzKG1hbmlmZXN0cykuZmluZCgobWFuaWZlc3QpID0+IG1hbmlmZXN0LnR5cGUgPT09IHR5cGUpIGFzIFdpZGdldE1hbmlmZXN0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyB0eXBlLCBsYWJlbDogdHlwZSwgaWNvbjogREVGQVVMVF9JQ09OX1VSTCwgbWFuaWZlc3Q6IHt9IGFzIFdpZGdldE1hbmlmZXN0IH07XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYWRkTWVudShpY29uOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX21lbnVTdHJ1Y3R1cmUkLmdldFZhbHVlKCkuZmluZCgobWVudSkgPT4gbWVudS5sYWJlbCA9PT0gbGFiZWwpKSB7XG4gICAgICB0aGlzLl9tZW51U3RydWN0dXJlJC5uZXh0KHRoaXMuX21lbnVTdHJ1Y3R1cmUkLmdldFZhbHVlKCkuY29uY2F0KHsgaWNvbiwgbGFiZWwsIG9wZW5lZDogZmFsc2UsIHN1YjogW10gfSkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFdpZGdldChtZW51TGFiZWw6IHN0cmluZywgaWNvbjogc3RyaW5nLCBsYWJlbDogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZW51ID0gdGhpcy5fbWVudVN0cnVjdHVyZSQuZ2V0VmFsdWUoKS5maW5kKChtZW51KSA9PiBtZW51LmxhYmVsID09PSBtZW51TGFiZWwpO1xuICAgIGlmICghbWVudSkge1xuICAgICAgY29uc29sZS5lcnJvcihgTWVudSB3aXRoIGxhYmVsICR7bWVudUxhYmVsfSBoYXMgbm90IGJlZW4gZm91bmRgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVudS5zdWIucHVzaCh7IGljb24sIGxhYmVsLCB0eXBlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZFRvQ2F0YWxvZyh3aWRnZXQ6IFdpZGdldCwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmlzVmFsaWRGb3JDYXRhbG9nKHdpZGdldC5uYW1lKSkge1xuICAgICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKHdpZGdldC5jb250ZW50KTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVXaWRnZXRNYW5pZmVzdCh7IG1hbmlmZXN0LCBpbmRleCB9KSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuc2F2ZVdpZGdldCh7IHdpZGdldCB9KSk7XG4gICAgICB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2Uuc2V0KHdpZGdldC5pZCwgbWFuaWZlc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBUcnlpbmcgdG8gYWRkIGV4aXN0aW5nIHR5cGUgXCIke3dpZGdldC5uYW1lfVwiYCk7XG4gICAgfVxuICB9XG5cbiAgaXNWYWxpZEZvckNhdGFsb2cobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuICEhbmFtZSAmJiBuYW1lLmxlbmd0aCA+IDMgJiYgIXRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5nZXQobmFtZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { ClassActions, ClassSelectors, ConfigActions, DashboardActions, DataSourceActions, DataSourceSelectors, DEFAULT_RESTITUTION_ICON_URL, FieldActions, getDisplayOptions, LibraryTypes,
|
|
2
|
+
import { ClassActions, ClassSelectors, ConfigActions, DashboardActions, DataSourceActions, DataSourceSelectors, DEFAULT_RESTITUTION_ICON_URL, FieldActions, getDisplayOptions, LibraryTypes, SearchActions, SubscriptionnerDirective, ViewMode } from '@provoly/dashboard';
|
|
3
3
|
import { map, Subject } from 'rxjs';
|
|
4
4
|
import { v4 } from 'uuid';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -27,12 +27,8 @@ export class PryRestitutionComponent extends SubscriptionnerDirective {
|
|
|
27
27
|
image: DEFAULT_RESTITUTION_ICON_URL,
|
|
28
28
|
description: ''
|
|
29
29
|
};
|
|
30
|
-
this.
|
|
31
|
-
type: PryVisibilityType.PRIVATE,
|
|
32
|
-
users: []
|
|
33
|
-
};
|
|
30
|
+
this.groups = [];
|
|
34
31
|
this.openSettings$ = new Subject();
|
|
35
|
-
this.users$ = null;
|
|
36
32
|
this.consultMode = false;
|
|
37
33
|
this.selectedRestitution = null;
|
|
38
34
|
this.edit = true;
|
|
@@ -96,8 +92,8 @@ export class PryRestitutionComponent extends SubscriptionnerDirective {
|
|
|
96
92
|
from: 'PryRestitutionComponent.ngOnInit()-2'
|
|
97
93
|
}));
|
|
98
94
|
}
|
|
99
|
-
if (this.selectedRestitution.
|
|
100
|
-
this.
|
|
95
|
+
if (this.selectedRestitution.groups) {
|
|
96
|
+
this.groups = this.selectedRestitution.groups;
|
|
101
97
|
}
|
|
102
98
|
this.form.selectedDataSources.forEach((dataSource) => {
|
|
103
99
|
this.store.dispatch(SearchActions.getDatasourceItems({
|
|
@@ -179,7 +175,7 @@ export class PryRestitutionComponent extends SubscriptionnerDirective {
|
|
|
179
175
|
name: this.form.title,
|
|
180
176
|
description: this.form.description,
|
|
181
177
|
image: this.form.image ?? '',
|
|
182
|
-
|
|
178
|
+
groups: this.groups,
|
|
183
179
|
datasource: this.form.selectedDataSources ?? [],
|
|
184
180
|
modificationDate: ''
|
|
185
181
|
}
|
|
@@ -189,11 +185,11 @@ export class PryRestitutionComponent extends SubscriptionnerDirective {
|
|
|
189
185
|
this.restitutionCreated.emit();
|
|
190
186
|
}
|
|
191
187
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryRestitutionComponent, deps: [{ token: i1.ToolboxManifestService }, { token: i2.Store }, { token: i1.ToolboxMenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryRestitutionComponent, selector: "pry-restitution", inputs: { selectedRestitution: "selectedRestitution", edit: "edit", isDataSourceSelected: "isDataSourceSelected", bindId: "bindId" }, outputs: { restitutionCreated: "restitutionCreated" }, usesInheritance: true, ngImport: i0, template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-restitution\">\n <h3 class=\"a-h2 o-restitution__title\">\n {{ (consultMode ? '@pry.restitution.consult' : edit ? '@pry.restitution.edit' : '@pry.restitution.create') | i18n }}\n </h3>\n <pry-stepper
|
|
188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryRestitutionComponent, selector: "pry-restitution", inputs: { selectedRestitution: "selectedRestitution", edit: "edit", isDataSourceSelected: "isDataSourceSelected", bindId: "bindId" }, outputs: { restitutionCreated: "restitutionCreated" }, usesInheritance: true, ngImport: i0, template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-restitution\">\n <h3 class=\"a-h2 o-restitution__title\">\n {{ (consultMode ? '@pry.restitution.consult' : edit ? '@pry.restitution.edit' : '@pry.restitution.create') | i18n }}\n </h3>\n <pry-stepper\n #stepper\n [isConsultMode]=\"consultMode\"\n (lastStepCompleted)=\"lastStepCompleted()\"\n (activeIndexChange)=\"activeStepIndex = $event\"\n >\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.configure' | i18n }}</h4>\n <div class=\"m-form-label-field\">\n <label for=\"restitution\" class=\"a-label\">{{ '@pry.restitution.restitution_type' | i18n }}</label>\n <pry-select\n id=\"restitution\"\n [items]=\"types$ | async\"\n [(ngModel)]=\"form.selectedWidget\"\n [disabled]=\"consultMode\"\n [closeOnSelect]=\"true\"\n bindIcon=\"icon\"\n bindLabel=\"label\"\n bindValue=\"type\"\n >\n </pry-select>\n </div>\n <ng-container *ngIf=\"form.selectedWidget !== ''\">\n <div class=\"m-form-label-field\">\n <label for=\"graphTitle\" class=\"a-label\">{{ '@pry.restitution.graph_title' | i18n }}</label>\n <input\n name=\"title\"\n id=\"graphTitle\"\n class=\"a-form-field\"\n [(ngModel)]=\"form.title\"\n type=\"text\"\n [disabled]=\"consultMode\"\n maxlength=\"30\"\n ngDefaultControl\n />\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"description\" class=\"a-label\">{{ '@pry.restitution.description' | i18n }}</label>\n <textarea\n name=\"description\"\n id=\"description\"\n class=\"a-form-field\"\n [(ngModel)]=\"form.description\"\n style=\"resize: none\"\n [disabled]=\"consultMode\"\n maxlength=\"255\"\n ngDefaultControl\n >\n </textarea>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image (changed)=\"image = $event\" [iconUrl]=\"image\" [mode]=\"type\"></pry-select-image>\n </div>\n </div>\n <div class=\"m-btn-group -space-evenly actions\">\n <button (click)=\"cancel(stepper)\" type=\"button\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.restitution.close' | i18n }}\n </button>\n <button\n (click)=\"goNext(stepper)\"\n [disabled]=\"form.selectedWidget === '' || form.title.trim().length === 0\"\n class=\"a-btn a-btn--primary\"\n >\n {{ '@pry.restitution.validate' | i18n }}\n </button>\n </div>\n </ng-container>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.dataSource' | i18n }}</h4>\n <pry-datasource-selector\n bindLabel=\"name\"\n bindValue=\"id\"\n translationStringBase=\"@pry.components.chipsSelector.datasource.\"\n (itemsChanged)=\"datasourcesChanged($event)\"\n [usedItems]=\"(usedDatasources$ | async) ?? []\"\n [showActionButtons]=\"false\"\n ></pry-datasource-selector>\n <ng-container [ngTemplateOutlet]=\"buttons\" [ngTemplateOutletContext]=\"{ submit: true }\"></ng-container>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.visualize' | i18n }}</h4>\n <div class=\"widget-instanciator\">\n <pry-widget-instanciator\n [standalone]=\"true\"\n [staticManifest]=\"customManifest\"\n [open$]=\"openSettings$\"\n (manifestModified)=\"updateManifest($event)\"\n ></pry-widget-instanciator>\n </div>\n <ng-container [ngTemplateOutlet]=\"buttons\"></ng-container>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.share' | i18n }}</h4>\n <h3>{{ '@pry.restitution.access' | i18n }}</h3>\n {{ '@pry.restitution.choice' | i18n }}\n <ul>\n <li>\n {{ '@pry.restitution.public' | i18n }}\n </li>\n </ul>\n {{ '@pry.restitution.or' | i18n }}\n <ul>\n <li>\n {{ '@pry.restitution.private' | i18n }}\n </li>\n </ul>\n <pry-share [(ngModel)]=\"groups\" labelProperty=\"name\" valueProperty=\"id\" [disabled]=\"consultMode\"></pry-share>\n <ng-container [ngTemplateOutlet]=\"buttons\"></ng-container>\n </pry-step>\n </pry-stepper>\n</div>\n\n<ng-template #buttons let-submit=\"submit\">\n <div class=\"m-btn-group -space-evenly actions\">\n <button (click)=\"prev(stepper)\" type=\"button\" class=\"a-btn a-btn--secondary\">\n {{ (consultMode ? '@pry.restitution.goBack' : '@pry.restitution.close') | i18n }}\n </button>\n <button (click)=\"goNext(stepper, submit)\" type=\"button\" class=\"a-btn a-btn--primary\">\n {{ (activeStepIndex === 3 ? '@pry.restitution.share' : '@pry.restitution.next') | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.PryStepperComponent, selector: "pry-stepper", inputs: ["isConsultMode"], outputs: ["lastStepCompleted", "activeIndexChange"] }, { kind: "component", type: i5.PryStepComponent, selector: "pry-step", inputs: ["setActiveState"] }, { kind: "directive", type: i5.PryStepTitleDirective, selector: "[stepTitle]" }, { kind: "component", type: i1.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i1.WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified"] }, { kind: "component", type: i1.DatasourceSelectorComponent, selector: "pry-datasource-selector", inputs: ["usedItems", "manifest"] }, { kind: "component", type: i1.PryShareComponent, selector: "pry-share", inputs: ["labelProperty", "valueProperty"] }, { kind: "component", type: i6.PryCatalogCssComponent, selector: "pry-restitution-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
|
|
193
189
|
}
|
|
194
190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryRestitutionComponent, decorators: [{
|
|
195
191
|
type: Component,
|
|
196
|
-
args: [{ selector: 'pry-restitution', template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-restitution\">\n <h3 class=\"a-h2 o-restitution__title\">\n {{ (consultMode ? '@pry.restitution.consult' : edit ? '@pry.restitution.edit' : '@pry.restitution.create') | i18n }}\n </h3>\n <pry-stepper
|
|
192
|
+
args: [{ selector: 'pry-restitution', template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-restitution\">\n <h3 class=\"a-h2 o-restitution__title\">\n {{ (consultMode ? '@pry.restitution.consult' : edit ? '@pry.restitution.edit' : '@pry.restitution.create') | i18n }}\n </h3>\n <pry-stepper\n #stepper\n [isConsultMode]=\"consultMode\"\n (lastStepCompleted)=\"lastStepCompleted()\"\n (activeIndexChange)=\"activeStepIndex = $event\"\n >\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.configure' | i18n }}</h4>\n <div class=\"m-form-label-field\">\n <label for=\"restitution\" class=\"a-label\">{{ '@pry.restitution.restitution_type' | i18n }}</label>\n <pry-select\n id=\"restitution\"\n [items]=\"types$ | async\"\n [(ngModel)]=\"form.selectedWidget\"\n [disabled]=\"consultMode\"\n [closeOnSelect]=\"true\"\n bindIcon=\"icon\"\n bindLabel=\"label\"\n bindValue=\"type\"\n >\n </pry-select>\n </div>\n <ng-container *ngIf=\"form.selectedWidget !== ''\">\n <div class=\"m-form-label-field\">\n <label for=\"graphTitle\" class=\"a-label\">{{ '@pry.restitution.graph_title' | i18n }}</label>\n <input\n name=\"title\"\n id=\"graphTitle\"\n class=\"a-form-field\"\n [(ngModel)]=\"form.title\"\n type=\"text\"\n [disabled]=\"consultMode\"\n maxlength=\"30\"\n ngDefaultControl\n />\n </div>\n <div class=\"m-form-label-field\">\n <label for=\"description\" class=\"a-label\">{{ '@pry.restitution.description' | i18n }}</label>\n <textarea\n name=\"description\"\n id=\"description\"\n class=\"a-form-field\"\n [(ngModel)]=\"form.description\"\n style=\"resize: none\"\n [disabled]=\"consultMode\"\n maxlength=\"255\"\n ngDefaultControl\n >\n </textarea>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image (changed)=\"image = $event\" [iconUrl]=\"image\" [mode]=\"type\"></pry-select-image>\n </div>\n </div>\n <div class=\"m-btn-group -space-evenly actions\">\n <button (click)=\"cancel(stepper)\" type=\"button\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.restitution.close' | i18n }}\n </button>\n <button\n (click)=\"goNext(stepper)\"\n [disabled]=\"form.selectedWidget === '' || form.title.trim().length === 0\"\n class=\"a-btn a-btn--primary\"\n >\n {{ '@pry.restitution.validate' | i18n }}\n </button>\n </div>\n </ng-container>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.dataSource' | i18n }}</h4>\n <pry-datasource-selector\n bindLabel=\"name\"\n bindValue=\"id\"\n translationStringBase=\"@pry.components.chipsSelector.datasource.\"\n (itemsChanged)=\"datasourcesChanged($event)\"\n [usedItems]=\"(usedDatasources$ | async) ?? []\"\n [showActionButtons]=\"false\"\n ></pry-datasource-selector>\n <ng-container [ngTemplateOutlet]=\"buttons\" [ngTemplateOutletContext]=\"{ submit: true }\"></ng-container>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.visualize' | i18n }}</h4>\n <div class=\"widget-instanciator\">\n <pry-widget-instanciator\n [standalone]=\"true\"\n [staticManifest]=\"customManifest\"\n [open$]=\"openSettings$\"\n (manifestModified)=\"updateManifest($event)\"\n ></pry-widget-instanciator>\n </div>\n <ng-container [ngTemplateOutlet]=\"buttons\"></ng-container>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.share' | i18n }}</h4>\n <h3>{{ '@pry.restitution.access' | i18n }}</h3>\n {{ '@pry.restitution.choice' | i18n }}\n <ul>\n <li>\n {{ '@pry.restitution.public' | i18n }}\n </li>\n </ul>\n {{ '@pry.restitution.or' | i18n }}\n <ul>\n <li>\n {{ '@pry.restitution.private' | i18n }}\n </li>\n </ul>\n <pry-share [(ngModel)]=\"groups\" labelProperty=\"name\" valueProperty=\"id\" [disabled]=\"consultMode\"></pry-share>\n <ng-container [ngTemplateOutlet]=\"buttons\"></ng-container>\n </pry-step>\n </pry-stepper>\n</div>\n\n<ng-template #buttons let-submit=\"submit\">\n <div class=\"m-btn-group -space-evenly actions\">\n <button (click)=\"prev(stepper)\" type=\"button\" class=\"a-btn a-btn--secondary\">\n {{ (consultMode ? '@pry.restitution.goBack' : '@pry.restitution.close') | i18n }}\n </button>\n <button (click)=\"goNext(stepper, submit)\" type=\"button\" class=\"a-btn a-btn--primary\">\n {{ (activeStepIndex === 3 ? '@pry.restitution.share' : '@pry.restitution.next') | i18n }}\n </button>\n </div>\n</ng-template>\n" }]
|
|
197
193
|
}], ctorParameters: () => [{ type: i1.ToolboxManifestService }, { type: i2.Store }, { type: i1.ToolboxMenuService }], propDecorators: { selectedRestitution: [{
|
|
198
194
|
type: Input
|
|
199
195
|
}], edit: [{
|
|
@@ -205,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
205
201
|
}], bindId: [{
|
|
206
202
|
type: Input
|
|
207
203
|
}] } });
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGl0dXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvcmVzdGl0dXRpb24vY29tcG9uZW50cy9yZXN0aXR1dGlvbi9yZXN0aXR1dGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uL3Jlc3RpdHV0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUdMLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLGdCQUFnQixFQUVoQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFlBQVksRUFFWixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLHdCQUF3QixFQUd4QixRQUFRLEVBR1QsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQU8xQixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsd0JBQXdCO0lBa0NuRSxZQUNVLHNCQUE4QyxFQUM5QyxLQUFZLEVBQ1osa0JBQXNDO1FBRTlDLEtBQUssRUFBRSxDQUFDO1FBSkEsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWxDaEQsbUJBQWMsR0FBbUI7WUFDL0IsSUFBSSxF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QixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO29CQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFO29CQUMvQyxnQkFBZ0IsRUFBRSxFQUFFO2lCQUNyQjthQUNGLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzhHQXBOVSx1QkFBdUI7a0dBQXZCLHVCQUF1QiwyUUNuQ3BDLGt2S0FtSUE7OzJGRGhHYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UsaUJBQWlCO2dKQXlCbEIsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR0Usb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ0VudHJ5LFxuICBDbGFzcyxcbiAgQ2xhc3NBY3Rpb25zLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgQ29uZmlnQWN0aW9ucyxcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGF0YVNvdXJjZSxcbiAgRGF0YVNvdXJjZUFjdGlvbnMsXG4gIERhdGFTb3VyY2VTZWxlY3RvcnMsXG4gIERFRkFVTFRfUkVTVElUVVRJT05fSUNPTl9VUkwsXG4gIEZpZWxkQWN0aW9ucyxcbiAgZ2V0RGlzcGxheU9wdGlvbnMsXG4gIExpYnJhcnlUeXBlcyxcbiAgUHJ5VmlzaWJpbGl0eSxcbiAgUHJ5VmlzaWJpbGl0eVR5cGUsXG4gIFNlYXJjaEFjdGlvbnMsXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSxcbiAgVG9vbGJveE1hbmlmZXN0U2VydmljZSxcbiAgVG9vbGJveE1lbnVTZXJ2aWNlLFxuICBWaWV3TW9kZSxcbiAgV2lkZ2V0LFxuICBXaWRnZXRNYW5pZmVzdFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgUHJ5U3RlcHBlckNvbXBvbmVudCB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3N0ZXBwZXInO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgUmVzdGl0dXRpb25Gb3JtIH0gZnJvbSAnLi4vLi4vbW9kZWwvcmVzdGl0dXRpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktcmVzdGl0dXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdGl0dXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVJlc3RpdHV0aW9uQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgdHlwZXMkOiBPYnNlcnZhYmxlPHsgaWNvbjogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IG1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdCB9W10+O1xuICBjbGFzc2VzJDogT2JzZXJ2YWJsZTxDbGFzc1tdPjtcbiAgY3VzdG9tTWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0ID0ge1xuICAgIHR5cGU6ICdkZXRhaWwnLFxuICAgIGxheW91dDogeyB4OiAxLCB5OiAxLCB3aWR0aDogMSwgaGVpZ2h0OiAxIH0sXG4gICAgb3B0aW9uczogeyBpdGVtSWRzOiBbXSBhcyBzdHJpbmdbXSB9XG4gIH07XG4gIGZvcm06IFJlc3RpdHV0aW9uRm9ybSA9IHtcbiAgICBzZWxlY3RlZFdpZGdldDogJycsXG4gICAgc2VsZWN0ZWREYXRhU291cmNlczogW10sXG4gICAgdGl0bGU6ICcnLFxuICAgIGltYWdlOiBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICAgIGRlc2NyaXB0aW9uOiAnJ1xuICB9O1xuICB2aXNpYmlsaXR5OiBQcnlWaXNpYmlsaXR5ID0ge1xuICAgIHR5cGU6IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEUsXG4gICAgdXNlcnM6IFtdXG4gIH07XG4gIG9wZW5TZXR0aW5ncyQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICB1c2VycyQ6IE9ic2VydmFibGU8YW55W10+IHwgbnVsbCA9IG51bGw7XG4gIGNvbnN1bHRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUmVzdGl0dXRpb246IFdpZGdldCB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHJlc3RpdHV0aW9uQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgd2lkZ2V0c0xpc3QkOiBPYnNlcnZhYmxlPENhdGFsb2dFbnRyeVtdPjtcbiAgdHlwZTogTGlicmFyeVR5cGVzID0gTGlicmFyeVR5cGVzLklMTFVTVFJBVElPTjtcbiAgQElucHV0KCkgaXNEYXRhU291cmNlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgYmluZElkOiBhbnk7XG4gIGltYWdlOiBzdHJpbmcgPSBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMO1xuICB3aWRnZXRUeXBlczogeyBpY29uOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgbWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IH1bXSA9IFtdO1xuICB1c2VkRGF0YXNvdXJjZXMkOiBPYnNlcnZhYmxlPERhdGFTb3VyY2VbXT47XG4gIGFjdGl2ZVN0ZXBJbmRleCA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0b29sYm94TWFuaWZlc3RTZXJ2aWNlOiBUb29sYm94TWFuaWZlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgdG9vbGJveE1lbnVTZXJ2aWNlOiBUb29sYm94TWVudVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGFzc0FjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24oKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChGaWVsZEFjdGlvbnMubG9hZCgpKTtcblxuICAgIHRoaXMudHlwZXMkID0gdGhpcy50b29sYm94TWVudVNlcnZpY2UudHlwZXMkLnBpcGUoXG4gICAgICBtYXAoKHR5cGUpID0+IHR5cGUuZmlsdGVyKChmaWx0ZXJlZFR5cGUpID0+IGZpbHRlcmVkVHlwZS50eXBlICE9PSAnZGV0YWlsJykpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMudHlwZXMkLnN1YnNjcmliZSgodHlwZXMpID0+ICh0aGlzLndpZGdldFR5cGVzID0gdHlwZXMpKSk7XG4gICAgdGhpcy5jbGFzc2VzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpO1xuICAgIHRoaXMud2lkZ2V0c0xpc3QkID0gdGhpcy50b29sYm94TWVudVNlcnZpY2UubWVudVN0cnVjdHVyZSQucGlwZShcbiAgICAgIG1hcCgobWVudSkgPT5cbiAgICAgICAgbWVudVxuICAgICAgICAgIC5tYXAoKGl0ZW1zKSA9PiBbLi4uaXRlbXMuc3ViLmZpbHRlcigocykgPT4gdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmlzTW9kZWwocy50eXBlKSldKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgaXRlbXMpID0+IFsuLi5hY2MsIC4uLml0ZW1zXSwgW10pXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnVzZWREYXRhc291cmNlcyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZ2V0RGF0YVNvdXJjZXNTb3J0ZWQpXG4gICAgICAucGlwZShtYXAoKGFsbERzcykgPT4gYWxsRHNzLmZpbHRlcigoZGF0YXNvdXJjZSkgPT4gdGhpcy5mb3JtLnNlbGVjdGVkRGF0YVNvdXJjZXMuaW5jbHVkZXMoZGF0YXNvdXJjZS5pZCkpKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uKSB7XG4gICAgICBpZiAoIXRoaXMuZWRpdCkge1xuICAgICAgICB0aGlzLmNvbnN1bHRNb2RlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURpc3BsYXlPcHRpb25zKHsgbW9kZTogVmlld01vZGUuQ09OU1VMVCB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoe1xuICAgICAgICAgICAgbW9kZTogVmlld01vZGUuQ1VTVE9NLFxuICAgICAgICAgICAgY3VzdG9tRGlzcGxheToge1xuICAgICAgICAgICAgICAuLi5nZXREaXNwbGF5T3B0aW9ucyhWaWV3TW9kZS5FRElUSU9OKSxcbiAgICAgICAgICAgICAgd2lkZ2V0Q29udGV4dE1lbnU6IHtcbiAgICAgICAgICAgICAgICBkYXRhc291cmNlU2VsZWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpbmRvdzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWF4aW1pemU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFkZFRvQ2F0YWxvZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VTcG90OiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VzdG9tTWFuaWZlc3QgPSBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbi5jb250ZW50KTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY3VzdG9tTWFuaWZlc3QuZGF0YXNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5jdXN0b21NYW5pZmVzdC5kYXRhc291cmNlLmZvckVhY2goKGRhdGFTb3VyY2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7XG4gICAgICAgICAgICAgIGlkOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgICBleGNsdWRlR2VvOiB0aGlzLmN1c3RvbU1hbmlmZXN0LnR5cGUgPT09ICdtYXAnLFxuICAgICAgICAgICAgICBmcm9tOiAnUHJ5UmVzdGl0dXRpb25Db21wb25lbnQubmdPbkluaXQoKS0xJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgICAgaWQ6IHRoaXMuY3VzdG9tTWFuaWZlc3QuZGF0YXNvdXJjZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBleGNsdWRlR2VvOiB0aGlzLmN1c3RvbU1hbmlmZXN0LnR5cGUgPT09ICdtYXAnLFxuICAgICAgICAgICAgZnJvbTogJ1ByeVJlc3RpdHV0aW9uQ29tcG9uZW50Lm5nT25Jbml0KCktMidcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbi52aXNpYmlsaXR5KSB7XG4gICAgICAgIHRoaXMudmlzaWJpbGl0eSA9IHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbi52aXNpYmlsaXR5O1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtLnNlbGVjdGVkRGF0YVNvdXJjZXMuZm9yRWFjaCgoZGF0YVNvdXJjZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgICAgaWQ6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICBleGNsdWRlR2VvOiB0aGlzLmN1c3RvbU1hbmlmZXN0LnR5cGUgPT09ICdtYXAnLFxuICAgICAgICAgICAgZnJvbTogJ1ByeVJlc3RpdHV0aW9uQ29tcG9uZW50Lm5nT25Jbml0KCktMydcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmN1c3RvbU1hbmlmZXN0ID0gSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24uY29udGVudCk7XG4gICAgICB0aGlzLmZvcm0gPSB7XG4gICAgICAgIHNlbGVjdGVkV2lkZ2V0OiB0aGlzLmN1c3RvbU1hbmlmZXN0LnR5cGUsXG4gICAgICAgIHNlbGVjdGVkRGF0YVNvdXJjZXM6ICh0aGlzLmN1c3RvbU1hbmlmZXN0LmRhdGFzb3VyY2UgPz8gW10pIGFzIHN0cmluZ1tdLFxuICAgICAgICB0aXRsZTogdGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uLm5hbWUsXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5pbWFnZSA9IHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbj8uaW1hZ2UgPz8gREVGQVVMVF9SRVNUSVRVVElPTl9JQ09OX1VSTDtcbiAgfVxuXG4gIGNhbmNlbChzdGVwcGVyOiBQcnlTdGVwcGVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5mb3JtLnNlbGVjdGVkV2lkZ2V0ID0gJyc7XG4gICAgdGhpcy5mb3JtLnNlbGVjdGVkRGF0YVNvdXJjZXMgPSBbXTtcbiAgICB0aGlzLmZvcm0udGl0bGUgPSAnJztcbiAgICB0aGlzLmZvcm0uZGVzY3JpcHRpb24gPSAnJztcbiAgICB0aGlzLmZvcm0uaW1hZ2UgPSAnJztcbiAgICBpZiAodGhpcy5jb25zdWx0TW9kZSB8fCB0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24pIHtcbiAgICAgIHRoaXMucmVzdGl0dXRpb25DcmVhdGVkLmVtaXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcmV2KHN0ZXBwZXIpO1xuICB9XG5cbiAgZGF0YXNvdXJjZXNDaGFuZ2VkKCRldmVudDogRGF0YVNvdXJjZVtdKSB7XG4gICAgdGhpcy5mb3JtLnNlbGVjdGVkRGF0YVNvdXJjZXMgPSAoJGV2ZW50ID8/IFtdKS5tYXAoKGRzKSA9PiBkcy5pZCk7XG4gIH1cblxuICBzdWJtaXQoc3RlcHBlcjogUHJ5U3RlcHBlckNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLmNvbnN1bHRNb2RlKSB7XG4gICAgICB0aGlzLmdvTmV4dChzdGVwcGVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB3aWRnZXRUeXBlID0gdGhpcy53aWRnZXRUeXBlcy5maW5kKCh3aWRnZXRUeXBlKSA9PiB3aWRnZXRUeXBlLnR5cGUgPT09IHRoaXMuZm9ybS5zZWxlY3RlZFdpZGdldCk7XG5cbiAgICB0aGlzLmN1c3RvbU1hbmlmZXN0ID0ge1xuICAgICAgLi4udGhpcy5jdXN0b21NYW5pZmVzdCxcbiAgICAgIHR5cGU6IHRoaXMuZm9ybS5zZWxlY3RlZFdpZGdldCxcbiAgICAgIHRpdGxlOiB0aGlzLmZvcm0udGl0bGUsXG4gICAgICBkYXRhc291cmNlOiB0aGlzLmZvcm0uc2VsZWN0ZWREYXRhU291cmNlcyA/PyBbXSxcbiAgICAgIGhlYWRlcjogdHJ1ZSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLi4ud2lkZ2V0VHlwZT8ubWFuaWZlc3Qub3B0aW9ucyxcbiAgICAgICAgdGl0bGU6IHRoaXMuZm9ybS50aXRsZVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5mb3JtLnNlbGVjdGVkRGF0YVNvdXJjZXMuZm9yRWFjaCgobmFtZVF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICBpZDogbmFtZVF1ZXJ5LFxuICAgICAgICAgIGV4Y2x1ZGVHZW86IHRoaXMuY3VzdG9tTWFuaWZlc3QudHlwZSA9PT0gJ21hcCcsXG4gICAgICAgICAgZnJvbTogJ1ByeVJlc3RpdHV0aW9uQ29tcG9uZW50LnN1Ym1pdCgpJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcbiAgICB0aGlzLmdvTmV4dChzdGVwcGVyKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub3BlblNldHRpbmdzJC5uZXh0KCk7XG4gICAgfSwgMTUwKTtcbiAgfVxuXG4gIGdvTmV4dChzdGVwcGVyOiBQcnlTdGVwcGVyQ29tcG9uZW50LCBzdWJtaXQ/OiBib29sZWFuKSB7XG4gICAgc3VibWl0ID8gdGhpcy5zdWJtaXQoc3RlcHBlcikgOiBzdGVwcGVyLm5leHQoKTtcbiAgfVxuXG4gIHByZXYoc3RlcHBlcjogUHJ5U3RlcHBlckNvbXBvbmVudCkge1xuICAgIHN0ZXBwZXIucHJldigpO1xuICB9XG5cbiAgdXBkYXRlTWFuaWZlc3QoJGV2ZW50OiB7IHdpZGdldEluZGV4OiBudW1iZXI7IG1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdCB9KSB7XG4gICAgdGhpcy5jdXN0b21NYW5pZmVzdCA9ICRldmVudC5tYW5pZmVzdDtcbiAgfVxuXG4gIGxhc3RTdGVwQ29tcGxldGVkKCkge1xuICAgIHRoaXMuZm9ybS5pbWFnZSA9IHRoaXMuaW1hZ2U7XG4gICAgaWYgKCF0aGlzLmNvbnN1bHRNb2RlKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBDb25maWdBY3Rpb25zLnNhdmVXaWRnZXQoe1xuICAgICAgICAgIHdpZGdldDoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbj8uaWQgPz8gdjQoKSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHRoaXMuY3VzdG9tTWFuaWZlc3QpLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5mb3JtLnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmZvcm0uaW1hZ2UgPz8gJycsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB0aGlzLnZpc2liaWxpdHksXG4gICAgICAgICAgICBkYXRhc291cmNlOiB0aGlzLmZvcm0uc2VsZWN0ZWREYXRhU291cmNlcyA/PyBbXSxcbiAgICAgICAgICAgIG1vZGlmaWNhdGlvbkRhdGU6ICcnXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmxvYWRXaWRnZXRzKCkpO1xuICAgIHRoaXMucmVzdGl0dXRpb25DcmVhdGVkLmVtaXQoKTtcbiAgfVxufVxuIiwiPHByeS1yZXN0aXR1dGlvbi1jc3M+PC9wcnktcmVzdGl0dXRpb24tY3NzPlxuPGRpdiBjbGFzcz1cIm8tcmVzdGl0dXRpb25cIj5cbiAgPGgzIGNsYXNzPVwiYS1oMiBvLXJlc3RpdHV0aW9uX190aXRsZVwiPlxuICAgIHt7IChjb25zdWx0TW9kZSA/ICdAcHJ5LnJlc3RpdHV0aW9uLmNvbnN1bHQnIDogZWRpdCA/ICdAcHJ5LnJlc3RpdHV0aW9uLmVkaXQnIDogJ0BwcnkucmVzdGl0dXRpb24uY3JlYXRlJykgfCBpMThuIH19XG4gIDwvaDM+XG4gIDxwcnktc3RlcHBlciAjc3RlcHBlciBbaXNDb25zdWx0TW9kZV09XCJjb25zdWx0TW9kZVwiIChsYXN0U3RlcENvbXBsZXRlZCk9XCJsYXN0U3RlcENvbXBsZXRlZCgpXCIgKGFjdGl2ZUluZGV4Q2hhbmdlKT1cImFjdGl2ZVN0ZXBJbmRleCA9ICRldmVudFwiPlxuICAgIDxwcnktc3RlcD5cbiAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24uY29uZmlndXJlJyB8IGkxOG4gfX08L2g0PlxuICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwicmVzdGl0dXRpb25cIiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5yZXN0aXR1dGlvbi5yZXN0aXR1dGlvbl90eXBlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgIGlkPVwicmVzdGl0dXRpb25cIlxuICAgICAgICAgIFtpdGVtc109XCJ0eXBlcyQgfCBhc3luY1wiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtLnNlbGVjdGVkV2lkZ2V0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uc3VsdE1vZGVcIlxuICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxuICAgICAgICAgIGJpbmRJY29uPVwiaWNvblwiXG4gICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgIGJpbmRWYWx1ZT1cInR5cGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvcHJ5LXNlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm0uc2VsZWN0ZWRXaWRnZXQgIT09ICcnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3JhcGhUaXRsZVwiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLmdyYXBoX3RpdGxlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbmFtZT1cInRpdGxlXCJcbiAgICAgICAgICAgIGlkPVwiZ3JhcGhUaXRsZVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm0udGl0bGVcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbnN1bHRNb2RlXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjMwXCJcbiAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNjcmlwdGlvblwiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGlkPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIHN0eWxlPVwicmVzaXplOiBub25lXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25zdWx0TW9kZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTVcIlxuICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgID5cbiAgICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5pbWFnZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1maWxlLWlucHV0XCI+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdC1pbWFnZSAoY2hhbmdlZCk9XCJpbWFnZSA9ICRldmVudFwiIFtpY29uVXJsXT1cImltYWdlXCIgW21vZGVdPVwidHlwZVwiPjwvcHJ5LXNlbGVjdC1pbWFnZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cCAtc3BhY2UtZXZlbmx5IGFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjYW5jZWwoc3RlcHBlcilcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICB7eyAnQHByeS5yZXN0aXR1dGlvbi5jbG9zZScgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dChzdGVwcGVyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5zZWxlY3RlZFdpZGdldCA9PT0gJycgfHwgZm9ybS50aXRsZS50cmltKCkubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3ByeS1zdGVwPlxuICAgIDxwcnktc3RlcD5cbiAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24uZGF0YVNvdXJjZScgfCBpMThuIH19PC9oND5cbiAgICAgIDxwcnktZGF0YXNvdXJjZS1zZWxlY3RvclxuICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICB0cmFuc2xhdGlvblN0cmluZ0Jhc2U9XCJAcHJ5LmNvbXBvbmVudHMuY2hpcHNTZWxlY3Rvci5kYXRhc291cmNlLlwiXG4gICAgICAgIChpdGVtc0NoYW5nZWQpPVwiZGF0YXNvdXJjZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbdXNlZEl0ZW1zXT1cIih1c2VkRGF0YXNvdXJjZXMkIHwgYXN5bmMpID8/IFtdXCJcbiAgICAgICAgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCJcbiAgICAgID48L3ByeS1kYXRhc291cmNlLXNlbGVjdG9yPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25zXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc3VibWl0OiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3ByeS1zdGVwPlxuICAgIDxwcnktc3RlcD5cbiAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24udmlzdWFsaXplJyB8IGkxOG4gfX08L2g0PlxuICAgICAgPGRpdiBjbGFzcz1cIndpZGdldC1pbnN0YW5jaWF0b3JcIj5cbiAgICAgICAgPHByeS13aWRnZXQtaW5zdGFuY2lhdG9yXG4gICAgICAgICAgW3N0YW5kYWxvbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW3N0YXRpY01hbmlmZXN0XT1cImN1c3RvbU1hbmlmZXN0XCJcbiAgICAgICAgICBbb3BlbiRdPVwib3BlblNldHRpbmdzJFwiXG4gICAgICAgICAgKG1hbmlmZXN0TW9kaWZpZWQpPVwidXBkYXRlTWFuaWZlc3QoJGV2ZW50KVwiXG4gICAgICAgID48L3ByeS13aWRnZXQtaW5zdGFuY2lhdG9yPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3ByeS1zdGVwPlxuICAgIDxwcnktc3RlcD5cbiAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24uc2hhcmUnIHwgaTE4biB9fTwvaDQ+XG4gICAgICA8aDM+e3sgJ0BwcnkucmVzdGl0dXRpb24uYWNjZXNzJyB8IGkxOG4gfX08L2gzPlxuICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24uY2hvaWNlJyB8IGkxOG4gfX1cbiAgICAgIDx1bD5cbiAgICAgICAgPGxpPlxuICAgICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLnB1YmxpYycgfCBpMThuIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24ub3InIHwgaTE4biB9fVxuICAgICAgPHVsPlxuICAgICAgICA8bGk+XG4gICAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24ucHJpdmF0ZScgfCBpMThuIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPHByeS1zaGFyZVxuICAgICAgICBbKG5nTW9kZWwpXT1cInZpc2liaWxpdHlcIlxuICAgICAgICBbdXNlcnMkXT1cInVzZXJzJFwiXG4gICAgICAgIGxhYmVsUHJvcGVydHk9XCJuYW1lXCJcbiAgICAgICAgdmFsdWVQcm9wZXJ0eT1cImlkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbnN1bHRNb2RlXCJcbiAgICAgID48L3ByeS1zaGFyZT5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvcHJ5LXN0ZXA+XG4gIDwvcHJ5LXN0ZXBwZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zIGxldC1zdWJtaXQ9XCJzdWJtaXRcIj5cbiAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIC1zcGFjZS1ldmVubHkgYWN0aW9uc1wiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cInByZXYoc3RlcHBlcilcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICB7eyAoY29uc3VsdE1vZGUgPyAnQHByeS5yZXN0aXR1dGlvbi5nb0JhY2snIDogJ0BwcnkucmVzdGl0dXRpb24uY2xvc2UnKSB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJnb05leHQoc3RlcHBlciwgc3VibWl0KVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICB7eyAoYWN0aXZlU3RlcEluZGV4ID09PSAzID8gJ0BwcnkucmVzdGl0dXRpb24uc2hhcmUnIDogJ0BwcnkucmVzdGl0dXRpb24ubmV4dCcpIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGl0dXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvcmVzdGl0dXRpb24vY29tcG9uZW50cy9yZXN0aXR1dGlvbi9yZXN0aXR1dGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uL3Jlc3RpdHV0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUdMLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLGdCQUFnQixFQUVoQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixhQUFhLEVBQ2Isd0JBQXdCLEVBR3hCLFFBQVEsRUFHVCxNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTzFCLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx3QkFBd0I7SUE4Qm5FLFlBQ1Usc0JBQThDLEVBQzlDLEtBQVksRUFDWixrQkFBc0M7UUFFOUMsS0FBSyxFQUFFLENBQUM7UUFKQSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBOUJoRCxtQkFBYyxHQUFtQjtZQUMvQixJQUFJLEVBQUUsUUFBUTtZQUNk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QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUU7b0JBQy9DLGdCQUFnQixFQUFFLEVBQUU7aUJBQ3JCO2FBQ0YsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBaE5VLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDJRQ2pDcEMsNnJLQWtJQTs7MkZEakdhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSxpQkFBaUI7Z0pBcUJsQixtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHRSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBDYXRhbG9nRW50cnksXG4gIENsYXNzLFxuICBDbGFzc0FjdGlvbnMsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBDb25maWdBY3Rpb25zLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXRhU291cmNlLFxuICBEYXRhU291cmNlQWN0aW9ucyxcbiAgRGF0YVNvdXJjZVNlbGVjdG9ycyxcbiAgREVGQVVMVF9SRVNUSVRVVElPTl9JQ09OX1VSTCxcbiAgRmllbGRBY3Rpb25zLFxuICBnZXREaXNwbGF5T3B0aW9ucyxcbiAgTGlicmFyeVR5cGVzLFxuICBTZWFyY2hBY3Rpb25zLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFRvb2xib3hNYW5pZmVzdFNlcnZpY2UsXG4gIFRvb2xib3hNZW51U2VydmljZSxcbiAgVmlld01vZGUsXG4gIFdpZGdldCxcbiAgV2lkZ2V0TWFuaWZlc3Rcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IFByeVN0ZXBwZXJDb21wb25lbnQgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9zdGVwcGVyJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFJlc3RpdHV0aW9uRm9ybSB9IGZyb20gJy4uLy4uL21vZGVsL3Jlc3RpdHV0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXJlc3RpdHV0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3RpdHV0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlSZXN0aXR1dGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHR5cGVzJDogT2JzZXJ2YWJsZTx7IGljb246IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBtYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3QgfVtdPjtcbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIGN1c3RvbU1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdCA9IHtcbiAgICB0eXBlOiAnZGV0YWlsJyxcbiAgICBsYXlvdXQ6IHsgeDogMSwgeTogMSwgd2lkdGg6IDEsIGhlaWdodDogMSB9LFxuICAgIG9wdGlvbnM6IHsgaXRlbUlkczogW10gYXMgc3RyaW5nW10gfVxuICB9O1xuICBmb3JtOiBSZXN0aXR1dGlvbkZvcm0gPSB7XG4gICAgc2VsZWN0ZWRXaWRnZXQ6ICcnLFxuICAgIHNlbGVjdGVkRGF0YVNvdXJjZXM6IFtdLFxuICAgIHRpdGxlOiAnJyxcbiAgICBpbWFnZTogREVGQVVMVF9SRVNUSVRVVElPTl9JQ09OX1VSTCxcbiAgICBkZXNjcmlwdGlvbjogJydcbiAgfTtcbiAgZ3JvdXBzOiBzdHJpbmdbXSA9IFtdO1xuICBvcGVuU2V0dGluZ3MkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29uc3VsdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRSZXN0aXR1dGlvbjogV2lkZ2V0IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW4gPSB0cnVlO1xuICBAT3V0cHV0KCkgcmVzdGl0dXRpb25DcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICB3aWRnZXRzTGlzdCQ6IE9ic2VydmFibGU8Q2F0YWxvZ0VudHJ5W10+O1xuICB0eXBlOiBMaWJyYXJ5VHlwZXMgPSBMaWJyYXJ5VHlwZXMuSUxMVVNUUkFUSU9OO1xuICBASW5wdXQoKSBpc0RhdGFTb3VyY2VTZWxlY3RlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBiaW5kSWQ6IGFueTtcbiAgaW1hZ2U6IHN0cmluZyA9IERFRkFVTFRfUkVTVElUVVRJT05fSUNPTl9VUkw7XG4gIHdpZGdldFR5cGVzOiB7IGljb246IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBtYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3QgfVtdID0gW107XG4gIHVzZWREYXRhc291cmNlcyQ6IE9ic2VydmFibGU8RGF0YVNvdXJjZVtdPjtcbiAgYWN0aXZlU3RlcEluZGV4ID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRvb2xib3hNYW5pZmVzdFNlcnZpY2U6IFRvb2xib3hNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSB0b29sYm94TWVudVNlcnZpY2U6IFRvb2xib3hNZW51U2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsYXNzQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5sb2FkQ3VzdG9taXphdGlvbigpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEZpZWxkQWN0aW9ucy5sb2FkKCkpO1xuXG4gICAgdGhpcy50eXBlcyQgPSB0aGlzLnRvb2xib3hNZW51U2VydmljZS50eXBlcyQucGlwZShcbiAgICAgIG1hcCgodHlwZSkgPT4gdHlwZS5maWx0ZXIoKGZpbHRlcmVkVHlwZSkgPT4gZmlsdGVyZWRUeXBlLnR5cGUgIT09ICdkZXRhaWwnKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy50eXBlcyQuc3Vic2NyaWJlKCh0eXBlcykgPT4gKHRoaXMud2lkZ2V0VHlwZXMgPSB0eXBlcykpKTtcbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG4gICAgdGhpcy53aWRnZXRzTGlzdCQgPSB0aGlzLnRvb2xib3hNZW51U2VydmljZS5tZW51U3RydWN0dXJlJC5waXBlKFxuICAgICAgbWFwKChtZW51KSA9PlxuICAgICAgICBtZW51XG4gICAgICAgICAgLm1hcCgoaXRlbXMpID0+IFsuLi5pdGVtcy5zdWIuZmlsdGVyKChzKSA9PiB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuaXNNb2RlbChzLnR5cGUpKV0pXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBpdGVtcykgPT4gWy4uLmFjYywgLi4uaXRlbXNdLCBbXSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMudXNlZERhdGFzb3VyY2VzJCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5nZXREYXRhU291cmNlc1NvcnRlZClcbiAgICAgIC5waXBlKG1hcCgoYWxsRHNzKSA9PiBhbGxEc3MuZmlsdGVyKChkYXRhc291cmNlKSA9PiB0aGlzLmZvcm0uc2VsZWN0ZWREYXRhU291cmNlcy5pbmNsdWRlcyhkYXRhc291cmNlLmlkKSkpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24pIHtcbiAgICAgIGlmICghdGhpcy5lZGl0KSB7XG4gICAgICAgIHRoaXMuY29uc3VsdE1vZGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoeyBtb2RlOiBWaWV3TW9kZS5DT05TVUxUIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7XG4gICAgICAgICAgICBtb2RlOiBWaWV3TW9kZS5DVVNUT00sXG4gICAgICAgICAgICBjdXN0b21EaXNwbGF5OiB7XG4gICAgICAgICAgICAgIC4uLmdldERpc3BsYXlPcHRpb25zKFZpZXdNb2RlLkVESVRJT04pLFxuICAgICAgICAgICAgICB3aWRnZXRDb250ZXh0TWVudToge1xuICAgICAgICAgICAgICAgIGRhdGFzb3VyY2VTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHRydWUsXG4gICAgICAgICAgICAgICAgd2luZG93OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtYXhpbWl6ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgYWRkVG9DYXRhbG9nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZWxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNoYW5nZVNwb3Q6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXN0b21NYW5pZmVzdCA9IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uLmNvbnRlbnQpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5jdXN0b21NYW5pZmVzdC5kYXRhc291cmNlKSkge1xuICAgICAgICB0aGlzLmN1c3RvbU1hbmlmZXN0LmRhdGFzb3VyY2UuZm9yRWFjaCgoZGF0YVNvdXJjZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICAgICAgaWQ6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVHZW86IHRoaXMuY3VzdG9tTWFuaWZlc3QudHlwZSA9PT0gJ21hcCcsXG4gICAgICAgICAgICAgIGZyb206ICdQcnlSZXN0aXR1dGlvbkNvbXBvbmVudC5uZ09uSW5pdCgpLTEnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7XG4gICAgICAgICAgICBpZDogdGhpcy5jdXN0b21NYW5pZmVzdC5kYXRhc291cmNlIGFzIHN0cmluZyxcbiAgICAgICAgICAgIGV4Y2x1ZGVHZW86IHRoaXMuY3VzdG9tTWFuaWZlc3QudHlwZSA9PT0gJ21hcCcsXG4gICAgICAgICAgICBmcm9tOiAnUHJ5UmVzdGl0dXRpb25Db21wb25lbnQubmdPbkluaXQoKS0yJ1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uLmdyb3Vwcykge1xuICAgICAgICB0aGlzLmdyb3VwcyA9IHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbi5ncm91cHM7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm0uc2VsZWN0ZWREYXRhU291cmNlcy5mb3JFYWNoKChkYXRhU291cmNlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7XG4gICAgICAgICAgICBpZDogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVHZW86IHRoaXMuY3VzdG9tTWFuaWZlc3QudHlwZSA9PT0gJ21hcCcsXG4gICAgICAgICAgICBmcm9tOiAnUHJ5UmVzdGl0dXRpb25Db21wb25lbnQubmdPbkluaXQoKS0zJ1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY3VzdG9tTWFuaWZlc3QgPSBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbi5jb250ZW50KTtcbiAgICAgIHRoaXMuZm9ybSA9IHtcbiAgICAgICAgc2VsZWN0ZWRXaWRnZXQ6IHRoaXMuY3VzdG9tTWFuaWZlc3QudHlwZSxcbiAgICAgICAgc2VsZWN0ZWREYXRhU291cmNlczogKHRoaXMuY3VzdG9tTWFuaWZlc3QuZGF0YXNvdXJjZSA/PyBbXSkgYXMgc3RyaW5nW10sXG4gICAgICAgIHRpdGxlOiB0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24ubmFtZSxcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uPy5pbWFnZSA/PyBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMO1xuICB9XG5cbiAgY2FuY2VsKHN0ZXBwZXI6IFByeVN0ZXBwZXJDb21wb25lbnQpIHtcbiAgICB0aGlzLmZvcm0uc2VsZWN0ZWRXaWRnZXQgPSAnJztcbiAgICB0aGlzLmZvcm0uc2VsZWN0ZWREYXRhU291cmNlcyA9IFtdO1xuICAgIHRoaXMuZm9ybS50aXRsZSA9ICcnO1xuICAgIHRoaXMuZm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xuICAgIHRoaXMuZm9ybS5pbWFnZSA9ICcnO1xuICAgIGlmICh0aGlzLmNvbnN1bHRNb2RlIHx8IHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbikge1xuICAgICAgdGhpcy5yZXN0aXR1dGlvbkNyZWF0ZWQuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByZXYoc3RlcHBlcik7XG4gIH1cblxuICBkYXRhc291cmNlc0NoYW5nZWQoJGV2ZW50OiBEYXRhU291cmNlW10pIHtcbiAgICB0aGlzLmZvcm0uc2VsZWN0ZWREYXRhU291cmNlcyA9ICgkZXZlbnQgPz8gW10pLm1hcCgoZHMpID0+IGRzLmlkKTtcbiAgfVxuXG4gIHN1Ym1pdChzdGVwcGVyOiBQcnlTdGVwcGVyQ29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMuY29uc3VsdE1vZGUpIHtcbiAgICAgIHRoaXMuZ29OZXh0KHN0ZXBwZXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHdpZGdldFR5cGUgPSB0aGlzLndpZGdldFR5cGVzLmZpbmQoKHdpZGdldFR5cGUpID0+IHdpZGdldFR5cGUudHlwZSA9PT0gdGhpcy5mb3JtLnNlbGVjdGVkV2lkZ2V0KTtcblxuICAgIHRoaXMuY3VzdG9tTWFuaWZlc3QgPSB7XG4gICAgICAuLi50aGlzLmN1c3RvbU1hbmlmZXN0LFxuICAgICAgdHlwZTogdGhpcy5mb3JtLnNlbGVjdGVkV2lkZ2V0LFxuICAgICAgdGl0bGU6IHRoaXMuZm9ybS50aXRsZSxcbiAgICAgIGRhdGFzb3VyY2U6IHRoaXMuZm9ybS5zZWxlY3RlZERhdGFTb3VyY2VzID8/IFtdLFxuICAgICAgaGVhZGVyOiB0cnVlLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICAuLi53aWRnZXRUeXBlPy5tYW5pZmVzdC5vcHRpb25zLFxuICAgICAgICB0aXRsZTogdGhpcy5mb3JtLnRpdGxlXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmZvcm0uc2VsZWN0ZWREYXRhU291cmNlcy5mb3JFYWNoKChuYW1lUXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgIGlkOiBuYW1lUXVlcnksXG4gICAgICAgICAgZXhjbHVkZUdlbzogdGhpcy5jdXN0b21NYW5pZmVzdC50eXBlID09PSAnbWFwJyxcbiAgICAgICAgICBmcm9tOiAnUHJ5UmVzdGl0dXRpb25Db21wb25lbnQuc3VibWl0KCknXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICAgIHRoaXMuZ29OZXh0KHN0ZXBwZXIpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vcGVuU2V0dGluZ3MkLm5leHQoKTtcbiAgICB9LCAxNTApO1xuICB9XG5cbiAgZ29OZXh0KHN0ZXBwZXI6IFByeVN0ZXBwZXJDb21wb25lbnQsIHN1Ym1pdD86IGJvb2xlYW4pIHtcbiAgICBzdWJtaXQgPyB0aGlzLnN1Ym1pdChzdGVwcGVyKSA6IHN0ZXBwZXIubmV4dCgpO1xuICB9XG5cbiAgcHJldihzdGVwcGVyOiBQcnlTdGVwcGVyQ29tcG9uZW50KSB7XG4gICAgc3RlcHBlci5wcmV2KCk7XG4gIH1cblxuICB1cGRhdGVNYW5pZmVzdCgkZXZlbnQ6IHsgd2lkZ2V0SW5kZXg6IG51bWJlcjsgbWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IH0pIHtcbiAgICB0aGlzLmN1c3RvbU1hbmlmZXN0ID0gJGV2ZW50Lm1hbmlmZXN0O1xuICB9XG5cbiAgbGFzdFN0ZXBDb21wbGV0ZWQoKSB7XG4gICAgdGhpcy5mb3JtLmltYWdlID0gdGhpcy5pbWFnZTtcbiAgICBpZiAoIXRoaXMuY29uc3VsdE1vZGUpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIENvbmZpZ0FjdGlvbnMuc2F2ZVdpZGdldCh7XG4gICAgICAgICAgd2lkZ2V0OiB7XG4gICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uPy5pZCA/PyB2NCgpLFxuICAgICAgICAgICAgY29udGVudDogSlNPTi5zdHJpbmdpZnkodGhpcy5jdXN0b21NYW5pZmVzdCksXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmZvcm0udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5mb3JtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZm9ybS5pbWFnZSA/PyAnJyxcbiAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncm91cHMsXG4gICAgICAgICAgICBkYXRhc291cmNlOiB0aGlzLmZvcm0uc2VsZWN0ZWREYXRhU291cmNlcyA/PyBbXSxcbiAgICAgICAgICAgIG1vZGlmaWNhdGlvbkRhdGU6ICcnXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmxvYWRXaWRnZXRzKCkpO1xuICAgIHRoaXMucmVzdGl0dXRpb25DcmVhdGVkLmVtaXQoKTtcbiAgfVxufVxuIiwiPHByeS1yZXN0aXR1dGlvbi1jc3M+PC9wcnktcmVzdGl0dXRpb24tY3NzPlxuPGRpdiBjbGFzcz1cIm8tcmVzdGl0dXRpb25cIj5cbiAgPGgzIGNsYXNzPVwiYS1oMiBvLXJlc3RpdHV0aW9uX190aXRsZVwiPlxuICAgIHt7IChjb25zdWx0TW9kZSA/ICdAcHJ5LnJlc3RpdHV0aW9uLmNvbnN1bHQnIDogZWRpdCA/ICdAcHJ5LnJlc3RpdHV0aW9uLmVkaXQnIDogJ0BwcnkucmVzdGl0dXRpb24uY3JlYXRlJykgfCBpMThuIH19XG4gIDwvaDM+XG4gIDxwcnktc3RlcHBlclxuICAgICNzdGVwcGVyXG4gICAgW2lzQ29uc3VsdE1vZGVdPVwiY29uc3VsdE1vZGVcIlxuICAgIChsYXN0U3RlcENvbXBsZXRlZCk9XCJsYXN0U3RlcENvbXBsZXRlZCgpXCJcbiAgICAoYWN0aXZlSW5kZXhDaGFuZ2UpPVwiYWN0aXZlU3RlcEluZGV4ID0gJGV2ZW50XCJcbiAgPlxuICAgIDxwcnktc3RlcD5cbiAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24uY29uZmlndXJlJyB8IGkxOG4gfX08L2g0PlxuICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwicmVzdGl0dXRpb25cIiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5yZXN0aXR1dGlvbi5yZXN0aXR1dGlvbl90eXBlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgIGlkPVwicmVzdGl0dXRpb25cIlxuICAgICAgICAgIFtpdGVtc109XCJ0eXBlcyQgfCBhc3luY1wiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtLnNlbGVjdGVkV2lkZ2V0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uc3VsdE1vZGVcIlxuICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxuICAgICAgICAgIGJpbmRJY29uPVwiaWNvblwiXG4gICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgIGJpbmRWYWx1ZT1cInR5cGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvcHJ5LXNlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm0uc2VsZWN0ZWRXaWRnZXQgIT09ICcnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3JhcGhUaXRsZVwiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLmdyYXBoX3RpdGxlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbmFtZT1cInRpdGxlXCJcbiAgICAgICAgICAgIGlkPVwiZ3JhcGhUaXRsZVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm0udGl0bGVcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbnN1bHRNb2RlXCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjMwXCJcbiAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNjcmlwdGlvblwiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGlkPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIHN0eWxlPVwicmVzaXplOiBub25lXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25zdWx0TW9kZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTVcIlxuICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgID5cbiAgICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5pbWFnZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1maWxlLWlucHV0XCI+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdC1pbWFnZSAoY2hhbmdlZCk9XCJpbWFnZSA9ICRldmVudFwiIFtpY29uVXJsXT1cImltYWdlXCIgW21vZGVdPVwidHlwZVwiPjwvcHJ5LXNlbGVjdC1pbWFnZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cCAtc3BhY2UtZXZlbmx5IGFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjYW5jZWwoc3RlcHBlcilcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICB7eyAnQHByeS5yZXN0aXR1dGlvbi5jbG9zZScgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dChzdGVwcGVyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5zZWxlY3RlZFdpZGdldCA9PT0gJycgfHwgZm9ybS50aXRsZS50cmltKCkubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3ByeS1zdGVwPlxuICAgIDxwcnktc3RlcD5cbiAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24uZGF0YVNvdXJjZScgfCBpMThuIH19PC9oND5cbiAgICAgIDxwcnktZGF0YXNvdXJjZS1zZWxlY3RvclxuICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICB0cmFuc2xhdGlvblN0cmluZ0Jhc2U9XCJAcHJ5LmNvbXBvbmVudHMuY2hpcHNTZWxlY3Rvci5kYXRhc291cmNlLlwiXG4gICAgICAgIChpdGVtc0NoYW5nZWQpPVwiZGF0YXNvdXJjZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbdXNlZEl0ZW1zXT1cIih1c2VkRGF0YXNvdXJjZXMkIHwgYXN5bmMpID8/IFtdXCJcbiAgICAgICAgW3Nob3dBY3Rpb25CdXR0b25zXT1cImZhbHNlXCJcbiAgICAgID48L3ByeS1kYXRhc291cmNlLXNlbGVjdG9yPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25zXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc3VibWl0OiB0cnVlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3ByeS1zdGVwPlxuICAgIDxwcnktc3RlcD5cbiAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24udmlzdWFsaXplJyB8IGkxOG4gfX08L2g0PlxuICAgICAgPGRpdiBjbGFzcz1cIndpZGdldC1pbnN0YW5jaWF0b3JcIj5cbiAgICAgICAgPHByeS13aWRnZXQtaW5zdGFuY2lhdG9yXG4gICAgICAgICAgW3N0YW5kYWxvbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW3N0YXRpY01hbmlmZXN0XT1cImN1c3RvbU1hbmlmZXN0XCJcbiAgICAgICAgICBbb3BlbiRdPVwib3BlblNldHRpbmdzJFwiXG4gICAgICAgICAgKG1hbmlmZXN0TW9kaWZpZWQpPVwidXBkYXRlTWFuaWZlc3QoJGV2ZW50KVwiXG4gICAgICAgID48L3ByeS13aWRnZXQtaW5zdGFuY2lhdG9yPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3ByeS1zdGVwPlxuICAgIDxwcnktc3RlcD5cbiAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24uc2hhcmUnIHwgaTE4biB9fTwvaDQ+XG4gICAgICA8aDM+e3sgJ0BwcnkucmVzdGl0dXRpb24uYWNjZXNzJyB8IGkxOG4gfX08L2gzPlxuICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24uY2hvaWNlJyB8IGkxOG4gfX1cbiAgICAgIDx1bD5cbiAgICAgICAgPGxpPlxuICAgICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLnB1YmxpYycgfCBpMThuIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24ub3InIHwgaTE4biB9fVxuICAgICAgPHVsPlxuICAgICAgICA8bGk+XG4gICAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24ucHJpdmF0ZScgfCBpMThuIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPHByeS1zaGFyZSBbKG5nTW9kZWwpXT1cImdyb3Vwc1wiIGxhYmVsUHJvcGVydHk9XCJuYW1lXCIgdmFsdWVQcm9wZXJ0eT1cImlkXCIgW2Rpc2FibGVkXT1cImNvbnN1bHRNb2RlXCI+PC9wcnktc2hhcmU+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3ByeS1zdGVwPlxuICA8L3ByeS1zdGVwcGVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9ucyBsZXQtc3VibWl0PVwic3VibWl0XCI+XG4gIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cCAtc3BhY2UtZXZlbmx5IGFjdGlvbnNcIj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJwcmV2KHN0ZXBwZXIpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPlxuICAgICAge3sgKGNvbnN1bHRNb2RlID8gJ0BwcnkucmVzdGl0dXRpb24uZ29CYWNrJyA6ICdAcHJ5LnJlc3RpdHV0aW9uLmNsb3NlJykgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29OZXh0KHN0ZXBwZXIsIHN1Ym1pdClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiPlxuICAgICAge3sgKGFjdGl2ZVN0ZXBJbmRleCA9PT0gMyA/ICdAcHJ5LnJlc3RpdHV0aW9uLnNoYXJlJyA6ICdAcHJ5LnJlc3RpdHV0aW9uLm5leHQnKSB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|