keevo-components 1.8.355 → 1.8.356

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 (147) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/api/base-components/base-component-button.mjs +1 -1
  3. package/esm2022/lib/api/base-components/base-component-chart.mjs +1 -1
  4. package/esm2022/lib/api/base-components/base-component-crud-form.mjs +1 -1
  5. package/esm2022/lib/api/base-components/base-component-crud-list.mjs +1 -1
  6. package/esm2022/lib/api/base-components/base-component-crud.mjs +1 -1
  7. package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +1 -1
  8. package/esm2022/lib/api/base-components/base-component-dropdown.mjs +1 -1
  9. package/esm2022/lib/api/base-components/base-component-input.mjs +1 -1
  10. package/esm2022/lib/api/base-components/base-component-multi-select.mjs +1 -1
  11. package/esm2022/lib/api/base-components/base-component-table.mjs +1 -1
  12. package/esm2022/lib/api/base-components/base-component.mjs +1 -1
  13. package/esm2022/lib/api/components/chart/chart.config.mjs +1 -1
  14. package/esm2022/lib/api/components/chart/chart.model.mjs +1 -1
  15. package/esm2022/lib/api/components/chart/orchart.config.mjs +1 -1
  16. package/esm2022/lib/api/components/chart/orchartnode.mjs +1 -1
  17. package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +1 -1
  18. package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +1 -1
  19. package/esm2022/lib/api/components/table/action-item.mjs +1 -1
  20. package/esm2022/lib/api/components/table/kv-menuitem.mjs +1 -1
  21. package/esm2022/lib/api/components/table/table-dropdown-control.mjs +1 -1
  22. package/esm2022/lib/api/components/table/table.config.column.mjs +1 -1
  23. package/esm2022/lib/api/components/table/table.config.mjs +1 -1
  24. package/esm2022/lib/api/components/table/table.paginate.mjs +1 -1
  25. package/esm2022/lib/api/components/table/tabledit.config.mjs +1 -1
  26. package/esm2022/lib/api/components/table/tableedit.config.column.mjs +1 -1
  27. package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +1 -1
  28. package/esm2022/lib/api/directives/directives.module.mjs +1 -1
  29. package/esm2022/lib/api/directives/drag/drag.directive.mjs +1 -1
  30. package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +1 -1
  31. package/esm2022/lib/api/directives/template/template.directive.mjs +1 -1
  32. package/esm2022/lib/api/helpers/component-providers.mjs +1 -1
  33. package/esm2022/lib/api/helpers/keevo-validators.mjs +1 -1
  34. package/esm2022/lib/api/helpers/translate-primeng.mjs +1 -1
  35. package/esm2022/lib/api/modules/primeng.module.mjs +1 -1
  36. package/esm2022/lib/api/pipes/capitalize.pipe.mjs +1 -1
  37. package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +1 -1
  38. package/esm2022/lib/api/pipes/mask.pipe.mjs +1 -1
  39. package/esm2022/lib/api/pipes/pipes.module.mjs +1 -1
  40. package/esm2022/lib/api/pipes/telefone.pipe.mjs +1 -1
  41. package/esm2022/lib/api/services/base.api.service.mjs +1 -1
  42. package/esm2022/lib/api/services/breadcrumbs.service.mjs +1 -1
  43. package/esm2022/lib/api/services/chat.service.mjs +1 -1
  44. package/esm2022/lib/api/services/component.service.mjs +1 -1
  45. package/esm2022/lib/api/services/docs.service.mjs +1 -1
  46. package/esm2022/lib/api/services/form.service.mjs +1 -1
  47. package/esm2022/lib/api/services/image.cutter.service.mjs +43 -43
  48. package/esm2022/lib/api/services/imagens.service.mjs +1 -1
  49. package/esm2022/lib/api/services/notification.service.mjs +1 -1
  50. package/esm2022/lib/api/services/object.service.mjs +1 -1
  51. package/esm2022/lib/api/services/orgchart.service.mjs +1 -1
  52. package/esm2022/lib/api/types/breadcrumb.model.mjs +1 -1
  53. package/esm2022/lib/api/types/severity.mjs +1 -1
  54. package/esm2022/lib/components/keevo-components.module.mjs +1 -1
  55. package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +3 -3
  56. package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +1 -1
  57. package/esm2022/lib/components/kv-button/kv-button.component.mjs +3 -3
  58. package/esm2022/lib/components/kv-button/kv-button.module.mjs +1 -1
  59. package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +3 -3
  60. package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +3 -3
  61. package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +3 -3
  62. package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +3 -3
  63. package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +1 -1
  64. package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +3 -3
  65. package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +1 -1
  66. package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +3 -3
  67. package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +1 -1
  68. package/esm2022/lib/components/kv-error/kv-error.component.mjs +3 -3
  69. package/esm2022/lib/components/kv-error/kv-error.module.mjs +1 -1
  70. package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +3 -3
  71. package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +1 -1
  72. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +3 -3
  73. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +1 -1
  74. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.mjs +3 -3
  75. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.mjs +1 -1
  76. package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +3 -3
  77. package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +1 -1
  78. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +3 -3
  79. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +1 -1
  80. package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +1 -1
  81. package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +1 -1
  82. package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +3 -3
  83. package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +1 -1
  84. package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +3 -3
  85. package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +1 -1
  86. package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +3 -3
  87. package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +3 -3
  88. package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +3 -3
  89. package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +3 -3
  90. package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +3 -3
  91. package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +3 -3
  92. package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +3 -3
  93. package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +3 -3
  94. package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +3 -3
  95. package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +3 -3
  96. package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +3 -3
  97. package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +1 -1
  98. package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +3 -3
  99. package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +3 -3
  100. package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +3 -3
  101. package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +3 -3
  102. package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +3 -3
  103. package/esm2022/lib/components/kv-label/kv-label.component.mjs +3 -3
  104. package/esm2022/lib/components/kv-label/kv-label.module.mjs +1 -1
  105. package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +3 -3
  106. package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +1 -1
  107. package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +3 -3
  108. package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +3 -3
  109. package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +1 -1
  110. package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +1 -1
  111. package/esm2022/lib/components/kv-login/kv-login.component.mjs +3 -3
  112. package/esm2022/lib/components/kv-login/kv-login.module.mjs +1 -1
  113. package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +3 -3
  114. package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +1 -1
  115. package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +11 -11
  116. package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +1 -1
  117. package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +3 -3
  118. package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +1 -1
  119. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +3 -3
  120. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +1 -1
  121. package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +3 -3
  122. package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +1 -1
  123. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +3 -3
  124. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +1 -1
  125. package/esm2022/lib/components/kv-report/kv-report.component.mjs +3 -3
  126. package/esm2022/lib/components/kv-report/kv-report.module.mjs +1 -1
  127. package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +3 -3
  128. package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +1 -1
  129. package/esm2022/lib/components/kv-table/kv-table.component.mjs +3 -3
  130. package/esm2022/lib/components/kv-table/kv-table.module.mjs +1 -1
  131. package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +3 -3
  132. package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +1 -1
  133. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +3 -3
  134. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +1 -1
  135. package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +3 -3
  136. package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +1 -1
  137. package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +3 -3
  138. package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +1 -1
  139. package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +3 -3
  140. package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +1 -1
  141. package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +3 -3
  142. package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +3 -3
  143. package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +3 -3
  144. package/esm2022/public-api.mjs +1 -1
  145. package/fesm2022/keevo-components.mjs +158 -158
  146. package/fesm2022/keevo-components.mjs.map +1 -1
  147. package/package.json +1 -1
@@ -196,11 +196,11 @@ export class KvLayoutComponent {
196
196
  return this.expandMenu() ? 'expanded' : 'collapsed';
197
197
  }
198
198
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvLayoutComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FormBuilder }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
199
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvLayoutComponent, selector: "kv-layout", inputs: { apps: { classPropertyName: "apps", publicName: "apps", isSignal: false, isRequired: false, transformFunction: null }, breadCrumbItems: { classPropertyName: "breadCrumbItems", publicName: "breadCrumbItems", isSignal: false, isRequired: false, transformFunction: null }, masters: { classPropertyName: "masters", publicName: "masters", isSignal: false, isRequired: false, transformFunction: null }, menus: { classPropertyName: "menus", publicName: "menus", isSignal: false, isRequired: false, transformFunction: null }, expandMenu: { classPropertyName: "expandMenu", publicName: "expandMenu", isSignal: true, isRequired: false, transformFunction: null }, logoMenuExpand: { classPropertyName: "logoMenuExpand", publicName: "logoMenuExpand", isSignal: false, isRequired: false, transformFunction: null }, logoMenuHide: { classPropertyName: "logoMenuHide", publicName: "logoMenuHide", isSignal: false, isRequired: false, transformFunction: null }, selectedApp: { classPropertyName: "selectedApp", publicName: "selectedApp", isSignal: false, isRequired: false, transformFunction: null }, selectedEmpresa: { classPropertyName: "selectedEmpresa", publicName: "selectedEmpresa", isSignal: false, isRequired: false, transformFunction: null }, selectedMaster: { classPropertyName: "selectedMaster", publicName: "selectedMaster", isSignal: false, isRequired: false, transformFunction: null }, showButtonApps: { classPropertyName: "showButtonApps", publicName: "showButtonApps", isSignal: false, isRequired: false, transformFunction: null }, showButtonUser: { classPropertyName: "showButtonUser", publicName: "showButtonUser", isSignal: false, isRequired: false, transformFunction: null }, showExpandMenu: { classPropertyName: "showExpandMenu", publicName: "showExpandMenu", isSignal: false, isRequired: false, transformFunction: null }, showDropdownLicenca: { classPropertyName: "showDropdownLicenca", publicName: "showDropdownLicenca", isSignal: false, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: false, isRequired: false, transformFunction: null }, showTrocaEmpresa: { classPropertyName: "showTrocaEmpresa", publicName: "showTrocaEmpresa", isSignal: false, isRequired: false, transformFunction: null }, userName: { classPropertyName: "userName", publicName: "userName", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { expandMenu: "expandMenuChange", accessKeePassEmit: "accessKeePassEmit", changeEmpresaEmit: "changeEmpresaEmit", changeLicenseEmit: "changeLicenseEmit", expandMenuEmit: "expandMenuEmit", logoutEmit: "logoutEmit", selectAppEmit: "selectAppEmit", navigateToDefaultRouteEmit: "navigateToDefaultRouteEmit" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "topMenuActions", predicate: ["topMenuAction"], isSignal: true }], viewQueries: [{ propertyName: "meusDadosPanel", first: true, predicate: ["meusDadosPanel"], descendants: true }, { propertyName: "sidebarRef", first: true, predicate: ["sidebarRef"], descendants: true }, { propertyName: "sistemasPanel", first: true, predicate: ["sistemasPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\r\n @if (showMenu) {\r\n <div [style]=\"{ minWidth: expandMenu() ? '300px' : '60px' }\"></div>\r\n } @if(showMenu) {\r\n <p-sidebar\r\n #sidebarRef\r\n [visible]=\"true\"\r\n [showCloseIcon]=\"false\"\r\n [modal]=\"false\"\r\n [style]=\"{ width: expandMenu() ? '300px' : '60px' }\"\r\n class=\"sidebar-animation\"\r\n >\r\n <ng-template pTemplate=\"headless\">\r\n <div class=\"flex flex-column overflow-hidden\">\r\n <div\r\n class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2 overflow-hidden\"\r\n >\r\n <div\r\n class=\"flex {{\r\n expandMenu() ? 'flex-row' : 'flex-column'\r\n }} align-items-center {{\r\n expandMenu()\r\n ? 'justify-content-between'\r\n : 'justify-content-center'\r\n }} py-3\"\r\n >\r\n <!-- Logo para o menu expandido -->\r\n <img\r\n *ngIf=\"expandMenu() && logoMenuExpand\"\r\n alt=\"Card\"\r\n [src]=\"logoMenuExpand\"\r\n height=\"50\"\r\n width=\"auto\"\r\n class=\"cursor-pointer p-1\"\r\n (click)=\"navigateToDefaultRoute()\"\r\n />\r\n\r\n <!-- Logo para o menu minimizado-->\r\n <img\r\n *ngIf=\"!expandMenu() && logoMenuHide\"\r\n alt=\"Card\"\r\n [src]=\"logoMenuHide\"\r\n height=\"50\"\r\n width=\"auto\"\r\n class=\"mb-2 p-1\"\r\n (click)=\"navigateToDefaultRoute()\"\r\n />\r\n\r\n <!-- Toggle menu -->\r\n <button\r\n *ngIf=\"showExpandMenu\"\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"toggleMenu()\"\r\n [pTooltip]=\"expandMenu() ? 'Ocultar Menu' : 'Expandir Menu'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\"> menu </i>\r\n </button>\r\n </div>\r\n\r\n @if(showTrocaEmpresa){\r\n <div\r\n class=\"flex flex-row align-items-center {{\r\n expandMenu()\r\n ? 'justify-content-between'\r\n : 'justify-content-center'\r\n }}\"\r\n >\r\n <div\r\n class=\"flex flex-column cursor-pointer\"\r\n *ngIf=\"expandMenu() && selectedEmpresa\"\r\n (click)=\"changeEmpresa($event)\"\r\n >\r\n <span\r\n class=\"text-sm font-semibold mr-2\"\r\n [pTooltip]=\"this.selectedEmpresa.razaosocial\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n {{ nameEmpresa(this.selectedEmpresa.razaosocial) }}\r\n </span>\r\n <span class=\"text-sm mt-1\">{{\r\n this.selectedEmpresa.cpfcnpj | cpfCnpj\r\n }}</span>\r\n </div>\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"changeEmpresa($event)\"\r\n [pTooltip]=\"'Trocar de empresa'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\"> sync_alt </i>\r\n </button>\r\n </div>\r\n <p-divider type=\"solid\"></p-divider>\r\n }\r\n </div>\r\n\r\n <div class=\"list-none m-0 card-container overflow-y-auto max-h-full\">\r\n <!-- menus -->\r\n <li\r\n *ngFor=\"let menu of menus; let i = index\"\r\n [class]=\"expandMenu() ? 'px-2' : 'px-1'\"\r\n >\r\n <!-- menu que n\u00E3o tem filho -->\r\n <a\r\n (click)=\"callRoute(menu.link)\"\r\n *ngIf=\"\r\n !menu.indmenupai && (!menu.idmenupai || menu.idmenupai == 0)\r\n \"\r\n pRipple\r\n [pTooltip]=\"!expandMenu() ? menu.descricaomenu : ''\"\r\n [tooltipPosition]=\"'right'\"\r\n class=\"{{\r\n menu.bgColor\r\n }} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n [class.justify-content-center]=\"!expandMenu()\"\r\n >\r\n <i\r\n class=\"content-option-menu material-symbols-outlined icon-menu {{\r\n expandMenu() ? 'ml-1 mr-2' : ''\r\n }} icon-hover-color {{ menu.textColor }}\"\r\n *ngIf=\"menu.icone\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"content-option-menu text-base text-blue-900 font-medium {{\r\n menu.textColor\r\n }}\"\r\n *ngIf=\"expandMenu()\"\r\n >{{ menu.descricaomenu }}</span\r\n >\r\n </a>\r\n <!-- menu com filho -->\r\n <div *ngIf=\"menu.indmenupai\">\r\n <a\r\n pRipple\r\n pStyleClass=\"@next\"\r\n enterClass=\"hidden\"\r\n enterActiveClass=\"slidedown\"\r\n leaveToClass=\"hidden\"\r\n leaveActiveClass=\"slideup\"\r\n [class.bg-green-600]=\"isSelectedMenuPai(menu)\"\r\n class=\"menu-option flex align-items-center {{\r\n !expandMenu()\r\n ? 'justify-content-center'\r\n : 'justify-content-between'\r\n }} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n [tooltipPosition]=\"'right'\"\r\n [pTooltip]=\"!expandMenu() ? menu.descricaomenu : ''\"\r\n (click)=\"\r\n expandMenu.set(!expandMenu() ? !expandMenu() : expandMenu())\r\n \"\r\n >\r\n <div class=\"flex flex-row align-items-center\">\r\n <i\r\n class=\"content-option-menu material-symbols-outlined icon-menu {{\r\n expandMenu() ? 'ml-1 mr-2' : ''\r\n }} icon-hover-color\"\r\n *ngIf=\"menu.icone\"\r\n [class.text-white]=\"isSelectedMenuPai(menu)\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium content-option-menu\"\r\n *ngIf=\"expandMenu()\"\r\n >{{ menu.descricaomenu }}</span\r\n >\r\n </div>\r\n <i\r\n class=\"pi pi-chevron-down text-blue-900 mr-1 icon-hover-color content-option-menu\"\r\n *ngIf=\"expandMenu()\"\r\n ></i>\r\n </a>\r\n\r\n <!-- filhos -->\r\n <div\r\n class=\"list-none py-0 pl-3 pr-0 m-0 {{\r\n !(\r\n menuSelecionado()?.idmenupai == menu.idmenu &&\r\n this.expandMenu()\r\n ) && 'hidden'\r\n }} overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\r\n >\r\n <li\r\n *ngFor=\"\r\n let filho of returnMenuChild(menu.idmenu);\r\n let iFilho = index\r\n \"\r\n >\r\n <a\r\n *ngIf=\"expandMenu()\"\r\n (click)=\"callRoute(filho.link)\"\r\n pRipple\r\n class=\"{{\r\n filho.bgColor\r\n }} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\r\n >\r\n <i\r\n class=\"content-option-menu material-symbols-outlined icon-menu {{\r\n expandMenu() ? 'ml-1 mr-2' : ''\r\n }} icon-hover-color\"\r\n *ngIf=\"filho.icone\"\r\n >\r\n {{ filho.icone }}\r\n </i>\r\n <span\r\n class=\"content-option-menu text-base text-blue-900 ml-4 {{\r\n filho.textColor\r\n }}\"\r\n *ngIf=\"expandMenu()\"\r\n >{{ filho.descricaomenu }}</span\r\n >\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n </li>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-sidebar>\r\n }\r\n\r\n <!-- Topbar -->\r\n <div\r\n class=\"w-auto h-screen page-content overflow-y-hidden\"\r\n id=\"page-content\"\r\n style=\"width: 100vw !important\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap align-items-center justify-content-between m-3\"\r\n >\r\n @if(!showMenu) {\r\n <!-- Logo home -->\r\n <div>\r\n <img [src]=\"logoMenuExpand\" width=\"150\" />\r\n </div>\r\n } @else {\r\n <!-- Breadcrumbs -->\r\n <div>\r\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">\r\n {{ breadCrumbItems[breadCrumbItems.length - 1]?.label }}\r\n </p>\r\n <p-breadcrumb\r\n *ngIf=\"widthCard > 400\"\r\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\r\n [model]=\"breadCrumbItems\"\r\n [style]=\"{ backgroundColor: '#eaeaea' }\"\r\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\r\n ></p-breadcrumb>\r\n </div>\r\n } \r\n \r\n @if(widthCard > 992){\r\n <!-- dropdown para sele\u00E7\u00E3o de empresa/licenca -->\r\n <dropdown-master\r\n *ngIf=\"showLicencas()\"\r\n class=\"w-40rem\"\r\n formControlName=\"idmaster\"\r\n [formGroup]=\"formGroup\"\r\n [masters]=\"masters\"\r\n (onSelectionChange)=\"changeLicense($event)\"\r\n (onSelectionValue)=\"changeLicense($event)\"\r\n >\r\n </dropdown-master>\r\n }\r\n\r\n <!-- Navega\u00E7\u00E3o de sistemas e usu\u00E1rios -->\r\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\r\n @for (topAction of topMenuActions(); track $index) {\r\n <ng-container *ngTemplateOutlet=\"topAction\" />\r\n }\r\n\r\n <p-button\r\n *ngIf=\"showButtonApps\"\r\n styleClass=\"w-2rem h-2rem text-blue-900 hover:bg-green-600 hover:text-white\"\r\n icon=\"pi pi-th-large\"\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n (click)=\"sistemasPanel.toggle($event)\"\r\n [pTooltip]=\"'Sistemas'\"\r\n [tooltipPosition]=\"'left'\"\r\n ></p-button>\r\n\r\n <p-button\r\n *ngIf=\"showButtonUser\"\r\n styleClass=\"w-2rem h-2rem text-blue-900 hover:bg-green-600 hover:text-white\"\r\n icon=\"pi pi-user\"\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\r\n [tooltipPosition]=\"'left'\"\r\n (click)=\"meusDadosPanel.toggle($event)\"\r\n ></p-button>\r\n </div>\r\n\r\n @if(widthCard < 992){\r\n <!-- dropdown para sele\u00E7\u00E3o de empresa/licenca -->\r\n <dropdown-master\r\n *ngIf=\"showLicencas()\"\r\n class=\"w-full\"\r\n formControlName=\"idmaster\"\r\n [formGroup]=\"formGroup\"\r\n [masters]=\"masters\"\r\n (onSelectionChange)=\"changeLicense($event)\"\r\n (onSelectionValue)=\"changeLicense($event)\"\r\n >\r\n </dropdown-master>\r\n }\r\n </div>\r\n\r\n <!-- Container -->\r\n <p-card\r\n styleClass=\"m-3 overflow-y-auto {{\r\n !showMenu && 'sm:overflow-y-hidden'\r\n }} card-container\"\r\n [style]=\"{ height: heightCard - adjustHeightCard() + 'px' }\"\r\n >\r\n <div class=\"{{ widthCard < 992 && 'card-container' }} w-full h-full\">\r\n <ng-content></ng-content>\r\n </div>\r\n </p-card>\r\n </div>\r\n\r\n <!-- Painel de aplicativos -->\r\n <p-overlayPanel\r\n #sistemasPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n >\r\n <ng-template pTemplate=\"container\">\r\n <p class=\"title-style mt-3\">Sistemas</p>\r\n\r\n <div\r\n class=\"flex flex-row flex-wrap gap-3 align-items-center justify-content-center mt-5 mb-3\"\r\n style=\"width: 270px; height: 100%\"\r\n >\r\n @for (aplicativo of apps; track $index) { @if(aplicativo.urlicone ==\r\n \"https://work-assets.keevo.com.br/img/icone-keevocenter.png\") {\r\n <div\r\n class=\"btn-sistema text-xl md:text-3xl flex align-items-center justify-content-center\"\r\n (click)=\"selectApp(aplicativo.idaplicativo)\"\r\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n {{ aplicativo.descricaoaplicativo.charAt(0).toLocaleUpperCase() }}\r\n </div>\r\n } @else {\r\n <img\r\n [src]=\"aplicativo.urlicone\"\r\n class=\"btn-sistema flex align-items-center justify-content-center\"\r\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\r\n [tooltipPosition]=\"'left'\"\r\n (click)=\"selectApp(aplicativo.idaplicativo)\"\r\n />\r\n } }\r\n\r\n <!-- <button\r\n *ngFor=\"let aplicativo of apps\"\r\n pButton\r\n pRipple\r\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\r\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\r\n [tooltipPosition]=\"'left'\"\r\n (click)=\"selectApp(aplicativo.idaplicativo)\"\r\n >\r\n {{ aplicativo.nomeaplicativo.charAt(0).toUpperCase() }}\r\n </button> -->\r\n </div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n\r\n <!-- Painel do usu\u00E1rio -->\r\n <p-overlayPanel\r\n #meusDadosPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n >\r\n <ng-template pTemplate=\"container\">\r\n <p class=\"title-style mt-3\">\r\n Ol\u00E1, {{ userName ? userName.split(\" \")[0] : \"Usu\u00E1rio\" }}!\r\n </p>\r\n <div class=\"mt-5 mb-3\"></div>\r\n\r\n <p-button\r\n icon=\"pi pi-lock\"\r\n label=\"Acessar Keepass\"\r\n (onClick)=\"accessKeePass($event)\"\r\n styleClass=\"border-noround w-full text-blue-900\"\r\n [text]=\"true\"\r\n >\r\n </p-button>\r\n\r\n <p-button\r\n icon=\"pi pi-sign-out\"\r\n label=\"Sair\"\r\n (onClick)=\"logout($event)\"\r\n styleClass=\"border-noround w-full text-blue-900\"\r\n [text]=\"true\"\r\n >\r\n </p-button>\r\n </ng-template>\r\n </p-overlayPanel>\r\n</div>\r\n", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px;color:#0c3e66!important}.page-content{background:linear-gradient(to bottom,#eaeaea 17%,#fff 19%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:Inter var,Roboto,Arial,Helvetica,sans-serif!important}span{font-size:.9rem!important}.breadcrumb-title{font-size:1rem!important;font-family:Inter var,Roboto,Arial,Helvetica,sans-serif!important}::ng-deep .home-style{background-color:#eaeaea;overflow:hidden}::ng-deep .page-style{overflow:auto!important}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb .p-breadcrumb-list .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb .p-breadcrumb-list .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}.hover-color .text-base,.hover-color .icon-hover-color,.menu-option:hover .content-option-menu{color:#fff!important}::ng-deep .p-card .p-card-body{padding:0rem!important}::ng-deep .p-card .p-card-content{padding:0rem!important}::ng-deep .p-sidebar-left{z-index:1100!important}.btn-sistema{display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;cursor:pointer;width:4rem;height:4rem;background-color:#002542;color:#fff;padding:.5rem;box-shadow:#00000059 0 0 4px;border-radius:.75rem;transition:box-shadow .3s ease-in-out}.btn-sistema:hover{opacity:.9;box-shadow:#0009 0 0 8px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i7.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i8.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: i9.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "component", type: i10.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i11.Ripple, selector: "[pRipple]" }, { kind: "component", type: i12.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i13.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i14.DropdownMasterComponent, selector: "dropdown-master", inputs: ["formControlName", "masters"] }, { kind: "pipe", type: i15.CpfCnpjPipe, name: "cpfCnpj" }] }); }
199
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvLayoutComponent, selector: "kv-layout", inputs: { apps: { classPropertyName: "apps", publicName: "apps", isSignal: false, isRequired: false, transformFunction: null }, breadCrumbItems: { classPropertyName: "breadCrumbItems", publicName: "breadCrumbItems", isSignal: false, isRequired: false, transformFunction: null }, masters: { classPropertyName: "masters", publicName: "masters", isSignal: false, isRequired: false, transformFunction: null }, menus: { classPropertyName: "menus", publicName: "menus", isSignal: false, isRequired: false, transformFunction: null }, expandMenu: { classPropertyName: "expandMenu", publicName: "expandMenu", isSignal: true, isRequired: false, transformFunction: null }, logoMenuExpand: { classPropertyName: "logoMenuExpand", publicName: "logoMenuExpand", isSignal: false, isRequired: false, transformFunction: null }, logoMenuHide: { classPropertyName: "logoMenuHide", publicName: "logoMenuHide", isSignal: false, isRequired: false, transformFunction: null }, selectedApp: { classPropertyName: "selectedApp", publicName: "selectedApp", isSignal: false, isRequired: false, transformFunction: null }, selectedEmpresa: { classPropertyName: "selectedEmpresa", publicName: "selectedEmpresa", isSignal: false, isRequired: false, transformFunction: null }, selectedMaster: { classPropertyName: "selectedMaster", publicName: "selectedMaster", isSignal: false, isRequired: false, transformFunction: null }, showButtonApps: { classPropertyName: "showButtonApps", publicName: "showButtonApps", isSignal: false, isRequired: false, transformFunction: null }, showButtonUser: { classPropertyName: "showButtonUser", publicName: "showButtonUser", isSignal: false, isRequired: false, transformFunction: null }, showExpandMenu: { classPropertyName: "showExpandMenu", publicName: "showExpandMenu", isSignal: false, isRequired: false, transformFunction: null }, showDropdownLicenca: { classPropertyName: "showDropdownLicenca", publicName: "showDropdownLicenca", isSignal: false, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: false, isRequired: false, transformFunction: null }, showTrocaEmpresa: { classPropertyName: "showTrocaEmpresa", publicName: "showTrocaEmpresa", isSignal: false, isRequired: false, transformFunction: null }, userName: { classPropertyName: "userName", publicName: "userName", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { expandMenu: "expandMenuChange", accessKeePassEmit: "accessKeePassEmit", changeEmpresaEmit: "changeEmpresaEmit", changeLicenseEmit: "changeLicenseEmit", expandMenuEmit: "expandMenuEmit", logoutEmit: "logoutEmit", selectAppEmit: "selectAppEmit", navigateToDefaultRouteEmit: "navigateToDefaultRouteEmit" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "topMenuActions", predicate: ["topMenuAction"], isSignal: true }], viewQueries: [{ propertyName: "meusDadosPanel", first: true, predicate: ["meusDadosPanel"], descendants: true }, { propertyName: "sidebarRef", first: true, predicate: ["sidebarRef"], descendants: true }, { propertyName: "sistemasPanel", first: true, predicate: ["sistemasPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\n @if (showMenu) {\n <div [style]=\"{ minWidth: expandMenu() ? '300px' : '60px' }\"></div>\n } @if(showMenu) {\n <p-sidebar\n #sidebarRef\n [visible]=\"true\"\n [showCloseIcon]=\"false\"\n [modal]=\"false\"\n [style]=\"{ width: expandMenu() ? '300px' : '60px' }\"\n class=\"sidebar-animation\"\n >\n <ng-template pTemplate=\"headless\">\n <div class=\"flex flex-column overflow-hidden\">\n <div\n class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2 overflow-hidden\"\n >\n <div\n class=\"flex {{\n expandMenu() ? 'flex-row' : 'flex-column'\n }} align-items-center {{\n expandMenu()\n ? 'justify-content-between'\n : 'justify-content-center'\n }} py-3\"\n >\n <!-- Logo para o menu expandido -->\n <img\n *ngIf=\"expandMenu() && logoMenuExpand\"\n alt=\"Card\"\n [src]=\"logoMenuExpand\"\n height=\"50\"\n width=\"auto\"\n class=\"cursor-pointer p-1\"\n (click)=\"navigateToDefaultRoute()\"\n />\n\n <!-- Logo para o menu minimizado-->\n <img\n *ngIf=\"!expandMenu() && logoMenuHide\"\n alt=\"Card\"\n [src]=\"logoMenuHide\"\n height=\"50\"\n width=\"auto\"\n class=\"mb-2 p-1\"\n (click)=\"navigateToDefaultRoute()\"\n />\n\n <!-- Toggle menu -->\n <button\n *ngIf=\"showExpandMenu\"\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"toggleMenu()\"\n [pTooltip]=\"expandMenu() ? 'Ocultar Menu' : 'Expandir Menu'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\"> menu </i>\n </button>\n </div>\n\n @if(showTrocaEmpresa){\n <div\n class=\"flex flex-row align-items-center {{\n expandMenu()\n ? 'justify-content-between'\n : 'justify-content-center'\n }}\"\n >\n <div\n class=\"flex flex-column cursor-pointer\"\n *ngIf=\"expandMenu() && selectedEmpresa\"\n (click)=\"changeEmpresa($event)\"\n >\n <span\n class=\"text-sm font-semibold mr-2\"\n [pTooltip]=\"this.selectedEmpresa.razaosocial\"\n [tooltipPosition]=\"'right'\"\n >\n {{ nameEmpresa(this.selectedEmpresa.razaosocial) }}\n </span>\n <span class=\"text-sm mt-1\">{{\n this.selectedEmpresa.cpfcnpj | cpfCnpj\n }}</span>\n </div>\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"changeEmpresa($event)\"\n [pTooltip]=\"'Trocar de empresa'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\"> sync_alt </i>\n </button>\n </div>\n <p-divider type=\"solid\"></p-divider>\n }\n </div>\n\n <div class=\"list-none m-0 card-container overflow-y-auto max-h-full\">\n <!-- menus -->\n <li\n *ngFor=\"let menu of menus; let i = index\"\n [class]=\"expandMenu() ? 'px-2' : 'px-1'\"\n >\n <!-- menu que n\u00E3o tem filho -->\n <a\n (click)=\"callRoute(menu.link)\"\n *ngIf=\"\n !menu.indmenupai && (!menu.idmenupai || menu.idmenupai == 0)\n \"\n pRipple\n [pTooltip]=\"!expandMenu() ? menu.descricaomenu : ''\"\n [tooltipPosition]=\"'right'\"\n class=\"{{\n menu.bgColor\n }} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n [class.justify-content-center]=\"!expandMenu()\"\n >\n <i\n class=\"content-option-menu material-symbols-outlined icon-menu {{\n expandMenu() ? 'ml-1 mr-2' : ''\n }} icon-hover-color {{ menu.textColor }}\"\n *ngIf=\"menu.icone\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"content-option-menu text-base text-blue-900 font-medium {{\n menu.textColor\n }}\"\n *ngIf=\"expandMenu()\"\n >{{ menu.descricaomenu }}</span\n >\n </a>\n <!-- menu com filho -->\n <div *ngIf=\"menu.indmenupai\">\n <a\n pRipple\n pStyleClass=\"@next\"\n enterClass=\"hidden\"\n enterActiveClass=\"slidedown\"\n leaveToClass=\"hidden\"\n leaveActiveClass=\"slideup\"\n [class.bg-green-600]=\"isSelectedMenuPai(menu)\"\n class=\"menu-option flex align-items-center {{\n !expandMenu()\n ? 'justify-content-center'\n : 'justify-content-between'\n }} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n [tooltipPosition]=\"'right'\"\n [pTooltip]=\"!expandMenu() ? menu.descricaomenu : ''\"\n (click)=\"\n expandMenu.set(!expandMenu() ? !expandMenu() : expandMenu())\n \"\n >\n <div class=\"flex flex-row align-items-center\">\n <i\n class=\"content-option-menu material-symbols-outlined icon-menu {{\n expandMenu() ? 'ml-1 mr-2' : ''\n }} icon-hover-color\"\n *ngIf=\"menu.icone\"\n [class.text-white]=\"isSelectedMenuPai(menu)\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium content-option-menu\"\n *ngIf=\"expandMenu()\"\n >{{ menu.descricaomenu }}</span\n >\n </div>\n <i\n class=\"pi pi-chevron-down text-blue-900 mr-1 icon-hover-color content-option-menu\"\n *ngIf=\"expandMenu()\"\n ></i>\n </a>\n\n <!-- filhos -->\n <div\n class=\"list-none py-0 pl-3 pr-0 m-0 {{\n !(\n menuSelecionado()?.idmenupai == menu.idmenu &&\n this.expandMenu()\n ) && 'hidden'\n }} overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\n >\n <li\n *ngFor=\"\n let filho of returnMenuChild(menu.idmenu);\n let iFilho = index\n \"\n >\n <a\n *ngIf=\"expandMenu()\"\n (click)=\"callRoute(filho.link)\"\n pRipple\n class=\"{{\n filho.bgColor\n }} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\n >\n <i\n class=\"content-option-menu material-symbols-outlined icon-menu {{\n expandMenu() ? 'ml-1 mr-2' : ''\n }} icon-hover-color\"\n *ngIf=\"filho.icone\"\n >\n {{ filho.icone }}\n </i>\n <span\n class=\"content-option-menu text-base text-blue-900 ml-4 {{\n filho.textColor\n }}\"\n *ngIf=\"expandMenu()\"\n >{{ filho.descricaomenu }}</span\n >\n </a>\n </li>\n </div>\n </div>\n </li>\n </div>\n </div>\n </ng-template>\n </p-sidebar>\n }\n\n <!-- Topbar -->\n <div\n class=\"w-auto h-screen page-content overflow-y-hidden\"\n id=\"page-content\"\n style=\"width: 100vw !important\"\n >\n <div\n class=\"flex flex-row flex-wrap align-items-center justify-content-between m-3\"\n >\n @if(!showMenu) {\n <!-- Logo home -->\n <div>\n <img [src]=\"logoMenuExpand\" width=\"150\" />\n </div>\n } @else {\n <!-- Breadcrumbs -->\n <div>\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">\n {{ breadCrumbItems[breadCrumbItems.length - 1]?.label }}\n </p>\n <p-breadcrumb\n *ngIf=\"widthCard > 400\"\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\n [model]=\"breadCrumbItems\"\n [style]=\"{ backgroundColor: '#eaeaea' }\"\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\n ></p-breadcrumb>\n </div>\n } \n \n @if(widthCard > 992){\n <!-- dropdown para sele\u00E7\u00E3o de empresa/licenca -->\n <dropdown-master\n *ngIf=\"showLicencas()\"\n class=\"w-40rem\"\n formControlName=\"idmaster\"\n [formGroup]=\"formGroup\"\n [masters]=\"masters\"\n (onSelectionChange)=\"changeLicense($event)\"\n (onSelectionValue)=\"changeLicense($event)\"\n >\n </dropdown-master>\n }\n\n <!-- Navega\u00E7\u00E3o de sistemas e usu\u00E1rios -->\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\n @for (topAction of topMenuActions(); track $index) {\n <ng-container *ngTemplateOutlet=\"topAction\" />\n }\n\n <p-button\n *ngIf=\"showButtonApps\"\n styleClass=\"w-2rem h-2rem text-blue-900 hover:bg-green-600 hover:text-white\"\n icon=\"pi pi-th-large\"\n [rounded]=\"true\"\n [text]=\"true\"\n (click)=\"sistemasPanel.toggle($event)\"\n [pTooltip]=\"'Sistemas'\"\n [tooltipPosition]=\"'left'\"\n ></p-button>\n\n <p-button\n *ngIf=\"showButtonUser\"\n styleClass=\"w-2rem h-2rem text-blue-900 hover:bg-green-600 hover:text-white\"\n icon=\"pi pi-user\"\n [rounded]=\"true\"\n [text]=\"true\"\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\n [tooltipPosition]=\"'left'\"\n (click)=\"meusDadosPanel.toggle($event)\"\n ></p-button>\n </div>\n\n @if(widthCard < 992){\n <!-- dropdown para sele\u00E7\u00E3o de empresa/licenca -->\n <dropdown-master\n *ngIf=\"showLicencas()\"\n class=\"w-full\"\n formControlName=\"idmaster\"\n [formGroup]=\"formGroup\"\n [masters]=\"masters\"\n (onSelectionChange)=\"changeLicense($event)\"\n (onSelectionValue)=\"changeLicense($event)\"\n >\n </dropdown-master>\n }\n </div>\n\n <!-- Container -->\n <p-card\n styleClass=\"m-3 overflow-y-auto {{\n !showMenu && 'sm:overflow-y-hidden'\n }} card-container\"\n [style]=\"{ height: heightCard - adjustHeightCard() + 'px' }\"\n >\n <div class=\"{{ widthCard < 992 && 'card-container' }} w-full h-full\">\n <ng-content></ng-content>\n </div>\n </p-card>\n </div>\n\n <!-- Painel de aplicativos -->\n <p-overlayPanel\n #sistemasPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n >\n <ng-template pTemplate=\"container\">\n <p class=\"title-style mt-3\">Sistemas</p>\n\n <div\n class=\"flex flex-row flex-wrap gap-3 align-items-center justify-content-center mt-5 mb-3\"\n style=\"width: 270px; height: 100%\"\n >\n @for (aplicativo of apps; track $index) { @if(aplicativo.urlicone ==\n \"https://work-assets.keevo.com.br/img/icone-keevocenter.png\") {\n <div\n class=\"btn-sistema text-xl md:text-3xl flex align-items-center justify-content-center\"\n (click)=\"selectApp(aplicativo.idaplicativo)\"\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\n [tooltipPosition]=\"'left'\"\n >\n {{ aplicativo.descricaoaplicativo.charAt(0).toLocaleUpperCase() }}\n </div>\n } @else {\n <img\n [src]=\"aplicativo.urlicone\"\n class=\"btn-sistema flex align-items-center justify-content-center\"\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\n [tooltipPosition]=\"'left'\"\n (click)=\"selectApp(aplicativo.idaplicativo)\"\n />\n } }\n\n <!-- <button\n *ngFor=\"let aplicativo of apps\"\n pButton\n pRipple\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\n [tooltipPosition]=\"'left'\"\n (click)=\"selectApp(aplicativo.idaplicativo)\"\n >\n {{ aplicativo.nomeaplicativo.charAt(0).toUpperCase() }}\n </button> -->\n </div>\n </ng-template>\n </p-overlayPanel>\n\n <!-- Painel do usu\u00E1rio -->\n <p-overlayPanel\n #meusDadosPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n >\n <ng-template pTemplate=\"container\">\n <p class=\"title-style mt-3\">\n Ol\u00E1, {{ userName ? userName.split(\" \")[0] : \"Usu\u00E1rio\" }}!\n </p>\n <div class=\"mt-5 mb-3\"></div>\n\n <p-button\n icon=\"pi pi-lock\"\n label=\"Acessar Keepass\"\n (onClick)=\"accessKeePass($event)\"\n styleClass=\"border-noround w-full text-blue-900\"\n [text]=\"true\"\n >\n </p-button>\n\n <p-button\n icon=\"pi pi-sign-out\"\n label=\"Sair\"\n (onClick)=\"logout($event)\"\n styleClass=\"border-noround w-full text-blue-900\"\n [text]=\"true\"\n >\n </p-button>\n </ng-template>\n </p-overlayPanel>\n</div>\n", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px;color:#0c3e66!important}.page-content{background:linear-gradient(to bottom,#eaeaea 17%,#fff 19%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:Inter var,Roboto,Arial,Helvetica,sans-serif!important}span{font-size:.9rem!important}.breadcrumb-title{font-size:1rem!important;font-family:Inter var,Roboto,Arial,Helvetica,sans-serif!important}::ng-deep .home-style{background-color:#eaeaea;overflow:hidden}::ng-deep .page-style{overflow:auto!important}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb .p-breadcrumb-list .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb .p-breadcrumb-list .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}.hover-color .text-base,.hover-color .icon-hover-color,.menu-option:hover .content-option-menu{color:#fff!important}::ng-deep .p-card .p-card-body{padding:0rem!important}::ng-deep .p-card .p-card-content{padding:0rem!important}::ng-deep .p-sidebar-left{z-index:1100!important}.btn-sistema{display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;cursor:pointer;width:4rem;height:4rem;background-color:#002542;color:#fff;padding:.5rem;box-shadow:#00000059 0 0 4px;border-radius:.75rem;transition:box-shadow .3s ease-in-out}.btn-sistema:hover{opacity:.9;box-shadow:#0009 0 0 8px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i7.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i8.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: i9.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "component", type: i10.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i11.Ripple, selector: "[pRipple]" }, { kind: "component", type: i12.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i13.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i14.DropdownMasterComponent, selector: "dropdown-master", inputs: ["formControlName", "masters"] }, { kind: "pipe", type: i15.CpfCnpjPipe, name: "cpfCnpj" }] }); }
200
200
  }
201
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvLayoutComponent, decorators: [{
202
202
  type: Component,
203
- args: [{ selector: 'kv-layout', template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\r\n @if (showMenu) {\r\n <div [style]=\"{ minWidth: expandMenu() ? '300px' : '60px' }\"></div>\r\n } @if(showMenu) {\r\n <p-sidebar\r\n #sidebarRef\r\n [visible]=\"true\"\r\n [showCloseIcon]=\"false\"\r\n [modal]=\"false\"\r\n [style]=\"{ width: expandMenu() ? '300px' : '60px' }\"\r\n class=\"sidebar-animation\"\r\n >\r\n <ng-template pTemplate=\"headless\">\r\n <div class=\"flex flex-column overflow-hidden\">\r\n <div\r\n class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2 overflow-hidden\"\r\n >\r\n <div\r\n class=\"flex {{\r\n expandMenu() ? 'flex-row' : 'flex-column'\r\n }} align-items-center {{\r\n expandMenu()\r\n ? 'justify-content-between'\r\n : 'justify-content-center'\r\n }} py-3\"\r\n >\r\n <!-- Logo para o menu expandido -->\r\n <img\r\n *ngIf=\"expandMenu() && logoMenuExpand\"\r\n alt=\"Card\"\r\n [src]=\"logoMenuExpand\"\r\n height=\"50\"\r\n width=\"auto\"\r\n class=\"cursor-pointer p-1\"\r\n (click)=\"navigateToDefaultRoute()\"\r\n />\r\n\r\n <!-- Logo para o menu minimizado-->\r\n <img\r\n *ngIf=\"!expandMenu() && logoMenuHide\"\r\n alt=\"Card\"\r\n [src]=\"logoMenuHide\"\r\n height=\"50\"\r\n width=\"auto\"\r\n class=\"mb-2 p-1\"\r\n (click)=\"navigateToDefaultRoute()\"\r\n />\r\n\r\n <!-- Toggle menu -->\r\n <button\r\n *ngIf=\"showExpandMenu\"\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"toggleMenu()\"\r\n [pTooltip]=\"expandMenu() ? 'Ocultar Menu' : 'Expandir Menu'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\"> menu </i>\r\n </button>\r\n </div>\r\n\r\n @if(showTrocaEmpresa){\r\n <div\r\n class=\"flex flex-row align-items-center {{\r\n expandMenu()\r\n ? 'justify-content-between'\r\n : 'justify-content-center'\r\n }}\"\r\n >\r\n <div\r\n class=\"flex flex-column cursor-pointer\"\r\n *ngIf=\"expandMenu() && selectedEmpresa\"\r\n (click)=\"changeEmpresa($event)\"\r\n >\r\n <span\r\n class=\"text-sm font-semibold mr-2\"\r\n [pTooltip]=\"this.selectedEmpresa.razaosocial\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n {{ nameEmpresa(this.selectedEmpresa.razaosocial) }}\r\n </span>\r\n <span class=\"text-sm mt-1\">{{\r\n this.selectedEmpresa.cpfcnpj | cpfCnpj\r\n }}</span>\r\n </div>\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"changeEmpresa($event)\"\r\n [pTooltip]=\"'Trocar de empresa'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\"> sync_alt </i>\r\n </button>\r\n </div>\r\n <p-divider type=\"solid\"></p-divider>\r\n }\r\n </div>\r\n\r\n <div class=\"list-none m-0 card-container overflow-y-auto max-h-full\">\r\n <!-- menus -->\r\n <li\r\n *ngFor=\"let menu of menus; let i = index\"\r\n [class]=\"expandMenu() ? 'px-2' : 'px-1'\"\r\n >\r\n <!-- menu que n\u00E3o tem filho -->\r\n <a\r\n (click)=\"callRoute(menu.link)\"\r\n *ngIf=\"\r\n !menu.indmenupai && (!menu.idmenupai || menu.idmenupai == 0)\r\n \"\r\n pRipple\r\n [pTooltip]=\"!expandMenu() ? menu.descricaomenu : ''\"\r\n [tooltipPosition]=\"'right'\"\r\n class=\"{{\r\n menu.bgColor\r\n }} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n [class.justify-content-center]=\"!expandMenu()\"\r\n >\r\n <i\r\n class=\"content-option-menu material-symbols-outlined icon-menu {{\r\n expandMenu() ? 'ml-1 mr-2' : ''\r\n }} icon-hover-color {{ menu.textColor }}\"\r\n *ngIf=\"menu.icone\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"content-option-menu text-base text-blue-900 font-medium {{\r\n menu.textColor\r\n }}\"\r\n *ngIf=\"expandMenu()\"\r\n >{{ menu.descricaomenu }}</span\r\n >\r\n </a>\r\n <!-- menu com filho -->\r\n <div *ngIf=\"menu.indmenupai\">\r\n <a\r\n pRipple\r\n pStyleClass=\"@next\"\r\n enterClass=\"hidden\"\r\n enterActiveClass=\"slidedown\"\r\n leaveToClass=\"hidden\"\r\n leaveActiveClass=\"slideup\"\r\n [class.bg-green-600]=\"isSelectedMenuPai(menu)\"\r\n class=\"menu-option flex align-items-center {{\r\n !expandMenu()\r\n ? 'justify-content-center'\r\n : 'justify-content-between'\r\n }} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n [tooltipPosition]=\"'right'\"\r\n [pTooltip]=\"!expandMenu() ? menu.descricaomenu : ''\"\r\n (click)=\"\r\n expandMenu.set(!expandMenu() ? !expandMenu() : expandMenu())\r\n \"\r\n >\r\n <div class=\"flex flex-row align-items-center\">\r\n <i\r\n class=\"content-option-menu material-symbols-outlined icon-menu {{\r\n expandMenu() ? 'ml-1 mr-2' : ''\r\n }} icon-hover-color\"\r\n *ngIf=\"menu.icone\"\r\n [class.text-white]=\"isSelectedMenuPai(menu)\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium content-option-menu\"\r\n *ngIf=\"expandMenu()\"\r\n >{{ menu.descricaomenu }}</span\r\n >\r\n </div>\r\n <i\r\n class=\"pi pi-chevron-down text-blue-900 mr-1 icon-hover-color content-option-menu\"\r\n *ngIf=\"expandMenu()\"\r\n ></i>\r\n </a>\r\n\r\n <!-- filhos -->\r\n <div\r\n class=\"list-none py-0 pl-3 pr-0 m-0 {{\r\n !(\r\n menuSelecionado()?.idmenupai == menu.idmenu &&\r\n this.expandMenu()\r\n ) && 'hidden'\r\n }} overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\r\n >\r\n <li\r\n *ngFor=\"\r\n let filho of returnMenuChild(menu.idmenu);\r\n let iFilho = index\r\n \"\r\n >\r\n <a\r\n *ngIf=\"expandMenu()\"\r\n (click)=\"callRoute(filho.link)\"\r\n pRipple\r\n class=\"{{\r\n filho.bgColor\r\n }} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\r\n >\r\n <i\r\n class=\"content-option-menu material-symbols-outlined icon-menu {{\r\n expandMenu() ? 'ml-1 mr-2' : ''\r\n }} icon-hover-color\"\r\n *ngIf=\"filho.icone\"\r\n >\r\n {{ filho.icone }}\r\n </i>\r\n <span\r\n class=\"content-option-menu text-base text-blue-900 ml-4 {{\r\n filho.textColor\r\n }}\"\r\n *ngIf=\"expandMenu()\"\r\n >{{ filho.descricaomenu }}</span\r\n >\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n </li>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-sidebar>\r\n }\r\n\r\n <!-- Topbar -->\r\n <div\r\n class=\"w-auto h-screen page-content overflow-y-hidden\"\r\n id=\"page-content\"\r\n style=\"width: 100vw !important\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap align-items-center justify-content-between m-3\"\r\n >\r\n @if(!showMenu) {\r\n <!-- Logo home -->\r\n <div>\r\n <img [src]=\"logoMenuExpand\" width=\"150\" />\r\n </div>\r\n } @else {\r\n <!-- Breadcrumbs -->\r\n <div>\r\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">\r\n {{ breadCrumbItems[breadCrumbItems.length - 1]?.label }}\r\n </p>\r\n <p-breadcrumb\r\n *ngIf=\"widthCard > 400\"\r\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\r\n [model]=\"breadCrumbItems\"\r\n [style]=\"{ backgroundColor: '#eaeaea' }\"\r\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\r\n ></p-breadcrumb>\r\n </div>\r\n } \r\n \r\n @if(widthCard > 992){\r\n <!-- dropdown para sele\u00E7\u00E3o de empresa/licenca -->\r\n <dropdown-master\r\n *ngIf=\"showLicencas()\"\r\n class=\"w-40rem\"\r\n formControlName=\"idmaster\"\r\n [formGroup]=\"formGroup\"\r\n [masters]=\"masters\"\r\n (onSelectionChange)=\"changeLicense($event)\"\r\n (onSelectionValue)=\"changeLicense($event)\"\r\n >\r\n </dropdown-master>\r\n }\r\n\r\n <!-- Navega\u00E7\u00E3o de sistemas e usu\u00E1rios -->\r\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\r\n @for (topAction of topMenuActions(); track $index) {\r\n <ng-container *ngTemplateOutlet=\"topAction\" />\r\n }\r\n\r\n <p-button\r\n *ngIf=\"showButtonApps\"\r\n styleClass=\"w-2rem h-2rem text-blue-900 hover:bg-green-600 hover:text-white\"\r\n icon=\"pi pi-th-large\"\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n (click)=\"sistemasPanel.toggle($event)\"\r\n [pTooltip]=\"'Sistemas'\"\r\n [tooltipPosition]=\"'left'\"\r\n ></p-button>\r\n\r\n <p-button\r\n *ngIf=\"showButtonUser\"\r\n styleClass=\"w-2rem h-2rem text-blue-900 hover:bg-green-600 hover:text-white\"\r\n icon=\"pi pi-user\"\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\r\n [tooltipPosition]=\"'left'\"\r\n (click)=\"meusDadosPanel.toggle($event)\"\r\n ></p-button>\r\n </div>\r\n\r\n @if(widthCard < 992){\r\n <!-- dropdown para sele\u00E7\u00E3o de empresa/licenca -->\r\n <dropdown-master\r\n *ngIf=\"showLicencas()\"\r\n class=\"w-full\"\r\n formControlName=\"idmaster\"\r\n [formGroup]=\"formGroup\"\r\n [masters]=\"masters\"\r\n (onSelectionChange)=\"changeLicense($event)\"\r\n (onSelectionValue)=\"changeLicense($event)\"\r\n >\r\n </dropdown-master>\r\n }\r\n </div>\r\n\r\n <!-- Container -->\r\n <p-card\r\n styleClass=\"m-3 overflow-y-auto {{\r\n !showMenu && 'sm:overflow-y-hidden'\r\n }} card-container\"\r\n [style]=\"{ height: heightCard - adjustHeightCard() + 'px' }\"\r\n >\r\n <div class=\"{{ widthCard < 992 && 'card-container' }} w-full h-full\">\r\n <ng-content></ng-content>\r\n </div>\r\n </p-card>\r\n </div>\r\n\r\n <!-- Painel de aplicativos -->\r\n <p-overlayPanel\r\n #sistemasPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n >\r\n <ng-template pTemplate=\"container\">\r\n <p class=\"title-style mt-3\">Sistemas</p>\r\n\r\n <div\r\n class=\"flex flex-row flex-wrap gap-3 align-items-center justify-content-center mt-5 mb-3\"\r\n style=\"width: 270px; height: 100%\"\r\n >\r\n @for (aplicativo of apps; track $index) { @if(aplicativo.urlicone ==\r\n \"https://work-assets.keevo.com.br/img/icone-keevocenter.png\") {\r\n <div\r\n class=\"btn-sistema text-xl md:text-3xl flex align-items-center justify-content-center\"\r\n (click)=\"selectApp(aplicativo.idaplicativo)\"\r\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n {{ aplicativo.descricaoaplicativo.charAt(0).toLocaleUpperCase() }}\r\n </div>\r\n } @else {\r\n <img\r\n [src]=\"aplicativo.urlicone\"\r\n class=\"btn-sistema flex align-items-center justify-content-center\"\r\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\r\n [tooltipPosition]=\"'left'\"\r\n (click)=\"selectApp(aplicativo.idaplicativo)\"\r\n />\r\n } }\r\n\r\n <!-- <button\r\n *ngFor=\"let aplicativo of apps\"\r\n pButton\r\n pRipple\r\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\r\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\r\n [tooltipPosition]=\"'left'\"\r\n (click)=\"selectApp(aplicativo.idaplicativo)\"\r\n >\r\n {{ aplicativo.nomeaplicativo.charAt(0).toUpperCase() }}\r\n </button> -->\r\n </div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n\r\n <!-- Painel do usu\u00E1rio -->\r\n <p-overlayPanel\r\n #meusDadosPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n >\r\n <ng-template pTemplate=\"container\">\r\n <p class=\"title-style mt-3\">\r\n Ol\u00E1, {{ userName ? userName.split(\" \")[0] : \"Usu\u00E1rio\" }}!\r\n </p>\r\n <div class=\"mt-5 mb-3\"></div>\r\n\r\n <p-button\r\n icon=\"pi pi-lock\"\r\n label=\"Acessar Keepass\"\r\n (onClick)=\"accessKeePass($event)\"\r\n styleClass=\"border-noround w-full text-blue-900\"\r\n [text]=\"true\"\r\n >\r\n </p-button>\r\n\r\n <p-button\r\n icon=\"pi pi-sign-out\"\r\n label=\"Sair\"\r\n (onClick)=\"logout($event)\"\r\n styleClass=\"border-noround w-full text-blue-900\"\r\n [text]=\"true\"\r\n >\r\n </p-button>\r\n </ng-template>\r\n </p-overlayPanel>\r\n</div>\r\n", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px;color:#0c3e66!important}.page-content{background:linear-gradient(to bottom,#eaeaea 17%,#fff 19%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:Inter var,Roboto,Arial,Helvetica,sans-serif!important}span{font-size:.9rem!important}.breadcrumb-title{font-size:1rem!important;font-family:Inter var,Roboto,Arial,Helvetica,sans-serif!important}::ng-deep .home-style{background-color:#eaeaea;overflow:hidden}::ng-deep .page-style{overflow:auto!important}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb .p-breadcrumb-list .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb .p-breadcrumb-list .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}.hover-color .text-base,.hover-color .icon-hover-color,.menu-option:hover .content-option-menu{color:#fff!important}::ng-deep .p-card .p-card-body{padding:0rem!important}::ng-deep .p-card .p-card-content{padding:0rem!important}::ng-deep .p-sidebar-left{z-index:1100!important}.btn-sistema{display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;cursor:pointer;width:4rem;height:4rem;background-color:#002542;color:#fff;padding:.5rem;box-shadow:#00000059 0 0 4px;border-radius:.75rem;transition:box-shadow .3s ease-in-out}.btn-sistema:hover{opacity:.9;box-shadow:#0009 0 0 8px}\n"] }]
203
+ args: [{ selector: 'kv-layout', template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\n @if (showMenu) {\n <div [style]=\"{ minWidth: expandMenu() ? '300px' : '60px' }\"></div>\n } @if(showMenu) {\n <p-sidebar\n #sidebarRef\n [visible]=\"true\"\n [showCloseIcon]=\"false\"\n [modal]=\"false\"\n [style]=\"{ width: expandMenu() ? '300px' : '60px' }\"\n class=\"sidebar-animation\"\n >\n <ng-template pTemplate=\"headless\">\n <div class=\"flex flex-column overflow-hidden\">\n <div\n class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2 overflow-hidden\"\n >\n <div\n class=\"flex {{\n expandMenu() ? 'flex-row' : 'flex-column'\n }} align-items-center {{\n expandMenu()\n ? 'justify-content-between'\n : 'justify-content-center'\n }} py-3\"\n >\n <!-- Logo para o menu expandido -->\n <img\n *ngIf=\"expandMenu() && logoMenuExpand\"\n alt=\"Card\"\n [src]=\"logoMenuExpand\"\n height=\"50\"\n width=\"auto\"\n class=\"cursor-pointer p-1\"\n (click)=\"navigateToDefaultRoute()\"\n />\n\n <!-- Logo para o menu minimizado-->\n <img\n *ngIf=\"!expandMenu() && logoMenuHide\"\n alt=\"Card\"\n [src]=\"logoMenuHide\"\n height=\"50\"\n width=\"auto\"\n class=\"mb-2 p-1\"\n (click)=\"navigateToDefaultRoute()\"\n />\n\n <!-- Toggle menu -->\n <button\n *ngIf=\"showExpandMenu\"\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"toggleMenu()\"\n [pTooltip]=\"expandMenu() ? 'Ocultar Menu' : 'Expandir Menu'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\"> menu </i>\n </button>\n </div>\n\n @if(showTrocaEmpresa){\n <div\n class=\"flex flex-row align-items-center {{\n expandMenu()\n ? 'justify-content-between'\n : 'justify-content-center'\n }}\"\n >\n <div\n class=\"flex flex-column cursor-pointer\"\n *ngIf=\"expandMenu() && selectedEmpresa\"\n (click)=\"changeEmpresa($event)\"\n >\n <span\n class=\"text-sm font-semibold mr-2\"\n [pTooltip]=\"this.selectedEmpresa.razaosocial\"\n [tooltipPosition]=\"'right'\"\n >\n {{ nameEmpresa(this.selectedEmpresa.razaosocial) }}\n </span>\n <span class=\"text-sm mt-1\">{{\n this.selectedEmpresa.cpfcnpj | cpfCnpj\n }}</span>\n </div>\n\n <button\n pButton\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\n (click)=\"changeEmpresa($event)\"\n [pTooltip]=\"'Trocar de empresa'\"\n [tooltipPosition]=\"'right'\"\n >\n <i class=\"material-symbols-outlined\"> sync_alt </i>\n </button>\n </div>\n <p-divider type=\"solid\"></p-divider>\n }\n </div>\n\n <div class=\"list-none m-0 card-container overflow-y-auto max-h-full\">\n <!-- menus -->\n <li\n *ngFor=\"let menu of menus; let i = index\"\n [class]=\"expandMenu() ? 'px-2' : 'px-1'\"\n >\n <!-- menu que n\u00E3o tem filho -->\n <a\n (click)=\"callRoute(menu.link)\"\n *ngIf=\"\n !menu.indmenupai && (!menu.idmenupai || menu.idmenupai == 0)\n \"\n pRipple\n [pTooltip]=\"!expandMenu() ? menu.descricaomenu : ''\"\n [tooltipPosition]=\"'right'\"\n class=\"{{\n menu.bgColor\n }} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n [class.justify-content-center]=\"!expandMenu()\"\n >\n <i\n class=\"content-option-menu material-symbols-outlined icon-menu {{\n expandMenu() ? 'ml-1 mr-2' : ''\n }} icon-hover-color {{ menu.textColor }}\"\n *ngIf=\"menu.icone\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"content-option-menu text-base text-blue-900 font-medium {{\n menu.textColor\n }}\"\n *ngIf=\"expandMenu()\"\n >{{ menu.descricaomenu }}</span\n >\n </a>\n <!-- menu com filho -->\n <div *ngIf=\"menu.indmenupai\">\n <a\n pRipple\n pStyleClass=\"@next\"\n enterClass=\"hidden\"\n enterActiveClass=\"slidedown\"\n leaveToClass=\"hidden\"\n leaveActiveClass=\"slideup\"\n [class.bg-green-600]=\"isSelectedMenuPai(menu)\"\n class=\"menu-option flex align-items-center {{\n !expandMenu()\n ? 'justify-content-center'\n : 'justify-content-between'\n }} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\n [tooltipPosition]=\"'right'\"\n [pTooltip]=\"!expandMenu() ? menu.descricaomenu : ''\"\n (click)=\"\n expandMenu.set(!expandMenu() ? !expandMenu() : expandMenu())\n \"\n >\n <div class=\"flex flex-row align-items-center\">\n <i\n class=\"content-option-menu material-symbols-outlined icon-menu {{\n expandMenu() ? 'ml-1 mr-2' : ''\n }} icon-hover-color\"\n *ngIf=\"menu.icone\"\n [class.text-white]=\"isSelectedMenuPai(menu)\"\n >\n {{ menu.icone }}\n </i>\n <span\n class=\"text-base text-blue-900 font-medium content-option-menu\"\n *ngIf=\"expandMenu()\"\n >{{ menu.descricaomenu }}</span\n >\n </div>\n <i\n class=\"pi pi-chevron-down text-blue-900 mr-1 icon-hover-color content-option-menu\"\n *ngIf=\"expandMenu()\"\n ></i>\n </a>\n\n <!-- filhos -->\n <div\n class=\"list-none py-0 pl-3 pr-0 m-0 {{\n !(\n menuSelecionado()?.idmenupai == menu.idmenu &&\n this.expandMenu()\n ) && 'hidden'\n }} overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\n >\n <li\n *ngFor=\"\n let filho of returnMenuChild(menu.idmenu);\n let iFilho = index\n \"\n >\n <a\n *ngIf=\"expandMenu()\"\n (click)=\"callRoute(filho.link)\"\n pRipple\n class=\"{{\n filho.bgColor\n }} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\n >\n <i\n class=\"content-option-menu material-symbols-outlined icon-menu {{\n expandMenu() ? 'ml-1 mr-2' : ''\n }} icon-hover-color\"\n *ngIf=\"filho.icone\"\n >\n {{ filho.icone }}\n </i>\n <span\n class=\"content-option-menu text-base text-blue-900 ml-4 {{\n filho.textColor\n }}\"\n *ngIf=\"expandMenu()\"\n >{{ filho.descricaomenu }}</span\n >\n </a>\n </li>\n </div>\n </div>\n </li>\n </div>\n </div>\n </ng-template>\n </p-sidebar>\n }\n\n <!-- Topbar -->\n <div\n class=\"w-auto h-screen page-content overflow-y-hidden\"\n id=\"page-content\"\n style=\"width: 100vw !important\"\n >\n <div\n class=\"flex flex-row flex-wrap align-items-center justify-content-between m-3\"\n >\n @if(!showMenu) {\n <!-- Logo home -->\n <div>\n <img [src]=\"logoMenuExpand\" width=\"150\" />\n </div>\n } @else {\n <!-- Breadcrumbs -->\n <div>\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">\n {{ breadCrumbItems[breadCrumbItems.length - 1]?.label }}\n </p>\n <p-breadcrumb\n *ngIf=\"widthCard > 400\"\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\n [model]=\"breadCrumbItems\"\n [style]=\"{ backgroundColor: '#eaeaea' }\"\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\n ></p-breadcrumb>\n </div>\n } \n \n @if(widthCard > 992){\n <!-- dropdown para sele\u00E7\u00E3o de empresa/licenca -->\n <dropdown-master\n *ngIf=\"showLicencas()\"\n class=\"w-40rem\"\n formControlName=\"idmaster\"\n [formGroup]=\"formGroup\"\n [masters]=\"masters\"\n (onSelectionChange)=\"changeLicense($event)\"\n (onSelectionValue)=\"changeLicense($event)\"\n >\n </dropdown-master>\n }\n\n <!-- Navega\u00E7\u00E3o de sistemas e usu\u00E1rios -->\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\n @for (topAction of topMenuActions(); track $index) {\n <ng-container *ngTemplateOutlet=\"topAction\" />\n }\n\n <p-button\n *ngIf=\"showButtonApps\"\n styleClass=\"w-2rem h-2rem text-blue-900 hover:bg-green-600 hover:text-white\"\n icon=\"pi pi-th-large\"\n [rounded]=\"true\"\n [text]=\"true\"\n (click)=\"sistemasPanel.toggle($event)\"\n [pTooltip]=\"'Sistemas'\"\n [tooltipPosition]=\"'left'\"\n ></p-button>\n\n <p-button\n *ngIf=\"showButtonUser\"\n styleClass=\"w-2rem h-2rem text-blue-900 hover:bg-green-600 hover:text-white\"\n icon=\"pi pi-user\"\n [rounded]=\"true\"\n [text]=\"true\"\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\n [tooltipPosition]=\"'left'\"\n (click)=\"meusDadosPanel.toggle($event)\"\n ></p-button>\n </div>\n\n @if(widthCard < 992){\n <!-- dropdown para sele\u00E7\u00E3o de empresa/licenca -->\n <dropdown-master\n *ngIf=\"showLicencas()\"\n class=\"w-full\"\n formControlName=\"idmaster\"\n [formGroup]=\"formGroup\"\n [masters]=\"masters\"\n (onSelectionChange)=\"changeLicense($event)\"\n (onSelectionValue)=\"changeLicense($event)\"\n >\n </dropdown-master>\n }\n </div>\n\n <!-- Container -->\n <p-card\n styleClass=\"m-3 overflow-y-auto {{\n !showMenu && 'sm:overflow-y-hidden'\n }} card-container\"\n [style]=\"{ height: heightCard - adjustHeightCard() + 'px' }\"\n >\n <div class=\"{{ widthCard < 992 && 'card-container' }} w-full h-full\">\n <ng-content></ng-content>\n </div>\n </p-card>\n </div>\n\n <!-- Painel de aplicativos -->\n <p-overlayPanel\n #sistemasPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n >\n <ng-template pTemplate=\"container\">\n <p class=\"title-style mt-3\">Sistemas</p>\n\n <div\n class=\"flex flex-row flex-wrap gap-3 align-items-center justify-content-center mt-5 mb-3\"\n style=\"width: 270px; height: 100%\"\n >\n @for (aplicativo of apps; track $index) { @if(aplicativo.urlicone ==\n \"https://work-assets.keevo.com.br/img/icone-keevocenter.png\") {\n <div\n class=\"btn-sistema text-xl md:text-3xl flex align-items-center justify-content-center\"\n (click)=\"selectApp(aplicativo.idaplicativo)\"\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\n [tooltipPosition]=\"'left'\"\n >\n {{ aplicativo.descricaoaplicativo.charAt(0).toLocaleUpperCase() }}\n </div>\n } @else {\n <img\n [src]=\"aplicativo.urlicone\"\n class=\"btn-sistema flex align-items-center justify-content-center\"\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\n [tooltipPosition]=\"'left'\"\n (click)=\"selectApp(aplicativo.idaplicativo)\"\n />\n } }\n\n <!-- <button\n *ngFor=\"let aplicativo of apps\"\n pButton\n pRipple\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\n [pTooltip]=\"aplicativo?.descricaoaplicativo\"\n [tooltipPosition]=\"'left'\"\n (click)=\"selectApp(aplicativo.idaplicativo)\"\n >\n {{ aplicativo.nomeaplicativo.charAt(0).toUpperCase() }}\n </button> -->\n </div>\n </ng-template>\n </p-overlayPanel>\n\n <!-- Painel do usu\u00E1rio -->\n <p-overlayPanel\n #meusDadosPanel\n [showTransitionOptions]=\"'350ms ease-out'\"\n [hideTransitionOptions]=\"'250ms ease-in'\"\n >\n <ng-template pTemplate=\"container\">\n <p class=\"title-style mt-3\">\n Ol\u00E1, {{ userName ? userName.split(\" \")[0] : \"Usu\u00E1rio\" }}!\n </p>\n <div class=\"mt-5 mb-3\"></div>\n\n <p-button\n icon=\"pi pi-lock\"\n label=\"Acessar Keepass\"\n (onClick)=\"accessKeePass($event)\"\n styleClass=\"border-noround w-full text-blue-900\"\n [text]=\"true\"\n >\n </p-button>\n\n <p-button\n icon=\"pi pi-sign-out\"\n label=\"Sair\"\n (onClick)=\"logout($event)\"\n styleClass=\"border-noround w-full text-blue-900\"\n [text]=\"true\"\n >\n </p-button>\n </ng-template>\n </p-overlayPanel>\n</div>\n", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px;color:#0c3e66!important}.page-content{background:linear-gradient(to bottom,#eaeaea 17%,#fff 19%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:Inter var,Roboto,Arial,Helvetica,sans-serif!important}span{font-size:.9rem!important}.breadcrumb-title{font-size:1rem!important;font-family:Inter var,Roboto,Arial,Helvetica,sans-serif!important}::ng-deep .home-style{background-color:#eaeaea;overflow:hidden}::ng-deep .page-style{overflow:auto!important}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb .p-breadcrumb-list .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb .p-breadcrumb-list .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}.hover-color .text-base,.hover-color .icon-hover-color,.menu-option:hover .content-option-menu{color:#fff!important}::ng-deep .p-card .p-card-body{padding:0rem!important}::ng-deep .p-card .p-card-content{padding:0rem!important}::ng-deep .p-sidebar-left{z-index:1100!important}.btn-sistema{display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;cursor:pointer;width:4rem;height:4rem;background-color:#002542;color:#fff;padding:.5rem;box-shadow:#00000059 0 0 4px;border-radius:.75rem;transition:box-shadow .3s ease-in-out}.btn-sistema:hover{opacity:.9;box-shadow:#0009 0 0 8px}\n"] }]
204
204
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FormBuilder }, { type: i2.Router }, { type: i2.ActivatedRoute }], propDecorators: { apps: [{
205
205
  type: Input
206
206
  }], breadCrumbItems: [{
@@ -260,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
260
260
  type: HostListener,
261
261
  args: ['window:resize', ['$event']]
262
262
  }] } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxheW91dC9sYXlvdXQva3YtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxheW91dC9sYXlvdXQva3YtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFFTCxTQUFTLEVBRVQsZUFBZSxFQUVmLFlBQVksRUFDWixZQUFZLEVBRVosS0FBSyxFQUNMLEtBQUssRUFHTCxNQUFNLEVBQ04sTUFBTSxFQUdOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QnZCLE1BQU0sT0FBTyxpQkFBaUI7SUEyRTVCLFlBQ1UsR0FBc0IsRUFDdEIsRUFBZSxFQUNiLE1BQWMsRUFDZCxjQUE4QjtRQUhoQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQTlFakMsU0FBSSxHQVVQLEVBQUUsQ0FBQztRQUVBLG9CQUFlLEdBR2xCLEVBQUUsQ0FBQztRQUVBLFlBQU8sR0FLVixFQUFFLENBQUM7UUFFQSxVQUFLLEdBWVIsRUFBRSxDQUFDO1FBRVQsZUFBVSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQVF6QixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQix3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFDcEMsYUFBUSxHQUFZLElB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VUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDdEQsQ0FBQzs4R0F4UVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsNnJHQ2xEOUIsMDZlQXlaQTs7MkZEdldhLGlCQUFpQjtrQkFoQjdCLFNBQVM7K0JBQ0UsV0FBVztrS0FnQlosSUFBSTtzQkFBWixLQUFLO2dCQVlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFlRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUVzQixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0ssYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQTBJbkIsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGNvbnRlbnRDaGlsZHJlbixcclxuICBlZmZlY3QsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBpbnB1dCxcclxuICBJbnB1dCxcclxuICBtb2RlbCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgV3JpdGFibGVTaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBPdmVybGF5UGFuZWwgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIGFuaW1hdGUsXHJcbiAgc3RhdGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICB0cmlnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1sYXlvdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LWxheW91dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIC8vIGFuaW1hdGlvbnM6IFtcclxuICAvLyAgIHRyaWdnZXIoJ3NpZGViYXJXaWR0aFRyaWdnZXInLCBbXHJcbiAgLy8gICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7XHJcbiAgLy8gICAgICAgd2lkdGg6ICc2MHB4J1xyXG4gIC8vICAgICB9KSksXHJcbiAgLy8gICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHtcclxuICAvLyAgICAgICB3aWR0aDogJzM1OXB4J1xyXG4gIC8vICAgICB9KSksXHJcbiAgLy8gICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBhbmltYXRlKCcxMDBtcyBlYXNlLW91dCcpKVxyXG4gIC8vICAgXSlcclxuICAvLyBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBhcHBzOiB7XHJcbiAgICBpZGFwbGljYXRpdm86IG51bWJlcjtcclxuICAgIGlkc2lzdGVtYTogbnVtYmVyO1xyXG4gICAgbm9tZWFwbGljYXRpdm86IHN0cmluZztcclxuICAgIGRlc2NyaWNhb2FwbGljYXRpdm86IHN0cmluZztcclxuICAgIHJvdGFwYWRyYW86IHN0cmluZztcclxuICAgIGluZHB1YmxpY2FkbzogYm9vbGVhbjtcclxuICAgIGluZHB1YmxpY2FjYW9ncmFkYXRpdmE6IGJvb2xlYW47XHJcbiAgICBpbmRleGlnZWVtcHJlc2FlbnRyYWRhOiBib29sZWFuO1xyXG4gICAgdXJsaWNvbmU/OiBzdHJpbmc7XHJcbiAgfVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGJyZWFkQ3J1bWJJdGVtczoge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHJvdXRlckxpbms6IHN0cmluZztcclxuICB9W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgbWFzdGVyczoge1xyXG4gICAgaWRtYXN0ZXI6IG51bWJlcjtcclxuICAgIGNwZmNucGo6IHN0cmluZztcclxuICAgIG5vbWU6IHN0cmluZztcclxuICAgIGlkbWFzdGVybm9tZTogc3RyaW5nO1xyXG4gIH1bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBtZW51czoge1xyXG4gICAgaWRtZW51OiBudW1iZXI7XHJcbiAgICBpZG1lbnVwYWk6IG51bWJlciB8IG51bGw7XHJcbiAgICBpZGFwbGljYXRpdm86IG51bWJlcjtcclxuICAgIGRlc2NyaWNhb21lbnU6IHN0cmluZztcclxuICAgIGxpbms6IHN0cmluZyB8IG51bGw7XHJcbiAgICBpY29uZTogc3RyaW5nIHwgbnVsbDtcclxuICAgIGluZHB1YmxpY2FkbzogYm9vbGVhbjtcclxuICAgIGluZG1lbnVwYWk6IGJvb2xlYW47XHJcbiAgICBsaXN0YWlkdmlzYW9tZW51OiBudW1iZXJbXTtcclxuICAgIGJnQ29sb3I/OiBzdHJpbmc7XHJcbiAgICB0ZXh0Q29sb3I/OiBzdHJpbmc7XHJcbiAgfVtdID0gW107XHJcblxyXG4gIGV4cGFuZE1lbnUgPSBtb2RlbDxib29sZWFuPih0cnVlKTtcclxuICBASW5wdXQoKSBsb2dvTWVudUV4cGFuZCE6IGFueTtcclxuICBASW5wdXQoKSBsb2dvTWVudUhpZGUhOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQXBwITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRW1wcmVzYSE6IGFueTtcclxuICBASW5wdXQoKSBzZWxlY3RlZE1hc3RlciE6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCkgc2hvd0J1dHRvbkFwcHM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dCdXR0b25Vc2VyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RXhwYW5kTWVudTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0Ryb3Bkb3duTGljZW5jYTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd01lbnU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dUcm9jYUVtcHJlc2E6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB1c2VyTmFtZTogc3RyaW5nID0gJ1VzdcOhcmlvJztcclxuXHJcbiAgQE91dHB1dCgpIGFjY2Vzc0tlZVBhc3NFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hhbmdlRW1wcmVzYUVtaXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2hhbmdlTGljZW5zZUVtaXQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBleHBhbmRNZW51RW1pdDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2dvdXRFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0QXBwRW1pdDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG5hdmlnYXRlVG9EZWZhdWx0Um91dGVFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWV1c0RhZG9zUGFuZWwnKSBtZXVzRGFkb3NQYW5lbCE6IE92ZXJsYXlQYW5lbDtcclxuICBAVmlld0NoaWxkKCdzaWRlYmFyUmVmJykgc2lkZWJhclJlZiE6IFNpZGViYXI7XHJcbiAgQFZpZXdDaGlsZCgnc2lzdGVtYXNQYW5lbCcpIHNpc3RlbWFzUGFuZWwhOiBPdmVybGF5UGFuZWw7XHJcblxyXG4gIHRvcE1lbnVBY3Rpb25zID0gY29udGVudENoaWxkcmVuPFRlbXBsYXRlUmVmPGFueT4+KCd0b3BNZW51QWN0aW9uJyk7XHJcblxyXG4gIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICBoZWlnaHRDYXJkITogbnVtYmVyO1xyXG4gIG1vdXNlT3ZlckZpbGhvSW5kZXg6IGFueTtcclxuICBtb3VzZU92ZXJJbmRleDogYW55O1xyXG4gIHdpZHRoQ2FyZCE6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBhY2Nlc3NLZWVQYXNzKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2lzdGVtYXNQYW5lbC5oaWRlKCk7XHJcbiAgICB0aGlzLmFjY2Vzc0tlZVBhc3NFbWl0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkanVzdEhlaWdodENhcmQoKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLndpZHRoQ2FyZCA+IDQwMCkge1xyXG4gICAgICBpZiAodGhpcy53aWR0aENhcmQgPCA5OTIgJiYgdGhpcy5zaG93TGljZW5jYXMoKSkgcmV0dXJuIDE1NTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmJyZWFkQ3J1bWJJdGVtcy5sZW5ndGggPiAwKSByZXR1cm4gMTA1O1xyXG4gICAgICBlbHNlIHJldHVybiA4NTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gODM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkanVzdFdpZHRoQ2FyZCgpIHtcclxuICAgIHRoaXMuaGVpZ2h0Q2FyZCA9IE51bWJlcihcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtY29udGVudCcpPy5vZmZzZXRIZWlnaHRcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5zaG93TWVudSlcclxuICAgICAgdGhpcy53aWR0aENhcmQgPVxyXG4gICAgICAgIE51bWJlcih3aW5kb3cuaW5uZXJXaWR0aCkgLSAodGhpcy5leHBhbmRNZW51KCkgPyAzMzMgOiA5Myk7XHJcbiAgICBlbHNlIHRoaXMud2lkdGhDYXJkID0gTnVtYmVyKHdpbmRvdy5pbm5lcldpZHRoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYWxsUm91dGUoZTogYW55LCBleHBhbmQ/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWV4cGFuZCAmJiAhdGhpcy5leHBhbmRNZW51KCkpXHJcbiAgICAgIHRoaXMuZXhwYW5kTWVudS51cGRhdGUoKGN1cnJlbnRWYWx1ZTogYm9vbGVhbikgPT4gIWN1cnJlbnRWYWx1ZSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VFbXByZXNhKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY2hhbmdlRW1wcmVzYUVtaXQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlTGljZW5zZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmNoYW5nZUxpY2Vuc2VFbWl0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBhbmRNZW51RXZlbnQoKSB7XHJcbiAgICB0aGlzLmV4cGFuZE1lbnVFbWl0LmVtaXQodGhpcy5leHBhbmRNZW51KCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ291dChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNpc3RlbWFzUGFuZWwuaGlkZSgpO1xyXG4gICAgdGhpcy5sb2dvdXRFbWl0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtZW51c1BlckFwcCgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlci51cmwgJiYgdGhpcy5tZW51cyAmJiB0aGlzLm1lbnVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHRoaXMucm91dGVyLnVybCA9PT0gJy8nKSB7XHJcbiAgICAgICAgLy8gdGhpcy5uYXZpZ2F0ZVRvRmlyc3RNZW51KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbWVudVNlbGVjaW9uYWRvID0gdGhpcy5tZW51cy5maW5kKFxyXG4gICAgICAgICAgKG1lbnU6IGFueSkgPT5cclxuICAgICAgICAgICAgbWVudS5saW5rICYmIG1lbnUubGluay5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwuc2xpY2UoMSkpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobWVudVNlbGVjaW9uYWRvKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9NZW51KG1lbnVTZWxlY2lvbmFkbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2lzdGVtYXNQYW5lbCkge1xyXG4gICAgICB0aGlzLnNpc3RlbWFzUGFuZWwuaGlkZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5hbWVFbXByZXNhKG5vbWVMaWNlbmNhOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKG5vbWVMaWNlbmNhKSB7XHJcbiAgICAgIGlmIChub21lTGljZW5jYS5sZW5ndGggPiAyMykgcmV0dXJuIG5vbWVMaWNlbmNhLnN1YnN0cmluZygwLCAyMykgKyAnLi4uJztcclxuICAgICAgZWxzZSByZXR1cm4gbm9tZUxpY2VuY2E7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvRmlyc3RNZW51KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlyc3RNZW51ID0gdGhpcy5tZW51c1swXTtcclxuICAgIGlmIChmaXJzdE1lbnUuaW5kbWVudXBhaSkge1xyXG4gICAgICBjb25zdCBmaWxob3MgPSB0aGlzLnJldHVybk1lbnVDaGlsZChmaXJzdE1lbnUuaWRtZW51KTtcclxuICAgICAgaWYgKGZpbGhvcykge1xyXG4gICAgICAgIHRoaXMuY2FsbFJvdXRlKGZpbGhvc1swXS5saW5rLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYWxsUm91dGUoZmlyc3RNZW51LmxpbmssIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvTWVudShtZW51OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChtZW51Lm1lbnVwYWkpIHtcclxuICAgICAgY29uc3QgZmlsaG9zID0gdGhpcy5yZXR1cm5NZW51Q2hpbGQobWVudS5pZG1lbnUpO1xyXG4gICAgICBpZiAoZmlsaG9zKSB7XHJcbiAgICAgICAgdGhpcy5jYWxsUm91dGUoZmlsaG9zWzBdLmxpbmssIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhbGxSb3V0ZShtZW51LmxpbmssIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWVudVNlbGVjaW9uYWRvID0gc2lnbmFsPGFueT4obnVsbCk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxhdGVzdFJlcXVlc3QgPSBjaGFuZ2VzWydtZW51cyddO1xyXG4gICAgaWYgKGxhdGVzdFJlcXVlc3Q/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLm1lbnVzUGVyQXBwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY2lvbmFyTWVudSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgaWRtYXN0ZXI6IFt0aGlzLnNlbGVjdGVkTWFzdGVyLCBbXV0sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkanVzdFdpZHRoQ2FyZCgpO1xyXG4gICAgdGhpcy5leHBhbmRNZW51RXZlbnQoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBvbldpbmRvd1Jlc2l6ZSgpIHtcclxuICAgIHRoaXMuYWRqdXN0V2lkdGhDYXJkKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBpc1NlbGVjdGVkTWVudVBhaShtZW51OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5leHBhbmRNZW51KCkgJiYgbWVudS5pbmRtZW51cGFpKVxyXG4gICAgICByZXR1cm4gbWVudS5pZG1lbnUgPT09IHRoaXMubWVudVNlbGVjaW9uYWRvKCk/LmlkbWVudXBhaTtcclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZWxlY2lvbmFyTWVudSgpIHtcclxuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGhpcy5yb3V0ZXIudXJsLCB3aW5kb3cub3JpZ2luKTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IHVybC5wYXRobmFtZTtcclxuICAgIGNvbnN0IHB1cmVQYXRoID0gY3VycmVudFBhdGgubWF0Y2goL15bXjtdKi9pKTtcclxuXHJcbiAgICBjb25zdCBwYXRocyA9IHB1cmVQYXRoIVswXTtcclxuXHJcbiAgICB0aGlzLm1lbnVzID0gdGhpcy5tZW51cy5tYXAoKG1lbnUpID0+IHtcclxuICAgICAgaWYgKG1lbnUubGluaykge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5tZW51LFxyXG4gICAgICAgICAgYmdDb2xvcjogcGF0aHMuaW5jbHVkZXMobWVudS5saW5rISkgPyAnYmctZ3JlZW4tNjAwJyA6ICcnLFxyXG4gICAgICAgICAgdGV4dENvbG9yOiBwYXRocy5pbmNsdWRlcyhtZW51LmxpbmshKSA/ICd0ZXh0LXdoaXRlJyA6ICcnLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG1lbnU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBtZW51ID0gdGhpcy5tZW51cy5maW5kKChtZW51OiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIG1lbnUubGluayAmJiBwYXRocy5pbmNsdWRlcyhtZW51LmxpbmshKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubWVudVNlbGVjaW9uYWRvLnNldChtZW51KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXR1cm5NZW51Q2hpbGQoaWRtZW51OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLm1lbnVzLmZpbHRlcigoeDogYW55KSA9PiB4LmlkbWVudXBhaSA9PSBpZG1lbnUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEFwcChpZGFwbGljYXRpdm86IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWxlY3RBcHBFbWl0LmVtaXQoaWRhcGxpY2F0aXZvKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93TGljZW5jYXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zaG93RHJvcGRvd25MaWNlbmNhICYmICh0aGlzLm1hc3RlcnMgfHwgW10pLmxlbmd0aCA+IDE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcclxuICAgIHRoaXMuZXhwYW5kTWVudS51cGRhdGUoKGN1cnJlbnRWYWx1ZTogYm9vbGVhbikgPT4gIWN1cnJlbnRWYWx1ZSk7XHJcbiAgICB0aGlzLmV4cGFuZE1lbnVFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0RlZmF1bHRSb3V0ZSgpIHtcclxuICAgIHRoaXMubmF2aWdhdGVUb0RlZmF1bHRSb3V0ZUVtaXQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2lkZWJhclN0YXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kTWVudSgpID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBvdmVyZmxvdy15LWhpZGRlbiB3LSBmdWxsLWNvbnRhaW5lclwiPlxyXG4gIEBpZiAoc2hvd01lbnUpIHtcclxuICA8ZGl2IFtzdHlsZV09XCJ7IG1pbldpZHRoOiBleHBhbmRNZW51KCkgPyAnMzAwcHgnIDogJzYwcHgnIH1cIj48L2Rpdj5cclxuICB9IEBpZihzaG93TWVudSkge1xyXG4gIDxwLXNpZGViYXJcclxuICAgICNzaWRlYmFyUmVmXHJcbiAgICBbdmlzaWJsZV09XCJ0cnVlXCJcclxuICAgIFtzaG93Q2xvc2VJY29uXT1cImZhbHNlXCJcclxuICAgIFttb2RhbF09XCJmYWxzZVwiXHJcbiAgICBbc3R5bGVdPVwieyB3aWR0aDogZXhwYW5kTWVudSgpID8gJzMwMHB4JyA6ICc2MHB4JyB9XCJcclxuICAgIGNsYXNzPVwic2lkZWJhci1hbmltYXRpb25cIlxyXG4gID5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkbGVzc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gZ2FwLTIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZmxleC1zaHJpbmstMCBteC0yIG92ZXJmbG93LWhpZGRlblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXgge3tcclxuICAgICAgICAgICAgICBleHBhbmRNZW51KCkgPyAnZmxleC1yb3cnIDogJ2ZsZXgtY29sdW1uJ1xyXG4gICAgICAgICAgICB9fSBhbGlnbi1pdGVtcy1jZW50ZXIge3tcclxuICAgICAgICAgICAgICBleHBhbmRNZW51KClcclxuICAgICAgICAgICAgICAgID8gJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJ1xyXG4gICAgICAgICAgICAgICAgOiAnanVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgfX0gcHktM1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gTG9nbyBwYXJhIG8gbWVudSBleHBhbmRpZG8gLS0+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnUoKSAmJiBsb2dvTWVudUV4cGFuZFwiXHJcbiAgICAgICAgICAgICAgYWx0PVwiQ2FyZFwiXHJcbiAgICAgICAgICAgICAgW3NyY109XCJsb2dvTWVudUV4cGFuZFwiXHJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiNTBcIlxyXG4gICAgICAgICAgICAgIHdpZHRoPVwiYXV0b1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwLTFcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvRGVmYXVsdFJvdXRlKClcIlxyXG4gICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBMb2dvIHBhcmEgbyBtZW51IG1pbmltaXphZG8tLT5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWV4cGFuZE1lbnUoKSAmJiBsb2dvTWVudUhpZGVcIlxyXG4gICAgICAgICAgICAgIGFsdD1cIkNhcmRcIlxyXG4gICAgICAgICAgICAgIFtzcmNdPVwibG9nb01lbnVIaWRlXCJcclxuICAgICAgICAgICAgICBoZWlnaHQ9XCI1MFwiXHJcbiAgICAgICAgICAgICAgd2lkdGg9XCJhdXRvXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1iLTIgcC0xXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb0RlZmF1bHRSb3V0ZSgpXCJcclxuICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVG9nZ2xlIG1lbnUgLS0+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFeHBhbmRNZW51XCJcclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcGFkZGluZy1zdHlsZSBoLTJyZW0gdy0ycmVtIGhvdmVyOmJnLWdyZWVuLTYwMCBob3Zlcjp0ZXh0LXdoaXRlIGljb24tbWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImV4cGFuZE1lbnUoKSA/ICdPY3VsdGFyIE1lbnUnIDogJ0V4cGFuZGlyIE1lbnUnXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IG1lbnUgPC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIEBpZihzaG93VHJvY2FFbXByZXNhKXtcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB7e1xyXG4gICAgICAgICAgICAgIGV4cGFuZE1lbnUoKVxyXG4gICAgICAgICAgICAgICAgPyAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nXHJcbiAgICAgICAgICAgICAgICA6ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ1xyXG4gICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudSgpICYmIHNlbGVjdGVkRW1wcmVzYVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUVtcHJlc2EoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbXItMlwiXHJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwidGhpcy5zZWxlY3RlZEVtcHJlc2EucmF6YW9zb2NpYWxcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBuYW1lRW1wcmVzYSh0aGlzLnNlbGVjdGVkRW1wcmVzYS5yYXphb3NvY2lhbCkgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIG10LTFcIj57e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVtcHJlc2EuY3BmY25waiB8IGNwZkNucGpcclxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHBhZGRpbmctc3R5bGUgaC0ycmVtIHctMnJlbSBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZSBpY29uLW1lbnVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VFbXByZXNhKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInVHJvY2FyIGRlIGVtcHJlc2EnXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHN5bmNfYWx0IDwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxwLWRpdmlkZXIgdHlwZT1cInNvbGlkXCI+PC9wLWRpdmlkZXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LW5vbmUgbS0wIGNhcmQtY29udGFpbmVyIG92ZXJmbG93LXktYXV0byBtYXgtaC1mdWxsXCI+XHJcbiAgICAgICAgICA8IS0tIG1lbnVzIC0tPlxyXG4gICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtZW51IG9mIG1lbnVzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW2NsYXNzXT1cImV4cGFuZE1lbnUoKSA/ICdweC0yJyA6ICdweC0xJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gbWVudSBxdWUgbsOjbyB0ZW0gZmlsaG8gLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbGxSb3V0ZShtZW51LmxpbmspXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgIW1lbnUuaW5kbWVudXBhaSAmJiAoIW1lbnUuaWRtZW51cGFpIHx8IG1lbnUuaWRtZW51cGFpID09IDApXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIiFleHBhbmRNZW51KCkgPyBtZW51LmRlc2NyaWNhb21lbnUgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInt7XHJcbiAgICAgICAgICAgICAgICBtZW51LmJnQ29sb3JcclxuICAgICAgICAgICAgICB9fSBtZW51LW9wdGlvbiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBuby11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLXJvdW5kIHRleHQtNzAwIGhvdmVyOmJnLWdyZWVuLTYwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tZHVyYXRpb24tMTUwIHRyYW5zaXRpb24tY29sb3JzIHAtcmlwcGxlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWNlbnRlcl09XCIhZXhwYW5kTWVudSgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtb3B0aW9uLW1lbnUgbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLW1lbnUge3tcclxuICAgICAgICAgICAgICAgICAgZXhwYW5kTWVudSgpID8gJ21sLTEgbXItMicgOiAnJ1xyXG4gICAgICAgICAgICAgICAgfX0gIGljb24taG92ZXItY29sb3Ige3sgbWVudS50ZXh0Q29sb3IgfX1cIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lmljb25lXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBtZW51Lmljb25lIH19XHJcbiAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtb3B0aW9uLW1lbnUgdGV4dC1iYXNlIHRleHQtYmx1ZS05MDAgZm9udC1tZWRpdW0ge3tcclxuICAgICAgICAgICAgICAgICAgbWVudS50ZXh0Q29sb3JcclxuICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudSgpXCJcclxuICAgICAgICAgICAgICAgID57eyBtZW51LmRlc2NyaWNhb21lbnUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPCEtLSBtZW51IGNvbSBmaWxobyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1lbnUuaW5kbWVudXBhaVwiPlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICBwU3R5bGVDbGFzcz1cIkBuZXh0XCJcclxuICAgICAgICAgICAgICAgIGVudGVyQ2xhc3M9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgZW50ZXJBY3RpdmVDbGFzcz1cInNsaWRlZG93blwiXHJcbiAgICAgICAgICAgICAgICBsZWF2ZVRvQ2xhc3M9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgbGVhdmVBY3RpdmVDbGFzcz1cInNsaWRldXBcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJnLWdyZWVuLTYwMF09XCJpc1NlbGVjdGVkTWVudVBhaShtZW51KVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtb3B0aW9uIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIHt7XHJcbiAgICAgICAgICAgICAgICAgICFleHBhbmRNZW51KClcclxuICAgICAgICAgICAgICAgICAgICA/ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJ1xyXG4gICAgICAgICAgICAgICAgfX0gY3Vyc29yLXBvaW50ZXIgYm9yZGVyLXJvdW5kIHRleHQtNzAwIGhvdmVyOmJnLWdyZWVuLTYwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tZHVyYXRpb24tMTUwIHRyYW5zaXRpb24tY29sb3JzIHAtcmlwcGxlXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiIWV4cGFuZE1lbnUoKSA/IG1lbnUuZGVzY3JpY2FvbWVudSA6ICcnXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgZXhwYW5kTWVudS5zZXQoIWV4cGFuZE1lbnUoKSA/ICFleHBhbmRNZW51KCkgOiBleHBhbmRNZW51KCkpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1vcHRpb24tbWVudSBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tbWVudSB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgZXhwYW5kTWVudSgpID8gJ21sLTEgbXItMicgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIH19IGljb24taG92ZXItY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5pY29uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtd2hpdGVdPVwiaXNTZWxlY3RlZE1lbnVQYWkobWVudSlcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgbWVudS5pY29uZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJhc2UgdGV4dC1ibHVlLTkwMCBmb250LW1lZGl1bSBjb250ZW50LW9wdGlvbi1tZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPnt7IG1lbnUuZGVzY3JpY2FvbWVudSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGkgcGktY2hldnJvbi1kb3duIHRleHQtYmx1ZS05MDAgbXItMSBpY29uLWhvdmVyLWNvbG9yIGNvbnRlbnQtb3B0aW9uLW1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnUoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBmaWxob3MgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LW5vbmUgcHktMCBwbC0zIHByLTAgbS0wIHt7XHJcbiAgICAgICAgICAgICAgICAgICEoXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudVNlbGVjaW9uYWRvKCk/LmlkbWVudXBhaSA9PSBtZW51LmlkbWVudSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kTWVudSgpXHJcbiAgICAgICAgICAgICAgICAgICkgJiYgJ2hpZGRlbidcclxuICAgICAgICAgICAgICAgIH19IG92ZXJmbG93LXktaGlkZGVuIHRyYW5zaXRpb24tYWxsIHRyYW5zaXRpb24tZHVyYXRpb24tNDAwIHRyYW5zaXRpb24tZWFzZS1pbi1vdXRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsaG8gb2YgcmV0dXJuTWVudUNoaWxkKG1lbnUuaWRtZW51KTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaUZpbGhvID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbGxSb3V0ZShmaWxoby5saW5rKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGhvLmJnQ29sb3JcclxuICAgICAgICAgICAgICAgICAgICB9fSBtZW51LW9wdGlvbiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBuby11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLXJvdW5kIHRleHQtNzAwIGhvdmVyOmJnLWdyZWVuLTYwMCB0cmFuc2l0aW9uLWR1cmF0aW9uLTE1MCB0cmFuc2l0aW9uLWNvbG9ycyBwLXJpcHBsZSBwLTJcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1vcHRpb24tbWVudSBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tbWVudSB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRNZW51KCkgPyAnbWwtMSBtci0yJyA6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fSBpY29uLWhvdmVyLWNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsaG8uaWNvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbGhvLmljb25lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtb3B0aW9uLW1lbnUgdGV4dC1iYXNlIHRleHQtYmx1ZS05MDAgbWwtNCB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxoby50ZXh0Q29sb3JcclxuICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID57eyBmaWxoby5kZXNjcmljYW9tZW51IH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3Atc2lkZWJhcj5cclxuICB9XHJcblxyXG4gIDwhLS0gVG9wYmFyIC0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwidy1hdXRvIGgtc2NyZWVuIHBhZ2UtY29udGVudCBvdmVyZmxvdy15LWhpZGRlblwiXHJcbiAgICBpZD1cInBhZ2UtY29udGVudFwiXHJcbiAgICBzdHlsZT1cIndpZHRoOiAxMDB2dyAhaW1wb3J0YW50XCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG0tM1wiXHJcbiAgICA+XHJcbiAgICAgIEBpZighc2hvd01lbnUpIHtcclxuICAgICAgPCEtLSBMb2dvIGhvbWUgLS0+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImxvZ29NZW51RXhwYW5kXCIgd2lkdGg9XCIxNTBcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgIDwhLS0gQnJlYWRjcnVtYnMgLS0+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1ibHVlLTkwMCBicmVhZGNydW1iLXRpdGxlXCI+XHJcbiAgICAgICAgICB7eyBicmVhZENydW1iSXRlbXNbYnJlYWRDcnVtYkl0ZW1zLmxlbmd0aCAtIDFdPy5sYWJlbCB9fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8cC1icmVhZGNydW1iXHJcbiAgICAgICAgICAqbmdJZj1cIndpZHRoQ2FyZCA+IDQwMFwiXHJcbiAgICAgICAgICBzdHlsZUNsYXNzPVwiYm9yZGVyLW5vbmUgcC0wIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGgtMnJlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICBbbW9kZWxdPVwiYnJlYWRDcnVtYkl0ZW1zXCJcclxuICAgICAgICAgIFtzdHlsZV09XCJ7IGJhY2tncm91bmRDb2xvcjogJyNlYWVhZWEnIH1cIlxyXG4gICAgICAgICAgKG9uSXRlbUNsaWNrKT1cImNhbGxSb3V0ZSgkZXZlbnQuaXRlbS5yb3V0ZXJMaW5rLCB0cnVlKVwiXHJcbiAgICAgICAgPjwvcC1icmVhZGNydW1iPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfSBcclxuICAgICAgXHJcbiAgICAgIEBpZih3aWR0aENhcmQgPiA5OTIpe1xyXG4gICAgICA8IS0tIGRyb3Bkb3duIHBhcmEgc2VsZcOnw6NvIGRlIGVtcHJlc2EvbGljZW5jYSAtLT5cclxuICAgICAgPGRyb3Bkb3duLW1hc3RlclxyXG4gICAgICAgICpuZ0lmPVwic2hvd0xpY2VuY2FzKClcIlxyXG4gICAgICAgIGNsYXNzPVwidy00MHJlbVwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWRtYXN0ZXJcIlxyXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcclxuICAgICAgICBbbWFzdGVyc109XCJtYXN0ZXJzXCJcclxuICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlTGljZW5zZSgkZXZlbnQpXCJcclxuICAgICAgICAob25TZWxlY3Rpb25WYWx1ZSk9XCJjaGFuZ2VMaWNlbnNlKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvZHJvcGRvd24tbWFzdGVyPlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8IS0tIE5hdmVnYcOnw6NvIGRlIHNpc3RlbWFzIGUgdXN1w6FyaW9zIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidy1hdXRvIGZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgQGZvciAodG9wQWN0aW9uIG9mIHRvcE1lbnVBY3Rpb25zKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BBY3Rpb25cIiAvPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNob3dCdXR0b25BcHBzXCJcclxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LTJyZW0gaC0ycmVtIHRleHQtYmx1ZS05MDAgaG92ZXI6YmctZ3JlZW4tNjAwIGhvdmVyOnRleHQtd2hpdGVcIlxyXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXRoLWxhcmdlXCJcclxuICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgW3RleHRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2lzdGVtYXNQYW5lbC50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiJ1Npc3RlbWFzJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgICAgPjwvcC1idXR0b24+XHJcblxyXG4gICAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93QnV0dG9uVXNlclwiXHJcbiAgICAgICAgICBzdHlsZUNsYXNzPVwidy0ycmVtIGgtMnJlbSB0ZXh0LWJsdWUtOTAwIGhvdmVyOmJnLWdyZWVuLTYwMCBob3Zlcjp0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgIGljb249XCJwaSBwaS11c2VyXCJcclxuICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgW3RleHRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiJ01lbnUgZG8gVXN1w6FyaW8nXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2xlZnQnXCJcclxuICAgICAgICAgIChjbGljayk9XCJtZXVzRGFkb3NQYW5lbC50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvcC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgQGlmKHdpZHRoQ2FyZCA8IDk5Mil7XHJcbiAgICAgIDwhLS0gZHJvcGRvd24gcGFyYSBzZWxlw6fDo28gZGUgZW1wcmVzYS9saWNlbmNhIC0tPlxyXG4gICAgICA8ZHJvcGRvd24tbWFzdGVyXHJcbiAgICAgICAgKm5nSWY9XCJzaG93TGljZW5jYXMoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlkbWFzdGVyXCJcclxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXHJcbiAgICAgICAgW21hc3RlcnNdPVwibWFzdGVyc1wiXHJcbiAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cImNoYW5nZUxpY2Vuc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uU2VsZWN0aW9uVmFsdWUpPVwiY2hhbmdlTGljZW5zZSgkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2Ryb3Bkb3duLW1hc3Rlcj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBDb250YWluZXIgLS0+XHJcbiAgICA8cC1jYXJkXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJtLTMgb3ZlcmZsb3cteS1hdXRvIHt7XHJcbiAgICAgICAgIXNob3dNZW51ICYmICdzbTpvdmVyZmxvdy15LWhpZGRlbidcclxuICAgICAgfX0gY2FyZC1jb250YWluZXJcIlxyXG4gICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6IGhlaWdodENhcmQgLSBhZGp1c3RIZWlnaHRDYXJkKCkgKyAncHgnIH1cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwie3sgd2lkdGhDYXJkIDwgOTkyICYmICdjYXJkLWNvbnRhaW5lcicgfX0gdy1mdWxsIGgtZnVsbFwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3AtY2FyZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBQYWluZWwgZGUgYXBsaWNhdGl2b3MgLS0+XHJcbiAgPHAtb3ZlcmxheVBhbmVsXHJcbiAgICAjc2lzdGVtYXNQYW5lbFxyXG4gICAgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCInMzUwbXMgZWFzZS1vdXQnXCJcclxuICAgIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiJzI1MG1zIGVhc2UtaW4nXCJcclxuICA+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGFpbmVyXCI+XHJcbiAgICAgIDxwIGNsYXNzPVwidGl0bGUtc3R5bGUgbXQtM1wiPlNpc3RlbWFzPC9wPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAgZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtNSBtYi0zXCJcclxuICAgICAgICBzdHlsZT1cIndpZHRoOiAyNzBweDsgaGVpZ2h0OiAxMDAlXCJcclxuICAgICAgPlxyXG4gICAgICAgIEBmb3IgKGFwbGljYXRpdm8gb2YgYXBwczsgdHJhY2sgJGluZGV4KSB7IEBpZihhcGxpY2F0aXZvLnVybGljb25lID09XHJcbiAgICAgICAgXCJodHRwczovL3dvcmstYXNzZXRzLmtlZXZvLmNvbS5ici9pbWcvaWNvbmUta2Vldm9jZW50ZXIucG5nXCIpIHtcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImJ0bi1zaXN0ZW1hIHRleHQteGwgbWQ6dGV4dC0zeGwgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QXBwKGFwbGljYXRpdm8uaWRhcGxpY2F0aXZvKVwiXHJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiYXBsaWNhdGl2bz8uZGVzY3JpY2FvYXBsaWNhdGl2b1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgYXBsaWNhdGl2by5kZXNjcmljYW9hcGxpY2F0aXZvLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgW3NyY109XCJhcGxpY2F0aXZvLnVybGljb25lXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuLXNpc3RlbWEgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiYXBsaWNhdGl2bz8uZGVzY3JpY2FvYXBsaWNhdGl2b1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QXBwKGFwbGljYXRpdm8uaWRhcGxpY2F0aXZvKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICB9IH1cclxuXHJcbiAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgYXBsaWNhdGl2byBvZiBhcHBzXCJcclxuICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgIHBSaXBwbGVcclxuICAgICAgICAgIGNsYXNzPVwiYnRuLXNpc3RlbWEtMiBidG4tc2lzdGVtYSBob3Zlci1idG4tY29yLXBhZHJhbyByZW1vdmUtZm9jdXMgaC00cmVtIHctNHJlbVwiXHJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiYXBsaWNhdGl2bz8uZGVzY3JpY2FvYXBsaWNhdGl2b1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QXBwKGFwbGljYXRpdm8uaWRhcGxpY2F0aXZvKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgYXBsaWNhdGl2by5ub21lYXBsaWNhdGl2by5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC1vdmVybGF5UGFuZWw+XHJcblxyXG4gIDwhLS0gUGFpbmVsIGRvIHVzdcOhcmlvIC0tPlxyXG4gIDxwLW92ZXJsYXlQYW5lbFxyXG4gICAgI21ldXNEYWRvc1BhbmVsXHJcbiAgICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cIiczNTBtcyBlYXNlLW91dCdcIlxyXG4gICAgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCInMjUwbXMgZWFzZS1pbidcIlxyXG4gID5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250YWluZXJcIj5cclxuICAgICAgPHAgY2xhc3M9XCJ0aXRsZS1zdHlsZSBtdC0zXCI+XHJcbiAgICAgICAgT2zDoSwge3sgdXNlck5hbWUgPyB1c2VyTmFtZS5zcGxpdChcIiBcIilbMF0gOiBcIlVzdcOhcmlvXCIgfX0hXHJcbiAgICAgIDwvcD5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTUgbWItM1wiPjwvZGl2PlxyXG5cclxuICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgaWNvbj1cInBpIHBpLWxvY2tcIlxyXG4gICAgICAgIGxhYmVsPVwiQWNlc3NhciBLZWVwYXNzXCJcclxuICAgICAgICAob25DbGljayk9XCJhY2Nlc3NLZWVQYXNzKCRldmVudClcIlxyXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJib3JkZXItbm9yb3VuZCB3LWZ1bGwgdGV4dC1ibHVlLTkwMFwiXHJcbiAgICAgICAgW3RleHRdPVwidHJ1ZVwiXHJcbiAgICAgID5cclxuICAgICAgPC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIGljb249XCJwaSBwaS1zaWduLW91dFwiXHJcbiAgICAgICAgbGFiZWw9XCJTYWlyXCJcclxuICAgICAgICAob25DbGljayk9XCJsb2dvdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgc3R5bGVDbGFzcz1cImJvcmRlci1ub3JvdW5kIHctZnVsbCB0ZXh0LWJsdWUtOTAwXCJcclxuICAgICAgICBbdGV4dF09XCJ0cnVlXCJcclxuICAgICAgPlxyXG4gICAgICA8L3AtYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3Atb3ZlcmxheVBhbmVsPlxyXG48L2Rpdj5cclxuIl19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxheW91dC9sYXlvdXQva3YtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxheW91dC9sYXlvdXQva3YtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFFTCxTQUFTLEVBRVQsZUFBZSxFQUVmLFlBQVksRUFDWixZQUFZLEVBRVosS0FBSyxFQUNMLEtBQUssRUFHTCxNQUFNLEVBQ04sTUFBTSxFQUdOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QnZCLE1BQU0sT0FBTyxpQkFBaUI7SUEyRTVCLFlBQ1UsR0FBc0IsRUFDdEIsRUFBZSxFQUNiLE1BQWMsRUFDZCxjQUE4QjtRQUhoQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQTlFakMsU0FBSSxHQVVQLEVBQUUsQ0FBQztRQUVBLG9CQUFlLEdBR2xCLEVBQUUsQ0FBQztRQUVBLFlBQU8sR0FLVixFQUFFLENBQUM7UUFFQSxVQUFLLEdBWVIsRUFBRSxDQUFDO1FBRVQsZUFBVSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQVF6QixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQix3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFDcEMsYUFBUSxHQUFZLElB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VUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDdEQsQ0FBQzs4R0F4UVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsNnJHQ2xEOUIsd25kQXlaQTs7MkZEdldhLGlCQUFpQjtrQkFoQjdCLFNBQVM7K0JBQ0UsV0FBVztrS0FnQlosSUFBSTtzQkFBWixLQUFLO2dCQVlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFlRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUVzQixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0ssYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQTBJbkIsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGNvbnRlbnRDaGlsZHJlbixcbiAgZWZmZWN0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5wdXQsXG4gIElucHV0LFxuICBtb2RlbCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE92ZXJsYXlQYW5lbCB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2t2LWxheW91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9rdi1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gYW5pbWF0aW9uczogW1xuICAvLyAgIHRyaWdnZXIoJ3NpZGViYXJXaWR0aFRyaWdnZXInLCBbXG4gIC8vICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoe1xuICAvLyAgICAgICB3aWR0aDogJzYwcHgnXG4gIC8vICAgICB9KSksXG4gIC8vICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7XG4gIC8vICAgICAgIHdpZHRoOiAnMzU5cHgnXG4gIC8vICAgICB9KSksXG4gIC8vICAgICB0cmFuc2l0aW9uKCdjb2xsYXBzZWQgPD0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnKSlcbiAgLy8gICBdKVxuICAvLyBdXG59KVxuZXhwb3J0IGNsYXNzIEt2TGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBhcHBzOiB7XG4gICAgaWRhcGxpY2F0aXZvOiBudW1iZXI7XG4gICAgaWRzaXN0ZW1hOiBudW1iZXI7XG4gICAgbm9tZWFwbGljYXRpdm86IHN0cmluZztcbiAgICBkZXNjcmljYW9hcGxpY2F0aXZvOiBzdHJpbmc7XG4gICAgcm90YXBhZHJhbzogc3RyaW5nO1xuICAgIGluZHB1YmxpY2FkbzogYm9vbGVhbjtcbiAgICBpbmRwdWJsaWNhY2FvZ3JhZGF0aXZhOiBib29sZWFuO1xuICAgIGluZGV4aWdlZW1wcmVzYWVudHJhZGE6IGJvb2xlYW47XG4gICAgdXJsaWNvbmU/OiBzdHJpbmc7XG4gIH1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGJyZWFkQ3J1bWJJdGVtczoge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgcm91dGVyTGluazogc3RyaW5nO1xuICB9W10gPSBbXTtcblxuICBASW5wdXQoKSBtYXN0ZXJzOiB7XG4gICAgaWRtYXN0ZXI6IG51bWJlcjtcbiAgICBjcGZjbnBqOiBzdHJpbmc7XG4gICAgbm9tZTogc3RyaW5nO1xuICAgIGlkbWFzdGVybm9tZTogc3RyaW5nO1xuICB9W10gPSBbXTtcblxuICBASW5wdXQoKSBtZW51czoge1xuICAgIGlkbWVudTogbnVtYmVyO1xuICAgIGlkbWVudXBhaTogbnVtYmVyIHwgbnVsbDtcbiAgICBpZGFwbGljYXRpdm86IG51bWJlcjtcbiAgICBkZXNjcmljYW9tZW51OiBzdHJpbmc7XG4gICAgbGluazogc3RyaW5nIHwgbnVsbDtcbiAgICBpY29uZTogc3RyaW5nIHwgbnVsbDtcbiAgICBpbmRwdWJsaWNhZG86IGJvb2xlYW47XG4gICAgaW5kbWVudXBhaTogYm9vbGVhbjtcbiAgICBsaXN0YWlkdmlzYW9tZW51OiBudW1iZXJbXTtcbiAgICBiZ0NvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfVtdID0gW107XG5cbiAgZXhwYW5kTWVudSA9IG1vZGVsPGJvb2xlYW4+KHRydWUpO1xuICBASW5wdXQoKSBsb2dvTWVudUV4cGFuZCE6IGFueTtcbiAgQElucHV0KCkgbG9nb01lbnVIaWRlITogYW55O1xuXG4gIEBJbnB1dCgpIHNlbGVjdGVkQXBwITogbnVtYmVyO1xuICBASW5wdXQoKSBzZWxlY3RlZEVtcHJlc2EhOiBhbnk7XG4gIEBJbnB1dCgpIHNlbGVjdGVkTWFzdGVyITogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHNob3dCdXR0b25BcHBzOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0J1dHRvblVzZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RXhwYW5kTWVudTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dEcm9wZG93bkxpY2VuY2E6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93TWVudTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dUcm9jYUVtcHJlc2E6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdXNlck5hbWU6IHN0cmluZyA9ICdVc3XDoXJpbyc7XG5cbiAgQE91dHB1dCgpIGFjY2Vzc0tlZVBhc3NFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNoYW5nZUVtcHJlc2FFbWl0OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2VMaWNlbnNlRW1pdDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBleHBhbmRNZW51RW1pdDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbG9nb3V0RW1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RBcHBFbWl0OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG5hdmlnYXRlVG9EZWZhdWx0Um91dGVFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdtZXVzRGFkb3NQYW5lbCcpIG1ldXNEYWRvc1BhbmVsITogT3ZlcmxheVBhbmVsO1xuICBAVmlld0NoaWxkKCdzaWRlYmFyUmVmJykgc2lkZWJhclJlZiE6IFNpZGViYXI7XG4gIEBWaWV3Q2hpbGQoJ3Npc3RlbWFzUGFuZWwnKSBzaXN0ZW1hc1BhbmVsITogT3ZlcmxheVBhbmVsO1xuXG4gIHRvcE1lbnVBY3Rpb25zID0gY29udGVudENoaWxkcmVuPFRlbXBsYXRlUmVmPGFueT4+KCd0b3BNZW51QWN0aW9uJyk7XG5cbiAgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBoZWlnaHRDYXJkITogbnVtYmVyO1xuICBtb3VzZU92ZXJGaWxob0luZGV4OiBhbnk7XG4gIG1vdXNlT3ZlckluZGV4OiBhbnk7XG4gIHdpZHRoQ2FyZCE6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7fVxuXG4gIHB1YmxpYyBhY2Nlc3NLZWVQYXNzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNpc3RlbWFzUGFuZWwuaGlkZSgpO1xuICAgIHRoaXMuYWNjZXNzS2VlUGFzc0VtaXQuZW1pdChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgYWRqdXN0SGVpZ2h0Q2FyZCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLndpZHRoQ2FyZCA+IDQwMCkge1xuICAgICAgaWYgKHRoaXMud2lkdGhDYXJkIDwgOTkyICYmIHRoaXMuc2hvd0xpY2VuY2FzKCkpIHJldHVybiAxNTU7XG5cbiAgICAgIGlmICh0aGlzLmJyZWFkQ3J1bWJJdGVtcy5sZW5ndGggPiAwKSByZXR1cm4gMTA1O1xuICAgICAgZWxzZSByZXR1cm4gODU7XG4gICAgfVxuXG4gICAgcmV0dXJuIDgzO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RXaWR0aENhcmQoKSB7XG4gICAgdGhpcy5oZWlnaHRDYXJkID0gTnVtYmVyKFxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtY29udGVudCcpPy5vZmZzZXRIZWlnaHRcbiAgICApO1xuICAgIGlmICh0aGlzLnNob3dNZW51KVxuICAgICAgdGhpcy53aWR0aENhcmQgPVxuICAgICAgICBOdW1iZXIod2luZG93LmlubmVyV2lkdGgpIC0gKHRoaXMuZXhwYW5kTWVudSgpID8gMzMzIDogOTMpO1xuICAgIGVsc2UgdGhpcy53aWR0aENhcmQgPSBOdW1iZXIod2luZG93LmlubmVyV2lkdGgpO1xuICB9XG5cbiAgcHVibGljIGNhbGxSb3V0ZShlOiBhbnksIGV4cGFuZD86IGJvb2xlYW4pIHtcbiAgICBpZiAoIWV4cGFuZCAmJiAhdGhpcy5leHBhbmRNZW51KCkpXG4gICAgICB0aGlzLmV4cGFuZE1lbnUudXBkYXRlKChjdXJyZW50VmFsdWU6IGJvb2xlYW4pID0+ICFjdXJyZW50VmFsdWUpO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChlKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VFbXByZXNhKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNoYW5nZUVtcHJlc2FFbWl0LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUxpY2Vuc2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY2hhbmdlTGljZW5zZUVtaXQuZW1pdChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIGV4cGFuZE1lbnVFdmVudCgpIHtcbiAgICB0aGlzLmV4cGFuZE1lbnVFbWl0LmVtaXQodGhpcy5leHBhbmRNZW51KCkpO1xuICB9XG5cbiAgcHVibGljIGxvZ291dChldmVudDogYW55KSB7XG4gICAgdGhpcy5zaXN0ZW1hc1BhbmVsLmhpZGUoKTtcbiAgICB0aGlzLmxvZ291dEVtaXQuZW1pdChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIG1lbnVzUGVyQXBwKCkge1xuICAgIGlmICh0aGlzLnJvdXRlci51cmwgJiYgdGhpcy5tZW51cyAmJiB0aGlzLm1lbnVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0aGlzLnJvdXRlci51cmwgPT09ICcvJykge1xuICAgICAgICAvLyB0aGlzLm5hdmlnYXRlVG9GaXJzdE1lbnUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1lbnVTZWxlY2lvbmFkbyA9IHRoaXMubWVudXMuZmluZChcbiAgICAgICAgICAobWVudTogYW55KSA9PlxuICAgICAgICAgICAgbWVudS5saW5rICYmIG1lbnUubGluay5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwuc2xpY2UoMSkpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChtZW51U2VsZWNpb25hZG8pIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9NZW51KG1lbnVTZWxlY2lvbmFkbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaXN0ZW1hc1BhbmVsKSB7XG4gICAgICB0aGlzLnNpc3RlbWFzUGFuZWwuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuYW1lRW1wcmVzYShub21lTGljZW5jYTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAobm9tZUxpY2VuY2EpIHtcbiAgICAgIGlmIChub21lTGljZW5jYS5sZW5ndGggPiAyMykgcmV0dXJuIG5vbWVMaWNlbmNhLnN1YnN0cmluZygwLCAyMykgKyAnLi4uJztcbiAgICAgIGVsc2UgcmV0dXJuIG5vbWVMaWNlbmNhO1xuICAgIH0gZWxzZSByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9GaXJzdE1lbnUoKTogdm9pZCB7XG4gICAgY29uc3QgZmlyc3RNZW51ID0gdGhpcy5tZW51c1swXTtcbiAgICBpZiAoZmlyc3RNZW51LmluZG1lbnVwYWkpIHtcbiAgICAgIGNvbnN0IGZpbGhvcyA9IHRoaXMucmV0dXJuTWVudUNoaWxkKGZpcnN0TWVudS5pZG1lbnUpO1xuICAgICAgaWYgKGZpbGhvcykge1xuICAgICAgICB0aGlzLmNhbGxSb3V0ZShmaWxob3NbMF0ubGluaywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FsbFJvdXRlKGZpcnN0TWVudS5saW5rLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9NZW51KG1lbnU6IGFueSk6IHZvaWQge1xuICAgIGlmIChtZW51Lm1lbnVwYWkpIHtcbiAgICAgIGNvbnN0IGZpbGhvcyA9IHRoaXMucmV0dXJuTWVudUNoaWxkKG1lbnUuaWRtZW51KTtcbiAgICAgIGlmIChmaWxob3MpIHtcbiAgICAgICAgdGhpcy5jYWxsUm91dGUoZmlsaG9zWzBdLmxpbmssIHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbGxSb3V0ZShtZW51LmxpbmssIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG1lbnVTZWxlY2lvbmFkbyA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBsYXRlc3RSZXF1ZXN0ID0gY2hhbmdlc1snbWVudXMnXTtcbiAgICBpZiAobGF0ZXN0UmVxdWVzdD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm1lbnVzUGVyQXBwKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY2lvbmFyTWVudSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZG1hc3RlcjogW3RoaXMuc2VsZWN0ZWRNYXN0ZXIsIFtdXSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRqdXN0V2lkdGhDYXJkKCk7XG4gICAgdGhpcy5leHBhbmRNZW51RXZlbnQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgdGhpcy5hZGp1c3RXaWR0aENhcmQoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpc1NlbGVjdGVkTWVudVBhaShtZW51OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuZXhwYW5kTWVudSgpICYmIG1lbnUuaW5kbWVudXBhaSlcbiAgICAgIHJldHVybiBtZW51LmlkbWVudSA9PT0gdGhpcy5tZW51U2VsZWNpb25hZG8oKT8uaWRtZW51cGFpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc2VsZWNpb25hck1lbnUoKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh0aGlzLnJvdXRlci51cmwsIHdpbmRvdy5vcmlnaW4pO1xuXG4gICAgY29uc3QgY3VycmVudFBhdGggPSB1cmwucGF0aG5hbWU7XG4gICAgY29uc3QgcHVyZVBhdGggPSBjdXJyZW50UGF0aC5tYXRjaCgvXlteO10qL2kpO1xuXG4gICAgY29uc3QgcGF0aHMgPSBwdXJlUGF0aCFbMF07XG5cbiAgICB0aGlzLm1lbnVzID0gdGhpcy5tZW51cy5tYXAoKG1lbnUpID0+IHtcbiAgICAgIGlmIChtZW51LmxpbmspIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5tZW51LFxuICAgICAgICAgIGJnQ29sb3I6IHBhdGhzLmluY2x1ZGVzKG1lbnUubGluayEpID8gJ2JnLWdyZWVuLTYwMCcgOiAnJyxcbiAgICAgICAgICB0ZXh0Q29sb3I6IHBhdGhzLmluY2x1ZGVzKG1lbnUubGluayEpID8gJ3RleHQtd2hpdGUnIDogJycsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbWVudTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG1lbnUgPSB0aGlzLm1lbnVzLmZpbmQoKG1lbnU6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIG1lbnUubGluayAmJiBwYXRocy5pbmNsdWRlcyhtZW51LmxpbmshKTtcbiAgICB9KTtcblxuICAgIHRoaXMubWVudVNlbGVjaW9uYWRvLnNldChtZW51KTtcbiAgfVxuXG4gIHB1YmxpYyByZXR1cm5NZW51Q2hpbGQoaWRtZW51OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5tZW51cy5maWx0ZXIoKHg6IGFueSkgPT4geC5pZG1lbnVwYWkgPT0gaWRtZW51KTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBcHAoaWRhcGxpY2F0aXZvOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdEFwcEVtaXQuZW1pdChpZGFwbGljYXRpdm8pO1xuICB9XG5cbiAgcHVibGljIHNob3dMaWNlbmNhcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93RHJvcGRvd25MaWNlbmNhICYmICh0aGlzLm1hc3RlcnMgfHwgW10pLmxlbmd0aCA+IDE7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZE1lbnUudXBkYXRlKChjdXJyZW50VmFsdWU6IGJvb2xlYW4pID0+ICFjdXJyZW50VmFsdWUpO1xuICAgIHRoaXMuZXhwYW5kTWVudUV2ZW50KCk7XG4gIH1cblxuICBuYXZpZ2F0ZVRvRGVmYXVsdFJvdXRlKCkge1xuICAgIHRoaXMubmF2aWdhdGVUb0RlZmF1bHRSb3V0ZUVtaXQuZW1pdCgpO1xuICB9XG5cbiAgZ2V0U2lkZWJhclN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZE1lbnUoKSA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgb3ZlcmZsb3cteS1oaWRkZW4gdy0gZnVsbC1jb250YWluZXJcIj5cbiAgQGlmIChzaG93TWVudSkge1xuICA8ZGl2IFtzdHlsZV09XCJ7IG1pbldpZHRoOiBleHBhbmRNZW51KCkgPyAnMzAwcHgnIDogJzYwcHgnIH1cIj48L2Rpdj5cbiAgfSBAaWYoc2hvd01lbnUpIHtcbiAgPHAtc2lkZWJhclxuICAgICNzaWRlYmFyUmVmXG4gICAgW3Zpc2libGVdPVwidHJ1ZVwiXG4gICAgW3Nob3dDbG9zZUljb25dPVwiZmFsc2VcIlxuICAgIFttb2RhbF09XCJmYWxzZVwiXG4gICAgW3N0eWxlXT1cInsgd2lkdGg6IGV4cGFuZE1lbnUoKSA/ICczMDBweCcgOiAnNjBweCcgfVwiXG4gICAgY2xhc3M9XCJzaWRlYmFyLWFuaW1hdGlvblwiXG4gID5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGxlc3NcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGdhcC0yIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZsZXgtc2hyaW5rLTAgbXgtMiBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IHt7XG4gICAgICAgICAgICAgIGV4cGFuZE1lbnUoKSA/ICdmbGV4LXJvdycgOiAnZmxleC1jb2x1bW4nXG4gICAgICAgICAgICB9fSBhbGlnbi1pdGVtcy1jZW50ZXIge3tcbiAgICAgICAgICAgICAgZXhwYW5kTWVudSgpXG4gICAgICAgICAgICAgICAgPyAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nXG4gICAgICAgICAgICAgICAgOiAnanVzdGlmeS1jb250ZW50LWNlbnRlcidcbiAgICAgICAgICAgIH19IHB5LTNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gTG9nbyBwYXJhIG8gbWVudSBleHBhbmRpZG8gLS0+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudSgpICYmIGxvZ29NZW51RXhwYW5kXCJcbiAgICAgICAgICAgICAgYWx0PVwiQ2FyZFwiXG4gICAgICAgICAgICAgIFtzcmNdPVwibG9nb01lbnVFeHBhbmRcIlxuICAgICAgICAgICAgICBoZWlnaHQ9XCI1MFwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiYXV0b1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcC0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9EZWZhdWx0Um91dGUoKVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8IS0tIExvZ28gcGFyYSBvIG1lbnUgbWluaW1pemFkby0tPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAqbmdJZj1cIiFleHBhbmRNZW51KCkgJiYgbG9nb01lbnVIaWRlXCJcbiAgICAgICAgICAgICAgYWx0PVwiQ2FyZFwiXG4gICAgICAgICAgICAgIFtzcmNdPVwibG9nb01lbnVIaWRlXCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiNTBcIlxuICAgICAgICAgICAgICB3aWR0aD1cImF1dG9cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1iLTIgcC0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9EZWZhdWx0Um91dGUoKVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8IS0tIFRvZ2dsZSBtZW51IC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFeHBhbmRNZW51XCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwYWRkaW5nLXN0eWxlIGgtMnJlbSB3LTJyZW0gaG92ZXI6YmctZ3JlZW4tNjAwIGhvdmVyOnRleHQtd2hpdGUgaWNvbi1tZW51XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJleHBhbmRNZW51KCkgPyAnT2N1bHRhciBNZW51JyA6ICdFeHBhbmRpciBNZW51J1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBtZW51IDwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmKHNob3dUcm9jYUVtcHJlc2Epe1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIge3tcbiAgICAgICAgICAgICAgZXhwYW5kTWVudSgpXG4gICAgICAgICAgICAgICAgPyAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nXG4gICAgICAgICAgICAgICAgOiAnanVzdGlmeS1jb250ZW50LWNlbnRlcidcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudSgpICYmIHNlbGVjdGVkRW1wcmVzYVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VFbXByZXNhKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zbSBmb250LXNlbWlib2xkIG1yLTJcIlxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ0aGlzLnNlbGVjdGVkRW1wcmVzYS5yYXphb3NvY2lhbFwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG5hbWVFbXByZXNhKHRoaXMuc2VsZWN0ZWRFbXByZXNhLnJhemFvc29jaWFsKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBtdC0xXCI+e3tcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW1wcmVzYS5jcGZjbnBqIHwgY3BmQ25walxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcGFkZGluZy1zdHlsZSBoLTJyZW0gdy0ycmVtIGhvdmVyOmJnLWdyZWVuLTYwMCBob3Zlcjp0ZXh0LXdoaXRlIGljb24tbWVudVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VFbXByZXNhKCRldmVudClcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ1Ryb2NhciBkZSBlbXByZXNhJ1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBzeW5jX2FsdCA8L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cC1kaXZpZGVyIHR5cGU9XCJzb2xpZFwiPjwvcC1kaXZpZGVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3Qtbm9uZSBtLTAgY2FyZC1jb250YWluZXIgb3ZlcmZsb3cteS1hdXRvIG1heC1oLWZ1bGxcIj5cbiAgICAgICAgICA8IS0tIG1lbnVzIC0tPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1lbnUgb2YgbWVudXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImV4cGFuZE1lbnUoKSA/ICdweC0yJyA6ICdweC0xJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBtZW51IHF1ZSBuw6NvIHRlbSBmaWxobyAtLT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIChjbGljayk9XCJjYWxsUm91dGUobWVudS5saW5rKVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIW1lbnUuaW5kbWVudXBhaSAmJiAoIW1lbnUuaWRtZW51cGFpIHx8IG1lbnUuaWRtZW51cGFpID09IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIiFleHBhbmRNZW51KCkgPyBtZW51LmRlc2NyaWNhb21lbnUgOiAnJ1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwie3tcbiAgICAgICAgICAgICAgICBtZW51LmJnQ29sb3JcbiAgICAgICAgICAgICAgfX0gbWVudS1vcHRpb24gZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbm8tdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyIGJvcmRlci1yb3VuZCB0ZXh0LTcwMCBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWR1cmF0aW9uLTE1MCB0cmFuc2l0aW9uLWNvbG9ycyBwLXJpcHBsZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXT1cIiFleHBhbmRNZW51KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1vcHRpb24tbWVudSBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tbWVudSB7e1xuICAgICAgICAgICAgICAgICAgZXhwYW5kTWVudSgpID8gJ21sLTEgbXItMicgOiAnJ1xuICAgICAgICAgICAgICAgIH19ICBpY29uLWhvdmVyLWNvbG9yIHt7IG1lbnUudGV4dENvbG9yIH19XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuaWNvbmVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgbWVudS5pY29uZSB9fVxuICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LW9wdGlvbi1tZW51IHRleHQtYmFzZSB0ZXh0LWJsdWUtOTAwIGZvbnQtbWVkaXVtIHt7XG4gICAgICAgICAgICAgICAgICBtZW51LnRleHRDb2xvclxuICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnUoKVwiXG4gICAgICAgICAgICAgICAgPnt7IG1lbnUuZGVzY3JpY2FvbWVudSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8IS0tIG1lbnUgY29tIGZpbGhvIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1lbnUuaW5kbWVudXBhaVwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICBwU3R5bGVDbGFzcz1cIkBuZXh0XCJcbiAgICAgICAgICAgICAgICBlbnRlckNsYXNzPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBlbnRlckFjdGl2ZUNsYXNzPVwic2xpZGVkb3duXCJcbiAgICAgICAgICAgICAgICBsZWF2ZVRvQ2xhc3M9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgIGxlYXZlQWN0aXZlQ2xhc3M9XCJzbGlkZXVwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYmctZ3JlZW4tNjAwXT1cImlzU2VsZWN0ZWRNZW51UGFpKG1lbnUpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtb3B0aW9uIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIHt7XG4gICAgICAgICAgICAgICAgICAhZXhwYW5kTWVudSgpXG4gICAgICAgICAgICAgICAgICAgID8gJ2p1c3RpZnktY29udGVudC1jZW50ZXInXG4gICAgICAgICAgICAgICAgICAgIDogJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJ1xuICAgICAgICAgICAgICAgIH19IGN1cnNvci1wb2ludGVyIGJvcmRlci1yb3VuZCB0ZXh0LTcwMCBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWR1cmF0aW9uLTE1MCB0cmFuc2l0aW9uLWNvbG9ycyBwLXJpcHBsZVwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiIWV4cGFuZE1lbnUoKSA/IG1lbnUuZGVzY3JpY2FvbWVudSA6ICcnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICBleHBhbmRNZW51LnNldCghZXhwYW5kTWVudSgpID8gIWV4cGFuZE1lbnUoKSA6IGV4cGFuZE1lbnUoKSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtb3B0aW9uLW1lbnUgbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLW1lbnUge3tcbiAgICAgICAgICAgICAgICAgICAgICBleHBhbmRNZW51KCkgPyAnbWwtMSBtci0yJyA6ICcnXG4gICAgICAgICAgICAgICAgICAgIH19IGljb24taG92ZXItY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuaWNvbmVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC13aGl0ZV09XCJpc1NlbGVjdGVkTWVudVBhaShtZW51KVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IG1lbnUuaWNvbmUgfX1cbiAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1iYXNlIHRleHQtYmx1ZS05MDAgZm9udC1tZWRpdW0gY29udGVudC1vcHRpb24tbWVudVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IG1lbnUuZGVzY3JpY2FvbWVudSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBpIHBpLWNoZXZyb24tZG93biB0ZXh0LWJsdWUtOTAwIG1yLTEgaWNvbi1ob3Zlci1jb2xvciBjb250ZW50LW9wdGlvbi1tZW51XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudSgpXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgPCEtLSBmaWxob3MgLS0+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3Qtbm9uZSBweS0wIHBsLTMgcHItMCBtLTAge3tcbiAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgIG1lbnVTZWxlY2lvbmFkbygpPy5pZG1lbnVwYWkgPT0gbWVudS5pZG1lbnUgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRNZW51KClcbiAgICAgICAgICAgICAgICAgICkgJiYgJ2hpZGRlbidcbiAgICAgICAgICAgICAgICB9fSBvdmVyZmxvdy15LWhpZGRlbiB0cmFuc2l0aW9uLWFsbCB0cmFuc2l0aW9uLWR1cmF0aW9uLTQwMCB0cmFuc2l0aW9uLWVhc2UtaW4tb3V0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxobyBvZiByZXR1cm5NZW51Q2hpbGQobWVudS5pZG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaUZpbGhvID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJleHBhbmRNZW51KClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FsbFJvdXRlKGZpbGhvLmxpbmspXCJcbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsaG8uYmdDb2xvclxuICAgICAgICAgICAgICAgICAgICB9fSBtZW51LW9wdGlvbiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBuby11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLXJvdW5kIHRleHQtNzAwIGhvdmVyOmJnLWdyZWVuLTYwMCB0cmFuc2l0aW9uLWR1cmF0aW9uLTE1MCB0cmFuc2l0aW9uLWNvbG9ycyBwLXJpcHBsZSBwLTJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1vcHRpb24tbWVudSBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tbWVudSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kTWVudSgpID8gJ21sLTEgbXItMicgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgIH19IGljb24taG92ZXItY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsaG8uaWNvbmVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZmlsaG8uaWNvbmUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1vcHRpb24tbWVudSB0ZXh0LWJhc2UgdGV4dC1ibHVlLTkwMCBtbC00IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxoby50ZXh0Q29sb3JcbiAgICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJleHBhbmRNZW51KClcIlxuICAgICAgICAgICAgICAgICAgICAgID57eyBmaWxoby5kZXNjcmljYW9tZW51IH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXNpZGViYXI+XG4gIH1cblxuICA8IS0tIFRvcGJhciAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwidy1hdXRvIGgtc2NyZWVuIHBhZ2UtY29udGVudCBvdmVyZmxvdy15LWhpZGRlblwiXG4gICAgaWQ9XCJwYWdlLWNvbnRlbnRcIlxuICAgIHN0eWxlPVwid2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnRcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbS0zXCJcbiAgICA+XG4gICAgICBAaWYoIXNob3dNZW51KSB7XG4gICAgICA8IS0tIExvZ28gaG9tZSAtLT5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxpbWcgW3NyY109XCJsb2dvTWVudUV4cGFuZFwiIHdpZHRoPVwiMTUwXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIEJyZWFkY3J1bWJzIC0tPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1ibHVlLTkwMCBicmVhZGNydW1iLXRpdGxlXCI+XG4gICAgICAgICAge3sgYnJlYWRDcnVtYkl0ZW1zW2JyZWFkQ3J1bWJJdGVtcy5sZW5ndGggLSAxXT8ubGFiZWwgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cC1icmVhZGNydW1iXG4gICAgICAgICAgKm5nSWY9XCJ3aWR0aENhcmQgPiA0MDBcIlxuICAgICAgICAgIHN0eWxlQ2xhc3M9XCJib3JkZXItbm9uZSBwLTAgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaC0ycmVtICFpbXBvcnRhbnQ7XCJcbiAgICAgICAgICBbbW9kZWxdPVwiYnJlYWRDcnVtYkl0ZW1zXCJcbiAgICAgICAgICBbc3R5bGVdPVwieyBiYWNrZ3JvdW5kQ29sb3I6ICcjZWFlYWVhJyB9XCJcbiAgICAgICAgICAob25JdGVtQ2xpY2spPVwiY2FsbFJvdXRlKCRldmVudC5pdGVtLnJvdXRlckxpbmssIHRydWUpXCJcbiAgICAgICAgPjwvcC1icmVhZGNydW1iPlxuICAgICAgPC9kaXY+XG4gICAgICB9IFxuICAgICAgXG4gICAgICBAaWYod2lkdGhDYXJkID4gOTkyKXtcbiAgICAgIDwhLS0gZHJvcGRvd24gcGFyYSBzZWxlw6fDo28gZGUgZW1wcmVzYS9saWNlbmNhIC0tPlxuICAgICAgPGRyb3Bkb3duLW1hc3RlclxuICAgICAgICAqbmdJZj1cInNob3dMaWNlbmNhcygpXCJcbiAgICAgICAgY2xhc3M9XCJ3LTQwcmVtXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWRtYXN0ZXJcIlxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgICAgIFttYXN0ZXJzXT1cIm1hc3RlcnNcIlxuICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlTGljZW5zZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uU2VsZWN0aW9uVmFsdWUpPVwiY2hhbmdlTGljZW5zZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvZHJvcGRvd24tbWFzdGVyPlxuICAgICAgfVxuXG4gICAgICA8IS0tIE5hdmVnYcOnw6NvIGRlIHNpc3RlbWFzIGUgdXN1w6FyaW9zIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInctYXV0byBmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICBAZm9yICh0b3BBY3Rpb24gb2YgdG9wTWVudUFjdGlvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BBY3Rpb25cIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93QnV0dG9uQXBwc1wiXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctMnJlbSBoLTJyZW0gdGV4dC1ibHVlLTkwMCBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXRoLWxhcmdlXCJcbiAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgICAgICAoY2xpY2spPVwic2lzdGVtYXNQYW5lbC50b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgICAgW3BUb29sdGlwXT1cIidTaXN0ZW1hcydcIlxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2xlZnQnXCJcbiAgICAgICAgPjwvcC1idXR0b24+XG5cbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93QnV0dG9uVXNlclwiXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctMnJlbSBoLTJyZW0gdGV4dC1ibHVlLTkwMCBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXVzZXJcIlxuICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgIFt0ZXh0XT1cInRydWVcIlxuICAgICAgICAgIFtwVG9vbHRpcF09XCInTWVudSBkbyBVc3XDoXJpbydcIlxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2xlZnQnXCJcbiAgICAgICAgICAoY2xpY2spPVwibWV1c0RhZG9zUGFuZWwudG9nZ2xlKCRldmVudClcIlxuICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYod2lkdGhDYXJkIDwgOTkyKXtcbiAgICAgIDwhLS0gZHJvcGRvd24gcGFyYSBzZWxlw6fDo28gZGUgZW1wcmVzYS9saWNlbmNhIC0tPlxuICAgICAgPGRyb3Bkb3duLW1hc3RlclxuICAgICAgICAqbmdJZj1cInNob3dMaWNlbmNhcygpXCJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpZG1hc3RlclwiXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgW21hc3RlcnNdPVwibWFzdGVyc1wiXG4gICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VMaWNlbnNlKCRldmVudClcIlxuICAgICAgICAob25TZWxlY3Rpb25WYWx1ZSk9XCJjaGFuZ2VMaWNlbnNlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9kcm9wZG93bi1tYXN0ZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnRhaW5lciAtLT5cbiAgICA8cC1jYXJkXG4gICAgICBzdHlsZUNsYXNzPVwibS0zIG92ZXJmbG93LXktYXV0byB7e1xuICAgICAgICAhc2hvd01lbnUgJiYgJ3NtOm92ZXJmbG93LXktaGlkZGVuJ1xuICAgICAgfX0gY2FyZC1jb250YWluZXJcIlxuICAgICAgW3N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHRDYXJkIC0gYWRqdXN0SGVpZ2h0Q2FyZCgpICsgJ3B4JyB9XCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwie3sgd2lkdGhDYXJkIDwgOTkyICYmICdjYXJkLWNvbnRhaW5lcicgfX0gdy1mdWxsIGgtZnVsbFwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L3AtY2FyZD5cbiAgPC9kaXY+XG5cbiAgPCEtLSBQYWluZWwgZGUgYXBsaWNhdGl2b3MgLS0+XG4gIDxwLW92ZXJsYXlQYW5lbFxuICAgICNzaXN0ZW1hc1BhbmVsXG4gICAgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCInMzUwbXMgZWFzZS1vdXQnXCJcbiAgICBbaGlkZVRyYW5zaXRpb25PcHRpb25zXT1cIicyNTBtcyBlYXNlLWluJ1wiXG4gID5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGFpbmVyXCI+XG4gICAgICA8cCBjbGFzcz1cInRpdGxlLXN0eWxlIG10LTNcIj5TaXN0ZW1hczwvcD5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTUgbWItM1wiXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDI3MHB4OyBoZWlnaHQ6IDEwMCVcIlxuICAgICAgPlxuICAgICAgICBAZm9yIChhcGxpY2F0aXZvIG9mIGFwcHM7IHRyYWNrICRpbmRleCkgeyBAaWYoYXBsaWNhdGl2by51cmxpY29uZSA9PVxuICAgICAgICBcImh0dHBzOi8vd29yay1hc3NldHMua2Vldm8uY29tLmJyL2ltZy9pY29uZS1rZWV2b2NlbnRlci5wbmdcIikge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJidG4tc2lzdGVtYSB0ZXh0LXhsIG1kOnRleHQtM3hsIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBcHAoYXBsaWNhdGl2by5pZGFwbGljYXRpdm8pXCJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiYXBsaWNhdGl2bz8uZGVzY3JpY2FvYXBsaWNhdGl2b1wiXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgYXBsaWNhdGl2by5kZXNjcmljYW9hcGxpY2F0aXZvLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGltZ1xuICAgICAgICAgIFtzcmNdPVwiYXBsaWNhdGl2by51cmxpY29uZVwiXG4gICAgICAgICAgY2xhc3M9XCJidG4tc2lzdGVtYSBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICBbcFRvb2x0aXBdPVwiYXBsaWNhdGl2bz8uZGVzY3JpY2FvYXBsaWNhdGl2b1wiXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBcHAoYXBsaWNhdGl2by5pZGFwbGljYXRpdm8pXCJcbiAgICAgICAgLz5cbiAgICAgICAgfSB9XG5cbiAgICAgICAgPCEtLSA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGFwbGljYXRpdm8gb2YgYXBwc1wiXG4gICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICBjbGFzcz1cImJ0bi1zaXN0ZW1hLTIgYnRuLXNpc3RlbWEgaG92ZXItYnRuLWNvci1wYWRyYW8gcmVtb3ZlLWZvY3VzIGgtNHJlbSB3LTRyZW1cIlxuICAgICAgICAgIFtwVG9vbHRpcF09XCJhcGxpY2F0aXZvPy5kZXNjcmljYW9hcGxpY2F0aXZvXCJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFwcChhcGxpY2F0aXZvLmlkYXBsaWNhdGl2bylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgYXBsaWNhdGl2by5ub21lYXBsaWNhdGl2by5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSB9fVxuICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3Atb3ZlcmxheVBhbmVsPlxuXG4gIDwhLS0gUGFpbmVsIGRvIHVzdcOhcmlvIC0tPlxuICA8cC1vdmVybGF5UGFuZWxcbiAgICAjbWV1c0RhZG9zUGFuZWxcbiAgICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cIiczNTBtcyBlYXNlLW91dCdcIlxuICAgIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiJzI1MG1zIGVhc2UtaW4nXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250YWluZXJcIj5cbiAgICAgIDxwIGNsYXNzPVwidGl0bGUtc3R5bGUgbXQtM1wiPlxuICAgICAgICBPbMOhLCB7eyB1c2VyTmFtZSA/IHVzZXJOYW1lLnNwbGl0KFwiIFwiKVswXSA6IFwiVXN1w6FyaW9cIiB9fSFcbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC01IG1iLTNcIj48L2Rpdj5cblxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgIGljb249XCJwaSBwaS1sb2NrXCJcbiAgICAgICAgbGFiZWw9XCJBY2Vzc2FyIEtlZXBhc3NcIlxuICAgICAgICAob25DbGljayk9XCJhY2Nlc3NLZWVQYXNzKCRldmVudClcIlxuICAgICAgICBzdHlsZUNsYXNzPVwiYm9yZGVyLW5vcm91bmQgdy1mdWxsIHRleHQtYmx1ZS05MDBcIlxuICAgICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgIDwvcC1idXR0b24+XG5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICBpY29uPVwicGkgcGktc2lnbi1vdXRcIlxuICAgICAgICBsYWJlbD1cIlNhaXJcIlxuICAgICAgICAob25DbGljayk9XCJsb2dvdXQoJGV2ZW50KVwiXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJib3JkZXItbm9yb3VuZCB3LWZ1bGwgdGV4dC1ibHVlLTkwMFwiXG4gICAgICAgIFt0ZXh0XT1cInRydWVcIlxuICAgICAgPlxuICAgICAgPC9wLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3Atb3ZlcmxheVBhbmVsPlxuPC9kaXY+XG4iXX0=
@@ -8,10 +8,10 @@ export class KvLoaderComponent {
8
8
  this.loading = KvLoaderService.isLoading;
9
9
  }
10
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvLoaderComponent, selector: "kv-loader", ngImport: i0, template: "<ngx-loading [show]=\"(loading | async) || false\"></ngx-loading>\r\n", dependencies: [{ kind: "component", type: i1.NgxLoadingComponent, selector: "ngx-loading", inputs: ["show", "config", "template"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvLoaderComponent, selector: "kv-loader", ngImport: i0, template: "<ngx-loading [show]=\"(loading | async) || false\"></ngx-loading>\n", dependencies: [{ kind: "component", type: i1.NgxLoadingComponent, selector: "ngx-loading", inputs: ["show", "config", "template"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
12
12
  }
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvLoaderComponent, decorators: [{
14
14
  type: Component,
15
- args: [{ selector: 'kv-loader', template: "<ngx-loading [show]=\"(loading | async) || false\"></ngx-loading>\r\n" }]
15
+ args: [{ selector: 'kv-loader', template: "<ngx-loading [show]=\"(loading | async) || false\"></ngx-loading>\n" }]
16
16
  }], ctorParameters: () => [] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxvYWRlci9rdi1sb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtbG9hZGVyL2t2LWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQU10RCxNQUFNLE9BQU8saUJBQWlCO0lBSTVCO1FBRk8sWUFBTyxHQUFxQixlQUFlLENBQUMsU0FBUyxDQUFDO0lBRTdDLENBQUM7OEdBSk4saUJBQWlCO2tHQUFqQixpQkFBaUIsaURDVDlCLHVFQUNBOzsyRkRRYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBLdkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL2t2LWxvYWRlci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtbG9hZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtbG9hZGVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZMb2FkZXJDb21wb25lbnQge1xyXG5cclxuICBwdWJsaWMgbG9hZGluZzogU3ViamVjdDxib29sZWFuPiA9IEt2TG9hZGVyU2VydmljZS5pc0xvYWRpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuIiwiPG5neC1sb2FkaW5nIFtzaG93XT1cIihsb2FkaW5nIHwgYXN5bmMpIHx8IGZhbHNlXCI+PC9uZ3gtbG9hZGluZz5cclxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxvYWRlci9rdi1sb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtbG9hZGVyL2t2LWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQU10RCxNQUFNLE9BQU8saUJBQWlCO0lBSTVCO1FBRk8sWUFBTyxHQUFxQixlQUFlLENBQUMsU0FBUyxDQUFDO0lBRTdDLENBQUM7OEdBSk4saUJBQWlCO2tHQUFqQixpQkFBaUIsaURDVDlCLHFFQUNBOzsyRkRRYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBLdkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL2t2LWxvYWRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna3YtbG9hZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LWxvYWRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgS3ZMb2FkZXJDb21wb25lbnQge1xuXG4gIHB1YmxpYyBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gS3ZMb2FkZXJTZXJ2aWNlLmlzTG9hZGluZztcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxufVxuIiwiPG5neC1sb2FkaW5nIFtzaG93XT1cIihsb2FkaW5nIHwgYXN5bmMpIHx8IGZhbHNlXCI+PC9uZ3gtbG9hZGluZz5cbiJdfQ==
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
25
25
  ]
26
26
  }]
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbG9hZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxvYWRlci9rdi1sb2FkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBWTFELE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxpQkFUVixpQkFBaUIsYUFHOUIsWUFBWSxrQ0FGSixpQkFBaUI7K0dBUWhCLGNBQWMsWUFOdkIsWUFBWTtZQUNaLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDdkIsa0JBQWtCLEVBQUUsSUFBSTthQUN6QixDQUFDOzsyRkFHTyxjQUFjO2tCQVYxQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDNUIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCLENBQUMsT0FBTyxDQUFDOzRCQUN2QixrQkFBa0IsRUFBRSxJQUFJO3lCQUN6QixDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4TG9hZGluZ01vZHVsZSB9IGZyb20gJ25neC1sb2FkaW5nJztcclxuXHJcbmltcG9ydCB7IEt2TG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9rdi1sb2FkZXIuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbS3ZMb2FkZXJDb21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtLdkxvYWRlckNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTmd4TG9hZGluZ01vZHVsZS5mb3JSb290KHtcclxuICAgICAgZnVsbFNjcmVlbkJhY2tkcm9wOiB0cnVlXHJcbiAgICB9KVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEt2TG9hZGVyTW9kdWxlIHsgfVxyXG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbG9hZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWxvYWRlci9rdi1sb2FkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBWTFELE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxpQkFUVixpQkFBaUIsYUFHOUIsWUFBWSxrQ0FGSixpQkFBaUI7K0dBUWhCLGNBQWMsWUFOdkIsWUFBWTtZQUNaLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDdkIsa0JBQWtCLEVBQUUsSUFBSTthQUN6QixDQUFDOzsyRkFHTyxjQUFjO2tCQVYxQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDNUIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCLENBQUMsT0FBTyxDQUFDOzRCQUN2QixrQkFBa0IsRUFBRSxJQUFJO3lCQUN6QixDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hMb2FkaW5nTW9kdWxlIH0gZnJvbSAnbmd4LWxvYWRpbmcnO1xuXG5pbXBvcnQgeyBLdkxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4va3YtbG9hZGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0t2TG9hZGVyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0t2TG9hZGVyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBOZ3hMb2FkaW5nTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgZnVsbFNjcmVlbkJhY2tkcm9wOiB0cnVlXG4gICAgfSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBLdkxvYWRlck1vZHVsZSB7IH1cbiJdfQ==
@@ -26,4 +26,4 @@ export const loading = () => {
26
26
  }));
27
27
  };
28
28
  };
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi1sb2FkZXIva3YtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBRUwsT0FBTyxFQUNQLFFBQVEsRUFDVCxNQUFNLE1BQU0sQ0FBQzs7QUFLZCxNQUFNLE9BQU8sZUFBZTthQUNaLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVyxBQUF6QixDQUEwQjtJQUVqRCxNQUFNLENBQUMsSUFBSTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7OEdBVFUsZUFBZTtrSEFBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBYUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQTZDLEVBQUU7SUFDcEUsT0FBTyxDQUFDLEdBQWtCLEVBQUUsRUFBRTtRQUM1QixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE9ic2VydmFibGUsXHJcbiAgU3ViamVjdCxcclxuICBmaW5hbGl6ZVxyXG59IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZMb2FkZXJTZXJ2aWNlIHtcclxuICBwdWJsaWMgc3RhdGljIGlzTG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gIHN0YXRpYyBzaG93KCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBoaWRlKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgbG9hZGluZyA9IDxUPigpOiAoc3JjOiBPYnNlcnZhYmxlPFQ+KSA9PiBPYnNlcnZhYmxlPFQ+ID0+IHtcclxuICByZXR1cm4gKHNyYzogT2JzZXJ2YWJsZTxUPikgPT4ge1xyXG4gICAgS3ZMb2FkZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIHJldHVybiBzcmMucGlwZShmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgIEt2TG9hZGVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9KSk7XHJcbiAgfTtcclxufTtcclxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi1sb2FkZXIva3YtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBRUwsT0FBTyxFQUNQLFFBQVEsRUFDVCxNQUFNLE1BQU0sQ0FBQzs7QUFLZCxNQUFNLE9BQU8sZUFBZTthQUNaLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVyxBQUF6QixDQUEwQjtJQUVqRCxNQUFNLENBQUMsSUFBSTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7OEdBVFUsZUFBZTtrSEFBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBYUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQTZDLEVBQUU7SUFDcEUsT0FBTyxDQUFDLEdBQWtCLEVBQUUsRUFBRTtRQUM1QixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGZpbmFsaXplXG59IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBLdkxvYWRlclNlcnZpY2Uge1xuICBwdWJsaWMgc3RhdGljIGlzTG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgc3RhdGljIHNob3coKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHN0YXRpYyBoaWRlKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLm5leHQoZmFsc2UpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nID0gPFQ+KCk6IChzcmM6IE9ic2VydmFibGU8VD4pID0+IE9ic2VydmFibGU8VD4gPT4ge1xuICByZXR1cm4gKHNyYzogT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgIEt2TG9hZGVyU2VydmljZS5zaG93KCk7XG4gICAgcmV0dXJuIHNyYy5waXBlKGZpbmFsaXplKCgpID0+IHtcbiAgICAgIEt2TG9hZGVyU2VydmljZS5oaWRlKCk7XG4gICAgfSkpO1xuICB9O1xufTtcbiJdfQ==