@indice/ng-components 0.2.162 → 0.2.165

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 (183) hide show
  1. package/README.md +4 -4
  2. package/_styles.css +4270 -4270
  3. package/bundles/indice-ng-components.umd.js +5000 -0
  4. package/bundles/indice-ng-components.umd.js.map +1 -0
  5. package/{esm2020/indice-ng-components.mjs → esm2015/indice-ng-components.js} +0 -0
  6. package/esm2015/lib/controls/advanced-search/advanced-search.component.js +116 -0
  7. package/esm2015/lib/controls/advanced-search/models.js +91 -0
  8. package/{esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs → esm2015/lib/controls/avatar-initials/avatar-initials.component.js} +8 -5
  9. package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +23 -0
  10. package/esm2015/lib/controls/combobox/combobox.component.js +100 -0
  11. package/esm2015/lib/controls/date-picker/date-picker.component.js +301 -0
  12. package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +72 -0
  13. package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +39 -0
  14. package/esm2015/lib/controls/language-selection/language-selection.component.js +35 -0
  15. package/{esm2020/lib/controls/list-view/list-column.component.mjs → esm2015/lib/controls/list-view/list-column.component.js} +4 -4
  16. package/{esm2020/lib/controls/list-view/list-details-section.component.mjs → esm2015/lib/controls/list-view/list-details-section.component.js} +4 -4
  17. package/{esm2020/lib/controls/list-view/list-tile.component.mjs → esm2015/lib/controls/list-view/list-tile.component.js} +4 -4
  18. package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +32 -0
  19. package/esm2015/lib/controls/list-view/list-view.component.js +209 -0
  20. package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +51 -0
  21. package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +82 -0
  22. package/esm2015/lib/controls/pager/pager.component.js +133 -0
  23. package/esm2015/lib/controls/side-pane/side-pane.component.js +76 -0
  24. package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +29 -0
  25. package/{esm2020/lib/controls/stepper/lib-step-info.directive.mjs → esm2015/lib/controls/stepper/lib-step-info.directive.js} +4 -4
  26. package/{esm2020/lib/controls/stepper/lib-step-label.directive.mjs → esm2015/lib/controls/stepper/lib-step-label.directive.js} +4 -4
  27. package/esm2015/lib/controls/stepper/lib-step.component.js +82 -0
  28. package/esm2015/lib/controls/stepper/lib-stepper.component.js +115 -0
  29. package/esm2015/lib/controls/stepper/types/step-selected-event.js +4 -0
  30. package/{esm2020/lib/controls/stepper/types/stepper-type.mjs → esm2015/lib/controls/stepper/types/stepper-type.js} +1 -1
  31. package/esm2015/lib/controls/tabs/lib-tab-group.component.js +67 -0
  32. package/esm2015/lib/controls/tabs/lib-tab.component.js +58 -0
  33. package/esm2015/lib/controls/toaster/toaster-container.component.js +31 -0
  34. package/esm2015/lib/controls/toaster/toaster.component.js +34 -0
  35. package/esm2015/lib/controls/toggle/toggle.component.js +68 -0
  36. package/esm2015/lib/controls/user-profile-menu/user-profile-menu.component.js +75 -0
  37. package/{esm2020/lib/directives/click-outside.directive.mjs → esm2015/lib/directives/click-outside.directive.js} +4 -4
  38. package/{esm2020/lib/directives/dynamic-component-host.directive.mjs → esm2015/lib/directives/dynamic-component-host.directive.js} +4 -4
  39. package/esm2015/lib/helpers/base-list.component.js +227 -0
  40. package/{esm2020/lib/icons.mjs → esm2015/lib/icons.js} +1 -1
  41. package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +22 -0
  42. package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +135 -0
  43. package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +106 -0
  44. package/esm2015/lib/layouts/shell/shell-sidebar/shell-sidebar.component.js +50 -0
  45. package/esm2015/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.js +48 -0
  46. package/esm2015/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.js +28 -0
  47. package/esm2015/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.js +24 -0
  48. package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +85 -0
  49. package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +53 -0
  50. package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +101 -0
  51. package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +110 -0
  52. package/{esm2020/lib/ng-components.module.mjs → esm2015/lib/ng-components.module.js} +10 -8
  53. package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +34 -0
  54. package/{esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs → esm2015/lib/pages/auth/auth-renew/auth-renew.component.js} +4 -4
  55. package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +32 -0
  56. package/esm2015/lib/pages/http-status/error/error.component.js +20 -0
  57. package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +18 -0
  58. package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +17 -0
  59. package/{esm2020/lib/pipes/address.pipe.mjs → esm2015/lib/pipes/address.pipe.js} +4 -4
  60. package/{esm2020/lib/pipes/duration-format.pipe.mjs → esm2015/lib/pipes/duration-format.pipe.js} +4 -4
  61. package/esm2015/lib/services/component-loader/component-loader-options.class.js +8 -0
  62. package/esm2015/lib/services/component-loader/component-loader.class.js +192 -0
  63. package/{esm2020/lib/services/component-loader/component-loader.factory.mjs → esm2015/lib/services/component-loader/component-loader.factory.js} +4 -4
  64. package/{esm2020/lib/services/component-loader/content-ref.class.mjs → esm2015/lib/services/component-loader/content-ref.class.js} +1 -1
  65. package/esm2015/lib/services/modal-service/modal-backdrop-component.js +44 -0
  66. package/esm2015/lib/services/modal-service/modal-container-component.js +128 -0
  67. package/esm2015/lib/services/modal-service/modal-options.class.js +35 -0
  68. package/esm2015/lib/services/modal-service/modal-service.js +220 -0
  69. package/{esm2020/lib/services/modal-service/modal-styles.class.mjs → esm2015/lib/services/modal-service/modal-styles.class.js} +1 -1
  70. package/esm2015/lib/services/modal-service/modal.class.js +27 -0
  71. package/{esm2020/lib/services/toaster.service.mjs → esm2015/lib/services/toaster.service.js} +4 -4
  72. package/{esm2020/lib/tokens.mjs → esm2015/lib/tokens.js} +1 -1
  73. package/{esm2020/lib/types.mjs → esm2015/lib/types.js} +1 -1
  74. package/{esm2020/public-api.mjs → esm2015/public-api.js} +1 -1
  75. package/fesm2015/indice-ng-components.js +4352 -0
  76. package/fesm2015/indice-ng-components.js.map +1 -0
  77. package/{index.d.ts → indice-ng-components.d.ts} +0 -0
  78. package/lib/controls/advanced-search/advanced-search.component.d.ts +1 -1
  79. package/lib/controls/avatar-initials/avatar-initials.component.d.ts +1 -1
  80. package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +1 -1
  81. package/lib/controls/combobox/combobox.component.d.ts +1 -1
  82. package/lib/controls/date-picker/date-picker.component.d.ts +1 -1
  83. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +1 -1
  84. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +1 -1
  85. package/lib/controls/language-selection/language-selection.component.d.ts +1 -1
  86. package/lib/controls/list-view/list-column.component.d.ts +1 -1
  87. package/lib/controls/list-view/list-details-section.component.d.ts +1 -1
  88. package/lib/controls/list-view/list-tile.component.d.ts +1 -1
  89. package/lib/controls/list-view/list-view-empty-state.component.d.ts +1 -1
  90. package/lib/controls/list-view/list-view.component.d.ts +1 -1
  91. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +1 -1
  92. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +1 -1
  93. package/lib/controls/pager/pager.component.d.ts +1 -1
  94. package/lib/controls/side-pane/side-pane.component.d.ts +1 -1
  95. package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +1 -1
  96. package/lib/controls/stepper/lib-step-info.directive.d.ts +1 -1
  97. package/lib/controls/stepper/lib-step-label.directive.d.ts +1 -1
  98. package/lib/controls/stepper/lib-step.component.d.ts +1 -1
  99. package/lib/controls/stepper/lib-stepper.component.d.ts +1 -1
  100. package/lib/controls/tabs/lib-tab-group.component.d.ts +1 -1
  101. package/lib/controls/tabs/lib-tab.component.d.ts +1 -1
  102. package/lib/controls/toaster/toaster-container.component.d.ts +1 -1
  103. package/lib/controls/toaster/toaster.component.d.ts +1 -1
  104. package/lib/controls/toggle/toggle.component.d.ts +1 -1
  105. package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +1 -1
  106. package/lib/directives/click-outside.directive.d.ts +1 -1
  107. package/lib/directives/dynamic-component-host.directive.d.ts +1 -1
  108. package/lib/helpers/base-list.component.d.ts +1 -1
  109. package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +1 -1
  110. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +1 -1
  111. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +1 -1
  112. package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +1 -1
  113. package/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.d.ts +1 -1
  114. package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +1 -1
  115. package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +1 -1
  116. package/lib/layouts/views/form-layout/form-layout.component.d.ts +1 -1
  117. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +1 -1
  118. package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +1 -1
  119. package/lib/layouts/views/view-layout/view-layout.component.d.ts +1 -1
  120. package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +1 -1
  121. package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +1 -1
  122. package/lib/pages/auth/logged-out/logged-out.component.d.ts +1 -1
  123. package/lib/pages/http-status/error/error.component.d.ts +1 -1
  124. package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +1 -1
  125. package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +1 -1
  126. package/lib/pipes/address.pipe.d.ts +1 -1
  127. package/lib/pipes/duration-format.pipe.d.ts +1 -1
  128. package/lib/services/modal-service/modal-backdrop-component.d.ts +1 -1
  129. package/lib/services/modal-service/modal-container-component.d.ts +1 -1
  130. package/modal.css +157 -157
  131. package/package.json +8 -21
  132. package/esm2020/lib/controls/advanced-search/advanced-search.component.mjs +0 -112
  133. package/esm2020/lib/controls/advanced-search/models.mjs +0 -90
  134. package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +0 -20
  135. package/esm2020/lib/controls/combobox/combobox.component.mjs +0 -97
  136. package/esm2020/lib/controls/date-picker/date-picker.component.mjs +0 -292
  137. package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +0 -68
  138. package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +0 -36
  139. package/esm2020/lib/controls/language-selection/language-selection.component.mjs +0 -31
  140. package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +0 -29
  141. package/esm2020/lib/controls/list-view/list-view.component.mjs +0 -206
  142. package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +0 -46
  143. package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +0 -77
  144. package/esm2020/lib/controls/pager/pager.component.mjs +0 -130
  145. package/esm2020/lib/controls/side-pane/side-pane.component.mjs +0 -72
  146. package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +0 -25
  147. package/esm2020/lib/controls/stepper/lib-step.component.mjs +0 -81
  148. package/esm2020/lib/controls/stepper/lib-stepper.component.mjs +0 -108
  149. package/esm2020/lib/controls/stepper/types/step-selected-event.mjs +0 -4
  150. package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +0 -60
  151. package/esm2020/lib/controls/tabs/lib-tab.component.mjs +0 -57
  152. package/esm2020/lib/controls/toaster/toaster-container.component.mjs +0 -28
  153. package/esm2020/lib/controls/toaster/toaster.component.mjs +0 -31
  154. package/esm2020/lib/controls/toggle/toggle.component.mjs +0 -64
  155. package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +0 -71
  156. package/esm2020/lib/helpers/base-list.component.mjs +0 -226
  157. package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +0 -19
  158. package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +0 -130
  159. package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +0 -101
  160. package/esm2020/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +0 -47
  161. package/esm2020/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +0 -45
  162. package/esm2020/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +0 -25
  163. package/esm2020/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +0 -21
  164. package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +0 -80
  165. package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +0 -49
  166. package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +0 -98
  167. package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +0 -104
  168. package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +0 -30
  169. package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +0 -28
  170. package/esm2020/lib/pages/http-status/error/error.component.mjs +0 -17
  171. package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +0 -15
  172. package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +0 -14
  173. package/esm2020/lib/services/component-loader/component-loader-options.class.mjs +0 -8
  174. package/esm2020/lib/services/component-loader/component-loader.class.mjs +0 -188
  175. package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +0 -44
  176. package/esm2020/lib/services/modal-service/modal-container-component.mjs +0 -126
  177. package/esm2020/lib/services/modal-service/modal-options.class.mjs +0 -35
  178. package/esm2020/lib/services/modal-service/modal-service.mjs +0 -219
  179. package/esm2020/lib/services/modal-service/modal.class.mjs +0 -27
  180. package/fesm2015/indice-ng-components.mjs +0 -4264
  181. package/fesm2015/indice-ng-components.mjs.map +0 -1
  182. package/fesm2020/indice-ng-components.mjs +0 -4191
  183. package/fesm2020/indice-ng-components.mjs.map +0 -1
@@ -0,0 +1,115 @@
1
+ import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output } from '@angular/core';
2
+ import { LibStepComponent, StepState } from './lib-step.component';
3
+ import { LIBSTEPPER_ACCESSOR } from '../../tokens';
4
+ import { StepperType } from './types/stepper-type';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ export class LibStepperComponent {
8
+ constructor(_changeDetectorRef) {
9
+ this._changeDetectorRef = _changeDetectorRef;
10
+ // Private properties.
11
+ this._currentStepIndex = 0;
12
+ this._isCompleted = false;
13
+ /** Emmited when a step change occurs. */
14
+ this.stepChanged = new EventEmitter();
15
+ /** Emmited when the stepper navigates away from the final step. Only emits once. */
16
+ this.completed = new EventEmitter();
17
+ /** Indicates whether each step has to be validated before proceeding to the next. */
18
+ this.linear = false;
19
+ /** The type of the stepper. */
20
+ this.type = StepperType.Panels;
21
+ this.StepState = StepState;
22
+ this.StepperType = StepperType;
23
+ }
24
+ /** The current wizard step. */
25
+ get currentStep() {
26
+ var _a;
27
+ return (_a = this.steps) === null || _a === void 0 ? void 0 : _a.get(this._currentStepIndex);
28
+ }
29
+ /** The index (starting from zero) of the current wizard step. */
30
+ get currentStepIndex() {
31
+ return this._currentStepIndex;
32
+ }
33
+ /** Indicates whether stepper can go a step back. */
34
+ get canGoBack() {
35
+ return this._currentStepIndex > 0;
36
+ }
37
+ /** Indicates whether stepper can go a step forward. */
38
+ get canGoForward() {
39
+ var _a;
40
+ return this._currentStepIndex < ((_a = this.steps) === null || _a === void 0 ? void 0 : _a.length) - 1;
41
+ }
42
+ /** Indicates whether */
43
+ get isCompleted() {
44
+ return this._isCompleted;
45
+ }
46
+ ngOnInit() { }
47
+ ngAfterViewChecked() {
48
+ this._changeDetectorRef.detectChanges();
49
+ }
50
+ /** Proceeds to the next step, if any. */
51
+ goToNextStep() {
52
+ var _a;
53
+ if (((_a = this.currentStep) === null || _a === void 0 ? void 0 : _a.isLast) && !this._isCompleted) {
54
+ this._isCompleted = true;
55
+ this.completed.emit();
56
+ }
57
+ if (!this.canGoForward) {
58
+ return;
59
+ }
60
+ this.updateCurrentStepIndex(this._currentStepIndex + 1);
61
+ }
62
+ /** Proceeds to the previous step, if any. */
63
+ goToPreviousStep() {
64
+ if (!this.canGoBack) {
65
+ return;
66
+ }
67
+ this.updateCurrentStepIndex(this._currentStepIndex - 1);
68
+ }
69
+ onSelectStep(selectedStep) {
70
+ this.updateCurrentStepIndex(selectedStep.index);
71
+ }
72
+ updateCurrentStepIndex(newIndex) {
73
+ const stepsArray = this.steps.toArray();
74
+ const currentStep = stepsArray[this.currentStepIndex];
75
+ const shouldStop = this.linear && ((!currentStep.isValid && newIndex >= this.currentStepIndex) || // If current step is invalid and want to go forward, then stop.
76
+ (currentStep.isValid && newIndex > this.currentStepIndex + 1 && stepsArray.slice(this.currentStepIndex + 1, newIndex).some(x => !x.isValid)) // If going forward (more than 1 steps), check if there are any invalid steps in between.
77
+ );
78
+ if (shouldStop) {
79
+ return;
80
+ }
81
+ this.stepChanged.emit({
82
+ selectedIndex: newIndex,
83
+ previouslySelectedIndex: this.currentStepIndex,
84
+ selectedStep: stepsArray[newIndex],
85
+ previouslySelectedStep: currentStep
86
+ });
87
+ this._currentStepIndex = newIndex;
88
+ }
89
+ }
90
+ LibStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepperComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
91
+ LibStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibStepperComponent, selector: "lib-stepper", inputs: { linear: "linear", type: "type" }, outputs: { stepChanged: "stepChanged", completed: "completed" }, providers: [
92
+ { provide: LIBSTEPPER_ACCESSOR, useExisting: forwardRef(() => LibStepperComponent) }
93
+ ], queries: [{ propertyName: "steps", predicate: LibStepComponent, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- Bullets -->\r\n <nav class=\"stepper-bullets-container\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Bullets\">\r\n <p class=\"stepper-bullets-counter\">Step {{ currentStepIndex + 1 }} of {{ steps.length }}</p>\r\n <ol role=\"list\" class=\"stepper-bullets-ol\">\r\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\r\n <!-- Completed Step -->\r\n <div class=\"stepper-bullets-completed-step\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"stepper-bullets-active-step\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"stepper-bullets-active-step-level1\" aria-hidden=\"true\">\r\n <span class=\"stepper-bullets-active-step-level1\"></span>\r\n </span>\r\n <span class=\"stepper-bullets-active-step-bullet\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div href=\"#\" class=\"stepper-bullets-upcoming-step\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Bullets & Text -->\r\n <div class=\"stepper-bullets-and-text-container\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.BulletsAndText\">\r\n <nav aria-label=\"Progress\">\r\n <ol role=\"list\" class=\"stepper-bullets-and-text-ol\">\r\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\r\n <!-- Complete Step -->\r\n <div class=\"group\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"stepper-bullets-and-text-completed-step\">\r\n <span class=\"stepper-bullets-and-text-completed-step-level1\">\r\n <svg class=\"h-full w-full text-blue-600 group-hover:text-blue-800\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"stepper-bullets-and-text-completed-step-container\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"stepper-bullets-and-text-active-step\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"stepper-bullets-and-text-active-step-level1\" aria-hidden=\"true\">\r\n <span class=\"stepper-bullets-and-text-active-step-level11\"></span>\r\n <span class=\"stepper-bullets-and-text-active-step-level12\"></span>\r\n </span>\r\n <span class=\"stepper-bullets-and-text-active-step-container\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step-level1\" aria-hidden=\"true\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step-level2\"></div>\r\n </div>\r\n <p class=\"stepper-bullets-and-text-upcoming-step-container\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Circles -->\r\n <nav class=\"flex justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Circles\">\r\n <ol class=\"flex items-center\" role=\"list\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pr-8 sm:pr-20 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-blue-600\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full hover:bg-blue-900\">\r\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\" aria-current=\"step\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"group relative w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Circles With Text -->\r\n <nav class=\"flex items-center justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.CirclesWithText\">\r\n <ol role=\"list\" class=\"overflow-hidden\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pb-10 cursor-pointer\">\r\n <!-- Complete Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-blue-600\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\" aria-current=\"step\">\r\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-blue-600\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div href=\"#\" class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-gray-500\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels -->\r\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Panels\">\r\n <ol role=\"list\" class=\"border border-gray-300 rounded-md divide-y divide-gray-300 md:flex md:divide-y-0\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative md:flex-1 md:flex cursor-pointer\">\r\n <!-- Completed step -->\r\n <div class=\"group flex items-center w-full\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-900\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active step -->\r\n <div class=\"px-6 py-4 flex items-center text-sm font-medium\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-blue-600 rounded-full\">\r\n <span class=\"text-blue-600\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-blue-600\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming step -->\r\n <div class=\"group flex items-center\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"text-gray-500 group-hover:text-gray-900\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-500 group-hover:text-gray-900\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Arrow separator for lg screens and up -->\r\n <div *ngIf=\"!step.isLast\" class=\"hidden md:block absolute top-0 right-0 h-full w-5\" aria-hidden=\"true\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 22 80\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0 -2L20 40L0 82\" vector-effect=\"non-scaling-stroke\" stroke=\"currentcolor\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels With Border -->\r\n <div class=\"panels-with-border-container\" *ngSwitchCase=\"StepperType.PanelsWithBorder\">\r\n <nav class=\"panels-with-border-nav\" aria-label=\"Progress\">\r\n <ol role=\"list\" class=\"panels-with-border-ol\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"panels-with-border-li\">\r\n <!-- Completed Step -->\r\n <div class=\"panels-with-border-completed-step\" *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"group\">\r\n <span class=\"panels-with-border-completed-step-level1\" aria-hidden=\"true\"></span>\r\n <span class=\"panels-with-border-completed-step-level2\">\r\n <span class=\"panels-with-border-completed-step-level21\">\r\n <span class=\"panels-with-border-completed-step-level211\">\r\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level22\">\r\n <span class=\"panels-with-border-completed-step-level221\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level222\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"panels-with-border-active-step\" *ngIf=\"step.state === StepState.Active\">\r\n <div aria-current=\"step\">\r\n <span class=\"panels-with-border-active-step-level1\" aria-hidden=\"true\"></span>\r\n <span class=\"panels-with-border-active-step-level2\">\r\n <span class=\"panels-with-border-active-step-level21\">\r\n <span class=\"panels-with-border-active-step-level211\">\r\n <span class=\"panels-with-border-active-step-level211-text\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-active-step-level22\">\r\n <span class=\"panels-with-border-active-step-level221\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"panels-with-border-active-step-level222\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"panels-with-border-step-separator\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"panels-with-border-upcoming-step\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"group\">\r\n <span class=\"panels-with-border-upcoming-step-level1\" aria-hidden=\"true\"></span>\r\n <span class=\"panels-with-border-upcoming-step-level2\">\r\n <span class=\"panels-with-border-upcoming-step-level21\">\r\n <span class=\"panels-with-border-upcoming-step-level211\">\r\n <span class=\"panels-with-border-upcoming-step-level211-text\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-upcoming-step-level22\">\r\n <span class=\"panels-with-border-upcoming-step-level221\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm font-medium text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"panels-with-border-step-separator\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Progress -->\r\n <div *ngSwitchCase=\"StepperType.Progress\">\r\n <div class=\"mt-6\" aria-hidden=\"true\">\r\n <div class=\"bg-gray-200 rounded-full overflow-hidden\">\r\n <div class=\"h-2 bg-blue-600 rounded-full\" [style.width]=\"(((currentStepIndex + 1) / steps.length) * 100) + '%'\"></div>\r\n </div>\r\n <div class=\"hidden sm:grid grid-cols-4 text-sm font-medium text-gray-600 mt-6\">\r\n <div *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"text-blue-600 cursor-pointer\">\r\n <ng-container *ngIf=\"step.stepLabel\" [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Simple -->\r\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Simple\">\r\n <ol role=\"list\" class=\"space-y-4 md:flex md:space-y-0 md:space-x-8\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"md:flex-1 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-blue-600 hover:border-blue-800 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase group-hover:text-blue-800\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"pl-4 py-2 flex flex-col border-l-4 border-blue-600 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-gray-200 hover:border-gray-300 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"text-xs text-gray-500 font-semibold tracking-wide uppercase group-hover:text-gray-700\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n</ng-container>\r\n<ng-container *ngFor=\"let step of steps\">\r\n <ng-container *ngIf=\"step.state === StepState.Active\" [ngTemplateOutlet]=\"step.content\"></ng-container>\r\n</ng-container>", directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepperComponent, decorators: [{
95
+ type: Component,
96
+ args: [{
97
+ selector: 'lib-stepper',
98
+ templateUrl: './lib-stepper.component.html',
99
+ providers: [
100
+ { provide: LIBSTEPPER_ACCESSOR, useExisting: forwardRef(() => LibStepperComponent) }
101
+ ]
102
+ }]
103
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { steps: [{
104
+ type: ContentChildren,
105
+ args: [LibStepComponent, { descendants: true }]
106
+ }], stepChanged: [{
107
+ type: Output
108
+ }], completed: [{
109
+ type: Output
110
+ }], linear: [{
111
+ type: Input
112
+ }], type: [{
113
+ type: Input
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU1SixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBVW5ELE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFKekQsc0JBQXNCO1FBQ2Qsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBTTdCLHlDQUF5QztRQUNmLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDOUUsb0ZBQW9GO1FBQzFELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQy9ELHFGQUFxRjtRQUNyRSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hDLCtCQUErQjtRQUNmLFNBQUksR0FBZ0IsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUNoRCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBYjRCLENBQUM7SUFlOUQsK0JBQStCO0lBQy9CLElBQVcsV0FBVzs7UUFDbEIsT0FBTyxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLElBQVcsZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsdURBQXVEO0lBQ3ZELElBQVcsWUFBWTs7UUFDbkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLE1BQU0sSUFBRyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRLEtBQVcsQ0FBQztJQUVwQixrQkFBa0I7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCx5Q0FBeUM7SUFDbEMsWUFBWTs7UUFDZixJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxNQUFNLEtBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCw2Q0FBNkM7SUFDdEMsZ0JBQWdCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLFlBQVksQ0FBQyxZQUE4QjtRQUM5QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxRQUFnQjtRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQzlCLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxnRUFBZ0U7WUFDL0gsQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHlGQUF5RjtTQUN6TyxDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUU7WUFDWixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNsQixhQUFhLEVBQUUsUUFBUTtZQUN2Qix1QkFBdUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQzlDLFlBQVksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2xDLHNCQUFzQixFQUFFLFdBQVc7U0FDdEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztJQUN0QyxDQUFDOztpSEE1RlEsbUJBQW1CO3FHQUFuQixtQkFBbUIsbUpBSmpCO1FBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO0tBQ3ZGLGdEQVVnQixnQkFBZ0IsZ0RDdEJyQyxpNXpCQTZWZTs0RkQvVUYsbUJBQW1CO2tCQVAvQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtxQkFDdkY7aUJBQ0o7d0dBU29FLEtBQUs7c0JBQXJFLGVBQWU7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUU5QixXQUFXO3NCQUFwQyxNQUFNO2dCQUVtQixTQUFTO3NCQUFsQyxNQUFNO2dCQUVTLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTGliU3RlcENvbXBvbmVudCwgU3RlcFN0YXRlIH0gZnJvbSAnLi9saWItc3RlcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMSUJTVEVQUEVSX0FDQ0VTU09SIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgU3RlcHBlclR5cGUgfSBmcm9tICcuL3R5cGVzL3N0ZXBwZXItdHlwZSc7XHJcbmltcG9ydCB7IFN0ZXBTZWxlY3RlZEV2ZW50IH0gZnJvbSAnLi90eXBlcy9zdGVwLXNlbGVjdGVkLWV2ZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItc3RlcHBlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGliLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBMSUJTVEVQUEVSX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaWJTdGVwcGVyQ29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcclxuICAgIC8vIFByaXZhdGUgcHJvcGVydGllcy5cclxuICAgIHByaXZhdGUgX2N1cnJlbnRTdGVwSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIF9pc0NvbXBsZXRlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XHJcblxyXG4gICAgLyoqIFRoZSBpbm5lciBzdGVwcyBvZiB0aGUgd2l6YXJkLiAqL1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihMaWJTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHB1YmxpYyBzdGVwcyE6IFF1ZXJ5TGlzdDxMaWJTdGVwQ29tcG9uZW50PjtcclxuICAgIC8qKiBFbW1pdGVkIHdoZW4gYSBzdGVwIGNoYW5nZSBvY2N1cnMuICovXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHN0ZXBDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwU2VsZWN0ZWRFdmVudD4oKTtcclxuICAgIC8qKiBFbW1pdGVkIHdoZW4gdGhlIHN0ZXBwZXIgbmF2aWdhdGVzIGF3YXkgZnJvbSB0aGUgZmluYWwgc3RlcC4gT25seSBlbWl0cyBvbmNlLiAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgZWFjaCBzdGVwIGhhcyB0byBiZSB2YWxpZGF0ZWQgYmVmb3JlIHByb2NlZWRpbmcgdG8gdGhlIG5leHQuICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbGluZWFyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhlIHN0ZXBwZXIuICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgdHlwZTogU3RlcHBlclR5cGUgPSBTdGVwcGVyVHlwZS5QYW5lbHM7XHJcbiAgICBwdWJsaWMgU3RlcFN0YXRlID0gU3RlcFN0YXRlO1xyXG4gICAgcHVibGljIFN0ZXBwZXJUeXBlID0gU3RlcHBlclR5cGU7XHJcblxyXG4gICAgLyoqIFRoZSBjdXJyZW50IHdpemFyZCBzdGVwLiAqL1xyXG4gICAgcHVibGljIGdldCBjdXJyZW50U3RlcCgpOiBMaWJTdGVwQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcz8uZ2V0KHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUaGUgaW5kZXggKHN0YXJ0aW5nIGZyb20gemVybykgb2YgdGhlIGN1cnJlbnQgd2l6YXJkIHN0ZXAuICovXHJcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRTdGVwSW5kZXgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFN0ZXBJbmRleDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgc3RlcHBlciBjYW4gZ28gYSBzdGVwIGJhY2suICovXHJcbiAgICBwdWJsaWMgZ2V0IGNhbkdvQmFjaygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFN0ZXBJbmRleCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHN0ZXBwZXIgY2FuIGdvIGEgc3RlcCBmb3J3YXJkLiAqL1xyXG4gICAgcHVibGljIGdldCBjYW5Hb0ZvcndhcmQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXggPCB0aGlzLnN0ZXBzPy5sZW5ndGggLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciAgKi9cclxuICAgIHB1YmxpYyBnZXQgaXNDb21wbGV0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29tcGxldGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHsgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQcm9jZWVkcyB0byB0aGUgbmV4dCBzdGVwLCBpZiBhbnkuICovXHJcbiAgICBwdWJsaWMgZ29Ub05leHRTdGVwKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwPy5pc0xhc3QgJiYgIXRoaXMuX2lzQ29tcGxldGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzQ29tcGxldGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuY2FuR29Gb3J3YXJkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcEluZGV4KHRoaXMuX2N1cnJlbnRTdGVwSW5kZXggKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUHJvY2VlZHMgdG8gdGhlIHByZXZpb3VzIHN0ZXAsIGlmIGFueS4gKi9cclxuICAgIHB1YmxpYyBnb1RvUHJldmlvdXNTdGVwKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5jYW5Hb0JhY2spIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRTdGVwSW5kZXgodGhpcy5fY3VycmVudFN0ZXBJbmRleCAtIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblNlbGVjdFN0ZXAoc2VsZWN0ZWRTdGVwOiBMaWJTdGVwQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcEluZGV4KHNlbGVjdGVkU3RlcC5pbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50U3RlcEluZGV4KG5ld0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdGVwc0FycmF5ID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSBzdGVwc0FycmF5W3RoaXMuY3VycmVudFN0ZXBJbmRleF07XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkU3RvcCA9IHRoaXMubGluZWFyICYmIChcclxuICAgICAgICAgICAgKCFjdXJyZW50U3RlcC5pc1ZhbGlkICYmIG5ld0luZGV4ID49IHRoaXMuY3VycmVudFN0ZXBJbmRleCkgfHwgLy8gSWYgY3VycmVudCBzdGVwIGlzIGludmFsaWQgYW5kIHdhbnQgdG8gZ28gZm9yd2FyZCwgdGhlbiBzdG9wLlxyXG4gICAgICAgICAgICAoY3VycmVudFN0ZXAuaXNWYWxpZCAmJiBuZXdJbmRleCA+IHRoaXMuY3VycmVudFN0ZXBJbmRleCArIDEgJiYgc3RlcHNBcnJheS5zbGljZSh0aGlzLmN1cnJlbnRTdGVwSW5kZXggKyAxLCBuZXdJbmRleCkuc29tZSh4ID0+ICF4LmlzVmFsaWQpKSAvLyBJZiBnb2luZyBmb3J3YXJkIChtb3JlIHRoYW4gMSBzdGVwcyksIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgaW52YWxpZCBzdGVwcyBpbiBiZXR3ZWVuLlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHNob3VsZFN0b3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0ZXBDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBzZWxlY3RlZEluZGV4OiBuZXdJbmRleCxcclxuICAgICAgICAgICAgcHJldmlvdXNseVNlbGVjdGVkSW5kZXg6IHRoaXMuY3VycmVudFN0ZXBJbmRleCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRTdGVwOiBzdGVwc0FycmF5W25ld0luZGV4XSxcclxuICAgICAgICAgICAgcHJldmlvdXNseVNlbGVjdGVkU3RlcDogY3VycmVudFN0ZXBcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4ID0gbmV3SW5kZXg7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxyXG4gICAgPCEtLSBCdWxsZXRzIC0tPlxyXG4gICAgPG5hdiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1jb250YWluZXJcIiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuQnVsbGV0c1wiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWNvdW50ZXJcIj5TdGVwIHt7IGN1cnJlbnRTdGVwSW5kZXggKyAxIH19IG9mIHt7IHN0ZXBzLmxlbmd0aCB9fTwvcD5cclxuICAgICAgICA8b2wgcm9sZT1cImxpc3RcIiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1vbFwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZWQgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtY29tcGxldGVkLXN0ZXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFjdGl2ZS1zdGVwXCIgYXJpYS1jdXJyZW50PVwic3RlcFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFjdGl2ZS1zdGVwLWxldmVsMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hY3RpdmUtc3RlcC1sZXZlbDFcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFjdGl2ZS1zdGVwLWJ1bGxldFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgaHJlZj1cIiNcIiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy11cGNvbWluZy1zdGVwXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuVXBjb21pbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L29sPlxyXG4gICAgPC9uYXY+XHJcbiAgICA8IS0tIEJ1bGxldHMgJiBUZXh0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1jb250YWluZXJcIiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuQnVsbGV0c0FuZFRleHRcIj5cclxuICAgICAgICA8bmF2IGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8b2wgcm9sZT1cImxpc3RcIiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1vbFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWNvbXBsZXRlZC1zdGVwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1jb21wbGV0ZWQtc3RlcC1sZXZlbDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC1mdWxsIHctZnVsbCB0ZXh0LWJsdWUtNjAwIGdyb3VwLWhvdmVyOnRleHQtYmx1ZS04MDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMy43MDctOS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1jb21wbGV0ZWQtc3RlcC1jb250YWluZXJcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWFjdGl2ZS1zdGVwXCIgYXJpYS1jdXJyZW50PVwic3RlcFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1hY3RpdmUtc3RlcC1sZXZlbDFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWFjdGl2ZS1zdGVwLWxldmVsMTFcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1hY3RpdmUtc3RlcC1sZXZlbDEyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWFjdGl2ZS1zdGVwLWNvbnRhaW5lclwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LXVwY29taW5nLXN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtdXBjb21pbmctc3RlcC1sZXZlbDFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LXVwY29taW5nLXN0ZXAtbGV2ZWwyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LXVwY29taW5nLXN0ZXAtY29udGFpbmVyXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L29sPlxyXG4gICAgICAgIDwvbmF2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIENpcmNsZXMgLS0+XHJcbiAgICA8bmF2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiIGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5DaXJjbGVzXCI+XHJcbiAgICAgICAgPG9sIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIiByb2xlPVwibGlzdFwiPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIiAoY2xpY2spPVwib25TZWxlY3RTdGVwKHN0ZXApXCIgY2xhc3M9XCJyZWxhdGl2ZSBwci04IHNtOnByLTIwIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0wLjUgdy1mdWxsIGJnLWJsdWUtNjAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmx1ZS02MDAgcm91bmRlZC1mdWxsIGhvdmVyOmJnLWJsdWUtOTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJ3LTUgaC01IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0wLjUgdy1mdWxsIGJnLWdyYXktMjAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgYm9yZGVyLTIgYm9yZGVyLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiIGFyaWEtY3VycmVudD1cInN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTIuNSB3LTIuNSBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuVXBjb21pbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0wLjUgdy1mdWxsIGJnLWdyYXktMjAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwIHJlbGF0aXZlIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtZnVsbCBob3Zlcjpib3JkZXItZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTIuNSB3LTIuNSBiZy10cmFuc3BhcmVudCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6YmctZ3JheS0zMDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L29sPlxyXG4gICAgPC9uYXY+XHJcbiAgICA8IS0tIENpcmNsZXMgV2l0aCBUZXh0IC0tPlxyXG4gICAgPG5hdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIgYXJpYS1sYWJlbD1cIlByb2dyZXNzXCIgKm5nU3dpdGNoQ2FzZT1cIlN0ZXBwZXJUeXBlLkNpcmNsZXNXaXRoVGV4dFwiPlxyXG4gICAgICAgIDxvbCByb2xlPVwibGlzdFwiIGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIiBjbGFzcz1cInJlbGF0aXZlIHBiLTEwIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkNvbXBsZXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCItbWwtcHggYWJzb2x1dGUgbXQtMC41IHRvcC00IGxlZnQtNCB3LTAuNSBoLWZ1bGwgYmctYmx1ZS02MDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cIiFzdGVwLmlzTGFzdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0IGdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC05IGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aXZlIHotMTAgdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6YmctYmx1ZS04MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy01IGgtNSB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC00IG1pbi13LTAgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2VcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIiAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcEluZm8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiLW1sLXB4IGFic29sdXRlIG10LTAuNSB0b3AtNCBsZWZ0LTQgdy0wLjUgaC1mdWxsIGJnLWdyYXktMzAwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCIhc3RlcC5pc0xhc3RcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleCBpdGVtcy1zdGFydCBncm91cFwiIGFyaWEtY3VycmVudD1cInN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTkgZmxleCBpdGVtcy1jZW50ZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpdmUgei0xMCB3LTggaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlIGJvcmRlci0yIGJvcmRlci1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgbWluLXctMCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlIHVwcGVyY2FzZSB0ZXh0LWJsdWUtNjAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBJbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCItbWwtcHggYWJzb2x1dGUgbXQtMC41IHRvcC00IGxlZnQtNCB3LTAuNSBoLWZ1bGwgYmctZ3JheS0zMDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cIiFzdGVwLmlzTGFzdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaHJlZj1cIiNcIiBjbGFzcz1cInJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQgZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTkgZmxleCBpdGVtcy1jZW50ZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpdmUgei0xMCB3LTggaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlIGJvcmRlci0yIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6Ym9yZGVyLWdyYXktNDAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTIuNSB3LTIuNSBiZy10cmFuc3BhcmVudCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6YmctZ3JheS0zMDBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC00IG1pbi13LTAgZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgdGV4dC1ncmF5LTUwMFwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiICpuZ0lmPVwic3RlcC5zdGVwSW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwSW5mby50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L29sPlxyXG4gICAgPC9uYXY+XHJcbiAgICA8IS0tIFBhbmVscyAtLT5cclxuICAgIDxuYXYgYXJpYS1sYWJlbD1cIlByb2dyZXNzXCIgKm5nU3dpdGNoQ2FzZT1cIlN0ZXBwZXJUeXBlLlBhbmVsc1wiPlxyXG4gICAgICAgIDxvbCByb2xlPVwibGlzdFwiIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLW1kIGRpdmlkZS15IGRpdmlkZS1ncmF5LTMwMCBtZDpmbGV4IG1kOmRpdmlkZS15LTBcIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiIGNsYXNzPVwicmVsYXRpdmUgbWQ6ZmxleC0xIG1kOmZsZXggY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29tcGxldGVkIHN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAgZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC02IHB5LTQgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgdy0xMCBoLTEwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ibHVlLTgwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInctNiBoLTYgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBzdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTYgcHktNCBmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4LXNocmluay0wIHctMTAgaC0xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXItMiBib3JkZXItYmx1ZS02MDAgcm91bmRlZC1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibHVlLTYwMFwiPnt7IChzdGVwLmluZGV4ICsgMSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYmx1ZS02MDBcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgc3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBmbGV4IGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC02IHB5LTQgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgdy0xMCBoLTEwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci0yIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6Ym9yZGVyLWdyYXktNDAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS01MDAgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTkwMFwiPnt7IChzdGVwLmluZGV4ICsgMSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCBncm91cC1ob3Zlcjp0ZXh0LWdyYXktOTAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEFycm93IHNlcGFyYXRvciBmb3IgbGcgc2NyZWVucyBhbmQgdXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXN0ZXAuaXNMYXN0XCIgY2xhc3M9XCJoaWRkZW4gbWQ6YmxvY2sgYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBoLWZ1bGwgdy01XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtZnVsbCB3LWZ1bGwgdGV4dC1ncmF5LTMwMFwiIHZpZXdCb3g9XCIwIDAgMjIgODBcIiBmaWxsPVwibm9uZVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAtMkwyMCA0MEwwIDgyXCIgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiIHN0cm9rZT1cImN1cnJlbnRjb2xvclwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvb2w+XHJcbiAgICA8L25hdj5cclxuICAgIDwhLS0gUGFuZWxzIFdpdGggQm9yZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb250YWluZXJcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuUGFuZWxzV2l0aEJvcmRlclwiPlxyXG4gICAgICAgIDxuYXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItbmF2XCIgYXJpYS1sYWJlbD1cIlByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgIDxvbCByb2xlPVwibGlzdFwiIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLW9sXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIiAoY2xpY2spPVwib25TZWxlY3RTdGVwKHN0ZXApXCIgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItbGlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb21wbGV0ZWQtc3RlcC1sZXZlbDFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb21wbGV0ZWQtc3RlcC1sZXZlbDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb21wbGV0ZWQtc3RlcC1sZXZlbDIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbXBsZXRlZC1zdGVwLWxldmVsMjExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy02IGgtNiB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbXBsZXRlZC1zdGVwLWxldmVsMjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXAtbGV2ZWwyMjFcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXAtbGV2ZWwyMjJcIiAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwSW5mby50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhcmlhLWN1cnJlbnQ9XCJzdGVwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWFjdGl2ZS1zdGVwLWxldmVsMjExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIxMS10ZXh0XCI+e3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXAtbGV2ZWwyMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIyMVwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIyMlwiICpuZ0lmPVwic3RlcC5zdGVwSW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlcGFyYXRvciAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1zdGVwLXNlcGFyYXRvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICpuZ0lmPVwic3RlcC5pbmRleCAhPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtZnVsbCB3LWZ1bGwgdGV4dC1ncmF5LTMwMFwiIHZpZXdCb3g9XCIwIDAgMTIgODJcIiBmaWxsPVwibm9uZVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wLjUgMFYzMUwxMC41IDQxTDAuNSA1MVY4MlwiIHN0cm9rZT1cImN1cnJlbnRjb2xvclwiIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLXVwY29taW5nLXN0ZXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLXVwY29taW5nLXN0ZXAtbGV2ZWwxXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci11cGNvbWluZy1zdGVwLWxldmVsMjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIxMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIxMS10ZXh0XCI+e3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLXVwY29taW5nLXN0ZXAtbGV2ZWwyMjFcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIiAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwSW5mby50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZXBhcmF0b3IgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItc3RlcC1zZXBhcmF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cInN0ZXAuaW5kZXggIT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsIHRleHQtZ3JheS0zMDBcIiB2aWV3Qm94PVwiMCAwIDEyIDgyXCIgZmlsbD1cIm5vbmVcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMC41IDBWMzFMMTAuNSA0MUwwLjUgNTFWODJcIiBzdHJva2U9XCJjdXJyZW50Y29sb3JcIiB2ZWN0b3ItZWZmZWN0PVwibm9uLXNjYWxpbmctc3Ryb2tlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgPC9uYXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gUHJvZ3Jlc3MgLS0+XHJcbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5Qcm9ncmVzc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC02XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0yIGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiIFtzdHlsZS53aWR0aF09XCIoKChjdXJyZW50U3RlcEluZGV4ICsgMSkgLyBzdGVwcy5sZW5ndGgpICogMTAwKSArICclJ1wiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbiBzbTpncmlkIGdyaWQtY29scy00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMCBtdC02XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiIGNsYXNzPVwidGV4dC1ibHVlLTYwMCBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gU2ltcGxlIC0tPlxyXG4gICAgPG5hdiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuU2ltcGxlXCI+XHJcbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJzcGFjZS15LTQgbWQ6ZmxleCBtZDpzcGFjZS15LTAgbWQ6c3BhY2UteC04XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIiBjbGFzcz1cIm1kOmZsZXgtMSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZWQgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBwbC00IHB5LTIgZmxleCBmbGV4LWNvbCBib3JkZXItbC00IGJvcmRlci1ibHVlLTYwMCBob3Zlcjpib3JkZXItYmx1ZS04MDAgbWQ6cGwtMCBtZDpwdC00IG1kOnBiLTAgbWQ6Ym9yZGVyLWwtMCBtZDpib3JkZXItdC00XCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIHRleHQtYmx1ZS02MDAgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlIHVwcGVyY2FzZSBncm91cC1ob3Zlcjp0ZXh0LWJsdWUtODAwXCI+U3RlcCB7eyBzdGVwLmluZGV4ICsgMSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGwtNCBweS0yIGZsZXggZmxleC1jb2wgYm9yZGVyLWwtNCBib3JkZXItYmx1ZS02MDAgbWQ6cGwtMCBtZDpwdC00IG1kOnBiLTAgbWQ6Ym9yZGVyLWwtMCBtZDpib3JkZXItdC00XCIgYXJpYS1jdXJyZW50PVwic3RlcFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyB0ZXh0LWJsdWUtNjAwIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2VcIj5TdGVwIHt7IHN0ZXAuaW5kZXggKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bVwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwIHBsLTQgcHktMiBmbGV4IGZsZXgtY29sIGJvcmRlci1sLTQgYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCBtZDpwbC0wIG1kOnB0LTQgbWQ6cGItMCBtZDpib3JkZXItbC0wIG1kOmJvcmRlci10LTRcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTcwMFwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9vbD5cclxuICAgIDwvbmF2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+Il19
@@ -0,0 +1,4 @@
1
+ /** Change event emitted on step changes. */
2
+ export class StepSelectedEvent {
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zZWxlY3RlZC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9zdGVwcGVyL3R5cGVzL3N0ZXAtc2VsZWN0ZWQtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsNENBQTRDO0FBQzVDLE1BQU0sT0FBTyxpQkFBaUI7Q0FTN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaWJTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vbGliLXN0ZXAuY29tcG9uZW50JztcclxuXHJcbi8qKiBDaGFuZ2UgZXZlbnQgZW1pdHRlZCBvbiBzdGVwIGNoYW5nZXMuICovXHJcbmV4cG9ydCBjbGFzcyBTdGVwU2VsZWN0ZWRFdmVudCB7XHJcbiAgICAvKiogSW5kZXggb2YgdGhlIHN0ZXAgbm93IHNlbGVjdGVkLiAqL1xyXG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXghOiBudW1iZXI7XHJcbiAgICAvKiogSW5kZXggb2YgdGhlIHN0ZXAgcHJldmlvdXNseSBzZWxlY3RlZC4gKi9cclxuICAgIHB1YmxpYyBwcmV2aW91c2x5U2VsZWN0ZWRJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIFRoZSBzdGVwIGluc3RhbmNlIG5vdyBzZWxlY3RlZC4gKi9cclxuICAgIHB1YmxpYyBzZWxlY3RlZFN0ZXAhOiBMaWJTdGVwQ29tcG9uZW50O1xyXG4gICAgLyoqIFRoZSBzdGVwIGluc3RhbmNlIHByZXZpb3VzbHkgc2VsZWN0ZWQuICovXHJcbiAgICBwdWJsaWMgcHJldmlvdXNseVNlbGVjdGVkU3RlcDogTGliU3RlcENvbXBvbmVudCB8IHVuZGVmaW5lZDtcclxufVxyXG4iXX0=
@@ -9,4 +9,4 @@ export var StepperType;
9
9
  StepperType["Progress"] = "Progress";
10
10
  StepperType["Simple"] = "Simple";
11
11
  })(StepperType || (StepperType = {}));
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvdHlwZXMvc3RlcHBlci10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFdBU1g7QUFURCxXQUFZLFdBQVc7SUFDbkIsa0NBQW1CLENBQUE7SUFDbkIsZ0RBQWlDLENBQUE7SUFDakMsa0NBQW1CLENBQUE7SUFDbkIsa0RBQW1DLENBQUE7SUFDbkMsZ0NBQWlCLENBQUE7SUFDakIsb0RBQXFDLENBQUE7SUFDckMsb0NBQXFCLENBQUE7SUFDckIsZ0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQVRXLFdBQVcsS0FBWCxXQUFXLFFBU3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gU3RlcHBlclR5cGUge1xuICAgIEJ1bGxldHMgPSAnQnVsbGV0cycsXG4gICAgQnVsbGV0c0FuZFRleHQgPSAnQnVsbGV0c0FuZFRleHQnLFxuICAgIENpcmNsZXMgPSAnQ2lyY2xlcycsXG4gICAgQ2lyY2xlc1dpdGhUZXh0ID0gJ0NpcmNsZXNXaXRoVGV4dCcsXG4gICAgUGFuZWxzID0gJ1BhbmVscycsXG4gICAgUGFuZWxzV2l0aEJvcmRlciA9ICdQYW5lbHNXaXRoQm9yZGVyJyxcbiAgICBQcm9ncmVzcyA9ICdQcm9ncmVzcycsXG4gICAgU2ltcGxlID0gJ1NpbXBsZSdcbn0iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvdHlwZXMvc3RlcHBlci10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFdBU1g7QUFURCxXQUFZLFdBQVc7SUFDbkIsa0NBQW1CLENBQUE7SUFDbkIsZ0RBQWlDLENBQUE7SUFDakMsa0NBQW1CLENBQUE7SUFDbkIsa0RBQW1DLENBQUE7SUFDbkMsZ0NBQWlCLENBQUE7SUFDakIsb0RBQXFDLENBQUE7SUFDckMsb0NBQXFCLENBQUE7SUFDckIsZ0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQVRXLFdBQVcsS0FBWCxXQUFXLFFBU3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gU3RlcHBlclR5cGUge1xyXG4gICAgQnVsbGV0cyA9ICdCdWxsZXRzJyxcclxuICAgIEJ1bGxldHNBbmRUZXh0ID0gJ0J1bGxldHNBbmRUZXh0JyxcclxuICAgIENpcmNsZXMgPSAnQ2lyY2xlcycsXHJcbiAgICBDaXJjbGVzV2l0aFRleHQgPSAnQ2lyY2xlc1dpdGhUZXh0JyxcclxuICAgIFBhbmVscyA9ICdQYW5lbHMnLFxyXG4gICAgUGFuZWxzV2l0aEJvcmRlciA9ICdQYW5lbHNXaXRoQm9yZGVyJyxcclxuICAgIFByb2dyZXNzID0gJ1Byb2dyZXNzJyxcclxuICAgIFNpbXBsZSA9ICdTaW1wbGUnXHJcbn0iXX0=
@@ -0,0 +1,67 @@
1
+ import { Component, ContentChildren, EventEmitter, forwardRef, Output } from '@angular/core';
2
+ import { LIBTABGROUP_ACCESSOR } from '../../tokens';
3
+ import { LibTabComponent } from './lib-tab.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ export class LibTabGroupComponent {
8
+ constructor() {
9
+ /** The inner tabs of the group. */
10
+ this.tabs = undefined;
11
+ /** Emmited when a step change occurs. */
12
+ this.tabChanged = new EventEmitter();
13
+ }
14
+ /** The current tab. */
15
+ get currentTab() {
16
+ var _a;
17
+ return (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.find(x => x.isActive);
18
+ }
19
+ /** The index (starting from zero) of the current tab. */
20
+ get currentΤabIndex() {
21
+ var _a;
22
+ return ((_a = this.currentTab) === null || _a === void 0 ? void 0 : _a.index) || undefined;
23
+ }
24
+ ngOnInit() { }
25
+ ngAfterContentInit() {
26
+ if (!this.tabs) {
27
+ return;
28
+ }
29
+ }
30
+ ngAfterContentChecked() {
31
+ if (this.tabs && this.tabs.length > 0) {
32
+ const anyActive = this.tabs.filter(x => x.isActive).length > 0;
33
+ if (!anyActive) {
34
+ this.tabs.get(0).isActive = true;
35
+ }
36
+ }
37
+ }
38
+ onTabChanged(selectedTab) {
39
+ this.tabs.forEach((tab) => tab.isActive = tab.id === selectedTab.id);
40
+ this.tabChanged.emit(selectedTab);
41
+ }
42
+ onTabSelectChanged(selectedTabIndex) {
43
+ var _a;
44
+ this.tabs.forEach((tab, index) => tab.isActive = index === selectedTabIndex);
45
+ this.tabChanged.emit((_a = this.tabs) === null || _a === void 0 ? void 0 : _a.get(selectedTabIndex));
46
+ }
47
+ }
48
+ LibTabGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
+ LibTabGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibTabGroupComponent, selector: "lib-tab-group", outputs: { tabChanged: "tabChanged" }, providers: [
50
+ { provide: LIBTABGROUP_ACCESSOR, useExisting: forwardRef(() => LibTabGroupComponent) }
51
+ ], queries: [{ propertyName: "tabs", predicate: LibTabComponent, descendants: true }], ngImport: i0, template: "<div class=\"tab-group-select-hidden\">\r\n <label for=\"tabs\" class=\"sr-only\">Select a tab</label>\r\n <select id=\"tabs\" name=\"tabs\" (change)=\"onTabSelectChanged(+tabsSelect.value)\" class=\"tab-group-select\" #tabsSelect>\r\n <option [value]=\"i\" *ngFor=\"let tab of tabs; let i = index\">{{ tab.label }}</option>\r\n </select>\r\n</div>\r\n<div class=\"tab-group-container-hidden\">\r\n <div class=\"tab-group-container\">\r\n <nav class=\"tab-group-container-nav\" aria-label=\"Tabs\">\r\n <a *ngFor=\"let tab of tabs\" href=\"javascript:void(0)\" [class.tab]=\"!tab.isActive\" [class.tab-active]=\"tab.isActive\" (click)=\"onTabChanged(tab)\">\r\n {{ tab.label }}\r\n </a>\r\n </nav>\r\n </div>\r\n</div>\r\n<div *ngIf=\"currentTab?.content\">\r\n <ng-container [ngTemplateOutlet]=\"currentTab!.content\"></ng-container>\r\n</div>", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabGroupComponent, decorators: [{
53
+ type: Component,
54
+ args: [{
55
+ selector: 'lib-tab-group',
56
+ templateUrl: './lib-tab-group.component.html',
57
+ providers: [
58
+ { provide: LIBTABGROUP_ACCESSOR, useExisting: forwardRef(() => LibTabGroupComponent) }
59
+ ]
60
+ }]
61
+ }], ctorParameters: function () { return []; }, propDecorators: { tabs: [{
62
+ type: ContentChildren,
63
+ args: [LibTabComponent, { descendants: true }]
64
+ }], tabChanged: [{
65
+ type: Output
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXRhYi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvdGFicy9saWItdGFiLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy90YWJzL2xpYi10YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QyxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXZKLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFTdEQsTUFBTSxPQUFPLG9CQUFvQjtJQUM3QjtRQUVBLG1DQUFtQztRQUM2QixTQUFJLEdBQTJDLFNBQVMsQ0FBQztRQUN6SCx5Q0FBeUM7UUFDeEIsZUFBVSxHQUFrQyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUxqRixDQUFDO0lBT2pCLHVCQUF1QjtJQUN2QixJQUFXLFVBQVU7O1FBQ2pCLE9BQU8sTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxJQUFXLGVBQWU7O1FBQ3RCLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLEtBQUssS0FBSSxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUVNLFFBQVEsS0FBVyxDQUFDO0lBRXBCLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLE9BQU87U0FDVjtJQUNMLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzthQUNyQztTQUNKO0lBQ0wsQ0FBQztJQUVNLFlBQVksQ0FBQyxXQUE0QjtRQUM1QyxJQUFJLENBQUMsSUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQW9CLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLGtCQUFrQixDQUFDLGdCQUF3Qjs7UUFDOUMsSUFBSSxDQUFDLElBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFvQixFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7a0hBM0NRLG9CQUFvQjtzR0FBcEIsb0JBQW9CLCtFQUpsQjtRQUNQLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRTtLQUN6RiwrQ0FNZ0IsZUFBZSxnRENoQnBDLDA1QkFpQk07NEZETE8sb0JBQW9CO2tCQVBoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsRUFBRTtxQkFDekY7aUJBQ0o7MEVBS21FLElBQUk7c0JBQW5FLGVBQWU7dUJBQUMsZUFBZSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFdEMsVUFBVTtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IExJQlRBQkdST1VQX0FDQ0VTU09SIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgTGliVGFiQ29tcG9uZW50IH0gZnJvbSAnLi9saWItdGFiLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXRhYi1ncm91cCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGliLXRhYi1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IExJQlRBQkdST1VQX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaWJUYWJHcm91cENvbXBvbmVudCkgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliVGFiR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICAvKiogVGhlIGlubmVyIHRhYnMgb2YgdGhlIGdyb3VwLiAqL1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihMaWJUYWJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHVibGljIHRhYnM6IFF1ZXJ5TGlzdDxMaWJUYWJDb21wb25lbnQ+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgLyoqIEVtbWl0ZWQgd2hlbiBhIHN0ZXAgY2hhbmdlIG9jY3Vycy4gKi9cclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgdGFiQ2hhbmdlZDogRXZlbnRFbWl0dGVyPExpYlRhYkNvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPExpYlRhYkNvbXBvbmVudD4oKTtcclxuXHJcbiAgICAvKiogVGhlIGN1cnJlbnQgdGFiLiAqL1xyXG4gICAgcHVibGljIGdldCBjdXJyZW50VGFiKCk6IExpYlRhYkNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicz8uZmluZCh4ID0+IHguaXNBY3RpdmUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUaGUgaW5kZXggKHN0YXJ0aW5nIGZyb20gemVybykgb2YgdGhlIGN1cnJlbnQgdGFiLiAqL1xyXG4gICAgcHVibGljIGdldCBjdXJyZW50zqRhYkluZGV4KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFRhYj8uaW5kZXggfHwgdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHsgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgYW55QWN0aXZlID0gdGhpcy50YWJzLmZpbHRlcih4ID0+IHguaXNBY3RpdmUpLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgIGlmICghYW55QWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnMuZ2V0KDApIS5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uVGFiQ2hhbmdlZChzZWxlY3RlZFRhYjogTGliVGFiQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50YWJzIS5mb3JFYWNoKCh0YWI6IExpYlRhYkNvbXBvbmVudCkgPT4gdGFiLmlzQWN0aXZlID0gdGFiLmlkID09PSBzZWxlY3RlZFRhYi5pZCk7XHJcbiAgICAgICAgdGhpcy50YWJDaGFuZ2VkLmVtaXQoc2VsZWN0ZWRUYWIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRhYlNlbGVjdENoYW5nZWQoc2VsZWN0ZWRUYWJJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50YWJzIS5mb3JFYWNoKCh0YWI6IExpYlRhYkNvbXBvbmVudCwgaW5kZXg6IG51bWJlcikgPT4gdGFiLmlzQWN0aXZlID0gaW5kZXggPT09IHNlbGVjdGVkVGFiSW5kZXgpO1xyXG4gICAgICAgIHRoaXMudGFiQ2hhbmdlZC5lbWl0KHRoaXMudGFicz8uZ2V0KHNlbGVjdGVkVGFiSW5kZXgpKTtcclxuICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJ0YWItZ3JvdXAtc2VsZWN0LWhpZGRlblwiPlxyXG4gICAgPGxhYmVsIGZvcj1cInRhYnNcIiBjbGFzcz1cInNyLW9ubHlcIj5TZWxlY3QgYSB0YWI8L2xhYmVsPlxyXG4gICAgPHNlbGVjdCBpZD1cInRhYnNcIiBuYW1lPVwidGFic1wiIChjaGFuZ2UpPVwib25UYWJTZWxlY3RDaGFuZ2VkKCt0YWJzU2VsZWN0LnZhbHVlKVwiIGNsYXNzPVwidGFiLWdyb3VwLXNlbGVjdFwiICN0YWJzU2VsZWN0PlxyXG4gICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImlcIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIj57eyB0YWIubGFiZWwgfX08L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInRhYi1ncm91cC1jb250YWluZXItaGlkZGVuXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFiLWdyb3VwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxuYXYgY2xhc3M9XCJ0YWItZ3JvdXAtY29udGFpbmVyLW5hdlwiIGFyaWEtbGFiZWw9XCJUYWJzXCI+XHJcbiAgICAgICAgICAgIDxhICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBbY2xhc3MudGFiXT1cIiF0YWIuaXNBY3RpdmVcIiBbY2xhc3MudGFiLWFjdGl2ZV09XCJ0YWIuaXNBY3RpdmVcIiAoY2xpY2spPVwib25UYWJDaGFuZ2VkKHRhYilcIj5cclxuICAgICAgICAgICAgICAgIHt7IHRhYi5sYWJlbCB9fVxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9uYXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJjdXJyZW50VGFiPy5jb250ZW50XCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1cnJlbnRUYWIhLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
@@ -0,0 +1,58 @@
1
+ import { ChangeDetectionStrategy, Component, Inject, Input, Optional, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import * as uuid from 'uuid';
3
+ import { LIBTABGROUP_ACCESSOR } from '../../tokens';
4
+ import * as i0 from "@angular/core";
5
+ export class LibTabComponent {
6
+ constructor(_tabGroup) {
7
+ this._tabGroup = _tabGroup;
8
+ this._isActive = false;
9
+ }
10
+ /** Indicates the index of the tab. */
11
+ get index() {
12
+ var _a, _b;
13
+ return ((_b = (_a = this._tabGroup) === null || _a === void 0 ? void 0 : _a.tabs) === null || _b === void 0 ? void 0 : _b.toArray().indexOf(this)) || undefined;
14
+ }
15
+ /** Indicates whether the tab is active. */
16
+ get isActive() {
17
+ return this._isActive;
18
+ }
19
+ /** Setter for LibTabComponent isActive property. */
20
+ set isActive(isActive) {
21
+ this._isActive = isActive;
22
+ }
23
+ ngOnInit() {
24
+ this.id = this.id || uuid.v4();
25
+ }
26
+ }
27
+ LibTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabComponent, deps: [{ token: LIBTABGROUP_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
28
+ LibTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibTabComponent, selector: "lib-tab", inputs: { label: "label", id: "id" }, viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `
29
+ <ng-template>
30
+ <ng-content></ng-content>
31
+ </ng-template>
32
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabComponent, decorators: [{
34
+ type: Component,
35
+ args: [{
36
+ selector: 'lib-tab',
37
+ template: `
38
+ <ng-template>
39
+ <ng-content></ng-content>
40
+ </ng-template>
41
+ `,
42
+ encapsulation: ViewEncapsulation.None,
43
+ changeDetection: ChangeDetectionStrategy.OnPush
44
+ }]
45
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
46
+ type: Optional
47
+ }, {
48
+ type: Inject,
49
+ args: [LIBTABGROUP_ACCESSOR]
50
+ }] }]; }, propDecorators: { content: [{
51
+ type: ViewChild,
52
+ args: [TemplateRef, { static: true }]
53
+ }], label: [{
54
+ type: Input
55
+ }], id: [{
56
+ type: Input
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvdGFicy9saWItdGFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0ksT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVlwRCxNQUFNLE9BQU8sZUFBZTtJQUd4QixZQUM4RCxTQUFlO1FBQWYsY0FBUyxHQUFULFNBQVMsQ0FBTTtRQUhyRSxjQUFTLEdBQVksS0FBSyxDQUFDO0lBSS9CLENBQUM7SUFTTCxzQ0FBc0M7SUFDdEMsSUFBVyxLQUFLOztRQUNaLE9BQU8sQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsSUFBSSwwQ0FBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFJLFNBQVMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELElBQVcsUUFBUSxDQUFDLFFBQWlCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs2R0EvQlEsZUFBZSxrQkFJQSxvQkFBb0I7aUdBSm5DLGVBQWUsOEhBUWIsV0FBVyw4REFoQlo7Ozs7S0FJVDs0RkFJUSxlQUFlO2tCQVYzQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUU7Ozs7S0FJVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzswQkFLUSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9CQUFvQjs0Q0FJSyxPQUFPO3NCQUF2RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXhCLEtBQUs7c0JBQXBCLEtBQUs7Z0JBRVUsRUFBRTtzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBMSUJUQUJHUk9VUF9BQ0NFU1NPUiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXRhYicsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgcHJpdmF0ZSBfaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExJQlRBQkdST1VQX0FDQ0VTU09SKSBwdWJsaWMgcmVhZG9ubHkgX3RhYkdyb3VwPzogYW55XHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKiBUaGUgY29udGVudCBwcm92aWRlZCBmb3IgdGhlIHRhYi4gKi9cclxuICAgIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIC8qKiBBIGxhYmVsIGZvciB0aGUgdGFiIGhlYWRlci4gKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIEluZGljYXRlcyB0aGUgdW5pcXVlIGlkIGFzc2lnbmVkIGluIHRoZSB0YWIuICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaWQhOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEluZGljYXRlcyB0aGUgaW5kZXggb2YgdGhlIHRhYi4gKi9cclxuICAgIHB1YmxpYyBnZXQgaW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiR3JvdXA/LnRhYnM/LnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpIHx8IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhYiBpcyBhY3RpdmUuICovXHJcbiAgICBwdWJsaWMgZ2V0IGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogU2V0dGVyIGZvciBMaWJUYWJDb21wb25lbnQgaXNBY3RpdmUgcHJvcGVydHkuICovXHJcbiAgICBwdWJsaWMgc2V0IGlzQWN0aXZlKGlzQWN0aXZlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5faXNBY3RpdmUgPSBpc0FjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pZCA9IHRoaXMuaWQgfHwgdXVpZC52NCgpO1xyXG4gICAgfVxyXG59Il19
@@ -0,0 +1,31 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/toaster.service";
4
+ import * as i2 from "./toaster.component";
5
+ import * as i3 from "@angular/common";
6
+ export class ToasterContainerComponent {
7
+ constructor(toaster) {
8
+ this.toaster = toaster;
9
+ this.toasts = [];
10
+ }
11
+ ngOnInit() {
12
+ this.toaster.toast$
13
+ .subscribe(toast => {
14
+ this.toasts = [toast, ...this.toasts];
15
+ setTimeout(() => this.toasts.pop(), toast.delay || 6000);
16
+ });
17
+ }
18
+ remove(index) {
19
+ this.toasts = this.toasts.slice(0, index).concat(this.toasts.slice(index + 1));
20
+ }
21
+ }
22
+ ToasterContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterContainerComponent, deps: [{ token: i1.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
23
+ ToasterContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToasterContainerComponent, selector: "lib-toaster-container", ngImport: i0, template: "<lib-toaster *ngFor=\"let toast of toasts; let i=index\" [toast]=\"toast\" [i]=\"i\" (remove)=\"remove($event)\"></lib-toaster>\r\n", components: [{ type: i2.ToasterComponent, selector: "lib-toaster", inputs: ["toast", "i"], outputs: ["remove"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterContainerComponent, decorators: [{
25
+ type: Component,
26
+ args: [{
27
+ selector: 'lib-toaster-container',
28
+ templateUrl: './toaster-container.component.html'
29
+ }]
30
+ }], ctorParameters: function () { return [{ type: i1.ToasterService }]; } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3RvYXN0ZXIvdG9hc3Rlci1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3RvYXN0ZXIvdG9hc3Rlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRbEQsTUFBTSxPQUFPLHlCQUF5QjtJQUlwQyxZQUFvQixPQUF1QjtRQUF2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUYzQyxXQUFNLEdBQVksRUFBRSxDQUFDO0lBRTBCLENBQUM7SUFFaEQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTthQUNoQixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDOzt1SEFoQlUseUJBQXlCOzJHQUF6Qix5QkFBeUIsNkRDUnRDLHFJQUNBOzRGRE9hLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsb0NBQW9DO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3QgfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10b2FzdGVyLWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RvYXN0ZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9hc3RlckNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHRvYXN0czogVG9hc3RbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvYXN0ZXIudG9hc3QkXHJcbiAgICAgIC5zdWJzY3JpYmUodG9hc3QgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RzID0gW3RvYXN0LCAuLi50aGlzLnRvYXN0c107XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRvYXN0cy5wb3AoKSwgdG9hc3QuZGVsYXkgfHwgNjAwMCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3RzID0gdGhpcy50b2FzdHMuc2xpY2UoMCwgaW5kZXgpLmNvbmNhdCh0aGlzLnRvYXN0cy5zbGljZShpbmRleCArIDEpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxsaWItdG9hc3RlciAqbmdGb3I9XCJsZXQgdG9hc3Qgb2YgdG9hc3RzOyBsZXQgaT1pbmRleFwiIFt0b2FzdF09XCJ0b2FzdFwiIFtpXT1cImlcIiAocmVtb3ZlKT1cInJlbW92ZSgkZXZlbnQpXCI+PC9saWItdG9hc3Rlcj5cclxuIl19
@@ -0,0 +1,34 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class ToasterComponent {
5
+ constructor() {
6
+ this.i = 0;
7
+ this.remove = new EventEmitter();
8
+ this.isMobile = false;
9
+ this.closed = false;
10
+ }
11
+ ngOnInit() {
12
+ window.screen.width > 640 ? this.isMobile = false : this.isMobile = true;
13
+ }
14
+ closeToast(index) {
15
+ this.closed = true;
16
+ setTimeout(() => this.remove.emit(index), 100);
17
+ }
18
+ }
19
+ ToasterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ ToasterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToasterComponent, selector: "lib-toaster", inputs: { toast: "toast", i: "i" }, outputs: { remove: "remove" }, ngImport: i0, template: "<div aria-live=\"assertive\"\r\n [ngClass]=\"closed ? 'toast-closed': 'toast z-50'\"\r\n [ngStyle]=\"isMobile ? { 'margin-bottom.px': i * 85 } : {'margin-top.px': i * 85 }\">\r\n <div class=\"toast-container\">\r\n <div class=\"toast-pill\">\r\n <div class=\"toast-context-padding\">\r\n <div class=\"toast-context\"\r\n [ngSwitch]=\"toast?.type\">\r\n <div class=\"toast-icon\"\r\n *ngSwitchCase=\"'info'\">\r\n <svg class=\"h-5 w-5 text-blue-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </div>\r\n <div class=\"toast-icon\"\r\n *ngSwitchCase=\"'success'\">\r\n <svg class=\"h-5 w-5 text-green-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\r\n </svg>\r\n </div>\r\n <div class=\"toast-icon\"\r\n *ngSwitchCase=\"'error'\">\r\n <svg class=\"h-5 w-5 text-red-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </div>\r\n <div class=\"toast-icon\"\r\n *ngSwitchCase=\"'warning'\">\r\n <svg class=\"h-5 w-5 text-yellow-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </div>\r\n <div class=\"toast-icon\"\r\n *ngSwitchDefault>\r\n <svg class=\"h-5 w-5 text-green-400\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"ml-3 w-0 flex-1\">\r\n <p class=\"toast-title\"\r\n *ngIf=\"toast?.title\">\r\n {{toast?.title}}\r\n </p>\r\n <p class=\"toast-body\">\r\n {{toast?.body}}\r\n </p>\r\n </div>\r\n <div class=\"toast-close-icon\">\r\n <button class=\"toast-close-button\"\r\n (click)=\"closeToast(i)\">\r\n <span class=\"sr-only\">Close</span>\r\n <!-- Heroicon name: solid/x -->\r\n <svg class=\"h-5 w-5\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterComponent, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'lib-toaster',
25
+ templateUrl: './toaster.component.html'
26
+ }]
27
+ }], ctorParameters: function () { return []; }, propDecorators: { toast: [{
28
+ type: Input
29
+ }], i: [{
30
+ type: Input
31
+ }], remove: [{
32
+ type: Output
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvdG9hc3Rlci90b2FzdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy90b2FzdGVyL3RvYXN0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTy9FLE1BQU0sT0FBTyxnQkFBZ0I7SUFRM0I7UUFMUyxNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ0wsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdkMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixXQUFNLEdBQUcsS0FBSyxDQUFDO0lBRU4sQ0FBQztJQUVqQixRQUFRO1FBQ04sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDM0UsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs4R0FqQlUsZ0JBQWdCO2tHQUFoQixnQkFBZ0Isc0hDUDdCLHl2SkFzR007NEZEL0ZPLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsV0FBVyxFQUFFLDBCQUEwQjtpQkFDeEM7MEVBR1UsS0FBSztzQkFBYixLQUFLO2dCQUNHLENBQUM7c0JBQVQsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRvYXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdG9hc3RlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RvYXN0ZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2FzdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgdG9hc3Q6IFRvYXN0IHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGkgPSAwO1xyXG4gIEBPdXRwdXQoKSByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBwdWJsaWMgaXNNb2JpbGUgPSBmYWxzZTtcclxuICBwdWJsaWMgY2xvc2VkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgd2luZG93LnNjcmVlbi53aWR0aCA+IDY0MCA/IHRoaXMuaXNNb2JpbGUgPSBmYWxzZSA6IHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlVG9hc3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlbW92ZS5lbWl0KGluZGV4KSwgMTAwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIlxyXG4gICAgIFtuZ0NsYXNzXT1cImNsb3NlZCA/ICd0b2FzdC1jbG9zZWQnOiAndG9hc3Qgei01MCdcIlxyXG4gICAgIFtuZ1N0eWxlXT1cImlzTW9iaWxlID8geyAnbWFyZ2luLWJvdHRvbS5weCc6IGkgKiA4NSB9IDogeydtYXJnaW4tdG9wLnB4JzogaSAqIDg1IH1cIj5cclxuICA8ZGl2IGNsYXNzPVwidG9hc3QtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9hc3QtcGlsbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtY29udGV4dC1wYWRkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWNvbnRleHRcIlxyXG4gICAgICAgICAgICAgW25nU3dpdGNoXT1cInRvYXN0Py50eXBlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtaWNvblwiXHJcbiAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaW5mbydcIj5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTUgdGV4dC1ibHVlLTQwMFwiXHJcbiAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xOCAxMGE4IDggMCAxMS0xNiAwIDggOCAwIDAxMTYgMHptLTctNGExIDEgMCAxMS0yIDAgMSAxIDAgMDEyIDB6TTkgOWExIDEgMCAwMDAgMnYzYTEgMSAwIDAwMSAxaDFhMSAxIDAgMTAwLTJ2LTNhMSAxIDAgMDAtMS0xSDl6XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1pY29uXCJcclxuICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidzdWNjZXNzJ1wiPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSB0ZXh0LWdyZWVuLTQwMFwiXHJcbiAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNOSAxMmwyIDIgNC00bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWljb25cIlxyXG4gICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2Vycm9yJ1wiPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSB0ZXh0LXJlZC00MDBcIlxyXG4gICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnpNOC43MDcgNy4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRMOC41ODYgMTBsLTEuMjkzIDEuMjkzYTEgMSAwIDEwMS40MTQgMS40MTRMMTAgMTEuNDE0bDEuMjkzIDEuMjkzYTEgMSAwIDAwMS40MTQtMS40MTRMMTEuNDE0IDEwbDEuMjkzLTEuMjkzYTEgMSAwIDAwLTEuNDE0LTEuNDE0TDEwIDguNTg2IDguNzA3IDcuMjkzelwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtaWNvblwiXHJcbiAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInd2FybmluZydcIj5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTUgdGV4dC15ZWxsb3ctNDAwXCJcclxuICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTguMjU3IDMuMDk5Yy43NjUtMS4zNiAyLjcyMi0xLjM2IDMuNDg2IDBsNS41OCA5LjkyYy43NSAxLjMzNC0uMjEzIDIuOTgtMS43NDIgMi45OEg0LjQyYy0xLjUzIDAtMi40OTMtMS42NDYtMS43NDMtMi45OGw1LjU4LTkuOTJ6TTExIDEzYTEgMSAwIDExLTIgMCAxIDEgMCAwMTIgMHptLTEtOGExIDEgMCAwMC0xIDF2M2ExIDEgMCAwMDIgMFY2YTEgMSAwIDAwLTEtMXpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWljb25cIlxyXG4gICAgICAgICAgICAgICAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSB0ZXh0LWdyZWVuLTQwMFwiXHJcbiAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNOSAxMmwyIDIgNC00bTYgMmE5IDkgMCAxMS0xOCAwIDkgOSAwIDAxMTggMHpcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0zIHctMCBmbGV4LTFcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0b2FzdC10aXRsZVwiXHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwidG9hc3Q/LnRpdGxlXCI+XHJcbiAgICAgICAgICAgICAge3t0b2FzdD8udGl0bGV9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidG9hc3QtYm9keVwiPlxyXG4gICAgICAgICAgICAgIHt7dG9hc3Q/LmJvZHl9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1jbG9zZS1pY29uXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2FzdC1jbG9zZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVRvYXN0KGkpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPCEtLSBIZXJvaWNvbiBuYW1lOiBzb2xpZC94IC0tPlxyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01XCJcclxuICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMjkzIDQuMjkzYTEgMSAwIDAxMS40MTQgMEwxMCA4LjU4Nmw0LjI5My00LjI5M2ExIDEgMCAxMTEuNDE0IDEuNDE0TDExLjQxNCAxMGw0LjI5MyA0LjI5M2ExIDEgMCAwMS0xLjQxNCAxLjQxNEwxMCAxMS40MTRsLTQuMjkzIDQuMjkzYTEgMSAwIDAxLTEuNDE0LTEuNDE0TDguNTg2IDEwIDQuMjkzIDUuNzA3YTEgMSAwIDAxMC0xLjQxNHpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==