qms-angular 1.1.26 → 1.1.28

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 (128) hide show
  1. package/bundles/qms-angular.umd.js +645 -544
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
  4. package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
  5. package/esm2015/lib/common/themes.const.js +2 -1
  6. package/esm2015/lib/components/breadcrumb/breadcrumb-item.directive.js +3 -3
  7. package/esm2015/lib/components/breadcrumb/breadcrumb.js +10 -4
  8. package/esm2015/lib/components/comment/comment.js +17 -11
  9. package/esm2015/lib/components/edit-file-name-dialog/edit-file-name-dialog.js +9 -2
  10. package/esm2015/lib/components/qms-nav-drawer/qms-nav-drawer.component.js +3 -3
  11. package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.js +3 -3
  12. package/esm2015/lib/components/qms-paginator/qms-paginator.component.js +9 -2
  13. package/esm2015/lib/components/related/list-other-related/list-related.component.js +9 -2
  14. package/esm2015/lib/components/related/model/popup-data.model.js +2 -1
  15. package/esm2015/lib/components/related/popup/related-popup.component.js +58 -24
  16. package/esm2015/lib/components/related/risk/analysis/analysis.component.js +9 -2
  17. package/esm2015/lib/components/related/risk/list/list.component.js +9 -2
  18. package/esm2015/lib/components/related/risk/result/result.component.js +9 -2
  19. package/esm2015/lib/components/reports/qms-report-content-portrait/qms-report-content-portrait.component.js +9 -2
  20. package/esm2015/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.js +8 -3
  21. package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +2 -2
  22. package/esm2015/lib/components/select-department/select-department.component.js +6 -38
  23. package/esm2015/lib/components/select-department-tree/model/department-paging.model.js +1 -2
  24. package/esm2015/lib/components/select-department-tree/model/select-department-tree.config.js +2 -5
  25. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +114 -164
  26. package/esm2015/lib/components/select-department-tree/select-department-tree.module.js +2 -4
  27. package/esm2015/lib/components/select-dialog/select-dialog.js +8 -4
  28. package/esm2015/lib/components/select-include-children/select-include-children.component.js +3 -3
  29. package/esm2015/lib/components/select-one/select-one-next.component.js +3 -3
  30. package/esm2015/lib/components/select-one/select-one.component.js +3 -3
  31. package/esm2015/lib/components/select-process-document/select-process-document.component.js +3 -3
  32. package/esm2015/lib/components/tree/basic-tree.component.js +4 -4
  33. package/esm2015/lib/components/upload-file-error-dialog/upload-file-error-dialog.js +9 -2
  34. package/esm2015/lib/directives/chip-input/chip-input-select-trigger.directive.js +3 -3
  35. package/esm2015/lib/directives/chips/chip.directive.js +2 -2
  36. package/esm2015/lib/directives/dropdown-menu/dropdown-item.directive.js +2 -2
  37. package/esm2015/lib/directives/file-upload/file-upload-display.directive.js +3 -3
  38. package/esm2015/lib/directives/file-upload/file-upload-multiple-display.directive.js +3 -3
  39. package/esm2015/lib/directives/file-upload/file-upload-multiple.directive.js +3 -3
  40. package/esm2015/lib/directives/file-upload/file-upload.directive.js +2 -2
  41. package/esm2015/lib/directives/search-field.directive.js +2 -2
  42. package/esm2015/lib/model/en.js +4 -2
  43. package/esm2015/lib/model/no.js +4 -2
  44. package/esm2015/lib/pipe/dateFormat.pipe.js +9 -2
  45. package/esm2015/lib/qms-angular.component.js +9 -2
  46. package/esm2015/lib/qms-ckeditor-components/common/bpmn/toolbar.function.js +10 -1
  47. package/esm2015/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.js +21 -15
  48. package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorImageUploadType.const.js +4 -0
  49. package/esm2015/lib/qms-ckeditor-components/common/enums/ckeditor-bpmn-expand.enum.js +8 -0
  50. package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +6 -9
  51. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
  52. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +39 -11
  53. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +2 -2
  54. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +53 -56
  55. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +9 -4
  56. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +28 -11
  57. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +33 -2
  58. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.js +6 -2
  59. package/esm2015/qms-angular.js +11 -11
  60. package/fesm2015/qms-angular.js +589 -468
  61. package/fesm2015/qms-angular.js.map +1 -1
  62. package/lib/common/models/qms-flat-node.model.d.ts +0 -1
  63. package/lib/common/models/qms-tree-node.model.d.ts +0 -1
  64. package/lib/common/themes.const.d.ts +1 -0
  65. package/lib/components/breadcrumb/breadcrumb-item.directive.d.ts +2 -2
  66. package/lib/components/breadcrumb/breadcrumb.d.ts +3 -0
  67. package/lib/components/comment/comment.d.ts +3 -0
  68. package/lib/components/edit-file-name-dialog/edit-file-name-dialog.d.ts +3 -0
  69. package/lib/components/qms-paginator/qms-paginator.component.d.ts +3 -0
  70. package/lib/components/related/list-other-related/list-related.component.d.ts +3 -0
  71. package/lib/components/related/model/popup-data.model.d.ts +2 -0
  72. package/lib/components/related/popup/related-popup.component.d.ts +13 -2
  73. package/lib/components/related/risk/analysis/analysis.component.d.ts +3 -0
  74. package/lib/components/related/risk/list/list.component.d.ts +3 -0
  75. package/lib/components/related/risk/result/result.component.d.ts +3 -0
  76. package/lib/components/reports/qms-report-content-portrait/qms-report-content-portrait.component.d.ts +3 -0
  77. package/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.d.ts +5 -3
  78. package/lib/components/select-department/select-department.component.d.ts +0 -19
  79. package/lib/components/select-department-tree/model/select-department-tree.config.d.ts +0 -3
  80. package/lib/components/select-department-tree/select-department-tree.component.d.ts +23 -51
  81. package/lib/components/select-dialog/select-dialog.d.ts +2 -1
  82. package/lib/components/upload-file-error-dialog/upload-file-error-dialog.d.ts +3 -0
  83. package/lib/directives/chip-input/chip-input-select-trigger.directive.d.ts +1 -1
  84. package/lib/directives/file-upload/file-upload-display.directive.d.ts +1 -1
  85. package/lib/directives/file-upload/file-upload-multiple-display.directive.d.ts +1 -1
  86. package/lib/directives/file-upload/file-upload-multiple.directive.d.ts +2 -2
  87. package/lib/model/en.d.ts +2 -0
  88. package/lib/model/no.d.ts +2 -0
  89. package/lib/pipe/dateFormat.pipe.d.ts +3 -0
  90. package/lib/qms-angular.component.d.ts +3 -0
  91. package/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.d.ts +1 -1
  92. package/lib/qms-ckeditor-components/common/constants/ckeditorImageUploadType.const.d.ts +3 -0
  93. package/lib/qms-ckeditor-components/common/enums/ckeditor-bpmn-expand.enum.d.ts +6 -0
  94. package/lib/qms-ckeditor-components/common/functions/common.function.d.ts +2 -4
  95. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +1 -0
  96. package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +4 -2
  97. package/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.d.ts +3 -1
  98. package/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.d.ts +1 -0
  99. package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +1 -0
  100. package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.d.ts +2 -0
  101. package/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.d.ts +1 -1
  102. package/package.json +1 -1
  103. package/qms-angular.d.ts +10 -10
  104. package/qms-angular.metadata.json +1 -1
  105. package/src/assets/jointjs/scss/bpmn.scss +22 -1
  106. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
  107. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
  108. package/src/assets/qms-ckeditor-plugin/src/plugins/anchor/anchorcommand.js +13 -3
  109. package/src/assets/qms-ckeditor-plugin/src/plugins/anchor/anchorui.js +7 -1
  110. package/src/assets/qms-ckeditor-plugin/src/plugins/bpmn/bpmndialogcommand.js +12 -3
  111. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkcommand.js +35 -33
  112. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkdialogcommand.js +9 -6
  113. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkediting.js +28 -14
  114. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkimageediting.js +1 -1
  115. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkimageui.js +97 -92
  116. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkui.js +40 -28
  117. package/src/assets/qms-ckeditor-plugin/src/plugins/link/ui/linkformview.js +24 -24
  118. package/src/assets/qms-ckeditor-plugin/src/plugins/link/utils.js +8 -1
  119. package/src/assets/qms-ckeditor-plugin/src/plugins/table/converters/downcast.js +2 -2
  120. package/src/assets/qms-ckeditor-plugin/src/plugins/template/loadtemplatedialogcommand.js +20 -1
  121. package/src/assets/qms-ckeditor-plugin/src/plugins/video/theme/video.css +1 -1
  122. package/src/assets/qms-ckeditor-plugin/src/plugins/video/video/videoediting.js +3 -2
  123. package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoupload/uploadvideocommand.js +1 -1
  124. package/src/lib/components/related/popup/related-popup.component.scss +19 -0
  125. package/src/lib/components/select-department/select-department.component.scss +5 -25
  126. package/src/lib/components/select-department-tree/select-department-tree.component.scss +182 -381
  127. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.scss +4 -0
  128. package/src/lib/qms-ckeditor-components/qms-ckeditor.component.scss +4 -0
@@ -503,7 +503,7 @@ export class QMSCKEditorImageMapComponent extends QMSCKEditorBaseComponent {
503
503
  QMSCKEditorImageMapComponent.decorators = [
504
504
  { type: Component, args: [{
505
505
  selector: 'app-qmsck-imagemap',
506
- template: "<div id=\"qmsckeditor-imagemap\" class=\"qmsckeditor qmsckeditor__imagemap__container\">\r\n <div id=\"qmsckeditor-imagemap-header\">\r\n <span id=\"qmsckeditor-imagemap-header_001\" mat-icon-button class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-imagemap-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-imagemap_002_001\">\r\n {{ LANG.QMSCKEDITOR.IMAGE_MAP_PROPERTIES }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor-imagemap-content\">\r\n <div id=\"qmsckeditor-imagemap-content_001\" class=\"col-12 mt-1 pl-2 pr-2 ps-2 pe-2\">\r\n <mat-expansion-panel id=\"qmsckeditor-imagemap-panel\" [expanded]=\"true\" (opened)=\"(true)\" (closed)=\"(false)\">\r\n <div id=\"qmsckeditor-imagemap-panel_001\">\r\n <div id=\"qmsckeditor-imagemap-panel_001_001\" class=\"qmsckeditor__imagemap__information\">\r\n <form [formGroup]=\"imageMapFormGroup\">\r\n <div class=\"row\">\r\n <div class=\"col-9\">\r\n <mat-button-toggle-group [(ngModel)]=\"selectedMode\" formControlName=\"modeList\"\r\n (change)=\"onModeChange($event)\">\r\n <mat-button-toggle *ngFor=\"let mode of modes\" [value]=\"mode.id\"\r\n [matTooltip]=\"mode.name\">\r\n <mat-icon color=\"red\" [svgIcon]=\"mode.icon\" aria-hidden=\"true\">\r\n </mat-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <span style=\"margin-left: 15px;\" #myStatus></span>\r\n </div>\r\n <div class=\"col-3\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ZOOM }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedZoom\" formControlName=\"zoomList\"\r\n (ngModelChange)=\"onZoomChange()\" disableOptionCentering>\r\n <mat-option *ngFor=\"let zoomType of zoomTypes\" [value]=\"zoomType.id\">\r\n {{ zoomType.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{'hidden': !showImageMapInformation}\">\r\n <div class=\"col-3\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_TYPE }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedLinkType\" formControlName=\"linkTypeList\"\r\n (ngModelChange)=\"onLinkTypeChange()\" disableOptionCentering>\r\n <mat-option *ngFor=\"let link of linkTypes\" [value]=\"link.id\">\r\n {{ link.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-3\" *ngIf=\"selectedLinkType === 0\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" formControlName=\"targetList\"\r\n (ngModelChange)=\"onTargetChange()\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{'hidden': !showImageMapInformation}\"\r\n *ngIf=\"selectedLinkType === 1\">\r\n <div class=\"col-3\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorText\" formControlName=\"anchorTextList\"\r\n (ngModelChange)=\"onAnchorTextChange()\">\r\n <mat-option *ngFor=\"let editorAnchor of editorAnchors\"\r\n [value]=\"editorAnchor.anchorValue\" disableOptionCentering>\r\n {{ editorAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{'hidden': !showImageMapInformation}\"\r\n *ngIf=\"selectedLinkType === 0\">\r\n <div class=\"col-3\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.PROTOCOL }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedProtocol\" formControlName=\"protocolList\"\r\n (ngModelChange)=\"onProtocolChange()\" disableOptionCentering>\r\n <mat-option *ngFor=\"let protocol of protocols\" [value]=\"protocol.id\">\r\n {{ protocol.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-5\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_URL }}</mat-label>\r\n <input matInput [(ngModel)]=\"url\" name=\"url\" formControlName=\"url\"\r\n (ngModelChange)=\"onUrlChange()\" (keyup)=\"onUrlKeyup()\" />\r\n <mat-error *ngIf=\"imageMapFormGroup.get('url').hasError('required')\">{{\r\n LANG.QMSCKEDITOR.REQUIRED_URL }}\r\n </mat-error>\r\n <mat-error *ngIf=\"imageMapFormGroup.get('url').hasError('invalidURL')\">{{\r\n LANG.QMSCKEDITOR.INVALID_URL }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"row button__groups\">\r\n <div class=\"col-6\">\r\n <button class=\"save\" mat-stroked-button (click)=\"attachment()\">\r\n {{ LANG.QMSCKEDITOR.ATTACHMENT }}\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"save\" mat-stroked-button (click)=\"eHandbook(false, false)\">\r\n {{ LANG.QMSCKEDITOR.HANDBOOK }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div id=\"qmsckeditor-imagemap-panel_001_002\" class=\"qmsckeditor__imagemap__map\">\r\n <img #myImage [src]=\"imageMapData.imageUrl\">\r\n <mat-spinner diameter=\"40\" mode=\"indeterminate\" *ngIf=\"isImageLoading\"></mat-spinner>\r\n </div>\r\n <div id=\"qmsckeditor-imagemap-panel_001_003\" class=\"qmsckeditor button__groups row mr-0 ml-0 mt-4 ms-0 me-0\">\r\n <div class=\"col-4 pr-0 pe-0\">\r\n <button class=\"save\" mat-flat-button (click)=\"removeMap()\">\r\n {{ LANG.QMSCKEDITOR.REMOVE_MAP }}\r\n </button>\r\n </div>\r\n <div class=\"col-4 pr-0 pe-0\">\r\n <button class=\"save\" mat-flat-button (click)=\"save()\">\r\n {{ LANG.QMSCKEDITOR.SAVE }}\r\n </button>\r\n </div>\r\n <div class=\"col-4 pl-0 ps-0\">\r\n <button class=\"cancel\" mat-flat-button (click)=\"cancel()\">\r\n {{ LANG.QMSCKEDITOR.CANCEL }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n</div>\r\n",
506
+ template: "<div id=\"qmsckeditor-imagemap\" class=\"qmsckeditor qmsckeditor__imagemap__container\">\r\n <div id=\"qmsckeditor-imagemap-header\">\r\n <span id=\"qmsckeditor-imagemap-header_001\" mat-icon-button class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-imagemap-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-imagemap_002_001\">\r\n {{ LANG.QMSCKEDITOR.IMAGE_MAP_PROPERTIES }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor-imagemap-content\">\r\n <div id=\"qmsckeditor-imagemap-content_001\" class=\"col-12 mt-1 pl-2 pr-2 ps-2 pe-2\">\r\n <mat-expansion-panel id=\"qmsckeditor-imagemap-panel\" [expanded]=\"true\" (opened)=\"(true)\" (closed)=\"(false)\">\r\n <div id=\"qmsckeditor-imagemap-panel_001\">\r\n <div id=\"qmsckeditor-imagemap-panel_001_001\" class=\"qmsckeditor__imagemap__information\">\r\n <form [formGroup]=\"imageMapFormGroup\">\r\n <div class=\"row\">\r\n <div class=\"col-9\">\r\n <mat-button-toggle-group [(ngModel)]=\"selectedMode\" formControlName=\"modeList\"\r\n (change)=\"onModeChange($event)\">\r\n <mat-button-toggle *ngFor=\"let mode of modes\" [value]=\"mode.id\"\r\n [matTooltip]=\"mode.name\">\r\n <mat-icon color=\"red\" [svgIcon]=\"mode.icon\" aria-hidden=\"true\">\r\n </mat-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n <span style=\"margin-left: 15px;\" #myStatus></span>\r\n </div>\r\n <div class=\"col-3\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ZOOM }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedZoom\" formControlName=\"zoomList\"\r\n (ngModelChange)=\"onZoomChange()\" disableOptionCentering>\r\n <mat-option *ngFor=\"let zoomType of zoomTypes\" [value]=\"zoomType.id\">\r\n {{ zoomType.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{'hidden': !showImageMapInformation}\">\r\n <div class=\"col-3\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_TYPE }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedLinkType\" formControlName=\"linkTypeList\"\r\n (ngModelChange)=\"onLinkTypeChange()\" disableOptionCentering>\r\n <mat-option *ngFor=\"let link of linkTypes\" [value]=\"link.id\">\r\n {{ link.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-3\" *ngIf=\"selectedLinkType === 0\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" formControlName=\"targetList\"\r\n (ngModelChange)=\"onTargetChange()\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{'hidden': !showImageMapInformation}\"\r\n *ngIf=\"selectedLinkType === 1\">\r\n <div class=\"col-3\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorText\" formControlName=\"anchorTextList\"\r\n (ngModelChange)=\"onAnchorTextChange()\">\r\n <mat-option *ngFor=\"let editorAnchor of editorAnchors\"\r\n [value]=\"editorAnchor.anchorValue\" disableOptionCentering>\r\n {{ editorAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row\" [ngClass]=\"{'hidden': !showImageMapInformation}\"\r\n *ngIf=\"selectedLinkType === 0\">\r\n <div class=\"col-3\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.PROTOCOL }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedProtocol\" formControlName=\"protocolList\"\r\n (ngModelChange)=\"onProtocolChange()\" disableOptionCentering>\r\n <mat-option *ngFor=\"let protocol of protocols\" [value]=\"protocol.id\">\r\n {{ protocol.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-5\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 pb-1 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_URL }}</mat-label>\r\n <input matInput [(ngModel)]=\"url\" name=\"url\" formControlName=\"url\"\r\n (ngModelChange)=\"onUrlChange()\" (keyup)=\"onUrlKeyup()\" />\r\n <mat-error *ngIf=\"imageMapFormGroup.get('url').hasError('required')\">{{\r\n LANG.QMSCKEDITOR.REQUIRED_URL }}\r\n </mat-error>\r\n <mat-error *ngIf=\"imageMapFormGroup.get('url').hasError('invalidURL')\">{{\r\n LANG.QMSCKEDITOR.INVALID_URL }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"row button__groups\">\r\n <div class=\"col-6\">\r\n <button class=\"save\" mat-stroked-button (click)=\"eHandbook(false, false)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_PROCESS }}\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"save\" mat-stroked-button (click)=\"attachment()\">\r\n {{ LANG.QMSCKEDITOR.ATTACHMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div id=\"qmsckeditor-imagemap-panel_001_002\" class=\"qmsckeditor__imagemap__map\">\r\n <img #myImage [src]=\"imageMapData.imageUrl\">\r\n <mat-spinner diameter=\"40\" mode=\"indeterminate\" *ngIf=\"isImageLoading\"></mat-spinner>\r\n </div>\r\n <div id=\"qmsckeditor-imagemap-panel_001_003\"\r\n class=\"qmsckeditor button__groups row mr-0 ml-0 mt-4 ms-0 me-0\">\r\n <div class=\"col-4 pr-0 pe-0\">\r\n <button class=\"save\" mat-flat-button (click)=\"removeMap()\">\r\n {{ LANG.QMSCKEDITOR.REMOVE_MAP }}\r\n </button>\r\n </div>\r\n <div class=\"col-4 pr-0 pe-0\">\r\n <button class=\"save\" mat-flat-button (click)=\"save()\">\r\n {{ LANG.QMSCKEDITOR.SAVE }}\r\n </button>\r\n </div>\r\n <div class=\"col-4 pl-0 ps-0\">\r\n <button class=\"cancel\" mat-flat-button (click)=\"cancel()\">\r\n {{ LANG.QMSCKEDITOR.CANCEL }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n</div>",
507
507
  styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}::ng-deep .qmsckeditor__imagemap__container .mat-form-field{width:100%}::ng-deep .qmsckeditor__imagemap__container .qmsckeditor__imagemap__information{position:relative}::ng-deep .qmsckeditor__imagemap__container .qmsckeditor__imagemap__map{overflow:auto;width:800px;min-height:371px;position:relative;max-height:460px;display:flex;align-items:flex-start}::ng-deep .qmsckeditor__imagemap__container .mat-button-toggle-checked{border:1px solid #000!important}::ng-deep .qmsckeditor__imagemap__container .hidden{visibility:hidden}"]
508
508
  },] }
509
509
  ];
@@ -522,4 +522,4 @@ QMSCKEditorImageMapComponent.propDecorators = {
522
522
  myImageRef: [{ type: ViewChild, args: ['myImage',] }],
523
523
  myStatusRef: [{ type: ViewChild, args: ['myStatus',] }]
524
524
  };
525
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAvcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdEYsT0FBTyxtQkFBbUIsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUVyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUF1Q3hFLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSx3QkFBd0I7SUErQ3hFLFlBQ1UsUUFBbUIsRUFDbkIsR0FBc0IsRUFDdEIsTUFBaUIsRUFDakIsU0FBa0MsRUFDbEMsV0FBbUMsRUFDcEMsU0FBcUQsRUFDNUIsSUFBeUIsRUFDekQsWUFBNkIsRUFDN0IsU0FBdUI7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFWQSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQXdCO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQTRDO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQXFCO1FBbEQzRCxjQUFTLEdBQWdCLEVBQUUsQ0FBQztRQUM1QixZQUFPLEdBQWMsRUFBRSxDQUFDO1FBQ3hCLGNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBQzVCLFVBQUssR0FBWSxFQUFFLENBQUM7UUFDcEIsY0FBUyxHQUFnQixFQUFFLENBQUM7UUFDNUIsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGlCQUFZLEdBQWtCLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDdEQscUJBQWdCLEdBQWEsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUMxQyxtQkFBYyxHQUFtQixjQUFjLENBQUMsR0FBRyxDQUFDO1FBQ3BELHFCQUFnQixHQUE4QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDcEUsaUJBQVksR0FBRyxHQUFHLENBQUM7UUFFbkIsa0JBQWEsR0FBVyxtQ0FBbUMsQ0FBQztRQUM1RCx3QkFBbUIsR0FBVyxlQUFlLENBQUM7UUFFOUMsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLG1CQUFtQjtRQUNuQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLG9CQUFvQjtRQUNwQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDdEIsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbkIsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLG9CQUFlLEdBQW9DLEVBQUUsQ0FBQztRQUd0RCw2QkFBNkI7UUFFN0IsbUJBQWMsR0FBVSxFQUFFLENBQUM7UUFvQnpCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUN4RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDdEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFHRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUM5QyxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBNkIsRUFBRSxTQUF1QjtRQUNqRSxZQUFZLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzVHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUNoSCxZQUFZLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzVHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxpQkFBaUIsR0FBRztZQUN4QixVQUFVLEVBQUUsSUFBSSxXQUFXLEVBQUU7WUFDN0IsWUFBWSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQy9CLGNBQWMsRUFBRSxJQUFJLFdBQVcsRUFBRTtZQUNqQyxRQUFRLEVBQUUsSUFBSSxXQUFXLEVBQUU7WUFDM0IsUUFBUSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQzNCLFlBQVksRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUNoQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixJQUFJLElBQUksRUFBRTtZQUN4RCxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUN2RTthQUFNO1lBQ0wsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEg7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNsQixFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVU7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUI7YUFDaEQsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDekY7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDOUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQ2pHO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDN0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDcEgsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUN2SCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztTQUNySDtJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEYsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMvQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNyQyxRQUFRLEVBQUUsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUMvSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7UUFFM0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7WUFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztTQUMvQixDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ3hGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNMO1FBRUQsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQztZQUMzQyxnQkFBZ0IsRUFBRTtnQkFDaEIsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDdEMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDNUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDNUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ25EO1lBQ0QsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYTtZQUMzQyxZQUFZLEVBQUUsS0FBSztZQUNuQixhQUFhLEVBQUUsTUFBTTtZQUNyQixhQUFhLEVBQUUsTUFBTTtZQUNyQixrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTtnQkFDbEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYztnQkFDdEQsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7Z0JBQ2hELE9BQU8sRUFBRSxFQUFFO2dCQUNYLGdCQUFnQixFQUFFLEVBQUU7Z0JBQ3BCLHNCQUFzQixFQUFFLEVBQUU7Z0JBQzFCLHdCQUF3QixFQUFFLEVBQUU7Z0JBQzVCLHlCQUF5QixFQUFFLEVBQUU7Z0JBQzdCLHVCQUF1QixFQUFFLEVBQUU7Z0JBQzNCLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixtQkFBbUIsRUFBRSxFQUFFO2dCQUN2QixxQkFBcUIsRUFBRSxFQUFFO2dCQUN6QixzQkFBc0IsRUFBRSxFQUFFO2dCQUMxQixvQkFBb0IsRUFBRSxFQUFFO2dCQUN4QixjQUFjLEVBQUUsRUFBRTthQUNuQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVztRQUN0QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ25EO2FBQU0sSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsRUFBRTtZQUM5RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUM5QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7WUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO2FBQzdDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMvQjtZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZO1FBQzFCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFVO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMzQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN4QyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO2dCQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNsRTtpQkFDSTtnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQ3JFO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDekQ7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFDaEQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ2xEO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBTTtRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLGFBQWEsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7U0FDeEQ7YUFDSTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUN4QixFQUFFLEVBQUUsQ0FBQztnQkFDTCxRQUFRLEVBQUUsQ0FBQztnQkFDWCxVQUFVLEVBQUUsQ0FBQztnQkFDYixjQUFjLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYTthQUMxQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQztZQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUM7WUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLGFBQWEsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztTQUNoSztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsY0FBdUIsRUFBRSxnQkFBeUI7UUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDbkUsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxnQkFBZ0IsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUM1QixxREFBcUQ7b0JBQ3JELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ25DO3FCQUFNO29CQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO29CQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTt3QkFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO3FCQUNuQztpQkFDRjtnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQWtCO1FBQ2xDLElBQUksQ0FBQyxXQUFXO2FBQ2IscUJBQXFCLENBQUMsVUFBVSxDQUFDO2FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QyxzQ0FBc0M7YUFDdkM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdDLHNDQUFzQzthQUN2QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQStDO1FBQy9ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLGNBQWMsRUFBRTtZQUNsQixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELElBQUksS0FBSyxFQUFFO29CQUNULHlDQUF5QztvQkFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3JDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFOzRCQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0NBQ3pDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDOzRCQUNwQyxDQUFDLENBQUMsQ0FBQzs0QkFDSCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0NBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0NBQ2hCLEtBQUssRUFBRSxFQUFFO29DQUNULFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSTtvQ0FDbkIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJO2lDQUN0QixDQUFDLENBQUM7Z0NBQ0gsRUFBRSxJQUFJLENBQUMsQ0FBQzs2QkFDVDt5QkFDRjtxQkFDRjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxzQkFBc0I7UUFDdEIsZ0JBQWdCO1FBQ2hCLDBEQUEwRDtRQUMxRCx5Q0FBeUM7UUFDekMsTUFBTTtRQUNOLHNCQUFzQjtRQUN0QixnQkFBZ0I7UUFDaEIsZ0VBQWdFO1FBQ2hFLHNDQUFzQztRQUN0QyxNQUFNO0lBQ1IsQ0FBQztJQUdELFVBQVU7UUFDUixNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQy9ELEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJO1lBQ0osWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsY0FBYzthQUNYLFdBQVcsRUFBRTthQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2lCQUNuQztnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUk7UUFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUFoaUJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5Qixpb1ZBQXFEOzthQUV0RDs7O1lBNUQrRixTQUFTO1lBQTlFLGlCQUFpQjtZQUNuQyxTQUFTO1lBRVQsdUJBQXVCO1lBYXZCLHNCQUFzQjtZQWZYLFlBQVk7WUFJdkIsbUJBQW1CLHVCQThHdkIsTUFBTSxTQUFDLGVBQWU7WUF4R2xCLGVBQWU7WUFEZixZQUFZOzs7eUJBNEZsQixTQUFTLFNBQUMsU0FBUzswQkFHbkIsU0FBUyxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcCB9IGZyb20gJy4uLy4uL21vZGVscy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAubW9kZWwnO1xyXG5pbXBvcnQgeyBMaW5rVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFByb3RvY29sVHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvcHJvdG9jb2wtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgVGFyZ2V0VHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvdGFyZ2V0LXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEltYWdlTW9kZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvaW1hZ2UtbW9kZS5lbnVtJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBJY29uU3ZnIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbnN0YW50cy9pY29uU3ZnLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9ySW1hZ2VNYXBMaWIgfSBmcm9tICcuL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5saWInO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclJlbGF0aW9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcmVsYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgUU1TQ0tFZGl0b3JQYXJhbXRlciBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wYXJhbWV0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRlZENvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi9xbXNja2VkaXRvci1yZWxhdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcW1zLWNrZWRpdG9yLWxpbmsvYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItbGluay1hbmNob3ItZG9jdW1lbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2xpbmstYW5jaG9yLmVudW0nO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBpbnZhbGlkVVJMVmFsaWRhdG9yIH0gZnJvbSAnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAudmFsaWRhdG9yJztcclxuXHJcbmludGVyZmFjZSBJTGlua1R5cGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSVRhcmdldCB7XHJcbiAgaWQ6IFRhcmdldFR5cGVOYW1lO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElQcm90b2NvbCB7XHJcbiAgaWQ6IFByb3RvY29sVHlwZU5hbWU7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSU1vZGUge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElab29tVHlwZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJQW5jaG9yIHtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIHZpZXdWYWx1ZTogc3RyaW5nO1xyXG4gIGFuY2hvclZhbHVlOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXFtc2NrLWltYWdlbWFwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgTEFORzogYW55O1xyXG4gIGltYWdlTWFwRm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgaW1hZ2VNYXBEYXRhOiBRTVNDS0VkaXRvckltYWdlTWFwO1xyXG4gIGxpbmtUeXBlczogSUxpbmtUeXBlW10gPSBbXTtcclxuICB0YXJnZXRzOiBJVGFyZ2V0W10gPSBbXTtcclxuICBwcm90b2NvbHM6IElQcm90b2NvbFtdID0gW107XHJcbiAgbW9kZXM6IElNb2RlW10gPSBbXTtcclxuICB6b29tVHlwZXM6IElab29tVHlwZVtdID0gW107XHJcbiAgdXJsID0gJyc7XHJcbiAgcHJvY2Vzc2VkVXJsID0gJyc7XHJcbiAgc2VsZWN0ZWRNb2RlOiBJbWFnZU1vZGVOYW1lID0gSW1hZ2VNb2RlTmFtZS5SZWN0YW5nbGU7XHJcbiAgc2VsZWN0ZWRMaW5rVHlwZTogTGlua1R5cGUgPSBMaW5rVHlwZS51cmw7XHJcbiAgc2VsZWN0ZWRUYXJnZXQ6IFRhcmdldFR5cGVOYW1lID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gIHNlbGVjdGVkUHJvdG9jb2w6IFByb3RvY29sVHlwZU5hbWUgfCBzdHJpbmcgPSBQcm90b2NvbFR5cGVOYW1lLmh0dHA7XHJcbiAgc2VsZWN0ZWRab29tID0gMS4wO1xyXG5cclxuICBwcm90b2NvbFJlZ2V4OiBSZWdFeHAgPSAvXihodHRwfGh0dHBzfGZ0cHxuZXdzKTpcXC9cXC8oPz0uKS9pO1xyXG4gIGphdmFzY3JpcHRMaW5rUmVnZXg6IFJlZ0V4cCA9IC9qYXZhc2NyaXB0XFw6L2k7XHJcblxyXG4gIGRvY3VtZW50SWQgPSAwO1xyXG4gIC8vYW5jaG9yVGl0bGUgPSAnJztcclxuICBhbmNob3JUZXh0ID0gJyc7XHJcbiAgLy9hbmNob3JCeU5hbWUgPSAnJztcclxuICBhZHZpc29yeVRpdGxlID0gJyc7XHJcblxyXG4gIGlzSW1hZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgaXNVcmxQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgbmF0dXJhbEltYWdlV2lkdGggPSAwO1xyXG4gIG5hdHVyYWxJbWFnZUhlaWdodCA9IDA7XHJcbiAgY3VycmVudEFyZWFJZCA9IC0xO1xyXG4gIG15SW1hZ2VNYXA6IFFNU0NLRWRpdG9ySW1hZ2VNYXBMaWI7XHJcbiAgc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSBmYWxzZTtcclxuXHJcbiAgYW5jaG9yRG9jdW1lbnRzOiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdID0gW107XHJcbiAgYW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGVkaXRvckFuY2hvcnM6IElBbmNob3JbXTtcclxuICAvL2RvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xyXG5cclxuICBpbWFnZUxpc3RlbmVyczogYW55W10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlJbWFnZScpXHJcbiAgbXlJbWFnZVJlZjogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlTdGF0dXMnKVxyXG4gIG15U3RhdHVzUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckltYWdlTWFwQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JJbWFnZU1hcCxcclxuICAgIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxyXG4gICAgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmltYWdlTWFwRGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmltYWdlSGVpZ2h0O1xyXG4gICAgdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmltYWdlV2lkdGg7XHJcbiAgICB0aGlzLmluaXRGb3JtQ29udHJvbCgpO1xyXG4gICAgdGhpcy5pbml0U3ZnSWNvbnMoaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gIH1cclxuXHJcblxyXG4gIGluaXREZWZhdWx0VmFsdWVzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUudXJsO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUuaHR0cDtcclxuICAgIHRoaXMudXJsID0gJyc7XHJcbiAgICB0aGlzLnByb2Nlc3NlZFVybCA9ICcnO1xyXG4gICAgdGhpcy5hZHZpc29yeVRpdGxlID0gJyc7XHJcbiAgICB0aGlzLmFuY2hvclRleHQgPSAnJztcclxuICB9XHJcblxyXG4gIGluaXRTdmdJY29ucyhpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSwgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXBvaW50ZXInLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUE9JTlRFUikpO1xyXG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItY2lyY2xlJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX0NJUkNMRSkpO1xyXG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcmVjdGFuZ2xlJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX1JFQ1RBTkdMRSkpO1xyXG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcG9seWdvbicsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9QT0xZR09OKSk7XHJcbiAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3ZlY3Rvci1yZW1vdmUnLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUkVNT1ZFKSk7XHJcbiAgfVxyXG5cclxuICBpbml0Rm9ybUNvbnRyb2woKSB7XHJcbiAgICBjb25zdCB2YWxpYXRpb25Db250cm9scyA9IHtcclxuICAgICAgdGFyZ2V0TGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICAgIHByb3RvY29sTGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICAgIGFuY2hvclRleHRMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICAgICAgbW9kZUxpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxyXG4gICAgICB6b29tTGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICAgIGxpbmtUeXBlTGlzdDogbmV3IEZvcm1Db250cm9sKClcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5pbWFnZU1hcERhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQgPT0gdHJ1ZSkge1xyXG4gICAgICB2YWxpYXRpb25Db250cm9sc1sndXJsJ10gPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWxpYXRpb25Db250cm9sc1sndXJsJ10gPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBpbnZhbGlkVVJMVmFsaWRhdG9yKHRoaXMuamF2YXNjcmlwdExpbmtSZWdleCldKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW1hZ2VNYXBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHZhbGlhdGlvbkNvbnRyb2xzKTtcclxuICB9XHJcblxyXG4gIGluaXRMaW5rVHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmxpbmtUeXBlcykge1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHsgaWQ6IExpbmtUeXBlLnVybCwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfVVJMIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yVGV4dCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19BTkNIT1JfSU5fVEVYVFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgaWQ6IFRhcmdldFR5cGVOYW1lLm5ldywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5zYW1lLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0UHJvdG9jb2woKSB7XHJcbiAgICBpZiAodGhpcy5wcm90b2NvbHMpIHtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmh0dHAsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUuaHR0cHMsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQUyB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmZ0cCwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0ZUUCB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLm5ld3MsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9ORVcgfSk7XHJcbiAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goeyBpZDogUHJvdG9jb2xUeXBlTmFtZS5vdGhlciwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX09USEVSIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdE1vZGVzKCkge1xyXG4gICAgaWYgKHRoaXMubW9kZXMpIHtcclxuICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuUG9pbnRlciwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUE9JTlRFUiwgaWNvbjogXCJ2ZWN0b3ItcG9pbnRlclwiIH0pO1xyXG4gICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5SZWN0YW5nbGUsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1JFQ1RBTkdMRSwgaWNvbjogXCJ2ZWN0b3ItcmVjdGFuZ2xlXCIgfSk7XHJcbiAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLkNpcmNsZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfQ0lSQ0xFLCBpY29uOiBcInZlY3Rvci1jaXJjbGVcIiB9KTtcclxuICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuUG9seWdvbiwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUE9MWUdPTiwgaWNvbjogXCJ2ZWN0b3ItcG9seWdvblwiIH0pO1xyXG4gICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5SZW1vdmUsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1JFTU9WRSwgaWNvbjogXCJ2ZWN0b3ItcmVtb3ZlXCIgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Wm9vbVR5cGVzKCkge1xyXG4gICAgaWYgKHRoaXMuem9vbVR5cGVzKSB7XHJcbiAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMC4yNSwgbmFtZTogXCIyNSVcIiB9KTtcclxuICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAwLjUsIG5hbWU6IFwiNTAlXCIgfSk7XHJcbiAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMS4wLCBuYW1lOiBcIjEwMCVcIiB9KTtcclxuICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAyLjAsIG5hbWU6IFwiMjAwJVwiIH0pO1xyXG4gICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDMuMCwgbmFtZTogXCIzMDAlXCIgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0QW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JzID0gW107XHJcbiAgICB0aGlzLmFuY2hvcnMgPSBbeyB2YWx1ZTogMCwgdmlld1ZhbHVlOiAnJywgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQmxhbmsgfV07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaW5pdExpbmtUeXBlKCk7XHJcbiAgICB0aGlzLmluaXRUYXJnZXQoKTtcclxuICAgIHRoaXMuaW5pdFByb3RvY29sKCk7XHJcbiAgICB0aGlzLmluaXRNb2RlcygpO1xyXG4gICAgdGhpcy5pbml0Wm9vbVR5cGVzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICBpZiAodGhpcy5pbWFnZUxpc3RlbmVycyAmJiB0aGlzLmltYWdlTGlzdGVuZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5pbWFnZUxpc3RlbmVycy5mb3JFYWNoKGxpc3RlbmVyID0+IHtcclxuICAgICAgICBsaXN0ZW5lcigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW1hZ2VMb2FkKCkge1xyXG4gICAgdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgPSB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCAhPSAwID8gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgOiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5uYXR1cmFsSGVpZ2h0O1xyXG4gICAgdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCA9IHRoaXMubmF0dXJhbEltYWdlV2lkdGggIT0gMCA/IHRoaXMubmF0dXJhbEltYWdlV2lkdGggOiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5uYXR1cmFsV2lkdGg7XHJcblxyXG4gICAgdGhpcy5zZXRJbWFnZVNpemUoKTtcclxuXHJcbiAgICB0aGlzLm15SW1hZ2VNYXAuc2V0TWFwSnNvbih7XHJcbiAgICAgIG5hbWU6IHRoaXMuaW1hZ2VNYXBEYXRhLm5hbWUsXHJcbiAgICAgIGFyZWFzOiB0aGlzLmltYWdlTWFwRGF0YS5hcmVhc1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzICYmIHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5teUltYWdlTWFwLmJsdXJBcmVhKHRoaXMubXlJbWFnZU1hcC5jdXJyZW50aWQpO1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAuY3VycmVudGlkID0gMDtcclxuICAgICAgdGhpcy5teUltYWdlTWFwLnNlbGVjdGVkSWQgPSAwO1xyXG4gICAgICB0aGlzLm9uU2VsZWN0QXJlYSh0aGlzLm15SW1hZ2VNYXAuYXJlYXNbMF0pO1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAuaGlnaGxpZ2h0QXJlYSgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm15SW1hZ2VSZWYpIHtcclxuICAgICAgdGhpcy5pc0ltYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuaW1hZ2VMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudCwgJ2xvYWQnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vbkltYWdlTG9hZCgpO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEF2b2lkIGRyYWcmZHJvcCBvZiB0aGUgaW1hZ2VcclxuICAgIHRoaXMubXlJbWFnZU1hcCA9IG5ldyBRTVNDS0VkaXRvckltYWdlTWFwTGliKHtcclxuICAgICAgY3VzdG9tX2NhbGxiYWNrczoge1xyXG4gICAgICAgIFwib25BZGRBcmVhXCI6IHRoaXMub25BZGRBcmVhLmJpbmQodGhpcyksXHJcbiAgICAgICAgJ29uU2VsZWN0QXJlYSc6IHRoaXMub25TZWxlY3RBcmVhLmJpbmQodGhpcyksXHJcbiAgICAgICAgJ29uUmVtb3ZlQXJlYSc6IHRoaXMub25SZW1vdmVBcmVhLmJpbmQodGhpcyksXHJcbiAgICAgICAgJ29uU3RhdHVzTWVzc2FnZSc6IHRoaXMub25TdGF0dXNNZXNzYWdlLmJpbmQodGhpcylcclxuICAgICAgfSxcclxuICAgICAgaW1hZ2VFbGVtZW50OiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgYm91bmRpbmdfYm94OiBmYWxzZSxcclxuICAgICAgQ0xfRFJBV19TSEFQRTogJyNGMDAnLFxyXG4gICAgICBDTF9OT1JNX1NIQVBFOiAnI0FBQScsXHJcbiAgICAgIENMX0hJR0hMSUdIVF9TSEFQRTogJyNGMDAnLFxyXG4gICAgICBzdHJpbmdzOiB7XHJcbiAgICAgICAgXCJQT0xZR09OX0RSQVdcIjogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBPTFlHT05fRFJBVyxcclxuICAgICAgICBcIlJFQ1RBTkdMRV9EUkFXXCI6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5SRUNUQU5HTEVfRFJBVyxcclxuICAgICAgICBcIlNRVUFSRV9EUkFXXCI6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5TUVVBUkVfRFJBVyxcclxuICAgICAgICAnUkVBRFknOiAnJyxcclxuICAgICAgICAnUkVDVEFOR0xFX01PVkUnOiAnJyxcclxuICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9UT1AnOiAnJyxcclxuICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9SSUdIVCc6ICcnLFxyXG4gICAgICAgICdSRUNUQU5HTEVfUkVTSVpFX0JPVFRPTSc6ICcnLFxyXG4gICAgICAgICdSRUNUQU5HTEVfUkVTSVpFX0xFRlQnOiAnJyxcclxuICAgICAgICAnU1FVQVJFX01PVkUnOiAnJyxcclxuICAgICAgICAnU1FVQVJFX1JFU0laRV9UT1AnOiAnJyxcclxuICAgICAgICAnU1FVQVJFX1JFU0laRV9SSUdIVCc6ICcnLFxyXG4gICAgICAgICdTUVVBUkVfUkVTSVpFX0JPVFRPTSc6ICcnLFxyXG4gICAgICAgICdTUVVBUkVfUkVTSVpFX0xFRlQnOiAnJyxcclxuICAgICAgICAnUE9MWUdPTl9NT1ZFJzogJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwYXJzZUxpbmtVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5wcm90b2NvbFJlZ2V4LmV4ZWModXJsKTtcclxuICAgIGlmICghIXByb3RvY29sKSB7XHJcbiAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gdXJsLnN1YnN0cihwcm90b2NvbFswXS5sZW5ndGgpO1xyXG4gICAgICB0aGlzLnVybCA9IHRoaXMucHJvY2Vzc2VkVXJsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBwcm90b2NvbFswXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmphdmFzY3JpcHRMaW5rUmVnZXgudGVzdCh1cmwpICYmICF0aGlzLmltYWdlTWFwRGF0YS5saW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGVOYW1lLmh0dHA7XHJcbiAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gJyc7XHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5wcm9jZXNzZWRVcmw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb2Nlc3NlZFVybCA9IHVybDtcclxuICAgICAgdGhpcy51cmwgPSB0aGlzLnByb2Nlc3NlZFVybDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0QXJlYShhcmVhKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSBhcmVhLmFpZDtcclxuICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlJlbW92ZSkge1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAucmVtb3ZlQXJlYSh0aGlzLmN1cnJlbnRBcmVhSWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGFyZWEuYWhyZWYubWF0Y2goL14jKC4qKSQvKSkge1xyXG4gICAgICAgIHRoaXMuYW5jaG9yVGV4dCA9IGFyZWEuYWhyZWYuc2xpY2UoMSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUuYW5jaG9yVGV4dDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPSBMaW5rVHlwZS51cmw7XHJcbiAgICAgICAgdGhpcy5wYXJzZUxpbmtVcmwoYXJlYS5haHJlZik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IGFyZWEuYXRhcmdldDtcclxuICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gYXJlYS5hYWx0O1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZUFyZWEoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSAtMTtcclxuICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU1hcCgpIHtcclxuICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IC0xO1xyXG4gICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5teUltYWdlTWFwLnJlbW92ZUFsbEFyZWFzKCk7XHJcbiAgfVxyXG5cclxuICBvblN0YXR1c01lc3NhZ2UodGV4dDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5teVN0YXR1c1JlZikge1xyXG4gICAgICB0aGlzLm15U3RhdHVzUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGV4dCB8fCAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVXJsS2V5dXAoKSB7XHJcbiAgICB0aGlzLmlzVXJsUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgICBpZiAodGhpcy51cmwgIT0gdGhpcy5wcm9jZXNzZWRVcmwpIHtcclxuICAgICAgdGhpcy5wYXJzZUxpbmtVcmwodGhpcy51cmwpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzVXJsUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25VcmxDaGFuZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNVcmxQcm9jZXNzaW5nKSB7XHJcbiAgICAgIHRoaXMub25VcmxLZXl1cCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BbmNob3JUZXh0Q2hhbmdlKCkge1xyXG4gICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBvblByb3RvY29sQ2hhbmdlKCkge1xyXG4gICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBvblRhcmdldENoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgb25BZGRBcmVhKGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IGlkO1xyXG4gICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLmluaXREZWZhdWx0VmFsdWVzKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFyZWFWYWx1ZXMoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50QXJlYUlkID4gLTEpIHtcclxuICAgICAgdmFyIGFocmVmID0gdGhpcy5idWlsZFVybFdpdGhQcm90b2NvbCgpO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcclxuICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hdGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUuc2FtZTtcclxuICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hYWx0ID0gdGhpcy5hbmNob3JUZXh0O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmF0YXJnZXQgPSB0aGlzLnNlbGVjdGVkVGFyZ2V0IHx8IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hYWx0ID0gdGhpcy5hZHZpc29yeVRpdGxlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmFocmVmID0gYWhyZWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidWlsZFVybFdpdGhQcm90b2NvbCgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xyXG4gICAgICByZXR1cm4gJyMnICsgKHRoaXMuYW5jaG9yVGV4dCB8fCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoISF0aGlzLnByb2Nlc3NlZFVybCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFByb3RvY29sICsgdGhpcy5wcm9jZXNzZWRVcmw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uTW9kZUNoYW5nZShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gZS52YWx1ZTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlBvaW50ZXIgfHwgdGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5SZW1vdmUpIHtcclxuICAgICAgdGhpcy5teUltYWdlTWFwLmlzX2RyYXdpbmcgPSAwO1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAubmV4dFNoYXBlID0gJyc7XHJcbiAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAubmV4dFNoYXBlID0gdGhpcy5zZWxlY3RlZE1vZGU7XHJcbiAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdjcm9zc2hhaXInO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25ab29tQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zZXRJbWFnZVNpemUoKTtcclxuICAgIGlmICh0aGlzLm15SW1hZ2VNYXApIHtcclxuICAgICAgdGhpcy5teUltYWdlTWFwLnNjYWxlQWxsQXJlYXModGhpcy5zZWxlY3RlZFpvb20pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25MaW5rVHlwZUNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcclxuICAgICAgdGhpcy5nZXRFZGl0b3JBbmNob3IoKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdG9yQW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgIGlmICh0aGlzLmltYWdlTWFwRGF0YS5lZGl0b3JDb250ZW50KSB7XHJcbiAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzLnB1c2goe1xyXG4gICAgICAgIGlkOiAwLFxyXG4gICAgICAgIGVudGl0eUlkOiAwLFxyXG4gICAgICAgIGRvY3VtZW50SWQ6IDAsXHJcbiAgICAgICAgZG9jdW1lbnRUeXBlSWQ6IDAsXHJcbiAgICAgICAgcmljaFRleHQ6IHRoaXMuaW1hZ2VNYXBEYXRhLmVkaXRvckNvbnRlbnRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgIHRoaXMuZWRpdG9yQW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICB9XHJcblxyXG4gIHNldEltYWdlU2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLm15SW1hZ2VSZWYpIHtcclxuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoICogdGhpcy5zZWxlY3RlZFpvb207XHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0ICogdGhpcy5zZWxlY3RlZFpvb207XHJcbiAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofXB4O2ApO1xyXG4gICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgYCR7aGVpZ2h0fXB4O2ApO1xyXG4gICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcclxuICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcclxuICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gdGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5Qb2ludGVyIHx8IHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUmVtb3ZlID8gJ2RlZmF1bHQnIDogJ2Nyb3NzaGFpcic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlSGFuZGJvb2soaXNPbmx5RG9jdW1lbnQ6IGJvb2xlYW4sIGlzQW5jaG9yRG9jdW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JSZWxhdGlvbigpO1xyXG4gICAgZGF0YS5pc09ubHlEb2N1bWVudCA9IGlzT25seURvY3VtZW50O1xyXG4gICAgZGF0YS5pc0VuYWJsZUZvbGRlciA9ICFpc09ubHlEb2N1bWVudDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvclJlbGF0ZWRDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzY1MHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGlmIChpc0FuY2hvckRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRJZCA9IHJlc3VsdC5pZDtcclxuICAgICAgICAgICAgLy90aGlzLmFuY2hvclRpdGxlID0gYCR7cmVzdWx0LnRpdGxlfSgke3Jlc3VsdC5pZH0pYDtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChyZXN1bHQuaWQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJzZUxpbmtVcmwocmVzdWx0LnVybCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUub3RoZXI7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxpbmtTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICAgIC8vdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XHJcbiAgICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICAgIC8vdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEFuY2hvckRvY3VtZW50KGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XHJcbiAgICB0aGlzLmluaXRBbmNob3IoKTtcclxuICAgIGxldCBpZCA9IDM7XHJcbiAgICBpZiAoYW5jaG9yRG9jdW1lbnQpIHtcclxuICAgICAgYW5jaG9yRG9jdW1lbnQuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGRpdi5pbm5lckhUTUwgPSBlLnJpY2hUZXh0O1xyXG4gICAgICAgIGNvbnN0IGRvbUNvbnRlbnQgPSBkaXY7XHJcbiAgICAgICAgY29uc3QgYVRhZ3MgPSBkb21Db250ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJyk7XHJcbiAgICAgICAgaWYgKGFUYWdzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhVGFncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcclxuICAgICAgICAgICAgaWYgKHRhZy5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXHJcbiAgICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGFnLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGFuY2hvclZhbHVlOiB0YWcubmFtZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZCArPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAvLyAgICAgdmFsdWU6IDEsXHJcbiAgICAvLyAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXHJcbiAgICAvLyAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQXR0YWNobWVudFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAvLyAgICAgdmFsdWU6IDIsXHJcbiAgICAvLyAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX1JFTEFURURfRE9DVU1FTlQsXHJcbiAgICAvLyAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXR0YWNobWVudCgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xyXG4gICAgZGF0YS5tb2R1bGUgPSB0aGlzLmltYWdlTWFwRGF0YS5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5pbWFnZU1hcERhdGEuZW50aXR5SWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzY1MHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHJlc3VsdC51cmwpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcclxuICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMubXlJbWFnZU1hcC5nZXRNYXBKc29uKCk7XHJcbiAgICBkYXRhLmltYWdlSGVpZ2h0ID0gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQ7XHJcbiAgICBkYXRhLmltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
525
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAvcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFz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QVUsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUFoaUJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixncVZBQXFEOzthQUV0RDs7O1lBNUQrRixTQUFTO1lBQTlFLGlCQUFpQjtZQUNuQyxTQUFTO1lBRVQsdUJBQXVCO1lBYXZCLHNCQUFzQjtZQWZYLFlBQVk7WUFJdkIsbUJBQW1CLHVCQThHdkIsTUFBTSxTQUFDLGVBQWU7WUF4R2xCLGVBQWU7WUFEZixZQUFZOzs7eUJBNEZsQixTQUFTLFNBQUMsU0FBUzswQkFHbkIsU0FBUyxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcCB9IGZyb20gJy4uLy4uL21vZGVscy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAubW9kZWwnO1xyXG5pbXBvcnQgeyBMaW5rVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFByb3RvY29sVHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvcHJvdG9jb2wtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgVGFyZ2V0VHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvdGFyZ2V0LXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEltYWdlTW9kZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvaW1hZ2UtbW9kZS5lbnVtJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBJY29uU3ZnIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbnN0YW50cy9pY29uU3ZnLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9ySW1hZ2VNYXBMaWIgfSBmcm9tICcuL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5saWInO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclJlbGF0aW9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcmVsYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgUU1TQ0tFZGl0b3JQYXJhbXRlciBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wYXJhbWV0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRlZENvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi9xbXNja2VkaXRvci1yZWxhdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcW1zLWNrZWRpdG9yLWxpbmsvYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItbGluay1hbmNob3ItZG9jdW1lbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2xpbmstYW5jaG9yLmVudW0nO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBpbnZhbGlkVVJMVmFsaWRhdG9yIH0gZnJvbSAnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAudmFsaWRhdG9yJztcclxuXHJcbmludGVyZmFjZSBJTGlua1R5cGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSVRhcmdldCB7XHJcbiAgaWQ6IFRhcmdldFR5cGVOYW1lO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElQcm90b2NvbCB7XHJcbiAgaWQ6IFByb3RvY29sVHlwZU5hbWU7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSU1vZGUge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElab29tVHlwZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJQW5jaG9yIHtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIHZpZXdWYWx1ZTogc3RyaW5nO1xyXG4gIGFuY2hvclZhbHVlOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXFtc2NrLWltYWdlbWFwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgTEFORzogYW55O1xyXG4gIGltYWdlTWFwRm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgaW1hZ2VNYXBEYXRhOiBRTVNDS0VkaXRvckltYWdlTWFwO1xyXG4gIGxpbmtUeXBlczogSUxpbmtUeXBlW10gPSBbXTtcclxuICB0YXJnZXRzOiBJVGFyZ2V0W10gPSBbXTtcclxuICBwcm90b2NvbHM6IElQcm90b2NvbFtdID0gW107XHJcbiAgbW9kZXM6IElNb2RlW10gPSBbXTtcclxuICB6b29tVHlwZXM6IElab29tVHlwZVtdID0gW107XHJcbiAgdXJsID0gJyc7XHJcbiAgcHJvY2Vzc2VkVXJsID0gJyc7XHJcbiAgc2VsZWN0ZWRNb2RlOiBJbWFnZU1vZGVOYW1lID0gSW1hZ2VNb2RlTmFtZS5SZWN0YW5nbGU7XHJcbiAgc2VsZWN0ZWRMaW5rVHlwZTogTGlua1R5cGUgPSBMaW5rVHlwZS51cmw7XHJcbiAgc2VsZWN0ZWRUYXJnZXQ6IFRhcmdldFR5cGVOYW1lID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gIHNlbGVjdGVkUHJvdG9jb2w6IFByb3RvY29sVHlwZU5hbWUgfCBzdHJpbmcgPSBQcm90b2NvbFR5cGVOYW1lLmh0dHA7XHJcbiAgc2VsZWN0ZWRab29tID0gMS4wO1xyXG5cclxuICBwcm90b2NvbFJlZ2V4OiBSZWdFeHAgPSAvXihodHRwfGh0dHBzfGZ0cHxuZXdzKTpcXC9cXC8oPz0uKS9pO1xyXG4gIGphdmFzY3JpcHRMaW5rUmVnZXg6IFJlZ0V4cCA9IC9qYXZhc2NyaXB0XFw6L2k7XHJcblxyXG4gIGRvY3VtZW50SWQgPSAwO1xyXG4gIC8vYW5jaG9yVGl0bGUgPSAnJztcclxuICBhbmNob3JUZXh0ID0gJyc7XHJcbiAgLy9hbmNob3JCeU5hbWUgPSAnJztcclxuICBhZHZpc29yeVRpdGxlID0gJyc7XHJcblxyXG4gIGlzSW1hZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgaXNVcmxQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgbmF0dXJhbEltYWdlV2lkdGggPSAwO1xyXG4gIG5hdHVyYWxJbWFnZUhlaWdodCA9IDA7XHJcbiAgY3VycmVudEFyZWFJZCA9IC0xO1xyXG4gIG15SW1hZ2VNYXA6IFFNU0NLRWRpdG9ySW1hZ2VNYXBMaWI7XHJcbiAgc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSBmYWxzZTtcclxuXHJcbiAgYW5jaG9yRG9jdW1lbnRzOiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdID0gW107XHJcbiAgYW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGVkaXRvckFuY2hvcnM6IElBbmNob3JbXTtcclxuICAvL2RvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xyXG5cclxuICBpbWFnZUxpc3RlbmVyczogYW55W10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlJbWFnZScpXHJcbiAgbXlJbWFnZVJlZjogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbXlTdGF0dXMnKVxyXG4gIG15U3RhdHVzUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckltYWdlTWFwQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JJbWFnZU1hcCxcclxuICAgIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxyXG4gICAgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmltYWdlTWFwRGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmltYWdlSGVpZ2h0O1xyXG4gICAgdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmltYWdlV2lkdGg7XHJcbiAgICB0aGlzLmluaXRGb3JtQ29udHJvbCgpO1xyXG4gICAgdGhpcy5pbml0U3ZnSWNvbnMoaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gIH1cclxuXHJcblxyXG4gIGluaXREZWZhdWx0VmFsdWVzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUudXJsO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUuaHR0cDtcclxuICAgIHRoaXMudXJsID0gJyc7XHJcbiAgICB0aGlzLnByb2Nlc3NlZFVybCA9ICcnO1xyXG4gICAgdGhpcy5hZHZpc29yeVRpdGxlID0gJyc7XHJcbiAgICB0aGlzLmFuY2hvclRleHQgPSAnJztcclxuICB9XHJcblxyXG4gIGluaXRTdmdJY29ucyhpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSwgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXBvaW50ZXInLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUE9JTlRFUikpO1xyXG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItY2lyY2xlJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX0NJUkNMRSkpO1xyXG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcmVjdGFuZ2xlJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX1JFQ1RBTkdMRSkpO1xyXG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcG9seWdvbicsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9QT0xZR09OKSk7XHJcbiAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3ZlY3Rvci1yZW1vdmUnLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUkVNT1ZFKSk7XHJcbiAgfVxyXG5cclxuICBpbml0Rm9ybUNvbnRyb2woKSB7XHJcbiAgICBjb25zdCB2YWxpYXRpb25Db250cm9scyA9IHtcclxuICAgICAgdGFyZ2V0TGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICAgIHByb3RvY29sTGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICAgIGFuY2hvclRleHRMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICAgICAgbW9kZUxpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxyXG4gICAgICB6b29tTGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICAgIGxpbmtUeXBlTGlzdDogbmV3IEZvcm1Db250cm9sKClcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5pbWFnZU1hcERhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQgPT0gdHJ1ZSkge1xyXG4gICAgICB2YWxpYXRpb25Db250cm9sc1sndXJsJ10gPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWxpYXRpb25Db250cm9sc1sndXJsJ10gPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBpbnZhbGlkVVJMVmFsaWRhdG9yKHRoaXMuamF2YXNjcmlwdExpbmtSZWdleCldKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW1hZ2VNYXBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHZhbGlhdGlvbkNvbnRyb2xzKTtcclxuICB9XHJcblxyXG4gIGluaXRMaW5rVHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmxpbmtUeXBlcykge1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHsgaWQ6IExpbmtUeXBlLnVybCwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfVVJMIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yVGV4dCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19BTkNIT1JfSU5fVEVYVFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgaWQ6IFRhcmdldFR5cGVOYW1lLm5ldywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5zYW1lLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0UHJvdG9jb2woKSB7XHJcbiAgICBpZiAodGhpcy5wcm90b2NvbHMpIHtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmh0dHAsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUuaHR0cHMsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQUyB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmZ0cCwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0ZUUCB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLm5ld3MsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9ORVcgfSk7XHJcbiAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goeyBpZDogUHJvdG9jb2xUeXBlTmFtZS5vdGhlciwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX09USEVSIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdE1vZGVzKCkge1xyXG4gICAgaWYgKHRoaXMubW9kZXMpIHtcclxuICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuUG9pbnRlciwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUE9JTlRFUiwgaWNvbjogXCJ2ZWN0b3ItcG9pbnRlclwiIH0pO1xyXG4gICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5SZWN0YW5nbGUsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1JFQ1RBTkdMRSwgaWNvbjogXCJ2ZWN0b3ItcmVjdGFuZ2xlXCIgfSk7XHJcbiAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLkNpcmNsZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfQ0lSQ0xFLCBpY29uOiBcInZlY3Rvci1jaXJjbGVcIiB9KTtcclxuICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuUG9seWdvbiwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUE9MWUdPTiwgaWNvbjogXCJ2ZWN0b3ItcG9seWdvblwiIH0pO1xyXG4gICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5SZW1vdmUsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1JFTU9WRSwgaWNvbjogXCJ2ZWN0b3ItcmVtb3ZlXCIgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Wm9vbVR5cGVzKCkge1xyXG4gICAgaWYgKHRoaXMuem9vbVR5cGVzKSB7XHJcbiAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMC4yNSwgbmFtZTogXCIyNSVcIiB9KTtcclxuICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAwLjUsIG5hbWU6IFwiNTAlXCIgfSk7XHJcbiAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMS4wLCBuYW1lOiBcIjEwMCVcIiB9KTtcclxuICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAyLjAsIG5hbWU6IFwiMjAwJVwiIH0pO1xyXG4gICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDMuMCwgbmFtZTogXCIzMDAlXCIgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0QW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JzID0gW107XHJcbiAgICB0aGlzLmFuY2hvcnMgPSBbeyB2YWx1ZTogMCwgdmlld1ZhbHVlOiAnJywgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQmxhbmsgfV07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaW5pdExpbmtUeXBlKCk7XHJcbiAgICB0aGlzLmluaXRUYXJnZXQoKTtcclxuICAgIHRoaXMuaW5pdFByb3RvY29sKCk7XHJcbiAgICB0aGlzLmluaXRNb2RlcygpO1xyXG4gICAgdGhpcy5pbml0Wm9vbVR5cGVzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICBpZiAodGhpcy5pbWFnZUxpc3RlbmVycyAmJiB0aGlzLmltYWdlTGlzdGVuZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5pbWFnZUxpc3RlbmVycy5mb3JFYWNoKGxpc3RlbmVyID0+IHtcclxuICAgICAgICBsaXN0ZW5lcigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW1hZ2VMb2FkKCkge1xyXG4gICAgdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgPSB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCAhPSAwID8gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgOiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5uYXR1cmFsSGVpZ2h0O1xyXG4gICAgdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCA9IHRoaXMubmF0dXJhbEltYWdlV2lkdGggIT0gMCA/IHRoaXMubmF0dXJhbEltYWdlV2lkdGggOiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5uYXR1cmFsV2lkdGg7XHJcblxyXG4gICAgdGhpcy5zZXRJbWFnZVNpemUoKTtcclxuXHJcbiAgICB0aGlzLm15SW1hZ2VNYXAuc2V0TWFwSnNvbih7XHJcbiAgICAgIG5hbWU6IHRoaXMuaW1hZ2VNYXBEYXRhLm5hbWUsXHJcbiAgICAgIGFyZWFzOiB0aGlzLmltYWdlTWFwRGF0YS5hcmVhc1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzICYmIHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5teUltYWdlTWFwLmJsdXJBcmVhKHRoaXMubXlJbWFnZU1hcC5jdXJyZW50aWQpO1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAuY3VycmVudGlkID0gMDtcclxuICAgICAgdGhpcy5teUltYWdlTWFwLnNlbGVjdGVkSWQgPSAwO1xyXG4gICAgICB0aGlzLm9uU2VsZWN0QXJlYSh0aGlzLm15SW1hZ2VNYXAuYXJlYXNbMF0pO1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAuaGlnaGxpZ2h0QXJlYSgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm15SW1hZ2VSZWYpIHtcclxuICAgICAgdGhpcy5pc0ltYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuaW1hZ2VMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudCwgJ2xvYWQnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vbkltYWdlTG9hZCgpO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEF2b2lkIGRyYWcmZHJvcCBvZiB0aGUgaW1hZ2VcclxuICAgIHRoaXMubXlJbWFnZU1hcCA9IG5ldyBRTVNDS0VkaXRvckltYWdlTWFwTGliKHtcclxuICAgICAgY3VzdG9tX2NhbGxiYWNrczoge1xyXG4gICAgICAgIFwib25BZGRBcmVhXCI6IHRoaXMub25BZGRBcmVhLmJpbmQodGhpcyksXHJcbiAgICAgICAgJ29uU2VsZWN0QXJlYSc6IHRoaXMub25TZWxlY3RBcmVhLmJpbmQodGhpcyksXHJcbiAgICAgICAgJ29uUmVtb3ZlQXJlYSc6IHRoaXMub25SZW1vdmVBcmVhLmJpbmQodGhpcyksXHJcbiAgICAgICAgJ29uU3RhdHVzTWVzc2FnZSc6IHRoaXMub25TdGF0dXNNZXNzYWdlLmJpbmQodGhpcylcclxuICAgICAgfSxcclxuICAgICAgaW1hZ2VFbGVtZW50OiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgYm91bmRpbmdfYm94OiBmYWxzZSxcclxuICAgICAgQ0xfRFJBV19TSEFQRTogJyNGMDAnLFxyXG4gICAgICBDTF9OT1JNX1NIQVBFOiAnI0FBQScsXHJcbiAgICAgIENMX0hJR0hMSUdIVF9TSEFQRTogJyNGMDAnLFxyXG4gICAgICBzdHJpbmdzOiB7XHJcbiAgICAgICAgXCJQT0xZR09OX0RSQVdcIjogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBPTFlHT05fRFJBVyxcclxuICAgICAgICBcIlJFQ1RBTkdMRV9EUkFXXCI6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5SRUNUQU5HTEVfRFJBVyxcclxuICAgICAgICBcIlNRVUFSRV9EUkFXXCI6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5TUVVBUkVfRFJBVyxcclxuICAgICAgICAnUkVBRFknOiAnJyxcclxuICAgICAgICAnUkVDVEFOR0xFX01PVkUnOiAnJyxcclxuICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9UT1AnOiAnJyxcclxuICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9SSUdIVCc6ICcnLFxyXG4gICAgICAgICdSRUNUQU5HTEVfUkVTSVpFX0JPVFRPTSc6ICcnLFxyXG4gICAgICAgICdSRUNUQU5HTEVfUkVTSVpFX0xFRlQnOiAnJyxcclxuICAgICAgICAnU1FVQVJFX01PVkUnOiAnJyxcclxuICAgICAgICAnU1FVQVJFX1JFU0laRV9UT1AnOiAnJyxcclxuICAgICAgICAnU1FVQVJFX1JFU0laRV9SSUdIVCc6ICcnLFxyXG4gICAgICAgICdTUVVBUkVfUkVTSVpFX0JPVFRPTSc6ICcnLFxyXG4gICAgICAgICdTUVVBUkVfUkVTSVpFX0xFRlQnOiAnJyxcclxuICAgICAgICAnUE9MWUdPTl9NT1ZFJzogJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwYXJzZUxpbmtVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5wcm90b2NvbFJlZ2V4LmV4ZWModXJsKTtcclxuICAgIGlmICghIXByb3RvY29sKSB7XHJcbiAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gdXJsLnN1YnN0cihwcm90b2NvbFswXS5sZW5ndGgpO1xyXG4gICAgICB0aGlzLnVybCA9IHRoaXMucHJvY2Vzc2VkVXJsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBwcm90b2NvbFswXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmphdmFzY3JpcHRMaW5rUmVnZXgudGVzdCh1cmwpICYmICF0aGlzLmltYWdlTWFwRGF0YS5saW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGVOYW1lLmh0dHA7XHJcbiAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gJyc7XHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5wcm9jZXNzZWRVcmw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb2Nlc3NlZFVybCA9IHVybDtcclxuICAgICAgdGhpcy51cmwgPSB0aGlzLnByb2Nlc3NlZFVybDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0QXJlYShhcmVhKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSBhcmVhLmFpZDtcclxuICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlJlbW92ZSkge1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAucmVtb3ZlQXJlYSh0aGlzLmN1cnJlbnRBcmVhSWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGFyZWEuYWhyZWYubWF0Y2goL14jKC4qKSQvKSkge1xyXG4gICAgICAgIHRoaXMuYW5jaG9yVGV4dCA9IGFyZWEuYWhyZWYuc2xpY2UoMSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUuYW5jaG9yVGV4dDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPSBMaW5rVHlwZS51cmw7XHJcbiAgICAgICAgdGhpcy5wYXJzZUxpbmtVcmwoYXJlYS5haHJlZik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IGFyZWEuYXRhcmdldDtcclxuICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gYXJlYS5hYWx0O1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZUFyZWEoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSAtMTtcclxuICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU1hcCgpIHtcclxuICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IC0xO1xyXG4gICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5teUltYWdlTWFwLnJlbW92ZUFsbEFyZWFzKCk7XHJcbiAgfVxyXG5cclxuICBvblN0YXR1c01lc3NhZ2UodGV4dDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5teVN0YXR1c1JlZikge1xyXG4gICAgICB0aGlzLm15U3RhdHVzUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGV4dCB8fCAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVXJsS2V5dXAoKSB7XHJcbiAgICB0aGlzLmlzVXJsUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgICBpZiAodGhpcy51cmwgIT0gdGhpcy5wcm9jZXNzZWRVcmwpIHtcclxuICAgICAgdGhpcy5wYXJzZUxpbmtVcmwodGhpcy51cmwpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzVXJsUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25VcmxDaGFuZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNVcmxQcm9jZXNzaW5nKSB7XHJcbiAgICAgIHRoaXMub25VcmxLZXl1cCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BbmNob3JUZXh0Q2hhbmdlKCkge1xyXG4gICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBvblByb3RvY29sQ2hhbmdlKCkge1xyXG4gICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBvblRhcmdldENoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgb25BZGRBcmVhKGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IGlkO1xyXG4gICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLmluaXREZWZhdWx0VmFsdWVzKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFyZWFWYWx1ZXMoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50QXJlYUlkID4gLTEpIHtcclxuICAgICAgdmFyIGFocmVmID0gdGhpcy5idWlsZFVybFdpdGhQcm90b2NvbCgpO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcclxuICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hdGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUuc2FtZTtcclxuICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hYWx0ID0gdGhpcy5hbmNob3JUZXh0O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmF0YXJnZXQgPSB0aGlzLnNlbGVjdGVkVGFyZ2V0IHx8IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hYWx0ID0gdGhpcy5hZHZpc29yeVRpdGxlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmFocmVmID0gYWhyZWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidWlsZFVybFdpdGhQcm90b2NvbCgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xyXG4gICAgICByZXR1cm4gJyMnICsgKHRoaXMuYW5jaG9yVGV4dCB8fCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoISF0aGlzLnByb2Nlc3NlZFVybCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFByb3RvY29sICsgdGhpcy5wcm9jZXNzZWRVcmw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uTW9kZUNoYW5nZShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gZS52YWx1ZTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlBvaW50ZXIgfHwgdGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5SZW1vdmUpIHtcclxuICAgICAgdGhpcy5teUltYWdlTWFwLmlzX2RyYXdpbmcgPSAwO1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAubmV4dFNoYXBlID0gJyc7XHJcbiAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm15SW1hZ2VNYXAubmV4dFNoYXBlID0gdGhpcy5zZWxlY3RlZE1vZGU7XHJcbiAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdjcm9zc2hhaXInO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25ab29tQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zZXRJbWFnZVNpemUoKTtcclxuICAgIGlmICh0aGlzLm15SW1hZ2VNYXApIHtcclxuICAgICAgdGhpcy5teUltYWdlTWFwLnNjYWxlQWxsQXJlYXModGhpcy5zZWxlY3RlZFpvb20pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25MaW5rVHlwZUNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcclxuICAgICAgdGhpcy5nZXRFZGl0b3JBbmNob3IoKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdG9yQW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgIGlmICh0aGlzLmltYWdlTWFwRGF0YS5lZGl0b3JDb250ZW50KSB7XHJcbiAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzLnB1c2goe1xyXG4gICAgICAgIGlkOiAwLFxyXG4gICAgICAgIGVudGl0eUlkOiAwLFxyXG4gICAgICAgIGRvY3VtZW50SWQ6IDAsXHJcbiAgICAgICAgZG9jdW1lbnRUeXBlSWQ6IDAsXHJcbiAgICAgICAgcmljaFRleHQ6IHRoaXMuaW1hZ2VNYXBEYXRhLmVkaXRvckNvbnRlbnRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgIHRoaXMuZWRpdG9yQW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICB9XHJcblxyXG4gIHNldEltYWdlU2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLm15SW1hZ2VSZWYpIHtcclxuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoICogdGhpcy5zZWxlY3RlZFpvb207XHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0ICogdGhpcy5zZWxlY3RlZFpvb207XHJcbiAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofXB4O2ApO1xyXG4gICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgYCR7aGVpZ2h0fXB4O2ApO1xyXG4gICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcclxuICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcclxuICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gdGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5Qb2ludGVyIHx8IHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUmVtb3ZlID8gJ2RlZmF1bHQnIDogJ2Nyb3NzaGFpcic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlSGFuZGJvb2soaXNPbmx5RG9jdW1lbnQ6IGJvb2xlYW4sIGlzQW5jaG9yRG9jdW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JSZWxhdGlvbigpO1xyXG4gICAgZGF0YS5pc09ubHlEb2N1bWVudCA9IGlzT25seURvY3VtZW50O1xyXG4gICAgZGF0YS5pc0VuYWJsZUZvbGRlciA9ICFpc09ubHlEb2N1bWVudDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvclJlbGF0ZWRDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzY1MHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGlmIChpc0FuY2hvckRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRJZCA9IHJlc3VsdC5pZDtcclxuICAgICAgICAgICAgLy90aGlzLmFuY2hvclRpdGxlID0gYCR7cmVzdWx0LnRpdGxlfSgke3Jlc3VsdC5pZH0pYDtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChyZXN1bHQuaWQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJzZUxpbmtVcmwocmVzdWx0LnVybCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUub3RoZXI7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxpbmtTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICAgIC8vdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XHJcbiAgICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICAgIC8vdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEFuY2hvckRvY3VtZW50KGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XHJcbiAgICB0aGlzLmluaXRBbmNob3IoKTtcclxuICAgIGxldCBpZCA9IDM7XHJcbiAgICBpZiAoYW5jaG9yRG9jdW1lbnQpIHtcclxuICAgICAgYW5jaG9yRG9jdW1lbnQuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGRpdi5pbm5lckhUTUwgPSBlLnJpY2hUZXh0O1xyXG4gICAgICAgIGNvbnN0IGRvbUNvbnRlbnQgPSBkaXY7XHJcbiAgICAgICAgY29uc3QgYVRhZ3MgPSBkb21Db250ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJyk7XHJcbiAgICAgICAgaWYgKGFUYWdzKSB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhVGFncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcclxuICAgICAgICAgICAgaWYgKHRhZy5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXHJcbiAgICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGFnLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGFuY2hvclZhbHVlOiB0YWcubmFtZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZCArPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAvLyAgICAgdmFsdWU6IDEsXHJcbiAgICAvLyAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXHJcbiAgICAvLyAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQXR0YWNobWVudFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAvLyAgICAgdmFsdWU6IDIsXHJcbiAgICAvLyAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX1JFTEFURURfRE9DVU1FTlQsXHJcbiAgICAvLyAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXR0YWNobWVudCgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xyXG4gICAgZGF0YS5tb2R1bGUgPSB0aGlzLmltYWdlTWFwRGF0YS5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5pbWFnZU1hcERhdGEuZW50aXR5SWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzY1MHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHJlc3VsdC51cmwpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcclxuICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMubXlJbWFnZU1hcC5nZXRNYXBKc29uKCk7XHJcbiAgICBkYXRhLmltYWdlSGVpZ2h0ID0gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQ7XHJcbiAgICBkYXRhLmltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=