ets-fe-ng-sdk 17.0.430 → 18.0.0

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 (186) hide show
  1. package/esm2022/lib/Reusables/reusable-comps/find-item/find-item.component.mjs +4 -4
  2. package/esm2022/lib/Reusables/reusable-comps/find-item/find-item.module.mjs +4 -4
  3. package/esm2022/lib/Reusables/reusable-comps/watermark/watermark.component.mjs +3 -3
  4. package/esm2022/lib/Reusables/reusable-pages/extra-pages/extra-pages-routing.module.mjs +4 -4
  5. package/esm2022/lib/Reusables/reusable-pages/extra-pages/extra-pages.module.mjs +4 -4
  6. package/esm2022/lib/Reusables/reusable-pages/logger/logger-routing.module.mjs +4 -4
  7. package/esm2022/lib/Reusables/reusable-pages/logger/logger.component.mjs +4 -4
  8. package/esm2022/lib/Reusables/reusable-pages/logger/logger.interface.mjs +1 -1
  9. package/esm2022/lib/Reusables/reusable-pages/logger/logger.module.mjs +4 -4
  10. package/esm2022/lib/Reusables/reusable-pages/logger/logger.service.mjs +3 -3
  11. package/esm2022/lib/Reusables/reusable-pages/page-not-found/page-not-found.component.mjs +3 -3
  12. package/esm2022/lib/Reusables/reusable-pages/reset/reset-routing.module.mjs +4 -4
  13. package/esm2022/lib/Reusables/reusable-pages/reset/reset.component.mjs +4 -4
  14. package/esm2022/lib/Reusables/reusable-pages/reset/reset.module.mjs +4 -4
  15. package/esm2022/lib/Reusables/reusable-pages/robot/robot-routing.module.mjs +4 -4
  16. package/esm2022/lib/Reusables/reusable-pages/robot/robot.component.mjs +3 -3
  17. package/esm2022/lib/Reusables/reusable-pages/robot/robot.module.mjs +4 -4
  18. package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester-routing.module.mjs +4 -4
  19. package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester.component.mjs +4 -4
  20. package/esm2022/lib/Reusables/reusable-pages/timeout-tester/timeout-tester.module.mjs +4 -4
  21. package/esm2022/lib/Reusables/reusable-pages/user-activity/ua-extras/user-activity.service.mjs +3 -3
  22. package/esm2022/lib/Reusables/reusable-pages/version/version-routing.module.mjs +4 -4
  23. package/esm2022/lib/Reusables/reusable-pages/version/version.component.mjs +3 -3
  24. package/esm2022/lib/Reusables/reusable-pages/version/version.module.mjs +4 -4
  25. package/esm2022/lib/Reusables/reusable-pages/version/version.service.mjs +4 -4
  26. package/esm2022/lib/Services/Interceptors/authentication-interceptor.service.mjs +5 -5
  27. package/esm2022/lib/Services/Interceptors/global-error-handler.service.mjs +3 -3
  28. package/esm2022/lib/Services/Interceptors/logger-interceptor.service.mjs +5 -5
  29. package/esm2022/lib/Services/Interceptors/request-loader-interceptor.service.mjs +5 -5
  30. package/esm2022/lib/Services/Interceptors/request-timeout.service.mjs +4 -4
  31. package/esm2022/lib/Services/api.service.mjs +4 -4
  32. package/esm2022/lib/Services/app.service.mjs +3 -3
  33. package/esm2022/lib/Services/base.effect.mjs +3 -3
  34. package/esm2022/lib/Services/base.facade.service.mjs +1 -1
  35. package/esm2022/lib/Services/base.service.mjs +4 -4
  36. package/esm2022/lib/Services/cache/cache-updater.service.mjs +3 -3
  37. package/esm2022/lib/Services/cache/cache.service.mjs +4 -4
  38. package/esm2022/lib/Services/cache/local-cache.service.mjs +4 -4
  39. package/esm2022/lib/Services/cache/saver.service.mjs +3 -3
  40. package/esm2022/lib/Services/debouncer.service.mjs +4 -4
  41. package/esm2022/lib/Services/htmler.service.mjs +3 -3
  42. package/esm2022/lib/Services/input.service.mjs +4 -4
  43. package/esm2022/lib/Services/page-loader.service.mjs +7 -7
  44. package/esm2022/lib/Services/page.service.mjs +3 -3
  45. package/esm2022/lib/Services/route.service.mjs +4 -4
  46. package/esm2022/lib/Services/service-worker/check-for-update.service.mjs +4 -4
  47. package/esm2022/lib/Services/service-worker/handle-unrecoverable-state.service.mjs +3 -3
  48. package/esm2022/lib/Services/service-worker/log-update.service.mjs +4 -4
  49. package/esm2022/lib/Services/service-worker/prompt-update.service.mjs +3 -3
  50. package/esm2022/lib/Services/service-worker/service-worker.service.mjs +4 -4
  51. package/esm2022/lib/Services/storage.service.mjs +4 -4
  52. package/esm2022/lib/Services/theme.service.mjs +3 -3
  53. package/esm2022/lib/Services/translation.service.mjs +4 -4
  54. package/esm2022/lib/Services/utility.service.mjs +4 -4
  55. package/esm2022/lib/Services/window-security.service.mjs +4 -4
  56. package/esm2022/lib/Shared/classes/page-loader.class.mjs +1 -1
  57. package/esm2022/lib/Shared/components/add-item/add-item.component.mjs +3 -3
  58. package/esm2022/lib/Shared/components/autocomplete/autocomplete-td-rf/autocomplete-td-rf.component.mjs +4 -4
  59. package/esm2022/lib/Shared/components/autocomplete/autocomplete.component.mjs +4 -4
  60. package/esm2022/lib/Shared/components/autocomplete/autocomplete.service.mjs +4 -4
  61. package/esm2022/lib/Shared/components/btn/btn-lg/btn-lg.component.mjs +3 -3
  62. package/esm2022/lib/Shared/components/btn/btn-link/btn-link.component.mjs +3 -3
  63. package/esm2022/lib/Shared/components/btn/btn.component.mjs +4 -4
  64. package/esm2022/lib/Shared/components/btn/btn.service.mjs +4 -4
  65. package/esm2022/lib/Shared/components/btn/details-btn/details-btn.component.mjs +3 -3
  66. package/esm2022/lib/Shared/components/card/card.component.mjs +3 -3
  67. package/esm2022/lib/Shared/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
  68. package/esm2022/lib/Shared/components/confirm-dialog/confirm-dialog.service.mjs +4 -4
  69. package/esm2022/lib/Shared/components/core/button/button.component.mjs +3 -3
  70. package/esm2022/lib/Shared/components/documents-name-display/documents-name-display.component.mjs +4 -4
  71. package/esm2022/lib/Shared/components/editable-text-case/editable-text-case.component.mjs +4 -4
  72. package/esm2022/lib/Shared/components/export-table/export-table.component.mjs +4 -4
  73. package/esm2022/lib/Shared/components/fields-to-display/fields-to-display.component.mjs +4 -4
  74. package/esm2022/lib/Shared/components/file-upload/file-upload.component.mjs +4 -4
  75. package/esm2022/lib/Shared/components/form-error/form-error.component.mjs +4 -4
  76. package/esm2022/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.mjs +6 -6
  77. package/esm2022/lib/Shared/components/form-generator/form-generator.base.component.mjs +11 -2
  78. package/esm2022/lib/Shared/components/form-generator/form-generator.component.mjs +4 -4
  79. package/esm2022/lib/Shared/components/form-generator/form-generator.service.mjs +3 -3
  80. package/esm2022/lib/Shared/components/form-link/form-link.component.mjs +3 -3
  81. package/esm2022/lib/Shared/components/form-tab-headers/form-tab-headers.component.mjs +3 -3
  82. package/esm2022/lib/Shared/components/index-comp-layout/index-comp-layout.component.mjs +7 -7
  83. package/esm2022/lib/Shared/components/info-dialog/info-dialog.component.mjs +4 -4
  84. package/esm2022/lib/Shared/components/info-dialog/info-dialog.service.mjs +4 -4
  85. package/esm2022/lib/Shared/components/info-icon/info-icon.component.mjs +3 -3
  86. package/esm2022/lib/Shared/components/input/date-input/date-input.component.mjs +5 -5
  87. package/esm2022/lib/Shared/components/input/day-hour-min-input/day-hour-min-input.component.mjs +4 -4
  88. package/esm2022/lib/Shared/components/input/input-base.component.mjs +4 -4
  89. package/esm2022/lib/Shared/components/input/input-basic.component.mjs +4 -4
  90. package/esm2022/lib/Shared/components/input/input-control.component.mjs +3 -3
  91. package/esm2022/lib/Shared/components/input/input-label/input-label.component.mjs +3 -3
  92. package/esm2022/lib/Shared/components/input/input-td-rf.component.mjs +4 -4
  93. package/esm2022/lib/Shared/components/input/input.component.mjs +3 -3
  94. package/esm2022/lib/Shared/components/input/input.service.mjs +4 -4
  95. package/esm2022/lib/Shared/components/input/inputs-pipes.pipe.mjs +26 -26
  96. package/esm2022/lib/Shared/components/input/validation-message/validation-message.component.mjs +6 -6
  97. package/esm2022/lib/Shared/components/input/validation-message/validation-message.service.mjs +3 -3
  98. package/esm2022/lib/Shared/components/input/year-month-td-rf/year-month-td-rf.component.mjs +3 -3
  99. package/esm2022/lib/Shared/components/input-NgModel/input-ngmodel.component.mjs +4 -4
  100. package/esm2022/lib/Shared/components/input-NgModel/validation-message-ngmodel/validation-message-ngmodel.component.mjs +3 -3
  101. package/esm2022/lib/Shared/components/input-table/input-table.component.mjs +4 -4
  102. package/esm2022/lib/Shared/components/input-table/input-table.service.mjs +3 -3
  103. package/esm2022/lib/Shared/components/label/label.component.mjs +3 -3
  104. package/esm2022/lib/Shared/components/loader/loader-animations/blinking-blocks/blinking-blocks.component.mjs +3 -3
  105. package/esm2022/lib/Shared/components/loader/loader-animations/bouncing-ball/bouncing-ball.component.mjs +3 -3
  106. package/esm2022/lib/Shared/components/loader/loader-animations/fading-bars/fading-bars.component.mjs +3 -3
  107. package/esm2022/lib/Shared/components/loader/loader-animations/fading-circles/fading-circles.component.mjs +3 -3
  108. package/esm2022/lib/Shared/components/loader/loader-animations/ring-ripples/ring-ripples.component.mjs +3 -3
  109. package/esm2022/lib/Shared/components/loader/loader.component.mjs +3 -3
  110. package/esm2022/lib/Shared/components/loader/spinner.component.mjs +3 -3
  111. package/esm2022/lib/Shared/components/modal/modal-body.directive.mjs +3 -3
  112. package/esm2022/lib/Shared/components/modal/modal-footer.directive.mjs +3 -3
  113. package/esm2022/lib/Shared/components/modal/modal.component.mjs +3 -3
  114. package/esm2022/lib/Shared/components/modal-form/modal-form.component.mjs +3 -3
  115. package/esm2022/lib/Shared/components/modal-header/modal-header.component.mjs +3 -3
  116. package/esm2022/lib/Shared/components/narration-history-comp/narration-history-comp.component.mjs +4 -4
  117. package/esm2022/lib/Shared/components/notifications/notifications.component.mjs +3 -3
  118. package/esm2022/lib/Shared/components/notifications/notifications.service.mjs +3 -3
  119. package/esm2022/lib/Shared/components/page-center-body/page-center-body.component.mjs +3 -3
  120. package/esm2022/lib/Shared/components/page-template/page-template.component.mjs +4 -4
  121. package/esm2022/lib/Shared/components/page-to-component/page-to-component.component.mjs +6 -6
  122. package/esm2022/lib/Shared/components/page-to-component/page-to-component.directive.mjs +3 -3
  123. package/esm2022/lib/Shared/components/page-to-component/page-to-component.service.mjs +3 -3
  124. package/esm2022/lib/Shared/components/paginator/paginator.component.mjs +4 -4
  125. package/esm2022/lib/Shared/components/phone-number/phone-number.component.mjs +4 -4
  126. package/esm2022/lib/Shared/components/phone-number/phone-number.model.mjs +1 -1
  127. package/esm2022/lib/Shared/components/phone-number/phone-number.service.mjs +3 -3
  128. package/esm2022/lib/Shared/components/rich-text-editor/rich-text-editor.component.mjs +12 -12
  129. package/esm2022/lib/Shared/components/rich-text-editor-rf/rich-text-editor-rf.component.mjs +12 -12
  130. package/esm2022/lib/Shared/components/row-actions/row-actions.component.mjs +3 -3
  131. package/esm2022/lib/Shared/components/svg-icon/svg-icon.component.mjs +3 -3
  132. package/esm2022/lib/Shared/components/svg-icon/svg-icon.service.mjs +3 -3
  133. package/esm2022/lib/Shared/components/table-https/table-https.component.mjs +4 -4
  134. package/esm2022/lib/Shared/components/table-input/table-input-row/table-input-row.component.mjs +3 -3
  135. package/esm2022/lib/Shared/components/table-input/table-input.component.mjs +4 -4
  136. package/esm2022/lib/Shared/components/table-plain/table-base.component.mjs +4 -4
  137. package/esm2022/lib/Shared/components/table-plain/table-plain.component.mjs +4 -4
  138. package/esm2022/lib/Shared/components/table-plain/table-plain.service.mjs +3 -3
  139. package/esm2022/lib/Shared/components/table-plain/table.pipe.mjs +20 -20
  140. package/esm2022/lib/Shared/components/text/text.component.mjs +3 -3
  141. package/esm2022/lib/Shared/components/text-area-modal/text-area-modal.component.mjs +3 -3
  142. package/esm2022/lib/Shared/components/text-area-modal/text-area-modal.service.mjs +3 -3
  143. package/esm2022/lib/Shared/components/text-case-1/text-case-1.component.mjs +4 -4
  144. package/esm2022/lib/Shared/components/text-case-2/text-case-2.component.mjs +3 -3
  145. package/esm2022/lib/Shared/components/text-case-2/text-case.service.mjs +4 -4
  146. package/esm2022/lib/Shared/components/text-case-input/text-case-input.component.mjs +3 -3
  147. package/esm2022/lib/Shared/components/toggle-input-form/toggle-input-form.component.mjs +3 -3
  148. package/esm2022/lib/Shared/components/translator-case/translator-case.component.mjs +3 -3
  149. package/esm2022/lib/Shared/components/vertical-nav/vertical-nav.component.mjs +4 -4
  150. package/esm2022/lib/Shared/components/view-form-buttons/view-form-buttons.component.mjs +3 -3
  151. package/esm2022/lib/Shared/components/webcam-media/webcam-media.component.mjs +4 -4
  152. package/esm2022/lib/Shared/directives/commafy-number.directive.mjs +3 -3
  153. package/esm2022/lib/Shared/directives/drag-drop-file-upload.directive.mjs +4 -4
  154. package/esm2022/lib/Shared/directives/form-invalid-class.directive.mjs +3 -3
  155. package/esm2022/lib/Shared/directives/index.directive.mjs +23 -23
  156. package/esm2022/lib/Shared/directives/input-formatter.directive.mjs +14 -14
  157. package/esm2022/lib/Shared/directives/integer-only.directive.mjs +4 -4
  158. package/esm2022/lib/Shared/directives/mHref.directive.mjs +3 -3
  159. package/esm2022/lib/Shared/directives/negative-number-only.directive.mjs +4 -4
  160. package/esm2022/lib/Shared/directives/responsiveness.directive.mjs +20 -20
  161. package/esm2022/lib/Shared/directives/translator.directive.mjs +4 -4
  162. package/esm2022/lib/Shared/models/form.class.mjs +1 -1
  163. package/esm2022/lib/Shared/pipes/form-invalid-class.pipe.mjs +3 -3
  164. package/esm2022/lib/Shared/pipes/paginator.pipe.mjs +3 -3
  165. package/esm2022/lib/Shared/pipes/translate.pipe.mjs +7 -7
  166. package/esm2022/lib/Shared/pipes/utility.pipe.mjs +134 -134
  167. package/esm2022/lib/Shared/prototypes/prototypes.mjs +1 -1
  168. package/esm2022/lib/Shared/shared.module.mjs +4 -4
  169. package/esm2022/lib/authentication/web-user/web-user-authentication.guard.mjs +1 -1
  170. package/esm2022/lib/authentication/web-user/web-user-authentication.interceptor.mjs +1 -1
  171. package/esm2022/lib/authentication/web-user/web-user-authentication.service.mjs +3 -3
  172. package/esm2022/lib/authentication/web-user/web-user-forgot-password.component.mjs +4 -4
  173. package/esm2022/lib/authentication/web-user/web-user-login.component.mjs +4 -4
  174. package/esm2022/lib/authentication/web-user/web-user-reset-password.component.mjs +4 -4
  175. package/esm2022/lib/configs/base-functions.mjs +1 -1
  176. package/fesm2022/ets-fe-ng-sdk.mjs +766 -758
  177. package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
  178. package/lib/Services/utility.service.d.ts +5 -5
  179. package/lib/Shared/components/btn/btn.component.d.ts +3 -3
  180. package/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.d.ts +1 -1
  181. package/lib/Shared/components/form-generator/form-generator.base.component.d.ts +3 -0
  182. package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
  183. package/lib/Shared/components/input/input-base.component.d.ts +3 -7
  184. package/lib/Shared/components/table-https/table-https.component.d.ts +3 -3
  185. package/lib/Shared/components/text-case-2/text-case.service.d.ts +1 -1
  186. package/package.json +1 -1
@@ -63,10 +63,10 @@ export class VerticalNavComponent {
63
63
  });
64
64
  }
65
65
  }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: VerticalNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\" uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: VerticalNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\" uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: VerticalNavComponent, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: VerticalNavComponent, decorators: [{
70
70
  type: Component,
71
71
  args: [{ selector: 'vertical-nav', standalone: true, imports: [
72
72
  MatToolbarModule,
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
81
81
  SDKTranslatePipe,
82
82
  ], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\" uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"] }]
83
83
  }], ctorParameters: () => [] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBS1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSwyQkFB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QUNILENBQUM7OEdBbERVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHUvRENsRGpDLHl0SkF1SEEsMHBERGpGSSxnQkFBZ0IsZ0pBQ2hCLGVBQWUsMklBQ2YsYUFBYSxtTEFDYixnQkFBZ0IsMFlBQ2hCLGFBQWEsb3ZCQUNiLFVBQVUsbU9BQ1YsYUFBYSw4QkFFYixZQUFZLHlhQUNaLGdCQUFnQjs7MkZBR1Asb0JBQW9CO2tCQW5CaEMsU0FBUzsrQkFDRSxjQUFjLGNBSVosSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixVQUFVO3dCQUNWLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGdCQUFnQjtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IE5lc3RlZFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIGNvbXB1dGVkLFxuICB2aWV3Q2hpbGQsXG4gIHNpZ25hbCxcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RHJhd2VyLCBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXRUcmVlTmVzdGVkRGF0YVNvdXJjZSwgTWF0VHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCBQUyBmcm9tICdwZXJmZWN0LXNjcm9sbGJhcic7XG5cbmltcG9ydCB7IFNES1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgSW1hZ2VMb2FkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvZGlyZWN0aXZlcy9pbmRleC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdFRvb2xiYXIsIE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVydGljYWwtbmF2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLW5hdi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBNYXRUcmVlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBJbWFnZUxvYWRlckRpcmVjdGl2ZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU0RLVHJhbnNsYXRlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmVydGljYWxOYXZDb21wb25lbnQge1xuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwdWJsaWMgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgc2hvdWxkU2hvd0NoaWxkSW5wdXQgPSBpbnB1dDwoXzogbnVtYmVyLCBub2RlOiBJTWVudUl0ZW0pID0+IGJvb2xlYW4+KCk7XG4gIHNob3VsZFNob3dDaGlsZCA9IGNvbXB1dGVkPChfOiBudW1iZXIsIG5vZGU6IElNZW51SXRlbSkgPT4gYm9vbGVhbj4oXG4gICAgKCkgPT4gdGhpcy5zaG91bGRTaG93Q2hpbGRJbnB1dCgpIHx8ICgoKSA9PiB0cnVlKSxcbiAgKTtcbiAgcmVhZG9ubHkgdG9vbGJhclRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB0b29sYmFyTG9nbyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhckxvZ29TdHlsZSA9IGlucHV0PElPYmplY3RMaXRlcmFsPigpO1xuICByZWFkb25seSBmaXhlZFRvcEdhcCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgc2lkZW5hdlRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgLyoqVGhpcyBvbmx5IHdvcmtzIHdoZW4gdGhlIHRvb2xiYXJUZW1wbGF0ZSBpcyBub3Qgc2V0ICovXG4gIHJlYWRvbmx5IHRvb2xiYXJFbmRUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT58dW5kZWZpbmVkPigpO1xuICByZWFkb25seSBib2R5VGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSB1c2VUb29sYmFyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNob3dNZW51ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbWVudUl0ZW1zID0gaW5wdXQ8SU1lbnVJdGVtW10+KCk7XG5cbiAgcmVhZG9ubHkgZGF0YVNvdXJjZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkcyA9IG5ldyBNYXRUcmVlTmVzdGVkRGF0YVNvdXJjZTxJTWVudUl0ZW0+KCksXG4gICAgICBtZW51ID0gdGhpcy5tZW51SXRlbXMoKTtcblxuICAgIGlmICghbWVudT8ubGVuZ3RoKSByZXR1cm4gZHM7XG4gICAgbWVudS5mb3JFYWNoKCh4KSA9PiAoeC5sZXZlbCA9IDApKTtcbiAgICBkcy5kYXRhID0gbWVudTtcbiAgICByZXR1cm4gZHM7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGlkID0gc2lnbmFsKCdtYXRTaWRlTmF2JyArIHRoaXMudVMuZ2VuUmFuZG9tSUQpO1xuICByZWFkb25seSB0cmVlQ29udHJvbCA9IHNpZ25hbChuZXcgTmVzdGVkVHJlZUNvbnRyb2w8SU1lbnVJdGVtPigobm9kZSkgPT4gbm9kZS5jaGlsZHJlbikpO1xuXG4gIHJlYWRvbmx5IGRyYXdlciA9IHZpZXdDaGlsZDxNYXREcmF3ZXIgfCB1bmRlZmluZWQ+KCdzbmF2Jyk7XG4gIHJlYWRvbmx5IHRvb2xiYXJDb250UmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PigndG9vbGJhckNvbnQnKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KGAjJHt0aGlzLmlkKCl9IC5tYXQtZHJhd2VyLWlubmVyLWNvbnRhaW5lcmApO1xuICAgIGlmIChkb2MpIHtcbiAgICAgIGRvYy5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgICBjb25zdCBwcyA9IG5ldyBQUyhkb2MsIHtcbiAgICAgICAgd2hlZWxTcGVlZDogMC41LFxuICAgICAgICBzd2lwZUVhc2luZzogZmFsc2UsXG4gICAgICAgIHdoZWVsUHJvcGFnYXRpb246IHRydWUsXG4gICAgICAgIG1pblNjcm9sbGJhckxlbmd0aDogNDAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWFkb25seSBoYXNDaGlsZCA9IHNpZ25hbChcbiAgICAoXzogbnVtYmVyLCBub2RlOiBJTWVudUl0ZW0pID0+IG5vZGUuaGFzU3ViICYmIHRoaXMuc2hvdWxkU2hvd0NoaWxkKCkoXywgbm9kZSksXG4gICk7XG59XG5pbnRlcmZhY2UgSU1lbnVJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgbGluazogc3RyaW5nO1xuICBoYXNTdWI/OiBib29sZWFuO1xuICBpY29uPzogc3RyaW5nO1xuICBsZXZlbD86IG51bWJlcjtcbiAgaWQ/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogSU1lbnVJdGVtW107XG59XG4iLCI8ZGl2IGNsYXNzPVwidmVydGljYWwtbmF2XCIgW2NsYXNzLnZlcnRpY2FsLW5hdi1pcy1tb2JpbGVdPVwidVMuaXNNb2JpbGVTaWduYWwoKVwiPlxuICBAaWYgKHVzZVRvb2xiYXIoKSkge1xuICAgIDxkaXYgI3Rvb2xiYXJDb250IGNsYXNzPVwidmVydGljYWwtbmF2LXRvb2xiYXJcIj5cbiAgICAgIEBpZiAodG9vbGJhclRlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bWF0LXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJiZy1wcmltYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic25hdi50b2dnbGUoKVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAodG9vbGJhckxvZ28oKSkge1xuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCJ0b29sYmFyTG9nbygpXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ0b29sYmFyTG9nb1N0eWxlKClcIlxuICAgICAgICAgICAgICAgIGFsdD1cInRvb2xiYXIgbG9nb1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0b29sYmFyTG9nb1wiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJUaXRsZSgpKSB7XG4gICAgICAgICAgICAgIDxoMSBjbGFzcz1cInZlcnRpY2FsLW5hdi1hcHAtbmFtZVwiPnt7IHRvb2xiYXJUaXRsZSgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX08L2gxPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJFbmRUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyRW5kVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LXRvb2xiYXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cblxuICA8bWF0LXNpZGVuYXYtY29udGFpbmVyXG4gICAgW2lkXT1cImlkKClcIlxuICAgIGNsYXNzPVwidmVydGljYWwtbmF2LWNvbnRhaW5lclwiXG4gICAgW3N0eWxlLm1hcmdpblRvcC5weF09XCJcbiAgICAgIHVTLmlzTW9iaWxlU2lnbmFsKCkgPyBmaXhlZFRvcEdhcCgpIHx8IHRvb2xiYXJDb250UmVmKCk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCA6IDBcbiAgICBcIj5cbiAgICA8bWF0LXNpZGVuYXZcbiAgICAgIGNsYXNzPVwic2lkZS13XCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgbW9iaWxlOiB0aGlzLnVTLmlzTW9iaWxlU2lnbmFsKCkgfVwiXG4gICAgICAjc25hdlxuICAgICAgW21vZGVdPVwidVMuaXNNb2JpbGVTaWduYWwoKSA/ICdvdmVyJyA6ICdzaWRlJ1wiXG4gICAgICBbb3BlbmVkXT1cIiF1Uy5pc01vYmlsZVNpZ25hbCgpICYmIHNob3dNZW51KClcIlxuICAgICAgW2ZpeGVkSW5WaWV3cG9ydF09XCJ1Uy5pc01vYmlsZVNpZ25hbCgpXCJcbiAgICAgIFtmaXhlZFRvcEdhcF09XCIgdVMuaXNNb2JpbGVTaWduYWwoKSA/IGZpeGVkVG9wR2FwKCkgfHwgdG9vbGJhckNvbnRSZWYoKT8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0IDogMFwiXG4gICAgICBbaGlkZGVuXT1cIiFzaG93TWVudSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtbmF2LXNpZGUtcGFkZGluZ1wiPlxuICAgICAgICBAaWYgKHNpZGVuYXZUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVuYXZUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG1hdC10cmVlXG4gICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlKClcIlxuICAgICAgICAgICAgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtdHJlZVwiPlxuICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICAgICAgICAgIDxtYXQtbmVzdGVkLXRyZWUtbm9kZVxuICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGQoKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kYWJsZS1ub2RlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtdHJlZS1ub2RlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RvZ2dsZSAnICsgbm9kZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1idG4gbGV2ZWx7eyBub2RlLmxldmVsIH19XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IG5vZGUuaWNvbiB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVDb250cm9sKCkuaXNFeHBhbmRlZChub2RlKSA/ICdmYS1jaGV2cm9uLWRvd24nIDogJ2ZhLWNoZXZyb24tcmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fSBcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gVGhlcmUgaXMgaW5saW5lIHBhZGRpbmcgYXBwbGllZCB0byB0aGlzIGRpdiB1c2luZyBzdHlsZXMuXG4gICAgICAgICAgICBUaGlzIHBhZGRpbmcgdmFsdWUgZGVwZW5kcyBvbiB0aGUgbWF0LWljb24tYnV0dG9uIHdpZHRoLiAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnZlcnRpY2FsLW5hdi10cmVlLWludmlzaWJsZV09XCIhdHJlZUNvbnRyb2woKS5pc0V4cGFuZGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFRyZWVOb2RlT3V0bGV0IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbmVzdGVkLXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDwhLS0gVGhlcmUgaXMgaW5saW5lIHBhZGRpbmcgYXBwbGllZCB0byB0aGlzIG5vZGUgdXNpbmcgc3R5bGVzLlxuICAgIFRoaXMgcGFkZGluZyB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBtYXQtaWNvbi1idXR0b24gd2lkdGguIC0tPlxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IHNob3VsZFNob3dDaGlsZCgpXCJcbiAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtbm9kZSBsZXZlbHt7IG5vZGUubGV2ZWwgfX1cIj5cbiAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwibm9kZS5saW5rXCIgY2xhc3M9XCJkLWJsb2NrIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBub2RlLmljb24gfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCJcbiAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtbm9kZSByZXN0cmljdGVkIGxldmVse3sgbm9kZS5sZXZlbCB9fVwiIC8+XG4gICAgICAgICAgPC9tYXQtdHJlZT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdj5cblxuICAgIDxtYXQtc2lkZW5hdi1jb250ZW50IGNsYXNzPVwidmVydGljYWwtbmF2LWJvZHlcIj5cbiAgICAgIEBpZiAoYm9keVRlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZSgpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgfVxuICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBS1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSwyQkFB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QUNMLENBQUM7SUFDSCxDQUFDOzhHQWxEVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix1L0RDbERqQyx5dEpBdUhBLDBwRERqRkksZ0JBQWdCLGdKQUNoQixlQUFlLDJJQUNmLGFBQWEsbUxBQ2IsZ0JBQWdCLDBZQUNoQixhQUFhLG92QkFDYixVQUFVLG1PQUNWLGFBQWEsOEJBRWIsWUFBWSx5YUFDWixnQkFBZ0I7OzJGQUdQLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUlaLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsVUFBVTt3QkFDVixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBOZXN0ZWRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBjb21wdXRlZCxcbiAgdmlld0NoaWxkLFxuICBzaWduYWwsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERyYXdlciwgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2UsIE1hdFRyZWVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgUFMgZnJvbSAncGVyZmVjdC1zY3JvbGxiYXInO1xuXG5pbXBvcnQgeyBTREtUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEltYWdlTG9hZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2RpcmVjdGl2ZXMvaW5kZXguZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRUb29sYmFyLCBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJT2JqZWN0TGl0ZXJhbCB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlcnRpY2FsLW5hdicsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJ0aWNhbC1uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJ0aWNhbC1uYXYuY29tcG9uZW50LnNjc3MnXSxcbiAgXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRUb29sYmFyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFNpZGVuYXZNb2R1bGUsXG4gICAgTWF0VHJlZU1vZHVsZSxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgSW1hZ2VMb2FkZXJEaXJlY3RpdmUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZlcnRpY2FsTmF2Q29tcG9uZW50IHtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcbiAgcHVibGljIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIHNob3VsZFNob3dDaGlsZElucHV0ID0gaW5wdXQ8KF86IG51bWJlciwgbm9kZTogSU1lbnVJdGVtKSA9PiBib29sZWFuPigpO1xuICBzaG91bGRTaG93Q2hpbGQgPSBjb21wdXRlZDwoXzogbnVtYmVyLCBub2RlOiBJTWVudUl0ZW0pID0+IGJvb2xlYW4+KFxuICAgICgpID0+IHRoaXMuc2hvdWxkU2hvd0NoaWxkSW5wdXQoKSB8fCAoKCkgPT4gdHJ1ZSksXG4gICk7XG4gIHJlYWRvbmx5IHRvb2xiYXJUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhckxvZ28gPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHRvb2xiYXJMb2dvU3R5bGUgPSBpbnB1dDxJT2JqZWN0TGl0ZXJhbD4oKTtcbiAgcmVhZG9ubHkgZml4ZWRUb3BHYXAgPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IHNpZGVuYXZUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IHRvb2xiYXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIC8qKlRoaXMgb25seSB3b3JrcyB3aGVuIHRoZSB0b29sYmFyVGVtcGxhdGUgaXMgbm90IHNldCAqL1xuICByZWFkb25seSB0b29sYmFyRW5kVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+fHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgYm9keVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgdXNlVG9vbGJhciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzaG93TWVudSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG1lbnVJdGVtcyA9IGlucHV0PElNZW51SXRlbVtdPigpO1xuXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZHMgPSBuZXcgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2U8SU1lbnVJdGVtPigpLFxuICAgICAgbWVudSA9IHRoaXMubWVudUl0ZW1zKCk7XG5cbiAgICBpZiAoIW1lbnU/Lmxlbmd0aCkgcmV0dXJuIGRzO1xuICAgIG1lbnUuZm9yRWFjaCgoeCkgPT4gKHgubGV2ZWwgPSAwKSk7XG4gICAgZHMuZGF0YSA9IG1lbnU7XG4gICAgcmV0dXJuIGRzO1xuICB9KTtcblxuICByZWFkb25seSBpZCA9IHNpZ25hbCgnbWF0U2lkZU5hdicgKyB0aGlzLnVTLmdlblJhbmRvbUlEKTtcbiAgcmVhZG9ubHkgdHJlZUNvbnRyb2wgPSBzaWduYWwobmV3IE5lc3RlZFRyZWVDb250cm9sPElNZW51SXRlbT4oKG5vZGUpID0+IG5vZGUuY2hpbGRyZW4pKTtcblxuICByZWFkb25seSBkcmF3ZXIgPSB2aWV3Q2hpbGQ8TWF0RHJhd2VyIHwgdW5kZWZpbmVkPignc25hdicpO1xuICByZWFkb25seSB0b29sYmFyQ29udFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ3Rvb2xiYXJDb250Jyk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihgIyR7dGhpcy5pZCgpfSAubWF0LWRyYXdlci1pbm5lci1jb250YWluZXJgKTtcbiAgICBpZiAoZG9jKSB7XG4gICAgICBkb2Muc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgY29uc3QgcHMgPSBuZXcgUFMoZG9jLCB7XG4gICAgICAgIHdoZWVsU3BlZWQ6IDAuNSxcbiAgICAgICAgc3dpcGVFYXNpbmc6IGZhbHNlLFxuICAgICAgICB3aGVlbFByb3BhZ2F0aW9uOiB0cnVlLFxuICAgICAgICBtaW5TY3JvbGxiYXJMZW5ndGg6IDQwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgaGFzQ2hpbGQgPSBzaWduYWwoXG4gICAgKF86IG51bWJlciwgbm9kZTogSU1lbnVJdGVtKSA9PiBub2RlLmhhc1N1YiAmJiB0aGlzLnNob3VsZFNob3dDaGlsZCgpKF8sIG5vZGUpLFxuICApO1xufVxuaW50ZXJmYWNlIElNZW51SXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxpbms6IHN0cmluZztcbiAgaGFzU3ViPzogYm9vbGVhbjtcbiAgaWNvbj86IHN0cmluZztcbiAgbGV2ZWw/OiBudW1iZXI7XG4gIGlkPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IElNZW51SXRlbVtdO1xufVxuIiwiPGRpdiBjbGFzcz1cInZlcnRpY2FsLW5hdlwiIFtjbGFzcy52ZXJ0aWNhbC1uYXYtaXMtbW9iaWxlXT1cInVTLmlzTW9iaWxlU2lnbmFsKClcIj5cbiAgQGlmICh1c2VUb29sYmFyKCkpIHtcbiAgICA8ZGl2ICN0b29sYmFyQ29udCBjbGFzcz1cInZlcnRpY2FsLW5hdi10b29sYmFyXCI+XG4gICAgICBAaWYgKHRvb2xiYXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGUoKVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiYmctcHJpbWFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNuYXYudG9nZ2xlKClcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPm1lbnU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJMb2dvKCkpIHtcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwidG9vbGJhckxvZ28oKVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwidG9vbGJhckxvZ29TdHlsZSgpXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJ0b29sYmFyIGxvZ29cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9vbGJhckxvZ29cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh0b29sYmFyVGl0bGUoKSkge1xuICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtYXBwLW5hbWVcIj57eyB0b29sYmFyVGl0bGUoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC9oMT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgQGlmICh0b29sYmFyRW5kVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhckVuZFRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC10b29sYmFyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgPG1hdC1zaWRlbmF2LWNvbnRhaW5lclxuICAgIFtpZF09XCJpZCgpXCJcbiAgICBjbGFzcz1cInZlcnRpY2FsLW5hdi1jb250YWluZXJcIlxuICAgIFtzdHlsZS5tYXJnaW5Ub3AucHhdPVwiXG4gICAgICB1Uy5pc01vYmlsZVNpZ25hbCgpID8gZml4ZWRUb3BHYXAoKSB8fCB0b29sYmFyQ29udFJlZigpPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgOiAwXG4gICAgXCI+XG4gICAgPG1hdC1zaWRlbmF2XG4gICAgICBjbGFzcz1cInNpZGUtd1wiXG4gICAgICBbbmdDbGFzc109XCJ7IG1vYmlsZTogdGhpcy51Uy5pc01vYmlsZVNpZ25hbCgpIH1cIlxuICAgICAgI3NuYXZcbiAgICAgIFttb2RlXT1cInVTLmlzTW9iaWxlU2lnbmFsKCkgPyAnb3ZlcicgOiAnc2lkZSdcIlxuICAgICAgW29wZW5lZF09XCIhdVMuaXNNb2JpbGVTaWduYWwoKSAmJiBzaG93TWVudSgpXCJcbiAgICAgIFtmaXhlZEluVmlld3BvcnRdPVwidVMuaXNNb2JpbGVTaWduYWwoKVwiXG4gICAgICBbZml4ZWRUb3BHYXBdPVwiIHVTLmlzTW9iaWxlU2lnbmFsKCkgPyBmaXhlZFRvcEdhcCgpIHx8IHRvb2xiYXJDb250UmVmKCk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCA6IDBcIlxuICAgICAgW2hpZGRlbl09XCIhc2hvd01lbnUoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLW5hdi1zaWRlLXBhZGRpbmdcIj5cbiAgICAgICAgQGlmIChzaWRlbmF2VGVtcGxhdGUoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGUoKVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxtYXQtdHJlZVxuICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZSgpXCJcbiAgICAgICAgICAgIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmVydGljYWwtbmF2LXRyZWVcIj5cbiAgICAgICAgICAgIDwhLS0gVGhpcyBpcyB0aGUgdHJlZSBub2RlIHRlbXBsYXRlIGZvciBsZWFmIG5vZGVzIC0tPlxuICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGV4cGFuZGFibGUgbm9kZXMgLS0+XG4gICAgICAgICAgICA8bWF0LW5lc3RlZC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImV4cGFuZGFibGUtbm9kZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXRyZWUtbm9kZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtYnRuIGxldmVse3sgbm9kZS5sZXZlbCB9fVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBub2RlLmljb24gfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlQ29udHJvbCgpLmlzRXhwYW5kZWQobm9kZSkgPyAnZmEtY2hldnJvbi1kb3duJyA6ICdmYS1jaGV2cm9uLXJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0gXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8IS0tIFRoZXJlIGlzIGlubGluZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhpcyBkaXYgdXNpbmcgc3R5bGVzLlxuICAgICAgICAgICAgVGhpcyBwYWRkaW5nIHZhbHVlIGRlcGVuZHMgb24gdGhlIG1hdC1pY29uLWJ1dHRvbiB3aWR0aC4gIC0tPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy52ZXJ0aWNhbC1uYXYtdHJlZS1pbnZpc2libGVdPVwiIXRyZWVDb250cm9sKCkuaXNFeHBhbmRlZChub2RlKVwiXG4gICAgICAgICAgICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRUcmVlTm9kZU91dGxldCAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LW5lc3RlZC10cmVlLW5vZGU+XG4gICAgICAgICAgICA8IS0tIFRoZXJlIGlzIGlubGluZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhpcyBub2RlIHVzaW5nIHN0eWxlcy5cbiAgICBUaGlzIHBhZGRpbmcgdmFsdWUgZGVwZW5kcyBvbiB0aGUgbWF0LWljb24tYnV0dG9uIHdpZHRoLiAtLT5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBzaG91bGRTaG93Q2hpbGQoKVwiXG4gICAgICAgICAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlXG4gICAgICAgICAgICAgIGNsYXNzPVwic2luZ2xlLW5vZGUgbGV2ZWx7eyBub2RlLmxldmVsIH19XCI+XG4gICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIm5vZGUubGlua1wiIGNsYXNzPVwiZC1ibG9jayB3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgbm9kZS5pY29uIH19XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIHt7IG5vZGUubGFiZWwgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XG4gICAgICAgICAgICA8bWF0LXRyZWUtbm9kZVxuICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiXG4gICAgICAgICAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlXG4gICAgICAgICAgICAgIGNsYXNzPVwic2luZ2xlLW5vZGUgcmVzdHJpY3RlZCBsZXZlbHt7IG5vZGUubGV2ZWwgfX1cIiAvPlxuICAgICAgICAgIDwvbWF0LXRyZWU+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXNpZGVuYXY+XG5cbiAgICA8bWF0LXNpZGVuYXYtY29udGVudCBjbGFzcz1cInZlcnRpY2FsLW5hdi1ib2R5XCI+XG4gICAgICBAaWYgKGJvZHlUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5VGVtcGxhdGUoKVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgIH1cbiAgICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XG4gIDwvbWF0LXNpZGVuYXYtY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -8,10 +8,10 @@ export class ViewFormButtonsComponent {
8
8
  this.isShow = input();
9
9
  this.class = input();
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ViewFormButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: ViewFormButtonsComponent, isStandalone: true, selector: "view-form-buttons", inputs: { isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (isShow()) {\n <div class=\"d-lg-flex mt-4 {{ class() }}\">\n <app-btn\n text=\"Edit\"\n routerLink=\"../edit\"\n icon=\"edit\"\n [queryParamsHandling]=\"'merge'\"\n type=\"secondary\"></app-btn>\n <span class=\"mx-1\"></span>\n <app-btn\n text=\"Clone\"\n routerLink=\"../clone\"\n icon=\"clone\"\n [queryParamsHandling]=\"'merge'\"\n type=\"secondary\"></app-btn>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ViewFormButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: ViewFormButtonsComponent, isStandalone: true, selector: "view-form-buttons", inputs: { isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (isShow()) {\n <div class=\"d-lg-flex mt-4 {{ class() }}\">\n <app-btn\n text=\"Edit\"\n routerLink=\"../edit\"\n icon=\"edit\"\n [queryParamsHandling]=\"'merge'\"\n type=\"secondary\"></app-btn>\n <span class=\"mx-1\"></span>\n <app-btn\n text=\"Clone\"\n routerLink=\"../clone\"\n icon=\"clone\"\n [queryParamsHandling]=\"'merge'\"\n type=\"secondary\"></app-btn>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ViewFormButtonsComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ViewFormButtonsComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'view-form-buttons', standalone: true, imports: [NgIf, BtnComponent, RouterLink], template: "@if (isShow()) {\n <div class=\"d-lg-flex mt-4 {{ class() }}\">\n <app-btn\n text=\"Edit\"\n routerLink=\"../edit\"\n icon=\"edit\"\n [queryParamsHandling]=\"'merge'\"\n type=\"secondary\"></app-btn>\n <span class=\"mx-1\"></span>\n <app-btn\n text=\"Clone\"\n routerLink=\"../clone\"\n icon=\"clone\"\n [queryParamsHandling]=\"'merge'\"\n type=\"secondary\"></app-btn>\n </div>\n}\n" }]
17
17
  }], ctorParameters: () => [] });
@@ -274,10 +274,10 @@ export class WebcamMediaComponent {
274
274
  extractRecordedVideo() {
275
275
  this.stopRecording();
276
276
  }
277
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: WebcamMediaComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
278
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: WebcamMediaComponent, isStandalone: true, selector: "lib-webcam-media", inputs: { controlTemplate: { classPropertyName: "controlTemplate", publicName: "controlTemplate", isSignal: true, isRequired: false, transformFunction: null }, isVideo: { classPropertyName: "isVideo", publicName: "isVideo", isSignal: true, isRequired: false, transformFunction: null }, useAudio: { classPropertyName: "useAudio", publicName: "useAudio", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, fileNameFactory: { classPropertyName: "fileNameFactory", publicName: "fileNameFactory", isSignal: true, isRequired: false, transformFunction: null }, fileType: { classPropertyName: "fileType", publicName: "fileType", isSignal: true, isRequired: false, transformFunction: null }, extraClass: { classPropertyName: "extraClass", publicName: "extraClass", isSignal: true, isRequired: false, transformFunction: null }, recordingNotificationInterval: { classPropertyName: "recordingNotificationInterval", publicName: "recordingNotificationInterval", isSignal: true, isRequired: false, transformFunction: null }, imageSnapshotInterval: { classPropertyName: "imageSnapshotInterval", publicName: "imageSnapshotInterval", isSignal: true, isRequired: false, transformFunction: null }, isBackground: { classPropertyName: "isBackground", publicName: "isBackground", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", recorderStopped: "recorderStopped", recorderErrored: "recorderErrored", recorderStarted: "recorderStarted", recordingState: "recordingState", recordingChanged: "recordingChanged", newImageSnapshot: "newImageSnapshot", webcamError: "webcamError", width: "widthChange" }, viewQueries: [{ propertyName: "streamingVideoTemplate", first: true, predicate: ["streamVideoTemp"], descendants: true, isSignal: true }, { propertyName: "recordingVideoRef", first: true, predicate: ["recordingVideoTag"], descendants: true, isSignal: true }], ngImport: i0, template: "<loader [loading]=\"loading()\">\n <div class=\"\" [hidden]=\"streaming() != true || isBackground()\">\n <ng-container *ngTemplateOutlet=\"streamVideoTemp\" />\n\n @if (!isBackground()) {\n <div class=\"wm-buttons\">\n @if (controlTemplate()) {\n <ng-container *ngTemplateOutlet=\"controlTemplate()\" />\n } @else {\n <div class=\"row row-cols-lg-auto g-3 justify-content-center\">\n @if (!isRecording()) {\n <div>\n <app-btn\n [text]=\"isPicture() ? 'Take Picture' : 'Record Video'\"\n (mclick)=\"isPicture() ? takePicture() : startRecording()\" />\n </div>\n } @else {\n <div>\n <app-btn\n text=\"{{ isPaused() ? 'Play' : 'Pause' }} Recording\"\n (mclick)=\"pauseRecording()\"\n type=\"outline\"\n [icon]=\"isPaused() ? 'play' : 'pause'\" />\n </div>\n <div>\n <app-btn\n [text]=\"'Stop Recording'\"\n (mclick)=\"stopRecording()\"\n type=\"danger\"\n icon=\"stop\" />\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <ng-template #streamVideoTemp>\n <div class=\"wm-recording-video-cont\">\n <video\n #recordingVideoTag\n [srcObject]=\"stream()\"\n autoplay\n class=\"wm-recording-video {{ extraClass() }}\"></video>\n @if (isRecording()) {\n <div class=\"wm-recordingDot\"></div>\n }\n </div>\n </ng-template>\n\n @if (computedPreview()) {\n <div class=\"wm-preview\">\n <div>\n <!-- <div class=\"\">\n {{ mediaFileLink() }}\n </div>\n <div class=\"\">\n {{ mediaFile()?.dataURI }}\n </div> -->\n @if (isPicture()) {\n <img\n class=\"w-100\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [src]=\"mediaFileLink()\" />\n } @else {\n <video\n class=\"w-100\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n controls\n autoplay\n [src]=\"mediaFileLink()\"></video>\n }\n </div>\n <div class=\"mt-3 row row-cols-lg-auto justify-content-center g-3\">\n <div>\n <app-btn text=\"Retake {{ subject() }}\" type=\"outline\" (mclick)=\"retake()\" />\n </div>\n <div>\n <app-btn (mclick)=\"save()\" text=\"Done\" type=\"primary\" icon=\"save\" />\n </div>\n <div>\n <app-btn (mclick)=\"cancel()\" text=\"Cancel\" type=\"danger\" icon=\"cancel\" />\n </div>\n </div>\n </div>\n }\n</loader>\n", styles: [":host{display:block}:host .wm-recording-video{width:100%}:host .wm-preview image,:host .wm-preview video{object-fit:contain}:host .wm-recording-video-cont{position:relative}@keyframes wmAnimateDot{0%{background-color:transparent}50%{background-color:#ff000086}}:host .wm-recordingDot{animation-name:wmAnimateDot;animation-duration:1s;animation-iteration-count:infinite;border-radius:5px;--dimen: 20px;width:var(--dimen);height:var(--dimen);position:absolute;top:10px;right:10px}:host .wm-buttons{margin-top:var(--space-16)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height", "width", "ratioHW"] }] }); }
277
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: WebcamMediaComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
278
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: WebcamMediaComponent, isStandalone: true, selector: "lib-webcam-media", inputs: { controlTemplate: { classPropertyName: "controlTemplate", publicName: "controlTemplate", isSignal: true, isRequired: false, transformFunction: null }, isVideo: { classPropertyName: "isVideo", publicName: "isVideo", isSignal: true, isRequired: false, transformFunction: null }, useAudio: { classPropertyName: "useAudio", publicName: "useAudio", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, fileNameFactory: { classPropertyName: "fileNameFactory", publicName: "fileNameFactory", isSignal: true, isRequired: false, transformFunction: null }, fileType: { classPropertyName: "fileType", publicName: "fileType", isSignal: true, isRequired: false, transformFunction: null }, extraClass: { classPropertyName: "extraClass", publicName: "extraClass", isSignal: true, isRequired: false, transformFunction: null }, recordingNotificationInterval: { classPropertyName: "recordingNotificationInterval", publicName: "recordingNotificationInterval", isSignal: true, isRequired: false, transformFunction: null }, imageSnapshotInterval: { classPropertyName: "imageSnapshotInterval", publicName: "imageSnapshotInterval", isSignal: true, isRequired: false, transformFunction: null }, isBackground: { classPropertyName: "isBackground", publicName: "isBackground", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", recorderStopped: "recorderStopped", recorderErrored: "recorderErrored", recorderStarted: "recorderStarted", recordingState: "recordingState", recordingChanged: "recordingChanged", newImageSnapshot: "newImageSnapshot", webcamError: "webcamError", width: "widthChange" }, viewQueries: [{ propertyName: "streamingVideoTemplate", first: true, predicate: ["streamVideoTemp"], descendants: true, isSignal: true }, { propertyName: "recordingVideoRef", first: true, predicate: ["recordingVideoTag"], descendants: true, isSignal: true }], ngImport: i0, template: "<loader [loading]=\"loading()\">\n <div class=\"\" [hidden]=\"streaming() != true || isBackground()\">\n <ng-container *ngTemplateOutlet=\"streamVideoTemp\" />\n\n @if (!isBackground()) {\n <div class=\"wm-buttons\">\n @if (controlTemplate()) {\n <ng-container *ngTemplateOutlet=\"controlTemplate()\" />\n } @else {\n <div class=\"row row-cols-lg-auto g-3 justify-content-center\">\n @if (!isRecording()) {\n <div>\n <app-btn\n [text]=\"isPicture() ? 'Take Picture' : 'Record Video'\"\n (mclick)=\"isPicture() ? takePicture() : startRecording()\" />\n </div>\n } @else {\n <div>\n <app-btn\n text=\"{{ isPaused() ? 'Play' : 'Pause' }} Recording\"\n (mclick)=\"pauseRecording()\"\n type=\"outline\"\n [icon]=\"isPaused() ? 'play' : 'pause'\" />\n </div>\n <div>\n <app-btn\n [text]=\"'Stop Recording'\"\n (mclick)=\"stopRecording()\"\n type=\"danger\"\n icon=\"stop\" />\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <ng-template #streamVideoTemp>\n <div class=\"wm-recording-video-cont\">\n <video\n #recordingVideoTag\n [srcObject]=\"stream()\"\n autoplay\n class=\"wm-recording-video {{ extraClass() }}\"></video>\n @if (isRecording()) {\n <div class=\"wm-recordingDot\"></div>\n }\n </div>\n </ng-template>\n\n @if (computedPreview()) {\n <div class=\"wm-preview\">\n <div>\n <!-- <div class=\"\">\n {{ mediaFileLink() }}\n </div>\n <div class=\"\">\n {{ mediaFile()?.dataURI }}\n </div> -->\n @if (isPicture()) {\n <img\n class=\"w-100\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [src]=\"mediaFileLink()\" />\n } @else {\n <video\n class=\"w-100\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n controls\n autoplay\n [src]=\"mediaFileLink()\"></video>\n }\n </div>\n <div class=\"mt-3 row row-cols-lg-auto justify-content-center g-3\">\n <div>\n <app-btn text=\"Retake {{ subject() }}\" type=\"outline\" (mclick)=\"retake()\" />\n </div>\n <div>\n <app-btn (mclick)=\"save()\" text=\"Done\" type=\"primary\" icon=\"save\" />\n </div>\n <div>\n <app-btn (mclick)=\"cancel()\" text=\"Cancel\" type=\"danger\" icon=\"cancel\" />\n </div>\n </div>\n </div>\n }\n</loader>\n", styles: [":host{display:block}:host .wm-recording-video{width:100%}:host .wm-preview image,:host .wm-preview video{object-fit:contain}:host .wm-recording-video-cont{position:relative}@keyframes wmAnimateDot{0%{background-color:transparent}50%{background-color:#ff000086}}:host .wm-recordingDot{animation-name:wmAnimateDot;animation-duration:1s;animation-iteration-count:infinite;border-radius:5px;--dimen: 20px;width:var(--dimen);height:var(--dimen);position:absolute;top:10px;right:10px}:host .wm-buttons{margin-top:var(--space-16)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height", "width", "ratioHW"] }] }); }
279
279
  }
280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: WebcamMediaComponent, decorators: [{
280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: WebcamMediaComponent, decorators: [{
281
281
  type: Component,
282
282
  args: [{ selector: 'lib-webcam-media', standalone: true, imports: [CommonModule, BtnComponent, LoaderComponent], template: "<loader [loading]=\"loading()\">\n <div class=\"\" [hidden]=\"streaming() != true || isBackground()\">\n <ng-container *ngTemplateOutlet=\"streamVideoTemp\" />\n\n @if (!isBackground()) {\n <div class=\"wm-buttons\">\n @if (controlTemplate()) {\n <ng-container *ngTemplateOutlet=\"controlTemplate()\" />\n } @else {\n <div class=\"row row-cols-lg-auto g-3 justify-content-center\">\n @if (!isRecording()) {\n <div>\n <app-btn\n [text]=\"isPicture() ? 'Take Picture' : 'Record Video'\"\n (mclick)=\"isPicture() ? takePicture() : startRecording()\" />\n </div>\n } @else {\n <div>\n <app-btn\n text=\"{{ isPaused() ? 'Play' : 'Pause' }} Recording\"\n (mclick)=\"pauseRecording()\"\n type=\"outline\"\n [icon]=\"isPaused() ? 'play' : 'pause'\" />\n </div>\n <div>\n <app-btn\n [text]=\"'Stop Recording'\"\n (mclick)=\"stopRecording()\"\n type=\"danger\"\n icon=\"stop\" />\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <ng-template #streamVideoTemp>\n <div class=\"wm-recording-video-cont\">\n <video\n #recordingVideoTag\n [srcObject]=\"stream()\"\n autoplay\n class=\"wm-recording-video {{ extraClass() }}\"></video>\n @if (isRecording()) {\n <div class=\"wm-recordingDot\"></div>\n }\n </div>\n </ng-template>\n\n @if (computedPreview()) {\n <div class=\"wm-preview\">\n <div>\n <!-- <div class=\"\">\n {{ mediaFileLink() }}\n </div>\n <div class=\"\">\n {{ mediaFile()?.dataURI }}\n </div> -->\n @if (isPicture()) {\n <img\n class=\"w-100\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [src]=\"mediaFileLink()\" />\n } @else {\n <video\n class=\"w-100\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n controls\n autoplay\n [src]=\"mediaFileLink()\"></video>\n }\n </div>\n <div class=\"mt-3 row row-cols-lg-auto justify-content-center g-3\">\n <div>\n <app-btn text=\"Retake {{ subject() }}\" type=\"outline\" (mclick)=\"retake()\" />\n </div>\n <div>\n <app-btn (mclick)=\"save()\" text=\"Done\" type=\"primary\" icon=\"save\" />\n </div>\n <div>\n <app-btn (mclick)=\"cancel()\" text=\"Cancel\" type=\"danger\" icon=\"cancel\" />\n </div>\n </div>\n </div>\n }\n</loader>\n", styles: [":host{display:block}:host .wm-recording-video{width:100%}:host .wm-preview image,:host .wm-preview video{object-fit:contain}:host .wm-recording-video-cont{position:relative}@keyframes wmAnimateDot{0%{background-color:transparent}50%{background-color:#ff000086}}:host .wm-recordingDot{animation-name:wmAnimateDot;animation-duration:1s;animation-iteration-count:infinite;border-radius:5px;--dimen: 20px;width:var(--dimen);height:var(--dimen);position:absolute;top:10px;right:10px}:host .wm-buttons{margin-top:var(--space-16)}\n"] }]
283
283
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { closed: [{
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
297
297
  }], webcamError: [{
298
298
  type: Output
299
299
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLW1lZGlhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy93ZWJjYW0tbWVkaWEvd2ViY2FtLW1lZGlhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy93ZWJjYW0tbWVkaWEvd2ViY2FtLW1lZGlhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBRU4sUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQWdCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFVN0QsTUFBTSxPQUFPLG9CQUFvQjtJQTBHL0IsWUFBbUIsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF6Ry9CLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3BDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUM1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDNUMsb0JBQWUsR0FBRyxJQUFJ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QUM7SUFDdkIsQ0FBQzs4R0E3U1Usb0JBQW9CO2tHQUFwQixvQkFBb0Isd3FFQzVCakMscXpGQTBGQSxza0JEbEVZLFlBQVksc01BQUUsWUFBWSxtZ0JBQUUsZUFBZTs7MkZBSTFDLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7c0ZBSzVDLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElXZWJjYW1NZWRpYSB9IGZyb20gJy4vd2ViY2FtLW1lZGlhLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXdlYmNhbS1tZWRpYScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ0bkNvbXBvbmVudCwgTG9hZGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3dlYmNhbS1tZWRpYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi93ZWJjYW0tbWVkaWEuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJjYW1NZWRpYUNvbXBvbmVudCB7XG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElNZWRpYT4oKTtcbiAgQE91dHB1dCgpIHJlY29yZGVyU3RvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWNvcmRlckVycm9yZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVjb3JkZXJTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlY29yZGluZ1N0YXRlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmRpbmdTdGF0ZT4oKTtcbiAgQE91dHB1dCgpIHJlY29yZGluZ0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElNZWRpYSB8IHVuZGVmaW5lZD4oKTtcbiAgQE91dHB1dCgpIG5ld0ltYWdlU25hcHNob3QgPSBuZXcgRXZlbnRFbWl0dGVyPElNZWRpYSB8IHVuZGVmaW5lZD4oKTtcbiAgQE91dHB1dCgpIHdlYmNhbUVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcmVhZG9ubHkgY29udHJvbFRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgaXNWaWRlbyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHVzZUF1ZGlvID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZmlsZU5hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGZpbGVOYW1lRmFjdG9yeSA9IGlucHV0PChjb21wOiBXZWJjYW1NZWRpYUNvbXBvbmVudCkgPT4gc3RyaW5nPigpO1xuICByZWFkb25seSBmaWxlVHlwZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZXh0cmFDbGFzcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgLyoqXG4gICAqIFNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZGluZ05vdGlmaWNhdGlvbkludGVydmFsID0gaW5wdXQ8bnVtYmVyPig1KTtcbiAgLyoqRW1pdCBzbmFwc2hvdCBvZiB0aGUgaW1hZ2UgYXQgYW4gaW50ZXJ2YWwgKHNlY29uZHMpLiBTZXQgdG8gMCBpZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZW1pc3Npb24gdG8gdGFrZSBwbGFjZS4qL1xuICByZWFkb25seSBpbWFnZVNuYXBzaG90SW50ZXJ2YWwgPSBpbnB1dDxudW1iZXI+KDApO1xuICByZWFkb25seSBpc0JhY2tncm91bmQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRSZWNvcmRpbmdOb3RpZmljYXRpb25JbnRlcnZhbCA9IGNvbXB1dGVkPG51bWJlcj4oXG4gICAgKCkgPT4gKHRoaXMucmVjb3JkaW5nTm90aWZpY2F0aW9uSW50ZXJ2YWwoKSB8fCA1KSAqIDEwMDAsXG4gICk7XG4gIHJlYWRvbmx5IGlzUGljdHVyZSA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLmlzVmlkZW8oKSk7XG5cbiAgcmVhZG9ubHkgc3ViamVjdCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmlzUGljdHVyZSgpID8gJ0ltYWdlJyA6ICdWaWRlbycpKTtcblxuICByZWFkb25seSBpc1BhdXNlZCA9IHRvU2lnbmFsKHRoaXMucmVjb3JkaW5nU3RhdGUucGlwZShtYXAoKHIpID0+IHIgPT0gJ3BhdXNlZCcpKSk7XG5cbiAgY29tcHV0ZWRGaWxlVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmdCA9IHRoaXMuZmlsZVR5cGUoKSxcbiAgICAgIGlzcCA9IHRoaXMuaXNQaWN0dXJlKCk7XG4gICAgcmV0dXJuIGZ0IHx8IChpc3AgPyAnaW1hZ2UvanBlZycgOiAndmlkZW8vbXA0Jyk7XG4gIH0pO1xuICBjb21wdXRlZEZpbGVFeHRlbnNpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbXB1dGVkRmlsZVR5cGUoKT8uc3BsaXQoJy8nKVsxXSk7XG4gIGNvbXB1dGVkRmlsZU5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZmYgPSB0aGlzLmZpbGVOYW1lRmFjdG9yeSgpLFxuICAgICAgZm4gPSB0aGlzLmZpbGVOYW1lKCkgfHwgZmY/Lih0aGlzKSxcbiAgICAgIGZ4ID0gdGhpcy5jb21wdXRlZEZpbGVFeHRlbnNpb24oKSxcbiAgICAgIHN1YmplY3QgPSB0aGlzLnN1YmplY3QoKTtcbiAgICByZXR1cm4gZm4/LmluY2x1ZGVzKCcuJyArIGZ4KSA/IGZuIDogYCR7Zm4gfHwgc3ViamVjdH0uJHtmeH1gO1xuICB9KTtcblxuICByZWFkb25seSBzdHJlYW1pbmdWaWRlb1RlbXBsYXRlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPGFueT4+KCdzdHJlYW1WaWRlb1RlbXAnKTtcbiAgcmVhZG9ubHkgcmVjb3JkaW5nVmlkZW9SZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50Pj4oJ3JlY29yZGluZ1ZpZGVvVGFnJyk7XG4gIHJlYWRvbmx5IHJlY29yZGluZ1ZpZGVvUmVmRWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlY29yZGluZ1ZpZGVvUmVmKCk/Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdHJlYW1pbmcgPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByZXZpZXcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjb21wdXRlZFByZXZpZXcgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiAhdGhpcy5pc0JhY2tncm91bmQoKSAmJiB0aGlzLnByZXZpZXcoKSk7XG5cbiAgLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGNhcHR1cmVkIHBob3RvLiBXZSB3aWxsIHNldCB0aGVcbiAgLy8gd2lkdGggdG8gdGhlIHZhbHVlIGRlZmluZWQgaGVyZSwgYnV0IHRoZSBoZWlnaHQgd2lsbCBiZVxuICAvLyBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIGlucHV0IHN0cmVhbS5cblxuICByZWFkb25seSB3aWR0aCA9IG1vZGVsPG51bWJlcj4oMTA4MCk7IC8vIFdlIHdpbGwgc2NhbGUgdGhlIHBob3RvIHdpZHRoIHRvIHRoaXNcbiAgcmVhZG9ubHkgaGVpZ2h0ID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLndpZHRoKCk7XG4gICAgcmV0dXJuIHdpZHRoIC8gKDQgLyAzKTtcbiAgfSk7IC8vIFRoaXMgd2lsbCBiZSBjb21wdXRlZCBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyZWFtXG5cbiAgLy8gVGhlIHZhcmlvdXMgSFRNTCBlbGVtZW50cyB3ZSBuZWVkIHRvIGNvbmZpZ3VyZSBvciBjb250cm9sLiBUaGVzZVxuICAvLyB3aWxsIGJlIHNldCBieSB0aGUgc3RhcnR1cCgpIGZ1bmN0aW9uLlxuXG4gIHByb3RlY3RlZCBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAvKipIb2xkcyB0aGUgaW1hZ2Ugb3IgdmlkZW8gZmlsZSBhbmQgYmxvYiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVkaWFGaWxlID0gc2lnbmFsPElNZWRpYSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbWVkaWFGaWxlTGluayA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICB0aGlzLm1lZGlhRmlsZSgpID8gVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLm1lZGlhRmlsZSgpPy5sYXRlc3RGaWxlKSA6IHVuZGVmaW5lZCxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RyZWFtID0gc2lnbmFsPE1lZGlhU3RyZWFtPih1bmRlZmluZWQpO1xuXG4gIHByb3RlY3RlZCBzdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIHJlY29yZGVyOiBNZWRpYVJlY29yZGVyO1xuICByZWFkb25seSBpc1JlY29yZGluZyA9IHRvU2lnbmFsPGJvb2xlYW4+KFxuICAgIHRoaXMucmVjb3JkaW5nU3RhdGUucGlwZShtYXAoKHIpID0+IHIgPT0gJ3JlY29yZGluZycgfHwgciA9PSAncGF1c2VkJykpLFxuICApO1xuXG4gIC8qKkluIE1pbGxpc2Vjb25kcyAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjb3JkZWRUaW1lTVMgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgcmVjb3JkZWRUaW1lID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiBNYXRoLnJvdW5kKHRoaXMucmVjb3JkZWRUaW1lTVMoKSAvIDEwMDApKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBzbmFwc2hvdEhhbmRsZXJTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNuYXBzaG90SGFuZGxlciA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXNTdHJlYW1pbmcgPSB0aGlzLnN0cmVhbWluZygpLFxuICAgICAgaW1hZ2VTbmFwc2hvdEludGVydmFsID0gKHRoaXMuaW1hZ2VTbmFwc2hvdEludGVydmFsKCkgfHwgMCkgKiAxMDAwO1xuICAgIHRoaXMuc25hcHNob3RIYW5kbGVyU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIGlmIChpbWFnZVNuYXBzaG90SW50ZXJ2YWwgJiYgaXNTdHJlYW1pbmcpXG4gICAgICB0aGlzLnNuYXBzaG90SGFuZGxlclN1YiA9IGludGVydmFsKGltYWdlU25hcHNob3RJbnRlcnZhbClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMucGFpbnRDYW52YXMoKSksXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5leHRyYWN0SW1hZ2UpLFxuICAgICAgICAgIHRhcCgocikgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZXdJbWFnZVNuYXBzaG90LmVtaXQocik7XG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBwcm90ZWN0ZWQgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRVcFdlYmNhbSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc25hcHNob3RIYW5kbGVyU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2xvc2VXZWJjYW0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgd2ViY2FtIHN0cmVhbVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXJ0VXBXZWJjYW0oKSB7XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmNsZWFyKCk7XG5cbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzXG4gICAgICAuZ2V0VXNlck1lZGlhKHsgdmlkZW86IHRydWUsIGF1ZGlvOiB0aGlzLnVzZUF1ZGlvKCkgfSlcbiAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcbiAgICAgICAgdGhpcy5zdHJlYW1pbmcuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgLy8gc3RyZWFtLm9uYWRkdHJhY2sgPSAoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgdGhpcy5jYW52YXM/LnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB0aGlzLndpZHRoKCkgKyAncHgnKTtcbiAgICAgICAgdGhpcy5jYW52YXM/LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgdGhpcy5oZWlnaHQoKSArICdweCcpO1xuICAgICAgICB0aGlzLnN0cmVhbS5zZXQoc3RyZWFtKTtcbiAgICAgICAgaWYgKHRoaXMucmVjb3JkaW5nTm90aWZpY2F0aW9uSW50ZXJ2YWwoKSkgdGhpcy5zdGFydFJlY29yZGluZygpO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICB0aGlzLndlYmNhbUVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQ6YCwgZXJyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlIHRoYXQgdGhlIHVzZXIgaXMgZG9uZSB3aXRoIHRoZSB3ZWJjYW0gY29tcG9uZW50LlxuICAgKlxuICAgKiBBbnkgbWVkaWEgb2J0YWluZWQgd2lsbCBiZSBlbWl0dGVkXG4gICAqL1xuICBzYXZlKCkge1xuICAgIGlmICh0aGlzLmlzUGljdHVyZSgpKVxuICAgICAgdGhpcy5leHRyYWN0QW5kU2V0SW1hZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCh0aGlzLm1lZGlhRmlsZSgpKTtcbiAgICAgICAgdGhpcy5jbG9zZVdlYmNhbSgpO1xuICAgICAgfSk7XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KHRoaXMubWVkaWFGaWxlKCkpO1xuICAgICAgdGhpcy5jbG9zZVdlYmNhbSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGlzIGRvbmUgd2l0aCB0aGUgd2ViY2FtIGNvbXBvbmVudC5cbiAgICpcbiAgICogQW55IG1lZGlhIG9idGFpbmVkIHdpbGwgYmUgZGVsZXRlZFxuICAgKi9cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuY2xvc2VkLmVtaXQobnVsbCk7XG4gICAgdGhpcy5jbG9zZVdlYmNhbSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBtZWRpYSB0YWtlbiBhbmQgY2xvc2UgcHJldmlld1xuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgaWYgKHRoaXMuY2FudmFzKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jYW52YXM/LmdldENvbnRleHQoJzJkJyk7XG4gICAgICBjb250ZXh0IS5maWxsU3R5bGUgPSAnI0FBQSc7XG4gICAgICBjb250ZXh0IS5maWxsUmVjdCgwLCAwLCB0aGlzLmNhbnZhcyEud2lkdGgsIHRoaXMuY2FudmFzIS5oZWlnaHQpO1xuXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5jYW52YXMhLnRvRGF0YVVSTCh0aGlzLmNvbXB1dGVkRmlsZVR5cGUoKSk7XG4gICAgICB0aGlzLm1lZGlhRmlsZS5zZXQodW5kZWZpbmVkKTtcbiAgICAgIC8vIHRoaXMucGhvdG9TcmMuc2V0KGRhdGEpO1xuICAgICAgdGhpcy5zdHJlYW1pbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5wcmV2aWV3LnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0YWtlKCkge1xuICAgIGlmICghdGhpcy5zdHJlYW0oKSkgdGhpcy5zdGFydFVwV2ViY2FtKCk7XG4gICAgZWxzZSB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogU2h1dGRvd24gdGhlIHdlYmNhbSBzdHJlYW1cbiAgICovXG4gIGNsb3NlV2ViY2FtKCkge1xuICAgIHRoaXMuc3RyZWFtKClcbiAgICAgID8uZ2V0VHJhY2tzKClcbiAgICAgIC5mb3JFYWNoKCh4KSA9PiB4LnN0b3AoKSk7XG4gICAgdGhpcy5zdHJlYW0uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zdHJlYW1pbmcuc2V0KHVuZGVmaW5lZCk7XG4gICAgLy8gdGhpcy5zdHJlYW0uc2V0KHRoaXMuc3RyZWFtKCk/LmdldFRyYWNrc1swXS5zdG9wKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhcHR1cmUgYSBwaG90byBieSBmZXRjaGluZyB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgdmlkZW9cbiAgICogYW5kIGRyYXdpbmcgaXQgaW50byBhIGNhbnZhcywgdGhlbiBjb252ZXJ0aW5nIHRoYXQgdG8gYSBQTkdcbiAgICogZm9ybWF0IGRhdGEgVVJMLlxuICAgKlxuICAgKiBCeSBkcmF3aW5nIGl0IG9uIGFuIG9mZnNjcmVlbiBjYW52YXMgYW5kIHRoZW5cbiAgICogZHJhd2luZyB0aGF0IHRvIHRoZSBzY3JlZW4sIHdlIGNhbiBjaGFuZ2UgaXRzIHNpemUgYW5kL29yIGFwcGx5XG4gICAqIG90aGVyIGNoYW5nZXMgYmVmb3JlIGRyYXdpbmcgaXQuXG4gICAqL1xuICB0YWtlUGljdHVyZSgpIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAoIXRoaXMuaXNQaWN0dXJlKCkpIHJldHVybjtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jYW52YXMhLmdldENvbnRleHQoJzJkJyksXG4gICAgICB3aWR0aCA9IHRoaXMud2lkdGgoKSxcbiAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiBjb250ZXh0KSB7XG4gICAgICB0aGlzLnBhaW50Q2FudmFzKCk7XG4gICAgICB0aGlzLmV4dHJhY3RBbmRTZXRJbWFnZS5zdWJzY3JpYmUoKTtcbiAgICB9IGVsc2UgdGhpcy5jbGVhcigpO1xuXG4gICAgdGhpcy5zdHJlYW1pbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnByZXZpZXcuc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhaW50Q2FudmFzKCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aWR0aCgpLFxuICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTtcbiAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmIHRoaXMuY2FudmFzIS5nZXRDb250ZXh0KCcyZCcpKSB7XG4gICAgICBpZiAodGhpcy5jYW52YXMpIHtcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgfVxuICAgICAgdGhpcy5jYW52YXMhLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKHRoaXMucmVjb3JkaW5nVmlkZW9SZWZFbCgpISwgMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRSZWNvcmRpbmcgPSAoc3RyZWFtID0gdGhpcy5zdHJlYW0oKSkgPT4ge1xuICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHJldHVybjtcbiAgICBpZiAoIXN0cmVhbSkgdGhyb3cgJ1N0cmVhbSBoYXMgbm90IGJlZW4gaW5pdGlhdGVkJztcbiAgICB0aGlzLnJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtKTtcblxuICAgIHRoaXMucmVjb3JkZWRUaW1lTVMuc2V0KDApO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMucmVjb3JkZWRUaW1lTVMuc2V0KERhdGUubm93KCkgLSBzdGFydFRpbWUpO1xuICAgICAgdGhpcy5tZWRpYUZpbGUuc2V0KHtcbiAgICAgICAgbGF0ZXN0RmlsZTogbmV3IEZpbGUoW2V2ZW50LmRhdGFdLCB0aGlzLmNvbXB1dGVkRmlsZU5hbWUoKSwge1xuICAgICAgICAgIHR5cGU6IHRoaXMuY29tcHV0ZWRGaWxlVHlwZSgpLFxuICAgICAgICB9KSxcbiAgICAgICAgbGF0ZXN0QmxvYjogZXZlbnQuZGF0YSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZWNvcmRpbmdDaGFuZ2VkLmVtaXQodGhpcy5tZWRpYUZpbGUoKSk7XG4gICAgfTtcbiAgICAvLyB0aGlzLnJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChldmVudCkgPT4ge1xuICAgIC8vICAgdGhpcy5yZWNvcmRlZEJsb2JzID0gW2V2ZW50LmRhdGFdO1xuICAgIC8vICAgbGVuZ3Rocy5wdXNoKGV2ZW50LmRhdGEuc2l6ZSk7XG4gICAgLy8gfTtcbiAgICAvLyB0aGlzLnJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChldmVudCkgPT4gdGhpcy5yZWNvcmRlZEJsb2JzLnB1c2goZXZlbnQuZGF0YSk7XG5cbiAgICB0aGlzLnJlY29yZGVyLnN0YXJ0KHRoaXMuY29tcHV0ZWRSZWNvcmRpbmdOb3RpZmljYXRpb25JbnRlcnZhbCgpKTtcblxuICAgIHRoaXMucmVjb3JkZXIub25zdGFydCA9IChlKSA9PiB7XG4gICAgICB0aGlzLnJlY29yZGluZ1N0YXRlLmVtaXQodGhpcy5yZWNvcmRlci5zdGF0ZSk7XG4gICAgICB0aGlzLnJlY29yZGVyU3RhcnRlZC5lbWl0KGUpO1xuICAgIH07XG4gICAgdGhpcy5yZWNvcmRlci5vbnN0b3AgPSAoZSkgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRpbmdTdGF0ZS5lbWl0KHRoaXMucmVjb3JkZXIuc3RhdGUpO1xuICAgICAgdGhpcy5yZWNvcmRlclN0b3BwZWQuZW1pdChlKTtcbiAgICB9O1xuICAgIHRoaXMucmVjb3JkZXIub25wYXVzZSA9IChlKSA9PiB7XG4gICAgICB0aGlzLnJlY29yZGluZ1N0YXRlLmVtaXQodGhpcy5yZWNvcmRlci5zdGF0ZSk7XG4gICAgfTtcbiAgICB0aGlzLnJlY29yZGVyLm9ucmVzdW1lID0gKGUpID0+IHtcbiAgICAgIHRoaXMucmVjb3JkaW5nU3RhdGUuZW1pdCh0aGlzLnJlY29yZGVyLnN0YXRlKTtcbiAgICB9O1xuICAgIHRoaXMucmVjb3JkZXIub25lcnJvciA9IChlKSA9PiB7XG4gICAgICB0aGlzLnJlY29yZGluZ1N0YXRlLmVtaXQodGhpcy5yZWNvcmRlci5zdGF0ZSk7XG4gICAgICB0aGlzLnJlY29yZGVyRXJyb3JlZC5lbWl0KGUpO1xuICAgIH07XG4gIH07XG5cbiAgc3RvcFJlY29yZGluZygpIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlci5zdGF0ZSA9PT0gJ3JlY29yZGluZycpIHRoaXMucmVjb3JkZXIuc3RvcCgpO1xuXG4gICAgdGhpcy5wcmV2aWV3LnNldCh0cnVlKTtcbiAgICB0aGlzLnN0cmVhbWluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcGF1c2VSZWNvcmRpbmcoKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHRoaXMucmVjb3JkZXIuc3RhdGUgPT09ICdwYXVzZWQnKSB0aGlzLnJlY29yZGVyLnJlc3VtZSgpO1xuICAgIGVsc2UgdGhpcy5yZWNvcmRlci5wYXVzZSgpO1xuICB9XG5cbiAgZXh0cmFjdFJlY29yZGVkVmlkZW8oKSB7XG4gICAgdGhpcy5zdG9wUmVjb3JkaW5nKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZXh0cmFjdEltYWdlID0gbmV3IE9ic2VydmFibGU8SU1lZGlhPigoc3ViKSA9PlxuICAgIHRoaXMuY2FudmFzIS50b0Jsb2IoXG4gICAgICAoYmxvYikgPT4ge1xuICAgICAgICBpZiAoYmxvYikge1xuICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIHRoaXMuY29tcHV0ZWRGaWxlTmFtZSgpKSxcbiAgICAgICAgICAgIGRhdGFVUkkgPSB0aGlzLmNhbnZhcyEudG9EYXRhVVJMKHRoaXMuY29tcHV0ZWRGaWxlVHlwZSgpKTtcbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICBzdWIubmV4dCh7IGxhdGVzdEZpbGU6IGZpbGUsIGRhdGFVUkksIGxhdGVzdEJsb2I6IGJsb2IgfSk7XG4gICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgIH0gZWxzZSBzdWIuZXJyb3IoYE5vICR7dGhpcy5zdWJqZWN0KCl9IGZpbGUgZ2VuZXJhdGVkYCk7XG4gICAgICB9LFxuICAgICAgdGhpcy5jb21wdXRlZEZpbGVUeXBlKCksXG4gICAgICAxLFxuICAgICksXG4gICk7XG5cbiAgcHJvdGVjdGVkIGV4dHJhY3RBbmRTZXRJbWFnZSA9IHRoaXMuZXh0cmFjdEltYWdlLnBpcGUoXG4gICAgdGFwKChyKSA9PiB0aGlzLm1lZGlhRmlsZS5zZXQocikpLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnbWVkaWEnLCB0aGlzLm1lZGlhRmlsZSgpLCAnbWVkaWFGaWxlTGluaycsIHRoaXMubWVkaWFGaWxlTGluaygpKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KSxcbiAgKTtcbn1cblxudHlwZSBJTWVkaWEgPSBJV2ViY2FtTWVkaWE7XG4iLCI8bG9hZGVyIFtsb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxuICA8ZGl2IGNsYXNzPVwiXCIgW2hpZGRlbl09XCJzdHJlYW1pbmcoKSAhPSB0cnVlIHx8IGlzQmFja2dyb3VuZCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0cmVhbVZpZGVvVGVtcFwiIC8+XG5cbiAgICBAaWYgKCFpc0JhY2tncm91bmQoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cIndtLWJ1dHRvbnNcIj5cbiAgICAgICAgQGlmIChjb250cm9sVGVtcGxhdGUoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtbGctYXV0byBnLTMganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgQGlmICghaXNSZWNvcmRpbmcoKSkge1xuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJpc1BpY3R1cmUoKSA/ICdUYWtlIFBpY3R1cmUnIDogJ1JlY29yZCBWaWRlbydcIlxuICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJpc1BpY3R1cmUoKSA/IHRha2VQaWN0dXJlKCkgOiBzdGFydFJlY29yZGluZygpXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgdGV4dD1cInt7IGlzUGF1c2VkKCkgPyAnUGxheScgOiAnUGF1c2UnIH19IFJlY29yZGluZ1wiXG4gICAgICAgICAgICAgICAgICAobWNsaWNrKT1cInBhdXNlUmVjb3JkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgW2ljb25dPVwiaXNQYXVzZWQoKSA/ICdwbGF5JyA6ICdwYXVzZSdcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1N0b3AgUmVjb3JkaW5nJ1wiXG4gICAgICAgICAgICAgICAgICAobWNsaWNrKT1cInN0b3BSZWNvcmRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJzdG9wXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlICNzdHJlYW1WaWRlb1RlbXA+XG4gICAgPGRpdiBjbGFzcz1cIndtLXJlY29yZGluZy12aWRlby1jb250XCI+XG4gICAgICA8dmlkZW9cbiAgICAgICAgI3JlY29yZGluZ1ZpZGVvVGFnXG4gICAgICAgIFtzcmNPYmplY3RdPVwic3RyZWFtKClcIlxuICAgICAgICBhdXRvcGxheVxuICAgICAgICBjbGFzcz1cIndtLXJlY29yZGluZy12aWRlbyB7eyBleHRyYUNsYXNzKCkgfX1cIj48L3ZpZGVvPlxuICAgICAgQGlmIChpc1JlY29yZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3bS1yZWNvcmRpbmdEb3RcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICBAaWYgKGNvbXB1dGVkUHJldmlldygpKSB7XG4gICAgPGRpdiBjbGFzcz1cIndtLXByZXZpZXdcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgIHt7IG1lZGlhRmlsZUxpbmsoKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgIHt7IG1lZGlhRmlsZSgpPy5kYXRhVVJJIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgQGlmIChpc1BpY3R1cmUoKSkge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidy0xMDBcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoKClcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHQoKVwiXG4gICAgICAgICAgICBbc3JjXT1cIm1lZGlhRmlsZUxpbmsoKVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDx2aWRlb1xuICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwid2lkdGgoKVwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodCgpXCJcbiAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICBhdXRvcGxheVxuICAgICAgICAgICAgW3NyY109XCJtZWRpYUZpbGVMaW5rKClcIj48L3ZpZGVvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHJvdyByb3ctY29scy1sZy1hdXRvIGp1c3RpZnktY29udGVudC1jZW50ZXIgZy0zXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGFwcC1idG4gdGV4dD1cIlJldGFrZSB7eyBzdWJqZWN0KCkgfX1cIiB0eXBlPVwib3V0bGluZVwiIChtY2xpY2spPVwicmV0YWtlKClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8YXBwLWJ0biAobWNsaWNrKT1cInNhdmUoKVwiIHRleHQ9XCJEb25lXCIgdHlwZT1cInByaW1hcnlcIiBpY29uPVwic2F2ZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxhcHAtYnRuIChtY2xpY2spPVwiY2FuY2VsKClcIiB0ZXh0PVwiQ2FuY2VsXCIgdHlwZT1cImRhbmdlclwiIGljb249XCJjYW5jZWxcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L2xvYWRlcj5cbiJdfQ==
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLW1lZGlhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy93ZWJjYW0tbWVkaWEvd2ViY2FtLW1lZGlhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy93ZWJjYW0tbWVkaWEvd2ViY2FtLW1lZGlhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBRU4sUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQWdCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFVN0QsTUFBTSxPQUFPLG9CQUFvQjtJQTBHL0IsWUFBbUIsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF6Ry9CLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3BDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUM1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDNUMsb0JBQWUsR0FBRyxJQUFJ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LEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDOzhHQTdTVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix3cUVDNUJqQyxxekZBMEZBLHNrQkRsRVksWUFBWSxzTUFBRSxZQUFZLG1nQkFBRSxlQUFlOzsyRkFJMUMsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQztzRkFLNUMsTUFBTTtzQkFBZixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgbWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSVdlYmNhbU1lZGlhIH0gZnJvbSAnLi93ZWJjYW0tbWVkaWEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItd2ViY2FtLW1lZGlhJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQnRuQ29tcG9uZW50LCBMb2FkZXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vd2ViY2FtLW1lZGlhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3dlYmNhbS1tZWRpYS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFdlYmNhbU1lZGlhQ29tcG9uZW50IHtcbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1lZGlhPigpO1xuICBAT3V0cHV0KCkgcmVjb3JkZXJTdG9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlY29yZGVyRXJyb3JlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWNvcmRlclN0YXJ0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVjb3JkaW5nU3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZGluZ1N0YXRlPigpO1xuICBAT3V0cHV0KCkgcmVjb3JkaW5nQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1lZGlhIHwgdW5kZWZpbmVkPigpO1xuICBAT3V0cHV0KCkgbmV3SW1hZ2VTbmFwc2hvdCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1lZGlhIHwgdW5kZWZpbmVkPigpO1xuICBAT3V0cHV0KCkgd2ViY2FtRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICByZWFkb25seSBjb250cm9sVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSBpc1ZpZGVvID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgdXNlQXVkaW8gPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBmaWxlTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZmlsZU5hbWVGYWN0b3J5ID0gaW5wdXQ8KGNvbXA6IFdlYmNhbU1lZGlhQ29tcG9uZW50KSA9PiBzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGZpbGVUeXBlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBleHRyYUNsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICAvKipcbiAgICogU2Vjb25kc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3JkaW5nTm90aWZpY2F0aW9uSW50ZXJ2YWwgPSBpbnB1dDxudW1iZXI+KDUpO1xuICAvKipFbWl0IHNuYXBzaG90IG9mIHRoZSBpbWFnZSBhdCBhbiBpbnRlcnZhbCAoc2Vjb25kcykuIFNldCB0byAwIGlmIHlvdSBkb24ndCB3YW50IHRoZSBlbWlzc2lvbiB0byB0YWtlIHBsYWNlLiovXG4gIHJlYWRvbmx5IGltYWdlU25hcHNob3RJbnRlcnZhbCA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IGlzQmFja2dyb3VuZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBjb21wdXRlZFJlY29yZGluZ05vdGlmaWNhdGlvbkludGVydmFsID0gY29tcHV0ZWQ8bnVtYmVyPihcbiAgICAoKSA9PiAodGhpcy5yZWNvcmRpbmdOb3RpZmljYXRpb25JbnRlcnZhbCgpIHx8IDUpICogMTAwMCxcbiAgKTtcbiAgcmVhZG9ubHkgaXNQaWN0dXJlID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuaXNWaWRlbygpKTtcblxuICByZWFkb25seSBzdWJqZWN0ID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuaXNQaWN0dXJlKCkgPyAnSW1hZ2UnIDogJ1ZpZGVvJykpO1xuXG4gIHJlYWRvbmx5IGlzUGF1c2VkID0gdG9TaWduYWwodGhpcy5yZWNvcmRpbmdTdGF0ZS5waXBlKG1hcCgocikgPT4gciA9PSAncGF1c2VkJykpKTtcblxuICBjb21wdXRlZEZpbGVUeXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGZ0ID0gdGhpcy5maWxlVHlwZSgpLFxuICAgICAgaXNwID0gdGhpcy5pc1BpY3R1cmUoKTtcbiAgICByZXR1cm4gZnQgfHwgKGlzcCA/ICdpbWFnZS9qcGVnJyA6ICd2aWRlby9tcDQnKTtcbiAgfSk7XG4gIGNvbXB1dGVkRmlsZUV4dGVuc2lvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29tcHV0ZWRGaWxlVHlwZSgpPy5zcGxpdCgnLycpWzFdKTtcbiAgY29tcHV0ZWRGaWxlTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmZiA9IHRoaXMuZmlsZU5hbWVGYWN0b3J5KCksXG4gICAgICBmbiA9IHRoaXMuZmlsZU5hbWUoKSB8fCBmZj8uKHRoaXMpLFxuICAgICAgZnggPSB0aGlzLmNvbXB1dGVkRmlsZUV4dGVuc2lvbigpLFxuICAgICAgc3ViamVjdCA9IHRoaXMuc3ViamVjdCgpO1xuICAgIHJldHVybiBmbj8uaW5jbHVkZXMoJy4nICsgZngpID8gZm4gOiBgJHtmbiB8fCBzdWJqZWN0fS4ke2Z4fWA7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHN0cmVhbWluZ1ZpZGVvVGVtcGxhdGUgPSB2aWV3Q2hpbGQ8VGVtcGxhdGVSZWY8YW55Pj4oJ3N0cmVhbVZpZGVvVGVtcCcpO1xuICByZWFkb25seSByZWNvcmRpbmdWaWRlb1JlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxWaWRlb0VsZW1lbnQ+PigncmVjb3JkaW5nVmlkZW9UYWcnKTtcbiAgcmVhZG9ubHkgcmVjb3JkaW5nVmlkZW9SZWZFbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVjb3JkaW5nVmlkZW9SZWYoKT8ubmF0aXZlRWxlbWVudCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0cmVhbWluZyA9IHNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJldmlldyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGNvbXB1dGVkUHJldmlldyA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+ICF0aGlzLmlzQmFja2dyb3VuZCgpICYmIHRoaXMucHJldmlldygpKTtcblxuICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgY2FwdHVyZWQgcGhvdG8uIFdlIHdpbGwgc2V0IHRoZVxuICAvLyB3aWR0aCB0byB0aGUgdmFsdWUgZGVmaW5lZCBoZXJlLCBidXQgdGhlIGhlaWdodCB3aWxsIGJlXG4gIC8vIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgaW5wdXQgc3RyZWFtLlxuXG4gIHJlYWRvbmx5IHdpZHRoID0gbW9kZWw8bnVtYmVyPigxMDgwKTsgLy8gV2Ugd2lsbCBzY2FsZSB0aGUgcGhvdG8gd2lkdGggdG8gdGhpc1xuICByZWFkb25seSBoZWlnaHQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMud2lkdGgoKTtcbiAgICByZXR1cm4gd2lkdGggLyAoNCAvIDMpO1xuICB9KTsgLy8gVGhpcyB3aWxsIGJlIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJlYW1cblxuICAvLyBUaGUgdmFyaW91cyBIVE1MIGVsZW1lbnRzIHdlIG5lZWQgdG8gY29uZmlndXJlIG9yIGNvbnRyb2wuIFRoZXNlXG4gIC8vIHdpbGwgYmUgc2V0IGJ5IHRoZSBzdGFydHVwKCkgZnVuY3Rpb24uXG5cbiAgcHJvdGVjdGVkIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIC8qKkhvbGRzIHRoZSBpbWFnZSBvciB2aWRlbyBmaWxlIGFuZCBibG9iICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtZWRpYUZpbGUgPSBzaWduYWw8SU1lZGlhIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtZWRpYUZpbGVMaW5rID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHRoaXMubWVkaWFGaWxlKCkgPyBVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMubWVkaWFGaWxlKCk/LmxhdGVzdEZpbGUpIDogdW5kZWZpbmVkLFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdHJlYW0gPSBzaWduYWw8TWVkaWFTdHJlYW0+KHVuZGVmaW5lZCk7XG5cbiAgcHJvdGVjdGVkIHN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgcmVjb3JkZXI6IE1lZGlhUmVjb3JkZXI7XG4gIHJlYWRvbmx5IGlzUmVjb3JkaW5nID0gdG9TaWduYWw8Ym9vbGVhbj4oXG4gICAgdGhpcy5yZWNvcmRpbmdTdGF0ZS5waXBlKG1hcCgocikgPT4gciA9PSAncmVjb3JkaW5nJyB8fCByID09ICdwYXVzZWQnKSksXG4gICk7XG5cbiAgLyoqSW4gTWlsbGlzZWNvbmRzICovXG4gIHByb3RlY3RlZCByZWFkb25seSByZWNvcmRlZFRpbWVNUyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICByZWFkb25seSByZWNvcmRlZFRpbWUgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IE1hdGgucm91bmQodGhpcy5yZWNvcmRlZFRpbWVNUygpIC8gMTAwMCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHNuYXBzaG90SGFuZGxlclN1YjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc25hcHNob3RIYW5kbGVyID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpc1N0cmVhbWluZyA9IHRoaXMuc3RyZWFtaW5nKCksXG4gICAgICBpbWFnZVNuYXBzaG90SW50ZXJ2YWwgPSAodGhpcy5pbWFnZVNuYXBzaG90SW50ZXJ2YWwoKSB8fCAwKSAqIDEwMDA7XG4gICAgdGhpcy5zbmFwc2hvdEhhbmRsZXJTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKGltYWdlU25hcHNob3RJbnRlcnZhbCAmJiBpc1N0cmVhbWluZylcbiAgICAgIHRoaXMuc25hcHNob3RIYW5kbGVyU3ViID0gaW50ZXJ2YWwoaW1hZ2VTbmFwc2hvdEludGVydmFsKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5wYWludENhbnZhcygpKSxcbiAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmV4dHJhY3RJbWFnZSksXG4gICAgICAgICAgdGFwKChyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5ld0ltYWdlU25hcHNob3QuZW1pdChyKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHByb3RlY3RlZCBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydFVwV2ViY2FtKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zbmFwc2hvdEhhbmRsZXJTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jbG9zZVdlYmNhbSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRoZSB3ZWJjYW0gc3RyZWFtXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhcnRVcFdlYmNhbSgpIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuY2xlYXIoKTtcblxuICAgIG5hdmlnYXRvci5tZWRpYURldmljZXNcbiAgICAgIC5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZSwgYXVkaW86IHRoaXMudXNlQXVkaW8oKSB9KVxuICAgICAgLnRoZW4oKHN0cmVhbSkgPT4ge1xuICAgICAgICB0aGlzLnN0cmVhbWluZy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAvLyBzdHJlYW0ub25hZGR0cmFjayA9ICgpID0+IHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICB0aGlzLmNhbnZhcz8uc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMud2lkdGgoKSArICdweCcpO1xuICAgICAgICB0aGlzLmNhbnZhcz8uc2V0QXR0cmlidXRlKCdoZWlnaHQnLCB0aGlzLmhlaWdodCgpICsgJ3B4Jyk7XG4gICAgICAgIHRoaXMuc3RyZWFtLnNldChzdHJlYW0pO1xuICAgICAgICBpZiAodGhpcy5yZWNvcmRpbmdOb3RpZmljYXRpb25JbnRlcnZhbCgpKSB0aGlzLnN0YXJ0UmVjb3JkaW5nKCk7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMud2ViY2FtRXJyb3IuZW1pdChlcnIpO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBBbiBlcnJvciBvY2N1cnJlZDpgLCBlcnIpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGUgdGhhdCB0aGUgdXNlciBpcyBkb25lIHdpdGggdGhlIHdlYmNhbSBjb21wb25lbnQuXG4gICAqXG4gICAqIEFueSBtZWRpYSBvYnRhaW5lZCB3aWxsIGJlIGVtaXR0ZWRcbiAgICovXG4gIHNhdmUoKSB7XG4gICAgaWYgKHRoaXMuaXNQaWN0dXJlKCkpXG4gICAgICB0aGlzLmV4dHJhY3RBbmRTZXRJbWFnZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KHRoaXMubWVkaWFGaWxlKCkpO1xuICAgICAgICB0aGlzLmNsb3NlV2ViY2FtKCk7XG4gICAgICB9KTtcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQodGhpcy5tZWRpYUZpbGUoKSk7XG4gICAgICB0aGlzLmNsb3NlV2ViY2FtKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlIHRoYXQgdGhlIHVzZXIgaXMgZG9uZSB3aXRoIHRoZSB3ZWJjYW0gY29tcG9uZW50LlxuICAgKlxuICAgKiBBbnkgbWVkaWEgb2J0YWluZWQgd2lsbCBiZSBkZWxldGVkXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdChudWxsKTtcbiAgICB0aGlzLmNsb3NlV2ViY2FtKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG1lZGlhIHRha2VuIGFuZCBjbG9zZSBwcmV2aWV3XG4gICAqL1xuICBjbGVhcigpIHtcbiAgICBpZiAodGhpcy5jYW52YXMpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcz8uZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgIGNvbnRleHQhLmZpbGxTdHlsZSA9ICcjQUFBJztcbiAgICAgIGNvbnRleHQhLmZpbGxSZWN0KDAsIDAsIHRoaXMuY2FudmFzIS53aWR0aCwgdGhpcy5jYW52YXMhLmhlaWdodCk7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmNhbnZhcyEudG9EYXRhVVJMKHRoaXMuY29tcHV0ZWRGaWxlVHlwZSgpKTtcbiAgICAgIHRoaXMubWVkaWFGaWxlLnNldCh1bmRlZmluZWQpO1xuICAgICAgLy8gdGhpcy5waG90b1NyYy5zZXQoZGF0YSk7XG4gICAgICB0aGlzLnN0cmVhbWluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLnByZXZpZXcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICByZXRha2UoKSB7XG4gICAgaWYgKCF0aGlzLnN0cmVhbSgpKSB0aGlzLnN0YXJ0VXBXZWJjYW0oKTtcbiAgICBlbHNlIHRoaXMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaHV0ZG93biB0aGUgd2ViY2FtIHN0cmVhbVxuICAgKi9cbiAgY2xvc2VXZWJjYW0oKSB7XG4gICAgdGhpcy5zdHJlYW0oKVxuICAgICAgPy5nZXRUcmFja3MoKVxuICAgICAgLmZvckVhY2goKHgpID0+IHguc3RvcCgpKTtcbiAgICB0aGlzLnN0cmVhbS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnN0cmVhbWluZy5zZXQodW5kZWZpbmVkKTtcbiAgICAvLyB0aGlzLnN0cmVhbS5zZXQodGhpcy5zdHJlYW0oKT8uZ2V0VHJhY2tzWzBdLnN0b3AoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FwdHVyZSBhIHBob3RvIGJ5IGZldGNoaW5nIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIHRoZSB2aWRlb1xuICAgKiBhbmQgZHJhd2luZyBpdCBpbnRvIGEgY2FudmFzLCB0aGVuIGNvbnZlcnRpbmcgdGhhdCB0byBhIFBOR1xuICAgKiBmb3JtYXQgZGF0YSBVUkwuXG4gICAqXG4gICAqIEJ5IGRyYXdpbmcgaXQgb24gYW4gb2Zmc2NyZWVuIGNhbnZhcyBhbmQgdGhlblxuICAgKiBkcmF3aW5nIHRoYXQgdG8gdGhlIHNjcmVlbiwgd2UgY2FuIGNoYW5nZSBpdHMgc2l6ZSBhbmQvb3IgYXBwbHlcbiAgICogb3RoZXIgY2hhbmdlcyBiZWZvcmUgZHJhd2luZyBpdC5cbiAgICovXG4gIHRha2VQaWN0dXJlKCkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICghdGhpcy5pc1BpY3R1cmUoKSkgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNhbnZhcyEuZ2V0Q29udGV4dCgnMmQnKSxcbiAgICAgIHdpZHRoID0gdGhpcy53aWR0aCgpLFxuICAgICAgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTtcbiAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmIGNvbnRleHQpIHtcbiAgICAgIHRoaXMucGFpbnRDYW52YXMoKTtcbiAgICAgIHRoaXMuZXh0cmFjdEFuZFNldEltYWdlLnN1YnNjcmliZSgpO1xuICAgIH0gZWxzZSB0aGlzLmNsZWFyKCk7XG5cbiAgICB0aGlzLnN0cmVhbWluZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMucHJldmlldy5zZXQodHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFpbnRDYW52YXMoKSB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLndpZHRoKCksXG4gICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodCgpO1xuICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgdGhpcy5jYW52YXMhLmdldENvbnRleHQoJzJkJykpIHtcbiAgICAgIGlmICh0aGlzLmNhbnZhcykge1xuICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICB9XG4gICAgICB0aGlzLmNhbnZhcyEuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UodGhpcy5yZWNvcmRpbmdWaWRlb1JlZkVsKCkhLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBzdGFydFJlY29yZGluZyA9IChzdHJlYW0gPSB0aGlzLnN0cmVhbSgpKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzVmlkZW8oKSkgcmV0dXJuO1xuICAgIGlmICghc3RyZWFtKSB0aHJvdyAnU3RyZWFtIGhhcyBub3QgYmVlbiBpbml0aWF0ZWQnO1xuICAgIHRoaXMucmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0pO1xuXG4gICAgdGhpcy5yZWNvcmRlZFRpbWVNUy5zZXQoMCk7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChldmVudCkgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRlZFRpbWVNUy5zZXQoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgICB0aGlzLm1lZGlhRmlsZS5zZXQoe1xuICAgICAgICBsYXRlc3RGaWxlOiBuZXcgRmlsZShbZXZlbnQuZGF0YV0sIHRoaXMuY29tcHV0ZWRGaWxlTmFtZSgpLCB7XG4gICAgICAgICAgdHlwZTogdGhpcy5jb21wdXRlZEZpbGVUeXBlKCksXG4gICAgICAgIH0pLFxuICAgICAgICBsYXRlc3RCbG9iOiBldmVudC5kYXRhLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlY29yZGluZ0NoYW5nZWQuZW1pdCh0aGlzLm1lZGlhRmlsZSgpKTtcbiAgICB9O1xuICAgIC8vIHRoaXMucmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gKGV2ZW50KSA9PiB7XG4gICAgLy8gICB0aGlzLnJlY29yZGVkQmxvYnMgPSBbZXZlbnQuZGF0YV07XG4gICAgLy8gICBsZW5ndGhzLnB1c2goZXZlbnQuZGF0YS5zaXplKTtcbiAgICAvLyB9O1xuICAgIC8vIHRoaXMucmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gKGV2ZW50KSA9PiB0aGlzLnJlY29yZGVkQmxvYnMucHVzaChldmVudC5kYXRhKTtcblxuICAgIHRoaXMucmVjb3JkZXIuc3RhcnQodGhpcy5jb21wdXRlZFJlY29yZGluZ05vdGlmaWNhdGlvbkludGVydmFsKCkpO1xuXG4gICAgdGhpcy5yZWNvcmRlci5vbnN0YXJ0ID0gKGUpID0+IHtcbiAgICAgIHRoaXMucmVjb3JkaW5nU3RhdGUuZW1pdCh0aGlzLnJlY29yZGVyLnN0YXRlKTtcbiAgICAgIHRoaXMucmVjb3JkZXJTdGFydGVkLmVtaXQoZSk7XG4gICAgfTtcbiAgICB0aGlzLnJlY29yZGVyLm9uc3RvcCA9IChlKSA9PiB7XG4gICAgICB0aGlzLnJlY29yZGluZ1N0YXRlLmVtaXQodGhpcy5yZWNvcmRlci5zdGF0ZSk7XG4gICAgICB0aGlzLnJlY29yZGVyU3RvcHBlZC5lbWl0KGUpO1xuICAgIH07XG4gICAgdGhpcy5yZWNvcmRlci5vbnBhdXNlID0gKGUpID0+IHtcbiAgICAgIHRoaXMucmVjb3JkaW5nU3RhdGUuZW1pdCh0aGlzLnJlY29yZGVyLnN0YXRlKTtcbiAgICB9O1xuICAgIHRoaXMucmVjb3JkZXIub25yZXN1bWUgPSAoZSkgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRpbmdTdGF0ZS5lbWl0KHRoaXMucmVjb3JkZXIuc3RhdGUpO1xuICAgIH07XG4gICAgdGhpcy5yZWNvcmRlci5vbmVycm9yID0gKGUpID0+IHtcbiAgICAgIHRoaXMucmVjb3JkaW5nU3RhdGUuZW1pdCh0aGlzLnJlY29yZGVyLnN0YXRlKTtcbiAgICAgIHRoaXMucmVjb3JkZXJFcnJvcmVkLmVtaXQoZSk7XG4gICAgfTtcbiAgfTtcblxuICBzdG9wUmVjb3JkaW5nKCkge1xuICAgIGlmICh0aGlzLnJlY29yZGVyLnN0YXRlID09PSAncmVjb3JkaW5nJykgdGhpcy5yZWNvcmRlci5zdG9wKCk7XG5cbiAgICB0aGlzLnByZXZpZXcuc2V0KHRydWUpO1xuICAgIHRoaXMuc3RyZWFtaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwYXVzZVJlY29yZGluZygpIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5yZWNvcmRlci5zdGF0ZSA9PT0gJ3BhdXNlZCcpIHRoaXMucmVjb3JkZXIucmVzdW1lKCk7XG4gICAgZWxzZSB0aGlzLnJlY29yZGVyLnBhdXNlKCk7XG4gIH1cblxuICBleHRyYWN0UmVjb3JkZWRWaWRlbygpIHtcbiAgICB0aGlzLnN0b3BSZWNvcmRpbmcoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBleHRyYWN0SW1hZ2UgPSBuZXcgT2JzZXJ2YWJsZTxJTWVkaWE+KChzdWIpID0+XG4gICAgdGhpcy5jYW52YXMhLnRvQmxvYihcbiAgICAgIChibG9iKSA9PiB7XG4gICAgICAgIGlmIChibG9iKSB7XG4gICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgdGhpcy5jb21wdXRlZEZpbGVOYW1lKCkpLFxuICAgICAgICAgICAgZGF0YVVSSSA9IHRoaXMuY2FudmFzIS50b0RhdGFVUkwodGhpcy5jb21wdXRlZEZpbGVUeXBlKCkpO1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIHN1Yi5uZXh0KHsgbGF0ZXN0RmlsZTogZmlsZSwgZGF0YVVSSSwgbGF0ZXN0QmxvYjogYmxvYiB9KTtcbiAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgfSBlbHNlIHN1Yi5lcnJvcihgTm8gJHt0aGlzLnN1YmplY3QoKX0gZmlsZSBnZW5lcmF0ZWRgKTtcbiAgICAgIH0sXG4gICAgICB0aGlzLmNvbXB1dGVkRmlsZVR5cGUoKSxcbiAgICAgIDEsXG4gICAgKSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgZXh0cmFjdEFuZFNldEltYWdlID0gdGhpcy5leHRyYWN0SW1hZ2UucGlwZShcbiAgICB0YXAoKHIpID0+IHRoaXMubWVkaWFGaWxlLnNldChyKSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdtZWRpYScsIHRoaXMubWVkaWFGaWxlKCksICdtZWRpYUZpbGVMaW5rJywgdGhpcy5tZWRpYUZpbGVMaW5rKCkpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pLFxuICApO1xufVxuXG50eXBlIElNZWRpYSA9IElXZWJjYW1NZWRpYTtcbiIsIjxsb2FkZXIgW2xvYWRpbmddPVwibG9hZGluZygpXCI+XG4gIDxkaXYgY2xhc3M9XCJcIiBbaGlkZGVuXT1cInN0cmVhbWluZygpICE9IHRydWUgfHwgaXNCYWNrZ3JvdW5kKClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RyZWFtVmlkZW9UZW1wXCIgLz5cblxuICAgIEBpZiAoIWlzQmFja2dyb3VuZCgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwid20tYnV0dG9uc1wiPlxuICAgICAgICBAaWYgKGNvbnRyb2xUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy1sZy1hdXRvIGctMyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICBAaWYgKCFpc1JlY29yZGluZygpKSB7XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImlzUGljdHVyZSgpID8gJ1Rha2UgUGljdHVyZScgOiAnUmVjb3JkIFZpZGVvJ1wiXG4gICAgICAgICAgICAgICAgICAobWNsaWNrKT1cImlzUGljdHVyZSgpID8gdGFrZVBpY3R1cmUoKSA6IHN0YXJ0UmVjb3JkaW5nKClcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICB0ZXh0PVwie3sgaXNQYXVzZWQoKSA/ICdQbGF5JyA6ICdQYXVzZScgfX0gUmVjb3JkaW5nXCJcbiAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwicGF1c2VSZWNvcmRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCJpc1BhdXNlZCgpID8gJ3BsYXknIDogJ3BhdXNlJ1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCInU3RvcCBSZWNvcmRpbmcnXCJcbiAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwic3RvcFJlY29yZGluZygpXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cInN0b3BcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI3N0cmVhbVZpZGVvVGVtcD5cbiAgICA8ZGl2IGNsYXNzPVwid20tcmVjb3JkaW5nLXZpZGVvLWNvbnRcIj5cbiAgICAgIDx2aWRlb1xuICAgICAgICAjcmVjb3JkaW5nVmlkZW9UYWdcbiAgICAgICAgW3NyY09iamVjdF09XCJzdHJlYW0oKVwiXG4gICAgICAgIGF1dG9wbGF5XG4gICAgICAgIGNsYXNzPVwid20tcmVjb3JkaW5nLXZpZGVvIHt7IGV4dHJhQ2xhc3MoKSB9fVwiPjwvdmlkZW8+XG4gICAgICBAaWYgKGlzUmVjb3JkaW5nKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIndtLXJlY29yZGluZ0RvdFwiPjwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIEBpZiAoY29tcHV0ZWRQcmV2aWV3KCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwid20tcHJldmlld1wiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAge3sgbWVkaWFGaWxlTGluaygpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAge3sgbWVkaWFGaWxlKCk/LmRhdGFVUkkgfX1cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICBAaWYgKGlzUGljdHVyZSgpKSB7XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwid2lkdGgoKVwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodCgpXCJcbiAgICAgICAgICAgIFtzcmNdPVwibWVkaWFGaWxlTGluaygpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0KClcIlxuICAgICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICAgIGF1dG9wbGF5XG4gICAgICAgICAgICBbc3JjXT1cIm1lZGlhRmlsZUxpbmsoKVwiPjwvdmlkZW8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm10LTMgcm93IHJvdy1jb2xzLWxnLWF1dG8ganVzdGlmeS1jb250ZW50LWNlbnRlciBnLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8YXBwLWJ0biB0ZXh0PVwiUmV0YWtlIHt7IHN1YmplY3QoKSB9fVwiIHR5cGU9XCJvdXRsaW5lXCIgKG1jbGljayk9XCJyZXRha2UoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxhcHAtYnRuIChtY2xpY2spPVwic2F2ZSgpXCIgdGV4dD1cIkRvbmVcIiB0eXBlPVwicHJpbWFyeVwiIGljb249XCJzYXZlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGFwcC1idG4gKG1jbGljayk9XCJjYW5jZWwoKVwiIHRleHQ9XCJDYW5jZWxcIiB0eXBlPVwiZGFuZ2VyXCIgaWNvbj1cImNhbmNlbFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvbG9hZGVyPlxuIl19
@@ -46,14 +46,14 @@ export class CommafyNumberDirective {
46
46
  registerOnTouched(fn) {
47
47
  }
48
48
  _onChange(value) { }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: CommafyNumberDirective, deps: [{ token: i0.ElementRef }, { token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Directive }); }
50
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.8", type: CommafyNumberDirective, selector: "[appCommafyNumber]", inputs: { disableInput: ["disabled", "disableInput"], value: "value" }, host: { listeners: { "input": "onInput($event.target.value)", "focus": "onFocus()" } }, providers: [{
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CommafyNumberDirective, deps: [{ token: i0.ElementRef }, { token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Directive }); }
50
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0", type: CommafyNumberDirective, selector: "[appCommafyNumber]", inputs: { disableInput: ["disabled", "disableInput"], value: "value" }, host: { listeners: { "input": "onInput($event.target.value)", "focus": "onFocus()" } }, providers: [{
51
51
  provide: NG_VALUE_ACCESSOR,
52
52
  useExisting: CommafyNumberDirective,
53
53
  multi: true,
54
54
  }], usesOnChanges: true, ngImport: i0 }); }
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: CommafyNumberDirective, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CommafyNumberDirective, decorators: [{
57
57
  type: Directive,
58
58
  args: [{
59
59
  selector: '[appCommafyNumber]',
@@ -33,10 +33,10 @@ export class DragDropFileUploadDirective {
33
33
  this.fileDropped = new EventEmitter();
34
34
  this.background = '#ffffff';
35
35
  }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DragDropFileUploadDirective, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Directive }); }
37
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.8", type: DragDropFileUploadDirective, isStandalone: true, selector: "[libDragDropFileUpload]", inputs: { multiple: "multiple" }, outputs: { fileDropped: "fileDropped" }, host: { listeners: { "dragover": "dragOver($event)", "dragleave": "dragLeave($event)", "drop": "drop($event)" }, properties: { "style.background-color": "this.background" } }, ngImport: i0 }); }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DragDropFileUploadDirective, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Directive }); }
37
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0", type: DragDropFileUploadDirective, isStandalone: true, selector: "[libDragDropFileUpload]", inputs: { multiple: "multiple" }, outputs: { fileDropped: "fileDropped" }, host: { listeners: { "dragover": "dragOver($event)", "dragleave": "dragLeave($event)", "drop": "drop($event)" }, properties: { "style.background-color": "this.background" } }, ngImport: i0 }); }
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DragDropFileUploadDirective, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: DragDropFileUploadDirective, decorators: [{
40
40
  type: Directive,
41
41
  args: [{
42
42
  selector: '[libDragDropFileUpload]',
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
59
59
  type: HostListener,
60
60
  args: ['drop', ['$event']]
61
61
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLWZpbGUtdXBsb2FkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvZGlyZWN0aXZlcy9kcmFnLWRyb3AtZmlsZS11cGxvYWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7O0FBUXZCLE1BQU0sT0FBTywyQkFBMkI7SUFJdEMsaUJBQWlCO0lBQ3FCLFFBQVEsQ0FBQyxLQUFVO1FBQ3ZELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUNELGtCQUFrQjtJQUM0QixTQUFTLENBQUMsS0FBVTtRQUNoRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFDRCxhQUFhO0lBQzRCLElBQUksQ0FBQyxLQUFVO1FBQ3RELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNO1lBQUUsT0FBTztRQUMzQixJQUFJLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFlBQW1CLEVBQWtCO1FBQWxCLE9BQUUsR0FBRixFQUFFLENBQWdCO1FBNUIzQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDSixlQUFVLEdBQUcsU0FBUyxDQUFDO0lBMkI5QixDQUFDOzhHQTlCOUIsMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7aUJBQ25CO21GQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDd0MsVUFBVTtzQkFBeEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBRUMsUUFBUTtzQkFBN0MsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTVUsU0FBUztzQkFBdEQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTUksSUFBSTtzQkFBNUMsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbGliRHJhZ0Ryb3BGaWxlVXBsb2FkXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEcmFnRHJvcEZpbGVVcGxvYWREaXJlY3RpdmUge1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcbiAgQE91dHB1dCgpIGZpbGVEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlW10+KCk7XG4gIEBIb3N0QmluZGluZygnc3R5bGUuYmFja2dyb3VuZC1jb2xvcicpIHByaXZhdGUgYmFja2dyb3VuZCA9ICcjZmZmZmZmJztcbiAgLy8gRHJhZ292ZXIgRXZlbnRcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKSBkcmFnT3ZlcihldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmJhY2tncm91bmQgPSAnI2UyZWVmZCc7XG4gIH1cbiAgLy8gRHJhZ2xlYXZlIEV2ZW50XG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50J10pIHB1YmxpYyBkcmFnTGVhdmUoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5iYWNrZ3JvdW5kID0gJyNmZmZmZmYnO1xuICB9XG4gIC8vIERyb3AgRXZlbnRcbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pIHB1YmxpYyBkcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYmFja2dyb3VuZCA9ICcjZjhmOGY4JztcbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcztcbiAgICBpZiAoIWZpbGVzPy5sZW5ndGgpIHJldHVybjtcbiAgICBpZiAoZmlsZXM/Lmxlbmd0aCA+IDEgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudVMuaW5mbyhgUGxlYXNlIGRyYWcgYW5kIGRyb3AgYSBzaW5nbGUgZmlsZWAsIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZpbGVEcm9wcGVkLmVtaXQoQXJyYXkuZnJvbShmaWxlcykpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSkge31cbn0iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLWZpbGUtdXBsb2FkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvZGlyZWN0aXZlcy9kcmFnLWRyb3AtZmlsZS11cGxvYWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7O0FBUXZCLE1BQU0sT0FBTywyQkFBMkI7SUFJdEMsaUJBQWlCO0lBQ3FCLFFBQVEsQ0FBQyxLQUFVO1FBQ3ZELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUNELGtCQUFrQjtJQUM0QixTQUFTLENBQUMsS0FBVTtRQUNoRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFDRCxhQUFhO0lBQzRCLElBQUksQ0FBQyxLQUFVO1FBQ3RELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNO1lBQUUsT0FBTztRQUMzQixJQUFJLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxZQUFtQixFQUFrQjtRQUFsQixPQUFFLEdBQUYsRUFBRSxDQUFnQjtRQTVCM0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ0osZUFBVSxHQUFHLFNBQVMsQ0FBQztJQTJCOUIsQ0FBQzs4R0E5QjlCLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjttRkFFVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ3dDLFVBQVU7c0JBQXhELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUVDLFFBQVE7c0JBQTdDLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1VLFNBQVM7c0JBQXRELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1JLElBQUk7c0JBQTVDLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2xpYkRyYWdEcm9wRmlsZVVwbG9hZF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRHJhZ0Ryb3BGaWxlVXBsb2FkRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBmaWxlRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVtdPigpO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmJhY2tncm91bmQtY29sb3InKSBwcml2YXRlIGJhY2tncm91bmQgPSAnI2ZmZmZmZic7XG4gIC8vIERyYWdvdmVyIEV2ZW50XG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSkgZHJhZ092ZXIoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5iYWNrZ3JvdW5kID0gJyNlMmVlZmQnO1xuICB9XG4gIC8vIERyYWdsZWF2ZSBFdmVudFxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKSBwdWJsaWMgZHJhZ0xlYXZlKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuYmFja2dyb3VuZCA9ICcjZmZmZmZmJztcbiAgfVxuICAvLyBEcm9wIEV2ZW50XG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKSBwdWJsaWMgZHJvcChldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmJhY2tncm91bmQgPSAnI2Y4ZjhmOCc7XG4gICAgY29uc3QgZmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgaWYgKCFmaWxlcz8ubGVuZ3RoKSByZXR1cm47XG4gICAgaWYgKGZpbGVzPy5sZW5ndGggPiAxICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnVTLmluZm8oYFBsZWFzZSBkcmFnIGFuZCBkcm9wIGEgc2luZ2xlIGZpbGVgLCAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maWxlRHJvcHBlZC5lbWl0KEFycmF5LmZyb20oZmlsZXMpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UpIHt9XG59Il19
@@ -21,10 +21,10 @@ export class FormInvalidClassDirective {
21
21
  ngOnDestroy() {
22
22
  this.sub?.unsubscribe();
23
23
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormInvalidClassDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
25
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.8", type: FormInvalidClassDirective, isStandalone: true, selector: "[formInvalidClass]", inputs: { formInvalidClass: "formInvalidClass", includedNames: "includedNames" }, ngImport: i0 }); }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FormInvalidClassDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
25
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0", type: FormInvalidClassDirective, isStandalone: true, selector: "[formInvalidClass]", inputs: { formInvalidClass: "formInvalidClass", includedNames: "includedNames" }, ngImport: i0 }); }
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormInvalidClassDirective, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: FormInvalidClassDirective, decorators: [{
28
28
  type: Directive,
29
29
  args: [{
30
30
  selector: '[formInvalidClass]',