@wavemaker/app-ng-runtime 11.14.0-rc.6276 → 11.14.1-10.6348

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 (81) hide show
  1. package/components/base/bundles/index.umd.js +88 -17
  2. package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
  3. package/components/base/esm2022/utils/widget-utils.mjs +5 -3
  4. package/components/base/esm2022/widgets/common/base/base.component.mjs +67 -7
  5. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +7 -3
  6. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
  7. package/components/base/fesm2022/index.mjs +89 -18
  8. package/components/base/fesm2022/index.mjs.map +1 -1
  9. package/components/base/pipes/custom-pipes.d.ts +5 -5
  10. package/components/basic/label/bundles/index.umd.js +9 -1
  11. package/components/basic/label/esm2022/label.directive.mjs +10 -2
  12. package/components/basic/label/fesm2022/index.mjs +9 -1
  13. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  14. package/components/data/pagination/bundles/index.umd.js +4 -0
  15. package/components/data/pagination/esm2022/pagination.component.mjs +5 -1
  16. package/components/data/pagination/fesm2022/index.mjs +4 -0
  17. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  18. package/components/data/table/bundles/index.umd.js +371 -15
  19. package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
  20. package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
  21. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
  22. package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
  23. package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
  24. package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
  25. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
  26. package/components/data/table/esm2022/table.component.mjs +219 -12
  27. package/components/data/table/fesm2022/index.mjs +371 -15
  28. package/components/data/table/fesm2022/index.mjs.map +1 -1
  29. package/components/data/table/table-action/table-action.directive.d.ts +3 -2
  30. package/components/data/table/table-column/table-column.directive.d.ts +3 -2
  31. package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
  32. package/components/data/table/table-cud.directive.d.ts +3 -1
  33. package/components/data/table/table-filter.directive.d.ts +3 -1
  34. package/components/data/table/table-row/table-row.directive.d.ts +3 -2
  35. package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
  36. package/components/data/table/table.component.d.ts +6 -2
  37. package/components/dialogs/default/bundles/index.umd.js +21 -18
  38. package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +4 -1
  39. package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +13 -10
  40. package/components/dialogs/default/fesm2022/index.mjs +9 -6
  41. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  42. package/components/navigation/menu/bundles/index.umd.js +5 -0
  43. package/components/navigation/menu/esm2022/menu.component.mjs +6 -1
  44. package/components/navigation/menu/fesm2022/index.mjs +5 -0
  45. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  46. package/components/navigation/popover/bundles/index.umd.js +6 -6
  47. package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
  48. package/components/navigation/popover/fesm2022/index.mjs +3 -3
  49. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  50. package/components/navigation/popover/popover.component.d.ts +6 -0
  51. package/core/bundles/index.umd.js +411 -82
  52. package/core/esm2022/public_api.mjs +3 -3
  53. package/core/esm2022/types/types.mjs +1 -1
  54. package/core/esm2022/utils/utils.mjs +6 -2
  55. package/core/esm2022/utils/watcher.mjs +402 -81
  56. package/core/fesm2022/index.mjs +410 -84
  57. package/core/fesm2022/index.mjs.map +1 -1
  58. package/core/public_api.d.ts +2 -2
  59. package/core/types/types.d.ts +1 -0
  60. package/core/utils/utils.d.ts +1 -0
  61. package/core/utils/watcher.d.ts +28 -5
  62. package/npm-shrinkwrap.json +2 -2
  63. package/package-lock.json +2 -2
  64. package/package.json +1 -1
  65. package/runtime/base/bundles/index.umd.js +23 -2
  66. package/runtime/base/esm2022/components/app-component/app.component.mjs +4 -2
  67. package/runtime/base/esm2022/components/base-page.component.mjs +6 -2
  68. package/runtime/base/esm2022/components/base-partial.component.mjs +7 -2
  69. package/runtime/base/esm2022/components/base-prefab.component.mjs +7 -2
  70. package/runtime/base/esm2022/components/base-spa-page.component.mjs +6 -2
  71. package/runtime/base/esm2022/services/app.service.mjs +2 -1
  72. package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -4
  73. package/runtime/base/fesm2022/index.mjs +24 -3
  74. package/runtime/base/fesm2022/index.mjs.map +1 -1
  75. package/runtime/base/services/app.service.d.ts +1 -0
  76. package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  77. package/scripts/datatable/datatable.js +101 -15
  78. package/transpiler/bundles/index.umd.js +1 -1
  79. package/transpiler/esm2022/imports.mjs +2 -2
  80. package/transpiler/fesm2022/index.mjs +1 -1
  81. package/transpiler/fesm2022/index.mjs.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/default/src/dialog-body/dialog-body.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.props.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/base-dialog.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-header/dialog-header.component.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-header/dialog-header.component.html","../../../../../projects/components/widgets/dialogs/default/src/index.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Inject, Renderer2 } from '@angular/core';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\nimport { addClass, getSheetPositionClass, setAttr, setCSS } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-dialog-body modal-body';\n\n@Directive({\n standalone: true,\n selector: 'div[wmDialogBody]',\n})\nexport class DialogBodyDirective {\n @HostBinding('style.height') height;\n constructor(\n elRef: ElementRef,\n @Inject(DialogRef) private dialogRef,\n bsModal: BsModalService,\n private renderer: Renderer2\n ) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n\n const subscription = bsModal.onShown.subscribe(() => {\n const dialogRoot = $(elRef.nativeElement).closest('.app-dialog')[0];\n const dialogContent = $(elRef.nativeElement).closest('.modal-content')[0];\n let dialogRootContainer = $('body.wm-app')[0];\n // To identify the microfrontend, if body tag doesn't have wm-app class then app loading as micro-frontend\n if(!dialogRootContainer) {\n const dialogBackrop = $('body > .modal-backdrop')[0];\n const parentContainer = $('body > modal-container')[0];\n dialogRootContainer = $('.wm-app')[0];\n if(dialogRootContainer && parentContainer ){\n if(dialogBackrop){\n this.renderer.appendChild(dialogRootContainer, dialogBackrop);\n }\n this.renderer.appendChild(dialogRootContainer, parentContainer);\n\n }\n }\n const isSheet = this.dialogRef.sheet;\n const sheetPosition = this.dialogRef.sheetPosition;\n if(isSheet) {\n $(dialogRoot).addClass('modal-sheet');\n $(dialogRoot).addClass(getSheetPositionClass(sheetPosition));\n }\n const animation = this.dialogRef.animation;\n if(animation) {\n $(dialogContent).addClass('animated');\n $(dialogContent).addClass(animation);\n }\n const width = this.dialogRef.width;\n const height = this.dialogRef.height;\n if(height){\n setTimeout(e=>{\n setCSS($(elRef.nativeElement)[0], 'height', height);\n });\n }\n if (dialogRoot) {\n if (width) {\n setCSS(dialogRoot, 'width', width);\n }\n setAttr(dialogRoot, 'tabindex', this.dialogRef.tabindex);\n setAttr(dialogRoot, 'name', this.dialogRef.name);\n\n }\n subscription.unsubscribe();\n });\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-dialogfooter',\n new Map([\n ['class', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ])\n );\n};\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport { BaseComponent, IWidgetConfig, provideAsWidgetRef } from '@wm/components/base';\nimport { registerProps } from './dialog-footer.props';\n\nconst WIDGET_INFO: IWidgetConfig = {\n widgetType: 'wm-dialogfooter',\n hostClass: 'app-dialog-footer modal-footer'\n};\n\n@Directive({\n standalone: true,\n selector: 'div[wmDialogFooter]',\n providers: [\n provideAsWidgetRef(DialogFooterDirective)\n ]\n})\nexport class DialogFooterDirective extends BaseComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_INFO, explicitContext);\n }\n}\n","import {Inject, Injectable, Injector, OnDestroy, Optional, TemplateRef} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {BsModalRef, BsModalService, ModalOptions} from 'ngx-bootstrap/modal';\n\nimport {Subscription} from 'rxjs';\n\nimport {AbstractDialogService, findRootContainer, generateGUId, isMobile} from '@wm/core';\n\nimport {BaseComponent, IDialog, IWidgetConfig, WidgetConfig} from '@wm/components/base';\n\nconst eventsRegistered = false;\n\nconst invokeOpenedCallback = (ref) => {\n if (ref) {\n setTimeout(() => {\n const root = findRootContainer(ref.$element);\n // if page styles have to be applied to dialog then dialog has to be child of page element.\n if (root) {\n $('body > modal-container > div').wrap('<' + root + '/>');\n }\n ref.invokeEventCallback('opened', { $event: { type: 'opened' } });\n // Focusing the first focusable element when the dialog is opened\n const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];\n const keyboardFocusableElements = [container.querySelectorAll(\n 'a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => {\n return (\n !el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'));\n })[0];\n $(keyboardFocusableElements[0]).focus();\n\n const openedDialogs = ref.dialogService.getOpenedDialogs();\n if (openedDialogs.length > 1) {\n let zIndex = Number($(\"[aria-labelledby= \" + openedDialogs[openedDialogs.length - 2].titleId + \"]\").css('z-index'));\n $('[aria-labelledby= ' + ref.dialogService.getLastOpenedDialog().titleId + ']').css('z-index', zIndex + 2);\n $('bs-modal-backdrop').css('z-index', zIndex + 1);\n }\n });\n }\n};\n\nconst invokeClosedCallback = (ref) => {\n if (ref) {\n ref.invokeEventCallback('close');\n ref.dialogRef = undefined;\n const openedDialogs = ref.dialogService.getOpenedDialogs();\n if (openedDialogs.length >= 1) {\n let zIndex: any = Number($(\"[aria-labelledby= \" + openedDialogs[openedDialogs.length - 1].titleId + \"]\").css('z-index'));\n $('bs-modal-backdrop').css('z-index', zIndex - 1);\n }\n }\n};\n\n@Injectable()\nexport abstract class BaseDialog extends BaseComponent implements IDialog, OnDestroy {\n\n public name: string;\n\n private readonly dialogService: AbstractDialogService;\n private readonly bsModal: BsModalService;\n\n private dialogRef: BsModalRef;\n private dialogId: number;\n public titleId: string = 'wmdialog-' + generateGUId();\n public sheet: string | boolean;\n public sheetPosition: string;\n private dialogOriginFocusStack: HTMLElement[] = [];\n\n protected constructor(\n inj: Injector,\n @Inject(WidgetConfig) config: IWidgetConfig,\n protected modalOptions: ModalOptions,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, config, explicitContext);\n this.dialogService = inj.get(AbstractDialogService);\n this.bsModal = inj.get(BsModalService);\n const router = inj.get(Router);\n\n const subscriptions: Subscription[] = [\n this.bsModal.onShown.subscribe(({ id }) => {\n const ref = this.dialogService.getLastOpenedDialog();\n if (ref === this && !this.dialogId) {\n // Always get the reference of last pushed dialog in the array for calling onOpen callback\n invokeOpenedCallback(ref);\n this.dialogId = id;\n }\n }),\n this.bsModal.onShow.subscribe(() => {}),\n this.bsModal.onHidden.subscribe((closeReason) => {\n let ref = this.dialogService.getDialogRefFromClosedDialogs();\n if (this.dialogId && closeReason?.id === this.dialogId) {\n ref = this;\n } else if (closeReason === 'esc' || closeReason === 'backdrop-click') {\n ref = this.dialogService.getLastOpenedDialog();\n }\n if (ref === this) {\n this.dialogId = null;\n // remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(ref);\n this.dialogService.removeFromClosedDialogs(ref);\n invokeClosedCallback(ref);\n if (ref.closeCallBackFn) {\n ref.closeCallBackFn();\n }\n }\n }),\n this.bsModal.onHide.subscribe(() => {}),\n router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.close();\n }\n })\n ];\n this.registerDestroyListener(() => {// remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(this);\n this.dialogService.removeFromClosedDialogs(this);\n subscriptions.forEach(s => s.unsubscribe());\n });\n }\n\n /**\n * Opens the dialog\n * Subscribe to the onShown event emitter of bsModal and trigger on-opened event callback\n */\n public open(initState?: any) {\n\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n\n // do not open the dialog again if it is already opened\n const duplicateDialogCheck = (openedDialog) => {\n return openedDialog === this;\n };\n\n if (this.dialogService.getOpenedDialogs().some(duplicateDialogCheck)) {\n return;\n }\n\n this.dialogService.addToOpenedDialogs(this);\n // extend the context with the initState\n Object.assign(this.context, initState);\n this.modalOptions.ariaLabelledBy = this.titleId;\n this.dialogOriginFocusStack.push(document.activeElement as HTMLElement);\n this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);\n // Fix for [WMS-23948]: Focus moving out of active Dialog widget\n if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile())) {\n const parentSelector = $('body > app-root')[0];\n parentSelector.setAttribute('aria-hidden', 'true');\n }\n $('.cdk-focus-trap-anchor').removeAttr('aria-hidden');\n }\n\n /**\n * closes the dialog\n * invokes the on-close event callback\n */\n public close() {\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n if (this.dialogRef) {\n const lastDialogOrigin = this.dialogOriginFocusStack.pop();\n this.dialogService.addToClosedDialogs(this);\n this.dialogRef.hide();\n // Return focus to the originating element upon dialog closure\n lastDialogOrigin?.focus();\n }\n }\n\n /**\n * Register the dialog with the dialog service for programmatic access\n */\n protected register(scope) {\n // add scope along with name in the dialogRefsCollection Map while registering dialog\n // So that 2 dialogs having same name on different pages won't be overridden.\n this.dialogService.register(this.name, this, scope);\n }\n\n /**\n * De Register the dialog with the dialog service after dialog destruction\n */\n protected deRegister(scope) {\n this.dialogService.deRegister(this.name, scope);\n }\n\n /**\n * subclasses of BaseDialog must implement this method to return the proper template element ref\n * bsModal will use this refence to open the dialog\n * @returns {TemplateRef<any>}\n */\n protected abstract getTemplateRef(): TemplateRef<any>;\n\n protected onPropertyChange(key: string, nv: any, ov?: any) {\n // ignore the class attribute.\n // Prevent the framework from setting the class on the host element.\n if (key === 'class' || key === 'name' || key === 'tabindex') {\n return;\n } else if (key === 'animation') {\n this.modalOptions.class = this.modalOptions.class.replace(' animated ' + ov, '');\n if (nv) {\n this.modalOptions.class = this.modalOptions.class + ' animated ' + nv;\n }\n }\n super.onPropertyChange(key, nv, ov);\n }\n\n public ngOnDestroy() {\n this.close();\n this.deRegister(this.viewParent);\n super.ngOnDestroy();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ImagePipe, TextContentDirective } from \"@wm/components/base\";\nimport {Component, ElementRef, Inject, Input} from '@angular/core';\n\nimport {addClass, toBoolean} from '@wm/core';\n\nimport {DialogRef} from '@wm/components/base';\nimport {BaseDialog} from '../base-dialog';\n\nconst DEFAULT_CLS = 'app-dialog-header modal-header';\nconst DEFAULT_ICON_DIMENSIONS = '21px';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TextContentDirective, ImagePipe],\n selector: 'div[wmDialogHeader]',\n templateUrl: './dialog-header.component.html'\n})\nexport class DialogHeaderComponent {\n\n @Input() public iconwidth = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconheight = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconmargin: string;\n @Input() public iconclass: string;\n @Input() public iconurl: string;\n @Input() public closable = true;\n @Input() public heading: string;\n @Input() public headinglevel?: string = 'h4';\n @Input() public subheading: string;\n @Input() public titleid:string;\n @Input() public title: string;\n\n public get isClosable() {\n return toBoolean(this.closable);\n }\n\n constructor(elRef: ElementRef, @Inject(DialogRef) public dialogRef: BaseDialog ) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n }\n\n public closeDialog() {\n this.dialogRef.close();\n }\n}\n","@if (isClosable) {\n <button (click)=\"closeDialog();\"\n [attr.aria-label]=\"'Close ' + (title ? title : '') + ' dialog'\" class=\"app-dialog-close close\" [attr.title]=\"title ? 'Close ' + title + ' dialog' : dialogRef.appLocale.LABEL_CLOSE\" >\n <span class=\"app-icon wi wi-clear\" aria-hidden=\"true\"></span>\n </button>\n}\n\n@switch (headinglevel) {\n @case ('h1') {\n <h1 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h1>\n }\n @case ('h2') {\n <h2 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h2>\n }\n @case ('h3') {\n <h3 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h3>\n }\n @case ('h4') {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n @case ('h5') {\n <h5 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h5>\n }\n @case ('h6') {\n <h6 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h6>\n }\n @default {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n}\n\n<ng-template #headerTemplate>\n @if (iconclass && !iconurl) {\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"></i>\n }\n @if (iconurl) {\n <img data-identifier=\"img\" [src]=\"iconurl | image\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"/>\n }\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n @if (subheading) {\n <span class=\"dialog-sub-heading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DEFAULT_CLS","i1"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/default/src/dialog-body/dialog-body.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.props.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/base-dialog.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-header/dialog-header.component.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-header/dialog-header.component.html","../../../../../projects/components/widgets/dialogs/default/src/index.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Inject, Renderer2 } from '@angular/core';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\nimport { addClass, getSheetPositionClass, setAttr, setCSS } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-dialog-body modal-body';\n\n@Directive({\n standalone: true,\n selector: 'div[wmDialogBody]',\n})\nexport class DialogBodyDirective {\n @HostBinding('style.height') height;\n constructor(\n elRef: ElementRef,\n @Inject(DialogRef) private dialogRef,\n bsModal: BsModalService,\n private renderer: Renderer2\n ) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n\n const subscription = bsModal.onShown.subscribe(() => {\n const dialogRoot = $(elRef.nativeElement).closest('.app-dialog')[0];\n const dialogContent = $(elRef.nativeElement).closest('.modal-content')[0];\n let dialogRootContainer = $('body.wm-app')[0];\n // To identify the microfrontend, if body tag doesn't have wm-app class then app loading as micro-frontend\n if(!dialogRootContainer) {\n const dialogBackrop = $('body > .modal-backdrop')[0];\n const parentContainer = $('body > modal-container')[0];\n dialogRootContainer = $('.wm-app')[0];\n if(dialogRootContainer && parentContainer ){\n if(dialogBackrop){\n this.renderer.appendChild(dialogRootContainer, dialogBackrop);\n }\n this.renderer.appendChild(dialogRootContainer, parentContainer);\n\n }\n }\n const isSheet = this.dialogRef.sheet;\n const sheetPosition = this.dialogRef.sheetPosition;\n if(isSheet) {\n $(dialogRoot).addClass('modal-sheet');\n $(dialogRoot).addClass(getSheetPositionClass(sheetPosition));\n }\n const animation = this.dialogRef.animation;\n if(animation) {\n $(dialogContent).addClass('animated');\n $(dialogContent).addClass(animation);\n }\n const width = this.dialogRef.width;\n const height = this.dialogRef.height;\n if(height){\n setTimeout(e=>{\n setCSS($(elRef.nativeElement)[0], 'height', height);\n });\n }\n if (dialogRoot) {\n if (width) {\n setCSS(dialogRoot, 'width', width);\n }\n setAttr(dialogRoot, 'tabindex', this.dialogRef.tabindex);\n setAttr(dialogRoot, 'name', this.dialogRef.name);\n\n }\n subscription.unsubscribe();\n });\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-dialogfooter',\n new Map([\n ['class', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ])\n );\n};\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport { BaseComponent, IWidgetConfig, provideAsWidgetRef } from '@wm/components/base';\nimport { registerProps } from './dialog-footer.props';\n\nconst WIDGET_INFO: IWidgetConfig = {\n widgetType: 'wm-dialogfooter',\n hostClass: 'app-dialog-footer modal-footer'\n};\n\n@Directive({\n standalone: true,\n selector: 'div[wmDialogFooter]',\n providers: [\n provideAsWidgetRef(DialogFooterDirective)\n ]\n})\nexport class DialogFooterDirective extends BaseComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_INFO, explicitContext);\n }\n}\n","import {Inject, Injectable, Injector, OnDestroy, Optional, TemplateRef} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {BsModalRef, BsModalService, ModalOptions} from 'ngx-bootstrap/modal';\n\nimport {Subscription} from 'rxjs';\n\nimport {AbstractDialogService, findRootContainer, generateGUId, isMobile} from '@wm/core';\n\nimport {BaseComponent, IDialog, IWidgetConfig, WidgetConfig} from '@wm/components/base';\n\nconst eventsRegistered = false;\n\nconst invokeOpenedCallback = (ref) => {\n if (ref) {\n setTimeout(() => {\n const root = findRootContainer(ref.$element);\n // if page styles have to be applied to dialog then dialog has to be child of page element.\n if (root) {\n $('body > modal-container > div').wrap('<' + root + '/>');\n }\n ref.invokeEventCallback('opened', { $event: { type: 'opened' } });\n // Focusing the first focusable element when the dialog is opened\n const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];\n const keyboardFocusableElements = [container.querySelectorAll(\n 'a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => {\n return (\n !el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'));\n })[0];\n $(keyboardFocusableElements[0]).focus();\n\n const openedDialogs = ref.dialogService.getOpenedDialogs();\n if (openedDialogs.length > 1) {\n let zIndex = Number($(\"[aria-labelledby= \" + openedDialogs[openedDialogs.length - 2].titleId + \"]\").css('z-index'));\n $('[aria-labelledby= ' + ref.dialogService.getLastOpenedDialog().titleId + ']').css('z-index', zIndex + 2);\n $('bs-modal-backdrop').css('z-index', zIndex + 1);\n }\n });\n }\n};\n\nconst invokeClosedCallback = (ref) => {\n if (ref) {\n ref.invokeEventCallback('close');\n ref.dialogRef = undefined;\n const openedDialogs = ref.dialogService.getOpenedDialogs();\n if (openedDialogs.length >= 1) {\n let zIndex: any = Number($(\"[aria-labelledby= \" + openedDialogs[openedDialogs.length - 1].titleId + \"]\").css('z-index'));\n $('bs-modal-backdrop').css('z-index', zIndex - 1);\n }\n }\n};\n\n@Injectable()\nexport abstract class BaseDialog extends BaseComponent implements IDialog, OnDestroy {\n\n public name: string;\n\n private readonly dialogService: AbstractDialogService;\n private readonly bsModal: BsModalService;\n\n private dialogRef: BsModalRef;\n private dialogId: number;\n public titleId: string = 'wmdialog-' + generateGUId();\n public sheet: string | boolean;\n public sheetPosition: string;\n private dialogOriginFocusStack: HTMLElement[] = [];\n\n protected constructor(\n inj: Injector,\n @Inject(WidgetConfig) config: IWidgetConfig,\n protected modalOptions: ModalOptions,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, config, explicitContext);\n this.dialogService = inj.get(AbstractDialogService);\n this.bsModal = inj.get(BsModalService);\n const router = inj.get(Router);\n\n const subscriptions: Subscription[] = [\n this.bsModal.onShown.subscribe(({ id }) => {\n const ref = this.dialogService.getLastOpenedDialog();\n if (ref === this && !this.dialogId) {\n // Always get the reference of last pushed dialog in the array for calling onOpen callback\n invokeOpenedCallback(ref);\n this.dialogId = id;\n }\n }),\n this.bsModal.onShow.subscribe(() => {}),\n this.bsModal.onHidden.subscribe((closeReason) => {\n let ref = this.dialogService.getDialogRefFromClosedDialogs();\n if (this.dialogId && closeReason?.id === this.dialogId) {\n ref = this;\n } else if (closeReason === 'esc' || closeReason === 'backdrop-click') {\n ref = this.dialogService.getLastOpenedDialog();\n }\n if (ref === this) {\n this.dialogId = null;\n // remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(ref);\n this.dialogService.removeFromClosedDialogs(ref);\n invokeClosedCallback(ref);\n if (ref.closeCallBackFn) {\n ref.closeCallBackFn();\n }\n }\n }),\n this.bsModal.onHide.subscribe(() => {}),\n router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.close();\n }\n })\n ];\n this.registerDestroyListener(() => {// remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(this);\n this.dialogService.removeFromClosedDialogs(this);\n subscriptions.forEach(s => s.unsubscribe());\n });\n }\n\n /**\n * Opens the dialog\n * Subscribe to the onShown event emitter of bsModal and trigger on-opened event callback\n */\n public open(initState?: any) {\n\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n\n // do not open the dialog again if it is already opened\n const duplicateDialogCheck = (openedDialog) => {\n return openedDialog === this;\n };\n\n if (this.dialogService.getOpenedDialogs().some(duplicateDialogCheck)) {\n return;\n }\n\n this.dialogService.addToOpenedDialogs(this);\n // extend the context with the initState\n Object.assign(this.context, initState);\n this.modalOptions.ariaLabelledBy = this.titleId;\n this.dialogOriginFocusStack.push(document.activeElement as HTMLElement);\n this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);\n // Fix for [WMS-23948]: Focus moving out of active Dialog widget\n if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile())) {\n const parentSelector = $('body > app-root')[0];\n parentSelector.setAttribute('aria-hidden', 'true');\n }\n $('.cdk-focus-trap-anchor').removeAttr('aria-hidden');\n }\n\n /**\n * closes the dialog\n * invokes the on-close event callback\n */\n public close() {\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n if (this.dialogRef) {\n const lastDialogOrigin = this.dialogOriginFocusStack.pop();\n this.dialogService.addToClosedDialogs(this);\n this.dialogRef.hide();\n // Return focus to the originating element upon dialog closure\n lastDialogOrigin?.focus();\n }\n }\n\n /**\n * Register the dialog with the dialog service for programmatic access\n */\n protected register(scope) {\n // add scope along with name in the dialogRefsCollection Map while registering dialog\n // So that 2 dialogs having same name on different pages won't be overridden.\n this.dialogService.register(this.name, this, scope);\n }\n\n /**\n * De Register the dialog with the dialog service after dialog destruction\n */\n protected deRegister(scope) {\n this.dialogService.deRegister(this.name, scope);\n }\n\n /**\n * subclasses of BaseDialog must implement this method to return the proper template element ref\n * bsModal will use this refence to open the dialog\n * @returns {TemplateRef<any>}\n */\n protected abstract getTemplateRef(): TemplateRef<any>;\n\n protected onPropertyChange(key: string, nv: any, ov?: any) {\n // ignore the class attribute.\n // Prevent the framework from setting the class on the host element.\n if (key === 'class' || key === 'name' || key === 'tabindex') {\n return;\n } else if (key === 'animation') {\n this.modalOptions.class = this.modalOptions.class.replace(' animated ' + ov, '');\n if (nv) {\n this.modalOptions.class = this.modalOptions.class + ' animated ' + nv;\n }\n }\n super.onPropertyChange(key, nv, ov);\n }\n\n public ngOnDestroy() {\n this.close();\n this.deRegister(this.viewParent);\n super.ngOnDestroy();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ImagePipe, TextContentDirective } from \"@wm/components/base\";\nimport {Component, ElementRef, Inject, Input} from '@angular/core';\n\nimport {addClass, App, toBoolean} from '@wm/core';\n\nimport {DialogRef} from '@wm/components/base';\nimport {BaseDialog} from '../base-dialog';\n\nconst DEFAULT_CLS = 'app-dialog-header modal-header';\nconst DEFAULT_ICON_DIMENSIONS = '21px';\n\n@Component({\n standalone: true,\n imports: [CommonModule, TextContentDirective, ImagePipe],\n selector: 'div[wmDialogHeader]',\n templateUrl: './dialog-header.component.html'\n})\nexport class DialogHeaderComponent {\n\n @Input() public iconwidth = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconheight = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconmargin: string;\n @Input() public iconclass: string;\n @Input() public iconurl: string;\n @Input() public closable = true;\n @Input() public heading: string;\n @Input() public headinglevel?: string = 'h4';\n @Input() public subheading: string;\n @Input() public titleid:string;\n @Input() public title: string;\n isPrism: boolean;\n\n public get isClosable() {\n return toBoolean(this.closable);\n }\n\n constructor(elRef: ElementRef, @Inject(DialogRef) public dialogRef: BaseDialog, public app: App ) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n this.isPrism = this.app.isPrism;\n }\n\n public closeDialog() {\n this.dialogRef.close();\n }\n}\n","@if (isClosable) {\n <button (click)=\"closeDialog();\"\n [attr.aria-label]=\"'Close ' + (title ? title : '') + ' dialog'\" class=\"app-dialog-close close\" [ngClass]=\"{'btn-text': isPrism}\" [attr.title]=\"title ? 'Close ' + title + ' dialog' : dialogRef.appLocale.LABEL_CLOSE\" >\n <span class=\"app-icon wi wi-clear\" aria-hidden=\"true\"></span>\n </button>\n}\n\n@switch (headinglevel) {\n @case ('h1') {\n <h1 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h1>\n }\n @case ('h2') {\n <h2 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h2>\n }\n @case ('h3') {\n <h3 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h3>\n }\n @case ('h4') {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n @case ('h5') {\n <h5 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h5>\n }\n @case ('h6') {\n <h6 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h6>\n }\n @default {\n <h4 class=\"app-dialog-title modal-title\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </h4>\n }\n}\n\n<ng-template #headerTemplate>\n @if (iconclass && !iconurl) {\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"></i>\n }\n @if (iconurl) {\n <img data-identifier=\"img\" [src]=\"iconurl | image\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\"/>\n }\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n @if (subheading) {\n <span class=\"dialog-sub-heading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DEFAULT_CLS","i1"],"mappings":"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"}
@@ -768,6 +768,11 @@
768
768
  }
769
769
  ngAfterViewInit() {
770
770
  super.ngAfterViewInit();
771
+ // Fix tabindex if it's NaN (ensure it's fixed after view initialization)
772
+ if (this.widget.tabindex !== undefined && (typeof this.widget.tabindex === 'number' && isNaN(this.widget.tabindex))) {
773
+ this.widget.tabindex = 0;
774
+ this.tabindex = 0;
775
+ }
771
776
  base.styler(this.nativeElement.querySelector('.dropdown-toggle'), this);
772
777
  }
773
778
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: MenuComponent, deps: [{ token: i0__namespace.Injector }, { token: i1__namespace.Router }, { token: i2__namespace.UserDefinedExecutionContext }, { token: i2__namespace.App }, { token: i3$1__namespace.BsDropdownDirective, optional: true, self: true }, { token: NavComponent, optional: true }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
@@ -218,6 +218,11 @@ export class MenuComponent extends DatasetAwareNavComponent {
218
218
  }
219
219
  ngAfterViewInit() {
220
220
  super.ngAfterViewInit();
221
+ // Fix tabindex if it's NaN (ensure it's fixed after view initialization)
222
+ if (this.widget.tabindex !== undefined && (typeof this.widget.tabindex === 'number' && isNaN(this.widget.tabindex))) {
223
+ this.widget.tabindex = 0;
224
+ this.tabindex = 0;
225
+ }
221
226
  styler(this.nativeElement.querySelector('.dropdown-toggle'), this);
222
227
  }
223
228
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.UserDefinedExecutionContext }, { token: i2.App }, { token: i3.BsDropdownDirective, optional: true, self: true }, { token: i4.NavComponent, optional: true }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -272,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
272
277
  type: HostListener,
273
278
  args: ['keydown.enter', ['$event', '"ENTER"']]
274
279
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9uYXZpZ2F0aW9uL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBRUgsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLG9CQUFvQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFB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MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFNBQVM7MkJBQUMsY0FBYzs7MEJBQ3hCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQTlEaEIsTUFBTTtzQkFBOUIsWUFBWTt1QkFBQyxTQUFTO2dCQVNHLE1BQU07c0JBQS9CLFlBQVk7dUJBQUMsVUFBVTtnQkFlOEIsU0FBUztzQkFOOUQsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7O3NCQUN4RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQzs7c0JBQzVELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDOztzQkFDOUQsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUM7O3NCQUM1RCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvYnV0dG9uJztcbmltcG9ydCB7IE1lbnVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1kcm9wZG93bi9tZW51LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0JzRHJvcGRvd25EaXJlY3RpdmUsIEJzRHJvcGRvd25Nb2R1bGV9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuXG5pbXBvcnQge1xuICAgICRhcHBEaWdlc3QsXG4gICAgYWRkQ2xhc3MsXG4gICAgQXBwLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFVVE9DTE9TRV9UWVBFLFxuICAgIERhdGFzZXRBd2FyZU5hdkNvbXBvbmVudCxcbiAgICBoYXNMaW5rVG9DdXJyZW50UGFnZSxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIFRleHRDb250ZW50RGlyZWN0aXZlXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtOYXZDb21wb25lbnR9IGZyb20gJy4vbmF2L25hdi5jb21wb25lbnQnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vbWVudS5wcm9wcyc7XG5pbXBvcnQge2Nsb25lLCBmb3JFYWNoLCBpbmNsdWRlcywgaXNFbXB0eX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQW5jaG9yQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvYW5jaG9yJztcblxuZXhwb3J0IGNvbnN0IEtFWUJPQVJEX01PVkVNRU5UUyA9IHtcbiAgICBNT1ZFX1VQOiAnVVAtQVJST1cnLFxuICAgIE1PVkVfTEVGVDogJ0xFRlQtQVJST1cnLFxuICAgIE1PVkVfUklHSFQ6ICdSSUdIVC1BUlJPVycsXG4gICAgTU9WRV9ET1dOOiAnRE9XTi1BUlJPVycsXG4gICAgT05fRU5URVI6ICdFTlRFUicsXG4gICAgT05fTU9VU0VfRU5URVI6ICdNT1VTRS1FTlRFUicsXG4gICAgT05fTU9VU0VfTEVBVkU6ICdNT1VTRS1MRUFWRScsXG4gICAgT05fVEFCOiAnVEFCJyxcbiAgICBPTl9TSElGVF9UQUI6ICdTSElGVC1UQUInLFxuICAgIE9OX0VTQ0FQRTogJ0VTQydcbn07XG5cbmV4cG9ydCBjb25zdCBNRU5VX1BPU0lUSU9OID0ge1xuICAgIFVQX0xFRlQ6ICd1cCxsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBET1dOX0xFRlQ6ICdkb3duLGxlZnQnLFxuICAgIERPV05fUklHSFQ6ICdkb3duLHJpZ2h0JyxcbiAgICBJTkxJTkU6ICdpbmxpbmUnXG59O1xuXG5jb25zdCBQT1NJVElPTiA9IHtcbiAgICBET1dOX1JJR0hUOiAnZG93bixyaWdodCcsXG4gICAgRE9XTl9MRUZUOiAnZG93bixsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBVUF9MRUZUOiAndXAsbGVmdCcsXG4gICAgSU5MSU5FOiAnaW5saW5lJ1xufTtcbmNvbnN0IENBUkVUX0NMUyA9IHtcbiAgICBVUDogJ2ZhLWNhcmV0LXVwJyxcbiAgICBET1dOOiAnZmEtY2FyZXQtZG93bidcbn07XG5jb25zdCBQVUxMX0NMUyA9IHtcbiAgICBMRUZUOiAncHVsbC1sZWZ0JyxcbiAgICBSSUdIVDogJ3B1bGwtcmlnaHQnXG59O1xuXG5jb25zdCBBVVRPX09QRU4gPSB7XG4gICAgTkVWRVI6ICduZXZlcicsXG4gICAgQUNUSVZFX1BBR0U6ICdhY3RpdmVwYWdlJyxcbiAgICBBTFdBWVM6ICdhbHdheXMnXG59O1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0geyB3aWRnZXRUeXBlOiAnd20tbWVudScsIGhvc3RDbGFzczogJ2Ryb3Bkb3duIGFwcC1tZW51JyB9O1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQnNEcm9wZG93bk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBUZXh0Q29udGVudERpcmVjdGl2ZSwgQW5jaG9yQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIE1lbnVEcm9wZG93bkNvbXBvbmVudF0sXG4gICAgc2VsZWN0b3I6ICdbd21NZW51XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoTWVudUNvbXBvbmVudCksXG5cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBtZW51YWxpZ246IHN0cmluZztcbiAgICBwdWJsaWMgbWVudXBvc2l0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIG1lbnVsYXlvdXQ6IHN0cmluZztcbiAgICBwdWJsaWMgbWVudWNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGxpbmt0YXJnZXQ6IHN0cmluZztcbiAgICBwdWJsaWMgaWNvbmNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGFuaW1hdGVpdGVtczogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNhYmxlTWVudUNvbnRleHQ6IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dvbmhvdmVyOiBib29sZWFuO1xuICAgIHB1YmxpYyBhdXRvY2xvc2U6IHN0cmluZztcbiAgICBwdWJsaWMgYXV0b29wZW46IHN0cmluZztcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgaXRlbUFjdGlvbkZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIG1lbnVDYXJldCA9ICdmYS1jYXJldC1kb3duJztcbiAgICBwcml2YXRlIF9zZWxlY3RGaXJzdEl0ZW0gPSBmYWxzZTtcblxuICAgIHB1YmxpYyB0eXBlOiBhbnk7XG4gICAgcHVibGljIF9tZW51cG9zaXRpb246IHN0cmluZztcblxuICAgIEBIb3N0TGlzdGVuZXIoJ29uU2hvd24nKSBvblNob3coKSB7XG4gICAgICAgIHRoaXMuX21lbnVwb3NpdGlvbiA9IHRoaXMubWVudXBvc2l0aW9uO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0Rmlyc3RJdGVtKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJz4gdWxbd21tZW51ZHJvcGRvd25dIGxpLmFwcC1tZW51LWl0ZW0nKS5maXJzdCgpLmZpbmQoJz4gYScpLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuICAgIEBIb3N0TGlzdGVuZXIoJ29uSGlkZGVuJykgb25IaWRlKCkge1xuICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJ2xpJykucmVtb3ZlQ2xhc3MoJ29wZW4nKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0Rmlyc3RJdGVtID0gZmFsc2U7XG4gICAgICAgIC8vIHJlc2V0IHRoZSBtZW51cG9zaXRpb24gd2hlbiBkcm9wZG93biBpcyBjbG9zZWRcbiAgICAgICAgdGhpcy5tZW51cG9zaXRpb24gPSB0aGlzLl9tZW51cG9zaXRpb24gPyB0aGlzLl9tZW51cG9zaXRpb24gOiBNRU5VX1BPU0lUSU9OLkRPV05fUklHSFQ7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCcsICdcIlVQLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnLCAnXCJNT1VTRS1FTlRFUlwiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50JywgJ1wiTU9VU0UtTEVBVkVcIiddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnLCAnXCJET1dOLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCcsICdcIlJJR0hULUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93bGVmdCcsIFsnJGV2ZW50JywgJ1wiTEVGVC1BUlJPV1wiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50JywgJ1wiRU5URVJcIiddKSBvbktleURvd24oJGV2ZW50LCBldmVudEFjdGlvbikge1xuICAgICAgICBjb25zdCBLRVlfTU9WRU1FTlRTID0gY2xvbmUoS0VZQk9BUkRfTU9WRU1FTlRTKTtcbiAgICAgICAgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLlVQX1JJR0hUKSB7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfVVAgPSAnRE9XTi1BUlJPVyc7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiA9ICdVUC1BUlJPVyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZW51cG9zaXRpb24gPT09IE1FTlVfUE9TSVRJT04uVVBfTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1VQID0gJ0RPV04tQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0RPV04gPSAnVVAtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLkRPV05fTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluY2x1ZGVzKFtLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiwgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUXSwgZXZlbnRBY3Rpb24pKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYnNEcm9wZG93bi5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGaXJzdEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnPiB1bFt3bW1lbnVkcm9wZG93bl0gbGkuYXBwLW1lbnUtaXRlbScpLmZpcnN0KCkuZmluZCgnPiBhJykuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudEFjdGlvbiA9PT0gS0VZX01PVkVNRU5UUy5PTl9FTlRFUiB8fCAoZXZlbnRBY3Rpb24gPT09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfRU5URVIgJiYgdGhpcy5zaG93b25ob3ZlcikpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi50b2dnbGUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZXMoW0tFWV9NT1ZFTUVOVFMuTU9WRV9VUCwgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlRdLCBldmVudEFjdGlvbikgfHwgKGV2ZW50QWN0aW9uID09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfTEVBVkUgJiYgdGhpcy5hdXRvY2xvc2UgPT0gQVVUT0NMT1NFX1RZUEUuQUxXQVlTICYmIHRoaXMuc2hvd29uaG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgcm91dGU6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSB1c2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQ6IFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgYnNEcm9wZG93bjogQnNEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnROYXY6IE5hdkNvbXBvbmVudCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnc2VsZWN0LmV2ZW50JykgcHVibGljIHNlbGVjdEV2ZW50Q0I6IHN0cmluZyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgaWYgKHBhcmVudE5hdikge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlTWVudUNvbnRleHQgPSAhIXBhcmVudE5hdi5kaXNhYmxlTWVudUNvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNZW51Q29udGV4dCA9ICEhc2VsZWN0RXZlbnRDQjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3Igc2VsZWN0aW5nIHRoZSBpdGVtIG9uIGxvYWRcbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubm9kZXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5ub2RlcykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tdG9nZ2xlJykgYXMgSFRNTEVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgbWVudSB3aWRnZXQgaXMgaW5zaWRlIG5hdiB3aWRnZXQgdGhlbiBkb250IGNoZWNrIGZvciBpdGVtIGlzYWN0aXZlIHByb3BlcnR5IGJlY2F1c2UgdGhlc2Ugd2lsbCBiZSBoYW5kbGVkIGZvcm0gbmF2IHdpZGdldC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnROYXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaXRlbUZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0SXRlbSA9IChub2RlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKG5vZGVzLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1Gb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTWVudUl0ZW1TZWxlY3QoeyAkZXZlbnQ6IHt9LCAkaXRlbTogaXRlbSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIHRoZSBhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIGFjdGl2ZSBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckl0ZW1BY3Rpb24odGhpcywgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SXRlbShpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGdldEl0ZW0odGhpcy5ub2Rlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXROb2RlcygpIHtcbiAgICAgICAgc3VwZXIucmVzZXROb2RlcygpO1xuICAgICAgICAvLyBvcGVuIHRoZSBtZW51IGlmIGFueSBvZiBpdHMgbWVudSBpdGVtcyBoYXMgbGluayB0byBjdXJyZW50IHBhZ2UgYW5kIGlmIGF1dG9vcGVuIHZhbHVlIGlzICdhY3RpdmUgcGFnZSdcbiAgICAgICAgaWYgKCh0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUNUSVZFX1BBR0UgJiYgaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB8fCB0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUxXQVlTKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY2FuY2VsU3Vic2NyaXB0aW9uID0gdGhpcy5hcHAuc3Vic2NyaWJlKFwiaGlnaGxpZ2h0QWN0aXZlTGlua1wiLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi10b2dnbGUnKSBhcyBIVE1MRWxlbWVudCwgJ2FjdGl2ZScsIGhhc0xpbmtUb0N1cnJlbnRQYWdlKHRoaXMubm9kZXMsIHRoaXMucm91dGUudXJsICkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBjYW5jZWxTdWJzY3JpcHRpb24oKSk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcblxuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5ID09PSAnYXV0b2Nsb3NlJykge1xuICAgICAgICAgICAgdGhpcy5ic0Ryb3Bkb3duLmF1dG9DbG9zZSA9IG52ICE9PSBBVVRPQ0xPU0VfVFlQRS5ESVNBQkxFRDtcbiAgICAgICAgICAgIHRoaXMuYXV0b2Nsb3NlID0gbnY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZW51UG9zaXRpb24oKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5tZW51cG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9SSUdIVDpcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9MRUZUOlxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gUFVMTF9DTFMuUklHSFQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uVVBfTEVGVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLlJJR0hUO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUNhcmV0ID0gQ0FSRVRfQ0xTLlVQO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQT1NJVElPTi5VUF9SSUdIVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuVVA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBPU0lUSU9OLklOTElORTpcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9ICdkcm9waW5saW5lLW1lbnUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUl0ZW1TZWxlY3QoYXJncykge1xuICAgICAgICBjb25zdCB7ICRldmVudCB9ID0gYXJncztcbiAgICAgICAgY29uc3QgJGl0ZW0gPSBhcmdzLiRpdGVtLnZhbHVlO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIHsgJGV2ZW50LCAkaXRlbSB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi10b2dnbGUnKSBhcyBIVE1MRWxlbWVudCwgdGhpcyk7XG4gICAgfVxufVxuIiwiXG5cbjxuZy10ZW1wbGF0ZSAjaW5uZXJUZW1wbGF0ZT5cbiAgPGkgY2xhc3M9XCJhcHAtaWNvbiB7e2ljb25jbGFzc319XCI+PC9pPlxuICA8c3BhbiBjbGFzcz1cImNhcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiY2FwdGlvblwiPjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGNhcmV0IGZhIHt7bWVudUNhcmV0fX1cIj48L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG5AaWYgKHR5cGUgPT09ICdhbmNob3InKSB7XG4gIDxhIHdtQW5jaG9yXG4gICAgZHJvcGRvd25Ub2dnbGVcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCAnTWVudSdcIlxuICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICBoaW50LmJpbmQ9XCJoaW50XCJcbiAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSB7e21lbnVjbGFzc319XCJcbiAgICBzaG9ydGN1dGtleS5iaW5kPVwic2hvcnRjdXRrZXlcIlxuICAgIHRhYmluZGV4LmJpbmQ9XCJ0YWJpbmRleFwiXG4gICAgY2FwdGlvbi5iaW5kPVwiY2FwdGlvblwiXG4gICAgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgIGljb25wb3NpdGlvbi5iaW5kPVwiaWNvbnBvc2l0aW9uXCJcbiAgICBiYWRnZXZhbHVlLmJpbmQ9XCJiYWRnZXZhbHVlXCJcbiAgICA+XG4gICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGNhcmV0IGZhXCIgW25nQ2xhc3NdPVwiW21lbnVDYXJldF1cIj48L3NwYW4+XG4gIDwvYT5cbn0gQGVsc2Uge1xuICA8YnV0dG9uIHdtQnV0dG9uXG4gICAgZHJvcGRvd25Ub2dnbGVcbiAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCAnTWVudSdcIlxuICAgIGNsYXNzPVwiYnRuIGFwcC1idXR0b24gZHJvcGRvd24tdG9nZ2xlIHt7bWVudWNsYXNzfX1cIlxuICAgIGhpbnQuYmluZD1cImhpbnRcIlxuICAgIHNob3J0Y3V0a2V5LmJpbmQ9XCJzaG9ydGN1dGtleVwiXG4gICAgdGFiaW5kZXguYmluZD1cInRhYmluZGV4XCJcbiAgICBjYXB0aW9uLmJpbmQ9XCJjYXB0aW9uXCJcbiAgICBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgaWNvbnBvc2l0aW9uLmJpbmQ9XCJpY29ucG9zaXRpb25cIj5cbiAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgY2FyZXQgZmFcIiBbbmdDbGFzc109XCJbbWVudUNhcmV0XVwiPjwvc3Bhbj5cbiAgPC9idXR0b24+XG59XG5cbjx1bCAqZHJvcGRvd25NZW51IFtpdGVtc109XCJub2Rlc1wiIFtuZ0NsYXNzXT1cIm1lbnVsYXlvdXRcIiBjbGFzcz1cImljb24tcG9zaXRpb24te3tpY29ucG9zaXRpb259fVwiIHJvbGU9XCJtZW51YmFyXCJcbndtTWVudURyb3Bkb3duPjwvdWw+XG4iXX0=
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9uYXZpZ2F0aW9uL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBRUgsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLG9CQUFvQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBRTlELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLE1BQU0sRUFBRSxLQUFLO0lBQ2IsWUFBWSxFQUFFLFdBQVc7SUFDekIsU0FBUyxFQUFFLEtBQUs7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUN6QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixTQUFTLEVBQUUsV0FBVztJQUN0QixVQUFVLEVBQUUsWUFBWTtJQUN4QixNQUFNLEVBQUUsUUFBUTtDQUNuQixDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUc7SUFDYixVQUFVLEVBQUUsWUFBWTtJQUN4QixTQUFTLEVBQUUsV0FBVztJQUN0QixRQUFRLEVBQUUsVUFBVTtJQUNwQixPQUFPLEVBQUUsU0FBUztJQUNsQixNQUFNLEVBQUUsUUFBUTtDQUNuQixDQUFDO0FBQ0YsTUFBTSxTQUFTLEdBQUc7SUFDZCxFQUFFLEVBQUUsYUFBYTtJQUNqQixJQUFJLEVBQUUsZUFBZTtDQUN4QixDQUFDO0FBQ0YsTUFBTSxRQUFRLEdBQUc7SUFDYixJQUFJLEVBQUUsV0FBVztJQUNqQixLQUFLLEVBQUUsWUFBWTtDQUN0QixDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUc7SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE1BQU0sRUFBRSxRQUFRO0NBQ25CLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUM7QUFXaEYsTUFBTSxPQUFPLGFBQWMsU0FBUSx3QkFBd0I7YUFDaEQsb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUF1QmhCLE1BQU07UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1RixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxVQUFVLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBQ3lCLE1BQU07UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUN2RixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsVUFBVSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQVFxRCxTQUFTLENBQUMsTUFBTSxFQUFFLFdBQVc7UUFDL0UsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxhQUFhLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztZQUNyQyxhQUFhLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUN6QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyRCxhQUFhLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztZQUNyQyxhQUFhLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUNyQyxhQUFhLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztZQUN4QyxhQUFhLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2RCxhQUFhLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztZQUN4QyxhQUFhLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1RixDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksV0FBVyxLQUFLLGFBQWEsQ0FBQyxRQUFRLElBQUksQ0FBQyxXQUFXLEtBQUssYUFBYSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN0SCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sSUFBSSxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxhQUFhLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNqTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQ0ksR0FBYSxFQUNOLEtBQWEsRUFDWiwyQkFBd0QsRUFDeEQsR0FBUSxFQUNXLFVBQStCLEVBQ3RDLFNBQXVCLEVBQ1QsYUFBcUIsRUFDZixlQUFvQjtRQUU1RCxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQVJwQyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ1osZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQ1csZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDdEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUNULGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBbkVuRCxjQUFTLEdBQUcsZUFBZSxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQXNFN0IsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQztRQUNELGlDQUFpQztRQUNqQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNuRCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVGLENBQUM7Z0JBQ0QsZ0lBQWdJO2dCQUNoSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDakIsT0FBTztnQkFDWCxDQUFDO2dCQUNELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDdEIsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNwQixJQUFJLFNBQVMsRUFBRSxDQUFDOzRCQUNaLE9BQU87d0JBQ1gsQ0FBQzt3QkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzs0QkFDaEIsU0FBUyxHQUFHLElBQUksQ0FBQzs0QkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzs0QkFDbkQsaURBQWlEOzRCQUNqRCxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQzlCLE9BQU8sS0FBSyxDQUFDO3dCQUNqQixDQUFDO3dCQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7NEJBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzNCLENBQUM7b0JBRUwsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFMUUsQ0FBQztJQUVTLFVBQVU7UUFDaEIsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLHlHQUF5RztRQUN6RyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsV0FBVyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUUsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFnQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQztRQUNsSixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVcsRUFBRSxFQUFPLEVBQUUsRUFBUTtRQUUzQyxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksR0FBRyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLEVBQUUsS0FBSyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFTSxlQUFlO1FBQ2xCLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLEtBQUssUUFBUSxDQUFDLFVBQVU7Z0JBQ3BCLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDaEMsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLFNBQVM7Z0JBQ25CLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDaEMsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLE9BQU87Z0JBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLFFBQVE7Z0JBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7Z0JBQ25DLE1BQU07UUFDZCxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQUk7UUFDeEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIseUVBQXlFO1FBQ3pFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFZLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7K0dBNU1RLGFBQWEseU9BcUZQLGNBQWMsOEJBQ2pCLGtCQUFrQjttR0F0RnJCLGFBQWEsdWZBTFg7WUFDUCxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7U0FFcEMsaURDOUZMLG03Q0E4Q0EsMkNEMENjLGdCQUFnQixrVEFBRSxZQUFZLDZIQUFFLG9CQUFvQixtRkFBRSxlQUFlLGdGQUFFLGVBQWUscUZBQUUscUJBQXFCOzs0RkFROUcsYUFBYTtrQkFWekIsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQyxZQUM5RyxVQUFVLGFBRVQ7d0JBQ1Asa0JBQWtCLGVBQWU7cUJBRXBDOzswQkFxRkksSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFNBQVM7MkJBQUMsY0FBYzs7MEJBQ3hCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQTlEaEIsTUFBTTtzQkFBOUIsWUFBWTt1QkFBQyxTQUFTO2dCQVNHLE1BQU07c0JBQS9CLFlBQVk7dUJBQUMsVUFBVTtnQkFlOEIsU0FBUztzQkFOOUQsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7O3NCQUN4RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQzs7c0JBQzVELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDOztzQkFDOUQsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUM7O3NCQUM1RCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvYnV0dG9uJztcbmltcG9ydCB7IE1lbnVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1kcm9wZG93bi9tZW51LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0JzRHJvcGRvd25EaXJlY3RpdmUsIEJzRHJvcGRvd25Nb2R1bGV9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuXG5pbXBvcnQge1xuICAgICRhcHBEaWdlc3QsXG4gICAgYWRkQ2xhc3MsXG4gICAgQXBwLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFVVE9DTE9TRV9UWVBFLFxuICAgIERhdGFzZXRBd2FyZU5hdkNvbXBvbmVudCxcbiAgICBoYXNMaW5rVG9DdXJyZW50UGFnZSxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIFRleHRDb250ZW50RGlyZWN0aXZlXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtOYXZDb21wb25lbnR9IGZyb20gJy4vbmF2L25hdi5jb21wb25lbnQnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vbWVudS5wcm9wcyc7XG5pbXBvcnQge2Nsb25lLCBmb3JFYWNoLCBpbmNsdWRlcywgaXNFbXB0eX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQW5jaG9yQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvYW5jaG9yJztcblxuZXhwb3J0IGNvbnN0IEtFWUJPQVJEX01PVkVNRU5UUyA9IHtcbiAgICBNT1ZFX1VQOiAnVVAtQVJST1cnLFxuICAgIE1PVkVfTEVGVDogJ0xFRlQtQVJST1cnLFxuICAgIE1PVkVfUklHSFQ6ICdSSUdIVC1BUlJPVycsXG4gICAgTU9WRV9ET1dOOiAnRE9XTi1BUlJPVycsXG4gICAgT05fRU5URVI6ICdFTlRFUicsXG4gICAgT05fTU9VU0VfRU5URVI6ICdNT1VTRS1FTlRFUicsXG4gICAgT05fTU9VU0VfTEVBVkU6ICdNT1VTRS1MRUFWRScsXG4gICAgT05fVEFCOiAnVEFCJyxcbiAgICBPTl9TSElGVF9UQUI6ICdTSElGVC1UQUInLFxuICAgIE9OX0VTQ0FQRTogJ0VTQydcbn07XG5cbmV4cG9ydCBjb25zdCBNRU5VX1BPU0lUSU9OID0ge1xuICAgIFVQX0xFRlQ6ICd1cCxsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBET1dOX0xFRlQ6ICdkb3duLGxlZnQnLFxuICAgIERPV05fUklHSFQ6ICdkb3duLHJpZ2h0JyxcbiAgICBJTkxJTkU6ICdpbmxpbmUnXG59O1xuXG5jb25zdCBQT1NJVElPTiA9IHtcbiAgICBET1dOX1JJR0hUOiAnZG93bixyaWdodCcsXG4gICAgRE9XTl9MRUZUOiAnZG93bixsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBVUF9MRUZUOiAndXAsbGVmdCcsXG4gICAgSU5MSU5FOiAnaW5saW5lJ1xufTtcbmNvbnN0IENBUkVUX0NMUyA9IHtcbiAgICBVUDogJ2ZhLWNhcmV0LXVwJyxcbiAgICBET1dOOiAnZmEtY2FyZXQtZG93bidcbn07XG5jb25zdCBQVUxMX0NMUyA9IHtcbiAgICBMRUZUOiAncHVsbC1sZWZ0JyxcbiAgICBSSUdIVDogJ3B1bGwtcmlnaHQnXG59O1xuXG5jb25zdCBBVVRPX09QRU4gPSB7XG4gICAgTkVWRVI6ICduZXZlcicsXG4gICAgQUNUSVZFX1BBR0U6ICdhY3RpdmVwYWdlJyxcbiAgICBBTFdBWVM6ICdhbHdheXMnXG59O1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0geyB3aWRnZXRUeXBlOiAnd20tbWVudScsIGhvc3RDbGFzczogJ2Ryb3Bkb3duIGFwcC1tZW51JyB9O1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQnNEcm9wZG93bk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBUZXh0Q29udGVudERpcmVjdGl2ZSwgQW5jaG9yQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIE1lbnVEcm9wZG93bkNvbXBvbmVudF0sXG4gICAgc2VsZWN0b3I6ICdbd21NZW51XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoTWVudUNvbXBvbmVudCksXG5cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBtZW51YWxpZ246IHN0cmluZztcbiAgICBwdWJsaWMgbWVudXBvc2l0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIG1lbnVsYXlvdXQ6IHN0cmluZztcbiAgICBwdWJsaWMgbWVudWNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGxpbmt0YXJnZXQ6IHN0cmluZztcbiAgICBwdWJsaWMgaWNvbmNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGFuaW1hdGVpdGVtczogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNhYmxlTWVudUNvbnRleHQ6IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dvbmhvdmVyOiBib29sZWFuO1xuICAgIHB1YmxpYyBhdXRvY2xvc2U6IHN0cmluZztcbiAgICBwdWJsaWMgYXV0b29wZW46IHN0cmluZztcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgaXRlbUFjdGlvbkZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIG1lbnVDYXJldCA9ICdmYS1jYXJldC1kb3duJztcbiAgICBwcml2YXRlIF9zZWxlY3RGaXJzdEl0ZW0gPSBmYWxzZTtcblxuICAgIHB1YmxpYyB0eXBlOiBhbnk7XG4gICAgcHVibGljIF9tZW51cG9zaXRpb246IHN0cmluZztcblxuICAgIEBIb3N0TGlzdGVuZXIoJ29uU2hvd24nKSBvblNob3coKSB7XG4gICAgICAgIHRoaXMuX21lbnVwb3NpdGlvbiA9IHRoaXMubWVudXBvc2l0aW9uO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0Rmlyc3RJdGVtKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJz4gdWxbd21tZW51ZHJvcGRvd25dIGxpLmFwcC1tZW51LWl0ZW0nKS5maXJzdCgpLmZpbmQoJz4gYScpLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuICAgIEBIb3N0TGlzdGVuZXIoJ29uSGlkZGVuJykgb25IaWRlKCkge1xuICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJ2xpJykucmVtb3ZlQ2xhc3MoJ29wZW4nKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0Rmlyc3RJdGVtID0gZmFsc2U7XG4gICAgICAgIC8vIHJlc2V0IHRoZSBtZW51cG9zaXRpb24gd2hlbiBkcm9wZG93biBpcyBjbG9zZWRcbiAgICAgICAgdGhpcy5tZW51cG9zaXRpb24gPSB0aGlzLl9tZW51cG9zaXRpb24gPyB0aGlzLl9tZW51cG9zaXRpb24gOiBNRU5VX1BPU0lUSU9OLkRPV05fUklHSFQ7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCcsICdcIlVQLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnLCAnXCJNT1VTRS1FTlRFUlwiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50JywgJ1wiTU9VU0UtTEVBVkVcIiddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnLCAnXCJET1dOLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCcsICdcIlJJR0hULUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93bGVmdCcsIFsnJGV2ZW50JywgJ1wiTEVGVC1BUlJPV1wiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50JywgJ1wiRU5URVJcIiddKSBvbktleURvd24oJGV2ZW50LCBldmVudEFjdGlvbikge1xuICAgICAgICBjb25zdCBLRVlfTU9WRU1FTlRTID0gY2xvbmUoS0VZQk9BUkRfTU9WRU1FTlRTKTtcbiAgICAgICAgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLlVQX1JJR0hUKSB7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfVVAgPSAnRE9XTi1BUlJPVyc7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiA9ICdVUC1BUlJPVyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZW51cG9zaXRpb24gPT09IE1FTlVfUE9TSVRJT04uVVBfTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1VQID0gJ0RPV04tQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0RPV04gPSAnVVAtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLkRPV05fTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluY2x1ZGVzKFtLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiwgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUXSwgZXZlbnRBY3Rpb24pKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYnNEcm9wZG93bi5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGaXJzdEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnPiB1bFt3bW1lbnVkcm9wZG93bl0gbGkuYXBwLW1lbnUtaXRlbScpLmZpcnN0KCkuZmluZCgnPiBhJykuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudEFjdGlvbiA9PT0gS0VZX01PVkVNRU5UUy5PTl9FTlRFUiB8fCAoZXZlbnRBY3Rpb24gPT09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfRU5URVIgJiYgdGhpcy5zaG93b25ob3ZlcikpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi50b2dnbGUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZXMoW0tFWV9NT1ZFTUVOVFMuTU9WRV9VUCwgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlRdLCBldmVudEFjdGlvbikgfHwgKGV2ZW50QWN0aW9uID09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfTEVBVkUgJiYgdGhpcy5hdXRvY2xvc2UgPT0gQVVUT0NMT1NFX1RZUEUuQUxXQVlTICYmIHRoaXMuc2hvd29uaG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgcm91dGU6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSB1c2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQ6IFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgYnNEcm9wZG93bjogQnNEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnROYXY6IE5hdkNvbXBvbmVudCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnc2VsZWN0LmV2ZW50JykgcHVibGljIHNlbGVjdEV2ZW50Q0I6IHN0cmluZyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgaWYgKHBhcmVudE5hdikge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlTWVudUNvbnRleHQgPSAhIXBhcmVudE5hdi5kaXNhYmxlTWVudUNvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNZW51Q29udGV4dCA9ICEhc2VsZWN0RXZlbnRDQjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3Igc2VsZWN0aW5nIHRoZSBpdGVtIG9uIGxvYWRcbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubm9kZXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5ub2RlcykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tdG9nZ2xlJykgYXMgSFRNTEVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgbWVudSB3aWRnZXQgaXMgaW5zaWRlIG5hdiB3aWRnZXQgdGhlbiBkb250IGNoZWNrIGZvciBpdGVtIGlzYWN0aXZlIHByb3BlcnR5IGJlY2F1c2UgdGhlc2Ugd2lsbCBiZSBoYW5kbGVkIGZvcm0gbmF2IHdpZGdldC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnROYXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaXRlbUZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0SXRlbSA9IChub2RlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKG5vZGVzLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1Gb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTWVudUl0ZW1TZWxlY3QoeyAkZXZlbnQ6IHt9LCAkaXRlbTogaXRlbSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIHRoZSBhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIGFjdGl2ZSBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckl0ZW1BY3Rpb24odGhpcywgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SXRlbShpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGdldEl0ZW0odGhpcy5ub2Rlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXROb2RlcygpIHtcbiAgICAgICAgc3VwZXIucmVzZXROb2RlcygpO1xuICAgICAgICAvLyBvcGVuIHRoZSBtZW51IGlmIGFueSBvZiBpdHMgbWVudSBpdGVtcyBoYXMgbGluayB0byBjdXJyZW50IHBhZ2UgYW5kIGlmIGF1dG9vcGVuIHZhbHVlIGlzICdhY3RpdmUgcGFnZSdcbiAgICAgICAgaWYgKCh0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUNUSVZFX1BBR0UgJiYgaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB8fCB0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUxXQVlTKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY2FuY2VsU3Vic2NyaXB0aW9uID0gdGhpcy5hcHAuc3Vic2NyaWJlKFwiaGlnaGxpZ2h0QWN0aXZlTGlua1wiLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi10b2dnbGUnKSBhcyBIVE1MRWxlbWVudCwgJ2FjdGl2ZScsIGhhc0xpbmtUb0N1cnJlbnRQYWdlKHRoaXMubm9kZXMsIHRoaXMucm91dGUudXJsICkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBjYW5jZWxTdWJzY3JpcHRpb24oKSk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcblxuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5ID09PSAnYXV0b2Nsb3NlJykge1xuICAgICAgICAgICAgdGhpcy5ic0Ryb3Bkb3duLmF1dG9DbG9zZSA9IG52ICE9PSBBVVRPQ0xPU0VfVFlQRS5ESVNBQkxFRDtcbiAgICAgICAgICAgIHRoaXMuYXV0b2Nsb3NlID0gbnY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZW51UG9zaXRpb24oKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5tZW51cG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9SSUdIVDpcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9MRUZUOlxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gUFVMTF9DTFMuUklHSFQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uVVBfTEVGVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLlJJR0hUO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUNhcmV0ID0gQ0FSRVRfQ0xTLlVQO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQT1NJVElPTi5VUF9SSUdIVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuVVA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBPU0lUSU9OLklOTElORTpcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9ICdkcm9waW5saW5lLW1lbnUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUl0ZW1TZWxlY3QoYXJncykge1xuICAgICAgICBjb25zdCB7ICRldmVudCB9ID0gYXJncztcbiAgICAgICAgY29uc3QgJGl0ZW0gPSBhcmdzLiRpdGVtLnZhbHVlO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIHsgJGV2ZW50LCAkaXRlbSB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICAvLyBGaXggdGFiaW5kZXggaWYgaXQncyBOYU4gKGVuc3VyZSBpdCdzIGZpeGVkIGFmdGVyIHZpZXcgaW5pdGlhbGl6YXRpb24pXG4gICAgICAgIGlmICh0aGlzLndpZGdldC50YWJpbmRleCAhPT0gdW5kZWZpbmVkICYmICh0eXBlb2YgdGhpcy53aWRnZXQudGFiaW5kZXggPT09ICdudW1iZXInICYmIGlzTmFOKHRoaXMud2lkZ2V0LnRhYmluZGV4KSkpIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0LnRhYmluZGV4ID0gMDtcbiAgICAgICAgICAgICh0aGlzIGFzIGFueSkudGFiaW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmRyb3Bkb3duLXRvZ2dsZScpIGFzIEhUTUxFbGVtZW50LCB0aGlzKTtcbiAgICB9XG59XG4iLCJcblxuPG5nLXRlbXBsYXRlICNpbm5lclRlbXBsYXRlPlxuICA8aSBjbGFzcz1cImFwcC1pY29uIHt7aWNvbmNsYXNzfX1cIj48L2k+XG4gIDxzcGFuIGNsYXNzPVwiY2FwdGlvblwiIFt0ZXh0Q29udGVudF09XCJjYXB0aW9uXCI+PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgY2FyZXQgZmEge3ttZW51Q2FyZXR9fVwiPjwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbkBpZiAodHlwZSA9PT0gJ2FuY2hvcicpIHtcbiAgPGEgd21BbmNob3JcbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYWxhYmVsIHx8ICdNZW51J1wiXG4gICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIlxuICAgIHJvbGU9XCJidXR0b25cIlxuICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgIGhpbnQuYmluZD1cImhpbnRcIlxuICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIHt7bWVudWNsYXNzfX1cIlxuICAgIHNob3J0Y3V0a2V5LmJpbmQ9XCJzaG9ydGN1dGtleVwiXG4gICAgdGFiaW5kZXguYmluZD1cInRhYmluZGV4XCJcbiAgICBjYXB0aW9uLmJpbmQ9XCJjYXB0aW9uXCJcbiAgICBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgaWNvbnBvc2l0aW9uLmJpbmQ9XCJpY29ucG9zaXRpb25cIlxuICAgIGJhZGdldmFsdWUuYmluZD1cImJhZGdldmFsdWVcIlxuICAgID5cbiAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgY2FyZXQgZmFcIiBbbmdDbGFzc109XCJbbWVudUNhcmV0XVwiPjwvc3Bhbj5cbiAgPC9hPlxufSBAZWxzZSB7XG4gIDxidXR0b24gd21CdXR0b25cbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYWxhYmVsIHx8ICdNZW51J1wiXG4gICAgY2xhc3M9XCJidG4gYXBwLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUge3ttZW51Y2xhc3N9fVwiXG4gICAgaGludC5iaW5kPVwiaGludFwiXG4gICAgc2hvcnRjdXRrZXkuYmluZD1cInNob3J0Y3V0a2V5XCJcbiAgICB0YWJpbmRleC5iaW5kPVwidGFiaW5kZXhcIlxuICAgIGNhcHRpb24uYmluZD1cImNhcHRpb25cIlxuICAgIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICBpY29ucG9zaXRpb24uYmluZD1cImljb25wb3NpdGlvblwiPlxuICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBjYXJldCBmYVwiIFtuZ0NsYXNzXT1cIlttZW51Q2FyZXRdXCI+PC9zcGFuPlxuICA8L2J1dHRvbj5cbn1cblxuPHVsICpkcm9wZG93bk1lbnUgW2l0ZW1zXT1cIm5vZGVzXCIgW25nQ2xhc3NdPVwibWVudWxheW91dFwiIGNsYXNzPVwiaWNvbi1wb3NpdGlvbi17e2ljb25wb3NpdGlvbn19XCIgcm9sZT1cIm1lbnViYXJcIlxud21NZW51RHJvcGRvd24+PC91bD5cbiJdfQ==
@@ -756,6 +756,11 @@ class MenuComponent extends DatasetAwareNavComponent {
756
756
  }
757
757
  ngAfterViewInit() {
758
758
  super.ngAfterViewInit();
759
+ // Fix tabindex if it's NaN (ensure it's fixed after view initialization)
760
+ if (this.widget.tabindex !== undefined && (typeof this.widget.tabindex === 'number' && isNaN(this.widget.tabindex))) {
761
+ this.widget.tabindex = 0;
762
+ this.tabindex = 0;
763
+ }
759
764
  styler(this.nativeElement.querySelector('.dropdown-toggle'), this);
760
765
  }
761
766
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.UserDefinedExecutionContext }, { token: i2.App }, { token: i3$1.BsDropdownDirective, optional: true, self: true }, { token: NavComponent, optional: true }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }