@syncfusion/ej2-angular-schedule 23.2.7 → 24.1.41

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.
Files changed (100) hide show
  1. package/esm2020/src/index.mjs +2 -1
  2. package/esm2020/src/schedule/schedule-all.module.mjs +1 -1
  3. package/esm2020/src/schedule/schedule.component.mjs +10 -5
  4. package/esm2020/src/schedule/schedule.module.mjs +14 -5
  5. package/esm2020/src/schedule/toolbaritems.directive.mjs +67 -0
  6. package/esm2020/src/schedule/views.directive.mjs +3 -3
  7. package/fesm2015/syncfusion-ej2-angular-schedule.mjs +102 -28
  8. package/fesm2015/syncfusion-ej2-angular-schedule.mjs.map +1 -1
  9. package/fesm2020/syncfusion-ej2-angular-schedule.mjs +102 -28
  10. package/fesm2020/syncfusion-ej2-angular-schedule.mjs.map +1 -1
  11. package/package.json +9 -9
  12. package/schematics/utils/lib-details.d.ts +2 -2
  13. package/schematics/utils/lib-details.js +2 -2
  14. package/schematics/utils/lib-details.ts +2 -2
  15. package/src/index.d.ts +1 -0
  16. package/src/schedule/schedule.component.d.ts +3 -1
  17. package/src/schedule/schedule.module.d.ts +3 -2
  18. package/src/schedule/toolbaritems.directive.d.ts +177 -0
  19. package/src/schedule/views.directive.d.ts +8 -1
  20. package/styles/bootstrap-dark.css +26 -22
  21. package/styles/bootstrap.css +26 -22
  22. package/styles/bootstrap4.css +25 -21
  23. package/styles/bootstrap5-dark.css +30 -26
  24. package/styles/bootstrap5.css +30 -26
  25. package/styles/fabric-dark.css +28 -24
  26. package/styles/fabric.css +28 -24
  27. package/styles/fluent-dark.css +28 -24
  28. package/styles/fluent.css +28 -24
  29. package/styles/highcontrast-light.css +26 -22
  30. package/styles/highcontrast.css +26 -22
  31. package/styles/material-dark.css +26 -22
  32. package/styles/material.css +26 -22
  33. package/styles/material3-dark.css +29 -25
  34. package/styles/material3.css +29 -25
  35. package/styles/recurrence-editor/_bootstrap-dark-definition.scss +3 -1
  36. package/styles/recurrence-editor/_bootstrap-definition.scss +3 -1
  37. package/styles/recurrence-editor/_bootstrap4-definition.scss +3 -1
  38. package/styles/recurrence-editor/_bootstrap5-definition.scss +5 -3
  39. package/styles/recurrence-editor/_fabric-dark-definition.scss +4 -2
  40. package/styles/recurrence-editor/_fabric-definition.scss +4 -2
  41. package/styles/recurrence-editor/_fluent-definition.scss +4 -2
  42. package/styles/recurrence-editor/_fusionnew-definition.scss +4 -2
  43. package/styles/recurrence-editor/_highcontrast-definition.scss +3 -1
  44. package/styles/recurrence-editor/_highcontrast-light-definition.scss +3 -1
  45. package/styles/recurrence-editor/_layout.scss +3 -10
  46. package/styles/recurrence-editor/_material-dark-definition.scss +3 -1
  47. package/styles/recurrence-editor/_material-definition.scss +3 -1
  48. package/styles/recurrence-editor/_material3-definition.scss +4 -2
  49. package/styles/recurrence-editor/_tailwind-definition.scss +5 -3
  50. package/styles/recurrence-editor/bootstrap-dark.css +5 -10
  51. package/styles/recurrence-editor/bootstrap.css +5 -10
  52. package/styles/recurrence-editor/bootstrap4.css +4 -9
  53. package/styles/recurrence-editor/bootstrap5-dark.css +9 -14
  54. package/styles/recurrence-editor/bootstrap5.css +9 -14
  55. package/styles/recurrence-editor/fabric-dark.css +7 -12
  56. package/styles/recurrence-editor/fabric.css +7 -12
  57. package/styles/recurrence-editor/fluent-dark.css +7 -12
  58. package/styles/recurrence-editor/fluent.css +7 -12
  59. package/styles/recurrence-editor/highcontrast-light.css +5 -10
  60. package/styles/recurrence-editor/highcontrast.css +5 -10
  61. package/styles/recurrence-editor/material-dark.css +5 -10
  62. package/styles/recurrence-editor/material.css +5 -10
  63. package/styles/recurrence-editor/material3-dark.css +7 -12
  64. package/styles/recurrence-editor/material3.css +7 -12
  65. package/styles/recurrence-editor/tailwind-dark.css +9 -14
  66. package/styles/recurrence-editor/tailwind.css +9 -14
  67. package/styles/schedule/_bootstrap-dark-definition.scss +6 -2
  68. package/styles/schedule/_bootstrap-definition.scss +6 -2
  69. package/styles/schedule/_bootstrap4-definition.scss +6 -2
  70. package/styles/schedule/_bootstrap5-definition.scss +6 -2
  71. package/styles/schedule/_fabric-dark-definition.scss +6 -2
  72. package/styles/schedule/_fabric-definition.scss +6 -2
  73. package/styles/schedule/_fluent-definition.scss +6 -2
  74. package/styles/schedule/_fusionnew-definition.scss +6 -2
  75. package/styles/schedule/_highcontrast-definition.scss +6 -2
  76. package/styles/schedule/_highcontrast-light-definition.scss +6 -2
  77. package/styles/schedule/_layout.scss +23 -10
  78. package/styles/schedule/_material-dark-definition.scss +6 -2
  79. package/styles/schedule/_material-definition.scss +6 -2
  80. package/styles/schedule/_material3-definition.scss +6 -2
  81. package/styles/schedule/_tailwind-definition.scss +6 -2
  82. package/styles/schedule/bootstrap-dark.css +21 -12
  83. package/styles/schedule/bootstrap.css +21 -12
  84. package/styles/schedule/bootstrap4.css +21 -12
  85. package/styles/schedule/bootstrap5-dark.css +21 -12
  86. package/styles/schedule/bootstrap5.css +21 -12
  87. package/styles/schedule/fabric-dark.css +21 -12
  88. package/styles/schedule/fabric.css +21 -12
  89. package/styles/schedule/fluent-dark.css +21 -12
  90. package/styles/schedule/fluent.css +21 -12
  91. package/styles/schedule/highcontrast-light.css +21 -12
  92. package/styles/schedule/highcontrast.css +21 -12
  93. package/styles/schedule/material-dark.css +21 -12
  94. package/styles/schedule/material.css +21 -12
  95. package/styles/schedule/material3-dark.css +22 -13
  96. package/styles/schedule/material3.css +22 -13
  97. package/styles/schedule/tailwind-dark.css +22 -13
  98. package/styles/schedule/tailwind.css +22 -13
  99. package/styles/tailwind-dark.css +31 -27
  100. package/styles/tailwind.css +31 -27
@@ -3,7 +3,7 @@ import { Directive, ContentChildren, ContentChild } from '@angular/core';
3
3
  import { ComplexBase, ArrayBase, setValue } from '@syncfusion/ej2-angular-base';
4
4
  import { Template } from '@syncfusion/ej2-angular-base';
5
5
  import * as i0 from "@angular/core";
6
- let input = ['allowVirtualScrolling', 'cellHeaderTemplate', 'cellTemplate', 'dateFormat', 'dateHeaderTemplate', 'dateRangeTemplate', 'dayHeaderTemplate', 'displayDate', 'displayName', 'enableLazyLoading', 'endHour', 'eventTemplate', 'firstDayOfWeek', 'firstMonthOfYear', 'group', 'headerIndentTemplate', 'headerRows', 'interval', 'isSelected', 'monthHeaderTemplate', 'monthsCount', 'numberOfWeeks', 'option', 'orientation', 'readonly', 'resourceHeaderTemplate', 'showWeekNumber', 'showWeekend', 'startHour', 'timeFormat', 'timeScale', 'workDays'];
6
+ let input = ['allowVirtualScrolling', 'cellHeaderTemplate', 'cellTemplate', 'dateFormat', 'dateHeaderTemplate', 'dateRangeTemplate', 'dayHeaderTemplate', 'displayDate', 'displayName', 'enableLazyLoading', 'endHour', 'eventTemplate', 'firstDayOfWeek', 'firstMonthOfYear', 'group', 'headerIndentTemplate', 'headerRows', 'interval', 'isSelected', 'maxEventsPerRow', 'monthHeaderTemplate', 'monthsCount', 'numberOfWeeks', 'option', 'orientation', 'readonly', 'resourceHeaderTemplate', 'showWeekNumber', 'showWeekend', 'startHour', 'timeFormat', 'timeScale', 'workDays'];
7
7
  let outputs = [];
8
8
  /**
9
9
  * `e-views` directive represent a view of the Angular Schedule.
@@ -27,7 +27,7 @@ export class ViewDirective extends ComplexBase {
27
27
  }
28
28
  }
29
29
  ViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ViewDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
30
- ViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ViewDirective, selector: "e-views>e-view", inputs: { allowVirtualScrolling: "allowVirtualScrolling", cellHeaderTemplate: "cellHeaderTemplate", cellTemplate: "cellTemplate", dateFormat: "dateFormat", dateHeaderTemplate: "dateHeaderTemplate", dateRangeTemplate: "dateRangeTemplate", dayHeaderTemplate: "dayHeaderTemplate", displayDate: "displayDate", displayName: "displayName", enableLazyLoading: "enableLazyLoading", endHour: "endHour", eventTemplate: "eventTemplate", firstDayOfWeek: "firstDayOfWeek", firstMonthOfYear: "firstMonthOfYear", group: "group", headerIndentTemplate: "headerIndentTemplate", headerRows: "headerRows", interval: "interval", isSelected: "isSelected", monthHeaderTemplate: "monthHeaderTemplate", monthsCount: "monthsCount", numberOfWeeks: "numberOfWeeks", option: "option", orientation: "orientation", readonly: "readonly", resourceHeaderTemplate: "resourceHeaderTemplate", showWeekNumber: "showWeekNumber", showWeekend: "showWeekend", startHour: "startHour", timeFormat: "timeFormat", timeScale: "timeScale", workDays: "workDays" }, queries: [{ propertyName: "dateHeaderTemplate", first: true, predicate: ["dateHeaderTemplate"], descendants: true }, { propertyName: "dateRangeTemplate", first: true, predicate: ["dateRangeTemplate"], descendants: true }, { propertyName: "dayHeaderTemplate", first: true, predicate: ["dayHeaderTemplate"], descendants: true }, { propertyName: "cellHeaderTemplate", first: true, predicate: ["cellHeaderTemplate"], descendants: true }, { propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true }, { propertyName: "eventTemplate", first: true, predicate: ["eventTemplate"], descendants: true }, { propertyName: "monthHeaderTemplate", first: true, predicate: ["monthHeaderTemplate"], descendants: true }, { propertyName: "resourceHeaderTemplate", first: true, predicate: ["resourceHeaderTemplate"], descendants: true }, { propertyName: "headerIndentTemplate", first: true, predicate: ["headerIndentTemplate"], descendants: true }, { propertyName: "timeScale_minorSlotTemplate", first: true, predicate: ["timeScaleMinorSlotTemplate"], descendants: true }, { propertyName: "timeScale_majorSlotTemplate", first: true, predicate: ["timeScaleMajorSlotTemplate"], descendants: true }, { propertyName: "group_headerTooltipTemplate", first: true, predicate: ["groupHeaderTooltipTemplate"], descendants: true }], usesInheritance: true, ngImport: i0 });
30
+ ViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ViewDirective, selector: "e-views>e-view", inputs: { allowVirtualScrolling: "allowVirtualScrolling", cellHeaderTemplate: "cellHeaderTemplate", cellTemplate: "cellTemplate", dateFormat: "dateFormat", dateHeaderTemplate: "dateHeaderTemplate", dateRangeTemplate: "dateRangeTemplate", dayHeaderTemplate: "dayHeaderTemplate", displayDate: "displayDate", displayName: "displayName", enableLazyLoading: "enableLazyLoading", endHour: "endHour", eventTemplate: "eventTemplate", firstDayOfWeek: "firstDayOfWeek", firstMonthOfYear: "firstMonthOfYear", group: "group", headerIndentTemplate: "headerIndentTemplate", headerRows: "headerRows", interval: "interval", isSelected: "isSelected", maxEventsPerRow: "maxEventsPerRow", monthHeaderTemplate: "monthHeaderTemplate", monthsCount: "monthsCount", numberOfWeeks: "numberOfWeeks", option: "option", orientation: "orientation", readonly: "readonly", resourceHeaderTemplate: "resourceHeaderTemplate", showWeekNumber: "showWeekNumber", showWeekend: "showWeekend", startHour: "startHour", timeFormat: "timeFormat", timeScale: "timeScale", workDays: "workDays" }, queries: [{ propertyName: "dateHeaderTemplate", first: true, predicate: ["dateHeaderTemplate"], descendants: true }, { propertyName: "dateRangeTemplate", first: true, predicate: ["dateRangeTemplate"], descendants: true }, { propertyName: "dayHeaderTemplate", first: true, predicate: ["dayHeaderTemplate"], descendants: true }, { propertyName: "cellHeaderTemplate", first: true, predicate: ["cellHeaderTemplate"], descendants: true }, { propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true }, { propertyName: "eventTemplate", first: true, predicate: ["eventTemplate"], descendants: true }, { propertyName: "monthHeaderTemplate", first: true, predicate: ["monthHeaderTemplate"], descendants: true }, { propertyName: "resourceHeaderTemplate", first: true, predicate: ["resourceHeaderTemplate"], descendants: true }, { propertyName: "headerIndentTemplate", first: true, predicate: ["headerIndentTemplate"], descendants: true }, { propertyName: "timeScale_minorSlotTemplate", first: true, predicate: ["timeScaleMinorSlotTemplate"], descendants: true }, { propertyName: "timeScale_majorSlotTemplate", first: true, predicate: ["timeScaleMajorSlotTemplate"], descendants: true }, { propertyName: "group_headerTooltipTemplate", first: true, predicate: ["groupHeaderTooltipTemplate"], descendants: true }], usesInheritance: true, ngImport: i0 });
31
31
  __decorate([
32
32
  Template()
33
33
  ], ViewDirective.prototype, "dateHeaderTemplate", void 0);
@@ -129,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
129
129
  },
130
130
  }]
131
131
  }], ctorParameters: function () { return []; } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NjaGVkdWxlL3ZpZXdzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR3hELElBQUksS0FBSyxHQUFhLENBQUMsdUJBQXVCLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdpQixJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDM0I7Ozs7Ozs7Ozs7O0dBV0c7QUFTSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFdBQTBCO0lBa1N6RCxZQUFvQixnQkFBaUM7UUFDakQsS0FBSyxFQUFFLENBQUM7UUFEUSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBRWpELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7OzBHQXZTUSxhQUFhOzhGQUFiLGFBQWE7QUErS3RCO0lBREMsUUFBUSxFQUFFO3lEQUNvQjtBQVcvQjtJQURDLFFBQVEsRUFBRTt3REFDbUI7QUFhOUI7SUFEQyxRQUFRLEVBQUU7d0RBQ21CO0FBYTlCO0lBREMsUUFBUSxFQUFFO3lEQUNvQjtBQWEvQjtJQURDLFFBQVEsRUFBRTttREFDYztBQWN6QjtJQURDLFFBQVEsRUFBRTtvREFDZTtBQWExQjtJQURDLFFBQVEsRUFBRTswREFDcUI7QUFjaEM7SUFEQyxRQUFRLEVBQUU7NkRBQ3dCO0FBYW5DO0lBREMsUUFBUSxFQUFFOzJEQUNzQjtBQUdqQztJQURDLFFBQVEsRUFBRTtrRUFDNkI7QUFHeEM7SUFEQyxRQUFRLEVBQUU7a0VBQzZCO0FBR3hDO0lBREMsUUFBUSxFQUFFO2tFQUM2QjsyRkFoUy9CLGFBQWE7a0JBUnpCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRSxFQUVSO2lCQUNKO3VHQWdMVSxrQkFBa0I7c0JBRnhCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQWEzQixpQkFBaUI7c0JBRnZCLFlBQVk7dUJBQUMsbUJBQW1CO2dCQWUxQixpQkFBaUI7c0JBRnZCLFlBQVk7dUJBQUMsbUJBQW1CO2dCQWUxQixrQkFBa0I7c0JBRnhCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQWUzQixZQUFZO3NCQUZsQixZQUFZO3VCQUFDLGNBQWM7Z0JBZ0JyQixhQUFhO3NCQUZuQixZQUFZO3VCQUFDLGVBQWU7Z0JBZXRCLG1CQUFtQjtzQkFGekIsWUFBWTt1QkFBQyxxQkFBcUI7Z0JBZ0I1QixzQkFBc0I7c0JBRjVCLFlBQVk7dUJBQUMsd0JBQXdCO2dCQWUvQixvQkFBb0I7c0JBRjFCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQUs3QiwyQkFBMkI7c0JBRmpDLFlBQVk7dUJBQUMsNEJBQTRCO2dCQUtuQywyQkFBMkI7c0JBRmpDLFlBQVk7dUJBQUMsNEJBQTRCO2dCQUtuQywyQkFBMkI7c0JBRmpDLFlBQVk7dUJBQUMsNEJBQTRCOztBQVk5Qzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQXlCO0lBQ3pEO1FBQ0ksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLENBQUM7OzJHQUhRLGNBQWM7K0ZBQWQsY0FBYyxxRkFIVyxhQUFhOzJGQUd0QyxjQUFjO2tCQU4xQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLE9BQU8sRUFBRTt3QkFDTCxRQUFRLEVBQUUsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDO3FCQUMvQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgQ29udGVudENoaWxkcmVuLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBsZXhCYXNlLCBBcnJheUJhc2UsIHNldFZhbHVlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuXG5cbmxldCBpbnB1dDogc3RyaW5nW10gPSBbJ2FsbG93VmlydHVhbFNjcm9sbGluZycsICdjZWxsSGVhZGVyVGVtcGxhdGUnLCAnY2VsbFRlbXBsYXRlJywgJ2RhdGVGb3JtYXQnLCAnZGF0ZUhlYWRlclRlbXBsYXRlJywgJ2RhdGVSYW5nZVRlbXBsYXRlJywgJ2RheUhlYWRlclRlbXBsYXRlJywgJ2Rpc3BsYXlEYXRlJywgJ2Rpc3BsYXlOYW1lJywgJ2VuYWJsZUxhenlMb2FkaW5nJywgJ2VuZEhvdXInLCAnZXZlbnRUZW1wbGF0ZScsICdmaXJzdERheU9mV2VlaycsICdmaXJzdE1vbnRoT2ZZZWFyJywgJ2dyb3VwJywgJ2hlYWRlckluZGVudFRlbXBsYXRlJywgJ2hlYWRlclJvd3MnLCAnaW50ZXJ2YWwnLCAnaXNTZWxlY3RlZCcsICdtb250aEhlYWRlclRlbXBsYXRlJywgJ21vbnRoc0NvdW50JywgJ251bWJlck9mV2Vla3MnLCAnb3B0aW9uJywgJ29yaWVudGF0aW9uJywgJ3JlYWRvbmx5JywgJ3Jlc291cmNlSGVhZGVyVGVtcGxhdGUnLCAnc2hvd1dlZWtOdW1iZXInLCAnc2hvd1dlZWtlbmQnLCAnc3RhcnRIb3VyJywgJ3RpbWVGb3JtYXQnLCAndGltZVNjYWxlJywgJ3dvcmtEYXlzJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogYGUtdmlld3NgIGRpcmVjdGl2ZSByZXByZXNlbnQgYSB2aWV3IG9mIHRoZSBBbmd1bGFyIFNjaGVkdWxlLiBcbiAqIEl0IG11c3QgYmUgY29udGFpbmVkIGluIGEgU2NoZWR1bGUgY29tcG9uZW50KGBlanMtc2NoZWR1bGVgKS4gXG4gKiBgYGBodG1sXG4gKiA8ZWpzLXNjaGVkdWxlPlxuICogICA8ZS12aWV3cz5cbiAqICAgIDxlLXZpZXcgb3B0aW9uPSdkYXknIGRhdGVGb3JtYXQ9J2RkIE1NTSc+PC9lLXZpZXc+XG4gKiAgICA8ZS12aWV3IG9wdGlvbj0nd2Vlayc+PC9lLXZpZXc+XG4gKiAgIDwvZS12aWV3cz5cbiAqIDwvZWpzLXNjaGVkdWxlPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnZS12aWV3cz5lLXZpZXcnLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3RGlyZWN0aXZlIGV4dGVuZHMgQ29tcGxleEJhc2U8Vmlld0RpcmVjdGl2ZT4ge1xuICAgIHB1YmxpYyBkaXJlY3RpdmVQcm9wTGlzdDogYW55O1xuXHRcblxuXG4gICAgLyoqIFxuICAgICAqIEl0IGlzIHVzZWQgdG8gYWxsb3cgb3IgZGlzYWxsb3cgdGhlIHZpcnR1YWwgc2Nyb2xsaW5nIGZ1bmN0aW9uYWxpdHkuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dWaXJ0dWFsU2Nyb2xsaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEJ5IGRlZmF1bHQsIFNjaGVkdWxlIGZvbGxvd3MgdGhlIGRhdGUtZm9ybWF0IGFzIHBlciB0aGUgZGVmYXVsdCBjdWx0dXJlIGFzc2lnbmVkIHRvIGl0LiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIG1hbnVhbGx5IHNldCBcbiAgICAgKiAgc3BlY2lmaWMgZGF0ZSBmb3JtYXQgYnkgdXNpbmcgdGhlIGBkYXRlRm9ybWF0YCBwcm9wZXJ0eS4gVGhlIGZvcm1hdCBvZiB0aGUgZGF0ZSByYW5nZSBsYWJlbCBpbiB0aGUgaGVhZGVyIGJhciBkZXBlbmRzIG9uIFxuICAgICAqICB0aGUgYGRhdGVGb3JtYXRgIHZhbHVlIG9yIGVsc2UgYmFzZWQgb24gdGhlIGxvY2FsZSBhc3NpZ25lZCB0byB0aGUgU2NoZWR1bGUuIFxuICAgICAqICBJdCBnZXRzIGFwcGxpZWQgb25seSB0byB0aGUgdmlldyBvYmplY3RzIG9uIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRlRm9ybWF0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgc3RhcnRpbmcgd2VlayBkYXRlIGF0IGFuIGluaXRpYWwgcmVuZGVyaW5nIG9mIG1vbnRoIHZpZXcuIFRoaXMgcHJvcGVydHkgaXMgb25seSBhcHBsaWNhYmxlIGZvciBtb250aCB2aWV3LiBcbiAgICAgKiAgSWYgdGhpcyBwcm9wZXJ0eSB2YWx1ZSBpcyBub3Qgc2V0LCB0aGVuIHRoZSBtb250aCB2aWV3IHdpbGwgYmUgcmVuZGVyZWQgZnJvbSB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgbW9udGguIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J3NjaGVkdWxlL2Rpc3BsYXlEYXRlL2luZGV4Lm1kJyAlfXslIGVuZGNvZGVCbG9jayAlfVxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzcGxheURhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogV2hlbiB0aGUgc2FtZSB2aWV3IGlzIGN1c3RvbWl6ZWQgd2l0aCBkaWZmZXJlbnQgaW50ZXJ2YWxzLCB0aGlzIHByb3BlcnR5IGFsbG93cyB0aGUgdXNlciB0byBzZXQgZGlmZmVyZW50IGRpc3BsYXkgbmFtZSBcbiAgICAgKiAgZm9yIHRob3NlIHZpZXdzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzcGxheU5hbWU6IGFueTtcbiAgICAvKiogXG4gICAgICogRW5hYmxlcyB0aGUgbGF6eSBsb2FkaW5nIG9mIGV2ZW50cyBmb3Igc2Nyb2xsaW5nIGFjdGlvbnMgb25seSB3aGVuIHRoZSByZXNvdXJjZXMgZ3JvdXBpbmcgcHJvcGVydHkgaXMgZW5hYmxlZC4gXG4gICAgICogTGF6eSBsb2FkaW5nIGFsbG93cyB0aGUgc2NoZWR1bGVyIHRvIGZldGNoIHRoZSBhcHBvaW50bWVudHMgZHluYW1pY2FsbHkgZHVyaW5nIHNjcm9sbCBhY3Rpb25zIGZvciB0aGUgY3VycmVudGx5IHJlbmRlcmVkIHJlc291cmNlIGNvbGxlY3Rpb24uIFxuICAgICAqIE5ldyBldmVudCBkYXRhIGlzIGZldGNoZWQgb24tZGVtYW5kIGFzIHRoZSB1c2VyIHNjcm9sbHMgdGhyb3VnaCB0aGUgc2NoZWR1bGUgY29udGVudC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBlbmFibGVMYXp5TG9hZGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGVuZCBob3VyLCBhdCB3aGljaCB0aGUgU2NoZWR1bGUgZW5kcy4gSXQgdG9vIGFjY2VwdHMgdGhlIHRpbWUgc3RyaW5nIGluIGEgc2hvcnQgc2tlbGV0b24gZm9ybWF0LlxuICAgICAqIEBkZWZhdWx0ICcyNDowMCdcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5kSG91cjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gc2V0IHRoZSBmaXJzdCBkYXkgb2YgYSB3ZWVrIG9uIFNjaGVkdWxlLiBJdCBzaG91bGQgYmUgYmFzZWQgb24gdGhlIGxvY2FsZSBzZXQgdG8gaXQgYW5kIGVhY2ggY3VsdHVyZSBcbiAgICAgKiAgZGVmaW5lcyBpdHMgb3duIGZpcnN0IGRheSBvZiB3ZWVrIHZhbHVlcy4gSWYgbmVlZGVkLCB0aGUgdXNlciBjYW4gc2V0IGl0IG1hbnVhbGx5IG9uIGhpcyBvd24gYnkgZGVmaW5pbmcgdGhlIHZhbHVlIHRocm91Z2ggXG4gICAgICogIHRoaXMgcHJvcGVydHkuIEl0IHVzdWFsbHkgYWNjZXB0cyB0aGUgaW50ZWdlciB2YWx1ZXMsIHdoZXJlYnkgMCBpcyBhbHdheXMgZGVub3RlZCBhcyBTdW5kYXksIDEgYXMgTW9uZGF5IGFuZCBzbyBvbi5cbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIGZpcnN0RGF5T2ZXZWVrOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoaXMgcHJvcGVydHkgaGVscHMgcmVuZGVyIHRoZSB5ZWFyIHZpZXcgY3VzdG9taXplZCBtb250aHMuIFxuICAgICAqIEJ5IGRlZmF1bHQsIGl0IGlzIHNldCB0byBgMGAuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBmaXJzdE1vbnRoT2ZZZWFyOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEFsbG93cyB0byBzZXQgZGlmZmVyZW50IHJlc291cmNlIGdyb3VwaW5nIG9wdGlvbnMgb24gYWxsIGF2YWlsYWJsZSBzY2hlZHVsZSB2aWV3IG1vZGVzLlxuICAgICAqIEBkZWZhdWx0IHsgYnlEYXRlOiBmYWxzZSwgYnlHcm91cElEOiB0cnVlLCBhbGxvd0dyb3VwRWRpdDogZmFsc2UsIHJlc291cmNlczpbXSwgaGlkZU5vbldvcmtpbmdEYXlzOiBmYWxzZSB9XG4gICAgICovXG4gICAgcHVibGljIGdyb3VwOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEFsbG93cyBkZWZpbmluZyB0aGUgY29sbGVjdGlvbiBvZiBjdXN0b20gaGVhZGVyIHJvd3MgdG8gZGlzcGxheSB0aGUgeWVhciwgbW9udGgsIHdlZWssIGRhdGUgYW5kIGhvdXIgbGFiZWwgYXMgYW4gaW5kaXZpZHVhbCByb3cgXG4gICAgICogIG9uIHRoZSB0aW1lbGluZSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBwdWJsaWMgaGVhZGVyUm93czogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBhY2NlcHRzIHRoZSBudW1iZXIgdmFsdWUgZGVub3RpbmcgdG8gaW5jbHVkZSB0aGUgbnVtYmVyIG9mIGRheXMsIHdlZWtzLCB3b3Jrd2Vla3Mgb3IgbW9udGhzIG9uIHRoZSBkZWZpbmVkIHZpZXcgdHlwZS5cbiAgICAgKiBAZGVmYXVsdCAxXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRvIGRlbm90ZSB3aGV0aGVyIHRoZSB2aWV3IG5hbWUgZ2l2ZW4gb24gdGhlIGBvcHRpb25gIGlzIGFjdGl2ZSBvciBub3QuIFxuICAgICAqIEl0IGFjdHMgc2ltaWxhciB0byB0aGUgW2BjdXJyZW50Vmlld2BdKC4uLy4uL3NjaGVkdWxlLyNjdXJyZW50LXZpZXcvKSBcbiAgICAgKiBwcm9wZXJ0eSBhbmQgZGVmaW5lcyB0aGUgYWN0aXZlIHZpZXcgb2YgU2NoZWR1bGUuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNTZWxlY3RlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gc2V0IHRoZSBudW1iZXIgb2YgbW9udGhzIGNvdW50IHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgU2NoZWR1bGUuIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J3NjaGVkdWxlL21vbnRoc0NvdW50L2luZGV4Lm1kJyAlfXslIGVuZGNvZGVCbG9jayAlfVxuICAgICAqIEBkZWZhdWx0IDEyXG4gICAgICogQGFzcHR5cGUgaW50XG4gICAgICovXG4gICAgcHVibGljIG1vbnRoc0NvdW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoaXMgcHJvcGVydHkgY3VzdG9taXplcyB0aGUgbnVtYmVyIG9mIHdlZWtzIHRoYXQgYXJlIHNob3duIGluIG1vbnRoIHZpZXcuIEJ5IGRlZmF1bHQsIGl0IHNob3dzIGFsbCB3ZWVrcyBpbiB0aGUgY3VycmVudCBtb250aC4gXG4gICAgICogIFVzZSBkaXNwbGF5RGF0ZSBwcm9wZXJ0eSB0byBjdXN0b21pemUgdGhlIHN0YXJ0aW5nIHdlZWsgb2YgbW9udGguIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J3NjaGVkdWxlL251bWJlck9mV2Vla3MvaW5kZXgubWQnICV9eyUgZW5kY29kZUJsb2NrICV9XG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqIEBhc3B0eXBlIGludFxuICAgICAqL1xuICAgIHB1YmxpYyBudW1iZXJPZldlZWtzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGFjY2VwdHMgdGhlIHNjaGVkdWxlIHZpZXcgbmFtZSwgYmFzZWQgb24gd2hpY2ggd2UgY2FuIGRlZmluZSB3aXRoIGl0cyByZWxhdGVkIHByb3BlcnRpZXMgaW4gYSBzaW5nbGUgb2JqZWN0LiBcbiAgICAgKiBUaGUgYXBwbGljYWJsZSB2aWV3IG5hbWVzIGFyZSwgXG4gICAgICogKiBEYXkgLSBEZW5vdGVzIERheSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogV2VlayAtIERlbm90ZXMgV2VlayB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogV29ya1dlZWsgLSBEZW5vdGVzIFdvcmsgV2VlayB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogTW9udGggLSBEZW5vdGVzIE1vbnRoIHZpZXcgb2YgdGhlIHNjaGVkdWxlci4gXG4gICAgICogKiBZZWFyIC0gRGVub3RlcyBZZWFyIHZpZXcgb2YgdGhlIHNjaGVkdWxlci4gXG4gICAgICogKiBBZ2VuZGEgLSBEZW5vdGVzIEFnZW5kYSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogTW9udGhBZ2VuZGEgLSBEZW5vdGVzIE1vbnRoIEFnZW5kYSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogVGltZWxpbmVEYXkgLSBEZW5vdGVzIFRpbWVsaW5lIERheSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogVGltZWxpbmVXZWVrIC0gRGVub3RlcyBUaW1lbGluZSBXZWVrIHZpZXcgb2YgdGhlIHNjaGVkdWxlci4gXG4gICAgICogKiBUaW1lbGluZVdvcmtXZWVrIC0gRGVub3RlcyBUaW1lbGluZSBXb3JrIFdlZWsgdmlldyBvZiB0aGUgc2NoZWR1bGVyLiBcbiAgICAgKiAqIFRpbWVsaW5lTW9udGggLSBEZW5vdGVzIFRpbWVsaW5lIE1vbnRoIHZpZXcgb2YgdGhlIHNjaGVkdWxlci4gXG4gICAgICogKiBUaW1lbGluZVllYXIgLSBEZW5vdGVzIFRpbWVsaW5lIFllYXIgdmlldyBvZiB0aGUgc2NoZWR1bGVyLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3B0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgeWVhciB2aWV3IHJlbmRlcmluZyBvcmllbnRhdGlvbiBvbiB0aGUgc2NoZWR1bGUuIFxuICAgICAqIFRoZSBhcHBsaWNhYmxlIG9yaWVudGF0aW9uIHZhbHVlcyBhcmUsIFxuICAgICAqICogSG9yaXpvbnRhbCAtIERlbm90ZXMgdGhlIGhvcml6b250YWwgb3JpZW50YXRpb24gb2YgVGltZWxpbmUgWWVhciB2aWV3LiBcbiAgICAgKiAqIFZlcnRpY2FsIC0gRGVub3RlcyB0aGUgdmVydGljYWwgb3JpZW50YXRpb24gb2YgVGltZWxpbmUgWWVhciB2aWV3LlxuICAgICAqIEBkZWZhdWx0ICdIb3Jpem9udGFsJ1xuICAgICAqL1xuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIGRpc3BsYXlzIGEgcXVpY2sgcG9wdXAgd2l0aCBjZWxsIG9yIGV2ZW50IGRldGFpbHMgb24gc2luZ2xlIGNsaWNraW5nIG92ZXIgdGhlIGNlbGxzIG9yIG9uIGV2ZW50cy4gXG4gICAgICogIEJ5IGRlZmF1bHQsIGl0IGlzIHNldCB0byBgdHJ1ZWAuIEl0IGdldHMgYXBwbGllZCBvbmx5IHRvIHRoZSB2aWV3IG9iamVjdHMgb24gd2hpY2ggaXQgaXMgZGVmaW5lZC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIGRpc3BsYXlzIHRoZSB3ZWVrIG51bWJlciBvZiB0aGUgY3VycmVudCB2aWV3IGRhdGUgcmFuZ2UuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1dlZWtOdW1iZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogV2hlbiBzZXQgdG8gYGZhbHNlYCwgaXQgaGlkZXMgdGhlIHdlZWtlbmQgZGF5cyBvZiBhIHdlZWsgZnJvbSB0aGUgU2NoZWR1bGUuIFxuICAgICAqIFRoZSBkYXlzIHdoaWNoIGFyZSBub3QgZGVmaW5lZCBpbiB0aGUgd29ya2luZyBkYXlzIGNvbGxlY3Rpb24gYXJlIHVzdWFsbHkgdHJlYXRlZCBhcyB3ZWVrZW5kIGRheXMuIFxuICAgICAqIE5vdGU6IEJ5IGRlZmF1bHQsIHRoaXMgb3B0aW9uIGlzIG5vdCBhcHBsaWNhYmxlIG9uIGBXb3JrIFdlZWtgIHZpZXcuIFxuICAgICAqIEZvciBleGFtcGxlLCBpZiB0aGUgd29ya2luZyBkYXlzIGFyZSBkZWZpbmVkIGFzIFsxLCAyLCAzLCA0XSwgdGhlbiB0aGUgcmVtYWluaW5nIGRheXMgb2YgdGhhdCB3ZWVrIHdpbGwgYmUgY29uc2lkZXJlZCBhcyB0aGUgXG4gICAgICogIHdlZWtlbmQgZGF5cyBhbmQgd2lsbCBiZSBoaWRkZW4gb24gYWxsIHRoZSB2aWV3cy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHNob3dXZWVrZW5kOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgc3RhcnRpbmcgaG91ciwgZnJvbSB3aGljaCB0aGUgU2NoZWR1bGUgc3RhcnRzIHRvIGRpc3BsYXkuIFxuICAgICAqICBJdCBhY2NlcHRzIHRoZSB0aW1lIHN0cmluZyBpbiBhIHNob3J0IHNrZWxldG9uIGZvcm1hdCBhbmQgYWxzbywgaGlkZXMgdGhlIHRpbWUgYmV5b25kIHRoZSBzcGVjaWZpZWQgc3RhcnQgdGltZS5cbiAgICAgKiBAZGVmYXVsdCAnMDA6MDAnXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0SG91cjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBCeSBkZWZhdWx0LCBTY2hlZHVsZSBmb2xsb3dzIHRoZSB0aW1lLWZvcm1hdCBhcyBwZXIgdGhlIGRlZmF1bHQgY3VsdHVyZSBhc3NpZ25lZCB0byBpdC4gXG4gICAgICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBtYW51YWxseSBzZXQgc3BlY2lmaWMgdGltZSBmb3JtYXQgYnkgdXNpbmcgdGhlIGB0aW1lRm9ybWF0YCBwcm9wZXJ0eS4gXG4gICAgICogeyUgY29kZUJsb2NrIHNyYz0nc2NoZWR1bGUvdGltZUZvcm1hdC9pbmRleC5tZCcgJX17JSBlbmRjb2RlQmxvY2sgJX1cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHRpbWVGb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogQWxsb3dzIHRvIHNldCBkaWZmZXJlbnQgdGltZXNjYWxlIGNvbmZpZ3VyYXRpb24gb24gZWFjaCBhcHBsaWNhYmxlIHZpZXcgbW9kZXMgc3VjaCBhcyBkYXksIHdlZWsgYW5kIHdvcmsgd2Vlay5cbiAgICAgKiBAZGVmYXVsdCB7IGVuYWJsZTogdHJ1ZSwgaW50ZXJ2YWw6IDYwLCBzbG90Q291bnQ6IDIsIG1ham9yU2xvdFRlbXBsYXRlOiBudWxsLCBtaW5vclNsb3RUZW1wbGF0ZTogbnVsbCB9XG4gICAgICovXG4gICAgcHVibGljIHRpbWVTY2FsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBpcyB1c2VkIHRvIHNldCB0aGUgd29ya2luZyBkYXlzIG9uIHNjaGVkdWxlLiBUaGUgb25seSBkYXlzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGhpcyBjb2xsZWN0aW9uIHdpbGwgYmUgcmVuZGVyZWQgb24gdGhlIFxuICAgICAqICBgd29ya1dlZWtgIHZpZXcgd2hlcmVhcyBvbiBvdGhlciB2aWV3cywgaXQgd2lsbCBkaXNwbGF5IGFsbCB0aGUgdXN1YWwgZGF5cyBhbmQgc2ltcGx5IGhpZ2hsaWdodHMgdGhlIHdvcmtpbmcgZGF5cyB3aXRoIGRpZmZlcmVudCBcbiAgICAgKiAgc2hhZGUuXG4gICAgICogQGRlZmF1bHQgJ1sxLCAyLCAzLCA0LCA1XSdcbiAgICAgKiBAYXNwdHlwZSBpbnRbXVxuICAgICAqL1xuICAgIHB1YmxpYyB3b3JrRGF5czogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBhY2NlcHRzIGVpdGhlciB0aGUgc3RyaW5nIG9yIEhUTUxFbGVtZW50IGFzIHRlbXBsYXRlIGRlc2lnbiBjb250ZW50IGFuZCBwYXJzZSBpdCBhcHByb3ByaWF0ZWx5IGJlZm9yZSBkaXNwbGF5aW5nIGl0IG9udG8gdGhlIFxuICAgICAqICBkYXRlIGhlYWRlciBjZWxscy4gVGhlIGZpZWxkIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGlzIHRlbXBsYXRlIGlzIGBkYXRlYC4gXG4gICAgICogIEl0IGdldHMgYXBwbGllZCBvbmx5IHRvIHRoZSB2aWV3IG9iamVjdHMgb24gd2hpY2ggaXQgaXMgZGVmaW5lZC5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGF0ZUhlYWRlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBkYXRlSGVhZGVyVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgYWNjZXB0cyBlaXRoZXIgdGhlIHN0cmluZyBvciBIVE1MRWxlbWVudCBhcyB0ZW1wbGF0ZSBkZXNpZ24gY29udGVudCBhbmQgcGFyc2UgaXQgYXBwcm9wcmlhdGVseSBiZWZvcmUgZGlzcGxheWluZyBpdCBvbnRvIHRoZSBoZWFkZXIgZGF0ZSByYW5nZS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFuZ3VsYXJ0eXBlIHN0cmluZyB8IG9iamVjdFxuICAgICAqIEByZWFjdHR5cGUgc3RyaW5nIHwgZnVuY3Rpb24gfCBKU1guRWxlbWVudFxuICAgICAqIEB2dWV0eXBlIHN0cmluZyB8IGZ1bmN0aW9uXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGF0ZVJhbmdlVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGRhdGVSYW5nZVRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRoZSBzdHJpbmcgb3IgSFRNTEVsZW1lbnQgYXMgdGVtcGxhdGUgZGVzaWduIGNvbnRlbnQgYW5kIHBhcnNlIGl0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIGRpc3BsYXlpbmcgaXQgb250byB0aGUgXG4gICAgICogIFllYXIgdmlldyBkYXkgY2VsbCBoZWFkZXIuIFxuICAgICAqICBUaGlzIHRlbXBsYXRlIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgeWVhciB2aWV3IGhlYWRlciBjZWxscy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFuZ3VsYXJ0eXBlIHN0cmluZyB8IG9iamVjdFxuICAgICAqIEByZWFjdHR5cGUgc3RyaW5nIHwgZnVuY3Rpb24gfCBKU1guRWxlbWVudFxuICAgICAqIEB2dWV0eXBlIHN0cmluZyB8IGZ1bmN0aW9uXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGF5SGVhZGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGRheUhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRoZSBzdHJpbmcgb3IgSFRNTEVsZW1lbnQgYXMgdGVtcGxhdGUgZGVzaWduIGNvbnRlbnQgYW5kIHBhcnNlIGl0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIGRpc3BsYXlpbmcgaXQgb250byB0aGUgXG4gICAgICogIG1vbnRoIGRhdGUgY2VsbHMuIFxuICAgICAqICBUaGlzIHRlbXBsYXRlIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgbW9udGggdmlldyBkYXkgY2VsbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NlbGxIZWFkZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgY2VsbEhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSB0ZW1wbGF0ZSBvcHRpb24gd2hpY2ggaXMgdXNlZCB0byByZW5kZXIgdGhlIGN1c3RvbWl6ZWQgd29yayBjZWxscyBvbiB0aGUgU2NoZWR1bGUuIEhlcmUsIHRoZSBcbiAgICAgKiAgdGVtcGxhdGUgYWNjZXB0cyBlaXRoZXIgdGhlIHN0cmluZyBvciBIVE1MRWxlbWVudCBhcyB0ZW1wbGF0ZSBkZXNpZ24gYW5kIHRoZW4gdGhlIHBhcnNlZCBkZXNpZ24gaXMgZGlzcGxheWVkIG9udG8gdGhlIHdvcmsgY2VsbHMuIFxuICAgICAqICBUaGUgZmllbGQgYWNjZXNzaWJsZSB2aWEgdGVtcGxhdGUgaXMgYGRhdGVgLiBJdCBnZXRzIGFwcGxpZWQgb25seSB0byB0aGUgdmlldyBvYmplY3RzIG9uIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NlbGxUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgY2VsbFRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRoZSBzdHJpbmcgb3IgSFRNTEVsZW1lbnQgYXMgdGVtcGxhdGUgZGVzaWduIGNvbnRlbnQgYW5kIHBhcnNlIGl0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIGRpc3BsYXlpbmcgaXQgb250byBcbiAgICAgKiAgdGhlIGV2ZW50IGJhY2tncm91bmQuIEFsbCB0aGUgZXZlbnQgZmllbGRzIG1hcHBlZCB0byBTY2hlZHVsZSBmcm9tIGRhdGFTb3VyY2UgY2FuIGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGlzIHRlbXBsYXRlIGNvZGUuIFxuICAgICAqICBJdCBpcyBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIGB0ZW1wbGF0ZWAgb3B0aW9uIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGBldmVudFNldHRpbmdzYCBwcm9wZXJ0eSwgXG4gICAgICogIHdoZXJlYXMgaXQgd2lsbCBnZXQgYXBwbGllZCBvbmx5IG9uIHRoZSBldmVudHMgb2YgdGhlIHZpZXcgdG8gd2hpY2ggaXQgaXMgY3VycmVudGx5IGJlaW5nIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2V2ZW50VGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGV2ZW50VGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgYWNjZXB0cyBlaXRoZXIgdGhlIHN0cmluZyBvciBIVE1MRWxlbWVudCBhcyB0ZW1wbGF0ZSBkZXNpZ24gY29udGVudCBhbmQgcGFyc2UgaXQgYXBwcm9wcmlhdGVseSBiZWZvcmUgZGlzcGxheWluZyBpdCBvbnRvIHRoZSBcbiAgICAgKiAgWWVhciB2aWV3IGRheSBjZWxsIGhlYWRlci4gXG4gICAgICogIFRoaXMgdGVtcGxhdGUgaXMgb25seSBhcHBsaWNhYmxlIGZvciB5ZWFyIHZpZXcgaGVhZGVyIGNlbGxzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYW5ndWxhcnR5cGUgc3RyaW5nIHwgb2JqZWN0XG4gICAgICogQHJlYWN0dHlwZSBzdHJpbmcgfCBmdW5jdGlvbiB8IEpTWC5FbGVtZW50XG4gICAgICogQHZ1ZXR5cGUgc3RyaW5nIHwgZnVuY3Rpb25cbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb250aEhlYWRlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBtb250aEhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSB0ZW1wbGF0ZSBvcHRpb24gd2hpY2ggaXMgdXNlZCB0byByZW5kZXIgdGhlIGN1c3RvbWl6ZWQgaGVhZGVyIGNlbGxzIG9uIHRoZSBzY2hlZHVsZS4gSGVyZSwgdGhlIFxuICAgICAqICB0ZW1wbGF0ZSBhY2NlcHRzIGVpdGhlciB0aGUgc3RyaW5nIG9yIEhUTUxFbGVtZW50IGFzIHRlbXBsYXRlIGRlc2lnbiBhbmQgdGhlbiB0aGUgcGFyc2VkIGRlc2lnbiBpcyBkaXNwbGF5ZWQgb250byB0aGUgaGVhZGVyIGNlbGxzLiBcbiAgICAgKiAgQWxsIHRoZSByZXNvdXJjZSBmaWVsZHMgbWFwcGVkIHdpdGhpbiByZXNvdXJjZXMgY2FuIGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGlzIHRlbXBsYXRlIGNvZGUuIFxuICAgICAqICBJdCBnZXRzIGFwcGxpZWQgb25seSB0byB0aGUgdmlldyBvYmplY3RzIG9uIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3Jlc291cmNlSGVhZGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHJlc291cmNlSGVhZGVyVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIHRlbXBsYXRlIG9wdGlvbiB3aGljaCBpcyB1c2VkIHRvIHJlbmRlciB0aGUgY3VzdG9taXplZCBoZWFkZXIgaW5kZW50IGNlbGwgb24gdGhlIHNjaGVkdWxlLiBIZXJlLCB0aGUgXG4gICAgICogIHRlbXBsYXRlIGFjY2VwdHMgZWl0aGVyIHRoZSBzdHJpbmcgb3IgSFRNTEVsZW1lbnQgYXMgdGVtcGxhdGUgZGVzaWduIGFuZCB0aGVuIHRoZSBwYXJzZWQgZGVzaWduIGlzIGRpc3BsYXllZCBvbnRvIHRoZSBoZWFkZXIgaW5kZW50IGNlbGwuIFxuICAgICAqICBJdCBnZXRzIGFwcGxpZWQgb25seSB0byB0aGUgdmlldyBvYmplY3RzIG9uIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlckluZGVudFRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBoZWFkZXJJbmRlbnRUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ3RpbWVTY2FsZU1pbm9yU2xvdFRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0aW1lU2NhbGVfbWlub3JTbG90VGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCd0aW1lU2NhbGVNYWpvclNsb3RUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdGltZVNjYWxlX21ham9yU2xvdFRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZ3JvdXBIZWFkZXJUb29sdGlwVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGdyb3VwX2hlYWRlclRvb2x0aXBUZW1wbGF0ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOlZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgc2V0VmFsdWUoJ2N1cnJlbnRJbnN0YW5jZScsIHRoaXMsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHMob3V0cHV0cyk7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlUHJvcExpc3QgPSBpbnB1dDtcbiAgICB9XG59XG5cbi8qKlxuICogVmlldyBBcnJheSBEaXJlY3RpdmVcbiAqIEBwcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnZWpzLXNjaGVkdWxlPmUtdmlld3MnLFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgY2hpbGRyZW46IG5ldyBDb250ZW50Q2hpbGRyZW4oVmlld0RpcmVjdGl2ZSlcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3c0RpcmVjdGl2ZSBleHRlbmRzIEFycmF5QmFzZTxWaWV3c0RpcmVjdGl2ZT4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigndmlld3MnKTtcbiAgICB9XG59Il19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NjaGVkdWxlL3ZpZXdzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR3hELElBQUksS0FBSyxHQUFhLENBQUMsdUJBQXVCLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2hrQixJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDM0I7Ozs7Ozs7Ozs7O0dBV0c7QUFTSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFdBQTBCO0lBeVN6RCxZQUFvQixnQkFBaUM7UUFDakQsS0FBSyxFQUFFLENBQUM7UUFEUSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBRWpELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7OzBHQTlTUSxhQUFhOzhGQUFiLGFBQWE7QUFzTHRCO0lBREMsUUFBUSxFQUFFO3lEQUNvQjtBQVcvQjtJQURDLFFBQVEsRUFBRTt3REFDbUI7QUFhOUI7SUFEQyxRQUFRLEVBQUU7d0RBQ21CO0FBYTlCO0lBREMsUUFBUSxFQUFFO3lEQUNvQjtBQWEvQjtJQURDLFFBQVEsRUFBRTttREFDYztBQWN6QjtJQURDLFFBQVEsRUFBRTtvREFDZTtBQWExQjtJQURDLFFBQVEsRUFBRTswREFDcUI7QUFjaEM7SUFEQyxRQUFRLEVBQUU7NkRBQ3dCO0FBYW5DO0lBREMsUUFBUSxFQUFFOzJEQUNzQjtBQUdqQztJQURDLFFBQVEsRUFBRTtrRUFDNkI7QUFHeEM7SUFEQyxRQUFRLEVBQUU7a0VBQzZCO0FBR3hDO0lBREMsUUFBUSxFQUFFO2tFQUM2QjsyRkF2Uy9CLGFBQWE7a0JBUnpCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRSxFQUVSO2lCQUNKO3VHQXVMVSxrQkFBa0I7c0JBRnhCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQWEzQixpQkFBaUI7c0JBRnZCLFlBQVk7dUJBQUMsbUJBQW1CO2dCQWUxQixpQkFBaUI7c0JBRnZCLFlBQVk7dUJBQUMsbUJBQW1CO2dCQWUxQixrQkFBa0I7c0JBRnhCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQWUzQixZQUFZO3NCQUZsQixZQUFZO3VCQUFDLGNBQWM7Z0JBZ0JyQixhQUFhO3NCQUZuQixZQUFZO3VCQUFDLGVBQWU7Z0JBZXRCLG1CQUFtQjtzQkFGekIsWUFBWTt1QkFBQyxxQkFBcUI7Z0JBZ0I1QixzQkFBc0I7c0JBRjVCLFlBQVk7dUJBQUMsd0JBQXdCO2dCQWUvQixvQkFBb0I7c0JBRjFCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQUs3QiwyQkFBMkI7c0JBRmpDLFlBQVk7dUJBQUMsNEJBQTRCO2dCQUtuQywyQkFBMkI7c0JBRmpDLFlBQVk7dUJBQUMsNEJBQTRCO2dCQUtuQywyQkFBMkI7c0JBRmpDLFlBQVk7dUJBQUMsNEJBQTRCOztBQVk5Qzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQXlCO0lBQ3pEO1FBQ0ksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLENBQUM7OzJHQUhRLGNBQWM7K0ZBQWQsY0FBYyxxRkFIVyxhQUFhOzJGQUd0QyxjQUFjO2tCQU4xQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLE9BQU8sRUFBRTt3QkFDTCxRQUFRLEVBQUUsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDO3FCQUMvQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgQ29udGVudENoaWxkcmVuLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBsZXhCYXNlLCBBcnJheUJhc2UsIHNldFZhbHVlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuXG5cbmxldCBpbnB1dDogc3RyaW5nW10gPSBbJ2FsbG93VmlydHVhbFNjcm9sbGluZycsICdjZWxsSGVhZGVyVGVtcGxhdGUnLCAnY2VsbFRlbXBsYXRlJywgJ2RhdGVGb3JtYXQnLCAnZGF0ZUhlYWRlclRlbXBsYXRlJywgJ2RhdGVSYW5nZVRlbXBsYXRlJywgJ2RheUhlYWRlclRlbXBsYXRlJywgJ2Rpc3BsYXlEYXRlJywgJ2Rpc3BsYXlOYW1lJywgJ2VuYWJsZUxhenlMb2FkaW5nJywgJ2VuZEhvdXInLCAnZXZlbnRUZW1wbGF0ZScsICdmaXJzdERheU9mV2VlaycsICdmaXJzdE1vbnRoT2ZZZWFyJywgJ2dyb3VwJywgJ2hlYWRlckluZGVudFRlbXBsYXRlJywgJ2hlYWRlclJvd3MnLCAnaW50ZXJ2YWwnLCAnaXNTZWxlY3RlZCcsICdtYXhFdmVudHNQZXJSb3cnLCAnbW9udGhIZWFkZXJUZW1wbGF0ZScsICdtb250aHNDb3VudCcsICdudW1iZXJPZldlZWtzJywgJ29wdGlvbicsICdvcmllbnRhdGlvbicsICdyZWFkb25seScsICdyZXNvdXJjZUhlYWRlclRlbXBsYXRlJywgJ3Nob3dXZWVrTnVtYmVyJywgJ3Nob3dXZWVrZW5kJywgJ3N0YXJ0SG91cicsICd0aW1lRm9ybWF0JywgJ3RpbWVTY2FsZScsICd3b3JrRGF5cyddO1xubGV0IG91dHB1dHM6IHN0cmluZ1tdID0gW107XG4vKipcbiAqIGBlLXZpZXdzYCBkaXJlY3RpdmUgcmVwcmVzZW50IGEgdmlldyBvZiB0aGUgQW5ndWxhciBTY2hlZHVsZS4gXG4gKiBJdCBtdXN0IGJlIGNvbnRhaW5lZCBpbiBhIFNjaGVkdWxlIGNvbXBvbmVudChgZWpzLXNjaGVkdWxlYCkuIFxuICogYGBgaHRtbFxuICogPGVqcy1zY2hlZHVsZT5cbiAqICAgPGUtdmlld3M+XG4gKiAgICA8ZS12aWV3IG9wdGlvbj0nZGF5JyBkYXRlRm9ybWF0PSdkZCBNTU0nPjwvZS12aWV3PlxuICogICAgPGUtdmlldyBvcHRpb249J3dlZWsnPjwvZS12aWV3PlxuICogICA8L2Utdmlld3M+XG4gKiA8L2Vqcy1zY2hlZHVsZT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Utdmlld3M+ZS12aWV3JyxcbiAgICBpbnB1dHM6IGlucHV0LFxuICAgIG91dHB1dHM6IG91dHB1dHMsICAgIFxuICAgIHF1ZXJpZXM6IHtcblxuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVmlld0RpcmVjdGl2ZSBleHRlbmRzIENvbXBsZXhCYXNlPFZpZXdEaXJlY3RpdmU+IHtcbiAgICBwdWJsaWMgZGlyZWN0aXZlUHJvcExpc3Q6IGFueTtcblx0XG5cblxuICAgIC8qKiBcbiAgICAgKiBJdCBpcyB1c2VkIHRvIGFsbG93IG9yIGRpc2FsbG93IHRoZSB2aXJ0dWFsIHNjcm9sbGluZyBmdW5jdGlvbmFsaXR5LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93VmlydHVhbFNjcm9sbGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBCeSBkZWZhdWx0LCBTY2hlZHVsZSBmb2xsb3dzIHRoZSBkYXRlLWZvcm1hdCBhcyBwZXIgdGhlIGRlZmF1bHQgY3VsdHVyZSBhc3NpZ25lZCB0byBpdC4gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBtYW51YWxseSBzZXQgXG4gICAgICogIHNwZWNpZmljIGRhdGUgZm9ybWF0IGJ5IHVzaW5nIHRoZSBgZGF0ZUZvcm1hdGAgcHJvcGVydHkuIFRoZSBmb3JtYXQgb2YgdGhlIGRhdGUgcmFuZ2UgbGFiZWwgaW4gdGhlIGhlYWRlciBiYXIgZGVwZW5kcyBvbiBcbiAgICAgKiAgdGhlIGBkYXRlRm9ybWF0YCB2YWx1ZSBvciBlbHNlIGJhc2VkIG9uIHRoZSBsb2NhbGUgYXNzaWduZWQgdG8gdGhlIFNjaGVkdWxlLiBcbiAgICAgKiAgSXQgZ2V0cyBhcHBsaWVkIG9ubHkgdG8gdGhlIHZpZXcgb2JqZWN0cyBvbiB3aGljaCBpdCBpcyBkZWZpbmVkLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZGF0ZUZvcm1hdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHN0YXJ0aW5nIHdlZWsgZGF0ZSBhdCBhbiBpbml0aWFsIHJlbmRlcmluZyBvZiBtb250aCB2aWV3LiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgbW9udGggdmlldy4gXG4gICAgICogIElmIHRoaXMgcHJvcGVydHkgdmFsdWUgaXMgbm90IHNldCwgdGhlbiB0aGUgbW9udGggdmlldyB3aWxsIGJlIHJlbmRlcmVkIGZyb20gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIG1vbnRoLiBcbiAgICAgKiB7JSBjb2RlQmxvY2sgc3JjPSdzY2hlZHVsZS9kaXNwbGF5RGF0ZS9pbmRleC5tZCcgJX17JSBlbmRjb2RlQmxvY2sgJX1cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXlEYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFdoZW4gdGhlIHNhbWUgdmlldyBpcyBjdXN0b21pemVkIHdpdGggZGlmZmVyZW50IGludGVydmFscywgdGhpcyBwcm9wZXJ0eSBhbGxvd3MgdGhlIHVzZXIgdG8gc2V0IGRpZmZlcmVudCBkaXNwbGF5IG5hbWUgXG4gICAgICogIGZvciB0aG9zZSB2aWV3cy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXlOYW1lOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEVuYWJsZXMgdGhlIGxhenkgbG9hZGluZyBvZiBldmVudHMgZm9yIHNjcm9sbGluZyBhY3Rpb25zIG9ubHkgd2hlbiB0aGUgcmVzb3VyY2VzIGdyb3VwaW5nIHByb3BlcnR5IGlzIGVuYWJsZWQuIFxuICAgICAqIExhenkgbG9hZGluZyBhbGxvd3MgdGhlIHNjaGVkdWxlciB0byBmZXRjaCB0aGUgYXBwb2ludG1lbnRzIGR5bmFtaWNhbGx5IGR1cmluZyBzY3JvbGwgYWN0aW9ucyBmb3IgdGhlIGN1cnJlbnRseSByZW5kZXJlZCByZXNvdXJjZSBjb2xsZWN0aW9uLiBcbiAgICAgKiBOZXcgZXZlbnQgZGF0YSBpcyBmZXRjaGVkIG9uLWRlbWFuZCBhcyB0aGUgdXNlciBzY3JvbGxzIHRocm91Z2ggdGhlIHNjaGVkdWxlIGNvbnRlbnQuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlTGF6eUxvYWRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBlbmQgaG91ciwgYXQgd2hpY2ggdGhlIFNjaGVkdWxlIGVuZHMuIEl0IHRvbyBhY2NlcHRzIHRoZSB0aW1lIHN0cmluZyBpbiBhIHNob3J0IHNrZWxldG9uIGZvcm1hdC5cbiAgICAgKiBAZGVmYXVsdCAnMjQ6MDAnXG4gICAgICovXG4gICAgcHVibGljIGVuZEhvdXI6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhpcyBvcHRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHNldCB0aGUgZmlyc3QgZGF5IG9mIGEgd2VlayBvbiBTY2hlZHVsZS4gSXQgc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBsb2NhbGUgc2V0IHRvIGl0IGFuZCBlYWNoIGN1bHR1cmUgXG4gICAgICogIGRlZmluZXMgaXRzIG93biBmaXJzdCBkYXkgb2Ygd2VlayB2YWx1ZXMuIElmIG5lZWRlZCwgdGhlIHVzZXIgY2FuIHNldCBpdCBtYW51YWxseSBvbiBoaXMgb3duIGJ5IGRlZmluaW5nIHRoZSB2YWx1ZSB0aHJvdWdoIFxuICAgICAqICB0aGlzIHByb3BlcnR5LiBJdCB1c3VhbGx5IGFjY2VwdHMgdGhlIGludGVnZXIgdmFsdWVzLCB3aGVyZWJ5IDAgaXMgYWx3YXlzIGRlbm90ZWQgYXMgU3VuZGF5LCAxIGFzIE1vbmRheSBhbmQgc28gb24uXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBmaXJzdERheU9mV2VlazogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGlzIHByb3BlcnR5IGhlbHBzIHJlbmRlciB0aGUgeWVhciB2aWV3IGN1c3RvbWl6ZWQgbW9udGhzLiBcbiAgICAgKiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gYDBgLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgZmlyc3RNb250aE9mWWVhcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBBbGxvd3MgdG8gc2V0IGRpZmZlcmVudCByZXNvdXJjZSBncm91cGluZyBvcHRpb25zIG9uIGFsbCBhdmFpbGFibGUgc2NoZWR1bGUgdmlldyBtb2Rlcy5cbiAgICAgKiBAZGVmYXVsdCB7IGJ5RGF0ZTogZmFsc2UsIGJ5R3JvdXBJRDogdHJ1ZSwgYWxsb3dHcm91cEVkaXQ6IGZhbHNlLCByZXNvdXJjZXM6W10sIGhpZGVOb25Xb3JraW5nRGF5czogZmFsc2UgfVxuICAgICAqL1xuICAgIHB1YmxpYyBncm91cDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBBbGxvd3MgZGVmaW5pbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3VzdG9tIGhlYWRlciByb3dzIHRvIGRpc3BsYXkgdGhlIHllYXIsIG1vbnRoLCB3ZWVrLCBkYXRlIGFuZCBob3VyIGxhYmVsIGFzIGFuIGluZGl2aWR1YWwgcm93IFxuICAgICAqICBvbiB0aGUgdGltZWxpbmUgdmlldyBvZiB0aGUgc2NoZWR1bGVyLlxuICAgICAqIEBkZWZhdWx0IFtdXG4gICAgICovXG4gICAgcHVibGljIGhlYWRlclJvd3M6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgYWNjZXB0cyB0aGUgbnVtYmVyIHZhbHVlIGRlbm90aW5nIHRvIGluY2x1ZGUgdGhlIG51bWJlciBvZiBkYXlzLCB3ZWVrcywgd29ya3dlZWtzIG9yIG1vbnRocyBvbiB0aGUgZGVmaW5lZCB2aWV3IHR5cGUuXG4gICAgICogQGRlZmF1bHQgMVxuICAgICAqL1xuICAgIHB1YmxpYyBpbnRlcnZhbDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUbyBkZW5vdGUgd2hldGhlciB0aGUgdmlldyBuYW1lIGdpdmVuIG9uIHRoZSBgb3B0aW9uYCBpcyBhY3RpdmUgb3Igbm90LiBcbiAgICAgKiBJdCBhY3RzIHNpbWlsYXIgdG8gdGhlIFtgY3VycmVudFZpZXdgXSguLi8uLi9zY2hlZHVsZS8jY3VycmVudC12aWV3LykgXG4gICAgICogcHJvcGVydHkgYW5kIGRlZmluZXMgdGhlIGFjdGl2ZSB2aWV3IG9mIFNjaGVkdWxlLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzU2VsZWN0ZWQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBldmVudHMgdG8gYmUgZGlzcGxheWVkIGluIGEgc2luZ2xlIHJvdy4gXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBhcHBsaWNhYmxlIHdoZW4gdGhlICdyb3dBdXRvSGVpZ2h0JyBwcm9wZXJ0eSBpcyBkaXNhYmxlZC4gXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGFwcGxpY2FibGUgZm9yIHRoZSBtb250aCB2aWV3LCB0aW1lbGluZSB2aWV3cywgYW5kIHRpbWVsaW5lIHllYXIgdmlldy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIG1heEV2ZW50c1BlclJvdzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gc2V0IHRoZSBudW1iZXIgb2YgbW9udGhzIGNvdW50IHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgU2NoZWR1bGUuIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J3NjaGVkdWxlL21vbnRoc0NvdW50L2luZGV4Lm1kJyAlfXslIGVuZGNvZGVCbG9jayAlfVxuICAgICAqIEBkZWZhdWx0IDEyXG4gICAgICogQGFzcHR5cGUgaW50XG4gICAgICovXG4gICAgcHVibGljIG1vbnRoc0NvdW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoaXMgcHJvcGVydHkgY3VzdG9taXplcyB0aGUgbnVtYmVyIG9mIHdlZWtzIHRoYXQgYXJlIHNob3duIGluIG1vbnRoIHZpZXcuIEJ5IGRlZmF1bHQsIGl0IHNob3dzIGFsbCB3ZWVrcyBpbiB0aGUgY3VycmVudCBtb250aC4gXG4gICAgICogIFVzZSBkaXNwbGF5RGF0ZSBwcm9wZXJ0eSB0byBjdXN0b21pemUgdGhlIHN0YXJ0aW5nIHdlZWsgb2YgbW9udGguIFxuICAgICAqIHslIGNvZGVCbG9jayBzcmM9J3NjaGVkdWxlL251bWJlck9mV2Vla3MvaW5kZXgubWQnICV9eyUgZW5kY29kZUJsb2NrICV9XG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqIEBhc3B0eXBlIGludFxuICAgICAqL1xuICAgIHB1YmxpYyBudW1iZXJPZldlZWtzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGFjY2VwdHMgdGhlIHNjaGVkdWxlIHZpZXcgbmFtZSwgYmFzZWQgb24gd2hpY2ggd2UgY2FuIGRlZmluZSB3aXRoIGl0cyByZWxhdGVkIHByb3BlcnRpZXMgaW4gYSBzaW5nbGUgb2JqZWN0LiBcbiAgICAgKiBUaGUgYXBwbGljYWJsZSB2aWV3IG5hbWVzIGFyZSwgXG4gICAgICogKiBEYXkgLSBEZW5vdGVzIERheSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogV2VlayAtIERlbm90ZXMgV2VlayB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogV29ya1dlZWsgLSBEZW5vdGVzIFdvcmsgV2VlayB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogTW9udGggLSBEZW5vdGVzIE1vbnRoIHZpZXcgb2YgdGhlIHNjaGVkdWxlci4gXG4gICAgICogKiBZZWFyIC0gRGVub3RlcyBZZWFyIHZpZXcgb2YgdGhlIHNjaGVkdWxlci4gXG4gICAgICogKiBBZ2VuZGEgLSBEZW5vdGVzIEFnZW5kYSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogTW9udGhBZ2VuZGEgLSBEZW5vdGVzIE1vbnRoIEFnZW5kYSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogVGltZWxpbmVEYXkgLSBEZW5vdGVzIFRpbWVsaW5lIERheSB2aWV3IG9mIHRoZSBzY2hlZHVsZXIuIFxuICAgICAqICogVGltZWxpbmVXZWVrIC0gRGVub3RlcyBUaW1lbGluZSBXZWVrIHZpZXcgb2YgdGhlIHNjaGVkdWxlci4gXG4gICAgICogKiBUaW1lbGluZVdvcmtXZWVrIC0gRGVub3RlcyBUaW1lbGluZSBXb3JrIFdlZWsgdmlldyBvZiB0aGUgc2NoZWR1bGVyLiBcbiAgICAgKiAqIFRpbWVsaW5lTW9udGggLSBEZW5vdGVzIFRpbWVsaW5lIE1vbnRoIHZpZXcgb2YgdGhlIHNjaGVkdWxlci4gXG4gICAgICogKiBUaW1lbGluZVllYXIgLSBEZW5vdGVzIFRpbWVsaW5lIFllYXIgdmlldyBvZiB0aGUgc2NoZWR1bGVyLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3B0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgeWVhciB2aWV3IHJlbmRlcmluZyBvcmllbnRhdGlvbiBvbiB0aGUgc2NoZWR1bGUuIFxuICAgICAqIFRoZSBhcHBsaWNhYmxlIG9yaWVudGF0aW9uIHZhbHVlcyBhcmUsIFxuICAgICAqICogSG9yaXpvbnRhbCAtIERlbm90ZXMgdGhlIGhvcml6b250YWwgb3JpZW50YXRpb24gb2YgVGltZWxpbmUgWWVhciB2aWV3LiBcbiAgICAgKiAqIFZlcnRpY2FsIC0gRGVub3RlcyB0aGUgdmVydGljYWwgb3JpZW50YXRpb24gb2YgVGltZWxpbmUgWWVhciB2aWV3LlxuICAgICAqIEBkZWZhdWx0ICdIb3Jpem9udGFsJ1xuICAgICAqL1xuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIGRpc3BsYXlzIGEgcXVpY2sgcG9wdXAgd2l0aCBjZWxsIG9yIGV2ZW50IGRldGFpbHMgb24gc2luZ2xlIGNsaWNraW5nIG92ZXIgdGhlIGNlbGxzIG9yIG9uIGV2ZW50cy4gXG4gICAgICogIEJ5IGRlZmF1bHQsIGl0IGlzIHNldCB0byBgdHJ1ZWAuIEl0IGdldHMgYXBwbGllZCBvbmx5IHRvIHRoZSB2aWV3IG9iamVjdHMgb24gd2hpY2ggaXQgaXMgZGVmaW5lZC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIGRpc3BsYXlzIHRoZSB3ZWVrIG51bWJlciBvZiB0aGUgY3VycmVudCB2aWV3IGRhdGUgcmFuZ2UuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1dlZWtOdW1iZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogV2hlbiBzZXQgdG8gYGZhbHNlYCwgaXQgaGlkZXMgdGhlIHdlZWtlbmQgZGF5cyBvZiBhIHdlZWsgZnJvbSB0aGUgU2NoZWR1bGUuIFxuICAgICAqIFRoZSBkYXlzIHdoaWNoIGFyZSBub3QgZGVmaW5lZCBpbiB0aGUgd29ya2luZyBkYXlzIGNvbGxlY3Rpb24gYXJlIHVzdWFsbHkgdHJlYXRlZCBhcyB3ZWVrZW5kIGRheXMuIFxuICAgICAqIE5vdGU6IEJ5IGRlZmF1bHQsIHRoaXMgb3B0aW9uIGlzIG5vdCBhcHBsaWNhYmxlIG9uIGBXb3JrIFdlZWtgIHZpZXcuIFxuICAgICAqIEZvciBleGFtcGxlLCBpZiB0aGUgd29ya2luZyBkYXlzIGFyZSBkZWZpbmVkIGFzIFsxLCAyLCAzLCA0XSwgdGhlbiB0aGUgcmVtYWluaW5nIGRheXMgb2YgdGhhdCB3ZWVrIHdpbGwgYmUgY29uc2lkZXJlZCBhcyB0aGUgXG4gICAgICogIHdlZWtlbmQgZGF5cyBhbmQgd2lsbCBiZSBoaWRkZW4gb24gYWxsIHRoZSB2aWV3cy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHNob3dXZWVrZW5kOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgc3RhcnRpbmcgaG91ciwgZnJvbSB3aGljaCB0aGUgU2NoZWR1bGUgc3RhcnRzIHRvIGRpc3BsYXkuIFxuICAgICAqICBJdCBhY2NlcHRzIHRoZSB0aW1lIHN0cmluZyBpbiBhIHNob3J0IHNrZWxldG9uIGZvcm1hdCBhbmQgYWxzbywgaGlkZXMgdGhlIHRpbWUgYmV5b25kIHRoZSBzcGVjaWZpZWQgc3RhcnQgdGltZS5cbiAgICAgKiBAZGVmYXVsdCAnMDA6MDAnXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0SG91cjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBCeSBkZWZhdWx0LCBTY2hlZHVsZSBmb2xsb3dzIHRoZSB0aW1lLWZvcm1hdCBhcyBwZXIgdGhlIGRlZmF1bHQgY3VsdHVyZSBhc3NpZ25lZCB0byBpdC4gXG4gICAgICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBtYW51YWxseSBzZXQgc3BlY2lmaWMgdGltZSBmb3JtYXQgYnkgdXNpbmcgdGhlIGB0aW1lRm9ybWF0YCBwcm9wZXJ0eS4gXG4gICAgICogeyUgY29kZUJsb2NrIHNyYz0nc2NoZWR1bGUvdGltZUZvcm1hdC9pbmRleC5tZCcgJX17JSBlbmRjb2RlQmxvY2sgJX1cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHRpbWVGb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogQWxsb3dzIHRvIHNldCBkaWZmZXJlbnQgdGltZXNjYWxlIGNvbmZpZ3VyYXRpb24gb24gZWFjaCBhcHBsaWNhYmxlIHZpZXcgbW9kZXMgc3VjaCBhcyBkYXksIHdlZWsgYW5kIHdvcmsgd2Vlay5cbiAgICAgKiBAZGVmYXVsdCB7IGVuYWJsZTogdHJ1ZSwgaW50ZXJ2YWw6IDYwLCBzbG90Q291bnQ6IDIsIG1ham9yU2xvdFRlbXBsYXRlOiBudWxsLCBtaW5vclNsb3RUZW1wbGF0ZTogbnVsbCB9XG4gICAgICovXG4gICAgcHVibGljIHRpbWVTY2FsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBpcyB1c2VkIHRvIHNldCB0aGUgd29ya2luZyBkYXlzIG9uIHNjaGVkdWxlLiBUaGUgb25seSBkYXlzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGhpcyBjb2xsZWN0aW9uIHdpbGwgYmUgcmVuZGVyZWQgb24gdGhlIFxuICAgICAqICBgd29ya1dlZWtgIHZpZXcgd2hlcmVhcyBvbiBvdGhlciB2aWV3cywgaXQgd2lsbCBkaXNwbGF5IGFsbCB0aGUgdXN1YWwgZGF5cyBhbmQgc2ltcGx5IGhpZ2hsaWdodHMgdGhlIHdvcmtpbmcgZGF5cyB3aXRoIGRpZmZlcmVudCBcbiAgICAgKiAgc2hhZGUuXG4gICAgICogQGRlZmF1bHQgJ1sxLCAyLCAzLCA0LCA1XSdcbiAgICAgKiBAYXNwdHlwZSBpbnRbXVxuICAgICAqL1xuICAgIHB1YmxpYyB3b3JrRGF5czogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBhY2NlcHRzIGVpdGhlciB0aGUgc3RyaW5nIG9yIEhUTUxFbGVtZW50IGFzIHRlbXBsYXRlIGRlc2lnbiBjb250ZW50IGFuZCBwYXJzZSBpdCBhcHByb3ByaWF0ZWx5IGJlZm9yZSBkaXNwbGF5aW5nIGl0IG9udG8gdGhlIFxuICAgICAqICBkYXRlIGhlYWRlciBjZWxscy4gVGhlIGZpZWxkIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGlzIHRlbXBsYXRlIGlzIGBkYXRlYC4gXG4gICAgICogIEl0IGdldHMgYXBwbGllZCBvbmx5IHRvIHRoZSB2aWV3IG9iamVjdHMgb24gd2hpY2ggaXQgaXMgZGVmaW5lZC5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGF0ZUhlYWRlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBkYXRlSGVhZGVyVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgYWNjZXB0cyBlaXRoZXIgdGhlIHN0cmluZyBvciBIVE1MRWxlbWVudCBhcyB0ZW1wbGF0ZSBkZXNpZ24gY29udGVudCBhbmQgcGFyc2UgaXQgYXBwcm9wcmlhdGVseSBiZWZvcmUgZGlzcGxheWluZyBpdCBvbnRvIHRoZSBoZWFkZXIgZGF0ZSByYW5nZS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFuZ3VsYXJ0eXBlIHN0cmluZyB8IG9iamVjdFxuICAgICAqIEByZWFjdHR5cGUgc3RyaW5nIHwgZnVuY3Rpb24gfCBKU1guRWxlbWVudFxuICAgICAqIEB2dWV0eXBlIHN0cmluZyB8IGZ1bmN0aW9uXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGF0ZVJhbmdlVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGRhdGVSYW5nZVRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRoZSBzdHJpbmcgb3IgSFRNTEVsZW1lbnQgYXMgdGVtcGxhdGUgZGVzaWduIGNvbnRlbnQgYW5kIHBhcnNlIGl0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIGRpc3BsYXlpbmcgaXQgb250byB0aGUgXG4gICAgICogIFllYXIgdmlldyBkYXkgY2VsbCBoZWFkZXIuIFxuICAgICAqICBUaGlzIHRlbXBsYXRlIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgeWVhciB2aWV3IGhlYWRlciBjZWxscy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFuZ3VsYXJ0eXBlIHN0cmluZyB8IG9iamVjdFxuICAgICAqIEByZWFjdHR5cGUgc3RyaW5nIHwgZnVuY3Rpb24gfCBKU1guRWxlbWVudFxuICAgICAqIEB2dWV0eXBlIHN0cmluZyB8IGZ1bmN0aW9uXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGF5SGVhZGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGRheUhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRoZSBzdHJpbmcgb3IgSFRNTEVsZW1lbnQgYXMgdGVtcGxhdGUgZGVzaWduIGNvbnRlbnQgYW5kIHBhcnNlIGl0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIGRpc3BsYXlpbmcgaXQgb250byB0aGUgXG4gICAgICogIG1vbnRoIGRhdGUgY2VsbHMuIFxuICAgICAqICBUaGlzIHRlbXBsYXRlIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgbW9udGggdmlldyBkYXkgY2VsbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NlbGxIZWFkZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgY2VsbEhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSB0ZW1wbGF0ZSBvcHRpb24gd2hpY2ggaXMgdXNlZCB0byByZW5kZXIgdGhlIGN1c3RvbWl6ZWQgd29yayBjZWxscyBvbiB0aGUgU2NoZWR1bGUuIEhlcmUsIHRoZSBcbiAgICAgKiAgdGVtcGxhdGUgYWNjZXB0cyBlaXRoZXIgdGhlIHN0cmluZyBvciBIVE1MRWxlbWVudCBhcyB0ZW1wbGF0ZSBkZXNpZ24gYW5kIHRoZW4gdGhlIHBhcnNlZCBkZXNpZ24gaXMgZGlzcGxheWVkIG9udG8gdGhlIHdvcmsgY2VsbHMuIFxuICAgICAqICBUaGUgZmllbGQgYWNjZXNzaWJsZSB2aWEgdGVtcGxhdGUgaXMgYGRhdGVgLiBJdCBnZXRzIGFwcGxpZWQgb25seSB0byB0aGUgdmlldyBvYmplY3RzIG9uIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NlbGxUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgY2VsbFRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRoZSBzdHJpbmcgb3IgSFRNTEVsZW1lbnQgYXMgdGVtcGxhdGUgZGVzaWduIGNvbnRlbnQgYW5kIHBhcnNlIGl0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIGRpc3BsYXlpbmcgaXQgb250byBcbiAgICAgKiAgdGhlIGV2ZW50IGJhY2tncm91bmQuIEFsbCB0aGUgZXZlbnQgZmllbGRzIG1hcHBlZCB0byBTY2hlZHVsZSBmcm9tIGRhdGFTb3VyY2UgY2FuIGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGlzIHRlbXBsYXRlIGNvZGUuIFxuICAgICAqICBJdCBpcyBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIGB0ZW1wbGF0ZWAgb3B0aW9uIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGBldmVudFNldHRpbmdzYCBwcm9wZXJ0eSwgXG4gICAgICogIHdoZXJlYXMgaXQgd2lsbCBnZXQgYXBwbGllZCBvbmx5IG9uIHRoZSBldmVudHMgb2YgdGhlIHZpZXcgdG8gd2hpY2ggaXQgaXMgY3VycmVudGx5IGJlaW5nIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2V2ZW50VGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGV2ZW50VGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgYWNjZXB0cyBlaXRoZXIgdGhlIHN0cmluZyBvciBIVE1MRWxlbWVudCBhcyB0ZW1wbGF0ZSBkZXNpZ24gY29udGVudCBhbmQgcGFyc2UgaXQgYXBwcm9wcmlhdGVseSBiZWZvcmUgZGlzcGxheWluZyBpdCBvbnRvIHRoZSBcbiAgICAgKiAgWWVhciB2aWV3IGRheSBjZWxsIGhlYWRlci4gXG4gICAgICogIFRoaXMgdGVtcGxhdGUgaXMgb25seSBhcHBsaWNhYmxlIGZvciB5ZWFyIHZpZXcgaGVhZGVyIGNlbGxzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYW5ndWxhcnR5cGUgc3RyaW5nIHwgb2JqZWN0XG4gICAgICogQHJlYWN0dHlwZSBzdHJpbmcgfCBmdW5jdGlvbiB8IEpTWC5FbGVtZW50XG4gICAgICogQHZ1ZXR5cGUgc3RyaW5nIHwgZnVuY3Rpb25cbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb250aEhlYWRlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBtb250aEhlYWRlclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSB0ZW1wbGF0ZSBvcHRpb24gd2hpY2ggaXMgdXNlZCB0byByZW5kZXIgdGhlIGN1c3RvbWl6ZWQgaGVhZGVyIGNlbGxzIG9uIHRoZSBzY2hlZHVsZS4gSGVyZSwgdGhlIFxuICAgICAqICB0ZW1wbGF0ZSBhY2NlcHRzIGVpdGhlciB0aGUgc3RyaW5nIG9yIEhUTUxFbGVtZW50IGFzIHRlbXBsYXRlIGRlc2lnbiBhbmQgdGhlbiB0aGUgcGFyc2VkIGRlc2lnbiBpcyBkaXNwbGF5ZWQgb250byB0aGUgaGVhZGVyIGNlbGxzLiBcbiAgICAgKiAgQWxsIHRoZSByZXNvdXJjZSBmaWVsZHMgbWFwcGVkIHdpdGhpbiByZXNvdXJjZXMgY2FuIGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGlzIHRlbXBsYXRlIGNvZGUuIFxuICAgICAqICBJdCBnZXRzIGFwcGxpZWQgb25seSB0byB0aGUgdmlldyBvYmplY3RzIG9uIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3Jlc291cmNlSGVhZGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHJlc291cmNlSGVhZGVyVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIHRlbXBsYXRlIG9wdGlvbiB3aGljaCBpcyB1c2VkIHRvIHJlbmRlciB0aGUgY3VzdG9taXplZCBoZWFkZXIgaW5kZW50IGNlbGwgb24gdGhlIHNjaGVkdWxlLiBIZXJlLCB0aGUgXG4gICAgICogIHRlbXBsYXRlIGFjY2VwdHMgZWl0aGVyIHRoZSBzdHJpbmcgb3IgSFRNTEVsZW1lbnQgYXMgdGVtcGxhdGUgZGVzaWduIGFuZCB0aGVuIHRoZSBwYXJzZWQgZGVzaWduIGlzIGRpc3BsYXllZCBvbnRvIHRoZSBoZWFkZXIgaW5kZW50IGNlbGwuIFxuICAgICAqICBJdCBnZXRzIGFwcGxpZWQgb25seSB0byB0aGUgdmlldyBvYmplY3RzIG9uIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhbmd1bGFydHlwZSBzdHJpbmcgfCBvYmplY3RcbiAgICAgKiBAcmVhY3R0eXBlIHN0cmluZyB8IGZ1bmN0aW9uIHwgSlNYLkVsZW1lbnRcbiAgICAgKiBAdnVldHlwZSBzdHJpbmcgfCBmdW5jdGlvblxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlckluZGVudFRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBoZWFkZXJJbmRlbnRUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ3RpbWVTY2FsZU1pbm9yU2xvdFRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0aW1lU2NhbGVfbWlub3JTbG90VGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCd0aW1lU2NhbGVNYWpvclNsb3RUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgdGltZVNjYWxlX21ham9yU2xvdFRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZ3JvdXBIZWFkZXJUb29sdGlwVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGdyb3VwX2hlYWRlclRvb2x0aXBUZW1wbGF0ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOlZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgc2V0VmFsdWUoJ2N1cnJlbnRJbnN0YW5jZScsIHRoaXMsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHMob3V0cHV0cyk7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlUHJvcExpc3QgPSBpbnB1dDtcbiAgICB9XG59XG5cbi8qKlxuICogVmlldyBBcnJheSBEaXJlY3RpdmVcbiAqIEBwcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnZWpzLXNjaGVkdWxlPmUtdmlld3MnLFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgY2hpbGRyZW46IG5ldyBDb250ZW50Q2hpbGRyZW4oVmlld0RpcmVjdGl2ZSlcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3c0RpcmVjdGl2ZSBleHRlbmRzIEFycmF5QmFzZTxWaWV3c0RpcmVjdGl2ZT4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigndmlld3MnKTtcbiAgICB9XG59Il19
@@ -6,8 +6,8 @@ import { Schedule, Day, Week, WorkWeek, Month, Year, Agenda, MonthAgenda, Timeli
6
6
  export * from '@syncfusion/ej2-schedule';
7
7
  import { CommonModule } from '@angular/common';
8
8
 
9
- let input$2 = ['allowVirtualScrolling', 'cellHeaderTemplate', 'cellTemplate', 'dateFormat', 'dateHeaderTemplate', 'dateRangeTemplate', 'dayHeaderTemplate', 'displayDate', 'displayName', 'enableLazyLoading', 'endHour', 'eventTemplate', 'firstDayOfWeek', 'firstMonthOfYear', 'group', 'headerIndentTemplate', 'headerRows', 'interval', 'isSelected', 'monthHeaderTemplate', 'monthsCount', 'numberOfWeeks', 'option', 'orientation', 'readonly', 'resourceHeaderTemplate', 'showWeekNumber', 'showWeekend', 'startHour', 'timeFormat', 'timeScale', 'workDays'];
10
- let outputs$4 = [];
9
+ let input$3 = ['allowVirtualScrolling', 'cellHeaderTemplate', 'cellTemplate', 'dateFormat', 'dateHeaderTemplate', 'dateRangeTemplate', 'dayHeaderTemplate', 'displayDate', 'displayName', 'enableLazyLoading', 'endHour', 'eventTemplate', 'firstDayOfWeek', 'firstMonthOfYear', 'group', 'headerIndentTemplate', 'headerRows', 'interval', 'isSelected', 'maxEventsPerRow', 'monthHeaderTemplate', 'monthsCount', 'numberOfWeeks', 'option', 'orientation', 'readonly', 'resourceHeaderTemplate', 'showWeekNumber', 'showWeekend', 'startHour', 'timeFormat', 'timeScale', 'workDays'];
10
+ let outputs$5 = [];
11
11
  /**
12
12
  * `e-views` directive represent a view of the Angular Schedule.
13
13
  * It must be contained in a Schedule component(`ejs-schedule`).
@@ -25,12 +25,12 @@ class ViewDirective extends ComplexBase {
25
25
  super();
26
26
  this.viewContainerRef = viewContainerRef;
27
27
  setValue('currentInstance', this, this.viewContainerRef);
28
- this.registerEvents(outputs$4);
29
- this.directivePropList = input$2;
28
+ this.registerEvents(outputs$5);
29
+ this.directivePropList = input$3;
30
30
  }
31
31
  }
32
32
  ViewDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ViewDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
33
- ViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ViewDirective, selector: "e-views>e-view", inputs: { allowVirtualScrolling: "allowVirtualScrolling", cellHeaderTemplate: "cellHeaderTemplate", cellTemplate: "cellTemplate", dateFormat: "dateFormat", dateHeaderTemplate: "dateHeaderTemplate", dateRangeTemplate: "dateRangeTemplate", dayHeaderTemplate: "dayHeaderTemplate", displayDate: "displayDate", displayName: "displayName", enableLazyLoading: "enableLazyLoading", endHour: "endHour", eventTemplate: "eventTemplate", firstDayOfWeek: "firstDayOfWeek", firstMonthOfYear: "firstMonthOfYear", group: "group", headerIndentTemplate: "headerIndentTemplate", headerRows: "headerRows", interval: "interval", isSelected: "isSelected", monthHeaderTemplate: "monthHeaderTemplate", monthsCount: "monthsCount", numberOfWeeks: "numberOfWeeks", option: "option", orientation: "orientation", readonly: "readonly", resourceHeaderTemplate: "resourceHeaderTemplate", showWeekNumber: "showWeekNumber", showWeekend: "showWeekend", startHour: "startHour", timeFormat: "timeFormat", timeScale: "timeScale", workDays: "workDays" }, queries: [{ propertyName: "dateHeaderTemplate", first: true, predicate: ["dateHeaderTemplate"], descendants: true }, { propertyName: "dateRangeTemplate", first: true, predicate: ["dateRangeTemplate"], descendants: true }, { propertyName: "dayHeaderTemplate", first: true, predicate: ["dayHeaderTemplate"], descendants: true }, { propertyName: "cellHeaderTemplate", first: true, predicate: ["cellHeaderTemplate"], descendants: true }, { propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true }, { propertyName: "eventTemplate", first: true, predicate: ["eventTemplate"], descendants: true }, { propertyName: "monthHeaderTemplate", first: true, predicate: ["monthHeaderTemplate"], descendants: true }, { propertyName: "resourceHeaderTemplate", first: true, predicate: ["resourceHeaderTemplate"], descendants: true }, { propertyName: "headerIndentTemplate", first: true, predicate: ["headerIndentTemplate"], descendants: true }, { propertyName: "timeScale_minorSlotTemplate", first: true, predicate: ["timeScaleMinorSlotTemplate"], descendants: true }, { propertyName: "timeScale_majorSlotTemplate", first: true, predicate: ["timeScaleMajorSlotTemplate"], descendants: true }, { propertyName: "group_headerTooltipTemplate", first: true, predicate: ["groupHeaderTooltipTemplate"], descendants: true }], usesInheritance: true, ngImport: i0 });
33
+ ViewDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ViewDirective, selector: "e-views>e-view", inputs: { allowVirtualScrolling: "allowVirtualScrolling", cellHeaderTemplate: "cellHeaderTemplate", cellTemplate: "cellTemplate", dateFormat: "dateFormat", dateHeaderTemplate: "dateHeaderTemplate", dateRangeTemplate: "dateRangeTemplate", dayHeaderTemplate: "dayHeaderTemplate", displayDate: "displayDate", displayName: "displayName", enableLazyLoading: "enableLazyLoading", endHour: "endHour", eventTemplate: "eventTemplate", firstDayOfWeek: "firstDayOfWeek", firstMonthOfYear: "firstMonthOfYear", group: "group", headerIndentTemplate: "headerIndentTemplate", headerRows: "headerRows", interval: "interval", isSelected: "isSelected", maxEventsPerRow: "maxEventsPerRow", monthHeaderTemplate: "monthHeaderTemplate", monthsCount: "monthsCount", numberOfWeeks: "numberOfWeeks", option: "option", orientation: "orientation", readonly: "readonly", resourceHeaderTemplate: "resourceHeaderTemplate", showWeekNumber: "showWeekNumber", showWeekend: "showWeekend", startHour: "startHour", timeFormat: "timeFormat", timeScale: "timeScale", workDays: "workDays" }, queries: [{ propertyName: "dateHeaderTemplate", first: true, predicate: ["dateHeaderTemplate"], descendants: true }, { propertyName: "dateRangeTemplate", first: true, predicate: ["dateRangeTemplate"], descendants: true }, { propertyName: "dayHeaderTemplate", first: true, predicate: ["dayHeaderTemplate"], descendants: true }, { propertyName: "cellHeaderTemplate", first: true, predicate: ["cellHeaderTemplate"], descendants: true }, { propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true }, { propertyName: "eventTemplate", first: true, predicate: ["eventTemplate"], descendants: true }, { propertyName: "monthHeaderTemplate", first: true, predicate: ["monthHeaderTemplate"], descendants: true }, { propertyName: "resourceHeaderTemplate", first: true, predicate: ["resourceHeaderTemplate"], descendants: true }, { propertyName: "headerIndentTemplate", first: true, predicate: ["headerIndentTemplate"], descendants: true }, { propertyName: "timeScale_minorSlotTemplate", first: true, predicate: ["timeScaleMinorSlotTemplate"], descendants: true }, { propertyName: "timeScale_majorSlotTemplate", first: true, predicate: ["timeScaleMajorSlotTemplate"], descendants: true }, { propertyName: "group_headerTooltipTemplate", first: true, predicate: ["groupHeaderTooltipTemplate"], descendants: true }], usesInheritance: true, ngImport: i0 });
34
34
  __decorate([
35
35
  Template()
36
36
  ], ViewDirective.prototype, "dateHeaderTemplate", void 0);
@@ -71,8 +71,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
71
71
  type: Directive,
72
72
  args: [{
73
73
  selector: 'e-views>e-view',
74
- inputs: input$2,
75
- outputs: outputs$4,
74
+ inputs: input$3,
75
+ outputs: outputs$5,
76
76
  queries: {}
77
77
  }]
78
78
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { dateHeaderTemplate: [{
@@ -133,8 +133,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
133
133
  }]
134
134
  }], ctorParameters: function () { return []; } });
135
135
 
136
- let input$1 = ['allowMultiple', 'colorField', 'cssClassField', 'dataSource', 'endHourField', 'expandedField', 'field', 'groupIDField', 'idField', 'name', 'query', 'startHourField', 'textField', 'title', 'workDaysField'];
137
- let outputs$3 = [];
136
+ let input$2 = ['allowMultiple', 'colorField', 'cssClassField', 'dataSource', 'endHourField', 'expandedField', 'field', 'groupIDField', 'idField', 'name', 'query', 'startHourField', 'textField', 'title', 'workDaysField'];
137
+ let outputs$4 = [];
138
138
  /**
139
139
  * `e-resources` directive represent a resources of the Angular Schedule.
140
140
  * It must be contained in a Schedule component(`ejs-schedule`).
@@ -152,8 +152,8 @@ class ResourceDirective extends ComplexBase {
152
152
  super();
153
153
  this.viewContainerRef = viewContainerRef;
154
154
  setValue('currentInstance', this, this.viewContainerRef);
155
- this.registerEvents(outputs$3);
156
- this.directivePropList = input$1;
155
+ this.registerEvents(outputs$4);
156
+ this.directivePropList = input$2;
157
157
  }
158
158
  }
159
159
  ResourceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ResourceDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
@@ -162,8 +162,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
162
162
  type: Directive,
163
163
  args: [{
164
164
  selector: 'e-resources>e-resource',
165
- inputs: input$1,
166
- outputs: outputs$3,
165
+ inputs: input$2,
166
+ outputs: outputs$4,
167
167
  queries: {}
168
168
  }]
169
169
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
@@ -188,8 +188,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
188
188
  }]
189
189
  }], ctorParameters: function () { return []; } });
190
190
 
191
- let input = ['option', 'template'];
192
- let outputs$2 = [];
191
+ let input$1 = ['option', 'template'];
192
+ let outputs$3 = [];
193
193
  /**
194
194
  * `e-header-rows` directive represent a header rows of the Schedule.
195
195
  * It must be contained in a Schedule component(`ejs-schedule`).
@@ -207,8 +207,8 @@ class HeaderRowDirective extends ComplexBase {
207
207
  super();
208
208
  this.viewContainerRef = viewContainerRef;
209
209
  setValue('currentInstance', this, this.viewContainerRef);
210
- this.registerEvents(outputs$2);
211
- this.directivePropList = input;
210
+ this.registerEvents(outputs$3);
211
+ this.directivePropList = input$1;
212
212
  }
213
213
  }
214
214
  HeaderRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: HeaderRowDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
@@ -220,8 +220,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
220
220
  type: Directive,
221
221
  args: [{
222
222
  selector: 'e-header-rows>e-header-row',
223
- inputs: input,
224
- outputs: outputs$2,
223
+ inputs: input$1,
224
+ outputs: outputs$3,
225
225
  queries: {}
226
226
  }]
227
227
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { template: [{
@@ -249,7 +249,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
249
249
  }]
250
250
  }], ctorParameters: function () { return []; } });
251
251
 
252
- const inputs$1 = ['agendaDaysCount', 'allowDragAndDrop', 'allowInline', 'allowKeyboardInteraction', 'allowMultiCellSelection', 'allowMultiDrag', 'allowMultiRowSelection', 'allowResizing', 'allowSwiping', 'calendarMode', 'cellHeaderTemplate', 'cellTemplate', 'cssClass', 'currentView', 'dateFormat', 'dateHeaderTemplate', 'dateRangeTemplate', 'dayHeaderTemplate', 'editorFooterTemplate', 'editorHeaderTemplate', 'editorTemplate', 'enableAdaptiveUI', 'enableAllDayScroll', 'enableHtmlSanitizer', 'enablePersistence', 'enableRecurrenceValidation', 'enableRtl', 'endHour', 'eventDragArea', 'eventSettings', 'firstDayOfWeek', 'firstMonthOfYear', 'group', 'headerIndentTemplate', 'headerRows', 'height', 'hideEmptyAgendaDays', 'locale', 'maxDate', 'minDate', 'monthHeaderTemplate', 'monthsCount', 'quickInfoOnSelectionEnd', 'quickInfoTemplates', 'readonly', 'resourceHeaderTemplate', 'resources', 'rowAutoHeight', 'selectedDate', 'showHeaderBar', 'showQuickInfo', 'showTimeIndicator', 'showWeekNumber', 'showWeekend', 'startHour', 'timeFormat', 'timeScale', 'timezone', 'timezoneDataSource', 'views', 'weekRule', 'width', 'workDays', 'workHours'];
252
+ let input = ['align', 'cssClass', 'disabled', 'htmlAttributes', 'id', 'name', 'overflow', 'prefixIcon', 'showAlwaysInPopup', 'showTextOn', 'suffixIcon', 'tabIndex', 'template', 'text', 'tooltipText', 'type', 'visible', 'width'];
253
+ let outputs$2 = ['click'];
254
+ /**
255
+ * `e-toolbaritems` directive represent a custom toolbar items of the Schedule.
256
+ * It must be contained in a Schedule component(`ejs-schedule`).
257
+ * ```html
258
+ * <ejs-schedule>
259
+ * <e-toolbaritems>
260
+ * <e-toolbaritem name='Today'></<e-toolbaritem>
261
+ * <e-toolbaritem name='DateRangeText'></e-toolbaritem>
262
+ * <e-toolbaritem prefixIcon='e-icons e-cut' text='Cut'></e-toolbaritem>
263
+ * <e-toolbaritems>
264
+ * </ejs-schedule>
265
+ * ```
266
+ */
267
+ class ToolbarItemDirective extends ComplexBase {
268
+ constructor(viewContainerRef) {
269
+ super();
270
+ this.viewContainerRef = viewContainerRef;
271
+ setValue('currentInstance', this, this.viewContainerRef);
272
+ this.registerEvents(outputs$2);
273
+ this.directivePropList = input;
274
+ }
275
+ }
276
+ ToolbarItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ToolbarItemDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
277
+ ToolbarItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ToolbarItemDirective, selector: "e-toolbaritems>e-toolbaritem", inputs: { align: "align", cssClass: "cssClass", disabled: "disabled", htmlAttributes: "htmlAttributes", id: "id", name: "name", overflow: "overflow", prefixIcon: "prefixIcon", showAlwaysInPopup: "showAlwaysInPopup", showTextOn: "showTextOn", suffixIcon: "suffixIcon", tabIndex: "tabIndex", template: "template", text: "text", tooltipText: "tooltipText", type: "type", visible: "visible", width: "width" }, outputs: { click: "click" }, queries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], usesInheritance: true, ngImport: i0 });
278
+ __decorate([
279
+ Template()
280
+ ], ToolbarItemDirective.prototype, "template", void 0);
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ToolbarItemDirective, decorators: [{
282
+ type: Directive,
283
+ args: [{
284
+ selector: 'e-toolbaritems>e-toolbaritem',
285
+ inputs: input,
286
+ outputs: outputs$2,
287
+ queries: {}
288
+ }]
289
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { template: [{
290
+ type: ContentChild,
291
+ args: ['template']
292
+ }] } });
293
+ /**
294
+ * ToolbarItem Array Directive
295
+ * @private
296
+ */
297
+ class ToolbarItemsDirective extends ArrayBase {
298
+ constructor() {
299
+ super('toolbaritems');
300
+ }
301
+ }
302
+ ToolbarItemsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ToolbarItemsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
303
+ ToolbarItemsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ToolbarItemsDirective, selector: "ejs-schedule>e-toolbaritems", queries: [{ propertyName: "children", predicate: ToolbarItemDirective }], usesInheritance: true, ngImport: i0 });
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ToolbarItemsDirective, decorators: [{
305
+ type: Directive,
306
+ args: [{
307
+ selector: 'ejs-schedule>e-toolbaritems',
308
+ queries: {
309
+ children: new ContentChildren(ToolbarItemDirective)
310
+ },
311
+ }]
312
+ }], ctorParameters: function () { return []; } });
313
+
314
+ const inputs$1 = ['agendaDaysCount', 'allowDragAndDrop', 'allowInline', 'allowKeyboardInteraction', 'allowMultiCellSelection', 'allowMultiDrag', 'allowMultiRowSelection', 'allowResizing', 'allowSwiping', 'calendarMode', 'cellHeaderTemplate', 'cellTemplate', 'cssClass', 'currentView', 'dateFormat', 'dateHeaderTemplate', 'dateRangeTemplate', 'dayHeaderTemplate', 'editorFooterTemplate', 'editorHeaderTemplate', 'editorTemplate', 'enableAdaptiveUI', 'enableAllDayScroll', 'enableHtmlSanitizer', 'enablePersistence', 'enableRecurrenceValidation', 'enableRtl', 'endHour', 'eventDragArea', 'eventSettings', 'firstDayOfWeek', 'firstMonthOfYear', 'group', 'headerIndentTemplate', 'headerRows', 'height', 'hideEmptyAgendaDays', 'locale', 'maxDate', 'minDate', 'monthHeaderTemplate', 'monthsCount', 'quickInfoOnSelectionEnd', 'quickInfoTemplates', 'readonly', 'resourceHeaderTemplate', 'resources', 'rowAutoHeight', 'selectedDate', 'showHeaderBar', 'showQuickInfo', 'showTimeIndicator', 'showWeekNumber', 'showWeekend', 'startHour', 'timeFormat', 'timeScale', 'timezone', 'timezoneDataSource', 'toolbarItems', 'views', 'weekRule', 'width', 'workDays', 'workHours'];
253
315
  const outputs$1 = ['actionBegin', 'actionComplete', 'actionFailure', 'cellClick', 'cellDoubleClick', 'created', 'dataBinding', 'dataBound', 'destroyed', 'drag', 'dragStart', 'dragStop', 'eventClick', 'eventDoubleClick', 'eventRendered', 'hover', 'moreEventsClick', 'navigating', 'popupClose', 'popupOpen', 'renderCell', 'resizeStart', 'resizeStop', 'resizing', 'select', 'virtualScrollStart', 'virtualScrollStop', 'currentViewChange', 'selectedDateChange'];
254
316
  const twoWays$1 = ['currentView', 'selectedDate'];
255
317
  /**
@@ -265,7 +327,7 @@ let ScheduleComponent = class ScheduleComponent extends Schedule {
265
327
  this.srenderer = srenderer;
266
328
  this.viewContainerRef = viewContainerRef;
267
329
  this.injector = injector;
268
- this.tags = ['views', 'resources', 'headerRows'];
330
+ this.tags = ['views', 'resources', 'headerRows', 'toolbarItems'];
269
331
  this.element = this.ngEle.nativeElement;
270
332
  this.injectedModules = this.injectedModules || [];
271
333
  try {
@@ -402,11 +464,14 @@ let ScheduleComponent = class ScheduleComponent extends Schedule {
402
464
  if (this.childHeaderRows) {
403
465
  this.tagObjects[2].instance = this.childHeaderRows;
404
466
  }
467
+ if (this.childToolbarItems) {
468
+ this.tagObjects[3].instance = this.childToolbarItems;
469
+ }
405
470
  this.context.ngAfterContentChecked(this);
406
471
  }
407
472
  };
408
473
  ScheduleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ScheduleComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
409
- ScheduleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ScheduleComponent, selector: "ejs-schedule", inputs: { agendaDaysCount: "agendaDaysCount", allowDragAndDrop: "allowDragAndDrop", allowInline: "allowInline", allowKeyboardInteraction: "allowKeyboardInteraction", allowMultiCellSelection: "allowMultiCellSelection", allowMultiDrag: "allowMultiDrag", allowMultiRowSelection: "allowMultiRowSelection", allowResizing: "allowResizing", allowSwiping: "allowSwiping", calendarMode: "calendarMode", cellHeaderTemplate: "cellHeaderTemplate", cellTemplate: "cellTemplate", cssClass: "cssClass", currentView: "currentView", dateFormat: "dateFormat", dateHeaderTemplate: "dateHeaderTemplate", dateRangeTemplate: "dateRangeTemplate", dayHeaderTemplate: "dayHeaderTemplate", editorFooterTemplate: "editorFooterTemplate", editorHeaderTemplate: "editorHeaderTemplate", editorTemplate: "editorTemplate", enableAdaptiveUI: "enableAdaptiveUI", enableAllDayScroll: "enableAllDayScroll", enableHtmlSanitizer: "enableHtmlSanitizer", enablePersistence: "enablePersistence", enableRecurrenceValidation: "enableRecurrenceValidation", enableRtl: "enableRtl", endHour: "endHour", eventDragArea: "eventDragArea", eventSettings: "eventSettings", firstDayOfWeek: "firstDayOfWeek", firstMonthOfYear: "firstMonthOfYear", group: "group", headerIndentTemplate: "headerIndentTemplate", headerRows: "headerRows", height: "height", hideEmptyAgendaDays: "hideEmptyAgendaDays", locale: "locale", maxDate: "maxDate", minDate: "minDate", monthHeaderTemplate: "monthHeaderTemplate", monthsCount: "monthsCount", quickInfoOnSelectionEnd: "quickInfoOnSelectionEnd", quickInfoTemplates: "quickInfoTemplates", readonly: "readonly", resourceHeaderTemplate: "resourceHeaderTemplate", resources: "resources", rowAutoHeight: "rowAutoHeight", selectedDate: "selectedDate", showHeaderBar: "showHeaderBar", showQuickInfo: "showQuickInfo", showTimeIndicator: "showTimeIndicator", showWeekNumber: "showWeekNumber", showWeekend: "showWeekend", startHour: "startHour", timeFormat: "timeFormat", timeScale: "timeScale", timezone: "timezone", timezoneDataSource: "timezoneDataSource", views: "views", weekRule: "weekRule", width: "width", workDays: "workDays", workHours: "workHours" }, outputs: { actionBegin: "actionBegin", actionComplete: "actionComplete", actionFailure: "actionFailure", cellClick: "cellClick", cellDoubleClick: "cellDoubleClick", created: "created", dataBinding: "dataBinding", dataBound: "dataBound", destroyed: "destroyed", drag: "drag", dragStart: "dragStart", dragStop: "dragStop", eventClick: "eventClick", eventDoubleClick: "eventDoubleClick", eventRendered: "eventRendered", hover: "hover", moreEventsClick: "moreEventsClick", navigating: "navigating", popupClose: "popupClose", popupOpen: "popupOpen", renderCell: "renderCell", resizeStart: "resizeStart", resizeStop: "resizeStop", resizing: "resizing", select: "select", virtualScrollStart: "virtualScrollStart", virtualScrollStop: "virtualScrollStop", currentViewChange: "currentViewChange", selectedDateChange: "selectedDateChange" }, queries: [{ propertyName: "dateHeaderTemplate", first: true, predicate: ["dateHeaderTemplate"], descendants: true }, { propertyName: "dateRangeTemplate", first: true, predicate: ["dateRangeTemplate"], descendants: true }, { propertyName: "dayHeaderTemplate", first: true, predicate: ["dayHeaderTemplate"], descendants: true }, { propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true }, { propertyName: "cellHeaderTemplate", first: true, predicate: ["cellHeaderTemplate"], descendants: true }, { propertyName: "eventSettings_tooltipTemplate", first: true, predicate: ["eventSettingsTooltipTemplate"], descendants: true }, { propertyName: "eventSettings_template", first: true, predicate: ["eventSettingsTemplate"], descendants: true }, { propertyName: "editorTemplate", first: true, predicate: ["editorTemplate"], descendants: true }, { propertyName: "editorHeaderTemplate", first: true, predicate: ["editorHeaderTemplate"], descendants: true }, { propertyName: "editorFooterTemplate", first: true, predicate: ["editorFooterTemplate"], descendants: true }, { propertyName: "monthHeaderTemplate", first: true, predicate: ["monthHeaderTemplate"], descendants: true }, { propertyName: "timeScale_minorSlotTemplate", first: true, predicate: ["timeScaleMinorSlotTemplate"], descendants: true }, { propertyName: "timeScale_majorSlotTemplate", first: true, predicate: ["timeScaleMajorSlotTemplate"], descendants: true }, { propertyName: "resourceHeaderTemplate", first: true, predicate: ["resourceHeaderTemplate"], descendants: true }, { propertyName: "headerIndentTemplate", first: true, predicate: ["headerIndentTemplate"], descendants: true }, { propertyName: "quickInfoTemplates_header", first: true, predicate: ["quickInfoTemplatesHeader"], descendants: true }, { propertyName: "quickInfoTemplates_content", first: true, predicate: ["quickInfoTemplatesContent"], descendants: true }, { propertyName: "quickInfoTemplates_footer", first: true, predicate: ["quickInfoTemplatesFooter"], descendants: true }, { propertyName: "group_headerTooltipTemplate", first: true, predicate: ["groupHeaderTooltipTemplate"], descendants: true }, { propertyName: "childViews", first: true, predicate: ViewsDirective, descendants: true }, { propertyName: "childResources", first: true, predicate: ResourcesDirective, descendants: true }, { propertyName: "childHeaderRows", first: true, predicate: HeaderRowsDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
474
+ ScheduleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ScheduleComponent, selector: "ejs-schedule", inputs: { agendaDaysCount: "agendaDaysCount", allowDragAndDrop: "allowDragAndDrop", allowInline: "allowInline", allowKeyboardInteraction: "allowKeyboardInteraction", allowMultiCellSelection: "allowMultiCellSelection", allowMultiDrag: "allowMultiDrag", allowMultiRowSelection: "allowMultiRowSelection", allowResizing: "allowResizing", allowSwiping: "allowSwiping", calendarMode: "calendarMode", cellHeaderTemplate: "cellHeaderTemplate", cellTemplate: "cellTemplate", cssClass: "cssClass", currentView: "currentView", dateFormat: "dateFormat", dateHeaderTemplate: "dateHeaderTemplate", dateRangeTemplate: "dateRangeTemplate", dayHeaderTemplate: "dayHeaderTemplate", editorFooterTemplate: "editorFooterTemplate", editorHeaderTemplate: "editorHeaderTemplate", editorTemplate: "editorTemplate", enableAdaptiveUI: "enableAdaptiveUI", enableAllDayScroll: "enableAllDayScroll", enableHtmlSanitizer: "enableHtmlSanitizer", enablePersistence: "enablePersistence", enableRecurrenceValidation: "enableRecurrenceValidation", enableRtl: "enableRtl", endHour: "endHour", eventDragArea: "eventDragArea", eventSettings: "eventSettings", firstDayOfWeek: "firstDayOfWeek", firstMonthOfYear: "firstMonthOfYear", group: "group", headerIndentTemplate: "headerIndentTemplate", headerRows: "headerRows", height: "height", hideEmptyAgendaDays: "hideEmptyAgendaDays", locale: "locale", maxDate: "maxDate", minDate: "minDate", monthHeaderTemplate: "monthHeaderTemplate", monthsCount: "monthsCount", quickInfoOnSelectionEnd: "quickInfoOnSelectionEnd", quickInfoTemplates: "quickInfoTemplates", readonly: "readonly", resourceHeaderTemplate: "resourceHeaderTemplate", resources: "resources", rowAutoHeight: "rowAutoHeight", selectedDate: "selectedDate", showHeaderBar: "showHeaderBar", showQuickInfo: "showQuickInfo", showTimeIndicator: "showTimeIndicator", showWeekNumber: "showWeekNumber", showWeekend: "showWeekend", startHour: "startHour", timeFormat: "timeFormat", timeScale: "timeScale", timezone: "timezone", timezoneDataSource: "timezoneDataSource", toolbarItems: "toolbarItems", views: "views", weekRule: "weekRule", width: "width", workDays: "workDays", workHours: "workHours" }, outputs: { actionBegin: "actionBegin", actionComplete: "actionComplete", actionFailure: "actionFailure", cellClick: "cellClick", cellDoubleClick: "cellDoubleClick", created: "created", dataBinding: "dataBinding", dataBound: "dataBound", destroyed: "destroyed", drag: "drag", dragStart: "dragStart", dragStop: "dragStop", eventClick: "eventClick", eventDoubleClick: "eventDoubleClick", eventRendered: "eventRendered", hover: "hover", moreEventsClick: "moreEventsClick", navigating: "navigating", popupClose: "popupClose", popupOpen: "popupOpen", renderCell: "renderCell", resizeStart: "resizeStart", resizeStop: "resizeStop", resizing: "resizing", select: "select", virtualScrollStart: "virtualScrollStart", virtualScrollStop: "virtualScrollStop", currentViewChange: "currentViewChange", selectedDateChange: "selectedDateChange" }, queries: [{ propertyName: "dateHeaderTemplate", first: true, predicate: ["dateHeaderTemplate"], descendants: true }, { propertyName: "dateRangeTemplate", first: true, predicate: ["dateRangeTemplate"], descendants: true }, { propertyName: "dayHeaderTemplate", first: true, predicate: ["dayHeaderTemplate"], descendants: true }, { propertyName: "cellTemplate", first: true, predicate: ["cellTemplate"], descendants: true }, { propertyName: "cellHeaderTemplate", first: true, predicate: ["cellHeaderTemplate"], descendants: true }, { propertyName: "eventSettings_tooltipTemplate", first: true, predicate: ["eventSettingsTooltipTemplate"], descendants: true }, { propertyName: "eventSettings_template", first: true, predicate: ["eventSettingsTemplate"], descendants: true }, { propertyName: "editorTemplate", first: true, predicate: ["editorTemplate"], descendants: true }, { propertyName: "editorHeaderTemplate", first: true, predicate: ["editorHeaderTemplate"], descendants: true }, { propertyName: "editorFooterTemplate", first: true, predicate: ["editorFooterTemplate"], descendants: true }, { propertyName: "monthHeaderTemplate", first: true, predicate: ["monthHeaderTemplate"], descendants: true }, { propertyName: "timeScale_minorSlotTemplate", first: true, predicate: ["timeScaleMinorSlotTemplate"], descendants: true }, { propertyName: "timeScale_majorSlotTemplate", first: true, predicate: ["timeScaleMajorSlotTemplate"], descendants: true }, { propertyName: "resourceHeaderTemplate", first: true, predicate: ["resourceHeaderTemplate"], descendants: true }, { propertyName: "headerIndentTemplate", first: true, predicate: ["headerIndentTemplate"], descendants: true }, { propertyName: "quickInfoTemplates_header", first: true, predicate: ["quickInfoTemplatesHeader"], descendants: true }, { propertyName: "quickInfoTemplates_content", first: true, predicate: ["quickInfoTemplatesContent"], descendants: true }, { propertyName: "quickInfoTemplates_footer", first: true, predicate: ["quickInfoTemplatesFooter"], descendants: true }, { propertyName: "group_headerTooltipTemplate", first: true, predicate: ["groupHeaderTooltipTemplate"], descendants: true }, { propertyName: "childViews", first: true, predicate: ViewsDirective, descendants: true }, { propertyName: "childResources", first: true, predicate: ResourcesDirective, descendants: true }, { propertyName: "childHeaderRows", first: true, predicate: HeaderRowsDirective, descendants: true }, { propertyName: "childToolbarItems", first: true, predicate: ToolbarItemsDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
410
475
  __decorate([
411
476
  Template()
412
477
  ], ScheduleComponent.prototype, "dateHeaderTemplate", void 0);
@@ -478,7 +543,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
478
543
  queries: {
479
544
  childViews: new ContentChild(ViewsDirective),
480
545
  childResources: new ContentChild(ResourcesDirective),
481
- childHeaderRows: new ContentChild(HeaderRowsDirective)
546
+ childHeaderRows: new ContentChild(HeaderRowsDirective),
547
+ childToolbarItems: new ContentChild(ToolbarItemsDirective)
482
548
  }
483
549
  }]
484
550
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; }, propDecorators: { dateHeaderTemplate: [{
@@ -552,13 +618,17 @@ ScheduleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
552
618
  ResourceDirective,
553
619
  ResourcesDirective,
554
620
  HeaderRowDirective,
555
- HeaderRowsDirective], imports: [CommonModule], exports: [ScheduleComponent,
621
+ HeaderRowsDirective,
622
+ ToolbarItemDirective,
623
+ ToolbarItemsDirective], imports: [CommonModule], exports: [ScheduleComponent,
556
624
  ViewDirective,
557
625
  ViewsDirective,
558
626
  ResourceDirective,
559
627
  ResourcesDirective,
560
628
  HeaderRowDirective,
561
- HeaderRowsDirective] });
629
+ HeaderRowsDirective,
630
+ ToolbarItemDirective,
631
+ ToolbarItemsDirective] });
562
632
  ScheduleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ScheduleModule, imports: [[CommonModule]] });
563
633
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ScheduleModule, decorators: [{
564
634
  type: NgModule,
@@ -571,7 +641,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
571
641
  ResourceDirective,
572
642
  ResourcesDirective,
573
643
  HeaderRowDirective,
574
- HeaderRowsDirective
644
+ HeaderRowsDirective,
645
+ ToolbarItemDirective,
646
+ ToolbarItemsDirective
575
647
  ],
576
648
  exports: [
577
649
  ScheduleComponent,
@@ -580,7 +652,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
580
652
  ResourceDirective,
581
653
  ResourcesDirective,
582
654
  HeaderRowDirective,
583
- HeaderRowsDirective
655
+ HeaderRowsDirective,
656
+ ToolbarItemDirective,
657
+ ToolbarItemsDirective
584
658
  ]
585
659
  }]
586
660
  }] });
@@ -753,5 +827,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
753
827
  * Generated bundle index. Do not edit.
754
828
  */
755
829
 
756
- export { AgendaService, DayService, DragAndDropService, ExcelExportService, HeaderRowDirective, HeaderRowsDirective, ICalendarExportService, ICalendarImportService, MonthAgendaService, MonthService, PrintService, RecurrenceEditorAllModule, RecurrenceEditorComponent, RecurrenceEditorModule, ResizeService, ResourceDirective, ResourcesDirective, ScheduleAllModule, ScheduleComponent, ScheduleModule, TimelineMonthService, TimelineViewsService, TimelineYearService, ViewDirective, ViewsDirective, WeekService, WorkWeekService, YearService };
830
+ export { AgendaService, DayService, DragAndDropService, ExcelExportService, HeaderRowDirective, HeaderRowsDirective, ICalendarExportService, ICalendarImportService, MonthAgendaService, MonthService, PrintService, RecurrenceEditorAllModule, RecurrenceEditorComponent, RecurrenceEditorModule, ResizeService, ResourceDirective, ResourcesDirective, ScheduleAllModule, ScheduleComponent, ScheduleModule, TimelineMonthService, TimelineViewsService, TimelineYearService, ToolbarItemDirective, ToolbarItemsDirective, ViewDirective, ViewsDirective, WeekService, WorkWeekService, YearService };
757
831
  //# sourceMappingURL=syncfusion-ej2-angular-schedule.mjs.map