@energycap/components 0.32.1 → 0.32.2-ECAP-12612-Tour-Component-and-Service.20220923-1105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components.module.mjs +10 -5
- package/esm2020/lib/display/tour/tour-types.mjs +34 -0
- package/esm2020/lib/display/tour/tour.component.mjs +346 -0
- package/esm2020/lib/display/tour/tour.service.mjs +32 -0
- package/esm2020/public-api.mjs +4 -1
- package/fesm2015/energycap-components.mjs +474 -62
- package/fesm2015/energycap-components.mjs.map +1 -1
- package/fesm2020/energycap-components.mjs +461 -62
- package/fesm2020/energycap-components.mjs.map +1 -1
- package/lib/components.module.d.ts +8 -7
- package/lib/display/tour/tour-types.d.ts +64 -0
- package/lib/display/tour/tour.component.d.ts +125 -0
- package/lib/display/tour/tour.service.d.ts +17 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/src/assets/locales/en_US.json +3 -1
|
@@ -69,6 +69,7 @@ import { ItemPickerComponent } from './controls/item-picker/item-picker.componen
|
|
|
69
69
|
import { HelpPopoverComponent } from './controls/help-popover/help-popover.component';
|
|
70
70
|
import { LinkButtonComponent } from './controls/link-button/link-button.component';
|
|
71
71
|
import { TooltipComponent } from './display/tooltip/tooltip.component';
|
|
72
|
+
import { TourComponent } from './display/tour/tour.component';
|
|
72
73
|
import * as i0 from "@angular/core";
|
|
73
74
|
export class ComponentsModule {
|
|
74
75
|
/**
|
|
@@ -150,7 +151,8 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
150
151
|
ItemPickerComponent,
|
|
151
152
|
HelpPopoverComponent,
|
|
152
153
|
LinkButtonComponent,
|
|
153
|
-
TooltipComponent
|
|
154
|
+
TooltipComponent,
|
|
155
|
+
TourComponent], imports: [CommonModule,
|
|
154
156
|
FormsModule,
|
|
155
157
|
ReactiveFormsModule,
|
|
156
158
|
RouterModule,
|
|
@@ -214,7 +216,8 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
214
216
|
ItemPickerComponent,
|
|
215
217
|
HelpPopoverComponent,
|
|
216
218
|
LinkButtonComponent,
|
|
217
|
-
TooltipComponent
|
|
219
|
+
TooltipComponent,
|
|
220
|
+
TourComponent] });
|
|
218
221
|
ComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ComponentsModule, providers: [
|
|
219
222
|
FormGroupHelper,
|
|
220
223
|
DialogService,
|
|
@@ -299,7 +302,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
299
302
|
ItemPickerComponent,
|
|
300
303
|
HelpPopoverComponent,
|
|
301
304
|
LinkButtonComponent,
|
|
302
|
-
TooltipComponent
|
|
305
|
+
TooltipComponent,
|
|
306
|
+
TourComponent
|
|
303
307
|
],
|
|
304
308
|
imports: [
|
|
305
309
|
CommonModule,
|
|
@@ -379,8 +383,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
379
383
|
ItemPickerComponent,
|
|
380
384
|
HelpPopoverComponent,
|
|
381
385
|
LinkButtonComponent,
|
|
382
|
-
TooltipComponent
|
|
386
|
+
TooltipComponent,
|
|
387
|
+
TourComponent
|
|
383
388
|
]
|
|
384
389
|
}]
|
|
385
390
|
}] });
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFB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QixnQkFBZ0I7cUJBQ2pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9iYW5uZXIvYmFubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3B5QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9scy9idXR0b24vY29weS1idXR0b24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbGxhcHNpYmxlVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9jb2xsYXBzaWJsZS10b2dnbGUvY29sbGFwc2libGUtdG9nZ2xlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbWJvYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdkl0ZW1BY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWl0ZW0tYWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE51bWVyaWNib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL251bWVyaWNib3gvbnVtZXJpY2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYnNDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3RhYnMvdGFicy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L2FwcC1iYXIvYXBwLWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9kaWFsb2cvZGlhbG9nLWdyb3VwL2RpYWxvZy1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpZXJhcmNoeVRyZWVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvaGllcmFyY2h5L2hpZXJhcmNoeS10cmVlL2hpZXJhcmNoeS10cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEl0ZW1EaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L2l0ZW0tZGlzcGxheS9pdGVtLWRpc3BsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSnNvbkRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvanNvbi1kaXNwbGF5L2pzb24tZGlzcGxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGxhc2hDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvc3BsYXNoL3NwbGFzaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVUYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlzcGxheS90YWJsZS9yZXNpemFibGUtdGFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2VhcmNoYWJsZVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3NlYXJjaGFibGUtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVEZXRhaWxSb3dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtZGV0YWlsLXJvdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUxvY2tlZENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90YWJsZS90YWJsZS1sb2NrZWQtY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlTWFzdGVySGVhZGVyUm93Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLW1hc3Rlci1oZWFkZXItcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlTWFzdGVyUm93Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLW1hc3Rlci1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhZ3NDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFncy90YWdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RvYXN0L3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0ZXJDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdG9hc3QvdG9hc3Rlci90b2FzdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdHJlZS90cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZXdPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpY2tBcmVhRm9yRGlyZWN0aXZlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aXZlcy9jbGljay1hcmVhLWZvci9jbGljay1hcmVhLWZvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJZlZpZXdwb3J0V2lkdGhEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL2lmLXZpZXdwb3J0LXdpZHRoL2lmLXZpZXdwb3J0LXdpZHRoLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aXZlcy9wb3B1cC9wb3B1cC1jb250YWluZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRGF0ZURpc3BsYXlQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy9kYXRlLWRpc3BsYXkucGlwZSc7XHJcbmltcG9ydCB7IEhpZ2hsaWdodFRleHRQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy9oaWdobGlnaHQtdGV4dC5waXBlJztcclxuaW1wb3J0IHsgUmVsYXRpdmVEYXRlUGlwZSB9IGZyb20gJy4vc2hhcmVkL2Rpc3BsYXkvcGlwZXMvcmVsYXRpdmUtZGF0ZS5waXBlJztcclxuaW1wb3J0IHsgUm93Q291bnRQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy9yb3ctY291bnQucGlwZSc7XHJcbmltcG9ydCB7IFRpbWVEaXNwbGF5UGlwZSB9IGZyb20gJy4vc2hhcmVkL2Rpc3BsYXkvcGlwZXMvdGltZS1kaXNwbGF5LnBpcGUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBIZWxwZXIgfSBmcm9tICcuL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XHJcbmltcG9ydCB7IFBhZ2VUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL3BhZ2UvcGFnZS10aXRsZS9wYWdlLXRpdGxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9zaGFyZWQvcGFnZS9wYWdlLXZpZXcvcGFnZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1vY2tEYXRlRGlzcGxheVBpcGUgfSBmcm9tICcuL3NoYXJlZC90ZXN0aW5nL3B1YmxpYy1tb2Nrcy5zcGVjJztcclxuaW1wb3J0IHsgV2l6YXJkQnV0dG9uc0NvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL3dpemFyZC93aXphcmQtYnV0dG9ucy93aXphcmQtYnV0dG9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXaXphcmRQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL3dpemFyZC93aXphcmQtcHJvZ3Jlc3Mvd2l6YXJkLXByb2dyZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2Zvcm0tY29udHJvbC1sYWJlbC9mb3JtLWNvbnRyb2wtbGFiZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSXRlbVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvaXRlbS1waWNrZXIvaXRlbS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVscFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2hlbHAtcG9wb3Zlci9oZWxwLXBvcG92ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGlua0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvbGluay1idXR0b24vbGluay1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcclxuXHJcblxyXG5leHBvcnQgdHlwZSBDb21wb25lbnRzTW9kdWxlQ29uZmlnID0ge1xyXG4gIHRyYWNrZXI6IFByb3ZpZGVyXHJcbn07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVGFic0NvbXBvbmVudCxcclxuICAgIFRleHRib3hDb21wb25lbnQsXHJcbiAgICBOYXZJdGVtQWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcclxuICAgIFZpZXdPdmVybGF5Q29tcG9uZW50LFxyXG4gICAgQmFubmVyQ29tcG9uZW50LFxyXG4gICAgUmVzaXphYmxlVGFibGVEaXJlY3RpdmUsXHJcbiAgICBUYWJzQ29tcG9uZW50LFxyXG4gICAgVGFibGVDb21wb25lbnQsXHJcbiAgICBTZWFyY2hhYmxlVGFibGVDb21wb25lbnQsXHJcbiAgICBDb21ib2JveENvbXBvbmVudCxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZSxcclxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgQ29uZmlybUNvbXBvbmVudCxcclxuICAgIERpYWxvZ0NvbXBvbmVudCxcclxuICAgIERhdGVEaXNwbGF5UGlwZSxcclxuICAgIFRpbWVEaXNwbGF5UGlwZSxcclxuICAgIE1vY2tEYXRlRGlzcGxheVBpcGUsXHJcbiAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcclxuICAgIENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgTnVtZXJpY2JveENvbXBvbmVudCxcclxuICAgIEF2YXRhckNvbXBvbmVudCxcclxuICAgIEFwcEJhckNvbXBvbmVudCxcclxuICAgIFNwbGFzaENvbXBvbmVudCxcclxuICAgIElmVmlld3BvcnRXaWR0aERpcmVjdGl2ZSxcclxuICAgIENsaWNrQXJlYUZvckRpcmVjdGl2ZSxcclxuICAgIENvbGxhcHNpYmxlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgVGFibGVNYXN0ZXJSb3dDb21wb25lbnQsXHJcbiAgICBUYWJsZU1hc3RlckhlYWRlclJvd0NvbXBvbmVudCxcclxuICAgIFRhYmxlRGV0YWlsUm93Q29tcG9uZW50LFxyXG4gICAgVGFibGVMb2NrZWRDb2x1bW5Db21wb25lbnQsXHJcbiAgICBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnQsXHJcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxyXG4gICAgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LFxyXG4gICAgUm93Q291bnRQaXBlLFxyXG4gICAgQ29weUJ1dHRvbkRpcmVjdGl2ZSxcclxuICAgIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCxcclxuICAgIFRhZ3NDb21wb25lbnQsXHJcbiAgICBGb3JtQ29udHJvbENvbXBvbmVudCxcclxuICAgIFNlbGVjdENvbXBvbmVudCxcclxuICAgIEl0ZW1EaXNwbGF5Q29tcG9uZW50LFxyXG4gICAgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50LFxyXG4gICAgUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgRGlhbG9nR3JvdXBDb21wb25lbnQsXHJcbiAgICBGaWxlVXBsb2FkQ29tcG9uZW50LFxyXG4gICAgRm9ybUdyb3VwQ29tcG9uZW50LFxyXG4gICAgSnNvbkRpc3BsYXlDb21wb25lbnQsXHJcbiAgICBUb2FzdENvbXBvbmVudCxcclxuICAgIFRvYXN0ZXJDb21wb25lbnQsXHJcbiAgICBQYWdlVmlld0NvbXBvbmVudCxcclxuICAgIFBhZ2VUaXRsZUNvbXBvbmVudCxcclxuICAgIFdpemFyZFByb2dyZXNzQ29tcG9uZW50LFxyXG4gICAgV2l6YXJkQnV0dG9uc0NvbXBvbmVudCxcclxuICAgIEhpZXJhcmNoeVRyZWVDb21wb25lbnQsXHJcbiAgICBUcmVlQ29tcG9uZW50LFxyXG4gICAgUmVsYXRpdmVEYXRlUGlwZSxcclxuICAgIFJlc2l6YWJsZUNvbXBvbmVudCxcclxuICAgIEhpZ2hsaWdodFRleHRQaXBlLFxyXG4gICAgRm9ybUNvbnRyb2xMYWJlbENvbXBvbmVudCxcclxuICAgIEl0ZW1QaWNrZXJDb21wb25lbnQsXHJcbiAgICBIZWxwUG9wb3ZlckNvbXBvbmVudCxcclxuICAgIExpbmtCdXR0b25Db21wb25lbnQsXHJcbiAgICBUb29sdGlwQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBBMTF5TW9kdWxlLFxyXG4gICAgT3ZlcmxheU1vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBGb3JtR3JvdXBIZWxwZXIsXHJcbiAgICBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgRGF0ZURpc3BsYXlQaXBlLFxyXG4gICAgVGltZURpc3BsYXlQaXBlLFxyXG4gICAgTW9ja0RhdGVEaXNwbGF5UGlwZSxcclxuICAgIFJvd0NvdW50UGlwZSxcclxuICAgIFJlbGF0aXZlRGF0ZVBpcGUsXHJcbiAgICBIaWdobGlnaHRUZXh0UGlwZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVGFic0NvbXBvbmVudCxcclxuICAgIFRleHRib3hDb21wb25lbnQsXHJcbiAgICBOYXZJdGVtQWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcclxuICAgIFZpZXdPdmVybGF5Q29tcG9uZW50LFxyXG4gICAgQmFubmVyQ29tcG9uZW50LFxyXG4gICAgVGFic0NvbXBvbmVudCxcclxuICAgIFRhYmxlQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoYWJsZVRhYmxlQ29tcG9uZW50LFxyXG4gICAgQ29tYm9ib3hDb21wb25lbnQsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgUG9wdXBDb250YWluZXJEaXJlY3RpdmUsXHJcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIENvbmZpcm1Db21wb25lbnQsXHJcbiAgICBEaWFsb2dDb21wb25lbnQsXHJcbiAgICBEYXRlRGlzcGxheVBpcGUsXHJcbiAgICBUaW1lRGlzcGxheVBpcGUsXHJcbiAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcclxuICAgIENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgTnVtZXJpY2JveENvbXBvbmVudCxcclxuICAgIEF2YXRhckNvbXBvbmVudCxcclxuICAgIEFwcEJhckNvbXBvbmVudCxcclxuICAgIFNwbGFzaENvbXBvbmVudCxcclxuICAgIElmVmlld3BvcnRXaWR0aERpcmVjdGl2ZSxcclxuICAgIENsaWNrQXJlYUZvckRpcmVjdGl2ZSxcclxuICAgIENvbGxhcHNpYmxlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgVGFibGVNYXN0ZXJSb3dDb21wb25lbnQsXHJcbiAgICBUYWJsZU1hc3RlckhlYWRlclJvd0NvbXBvbmVudCxcclxuICAgIFRhYmxlTG9ja2VkQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50LFxyXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcclxuICAgIENvcHlCdXR0b25EaXJlY3RpdmUsXHJcbiAgICBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQsXHJcbiAgICBUYWdzQ29tcG9uZW50LFxyXG4gICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXHJcbiAgICBTZWxlY3RDb21wb25lbnQsXHJcbiAgICBJdGVtRGlzcGxheUNvbXBvbmVudCxcclxuICAgIFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCxcclxuICAgIERpYWxvZ0dyb3VwQ29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIEZvcm1Hcm91cENvbXBvbmVudCxcclxuICAgIEpzb25EaXNwbGF5Q29tcG9uZW50LFxyXG4gICAgVG9hc3RDb21wb25lbnQsXHJcbiAgICBUb2FzdGVyQ29tcG9uZW50LFxyXG4gICAgUGFnZVZpZXdDb21wb25lbnQsXHJcbiAgICBQYWdlVGl0bGVDb21wb25lbnQsXHJcbiAgICBXaXphcmRQcm9ncmVzc0NvbXBvbmVudCxcclxuICAgIFdpemFyZEJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBIaWVyYXJjaHlUcmVlQ29tcG9uZW50LFxyXG4gICAgVHJlZUNvbXBvbmVudCxcclxuICAgIFJlbGF0aXZlRGF0ZVBpcGUsXHJcbiAgICBSZXNpemFibGVDb21wb25lbnQsXHJcbiAgICBIaWdobGlnaHRUZXh0UGlwZSxcclxuICAgIEZvcm1Db250cm9sTGFiZWxDb21wb25lbnQsXHJcbiAgICBJdGVtUGlja2VyQ29tcG9uZW50LFxyXG4gICAgSGVscFBvcG92ZXJDb21wb25lbnQsXHJcbiAgICBMaW5rQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcENvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudHNNb2R1bGUge1xyXG4gIC8qKlxyXG4gICAqIFByb3ZpZGluZyBzZXJ2aWNlcyB0aHJvdWdoIHRoZSBmb3JSb290IHBhdHRlcm4gaGVyZSBlbnN1cmVzIHRoYXQgdGhlIGNvbXBvbmVudHMgbW9kdWxlIGFuZCB0aGUgaW1wb3J0aW5nXHJcbiAgICogbW9kdWxlIHVzZSB0aGUgc2FtZSBzaW5nbGV0b24gc2VydmljZSBpbnN0YW5jZS5cclxuICAgKiBGb3IgbW9yZSBpbmZvOiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvc2luZ2xldG9uLXNlcnZpY2VzI3RoZS1mb3Jyb290LXBhdHRlcm5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnOiBDb21wb25lbnRzTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxDb21wb25lbnRzTW9kdWxlPntcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBDb21wb25lbnRzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBjb25maWcudHJhY2tlclxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFB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d0JBQ2xCLGlCQUFpQjt3QkFDakIseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGFBQWE7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2Jhbm5lci9iYW5uZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcHlCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2xzL2J1dHRvbi9jb3B5LWJ1dHRvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29sbGFwc2libGVUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2NvbGxhcHNpYmxlLXRvZ2dsZS9jb2xsYXBzaWJsZS10b2dnbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tYm9ib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2Zvcm0tZ3JvdXAvZm9ybS1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmF2SXRlbUFjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtaXRlbS1hY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTnVtZXJpY2JveENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvbnVtZXJpY2JveC9udW1lcmljYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFic0NvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvdGFicy90YWJzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2xzL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHBCYXJDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvYXBwLWJhci9hcHAtYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvY29uZmlybS9jb25maXJtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2ctZ3JvdXAvZGlhbG9nLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGllcmFyY2h5VHJlZUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9oaWVyYXJjaHkvaGllcmFyY2h5LXRyZWUvaGllcmFyY2h5LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSXRlbURpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvaXRlbS1kaXNwbGF5L2l0ZW0tZGlzcGxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBKc29uRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9qc29uLWRpc3BsYXkvanNvbi1kaXNwbGF5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwbGFzaENvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS9zcGxhc2gvc3BsYXNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90YWJsZS9yZXNpemFibGUtY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZVRhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3Jlc2l6YWJsZS10YWJsZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZWFyY2hhYmxlVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvc2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZURldGFpbFJvd0NvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90YWJsZS90YWJsZS1kZXRhaWwtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlTG9ja2VkQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RhYmxlL3RhYmxlLWxvY2tlZC1jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVNYXN0ZXJIZWFkZXJSb3dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtbWFzdGVyLWhlYWRlci1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVNYXN0ZXJSb3dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90YWdzL3RhZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdG9hc3QvdG9hc3QvdG9hc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RlckNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90b2FzdC90b2FzdGVyL3RvYXN0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcGxheS90cmVlL3RyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmlld092ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlja0FyZWFGb3JEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL2NsaWNrLWFyZWEtZm9yL2NsaWNrLWFyZWEtZm9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElmVmlld3BvcnRXaWR0aERpcmVjdGl2ZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGl2ZXMvaWYtdmlld3BvcnQtd2lkdGgvaWYtdmlld3BvcnQtd2lkdGguZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUG9wdXBDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL3BvcHVwL3BvcHVwLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEYXRlRGlzcGxheVBpcGUgfSBmcm9tICcuL3NoYXJlZC9kaXNwbGF5L3BpcGVzL2RhdGUtZGlzcGxheS5waXBlJztcclxuaW1wb3J0IHsgSGlnaGxpZ2h0VGV4dFBpcGUgfSBmcm9tICcuL3NoYXJlZC9kaXNwbGF5L3BpcGVzL2hpZ2hsaWdodC10ZXh0LnBpcGUnO1xyXG5pbXBvcnQgeyBSZWxhdGl2ZURhdGVQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy9yZWxhdGl2ZS1kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBSb3dDb3VudFBpcGUgfSBmcm9tICcuL3NoYXJlZC9kaXNwbGF5L3BpcGVzL3Jvdy1jb3VudC5waXBlJztcclxuaW1wb3J0IHsgVGltZURpc3BsYXlQaXBlIH0gZnJvbSAnLi9zaGFyZWQvZGlzcGxheS9waXBlcy90aW1lLWRpc3BsYXkucGlwZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgUGFnZVRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi9zaGFyZWQvcGFnZS9wYWdlLXRpdGxlL3BhZ2UtdGl0bGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL3NoYXJlZC9wYWdlL3BhZ2Utdmlldy9wYWdlLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTW9ja0RhdGVEaXNwbGF5UGlwZSB9IGZyb20gJy4vc2hhcmVkL3Rlc3RpbmcvcHVibGljLW1vY2tzLnNwZWMnO1xyXG5pbXBvcnQgeyBXaXphcmRCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9zaGFyZWQvd2l6YXJkL3dpemFyZC1idXR0b25zL3dpemFyZC1idXR0b25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9zaGFyZWQvd2l6YXJkL3dpemFyZC1wcm9ncmVzcy93aXphcmQtcHJvZ3Jlc3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvZm9ybS1jb250cm9sLWxhYmVsL2Zvcm0tY29udHJvbC1sYWJlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJdGVtUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9pdGVtLXBpY2tlci9pdGVtLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIZWxwUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvaGVscC1wb3BvdmVyL2hlbHAtcG9wb3Zlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaW5rQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy9saW5rLWJ1dHRvbi9saW5rLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb3VyQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNwbGF5L3RvdXIvdG91ci5jb21wb25lbnQnO1xyXG5cclxuXHJcbmV4cG9ydCB0eXBlIENvbXBvbmVudHNNb2R1bGVDb25maWcgPSB7XHJcbiAgdHJhY2tlcjogUHJvdmlkZXJcclxufTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBCdXR0b25Db21wb25lbnQsXHJcbiAgICBUYWJzQ29tcG9uZW50LFxyXG4gICAgVGV4dGJveENvbXBvbmVudCxcclxuICAgIE5hdkl0ZW1BY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBTcGlubmVyQ29tcG9uZW50LFxyXG4gICAgVmlld092ZXJsYXlDb21wb25lbnQsXHJcbiAgICBCYW5uZXJDb21wb25lbnQsXHJcbiAgICBSZXNpemFibGVUYWJsZURpcmVjdGl2ZSxcclxuICAgIFRhYnNDb21wb25lbnQsXHJcbiAgICBUYWJsZUNvbXBvbmVudCxcclxuICAgIFNlYXJjaGFibGVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvbWJvYm94Q29tcG9uZW50LFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlLFxyXG4gICAgRHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBDb25maXJtQ29tcG9uZW50LFxyXG4gICAgRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgRGF0ZURpc3BsYXlQaXBlLFxyXG4gICAgVGltZURpc3BsYXlQaXBlLFxyXG4gICAgTW9ja0RhdGVEaXNwbGF5UGlwZSxcclxuICAgIFJhZGlvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBOdW1lcmljYm94Q29tcG9uZW50LFxyXG4gICAgQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgQXBwQmFyQ29tcG9uZW50LFxyXG4gICAgU3BsYXNoQ29tcG9uZW50LFxyXG4gICAgSWZWaWV3cG9ydFdpZHRoRGlyZWN0aXZlLFxyXG4gICAgQ2xpY2tBcmVhRm9yRGlyZWN0aXZlLFxyXG4gICAgQ29sbGFwc2libGVUb2dnbGVDb21wb25lbnQsXHJcbiAgICBUYWJsZU1hc3RlclJvd0NvbXBvbmVudCxcclxuICAgIFRhYmxlTWFzdGVySGVhZGVyUm93Q29tcG9uZW50LFxyXG4gICAgVGFibGVEZXRhaWxSb3dDb21wb25lbnQsXHJcbiAgICBUYWJsZUxvY2tlZENvbHVtbkNvbXBvbmVudCxcclxuICAgIFRhYmxlU2VsZWN0YWJsZVJvd0NvbXBvbmVudCxcclxuICAgIFBvcG92ZXJDb21wb25lbnQsXHJcbiAgICBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQsXHJcbiAgICBSb3dDb3VudFBpcGUsXHJcbiAgICBDb3B5QnV0dG9uRGlyZWN0aXZlLFxyXG4gICAgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LFxyXG4gICAgVGFnc0NvbXBvbmVudCxcclxuICAgIEZvcm1Db250cm9sQ29tcG9uZW50LFxyXG4gICAgU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgSXRlbURpc3BsYXlDb21wb25lbnQsXHJcbiAgICBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnQsXHJcbiAgICBSZXNpemFibGVDb2x1bW5Db21wb25lbnQsXHJcbiAgICBEaWFsb2dHcm91cENvbXBvbmVudCxcclxuICAgIEZpbGVVcGxvYWRDb21wb25lbnQsXHJcbiAgICBGb3JtR3JvdXBDb21wb25lbnQsXHJcbiAgICBKc29uRGlzcGxheUNvbXBvbmVudCxcclxuICAgIFRvYXN0Q29tcG9uZW50LFxyXG4gICAgVG9hc3RlckNvbXBvbmVudCxcclxuICAgIFBhZ2VWaWV3Q29tcG9uZW50LFxyXG4gICAgUGFnZVRpdGxlQ29tcG9uZW50LFxyXG4gICAgV2l6YXJkUHJvZ3Jlc3NDb21wb25lbnQsXHJcbiAgICBXaXphcmRCdXR0b25zQ29tcG9uZW50LFxyXG4gICAgSGllcmFyY2h5VHJlZUNvbXBvbmVudCxcclxuICAgIFRyZWVDb21wb25lbnQsXHJcbiAgICBSZWxhdGl2ZURhdGVQaXBlLFxyXG4gICAgUmVzaXphYmxlQ29tcG9uZW50LFxyXG4gICAgSGlnaGxpZ2h0VGV4dFBpcGUsXHJcbiAgICBGb3JtQ29udHJvbExhYmVsQ29tcG9uZW50LFxyXG4gICAgSXRlbVBpY2tlckNvbXBvbmVudCxcclxuICAgIEhlbHBQb3BvdmVyQ29tcG9uZW50LFxyXG4gICAgTGlua0J1dHRvbkNvbXBvbmVudCxcclxuICAgIFRvb2x0aXBDb21wb25lbnQsXHJcbiAgICBUb3VyQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBBMTF5TW9kdWxlLFxyXG4gICAgT3ZlcmxheU1vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBGb3JtR3JvdXBIZWxwZXIsXHJcbiAgICBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgRGF0ZURpc3BsYXlQaXBlLFxyXG4gICAgVGltZURpc3BsYXlQaXBlLFxyXG4gICAgTW9ja0RhdGVEaXNwbGF5UGlwZSxcclxuICAgIFJvd0NvdW50UGlwZSxcclxuICAgIFJlbGF0aXZlRGF0ZVBpcGUsXHJcbiAgICBIaWdobGlnaHRUZXh0UGlwZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVGFic0NvbXBvbmVudCxcclxuICAgIFRleHRib3hDb21wb25lbnQsXHJcbiAgICBOYXZJdGVtQWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcclxuICAgIFZpZXdPdmVybGF5Q29tcG9uZW50LFxyXG4gICAgQmFubmVyQ29tcG9uZW50LFxyXG4gICAgVGFic0NvbXBvbmVudCxcclxuICAgIFRhYmxlQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoYWJsZVRhYmxlQ29tcG9uZW50LFxyXG4gICAgQ29tYm9ib3hDb21wb25lbnQsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgUG9wdXBDb250YWluZXJEaXJlY3RpdmUsXHJcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIENvbmZpcm1Db21wb25lbnQsXHJcbiAgICBEaWFsb2dDb21wb25lbnQsXHJcbiAgICBEYXRlRGlzcGxheVBpcGUsXHJcbiAgICBUaW1lRGlzcGxheVBpcGUsXHJcbiAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcclxuICAgIENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgTnVtZXJpY2JveENvbXBvbmVudCxcclxuICAgIEF2YXRhckNvbXBvbmVudCxcclxuICAgIEFwcEJhckNvbXBvbmVudCxcclxuICAgIFNwbGFzaENvbXBvbmVudCxcclxuICAgIElmVmlld3BvcnRXaWR0aERpcmVjdGl2ZSxcclxuICAgIENsaWNrQXJlYUZvckRpcmVjdGl2ZSxcclxuICAgIENvbGxhcHNpYmxlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgVGFibGVNYXN0ZXJSb3dDb21wb25lbnQsXHJcbiAgICBUYWJsZU1hc3RlckhlYWRlclJvd0NvbXBvbmVudCxcclxuICAgIFRhYmxlTG9ja2VkQ29sdW1uQ29tcG9uZW50LFxyXG4gICAgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50LFxyXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcclxuICAgIENvcHlCdXR0b25EaXJlY3RpdmUsXHJcbiAgICBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQsXHJcbiAgICBUYWdzQ29tcG9uZW50LFxyXG4gICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXHJcbiAgICBTZWxlY3RDb21wb25lbnQsXHJcbiAgICBJdGVtRGlzcGxheUNvbXBvbmVudCxcclxuICAgIFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCxcclxuICAgIERpYWxvZ0dyb3VwQ29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIEZvcm1Hcm91cENvbXBvbmVudCxcclxuICAgIEpzb25EaXNwbGF5Q29tcG9uZW50LFxyXG4gICAgVG9hc3RDb21wb25lbnQsXHJcbiAgICBUb2FzdGVyQ29tcG9uZW50LFxyXG4gICAgUGFnZVZpZXdDb21wb25lbnQsXHJcbiAgICBQYWdlVGl0bGVDb21wb25lbnQsXHJcbiAgICBXaXphcmRQcm9ncmVzc0NvbXBvbmVudCxcclxuICAgIFdpemFyZEJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBIaWVyYXJjaHlUcmVlQ29tcG9uZW50LFxyXG4gICAgVHJlZUNvbXBvbmVudCxcclxuICAgIFJlbGF0aXZlRGF0ZVBpcGUsXHJcbiAgICBSZXNpemFibGVDb21wb25lbnQsXHJcbiAgICBIaWdobGlnaHRUZXh0UGlwZSxcclxuICAgIEZvcm1Db250cm9sTGFiZWxDb21wb25lbnQsXHJcbiAgICBJdGVtUGlja2VyQ29tcG9uZW50LFxyXG4gICAgSGVscFBvcG92ZXJDb21wb25lbnQsXHJcbiAgICBMaW5rQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcENvbXBvbmVudCxcclxuICAgIFRvdXJDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHtcclxuICAvKipcclxuICAgKiBQcm92aWRpbmcgc2VydmljZXMgdGhyb3VnaCB0aGUgZm9yUm9vdCBwYXR0ZXJuIGhlcmUgZW5zdXJlcyB0aGF0IHRoZSBjb21wb25lbnRzIG1vZHVsZSBhbmQgdGhlIGltcG9ydGluZ1xyXG4gICAqIG1vZHVsZSB1c2UgdGhlIHNhbWUgc2luZ2xldG9uIHNlcnZpY2UgaW5zdGFuY2UuXHJcbiAgICogRm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3NpbmdsZXRvbi1zZXJ2aWNlcyN0aGUtZm9ycm9vdC1wYXR0ZXJuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29tcG9uZW50c01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Q29tcG9uZW50c01vZHVsZT57XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQ29tcG9uZW50c01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgY29uZmlnLnRyYWNrZXJcclxuICAgICAgXVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export class Tour {
|
|
2
|
+
constructor() {
|
|
3
|
+
/** Unique identifier for the tour */
|
|
4
|
+
this.id = '';
|
|
5
|
+
/** List of tour steps to present to the user */
|
|
6
|
+
this.steps = [];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class TourStep {
|
|
10
|
+
constructor() {
|
|
11
|
+
/** Unique identifier for the tour step */
|
|
12
|
+
this.id = '';
|
|
13
|
+
/** HTML formatted text that contains the primary content of the tour step */
|
|
14
|
+
this.text = '';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class TourAnchor {
|
|
18
|
+
constructor() {
|
|
19
|
+
/**
|
|
20
|
+
* Selector to attach the tooltip to. If defined but does not exist in the
|
|
21
|
+
* DOM skip this step because it is probably hidden to the user because of
|
|
22
|
+
* permissions.
|
|
23
|
+
*/
|
|
24
|
+
this.selector = '';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class TourEvent {
|
|
28
|
+
constructor(tours, tourAction = 'start', isAutoStart = false) {
|
|
29
|
+
this.tours = tours;
|
|
30
|
+
this.tourAction = tourAction;
|
|
31
|
+
this.isAutoStart = isAutoStart;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3RvdXIvdG91ci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLE9BQU8sSUFBSTtJQUFqQjtRQUNFLHFDQUFxQztRQUNyQyxPQUFFLEdBQVcsRUFBRSxDQUFDO1FBQ2hCLGdEQUFnRDtRQUNoRCxVQUFLLEdBQWUsRUFBRSxDQUFDO0lBT3pCLENBQUM7Q0FBQTtBQVdELE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBQ0UsMENBQTBDO1FBQzFDLE9BQUUsR0FBVyxFQUFFLENBQUM7UUFRaEIsNkVBQTZFO1FBQzdFLFNBQUksR0FBVyxFQUFFLENBQUM7SUFNcEIsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFBdkI7UUFlRTs7OztXQUlHO1FBQ0gsYUFBUSxHQUFXLEVBQUUsQ0FBQztJQUl4QixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNwQixZQUNTLEtBQWEsRUFDYixhQUE4QixPQUFPLEVBQ3JDLGNBQXVCLEtBQUs7UUFGNUIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGVBQVUsR0FBVixVQUFVLENBQTJCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtJQUNqQyxDQUFDO0NBQ04iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERpYWxvZ0NvbnRlbnQgfSBmcm9tIFwiLi4vZGlhbG9nL2RpYWxvZy1jb250ZW50XCI7XHJcbmltcG9ydCB7IERpYWxvZ09wdGlvbnMsIERpYWxvZ1NpemUgfSBmcm9tIFwiLi4vZGlhbG9nL2RpYWxvZy10eXBlc1wiO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tIFwiLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudFwiO1xyXG5cclxuZXhwb3J0IHR5cGUgVG91ckNhY2hlRW50cnkgPSB7IGNvbXBsZXRlZDogYm9vbGVhbiB9O1xyXG5cclxuZXhwb3J0IGNsYXNzIFRvdXI8VCA9IGFueT4ge1xyXG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRvdXIgKi9cclxuICBpZDogc3RyaW5nID0gJyc7XHJcbiAgLyoqIExpc3Qgb2YgdG91ciBzdGVwcyB0byBwcmVzZW50IHRvIHRoZSB1c2VyICovXHJcbiAgc3RlcHM6IFRvdXJTdGVwW10gPSBbXTtcclxuXHJcbiAgLyoqIEZpbmFsIHN0ZXAgdG8gYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGlmIGRlZmluZWQgKi9cclxuICBleGl0U3RlcD86IFRvdXJTdGVwO1xyXG5cclxuICAvKiogRGlhbG9nIHRvIHByZXNlbnQgdG8gdGhlIHVzZXIgYmVmb3JlIHRoZSB0b3VyIGJlZ2lucyAqL1xyXG4gIGludHJvRGlhbG9nPzogVG91ckludG9EaWFsb2c8VD5cclxufVxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVG91ckludG9EaWFsb2c8VD4ge1xyXG4gIGNvbnRlbnQ/OiBUeXBlPERpYWxvZ0NvbnRlbnQ8VD4+IHwgVGVtcGxhdGVSZWY8YW55PjtcclxuICBjb250ZXh0PzogVDtcclxuICBvcHRpb25zPzogRGlhbG9nT3B0aW9ucztcclxuICBzaXplPzogRGlhbG9nU2l6ZTtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBUb3VyU3RlcCB7XHJcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdG91ciBzdGVwICovXHJcbiAgaWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogT3B0aW9uYWwgdG91ciBzdGVwIHRpdGxlIGRpc3BsYXllZCBhdCB0b3Agb2YgdG9vbHRpcCAqL1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG5cclxuICAvKiogT3B0aW9uYWwgbWVkaWEgdG8gZGlzcGxheSBiZWxvdyB0aXRsZSBhbmQgYWJvdmUgdG91ciB0ZXh0LiBDYW4gYmUgYSBqcGcsIHBuZywgb3IgZ2lmICovXHJcbiAgbWVkaWE/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBIVE1MIGZvcm1hdHRlZCB0ZXh0IHRoYXQgY29udGFpbnMgdGhlIHByaW1hcnkgY29udGVudCBvZiB0aGUgdG91ciBzdGVwICovXHJcbiAgdGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBUaGUgZWxlbWVudCB0byBhdHRhY2ggdGhlIHRvdXIgc3RlcCB0by4gSWYgdW5kZWZpbmVkLCBzdGVwIHdpbGwgYXBwZWFyIGNlbnRlcmVkIG9uIHNjcmVlbiAqL1xyXG4gIGFuY2hvcj86IFRvdXJBbmNob3I7XHJcblxyXG4gIGhlbHBMaW5rPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVG91ckFuY2hvciB7XHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgY3NzIHNlbGVjdG9yIG9mIGFuIGVsZW1lbnQgdG8gY2xpY2sgaW4gb3JkZXIgdG8gb3BlbiBhIG1lbnUgb3IgXHJcbiAgICogb3ZlcmxheS4gU2hvdWxkIG5vdCBjYXVzZSBhIG5hdmlnYXRpb24uIElmIGRlZmluZWQgYnV0IGRvZXMgbm90IGV4aXN0IGluIFxyXG4gICAqIHRoZSBET00sIHNraXAgdGhpcyBzdGVwIGJlY2F1c2UgaXQgaXMgcHJvYmFibHkgaGlkZGVuIHRvIHRoZSB1c2VyIGJlY2F1c2Ugb2YgcGVybWlzc2lvbnMgXHJcbiAgICovXHJcbiAgY2xpY2tCZWZvcmU/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBcclxuICAgKiBDU1Mgc2VsZWN0b3Igb2YgZWxlbWVudCB0byBjbGljayBpbiBvcmRlciB0byBjbG9zZSBhIG1lbnUgb3Igb3ZlcmxheSBcclxuICAgKiBiZWZvcmUgY29udGludWluZyB0byB0aGUgbmV4dCBzdGVwLiBJZ25vcmVkIGlmIGNsaWNrQmVmb3JlIGlzIHVuZGVmaW5lZC4gXHJcbiAgICogU2hvdWxkIG5vdCBjYXVzZSBhIG5hdmlnYXRpb24gXHJcbiAgICovXHJcbiAgY2xpY2tBZnRlcj86IHN0cmluZztcclxuXHJcbiAgLyoqIFxyXG4gICAqIFNlbGVjdG9yIHRvIGF0dGFjaCB0aGUgdG9vbHRpcCB0by4gSWYgZGVmaW5lZCBidXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlICBcclxuICAgKiBET00gc2tpcCB0aGlzIHN0ZXAgYmVjYXVzZSBpdCBpcyBwcm9iYWJseSBoaWRkZW4gdG8gdGhlIHVzZXIgYmVjYXVzZSBvZiAgXHJcbiAgICogcGVybWlzc2lvbnMuXHJcbiAgICovXHJcbiAgc2VsZWN0b3I6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgcmVsYXRpdmUgdG8gdGhlIGFuY2hvci4gaHR0cHM6Ly9lbmVyZ3ljYXAtY29tcG9uZW50cy5uZXRsaWZ5LmFwcC90b29sdGlwI3Bvc2l0aW9uICovXHJcbiAgcG9zaXRpb24/OiBUb29sdGlwUG9zaXRpb25cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvdXJFdmVudCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdG91cnM6IFRvdXJbXSxcclxuICAgIHB1YmxpYyB0b3VyQWN0aW9uOiAnc3RhcnQnIHwgJ2VuZCcgPSAnc3RhcnQnLFxyXG4gICAgcHVibGljIGlzQXV0b1N0YXJ0OiBib29sZWFuID0gZmFsc2UsXHJcbiAgKSB7IH1cclxufSJdfQ==
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Component, Inject, ViewChild } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./tour.service";
|
|
7
|
+
import * as i2 from "./../tooltip/tooltip.service";
|
|
8
|
+
import * as i3 from "../../core/telemetry.service";
|
|
9
|
+
import * as i4 from "../../core/cache.service";
|
|
10
|
+
import * as i5 from "../dialog/dialog.service";
|
|
11
|
+
import * as i6 from "@angular/common";
|
|
12
|
+
import * as i7 from "@ngx-translate/core";
|
|
13
|
+
import * as i8 from "../../controls/link-button/link-button.component";
|
|
14
|
+
export class TourComponent {
|
|
15
|
+
constructor(tourService, tooltipService, telemetryService, cacheService, dialogService, document) {
|
|
16
|
+
this.tourService = tourService;
|
|
17
|
+
this.tooltipService = tooltipService;
|
|
18
|
+
this.telemetryService = telemetryService;
|
|
19
|
+
this.cacheService = cacheService;
|
|
20
|
+
this.dialogService = dialogService;
|
|
21
|
+
this.document = document;
|
|
22
|
+
/** Used to tell the UI that the step being shown is an exit step. This will change the
|
|
23
|
+
* link text and the action when clicked
|
|
24
|
+
*/
|
|
25
|
+
this.showDoneButton = false;
|
|
26
|
+
/** Array of tours provided when the start tour event was detected */
|
|
27
|
+
this.tours = [];
|
|
28
|
+
// Couple indexes for the current tour/step stored for easier reference when knowing if we are at the end of the steps/tours
|
|
29
|
+
this.currentStepIndex = -1;
|
|
30
|
+
this.currentTourIndex = -1;
|
|
31
|
+
/** Used to know if the restore step should be triggered when the tour is dismissed */
|
|
32
|
+
this.isAutoStart = false;
|
|
33
|
+
this.destroyed = new Subject();
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.tourService.events.pipe(takeUntil(this.destroyed)).subscribe(event => {
|
|
37
|
+
if (event.tourAction === 'start') {
|
|
38
|
+
this.setupTourComponent(event);
|
|
39
|
+
}
|
|
40
|
+
else if (event.tourAction === 'end') {
|
|
41
|
+
if (this.currentTour) {
|
|
42
|
+
this.writeCompletionKeyForAllTours();
|
|
43
|
+
this.endTour();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
ngOnDestroy() {
|
|
49
|
+
this.destroyed.next();
|
|
50
|
+
this.destroyed.unsubscribe();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Called when a restore step has been completed
|
|
54
|
+
*/
|
|
55
|
+
done() {
|
|
56
|
+
this.writeCompletionKey(this.currentTour);
|
|
57
|
+
this.endTour();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Called when a tour begins and when the user clicks next on the current tour step. It will handle any after click actions and then
|
|
61
|
+
* find the next step and present it to the user and transition to a restore step or new tour if needed.
|
|
62
|
+
*/
|
|
63
|
+
showNextStep() {
|
|
64
|
+
// The setTimeouts were causing a timing issue where "this.currentTourStep" was getting set before this could
|
|
65
|
+
// execute and therefor was trying to run the new tours first steps clickAfter. Capture the clickAfter selector to have the prior reference
|
|
66
|
+
let previousStepAfterAnchor = this.currentTourStep?.anchor?.clickAfter;
|
|
67
|
+
// Before moving to the next step, make sure the current step does not have a click after defined. This could be hiding a menu
|
|
68
|
+
// that was opened for the soon to be previous step.
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
this.handleClickAfter(previousStepAfterAnchor);
|
|
71
|
+
});
|
|
72
|
+
// Remove any previous tooltips
|
|
73
|
+
this.removeTooltip();
|
|
74
|
+
// Get our next step index to display to the user
|
|
75
|
+
this.currentStepIndex = this.getNextAvailableStepIndex();
|
|
76
|
+
if (this.currentStepIndex === -1) {
|
|
77
|
+
// No more steps found, we either need to check for the exit step if this is the last tour
|
|
78
|
+
// in the tours array or advance to the next tour
|
|
79
|
+
if (this.currentTourIndex === this.tours.length - 1) {
|
|
80
|
+
this.handleExitStep();
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Write the completion key for the current tour before we move to the next
|
|
84
|
+
this.writeCompletionKey(this.currentTour);
|
|
85
|
+
this.currentTourIndex++;
|
|
86
|
+
this.showNextTour();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.currentTourStep = this.currentTour?.steps[this.currentStepIndex];
|
|
91
|
+
// Now that we have our current step index, take care of any click before elements before showing the
|
|
92
|
+
// tooltip. This could be opening a menu to get the tooltip element visible.
|
|
93
|
+
setTimeout(() => {
|
|
94
|
+
this.handleClickBefore();
|
|
95
|
+
});
|
|
96
|
+
// Click befores are done, now let's show the tooltip defined in the tour step
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
this.showStepTooltip();
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
setupTourComponent(event) {
|
|
103
|
+
// End any tours that may have been in progress if the user kicks off a new one
|
|
104
|
+
if (this.currentTour) {
|
|
105
|
+
this.writeCompletionKeyForAllTours();
|
|
106
|
+
this.endTour();
|
|
107
|
+
}
|
|
108
|
+
this.isAutoStart = event.isAutoStart;
|
|
109
|
+
if (event.isAutoStart) {
|
|
110
|
+
this.tours = this.removeCompletedTours(event.tours);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.tours = event.tours;
|
|
114
|
+
}
|
|
115
|
+
if (this.tours.length) {
|
|
116
|
+
this.showDoneButton = false;
|
|
117
|
+
this.currentTourStep = undefined;
|
|
118
|
+
this.currentStepIndex = -1;
|
|
119
|
+
// Prime the index for the first tour
|
|
120
|
+
this.currentTourIndex = 0;
|
|
121
|
+
this.showNextTour();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Shows a tour and emits an event that it was started
|
|
126
|
+
* @param tour
|
|
127
|
+
*/
|
|
128
|
+
async showNextTour() {
|
|
129
|
+
// Track a tour started event if the consumer of the library has telemetry configured
|
|
130
|
+
this.telemetryService.trackEvent('TourStarted', { tourId: this.currentTour.id });
|
|
131
|
+
let continueTour = true;
|
|
132
|
+
if (this.isAutoStart && this.currentTourIndex === 0 && this.currentTour?.introDialog) {
|
|
133
|
+
let result = await this.dialogService.openDialog(this.currentTour.introDialog.content, this.currentTour.introDialog.size ?? 'small', this.currentTour.introDialog.context ?? undefined, this.currentTour.introDialog.options ?? undefined).toPromise();
|
|
134
|
+
if (!result.save) {
|
|
135
|
+
continueTour = false;
|
|
136
|
+
this.writeCompletionKeyForAllTours();
|
|
137
|
+
// Advance to the last tour if there are multiple for its exit step
|
|
138
|
+
this.currentTourIndex = this.tours.length - 1;
|
|
139
|
+
this.handleExitStep();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (continueTour) {
|
|
143
|
+
this.showNextStep();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
endTour() {
|
|
147
|
+
// The setTimeouts were causing a timing issue where "this.currentTourStep" was getting set before this could
|
|
148
|
+
// execute and therefor was trying to run the new tour clickAfter. Capture the clickAfter selector to have the prior reference
|
|
149
|
+
let currentTourStepAfterAnchor = this.currentTourStep?.anchor?.clickAfter;
|
|
150
|
+
// Handle any click afters for the active step shown before shutting it down
|
|
151
|
+
setTimeout(() => {
|
|
152
|
+
this.handleClickAfter(currentTourStepAfterAnchor);
|
|
153
|
+
});
|
|
154
|
+
this.currentTourStep = undefined;
|
|
155
|
+
this.tours = [];
|
|
156
|
+
this.removeTooltip();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Displays a tooltip for the current tour step
|
|
160
|
+
*/
|
|
161
|
+
showStepTooltip() {
|
|
162
|
+
// Track an event if the consumer of the library has telemetry configured
|
|
163
|
+
this.telemetryService.trackEvent('TourStepChange', { tourId: this.currentTour.id, tourStepId: this.currentTourStep.id });
|
|
164
|
+
const tooltipElement = this.document.querySelector(this.currentTourStep.anchor.selector);
|
|
165
|
+
if (tooltipElement) {
|
|
166
|
+
const options = {
|
|
167
|
+
id: `${this.currentTour?.id}_${this.currentTourStep.id}`,
|
|
168
|
+
text: this.currentTourStep.text,
|
|
169
|
+
title: this.currentTourStep.title,
|
|
170
|
+
customContent: this.custom,
|
|
171
|
+
dismissible: true,
|
|
172
|
+
width: 400,
|
|
173
|
+
backgroundColor: '#005f7a'
|
|
174
|
+
};
|
|
175
|
+
this.tooltip = this.tooltipService.show(tooltipElement, this.currentTourStep.anchor?.position, options);
|
|
176
|
+
this.subscribeToTooltipOnHide();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Subscribes to the tooltips onHide event emitter and reacts if the user dismisses the tooltip
|
|
181
|
+
*/
|
|
182
|
+
subscribeToTooltipOnHide() {
|
|
183
|
+
let tooltipSubscription = this.tooltip?.onHide.pipe(takeUntil(this.destroyed)).subscribe(() => {
|
|
184
|
+
tooltipSubscription?.unsubscribe();
|
|
185
|
+
this.writeCompletionKeyForAllTours();
|
|
186
|
+
// If this is dismissed during an auto start tour then handle the exit step
|
|
187
|
+
// Check that the done button is shown as well, if the done is shown then we're in the exit step
|
|
188
|
+
// and dismissing should just end the tour
|
|
189
|
+
if (this.isAutoStart && !this.showDoneButton) {
|
|
190
|
+
// Advance to the last tour if there are multiple for its exit step
|
|
191
|
+
this.currentTourIndex = this.tours.length - 1;
|
|
192
|
+
this.handleExitStep();
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
this.endTour();
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Loops through the current tour steps starting after the current step index. It will try to find a visible
|
|
201
|
+
* selector and if so return the index.
|
|
202
|
+
* @returns
|
|
203
|
+
*/
|
|
204
|
+
getNextAvailableStepIndex() {
|
|
205
|
+
let nextStepIndex = -1;
|
|
206
|
+
// Look through the steps starting with the current index and find the next that is avaiable
|
|
207
|
+
// for the user.
|
|
208
|
+
for (let i = this.currentStepIndex + 1; i < this.currentTour.steps.length; i++) {
|
|
209
|
+
if (this.currentTour?.steps[i].anchor && this.stepElementFound(this.currentTour?.steps[i].anchor)) {
|
|
210
|
+
return i;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return nextStepIndex;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Try to find the tour step element to know if it is visible for the user. Check for the clickBefore first if defined
|
|
217
|
+
* @param anchor
|
|
218
|
+
* @returns
|
|
219
|
+
*/
|
|
220
|
+
stepElementFound(anchor) {
|
|
221
|
+
if (anchor.clickBefore) {
|
|
222
|
+
return this.document.querySelector(anchor.clickBefore) !== null;
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
return this.document.querySelector(anchor.selector) !== null;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Some tour steps may have a click after defined. If so call the click method on the html element
|
|
230
|
+
*/
|
|
231
|
+
handleClickAfter(selector) {
|
|
232
|
+
if (selector) {
|
|
233
|
+
this.clickElementIfFound(selector);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Some tour steps may have a click before defined. If so call the click method on the html element
|
|
238
|
+
*/
|
|
239
|
+
handleClickBefore() {
|
|
240
|
+
if (this.currentTourStep?.anchor?.clickBefore) {
|
|
241
|
+
this.clickElementIfFound(this.currentTourStep.anchor?.clickBefore);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Checks for an exit step on the current tour and if found displays the step
|
|
246
|
+
*/
|
|
247
|
+
handleExitStep() {
|
|
248
|
+
if (this.currentTour?.exitStep) {
|
|
249
|
+
this.removeTooltip();
|
|
250
|
+
this.showDoneButton = true;
|
|
251
|
+
this.currentTourStep = this.currentTour?.exitStep;
|
|
252
|
+
setTimeout(() => {
|
|
253
|
+
this.handleClickBefore();
|
|
254
|
+
});
|
|
255
|
+
setTimeout(() => {
|
|
256
|
+
this.showStepTooltip();
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Try to find the element with the selector provided and if so click it. This is how tour steps will open/close menus to
|
|
262
|
+
* give a tour to the user
|
|
263
|
+
* @param selector
|
|
264
|
+
*/
|
|
265
|
+
clickElementIfFound(selector) {
|
|
266
|
+
if (selector !== undefined) {
|
|
267
|
+
const element = this.document.querySelector(selector);
|
|
268
|
+
if (element) {
|
|
269
|
+
element.click();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* When auto starting tours we will want to remove any that have the local storage key written as completed so
|
|
275
|
+
* they are not presented to the user again.
|
|
276
|
+
* @param tours
|
|
277
|
+
* @returns
|
|
278
|
+
*/
|
|
279
|
+
removeCompletedTours(tours) {
|
|
280
|
+
return tours.filter(tour => {
|
|
281
|
+
let cacheValue = this.cacheService.getItem(this.makeCacheKey(tour));
|
|
282
|
+
if (cacheValue) {
|
|
283
|
+
return !cacheValue.completed;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Writes a key to local storage so the tour will not be shown again automatically
|
|
292
|
+
*/
|
|
293
|
+
writeCompletionKey(tour) {
|
|
294
|
+
if (tour) {
|
|
295
|
+
this.cacheService.setItem(this.makeCacheKey(tour), { completed: true });
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* When dismissing a tour or one being dismissed via a navigation event, etc we will want to mark
|
|
300
|
+
* every tour in the array as completed so it doesn't resurface unless the user requests the tour.
|
|
301
|
+
* This function will loop over all and write the local storage key
|
|
302
|
+
*/
|
|
303
|
+
writeCompletionKeyForAllTours() {
|
|
304
|
+
this.tours.forEach(tour => {
|
|
305
|
+
this.writeCompletionKey(tour);
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Cache key used to set/get the completion status of a tour
|
|
310
|
+
* @param tour
|
|
311
|
+
* @returns
|
|
312
|
+
*/
|
|
313
|
+
makeCacheKey(tour) {
|
|
314
|
+
return `TourCompleted_${tour.id}`;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Removes a tooltip from the view, used when switching tour steps and closing a tour
|
|
318
|
+
*/
|
|
319
|
+
removeTooltip() {
|
|
320
|
+
this.tooltip?.overlayRef?.dispose();
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Returns the tour based on the current index
|
|
324
|
+
*/
|
|
325
|
+
get currentTour() {
|
|
326
|
+
if (this.currentTourIndex > -1 && this.currentTourIndex < this.tours.length) {
|
|
327
|
+
return this.tours[this.currentTourIndex];
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
return undefined;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
TourComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TourComponent, deps: [{ token: i1.TourService }, { token: i2.TooltipService }, { token: i3.TelemetryService }, { token: i4.CacheService }, { token: i5.DialogService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
335
|
+
TourComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TourComponent, selector: "ec-tour", viewQueries: [{ propertyName: "custom", first: true, predicate: ["tourTooltip"], descendants: true }], ngImport: i0, template: "<ng-template #tourTooltip>\r\n <div *ngIf=\"currentTourStep?.media\">\r\n <img class=\"mx-auto d-block\"\r\n style=\"width: 75%;\"\r\n src=\"{{currentTourStep?.media}}\">\r\n </div>\r\n <div class=\"px-3\">\r\n <p class=\"font-color-primary-light my-3\" [innerHtml]=\"currentTourStep?.text\"></p>\r\n <a *ngIf=\"currentTourStep?.helpLink\" class=\"tourHelp\" target=\"_blank\" href=\"{{currentTourStep?.helpLink}}\" translate>LearnMore_SC</a>\r\n </div>\r\n <footer class=\"px-3 pt-3 d-flex\">\r\n <button id=\"{{currentTourStep?.id + '_nextButton'}}\" *ngIf=\"!showDoneButton\" class=\"ml-auto tourAction\" ecLinkButton (click)=\"showNextStep()\" translate>Next_TC</button>\r\n <button id=\"{{currentTourStep?.id + '_doneButton'}}\" *ngIf=\"showDoneButton\" class=\"ml-auto tourAction\" ecLinkButton (click)=\"done()\" translate>Done_TC</button>\r\n </footer>\r\n</ng-template>", styles: [".tourAction{color:#dbe280!important}.tourHelp{color:#82c0d3}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.LinkButtonComponent, selector: "button[ecLinkButton]" }] });
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TourComponent, decorators: [{
|
|
337
|
+
type: Component,
|
|
338
|
+
args: [{ selector: 'ec-tour', template: "<ng-template #tourTooltip>\r\n <div *ngIf=\"currentTourStep?.media\">\r\n <img class=\"mx-auto d-block\"\r\n style=\"width: 75%;\"\r\n src=\"{{currentTourStep?.media}}\">\r\n </div>\r\n <div class=\"px-3\">\r\n <p class=\"font-color-primary-light my-3\" [innerHtml]=\"currentTourStep?.text\"></p>\r\n <a *ngIf=\"currentTourStep?.helpLink\" class=\"tourHelp\" target=\"_blank\" href=\"{{currentTourStep?.helpLink}}\" translate>LearnMore_SC</a>\r\n </div>\r\n <footer class=\"px-3 pt-3 d-flex\">\r\n <button id=\"{{currentTourStep?.id + '_nextButton'}}\" *ngIf=\"!showDoneButton\" class=\"ml-auto tourAction\" ecLinkButton (click)=\"showNextStep()\" translate>Next_TC</button>\r\n <button id=\"{{currentTourStep?.id + '_doneButton'}}\" *ngIf=\"showDoneButton\" class=\"ml-auto tourAction\" ecLinkButton (click)=\"done()\" translate>Done_TC</button>\r\n </footer>\r\n</ng-template>", styles: [".tourAction{color:#dbe280!important}.tourHelp{color:#82c0d3}\n"] }]
|
|
339
|
+
}], ctorParameters: function () { return [{ type: i1.TourService }, { type: i2.TooltipService }, { type: i3.TelemetryService }, { type: i4.CacheService }, { type: i5.DialogService }, { type: Document, decorators: [{
|
|
340
|
+
type: Inject,
|
|
341
|
+
args: [DOCUMENT]
|
|
342
|
+
}] }]; }, propDecorators: { custom: [{
|
|
343
|
+
type: ViewChild,
|
|
344
|
+
args: ['tourTooltip']
|
|
345
|
+
}] } });
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b3VyL3RvdXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdG91ci90b3VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBYzNDLE1BQU0sT0FBTyxhQUFhO0lBNEJ4QixZQUNVLFdBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxZQUEwQixFQUMxQixhQUE0QixFQUNWLFFBQWtCO1FBTHBDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ1YsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTVCOUM7O1dBRUc7UUFDSSxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUt2QyxxRUFBcUU7UUFDN0QsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUUzQiw0SEFBNEg7UUFDcEgscUJBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDOUIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFdEMsc0ZBQXNGO1FBQzlFLGdCQUFXLEdBQVks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LGFBQWEsb0tBa0NkLFFBQVE7OEZBbENQLGFBQWEsc0pDakIxQiw2N0JBY2M7MkZER0QsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxTQUFTO3VNQXNDbUIsUUFBUTswQkFBM0MsTUFBTTsyQkFBQyxRQUFROzRDQVJnQixNQUFNO3NCQUF2QyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RlbGVtZXRyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQsIFRvb2x0aXBPcHRpb25zIH0gZnJvbSAnLi8uLi90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcFNlcnZpY2UgfSBmcm9tICcuLy4uL3Rvb2x0aXAvdG9vbHRpcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG91ciwgVG91ckFuY2hvciwgVG91ckNhY2hlRW50cnksIFRvdXJFdmVudCwgVG91clN0ZXAgfSBmcm9tICcuL3RvdXItdHlwZXMnO1xyXG5pbXBvcnQgeyBUb3VyU2VydmljZSB9IGZyb20gJy4vdG91ci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtdG91cicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RvdXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RvdXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG91ckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLyoqIEN1cnJlbnQgdG91ciBzdGVwIGJlaW5nIHNob3duIHRvIHRoZSB1c2VyLiBUaGUgY3VzdG9tIGNvbnRlbnQgaW4gdGhlIHRlbXBsYXRlIGlzIGJvdW5kIHRvIHByb3BlcnRpZXMgb24gdGhpcyBhbmQgdGhlcmVmb3IgbmVlZHMgdG8gYmVcclxuICAqICBpdHMgb3duIHByb3BlcnR5LiBUaGUgZXhpdFN0ZXAgaXMgYSB0b3VyIHN0ZXAgYW5kIHRoaXMgd2lsbCBob2xkIHRoYXQgc3RlcCBhdCB0aGUgZW5kIG9mIHRoZSB0b3VyLlxyXG4gICovXHJcbiAgcHVibGljIGN1cnJlbnRUb3VyU3RlcD86IFRvdXJTdGVwO1xyXG5cclxuICAvKiogVXNlZCB0byB0ZWxsIHRoZSBVSSB0aGF0IHRoZSBzdGVwIGJlaW5nIHNob3duIGlzIGFuIGV4aXQgc3RlcC4gVGhpcyB3aWxsIGNoYW5nZSB0aGVcclxuICAgKiAgbGluayB0ZXh0IGFuZCB0aGUgYWN0aW9uIHdoZW4gY2xpY2tlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzaG93RG9uZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSB0b29sdGlwIHVzZWQgZm9yIHRoZSB0b3VyIHN0ZXBzICovXHJcbiAgcHVibGljIHRvb2x0aXA/OiBUb29sdGlwQ29tcG9uZW50O1xyXG5cclxuICAvKiogQXJyYXkgb2YgdG91cnMgcHJvdmlkZWQgd2hlbiB0aGUgc3RhcnQgdG91ciBldmVudCB3YXMgZGV0ZWN0ZWQgKi9cclxuICBwcml2YXRlIHRvdXJzOiBUb3VyW10gPSBbXTtcclxuXHJcbiAgLy8gQ291cGxlIGluZGV4ZXMgZm9yIHRoZSBjdXJyZW50IHRvdXIvc3RlcCBzdG9yZWQgZm9yIGVhc2llciByZWZlcmVuY2Ugd2hlbiBrbm93aW5nIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBzdGVwcy90b3Vyc1xyXG4gIHByaXZhdGUgY3VycmVudFN0ZXBJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgcHJpdmF0ZSBjdXJyZW50VG91ckluZGV4OiBudW1iZXIgPSAtMTtcclxuXHJcbiAgLyoqIFVzZWQgdG8ga25vdyBpZiB0aGUgcmVzdG9yZSBzdGVwIHNob3VsZCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgdG91ciBpcyBkaXNtaXNzZWQgKi9cclxuICBwcml2YXRlIGlzQXV0b1N0YXJ0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgndG91clRvb2x0aXAnKSBwcml2YXRlIGN1c3RvbSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0b3VyU2VydmljZTogVG91clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvb2x0aXBTZXJ2aWNlOiBUb29sdGlwU2VydmljZSxcclxuICAgIHByaXZhdGUgdGVsZW1ldHJ5U2VydmljZTogVGVsZW1ldHJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudG91clNlcnZpY2UuZXZlbnRzLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgaWYgKGV2ZW50LnRvdXJBY3Rpb24gPT09ICdzdGFydCcpIHtcclxuICAgICAgICB0aGlzLnNldHVwVG91ckNvbXBvbmVudChldmVudCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudG91ckFjdGlvbiA9PT0gJ2VuZCcpIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50VG91cikge1xyXG4gICAgICAgICAgdGhpcy53cml0ZUNvbXBsZXRpb25LZXlGb3JBbGxUb3VycygpO1xyXG4gICAgICAgICAgdGhpcy5lbmRUb3VyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCB3aGVuIGEgcmVzdG9yZSBzdGVwIGhhcyBiZWVuIGNvbXBsZXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkb25lKCk6IHZvaWQge1xyXG4gICAgdGhpcy53cml0ZUNvbXBsZXRpb25LZXkodGhpcy5jdXJyZW50VG91cik7XHJcbiAgICB0aGlzLmVuZFRvdXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCB3aGVuIGEgdG91ciBiZWdpbnMgYW5kIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG5leHQgb24gdGhlIGN1cnJlbnQgdG91ciBzdGVwLiBJdCB3aWxsIGhhbmRsZSBhbnkgYWZ0ZXIgY2xpY2sgYWN0aW9ucyBhbmQgdGhlblxyXG4gICAqIGZpbmQgdGhlIG5leHQgc3RlcCBhbmQgcHJlc2VudCBpdCB0byB0aGUgdXNlciBhbmQgdHJhbnNpdGlvbiB0byBhIHJlc3RvcmUgc3RlcCBvciBuZXcgdG91ciBpZiBuZWVkZWQuXHJcbiAgICovXHJcbiAgcHVibGljIHNob3dOZXh0U3RlcCgpOiB2b2lkIHtcclxuICAgIC8vIFRoZSBzZXRUaW1lb3V0cyB3ZXJlIGNhdXNpbmcgYSB0aW1pbmcgaXNzdWUgd2hlcmUgXCJ0aGlzLmN1cnJlbnRUb3VyU3RlcFwiIHdhcyBnZXR0aW5nIHNldCBiZWZvcmUgdGhpcyBjb3VsZFxyXG4gICAgLy8gZXhlY3V0ZSBhbmQgdGhlcmVmb3Igd2FzIHRyeWluZyB0byBydW4gdGhlIG5ldyB0b3VycyBmaXJzdCBzdGVwcyBjbGlja0FmdGVyLiBDYXB0dXJlIHRoZSBjbGlja0FmdGVyIHNlbGVjdG9yIHRvIGhhdmUgdGhlIHByaW9yIHJlZmVyZW5jZVxyXG4gICAgbGV0IHByZXZpb3VzU3RlcEFmdGVyQW5jaG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmN1cnJlbnRUb3VyU3RlcD8uYW5jaG9yPy5jbGlja0FmdGVyO1xyXG5cclxuICAgIC8vIEJlZm9yZSBtb3ZpbmcgdG8gdGhlIG5leHQgc3RlcCwgbWFrZSBzdXJlIHRoZSBjdXJyZW50IHN0ZXAgZG9lcyBub3QgaGF2ZSBhIGNsaWNrIGFmdGVyIGRlZmluZWQuIFRoaXMgY291bGQgYmUgaGlkaW5nIGEgbWVudVxyXG4gICAgLy8gdGhhdCB3YXMgb3BlbmVkIGZvciB0aGUgc29vbiB0byBiZSBwcmV2aW91cyBzdGVwLlxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2tBZnRlcihwcmV2aW91c1N0ZXBBZnRlckFuY2hvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBSZW1vdmUgYW55IHByZXZpb3VzIHRvb2x0aXBzXHJcbiAgICB0aGlzLnJlbW92ZVRvb2x0aXAoKTtcclxuXHJcbiAgICAvLyBHZXQgb3VyIG5leHQgc3RlcCBpbmRleCB0byBkaXNwbGF5IHRvIHRoZSB1c2VyXHJcbiAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLmdldE5leHRBdmFpbGFibGVTdGVwSW5kZXgoKTtcclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3RlcEluZGV4ID09PSAtMSkge1xyXG4gICAgICAvLyBObyBtb3JlIHN0ZXBzIGZvdW5kLCB3ZSBlaXRoZXIgbmVlZCB0byBjaGVjayBmb3IgdGhlIGV4aXQgc3RlcCBpZiB0aGlzIGlzIHRoZSBsYXN0IHRvdXJcclxuICAgICAgLy8gaW4gdGhlIHRvdXJzIGFycmF5IG9yIGFkdmFuY2UgdG8gdGhlIG5leHQgdG91clxyXG4gICAgICBpZiAodGhpcy5jdXJyZW50VG91ckluZGV4ID09PSB0aGlzLnRvdXJzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUV4aXRTdGVwKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gV3JpdGUgdGhlIGNvbXBsZXRpb24ga2V5IGZvciB0aGUgY3VycmVudCB0b3VyIGJlZm9yZSB3ZSBtb3ZlIHRvIHRoZSBuZXh0XHJcbiAgICAgICAgdGhpcy53cml0ZUNvbXBsZXRpb25LZXkodGhpcy5jdXJyZW50VG91cik7XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudFRvdXJJbmRleCsrO1xyXG4gICAgICAgIHRoaXMuc2hvd05leHRUb3VyKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRvdXJTdGVwID0gdGhpcy5jdXJyZW50VG91cj8uc3RlcHNbdGhpcy5jdXJyZW50U3RlcEluZGV4XTtcclxuXHJcbiAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgb3VyIGN1cnJlbnQgc3RlcCBpbmRleCwgdGFrZSBjYXJlIG9mIGFueSBjbGljayBiZWZvcmUgZWxlbWVudHMgYmVmb3JlIHNob3dpbmcgdGhlXHJcbiAgICAgIC8vIHRvb2x0aXAuIFRoaXMgY291bGQgYmUgb3BlbmluZyBhIG1lbnUgdG8gZ2V0IHRoZSB0b29sdGlwIGVsZW1lbnQgdmlzaWJsZS5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja0JlZm9yZSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIENsaWNrIGJlZm9yZXMgYXJlIGRvbmUsIG5vdyBsZXQncyBzaG93IHRoZSB0b29sdGlwIGRlZmluZWQgaW4gdGhlIHRvdXIgc3RlcFxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dTdGVwVG9vbHRpcCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBUb3VyQ29tcG9uZW50KGV2ZW50OiBUb3VyRXZlbnQpOiB2b2lkIHtcclxuICAgIC8vIEVuZCBhbnkgdG91cnMgdGhhdCBtYXkgaGF2ZSBiZWVuIGluIHByb2dyZXNzIGlmIHRoZSB1c2VyIGtpY2tzIG9mZiBhIG5ldyBvbmVcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUb3VyKSB7XHJcbiAgICAgIHRoaXMud3JpdGVDb21wbGV0aW9uS2V5Rm9yQWxsVG91cnMoKTtcclxuICAgICAgdGhpcy5lbmRUb3VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0F1dG9TdGFydCA9IGV2ZW50LmlzQXV0b1N0YXJ0O1xyXG5cclxuICAgIGlmIChldmVudC5pc0F1dG9TdGFydCkge1xyXG4gICAgICB0aGlzLnRvdXJzID0gdGhpcy5yZW1vdmVDb21wbGV0ZWRUb3VycyhldmVudC50b3Vycyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvdXJzID0gZXZlbnQudG91cnM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudG91cnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2hvd0RvbmVCdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuY3VycmVudFRvdXJTdGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXggPSAtMTtcclxuXHJcbiAgICAgIC8vIFByaW1lIHRoZSBpbmRleCBmb3IgdGhlIGZpcnN0IHRvdXJcclxuICAgICAgdGhpcy5jdXJyZW50VG91ckluZGV4ID0gMDtcclxuXHJcbiAgICAgIHRoaXMuc2hvd05leHRUb3VyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93cyBhIHRvdXIgYW5kIGVtaXRzIGFuIGV2ZW50IHRoYXQgaXQgd2FzIHN0YXJ0ZWRcclxuICAgKiBAcGFyYW0gdG91ciBcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIHNob3dOZXh0VG91cigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIFRyYWNrIGEgdG91ciBzdGFydGVkIGV2ZW50IGlmIHRoZSBjb25zdW1lciBvZiB0aGUgbGlicmFyeSBoYXMgdGVsZW1ldHJ5IGNvbmZpZ3VyZWRcclxuICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZS50cmFja0V2ZW50KCdUb3VyU3RhcnRlZCcsIHsgdG91cklkOiB0aGlzLmN1cnJlbnRUb3VyIS5pZCB9KTtcclxuXHJcbiAgICBsZXQgY29udGludWVUb3VyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0F1dG9TdGFydCAmJiB0aGlzLmN1cnJlbnRUb3VySW5kZXggPT09IDAgJiYgdGhpcy5jdXJyZW50VG91cj8uaW50cm9EaWFsb2cpIHtcclxuICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuRGlhbG9nKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFRvdXIuaW50cm9EaWFsb2cuY29udGVudCEsXHJcbiAgICAgICAgdGhpcy5jdXJyZW50VG91ci5pbnRyb0RpYWxvZy5zaXplID8/ICdzbWFsbCcsXHJcbiAgICAgICAgdGhpcy5jdXJyZW50VG91ci5pbnRyb0RpYWxvZy5jb250ZXh0ID8/IHVuZGVmaW5lZCxcclxuICAgICAgICB0aGlzLmN1cnJlbnRUb3VyLmludHJvRGlhbG9nLm9wdGlvbnMgPz8gdW5kZWZpbmVkKS50b1Byb21pc2UoKTtcclxuICAgICAgaWYgKCFyZXN1bHQuc2F2ZSkge1xyXG4gICAgICAgIGNvbnRpbnVlVG91ciA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLndyaXRlQ29tcGxldGlvbktleUZvckFsbFRvdXJzKCk7XHJcbiAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgbGFzdCB0b3VyIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBmb3IgaXRzIGV4aXQgc3RlcFxyXG4gICAgICAgIHRoaXMuY3VycmVudFRvdXJJbmRleCA9IHRoaXMudG91cnMubGVuZ3RoIC0gMTtcclxuICAgICAgICB0aGlzLmhhbmRsZUV4aXRTdGVwKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29udGludWVUb3VyKSB7XHJcbiAgICAgIHRoaXMuc2hvd05leHRTdGVwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuZFRvdXIoKTogdm9pZCB7XHJcbiAgICAvLyBUaGUgc2V0VGltZW91dHMgd2VyZSBjYXVzaW5nIGEgdGltaW5nIGlzc3VlIHdoZXJlIFwidGhpcy5jdXJyZW50VG91clN0ZXBcIiB3YXMgZ2V0dGluZyBzZXQgYmVmb3JlIHRoaXMgY291bGRcclxuICAgIC8vIGV4ZWN1dGUgYW5kIHRoZXJlZm9yIHdhcyB0cnlpbmcgdG8gcnVuIHRoZSBuZXcgdG91ciBjbGlja0FmdGVyLiBDYXB0dXJlIHRoZSBjbGlja0FmdGVyIHNlbGVjdG9yIHRvIGhhdmUgdGhlIHByaW9yIHJlZmVyZW5jZVxyXG4gICAgbGV0IGN1cnJlbnRUb3VyU3RlcEFmdGVyQW5jaG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmN1cnJlbnRUb3VyU3RlcD8uYW5jaG9yPy5jbGlja0FmdGVyO1xyXG5cclxuICAgIC8vIEhhbmRsZSBhbnkgY2xpY2sgYWZ0ZXJzIGZvciB0aGUgYWN0aXZlIHN0ZXAgc2hvd24gYmVmb3JlIHNodXR0aW5nIGl0IGRvd25cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZUNsaWNrQWZ0ZXIoY3VycmVudFRvdXJTdGVwQWZ0ZXJBbmNob3IpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50VG91clN0ZXAgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRvdXJzID0gW107XHJcblxyXG4gICAgdGhpcy5yZW1vdmVUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5cyBhIHRvb2x0aXAgZm9yIHRoZSBjdXJyZW50IHRvdXIgc3RlcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2hvd1N0ZXBUb29sdGlwKCkge1xyXG4gICAgLy8gVHJhY2sgYW4gZXZlbnQgaWYgdGhlIGNvbnN1bWVyIG9mIHRoZSBsaWJyYXJ5IGhhcyB0ZWxlbWV0cnkgY29uZmlndXJlZFxyXG4gICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRyYWNrRXZlbnQoJ1RvdXJTdGVwQ2hhbmdlJywgeyB0b3VySWQ6IHRoaXMuY3VycmVudFRvdXIhLmlkLCB0b3VyU3RlcElkOiB0aGlzLmN1cnJlbnRUb3VyU3RlcCEuaWQgfSk7XHJcblxyXG4gICAgY29uc3QgdG9vbHRpcEVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jdXJyZW50VG91clN0ZXAhLmFuY2hvciEuc2VsZWN0b3IpO1xyXG5cclxuICAgIGlmICh0b29sdGlwRWxlbWVudCkge1xyXG4gICAgICBjb25zdCBvcHRpb25zOiBUb29sdGlwT3B0aW9ucyA9IHtcclxuICAgICAgICBpZDogYCR7dGhpcy5jdXJyZW50VG91cj8uaWR9XyR7dGhpcy5jdXJyZW50VG91clN0ZXAhLmlkfWAsXHJcbiAgICAgICAgdGV4dDogdGhpcy5jdXJyZW50VG91clN0ZXAhLnRleHQsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMuY3VycmVudFRvdXJTdGVwIS50aXRsZSxcclxuICAgICAgICBjdXN0b21Db250ZW50OiB0aGlzLmN1c3RvbSxcclxuICAgICAgICBkaXNtaXNzaWJsZTogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogNDAwLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwMDVmN2EnXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnRvb2x0aXBTZXJ2aWNlLnNob3codG9vbHRpcEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsIHRoaXMuY3VycmVudFRvdXJTdGVwIS5hbmNob3I/LnBvc2l0aW9uLCBvcHRpb25zKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb1Rvb2x0aXBPbkhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZXMgdG8gdGhlIHRvb2x0aXBzIG9uSGlkZSBldmVudCBlbWl0dGVyIGFuZCByZWFjdHMgaWYgdGhlIHVzZXIgZGlzbWlzc2VzIHRoZSB0b29sdGlwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1Rvb2x0aXBPbkhpZGUoKTogdm9pZCB7XHJcbiAgICBsZXQgdG9vbHRpcFN1YnNjcmlwdGlvbiA9IHRoaXMudG9vbHRpcD8ub25IaWRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdG9vbHRpcFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgIHRoaXMud3JpdGVDb21wbGV0aW9uS2V5Rm9yQWxsVG91cnMoKTtcclxuICAgICAgLy8gSWYgdGhpcyBpcyBkaXNtaXNzZWQgZHVyaW5nIGFuIGF1dG8gc3RhcnQgdG91ciB0aGVuIGhhbmRsZSB0aGUgZXhpdCBzdGVwXHJcbiAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGRvbmUgYnV0dG9uIGlzIHNob3duIGFzIHdlbGwsIGlmIHRoZSBkb25lIGlzIHNob3duIHRoZW4gd2UncmUgaW4gdGhlIGV4aXQgc3RlcFxyXG4gICAgICAvLyBhbmQgZGlzbWlzc2luZyBzaG91bGQganVzdCBlbmQgdGhlIHRvdXJcclxuICAgICAgaWYgKHRoaXMuaXNBdXRvU3RhcnQgJiYgIXRoaXMuc2hvd0RvbmVCdXR0b24pIHtcclxuICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBsYXN0IHRvdXIgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGZvciBpdHMgZXhpdCBzdGVwXHJcbiAgICAgICAgdGhpcy5jdXJyZW50VG91ckluZGV4ID0gdGhpcy50b3Vycy5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZUV4aXRTdGVwKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbmRUb3VyKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9vcHMgdGhyb3VnaCB0aGUgY3VycmVudCB0b3VyIHN0ZXBzIHN0YXJ0aW5nIGFmdGVyIHRoZSBjdXJyZW50IHN0ZXAgaW5kZXguIEl0IHdpbGwgdHJ5IHRvIGZpbmQgYSB2aXNpYmxlXHJcbiAgICogc2VsZWN0b3IgYW5kIGlmIHNvIHJldHVybiB0aGUgaW5kZXguXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXROZXh0QXZhaWxhYmxlU3RlcEluZGV4KCk6IG51bWJlciB7XHJcbiAgICBsZXQgbmV4dFN0ZXBJbmRleDogbnVtYmVyID0gLTE7XHJcblxyXG4gICAgLy8gTG9vayB0aHJvdWdoIHRoZSBzdGVwcyBzdGFydGluZyB3aXRoIHRoZSBjdXJyZW50IGluZGV4IGFuZCBmaW5kIHRoZSBuZXh0IHRoYXQgaXMgYXZhaWFibGVcclxuICAgIC8vIGZvciB0aGUgdXNlci5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IHRoaXMuY3VycmVudFN0ZXBJbmRleCArIDE7IGkgPCB0aGlzLmN1cnJlbnRUb3VyIS5zdGVwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodGhpcy5jdXJyZW50VG91cj8uc3RlcHNbaV0uYW5jaG9yICYmIHRoaXMuc3RlcEVsZW1lbnRGb3VuZCh0aGlzLmN1cnJlbnRUb3VyPy5zdGVwc1tpXS5hbmNob3IhKSkge1xyXG4gICAgICAgIHJldHVybiBpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5leHRTdGVwSW5kZXg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcnkgdG8gZmluZCB0aGUgdG91ciBzdGVwIGVsZW1lbnQgdG8ga25vdyBpZiBpdCBpcyB2aXNpYmxlIGZvciB0aGUgdXNlci4gQ2hlY2sgZm9yIHRoZSBjbGlja0JlZm9yZSBmaXJzdCBpZiBkZWZpbmVkXHJcbiAgICogQHBhcmFtIGFuY2hvciBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwcml2YXRlIHN0ZXBFbGVtZW50Rm91bmQoYW5jaG9yOiBUb3VyQW5jaG9yKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYW5jaG9yLmNsaWNrQmVmb3JlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYW5jaG9yLmNsaWNrQmVmb3JlKSAhPT0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYW5jaG9yLnNlbGVjdG9yKSAhPT0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNvbWUgdG91ciBzdGVwcyBtYXkgaGF2ZSBhIGNsaWNrIGFmdGVyIGRlZmluZWQuIElmIHNvIGNhbGwgdGhlIGNsaWNrIG1ldGhvZCBvbiB0aGUgaHRtbCBlbGVtZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVDbGlja0FmdGVyKHNlbGVjdG9yPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2VsZWN0b3IpIHtcclxuICAgICAgdGhpcy5jbGlja0VsZW1lbnRJZkZvdW5kKHNlbGVjdG9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNvbWUgdG91ciBzdGVwcyBtYXkgaGF2ZSBhIGNsaWNrIGJlZm9yZSBkZWZpbmVkLiBJZiBzbyBjYWxsIHRoZSBjbGljayBtZXRob2Qgb24gdGhlIGh0bWwgZWxlbWVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlQ2xpY2tCZWZvcmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50VG91clN0ZXA/LmFuY2hvcj8uY2xpY2tCZWZvcmUpIHtcclxuICAgICAgdGhpcy5jbGlja0VsZW1lbnRJZkZvdW5kKHRoaXMuY3VycmVudFRvdXJTdGVwLmFuY2hvcj8uY2xpY2tCZWZvcmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBDaGVja3MgZm9yIGFuIGV4aXQgc3RlcCBvbiB0aGUgY3VycmVudCB0b3VyIGFuZCBpZiBmb3VuZCBkaXNwbGF5cyB0aGUgc3RlcFxyXG4gICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVFeGl0U3RlcCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUb3VyPy5leGl0U3RlcCkge1xyXG4gICAgICB0aGlzLnJlbW92ZVRvb2x0aXAoKTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0RvbmVCdXR0b24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmN1cnJlbnRUb3VyU3RlcCA9IHRoaXMuY3VycmVudFRvdXI/LmV4aXRTdGVwO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja0JlZm9yZSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd1N0ZXBUb29sdGlwKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ5IHRvIGZpbmQgdGhlIGVsZW1lbnQgd2l0aCB0aGUgc2VsZWN0b3IgcHJvdmlkZWQgYW5kIGlmIHNvIGNsaWNrIGl0LiBUaGlzIGlzIGhvdyB0b3VyIHN0ZXBzIHdpbGwgb3Blbi9jbG9zZSBtZW51cyB0b1xyXG4gICAqIGdpdmUgYSB0b3VyIHRvIHRoZSB1c2VyXHJcbiAgICogQHBhcmFtIHNlbGVjdG9yIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xpY2tFbGVtZW50SWZGb3VuZChzZWxlY3Rvcjogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAoc2VsZWN0b3IgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcclxuICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICAoZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBhdXRvIHN0YXJ0aW5nIHRvdXJzIHdlIHdpbGwgd2FudCB0byByZW1vdmUgYW55IHRoYXQgaGF2ZSB0aGUgbG9jYWwgc3RvcmFnZSBrZXkgd3JpdHRlbiBhcyBjb21wbGV0ZWQgc29cclxuICAgKiB0aGV5IGFyZSBub3QgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGFnYWluLlxyXG4gICAqIEBwYXJhbSB0b3VycyBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZUNvbXBsZXRlZFRvdXJzKHRvdXJzOiBUb3VyW10pOiBUb3VyW10ge1xyXG4gICAgcmV0dXJuIHRvdXJzLmZpbHRlcih0b3VyID0+IHtcclxuICAgICAgbGV0IGNhY2hlVmFsdWUgPSB0aGlzLmNhY2hlU2VydmljZS5nZXRJdGVtPFRvdXJDYWNoZUVudHJ5Pih0aGlzLm1ha2VDYWNoZUtleSh0b3VyKSk7XHJcbiAgICAgIGlmIChjYWNoZVZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuICFjYWNoZVZhbHVlLmNvbXBsZXRlZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZXMgYSBrZXkgdG8gbG9jYWwgc3RvcmFnZSBzbyB0aGUgdG91ciB3aWxsIG5vdCBiZSBzaG93biBhZ2FpbiBhdXRvbWF0aWNhbGx5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSB3cml0ZUNvbXBsZXRpb25LZXkodG91cjogVG91ciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgaWYgKHRvdXIpIHtcclxuICAgICAgdGhpcy5jYWNoZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLm1ha2VDYWNoZUtleSh0b3VyKSwgPFRvdXJDYWNoZUVudHJ5PnsgY29tcGxldGVkOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBkaXNtaXNzaW5nIGEgdG91ciBvciBvbmUgYmVpbmcgZGlzbWlzc2VkIHZpYSBhIG5hdmlnYXRpb24gZXZlbnQsIGV0YyB3ZSB3aWxsIHdhbnQgdG8gbWFya1xyXG4gICAqIGV2ZXJ5IHRvdXIgaW4gdGhlIGFycmF5IGFzIGNvbXBsZXRlZCBzbyBpdCBkb2Vzbid0IHJlc3VyZmFjZSB1bmxlc3MgdGhlIHVzZXIgcmVxdWVzdHMgdGhlIHRvdXIuXHJcbiAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGxvb3Agb3ZlciBhbGwgYW5kIHdyaXRlIHRoZSBsb2NhbCBzdG9yYWdlIGtleVxyXG4gICAqL1xyXG4gIHByaXZhdGUgd3JpdGVDb21wbGV0aW9uS2V5Rm9yQWxsVG91cnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvdXJzLmZvckVhY2godG91ciA9PiB7XHJcbiAgICAgIHRoaXMud3JpdGVDb21wbGV0aW9uS2V5KHRvdXIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWNoZSBrZXkgdXNlZCB0byBzZXQvZ2V0IHRoZSBjb21wbGV0aW9uIHN0YXR1cyBvZiBhIHRvdXJcclxuICAgKiBAcGFyYW0gdG91ciBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwcml2YXRlIG1ha2VDYWNoZUtleSh0b3VyOiBUb3VyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgVG91ckNvbXBsZXRlZF8ke3RvdXIuaWR9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSB0b29sdGlwIGZyb20gdGhlIHZpZXcsIHVzZWQgd2hlbiBzd2l0Y2hpbmcgdG91ciBzdGVwcyBhbmQgY2xvc2luZyBhIHRvdXJcclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZVRvb2x0aXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvb2x0aXA/Lm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRvdXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgaW5kZXhcclxuICAgKi9cclxuICBwcml2YXRlIGdldCBjdXJyZW50VG91cigpOiBUb3VyIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUb3VySW5kZXggPiAtMSAmJiB0aGlzLmN1cnJlbnRUb3VySW5kZXggPCB0aGlzLnRvdXJzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gdGhpcy50b3Vyc1t0aGlzLmN1cnJlbnRUb3VySW5kZXhdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICN0b3VyVG9vbHRpcD5cclxuICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50VG91clN0ZXA/Lm1lZGlhXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cIm14LWF1dG8gZC1ibG9ja1wiXHJcbiAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA3NSU7XCJcclxuICAgICAgICAgICAgIHNyYz1cInt7Y3VycmVudFRvdXJTdGVwPy5tZWRpYX19XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJweC0zXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJmb250LWNvbG9yLXByaW1hcnktbGlnaHQgbXktM1wiIFtpbm5lckh0bWxdPVwiY3VycmVudFRvdXJTdGVwPy50ZXh0XCI+PC9wPlxyXG4gICAgICAgIDxhICpuZ0lmPVwiY3VycmVudFRvdXJTdGVwPy5oZWxwTGlua1wiIGNsYXNzPVwidG91ckhlbHBcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3tjdXJyZW50VG91clN0ZXA/LmhlbHBMaW5rfX1cIiB0cmFuc2xhdGU+TGVhcm5Nb3JlX1NDPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Zm9vdGVyIGNsYXNzPVwicHgtMyBwdC0zIGQtZmxleFwiPlxyXG4gICAgICAgIDxidXR0b24gaWQ9XCJ7e2N1cnJlbnRUb3VyU3RlcD8uaWQgKyAnX25leHRCdXR0b24nfX1cIiAqbmdJZj1cIiFzaG93RG9uZUJ1dHRvblwiIGNsYXNzPVwibWwtYXV0byB0b3VyQWN0aW9uXCIgZWNMaW5rQnV0dG9uIChjbGljayk9XCJzaG93TmV4dFN0ZXAoKVwiIHRyYW5zbGF0ZT5OZXh0X1RDPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBpZD1cInt7Y3VycmVudFRvdXJTdGVwPy5pZCArICdfZG9uZUJ1dHRvbid9fVwiICpuZ0lmPVwic2hvd0RvbmVCdXR0b25cIiBjbGFzcz1cIm1sLWF1dG8gdG91ckFjdGlvblwiIGVjTGlua0J1dHRvbiAoY2xpY2spPVwiZG9uZSgpXCIgdHJhbnNsYXRlPkRvbmVfVEM8L2J1dHRvbj5cclxuICAgIDwvZm9vdGVyPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|